{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "SortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "ThreadListCwdFilter": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      ]
    },
    "ThreadSortKey": {
      "enum": [
        "created_at",
        "updated_at"
      ],
      "type": "string"
    },
    "ThreadSourceKind": {
      "enum": [
        "cli",
        "vscode",
        "exec",
        "appServer",
        "subAgent",
        "subAgentReview",
        "subAgentCompact",
        "subAgentThreadSpawn",
        "subAgentOther",
        "unknown"
      ],
      "type": "string"
    }
  },
  "properties": {
    "archived": {
      "description": "Optional archived filter; when set to true, only archived threads are returned. If false or null, only non-archived threads are returned.",
      "type": [
        "boolean",
        "null"
      ]
    },
    "cursor": {
      "description": "Opaque pagination cursor returned by a previous call.",
      "type": [
        "string",
        "null"
      ]
    },
    "cwd": {
      "anyOf": [
        {
          "$ref": "#/definitions/ThreadListCwdFilter"
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional cwd filter or filters; when set, only threads whose session cwd exactly matches one of these paths are returned."
    },
    "limit": {
      "description": "Optional page size; defaults to a reasonable server-side value.",
      "format": "uint32",
      "minimum": 0.0,
      "type": [
        "integer",
        "null"
      ]
    },
    "modelProviders": {
      "description": "Optional provider filter; when set, only sessions recorded under these providers are returned. When present but empty, includes all providers.",
      "items": {
        "type": "string"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "searchTerm": {
      "description": "Optional substring filter for the extracted thread title.",
      "type": [
        "string",
        "null"
      ]
    },
    "sortDirection": {
      "anyOf": [
        {
          "$ref": "#/definitions/SortDirection"
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional sort direction; defaults to descending (newest first)."
    },
    "sortKey": {
      "anyOf": [
        {
          "$ref": "#/definitions/ThreadSortKey"
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional sort key; defaults to created_at."
    },
    "sourceKinds": {
      "description": "Optional source filter; when set, only sessions from these source kinds are returned. When omitted or empty, defaults to interactive sources.",
      "items": {
        "$ref": "#/definitions/ThreadSourceKind"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "useStateDbOnly": {
      "description": "If true, return from the state DB without scanning JSONL rollouts to repair thread metadata. Omitted or false preserves scan-and-repair behavior.",
      "type": "boolean"
    }
  },
  "title": "ThreadListParams",
  "type": "object"
}