{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "AskForApproval": {
      "enum": [
        "untrusted",
        "on-failure",
        "on-request",
        "never"
      ],
      "type": "string"
    },
    "SandboxMode": {
      "enum": [
        "read-only",
        "workspace-write",
        "danger-full-access"
      ],
      "type": "string"
    }
  },
  "description": "There are two ways to fork a thread: 1. By thread_id: load the thread from disk by thread_id and fork it into a new thread. 2. By path: load the thread from disk by path and fork it into a new thread.\n\nIf using path, the thread_id param will be ignored.\n\nPrefer using thread_id whenever possible.",
  "properties": {
    "approvalPolicy": {
      "anyOf": [
        {
          "$ref": "#/definitions/AskForApproval"
        },
        {
          "type": "null"
        }
      ]
    },
    "baseInstructions": {
      "type": [
        "string",
        "null"
      ]
    },
    "config": {
      "additionalProperties": true,
      "type": [
        "object",
        "null"
      ]
    },
    "cwd": {
      "type": [
        "string",
        "null"
      ]
    },
    "developerInstructions": {
      "type": [
        "string",
        "null"
      ]
    },
    "model": {
      "description": "Configuration overrides for the forked thread, if any.",
      "type": [
        "string",
        "null"
      ]
    },
    "modelProvider": {
      "type": [
        "string",
        "null"
      ]
    },
    "sandbox": {
      "anyOf": [
        {
          "$ref": "#/definitions/SandboxMode"
        },
        {
          "type": "null"
        }
      ]
    },
    "threadId": {
      "type": "string"
    }
  },
  "required": [
    "threadId"
  ],
  "title": "ThreadForkParams",
  "type": "object"
}