{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://github.com/andrewhuot/headless-chat-sdk/schemas/errors.schema.json",
  "title": "ChatSdkError",
  "description": "Error taxonomy. Mirrors packages/gecx-chat/src/errors/errorCodes.ts.",
  "definitions": {
    "ChatSdkErrorCode": {
      "type": "string",
      "enum": [
        "CONFIG_INVALID",
        "AUTH_REQUIRED",
        "AUTH_EXPIRED",
        "AUTH_FAILED",
        "TOKEN_ENDPOINT_FAILED",
        "TOKEN_ENDPOINT_INVALID_RESPONSE",
        "TRANSPORT_UNAVAILABLE",
        "TRANSPORT_CONNECT_FAILED",
        "STREAM_INTERRUPTED",
        "STREAM_PARSE_ERROR",
        "SESSION_EXPIRED",
        "SESSION_ENDED",
        "SESSION_INVALID_STATE",
        "SEND_FAILED",
        "TOOL_NOT_REGISTERED",
        "TOOL_VALIDATION_FAILED",
        "TOOL_EXECUTION_FAILED",
        "TOOL_TIMEOUT",
        "SERVER_TOOL_NOT_CONFIGURED",
        "SERVER_TOOL_HTTP_FAILED",
        "SERVER_TOOL_INVALID_RESPONSE",
        "SERVER_TOOL_UNAUTHORIZED",
        "FILE_VALIDATION_FAILED",
        "UPLOAD_FAILED",
        "URL_NOT_ALLOWED",
        "A2UI_FRAME_INVALID",
        "A2UI_VERSION_UNSUPPORTED",
        "A2UI_CATALOG_REJECTED",
        "A2UI_ACTION_INVALID",
        "A2UI_ACTION_REJECTED",
        "A2UI_RENDER_FAILED",
        "NETWORK_OFFLINE",
        "RECONNECT_EXHAUSTED",
        "RESUME_NOT_SUPPORTED",
        "LEADER_LOST",
        "OUTBOX_DROPPED",
        "IDEMPOTENCY_KEY_REJECTED",
        "IDENTITY_REQUIRED",
        "IDENTITY_CONFLICT",
        "CONVERSATION_NOT_FOUND",
        "GOVERNANCE_SESSION_ERASED",
        "GOVERNANCE_CONSENT_WITHDRAWN",
        "GOVERNANCE_DELETE_FAILED",
        "GOVERNANCE_EXPORT_FAILED",
        "GOVERNANCE_NOT_SUPPORTED",
        "RICH_CONTENT_VERSION_UNSUPPORTED",
        "RICH_CONTENT_FAMILY_UNREGISTERED",
        "VOICE_CONSENT_REQUIRED",
        "VOICE_RECORDING_DENIED",
        "VOICE_PROVIDER_UNAVAILABLE",
        "VOICE_DEVICE_PERMISSION_DENIED",
        "VOICE_DEVICE_UNAVAILABLE",
        "VOICE_NEGOTIATION_FAILED",
        "VOICE_BARGE_IN_TIMEOUT",
        "VOICE_TOKEN_INVALID",
        "VOICE_TOKEN_ENDPOINT_MISSING",
        "MEMORY_ADAPTER_UNAVAILABLE",
        "MEMORY_CONSENT_WITHDRAWN",
        "MEMORY_QUOTA_EXCEEDED",
        "MEMORY_SYNC_FAILED",
        "MEMORY_EXTRACTION_FAILED",
        "MEMORY_INVALID_SCOPE",
        "MEMORY_ENTRY_NOT_FOUND",
        "PERMISSION_DENIED",
        "PERMISSION_BLOCKED",
        "PERMISSION_UNSUPPORTED",
        "PERMISSION_INSECURE_CONTEXT",
        "PERMISSION_TIMEOUT",
        "PERMISSION_HARDWARE_UNAVAILABLE",
        "COMPUTER_USE_NOT_ENABLED",
        "COMPUTER_USE_ALLOWLIST_VIOLATION",
        "COMPUTER_USE_DURATION_EXCEEDED",
        "COMPUTER_USE_ACTION_LIMIT_EXCEEDED",
        "COMPUTER_USE_USER_ABORT",
        "COMPUTER_USE_PROVIDER_UNAVAILABLE",
        "A2A_TRANSPORT_ERROR",
        "A2A_AGENT_UNAVAILABLE",
        "A2A_TIMEOUT",
        "A2A_AGENT_CARD_INVALID",
        "AGENT_GRAPH_INVALID",
        "AGENT_GRAPH_NODE_NOT_FOUND",
        "AGENT_GRAPH_MAX_DEPTH",
        "ANALYTICS_SINK_FAILED",
        "ANALYTICS_AGGREGATION_INVALID_WINDOW",
        "COMMERCE_PII_LEAK",
        "AGENTIS_SESSION_INIT_FAILED",
        "AGENTIS_TENANT_NOT_ALLOWLISTED",
        "AGENTIS_AUTH_PRINCIPAL_REJECTED",
        "AGENTIS_RECAPTCHA_REQUIRED",
        "AGENTIS_SHOPPING_EVENT_FAILED",
        "INTERNAL_ERROR"
      ]
    },
    "ErrorCodeMetadata": {
      "type": "object",
      "required": ["userMessage", "developerHint", "retryable", "severity", "docsUrl"],
      "properties": {
        "userMessage": { "type": "string" },
        "developerHint": { "type": "string" },
        "retryable": { "type": "boolean" },
        "severity": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
        "docsUrl": { "type": "string", "format": "uri" }
      }
    }
  },
  "type": "object",
  "required": ["name", "code", "userMessage", "developerHint", "docsUrl", "retryable", "severity"],
  "properties": {
    "name": { "const": "ChatSdkError" },
    "code": { "$ref": "#/definitions/ChatSdkErrorCode" },
    "userMessage": { "type": "string" },
    "developerHint": { "type": "string" },
    "docsUrl": { "type": "string", "format": "uri" },
    "retryable": { "type": "boolean" },
    "severity": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
    "requestId": { "type": "string" },
    "correlationId": { "type": "string" },
    "sessionId": { "type": "string" },
    "details": { "type": "object" }
  }
}
