{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/AgentState",
  "title": "AgentState",
  "properties": {
    "created_by_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Created By Id",
      "description": "The id of the user that made this object."
    },
    "last_updated_by_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Updated By Id",
      "description": "The id of the user that made this object."
    },
    "created_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Created At",
      "description": "The timestamp when the object was created."
    },
    "updated_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Updated At",
      "description": "The timestamp when the object was last updated."
    },
    "id": {
      "type": "string",
      "title": "Id",
      "description": "The id of the agent. Assigned by the database."
    },
    "name": {
      "type": "string",
      "title": "Name",
      "description": "The name of the agent."
    },
    "tool_rules": {
      "anyOf": [
        {
          "items": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChildToolRule"
              },
              {
                "$ref": "#/components/schemas/InitToolRule"
              },
              {
                "$ref": "#/components/schemas/TerminalToolRule"
              },
              {
                "$ref": "#/components/schemas/ConditionalToolRule"
              },
              {
                "$ref": "#/components/schemas/ContinueToolRule"
              },
              {
                "$ref": "#/components/schemas/RequiredBeforeExitToolRule"
              },
              {
                "$ref": "#/components/schemas/MaxCountPerStepToolRule"
              },
              {
                "$ref": "#/components/schemas/ParentToolRule"
              },
              {
                "$ref": "#/components/schemas/RequiresApprovalToolRule"
              }
            ],
            "discriminator": {
              "propertyName": "type",
              "mapping": {
                "conditional": "#/components/schemas/ConditionalToolRule",
                "constrain_child_tools": "#/components/schemas/ChildToolRule",
                "continue_loop": "#/components/schemas/ContinueToolRule",
                "exit_loop": "#/components/schemas/TerminalToolRule",
                "max_count_per_step": "#/components/schemas/MaxCountPerStepToolRule",
                "parent_last_tool": "#/components/schemas/ParentToolRule",
                "required_before_exit": "#/components/schemas/RequiredBeforeExitToolRule",
                "requires_approval": "#/components/schemas/RequiresApprovalToolRule",
                "run_first": "#/components/schemas/InitToolRule"
              }
            }
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Tool Rules",
      "description": "The list of tool rules."
    },
    "message_ids": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Message Ids",
      "description": "The ids of the messages in the agent's in-context memory."
    },
    "system": {
      "type": "string",
      "title": "System",
      "description": "The system prompt used by the agent."
    },
    "agent_type": {
      "$ref": "#/components/schemas/AgentType",
      "description": "The type of agent."
    },
    "llm_config": {
      "$ref": "#/components/schemas/LLMConfig",
      "description": "Deprecated: Use `model` field instead. The LLM configuration used by the agent.",
      "deprecated": true
    },
    "embedding_config": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/EmbeddingConfig"
        },
        {
          "type": "null"
        }
      ],
      "description": "Deprecated: Use `embedding` field instead. The embedding configuration used by the agent.",
      "deprecated": true
    },
    "model": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Model",
      "description": "The model handle used by the agent (format: provider/model-name)."
    },
    "embedding": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Embedding",
      "description": "The embedding model handle used by the agent (format: provider/model-name)."
    },
    "model_settings": {
      "anyOf": [
        {
          "oneOf": [
            {
              "$ref": "#/components/schemas/OpenAIModelSettings"
            },
            {
              "$ref": "#/components/schemas/SGLangModelSettings"
            },
            {
              "$ref": "#/components/schemas/AnthropicModelSettings"
            },
            {
              "$ref": "#/components/schemas/GoogleAIModelSettings"
            },
            {
              "$ref": "#/components/schemas/GoogleVertexModelSettings"
            },
            {
              "$ref": "#/components/schemas/AzureModelSettings"
            },
            {
              "$ref": "#/components/schemas/XAIModelSettings"
            },
            {
              "$ref": "#/components/schemas/ZAIModelSettings"
            },
            {
              "$ref": "#/components/schemas/GroqModelSettings"
            },
            {
              "$ref": "#/components/schemas/DeepseekModelSettings"
            },
            {
              "$ref": "#/components/schemas/TogetherModelSettings"
            },
            {
              "$ref": "#/components/schemas/BedrockModelSettings"
            },
            {
              "$ref": "#/components/schemas/BasetenModelSettings"
            },
            {
              "$ref": "#/components/schemas/OpenRouterModelSettings"
            },
            {
              "$ref": "#/components/schemas/ChatGPTOAuthModelSettings"
            }
          ],
          "discriminator": {
            "propertyName": "provider_type",
            "mapping": {
              "anthropic": "#/components/schemas/AnthropicModelSettings",
              "azure": "#/components/schemas/AzureModelSettings",
              "baseten": "#/components/schemas/BasetenModelSettings",
              "bedrock": "#/components/schemas/BedrockModelSettings",
              "chatgpt_oauth": "#/components/schemas/ChatGPTOAuthModelSettings",
              "deepseek": "#/components/schemas/DeepseekModelSettings",
              "google_ai": "#/components/schemas/GoogleAIModelSettings",
              "google_vertex": "#/components/schemas/GoogleVertexModelSettings",
              "groq": "#/components/schemas/GroqModelSettings",
              "openai": "#/components/schemas/OpenAIModelSettings",
              "openrouter": "#/components/schemas/OpenRouterModelSettings",
              "sglang": "#/components/schemas/SGLangModelSettings",
              "together": "#/components/schemas/TogetherModelSettings",
              "xai": "#/components/schemas/XAIModelSettings",
              "zai": "#/components/schemas/ZAIModelSettings"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Model Settings",
      "description": "The model settings used by the agent."
    },
    "compaction_settings": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CompactionSettings-Output"
        },
        {
          "type": "null"
        }
      ],
      "description": "The compaction settings configuration used for compaction."
    },
    "response_format": {
      "anyOf": [
        {
          "oneOf": [
            {
              "$ref": "#/components/schemas/TextResponseFormat"
            },
            {
              "$ref": "#/components/schemas/JsonSchemaResponseFormat"
            },
            {
              "$ref": "#/components/schemas/JsonObjectResponseFormat"
            }
          ],
          "discriminator": {
            "propertyName": "type",
            "mapping": {
              "json_object": "#/components/schemas/JsonObjectResponseFormat",
              "json_schema": "#/components/schemas/JsonSchemaResponseFormat",
              "text": "#/components/schemas/TextResponseFormat"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Response Format",
      "description": "The response format used by the agent"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Description",
      "description": "The description of the agent."
    },
    "metadata": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Metadata",
      "description": "The metadata of the agent."
    },
    "memory": {
      "$ref": "#/components/schemas/Memory",
      "description": "Deprecated: Use `blocks` field instead. The in-context memory of the agent.",
      "deprecated": true
    },
    "blocks": {
      "items": {
        "$ref": "#/components/schemas/Block"
      },
      "type": "array",
      "title": "Blocks",
      "description": "The memory blocks used by the agent."
    },
    "tools": {
      "items": {
        "$ref": "#/components/schemas/Tool"
      },
      "type": "array",
      "title": "Tools",
      "description": "The tools used by the agent."
    },
    "sources": {
      "items": {
        "$ref": "#/components/schemas/Source"
      },
      "type": "array",
      "title": "Sources",
      "description": "Deprecated: Use `folders` field instead. The sources used by the agent.",
      "deprecated": true
    },
    "tags": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Tags",
      "description": "The tags associated with the agent."
    },
    "tool_exec_environment_variables": {
      "items": {
        "$ref": "#/components/schemas/AgentEnvironmentVariable"
      },
      "type": "array",
      "title": "Tool Exec Environment Variables",
      "description": "Deprecated: use `secrets` field instead.",
      "deprecated": true
    },
    "secrets": {
      "items": {
        "$ref": "#/components/schemas/AgentEnvironmentVariable"
      },
      "type": "array",
      "title": "Secrets",
      "description": "The environment variables for tool execution specific to this agent."
    },
    "project_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Project Id",
      "description": "The id of the project the agent belongs to."
    },
    "template_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Template Id",
      "description": "The id of the template the agent belongs to."
    },
    "base_template_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Base Template Id",
      "description": "The base template id of the agent."
    },
    "deployment_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Deployment Id",
      "description": "The id of the deployment."
    },
    "entity_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Entity Id",
      "description": "The id of the entity within the template."
    },
    "identity_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Identity Ids",
      "description": "Deprecated: Use `identities` field instead. The ids of the identities associated with this agent.",
      "default": [],
      "deprecated": true
    },
    "identities": {
      "items": {
        "$ref": "#/components/schemas/Identity"
      },
      "type": "array",
      "title": "Identities",
      "description": "The identities associated with this agent.",
      "default": []
    },
    "pending_approval": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ApprovalRequestMessage"
        },
        {
          "type": "null"
        }
      ],
      "description": "The latest approval request message pending for this agent, if any."
    },
    "message_buffer_autoclear": {
      "type": "boolean",
      "title": "Message Buffer Autoclear",
      "description": "If set to True, the agent will not remember previous messages (though the agent will still retain state via core memory blocks and archival/recall memory). Not recommended unless you have an advanced use case.",
      "default": false
    },
    "enable_sleeptime": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Enable Sleeptime",
      "description": "If set to True, memory management will move to a background agent thread."
    },
    "multi_agent_group": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Group"
        },
        {
          "type": "null"
        }
      ],
      "description": "Deprecated: Use `managed_group` field instead. The multi-agent group that this agent manages.",
      "deprecated": true
    },
    "managed_group": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Group"
        },
        {
          "type": "null"
        }
      ],
      "description": "The multi-agent group that this agent manages"
    },
    "last_run_completion": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Run Completion",
      "description": "The timestamp when the agent last completed a run."
    },
    "last_run_duration_ms": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Run Duration Ms",
      "description": "The duration in milliseconds of the agent's last run."
    },
    "last_stop_reason": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/StopReasonType"
        },
        {
          "type": "null"
        }
      ],
      "description": "The stop reason from the agent's last run."
    },
    "timezone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Timezone",
      "description": "The timezone of the agent (IANA format)."
    },
    "max_files_open": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Files Open",
      "description": "Maximum number of files that can be open at once for this agent. Setting this too high may exceed the context window, which will break the agent."
    },
    "per_file_view_window_char_limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Per File View Window Char Limit",
      "description": "The per-file view window character limit for this agent. Setting this too high may exceed the context window, which will break the agent."
    },
    "hidden": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Hidden",
      "description": "If set to True, the agent will be hidden."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "name",
    "system",
    "agent_type",
    "llm_config",
    "memory",
    "blocks",
    "tools",
    "sources",
    "tags"
  ],
  "description": "Representation of an agent's state. This is the state of the agent at a given time, and is persisted in the DB backend. The state has all the information needed to recreate a persisted agent."
}