@factory/droid-sdk 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schemas/enums.ts","../src/schemas/constants.ts","../src/schemas/shared.ts","../src/schemas/session-metadata.ts","../src/schemas/client.ts","../src/schemas/mcp.ts","../src/schemas/messages.ts","../src/schemas/mission.ts","../src/schemas/hooks.ts","../src/schemas/server.ts","../src/constants.ts","../src/errors.ts","../src/transport.ts","../src/utils.ts","../src/protocol.ts","../src/protocol/index.ts","../src/protocol/constants.ts","../src/protocol/enums.ts","../src/protocol/json-rpc.ts","../src/protocol/host.ts","../src/protocol/session.ts","../src/protocol/session-source.ts","../src/protocol/messages.ts","../src/protocol/model-settings.ts","../src/protocol/settings.ts","../src/protocol/general-settings.ts","../src/protocol/custom-models.ts","../src/protocol/policy.ts","../src/protocol/loop.ts","../src/protocol/selectable-list-item.ts","../src/protocol/mcp.ts","../src/protocol/mission-decomposition.ts","../src/protocol/cli.ts","../src/protocol/client.ts","../src/protocol/automations-enums.ts","../src/protocol/automations.ts","../src/protocol/session-summary.ts","../src/protocol/session-tools.ts","../src/protocol/session-settings-schema.ts","../src/protocol/tools-enums.ts","../src/protocol/tools.ts","../src/protocol/updater.ts","../src/protocol/usage.ts","../src/protocol/daemon/index.ts","../src/protocol/daemon/enums.ts","../src/protocol/daemon/bug-report.ts","../src/protocol/daemon/management.ts","../src/protocol/daemon/skills.ts","../src/protocol/daemon/relay.ts","../src/protocol/daemon/terminal.ts","../src/protocol/daemon/connection.ts","../src/protocol/daemon/mcp.ts","../src/protocol/daemon/automations.ts","../src/protocol/daemon/plugins.ts","../src/protocol/daemon/settings.ts","../src/protocol/daemon/droid.ts","../src/client.ts","../src/stream.ts","../src/helpers.ts","../src/mcp.ts","../src/session.ts","../src/run.ts","../src/session-discovery.ts","../src/api-types.ts","../src/api.ts","../src/daemon/client.ts","../src/daemon/local.ts","../src/daemon/session.ts","../src/daemon/transport.ts","../src/daemon/types.ts","../src/daemon/connection.ts"],"sourcesContent":["/** Droid server methods (client → server communication). */\nexport enum DroidServerMethod {\n INITIALIZE_SESSION = 'droid.initialize_session',\n LOAD_SESSION = 'droid.load_session',\n ADD_USER_MESSAGE = 'droid.add_user_message',\n CLOSE_SESSION = 'droid.close_session',\n INTERRUPT_SESSION = 'droid.interrupt_session',\n KILL_WORKER_SESSION = 'droid.kill_worker_session',\n UPDATE_SESSION_SETTINGS = 'droid.update_session_settings',\n TOGGLE_MCP_SERVER = 'droid.toggle_mcp_server',\n AUTHENTICATE_MCP_SERVER = 'droid.authenticate_mcp_server',\n CANCEL_MCP_AUTH = 'droid.cancel_mcp_auth',\n CLEAR_MCP_AUTH = 'droid.clear_mcp_auth',\n ADD_MCP_SERVER = 'droid.add_mcp_server',\n REMOVE_MCP_SERVER = 'droid.remove_mcp_server',\n LIST_MCP_REGISTRY = 'droid.list_mcp_registry',\n LIST_MCP_TOOLS = 'droid.list_mcp_tools',\n LIST_TOOLS = 'droid.list_tools',\n LIST_MCP_SERVERS = 'droid.list_mcp_servers',\n TOGGLE_MCP_TOOL = 'droid.toggle_mcp_tool',\n SUBMIT_MCP_AUTH_CODE = 'droid.submit_mcp_auth_code',\n LIST_SKILLS = 'droid.list_skills',\n SUBMIT_BUG_REPORT = 'droid.submit_bug_report',\n GET_REWIND_INFO = 'droid.get_rewind_info',\n EXECUTE_REWIND = 'droid.execute_rewind',\n COMPACT_SESSION = 'droid.compact_session',\n FORK_SESSION = 'droid.fork_session',\n RENAME_SESSION = 'droid.rename_session',\n GET_CONTEXT_STATS = 'droid.get_context_stats',\n}\n\n/** Droid client methods (server → client communication). */\nexport enum DroidClientMethod {\n SESSION_NOTIFICATION = 'droid.session_notification',\n REQUEST_PERMISSION = 'droid.request_permission',\n ASK_USER = 'droid.ask_user',\n}\n\nexport enum SessionNotificationType {\n TOOL_RESULT = 'tool_result',\n TOOL_PROGRESS_UPDATE = 'tool_progress_update',\n CREATE_MESSAGE = 'create_message',\n ERROR = 'error',\n DROID_WORKING_STATE_CHANGED = 'droid_working_state_changed',\n PERMISSION_RESOLVED = 'permission_resolved',\n SETTINGS_UPDATED = 'settings_updated',\n SESSION_TITLE_UPDATED = 'session_title_updated',\n MCP_STATUS_CHANGED = 'mcp_status_changed',\n ASSISTANT_TEXT_DELTA = 'assistant_text_delta',\n ASSISTANT_TEXT_COMPLETE = 'assistant_text_complete',\n THINKING_TEXT_DELTA = 'thinking_text_delta',\n THINKING_TEXT_COMPLETE = 'thinking_text_complete',\n TOOL_CALL = 'tool_call',\n SESSION_TOKEN_USAGE_CHANGED = 'session_token_usage_changed',\n MISSION_STATE_CHANGED = 'mission_state_changed',\n MISSION_FEATURES_CHANGED = 'mission_features_changed',\n MISSION_PROGRESS_ENTRY = 'mission_progress_entry',\n MISSION_HEARTBEAT = 'mission_heartbeat',\n MISSION_WORKER_STARTED = 'mission_worker_started',\n MISSION_WORKER_COMPLETED = 'mission_worker_completed',\n MCP_AUTH_REQUIRED = 'mcp_auth_required',\n MCP_AUTH_COMPLETED = 'mcp_auth_completed',\n HOOK_EXECUTION_STARTED = 'hook_execution_started',\n HOOK_EXECUTION_COMPLETED = 'hook_execution_completed',\n STRUCTURED_OUTPUT = 'structured_output',\n}\n\n/** Tool confirmation outcome options (possible user responses to permission requests). */\nexport enum ToolConfirmationOutcome {\n ProceedOnce = 'proceed_once',\n ProceedAlways = 'proceed_always',\n ProceedAutoRun = 'proceed_auto_run',\n ProceedAutoRunLow = 'proceed_auto_run_low',\n ProceedAutoRunMedium = 'proceed_auto_run_medium',\n ProceedAutoRunHigh = 'proceed_auto_run_high',\n ProceedNewSession = 'proceed_new_session',\n ProceedNewSessionLow = 'proceed_new_session_low',\n ProceedNewSessionMedium = 'proceed_new_session_medium',\n ProceedNewSessionHigh = 'proceed_new_session_high',\n ProceedEdit = 'proceed_edit',\n Cancel = 'cancel',\n}\n\n/** Tool confirmation type (which tool is requesting permission). */\nexport enum ToolConfirmationType {\n Edit = 'edit',\n Execute = 'exec',\n Create = 'create',\n AskUser = 'ask_user',\n ExitSpecMode = 'exit_spec_mode',\n ProposeMission = 'propose_mission',\n StartMissionRun = 'start_mission_run',\n ApplyPatch = 'apply_patch',\n McpTool = 'mcp_tool',\n}\n\nexport enum DroidWorkingState {\n Idle = 'idle',\n StreamingAssistantMessage = 'streaming_assistant_message',\n WaitingForToolConfirmation = 'waiting_for_tool_confirmation',\n ExecutingTool = 'executing_tool',\n CompactingConversation = 'compacting_conversation',\n}\n\nexport enum ContextStatsAccuracy {\n Exact = 'exact',\n Estimated = 'estimated',\n}\n\nexport enum DroidErrorType {\n CONNECTION_ERROR = 'ConnectionError',\n PROTOCOL_ERROR = 'ProtocolError',\n SESSION_ERROR = 'SessionError',\n TIMEOUT_ERROR = 'TimeoutError',\n DROID_CLIENT_ERROR = 'DroidClientError',\n PROCESS_EXIT_ERROR = 'ProcessExitError',\n ERROR = 'Error',\n}\n\nexport enum McpServerStatus {\n Connecting = 'connecting',\n Connected = 'connected',\n Disconnected = 'disconnected',\n Failed = 'failed',\n Disabled = 'disabled',\n}\n\nexport enum McpServerType {\n Stdio = 'stdio',\n Http = 'http',\n Sse = 'sse',\n}\n\nexport enum McpStatus {\n NotInitialized = 'not-initialized',\n Initializing = 'initializing',\n Ready = 'ready',\n NoServers = 'no-servers',\n Failed = 'failed',\n}\n\nexport enum McpAuthOutcome {\n Success = 'success',\n Cancelled = 'cancelled',\n Failed = 'failed',\n}\n\n/** Session type for mission decomposition (orchestrator manages workers). */\nexport enum DecompSessionType {\n Orchestrator = 'orchestrator',\n Worker = 'worker',\n}\n\n/** Mission state enum (used by orchestrator mission runner). */\nexport enum MissionState {\n AwaitingInput = 'awaiting_input',\n Initializing = 'initializing',\n Running = 'running',\n Paused = 'paused',\n OrchestratorTurn = 'orchestrator_turn',\n Completed = 'completed',\n}\n\n/** Feature status enum (mirrors orchestrator feature lifecycle). */\nexport enum FeatureStatus {\n Pending = 'pending',\n InProgress = 'in_progress',\n Completed = 'completed',\n Cancelled = 'cancelled',\n}\n\n/** Success state for feature completion. */\nexport enum FeatureSuccessState {\n Success = 'success',\n Partial = 'partial',\n Failure = 'failure',\n}\n\n/** Issue severity for discovered issues. */\nexport enum IssueSeverity {\n Blocking = 'blocking',\n NonBlocking = 'non_blocking',\n Suggestion = 'suggestion',\n}\n\n/** Dismissal item type. */\nexport enum DismissalType {\n DiscoveredIssue = 'discovered_issue',\n CriticalContext = 'critical_context',\n IncompleteWork = 'incomplete_work',\n}\n\n/** Progress log entry type. */\nexport enum ProgressLogEntryType {\n MissionAccepted = 'mission_accepted',\n MissionPaused = 'mission_paused',\n MissionResumed = 'mission_resumed',\n MissionRunStarted = 'mission_run_started',\n WorkerStarted = 'worker_started',\n WorkerSelectedFeature = 'worker_selected_feature',\n WorkerCompleted = 'worker_completed',\n WorkerFailed = 'worker_failed',\n WorkerPaused = 'worker_paused',\n HandoffItemsDismissed = 'handoff_items_dismissed',\n MilestoneValidationTriggered = 'milestone_validation_triggered',\n}\n\n/**\n * The interaction mode determines how Droid operates.\n * - Auto: Droid can execute actions based on autonomy level\n * - Spec: Droid is in planning/research mode only (read-only operations)\n * - AGI: Droid orchestrates missions with read-only tools and orchestrator controls\n */\nexport enum DroidInteractionMode {\n Auto = 'auto',\n Spec = 'spec',\n AGI = 'agi',\n}\n\n/**\n * Autonomy level determines what actions Droid can perform without user confirmation.\n * - Off: User controls all actions (confirmation required for everything)\n * - Low: Allow file edits and read-only commands\n * - Medium: Allow reversible commands\n * - High: Allow all commands without prompts\n */\nexport enum AutonomyLevel {\n Off = 'off',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n}\n\n/**\n * Combined autonomy mode for backward compatibility.\n * @deprecated Use DroidInteractionMode + AutonomyLevel instead.\n */\nexport enum AutonomyMode {\n Normal = 'normal',\n Spec = 'spec',\n AutoLow = 'auto-low',\n AutoMedium = 'auto-medium',\n AutoHigh = 'auto-high',\n}\n\nexport enum ReasoningEffort {\n None = 'none',\n Dynamic = 'dynamic',\n Off = 'off',\n Minimal = 'minimal',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n ExtraHigh = 'xhigh',\n Max = 'max',\n}\n\nexport enum ModelProvider {\n ANTHROPIC = 'anthropic',\n OPENAI = 'openai',\n GENERIC_CHAT_COMPLETION_API = 'generic-chat-completion-api',\n FACTORY = 'factory',\n GOOGLE = 'google',\n XAI = 'xai',\n VOYAGE = 'voyage',\n}\n\n/** Standard JSON-RPC 2.0 error codes. */\nexport enum JsonRpcErrorCode {\n PARSE_ERROR = -32700,\n INVALID_REQUEST = -32600,\n METHOD_NOT_FOUND = -32601,\n INVALID_PARAMS = -32602,\n INTERNAL_ERROR = -32603,\n AUTHENTICATION_ERROR = -32001,\n ENTITY_NOT_FOUND = -32004,\n SESSION_DISCONNECTED = -32005,\n}\n\nexport enum JsonRpcMessageType {\n Request = 'request',\n Response = 'response',\n Notification = 'notification',\n}\n\nexport enum ServerRequestHandlerType {\n Permission = 'permission',\n AskUser = 'askUser',\n}\n\n/**\n * Settings hierarchy level enum.\n * Precedence order (highest to lowest): Org → Runtime → Folder → Project → User\n */\nexport enum SettingsLevel {\n Org = 'org',\n Runtime = 'runtime',\n User = 'user',\n Project = 'project',\n Folder = 'folder',\n Dynamic = 'dynamic',\n BuiltIn = 'builtin',\n}\n\nexport enum SkillLocation {\n Project = 'project',\n Personal = 'personal',\n Builtin = 'builtin',\n}\n","/** JSON-RPC protocol version. */\nexport const JSONRPC_VERSION = '2.0' as const;\n\n/**\n * Frozen Factory API version embedded in every JSON-RPC envelope.\n * This value is required by the wire protocol and must not be changed.\n * For version negotiation, use FACTORY_PROTOCOL_VERSION instead.\n */\nexport const LEGACY_FACTORY_API_VERSION = '1.0.0' as const;\n\n/** Current Factory protocol version. */\nexport const FACTORY_PROTOCOL_VERSION = '1.51.0' as const;\n\n/** HTTP header identifying the Factory client type. */\nexport const FACTORY_CLIENT_HEADER = 'X-Factory-Client' as const;\n\n/** HTTP header identifying the Factory client version. */\nexport const FACTORY_CLIENT_VERSION = 'X-Client-Version' as const;\n\n/** Default request timeout in milliseconds (30s). */\nexport const DEFAULT_REQUEST_TIMEOUT = 30_000;\n\n/** Session initialization timeout in milliseconds (60s). */\nexport const SESSION_INIT_TIMEOUT = 60_000;\n\n/** MCP authentication timeout in milliseconds (300s). */\nexport const MCP_AUTH_TIMEOUT = 300_000;\n\n/** Compaction timeout in milliseconds (240s — LLM summarization of full conversation). */\nexport const COMPACTION_TIMEOUT = 240_000;\n\n/** Rewind timeout in milliseconds (60s — file restore + session fork). */\nexport const REWIND_TIMEOUT = 60_000;\n","import { z } from 'zod';\n\nimport { JSONRPC_VERSION, LEGACY_FACTORY_API_VERSION } from './constants.js';\nimport { JsonRpcErrorCode } from './enums.js';\n\n/** JSON-compatible primitive values. */\nexport type JsonPrimitive = string | number | boolean | null;\n\n/** JSON-compatible object values. */\nexport interface JsonObject {\n [key: string]: JsonValue;\n}\n\n/** JSON-compatible array values. */\nexport type JsonArray = JsonValue[];\n\n/** Recursive JSON-compatible value. */\nexport type JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport const JsonValueSchema: z.ZodType<JsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(JsonValueSchema),\n z.record(JsonValueSchema),\n ])\n);\n\nexport const JsonObjectSchema: z.ZodType<JsonObject> =\n z.record(JsonValueSchema);\n\nexport const JsonArraySchema: z.ZodType<JsonArray> = z.array(JsonValueSchema);\n\n/** Trace context metadata for distributed tracing propagation. */\nexport const TraceContextMetaSchema = z.object({\n traceparent: z.string().optional(),\n tracestate: z.string().optional(),\n});\n\nexport type TraceContextMeta = z.infer<typeof TraceContextMetaSchema>;\n\n/** Shared tool selection override fields reused across client/server schemas. */\nexport const ToolSelectionOverridesSchema = z.object({\n enabledToolIds: z.array(z.string()).optional(),\n disabledToolIds: z.array(z.string()).optional(),\n});\n\nexport type ToolSelectionOverrides = z.infer<\n typeof ToolSelectionOverridesSchema\n>;\n\n/** Shared empty object result reused by RPC result schemas. */\nexport const EmptyResultSchema = z.object({}).passthrough();\n\nexport type EmptyResult = z.infer<typeof EmptyResultSchema>;\n\n/** Shared success result reused by RPC result schemas. */\nexport const SuccessResultSchema = z\n .object({ success: z.boolean() })\n .passthrough();\n\nexport type SuccessResult = z.infer<typeof SuccessResultSchema>;\n\n/** JSON-RPC 2.0 envelope with Factory protocol extensions. */\nexport const JsonRpcEnvelopeSchema = z.object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n factoryApiVersion: z.literal(LEGACY_FACTORY_API_VERSION),\n factoryProtocolVersion: z.string().optional(),\n _meta: TraceContextMetaSchema.optional(),\n});\n\nexport type JsonRpcEnvelope = z.infer<typeof JsonRpcEnvelopeSchema>;\n\n/** JSON-RPC 2.0 error object. */\nexport const JsonRpcErrorSchema = z.object({\n code: z.nativeEnum(JsonRpcErrorCode),\n message: z.string(),\n data: JsonValueSchema.optional(),\n});\n\nexport type JsonRpcError = z.infer<typeof JsonRpcErrorSchema>;\n\n/** Base JSON-RPC request. */\nexport const BaseRequestSchema = z.object({\n type: z.literal('request'),\n id: z.string(),\n method: z.string(),\n params: JsonValueSchema.optional(),\n});\n\nexport type BaseRequest = z.infer<typeof BaseRequestSchema>;\n\n/** Base JSON-RPC success response. */\nexport const BaseResponseSuccessSchema = z.object({\n type: z.literal('response'),\n id: z.string(),\n result: JsonValueSchema,\n});\n\nexport type BaseResponseSuccess = z.infer<typeof BaseResponseSuccessSchema>;\n\n/** Base JSON-RPC failure response. */\nexport const BaseResponseFailureSchema = z.object({\n type: z.literal('response'),\n id: z.string().nullable(),\n error: JsonRpcErrorSchema,\n});\n\nexport type BaseResponseFailure = z.infer<typeof BaseResponseFailureSchema>;\n\n/** Base JSON-RPC notification. */\nexport const BaseNotificationSchema = z.object({\n type: z.literal('notification'),\n method: z.string(),\n params: JsonValueSchema.optional(),\n});\n\nexport type BaseNotification = z.infer<typeof BaseNotificationSchema>;\n\n/** Full JSON-RPC request with envelope fields. */\nexport const JsonRpcRequestSchema = JsonRpcEnvelopeSchema.extend(\n BaseRequestSchema.shape\n);\n\nexport type JsonRpcRequest = z.infer<typeof JsonRpcRequestSchema>;\n\n/** Full JSON-RPC success response with envelope fields. */\nexport const JsonRpcResponseSuccessSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseSuccessSchema.shape\n);\n\nexport type JsonRpcResponseSuccess = z.infer<\n typeof JsonRpcResponseSuccessSchema\n>;\n\n/** Full JSON-RPC failure response with envelope fields. */\nexport const JsonRpcResponseFailureSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseFailureSchema.shape\n);\n\nexport type JsonRpcResponseFailure = z.infer<\n typeof JsonRpcResponseFailureSchema\n>;\n\n/** Full JSON-RPC notification with envelope fields. */\nexport const JsonRpcNotificationSchema = JsonRpcEnvelopeSchema.extend(\n BaseNotificationSchema.shape\n);\n\nexport type JsonRpcNotification = z.infer<typeof JsonRpcNotificationSchema>;\n\n/** JSON-RPC response (success or failure). */\nexport const JsonRpcResponseSchema = z.union([\n JsonRpcResponseFailureSchema,\n JsonRpcResponseSuccessSchema,\n]);\n\nexport type JsonRpcResponse = z.infer<typeof JsonRpcResponseSchema>;\n\n/** Discriminated union for initial message type routing. */\nexport const JsonRpcMessageSchema = z.discriminatedUnion('type', [\n JsonRpcRequestSchema,\n JsonRpcEnvelopeSchema.extend({\n type: z.literal('response'),\n id: z.string().nullable(),\n result: JsonValueSchema.optional(),\n error: JsonRpcErrorSchema.optional(),\n }),\n JsonRpcNotificationSchema,\n]);\n\nexport type JsonRpcMessage = z.infer<typeof JsonRpcMessageSchema>;\n\n/** Creates a JSON-RPC response schema (success | failure) for a given result schema. */\nexport function createResponseSchema<T extends z.ZodTypeAny>(resultSchema: T) {\n return z.union([\n JsonRpcResponseSuccessSchema.extend({ result: resultSchema }),\n JsonRpcResponseFailureSchema,\n ]);\n}\n","import { z } from 'zod';\n\nimport { SessionTagSchema } from './client.js';\nimport { DecompSessionType } from './enums.js';\n\n/**\n * Session metadata returned by {@link listSessions}.\n *\n * Mirrors the shape used by the `droid` CLI's `SessionService` so results\n * are interoperable with sessions created by the CLI or the SDK.\n */\nexport const SessionMetadataSchema = z\n .object({\n id: z.string(),\n title: z.string(),\n sessionTitle: z.string().optional(),\n owner: z.string(),\n messageCount: z.number(),\n modifiedTime: z.date(),\n createdTime: z.date(),\n isFavorite: z.boolean().optional(),\n cwd: z.string().optional(),\n decompSessionType: z.nativeEnum(DecompSessionType).optional(),\n decompMissionId: z.string().optional(),\n })\n .passthrough();\n\nexport type SessionMetadata = z.infer<typeof SessionMetadataSchema>;\n\n/**\n * First line of a droid session `.jsonl` file. Produced by the CLI's\n * `SessionService` when a session is created.\n * @internal\n */\nexport const SessionStartEventSchema = z\n .object({\n type: z.literal('session_start'),\n sessionId: z.string().optional(),\n title: z.string().optional(),\n sessionTitle: z.string().optional(),\n owner: z.string().optional(),\n cwd: z.string().optional(),\n decompSessionType: z\n .nativeEnum(DecompSessionType)\n .optional()\n .catch(undefined),\n decompMissionId: z.string().optional(),\n })\n .passthrough();\n\nexport type SessionStartEvent = z.infer<typeof SessionStartEventSchema>;\n\n/**\n * Content of the sibling `<sessionId>.settings.json` file, if present.\n * Used to detect archived sessions and recover tag metadata.\n * @internal\n */\nexport const SessionSettingsFileSchema = z\n .object({\n archivedAt: z.string().optional(),\n tags: z.array(SessionTagSchema).optional(),\n })\n .passthrough();\n\nexport type SessionSettingsFile = z.infer<typeof SessionSettingsFileSchema>;\n\n/** Options accepted by {@link listSessions}. */\nexport interface ListSessionsOptions {\n /**\n * Working directory to scope the listing to. Defaults to `process.cwd()`.\n * Ignored when `fetchOutsideCWD` is `true`.\n */\n cwd?: string;\n\n /**\n * If `true`, return sessions from every working directory on disk and\n * ignore `cwd`. Defaults to `false` (only sessions for the given `cwd`\n * are returned).\n */\n fetchOutsideCWD?: boolean;\n\n /**\n * Cap the number of sessions returned. Results are sorted by\n * `modifiedTime` descending before being truncated.\n */\n numSessions?: number;\n\n /**\n * Override the sessions root directory. Defaults to `~/.factory/sessions/`.\n * Primarily useful for tests and custom installations.\n */\n sessionsDir?: string;\n}\n","import { z } from 'zod';\n\nimport {\n AutonomyLevel,\n AutonomyMode,\n ContextStatsAccuracy,\n DecompSessionType,\n DroidInteractionMode,\n DroidServerMethod,\n McpServerType,\n ModelProvider,\n MissionState,\n ReasoningEffort,\n SettingsLevel,\n SkillLocation,\n} from './enums.js';\nimport {\n McpRegistryServerSchema,\n McpServerStatusInfoSchema,\n McpStatusSummarySchema,\n McpToolInfoSchema,\n} from './mcp.js';\nimport { Base64ImageSourceSchema, DocumentSourceSchema } from './messages.js';\nimport { MissionFeatureSchema, ProgressLogEntrySchema } from './mission.js';\nimport {\n createResponseSchema,\n EmptyResultSchema,\n JsonObjectSchema,\n type JsonRpcResponseFailure,\n JsonRpcRequestSchema,\n JsonRpcResponseSuccessSchema,\n SuccessResultSchema,\n ToolSelectionOverridesSchema,\n} from './shared.js';\n\nconst SessionModeRequestFieldsShape = {\n modelId: z.string().optional(),\n autonomyMode: z.nativeEnum(AutonomyMode).optional(),\n interactionMode: z.nativeEnum(DroidInteractionMode).optional(),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional(),\n};\n\nexport const SessionTagSchema = z\n .object({\n name: z.string(),\n metadata: z.record(z.string()).optional(),\n })\n .strict();\n\nexport type SessionTag = z.infer<typeof SessionTagSchema>;\n\nexport const SessionSourceSchema = z\n .object({\n platform: z.string(),\n })\n .passthrough();\n\nexport type SessionSource = z.infer<typeof SessionSourceSchema>;\n\nexport const StdioMcpConfigSchema = z\n .object({\n name: z.string(),\n command: z.string(),\n args: z.array(z.string()).default([]),\n env: z.record(z.string()).optional().default({}),\n })\n .strict();\n\nexport type StdioMcpConfig = z.infer<typeof StdioMcpConfigSchema>;\n\nexport const HttpHeaderSchema = z\n .object({\n name: z.string(),\n value: z.string(),\n })\n .strict();\n\nexport type HttpHeader = z.infer<typeof HttpHeaderSchema>;\n\nexport const HttpMcpConfigSchema = z\n .object({\n type: z.literal('http'),\n name: z.string(),\n url: z.string().url(),\n headers: HttpHeaderSchema.array().default([]),\n })\n .strict();\n\nexport type HttpMcpConfig = z.infer<typeof HttpMcpConfigSchema>;\n\nexport const SseMcpConfigSchema = z\n .object({\n type: z.literal('sse'),\n name: z.string(),\n url: z.string().url(),\n headers: HttpHeaderSchema.array().default([]),\n })\n .strict();\n\nexport type SseMcpConfig = z.infer<typeof SseMcpConfigSchema>;\n\nexport const McpServerConfigSchema = z.union([\n StdioMcpConfigSchema,\n HttpMcpConfigSchema,\n SseMcpConfigSchema,\n]);\n\nexport type McpServerConfig = z.infer<typeof McpServerConfigSchema>;\n\n/** Session settings returned in init/load results. */\nexport const SessionSettingsSchema = z\n .object({\n modelId: z.string(),\n reasoningEffort: z.nativeEnum(ReasoningEffort),\n autonomyMode: z.nativeEnum(AutonomyMode).optional(),\n interactionMode: z\n .nativeEnum(DroidInteractionMode)\n .optional()\n .catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n ...ToolSelectionOverridesSchema.shape,\n })\n .passthrough();\n\nexport type SessionSettings = z.infer<typeof SessionSettingsSchema>;\n\nexport const GitRepoInfoSchema = z\n .object({\n owner: z.string().optional(),\n repoName: z.string(),\n })\n .passthrough();\n\nexport type GitRepoInfo = z.infer<typeof GitRepoInfoSchema>;\n\n/** Available model configuration returned in session init/load responses. */\nexport const AvailableModelConfigSchema = z\n .object({\n id: z.string(),\n modelId: z.string().optional(),\n displayName: z.string(),\n shortDisplayName: z.string(),\n modelProvider: z.nativeEnum(ModelProvider),\n supportedReasoningEfforts: z.array(z.nativeEnum(ReasoningEffort)),\n defaultReasoningEffort: z.nativeEnum(ReasoningEffort),\n isCustom: z.boolean().default(false),\n noImageSupport: z.boolean().optional(),\n supportsPDFs: z.boolean().optional(),\n tier: z.string().optional(),\n tokenMultiplier: z.number().optional(),\n promoLabel: z.string().optional(),\n featureFlag: JsonObjectSchema.optional(),\n usesUSBasedInference: z.boolean().optional(),\n })\n .passthrough();\n\nexport type AvailableModelConfig = z.infer<typeof AvailableModelConfigSchema>;\n\nexport const TokenUsageSchema = z\n .object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n cacheCreationTokens: z.number(),\n cacheReadTokens: z.number(),\n thinkingTokens: z.number(),\n })\n .passthrough();\n\nexport type TokenUsage = z.infer<typeof TokenUsageSchema>;\n\n/** Current context window utilization for the active session. */\nexport const ContextStatsSchema = z\n .object({\n used: z.number(),\n remaining: z.number(),\n limit: z.number(),\n accuracy: z.nativeEnum(ContextStatsAccuracy),\n updatedAt: z.string(),\n })\n .passthrough();\n\nexport type ContextStats = z.infer<typeof ContextStatsSchema>;\n\nexport const WorkerStateInfoSchema = z\n .object({\n startedAt: z.string(),\n completedAt: z.string().optional(),\n exitCode: z.number().optional(),\n })\n .passthrough();\n\nexport type WorkerStateInfo = z.infer<typeof WorkerStateInfoSchema>;\n\nexport const SkillResourceSchema = z\n .object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['reference', 'asset']),\n })\n .passthrough();\n\nexport type SkillResource = z.infer<typeof SkillResourceSchema>;\n\nexport const SkillInfoSchema = z\n .object({\n name: z.string(),\n description: z.string().optional(),\n location: z.nativeEnum(SkillLocation),\n filePath: z.string(),\n enabled: z.boolean().optional(),\n userInvocable: z.boolean().optional(),\n version: z.string().optional(),\n content: z.string().optional(),\n resources: z.array(SkillResourceSchema).optional(),\n })\n .passthrough();\n\nexport type SkillInfo = z.infer<typeof SkillInfoSchema>;\n\nexport const InitializeSessionRequestParamsSchema = z\n .object({\n machineId: z.string(),\n cwd: z.string(),\n workspaceId: z.string().optional(),\n sessionId: z.string().optional(),\n mcpServers: z.array(McpServerConfigSchema).optional(),\n ...SessionModeRequestFieldsShape,\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n decompSessionType: z.nativeEnum(DecompSessionType).optional(),\n decompMissionId: z.string().optional(),\n skipPermissionsUnsafe: z.boolean().optional(),\n ...ToolSelectionOverridesSchema.shape,\n sessionLocation: z.string().optional(),\n sessionSource: SessionSourceSchema.optional(),\n tags: z.array(SessionTagSchema).optional(),\n mcpOAuthCallbackUri: z.string().optional(),\n })\n .strict();\n\nexport type InitializeSessionRequestParams = z.infer<\n typeof InitializeSessionRequestParamsSchema\n>;\n\nexport const LoadSessionRequestParamsSchema = z\n .object({\n sessionId: z.string(),\n mcpServers: z.array(McpServerConfigSchema).optional(),\n mcpOAuthCallbackUri: z.string().optional(),\n })\n .strict();\n\nexport type LoadSessionRequestParams = z.infer<\n typeof LoadSessionRequestParamsSchema\n>;\n\nexport const OutputFormatType = {\n JsonSchema: 'json_schema',\n} as const;\n\nexport type OutputFormatType =\n (typeof OutputFormatType)[keyof typeof OutputFormatType];\n\nexport const OutputFormatSchema = z\n .object({\n type: z.literal(OutputFormatType.JsonSchema),\n schema: JsonObjectSchema,\n })\n .strict();\n\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\n\nexport const AddUserMessageRequestParamsSchema = z\n .object({\n messageId: z.string().optional(),\n text: z.string(),\n images: z.array(Base64ImageSourceSchema).optional(),\n files: z.array(DocumentSourceSchema).optional(),\n outputFormat: OutputFormatSchema.optional(),\n })\n .strict();\n\nexport type AddUserMessageRequestParams = z.infer<\n typeof AddUserMessageRequestParamsSchema\n>;\n\nexport const InterruptSessionRequestParamsSchema = z.object({}).strict();\n\nexport type InterruptSessionRequestParams = z.infer<\n typeof InterruptSessionRequestParamsSchema\n>;\n\nexport const CloseSessionRequestParamsSchema = z\n .object({\n reason: z\n .enum(['clear', 'logout', 'prompt_input_exit', 'other'])\n .optional(),\n })\n .strict();\n\nexport type CloseSessionRequestParams = z.infer<\n typeof CloseSessionRequestParamsSchema\n>;\n\nexport const KillWorkerSessionRequestParamsSchema = z\n .object({\n workerSessionId: z.string(),\n })\n .strict();\n\nexport type KillWorkerSessionRequestParams = z.infer<\n typeof KillWorkerSessionRequestParamsSchema\n>;\n\nexport const UpdateSessionSettingsRequestParamsSchema = z\n .object({\n ...SessionModeRequestFieldsShape,\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().nullable().optional(),\n specModeReasoningEffort: z\n .nativeEnum(ReasoningEffort)\n .nullable()\n .optional(),\n ...ToolSelectionOverridesSchema.shape,\n })\n .strict();\n\nexport type UpdateSessionSettingsRequestParams = z.infer<\n typeof UpdateSessionSettingsRequestParamsSchema\n>;\n\nexport const ToggleMcpServerRequestParamsSchema = z\n .object({\n serverName: z.string(),\n enabled: z.boolean(),\n settingsLevel: z.literal(SettingsLevel.User),\n })\n .strict();\n\nexport type ToggleMcpServerRequestParams = z.infer<\n typeof ToggleMcpServerRequestParamsSchema\n>;\n\nexport const AuthenticateMcpServerRequestParamsSchema = z\n .object({\n serverName: z.string(),\n })\n .strict();\n\nexport type AuthenticateMcpServerRequestParams = z.infer<\n typeof AuthenticateMcpServerRequestParamsSchema\n>;\n\nexport const CancelMcpAuthRequestParamsSchema = z\n .object({\n serverName: z.string(),\n })\n .strict();\n\nexport type CancelMcpAuthRequestParams = z.infer<\n typeof CancelMcpAuthRequestParamsSchema\n>;\n\nexport const ClearMcpAuthRequestParamsSchema = z\n .object({\n serverName: z.string(),\n })\n .strict();\n\nexport type ClearMcpAuthRequestParams = z.infer<\n typeof ClearMcpAuthRequestParamsSchema\n>;\n\nexport const SubmitMcpAuthCodeRequestParamsSchema = z\n .object({\n serverName: z.string(),\n code: z.string(),\n state: z.string(),\n })\n .strict();\n\nexport type SubmitMcpAuthCodeRequestParams = z.infer<\n typeof SubmitMcpAuthCodeRequestParamsSchema\n>;\n\nexport const AddMcpServerRequestParamsSchema = z\n .object({\n name: z.string(),\n type: z.nativeEnum(McpServerType),\n url: z.string().optional(),\n headers: z.record(z.string()).optional(),\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n env: z.record(z.string()).optional(),\n })\n .strict();\n\nexport type AddMcpServerRequestParams = z.infer<\n typeof AddMcpServerRequestParamsSchema\n>;\n\nexport const RemoveMcpServerRequestParamsSchema = z\n .object({\n serverName: z.string(),\n settingsLevel: z.literal(SettingsLevel.User),\n })\n .strict();\n\nexport type RemoveMcpServerRequestParams = z.infer<\n typeof RemoveMcpServerRequestParamsSchema\n>;\n\nexport const ListMcpRegistryRequestParamsSchema = z.object({}).strict();\n\nexport type ListMcpRegistryRequestParams = z.infer<\n typeof ListMcpRegistryRequestParamsSchema\n>;\n\nexport const ListMcpToolsRequestParamsSchema = z.object({}).strict();\n\nexport type ListMcpToolsRequestParams = z.infer<\n typeof ListMcpToolsRequestParamsSchema\n>;\n\nexport const ExecToolInfoSchema = z\n .object({\n id: z.string(),\n llmId: z.string(),\n displayName: z.string(),\n description: z.string(),\n category: z.enum(['read', 'edit', 'execute', 'other']),\n defaultAllowed: z.boolean(),\n currentlyAllowed: z.boolean(),\n })\n .passthrough();\n\nexport type ExecToolInfo = z.infer<typeof ExecToolInfoSchema>;\n\nexport const ListToolsRequestParamsSchema = z\n .object({\n ...SessionModeRequestFieldsShape,\n specModeModelId: z.string().nullable().optional(),\n skipPermissionsUnsafe: z.boolean().optional(),\n ...ToolSelectionOverridesSchema.shape,\n depth: z.number().int().min(0).optional(),\n })\n .strict();\n\nexport type ListToolsRequestParams = z.infer<\n typeof ListToolsRequestParamsSchema\n>;\n\nexport const ListMcpServersRequestParamsSchema = z.object({}).strict();\n\nexport type ListMcpServersRequestParams = z.infer<\n typeof ListMcpServersRequestParamsSchema\n>;\n\nexport const ToggleMcpToolRequestParamsSchema = z\n .object({\n serverName: z.string(),\n toolName: z.string(),\n enabled: z.boolean(),\n })\n .strict();\n\nexport type ToggleMcpToolRequestParams = z.infer<\n typeof ToggleMcpToolRequestParamsSchema\n>;\n\nexport const ListSkillsRequestParamsSchema = z.object({}).strict();\n\nexport type ListSkillsRequestParams = z.infer<\n typeof ListSkillsRequestParamsSchema\n>;\n\nexport const SubmitBugReportRequestParamsSchema = z\n .object({\n userComment: z.string(),\n clientLogs: z.string().optional(),\n })\n .strict();\n\nexport type SubmitBugReportRequestParams = z.infer<\n typeof SubmitBugReportRequestParamsSchema\n>;\n\nexport const RewindFileSnapshotSchema = z\n .object({\n filePath: z.string(),\n contentHash: z.string(),\n size: z.number(),\n })\n .passthrough();\n\nexport type RewindFileSnapshot = z.infer<typeof RewindFileSnapshotSchema>;\n\nexport const RewindFileCreationSchema = z\n .object({\n filePath: z.string(),\n })\n .passthrough();\n\nexport type RewindFileCreation = z.infer<typeof RewindFileCreationSchema>;\n\nexport const RewindEvictedFileSchema = z\n .object({\n filePath: z.string(),\n reason: z.string(),\n })\n .passthrough();\n\nexport type RewindEvictedFile = z.infer<typeof RewindEvictedFileSchema>;\n\nexport const GetRewindInfoRequestParamsSchema = z\n .object({\n messageId: z.string(),\n })\n .passthrough();\n\nexport type GetRewindInfoRequestParams = z.infer<\n typeof GetRewindInfoRequestParamsSchema\n>;\n\nexport const ExecuteRewindRequestParamsSchema = z\n .object({\n messageId: z.string(),\n filesToRestore: z.array(RewindFileSnapshotSchema),\n filesToDelete: z.array(RewindFileCreationSchema),\n forkTitle: z.string(),\n })\n .passthrough();\n\nexport type ExecuteRewindRequestParams = z.infer<\n typeof ExecuteRewindRequestParamsSchema\n>;\n\nexport const CompactSessionRequestParamsSchema = z\n .object({\n customInstructions: z.string().optional(),\n })\n .passthrough();\n\nexport type CompactSessionRequestParams = z.infer<\n typeof CompactSessionRequestParamsSchema\n>;\n\nexport const RenameSessionRequestParamsSchema = z\n .object({\n title: z.string(),\n })\n .passthrough();\n\nexport type RenameSessionRequestParams = z.infer<\n typeof RenameSessionRequestParamsSchema\n>;\n\nexport const ForkSessionRequestParamsSchema = z.object({}).passthrough();\n\nexport type ForkSessionRequestParams = z.infer<\n typeof ForkSessionRequestParamsSchema\n>;\n\nexport const GetContextStatsRequestParamsSchema = z.object({}).passthrough();\n\nexport type GetContextStatsRequestParams = z.infer<\n typeof GetContextStatsRequestParamsSchema\n>;\n\nexport const InitializeSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.INITIALIZE_SESSION),\n params: InitializeSessionRequestParamsSchema,\n});\n\nexport type InitializeSessionRequest = z.infer<\n typeof InitializeSessionRequestSchema\n>;\n\nexport const LoadSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LOAD_SESSION),\n params: LoadSessionRequestParamsSchema,\n});\n\nexport type LoadSessionRequest = z.infer<typeof LoadSessionRequestSchema>;\n\nexport const AddUserMessageRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.ADD_USER_MESSAGE),\n params: AddUserMessageRequestParamsSchema,\n});\n\nexport type AddUserMessageRequest = z.infer<typeof AddUserMessageRequestSchema>;\n\nexport const InterruptSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.INTERRUPT_SESSION),\n params: InterruptSessionRequestParamsSchema,\n});\n\nexport type InterruptSessionRequest = z.infer<\n typeof InterruptSessionRequestSchema\n>;\n\nexport const CloseSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.CLOSE_SESSION),\n params: CloseSessionRequestParamsSchema,\n});\n\nexport type CloseSessionRequest = z.infer<typeof CloseSessionRequestSchema>;\n\nexport const KillWorkerSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.KILL_WORKER_SESSION),\n params: KillWorkerSessionRequestParamsSchema,\n});\n\nexport type KillWorkerSessionRequest = z.infer<\n typeof KillWorkerSessionRequestSchema\n>;\n\nexport const UpdateSessionSettingsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.UPDATE_SESSION_SETTINGS),\n params: UpdateSessionSettingsRequestParamsSchema,\n});\n\nexport type UpdateSessionSettingsRequest = z.infer<\n typeof UpdateSessionSettingsRequestSchema\n>;\n\nexport const ToggleMcpServerRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.TOGGLE_MCP_SERVER),\n params: ToggleMcpServerRequestParamsSchema,\n});\n\nexport type ToggleMcpServerRequest = z.infer<\n typeof ToggleMcpServerRequestSchema\n>;\n\nexport const AuthenticateMcpServerRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.AUTHENTICATE_MCP_SERVER),\n params: AuthenticateMcpServerRequestParamsSchema,\n});\n\nexport type AuthenticateMcpServerRequest = z.infer<\n typeof AuthenticateMcpServerRequestSchema\n>;\n\nexport const CancelMcpAuthRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.CANCEL_MCP_AUTH),\n params: CancelMcpAuthRequestParamsSchema,\n});\n\nexport type CancelMcpAuthRequest = z.infer<typeof CancelMcpAuthRequestSchema>;\n\nexport const ClearMcpAuthRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.CLEAR_MCP_AUTH),\n params: ClearMcpAuthRequestParamsSchema,\n});\n\nexport type ClearMcpAuthRequest = z.infer<typeof ClearMcpAuthRequestSchema>;\n\nexport const SubmitMcpAuthCodeRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.SUBMIT_MCP_AUTH_CODE),\n params: SubmitMcpAuthCodeRequestParamsSchema,\n});\n\nexport type SubmitMcpAuthCodeRequest = z.infer<\n typeof SubmitMcpAuthCodeRequestSchema\n>;\n\nexport const AddMcpServerRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.ADD_MCP_SERVER),\n params: AddMcpServerRequestParamsSchema,\n});\n\nexport type AddMcpServerRequest = z.infer<typeof AddMcpServerRequestSchema>;\n\nexport const RemoveMcpServerRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.REMOVE_MCP_SERVER),\n params: RemoveMcpServerRequestParamsSchema,\n});\n\nexport type RemoveMcpServerRequest = z.infer<\n typeof RemoveMcpServerRequestSchema\n>;\n\nexport const ListMcpRegistryRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_REGISTRY),\n params: ListMcpRegistryRequestParamsSchema,\n});\n\nexport type ListMcpRegistryRequest = z.infer<\n typeof ListMcpRegistryRequestSchema\n>;\n\nexport const ListMcpToolsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_TOOLS),\n params: ListMcpToolsRequestParamsSchema,\n});\n\nexport type ListMcpToolsRequest = z.infer<typeof ListMcpToolsRequestSchema>;\n\nexport const ListToolsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_TOOLS),\n params: ListToolsRequestParamsSchema,\n});\n\nexport type ListToolsRequest = z.infer<typeof ListToolsRequestSchema>;\n\nexport const ListMcpServersRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_SERVERS),\n params: ListMcpServersRequestParamsSchema,\n});\n\nexport type ListMcpServersRequest = z.infer<typeof ListMcpServersRequestSchema>;\n\nexport const ToggleMcpToolRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.TOGGLE_MCP_TOOL),\n params: ToggleMcpToolRequestParamsSchema,\n});\n\nexport type ToggleMcpToolRequest = z.infer<typeof ToggleMcpToolRequestSchema>;\n\nexport const ListSkillsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_SKILLS),\n params: ListSkillsRequestParamsSchema,\n});\n\nexport type ListSkillsRequest = z.infer<typeof ListSkillsRequestSchema>;\n\nexport const SubmitBugReportRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.SUBMIT_BUG_REPORT),\n params: SubmitBugReportRequestParamsSchema,\n});\n\nexport type SubmitBugReportRequest = z.infer<\n typeof SubmitBugReportRequestSchema\n>;\n\nexport const GetRewindInfoRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.GET_REWIND_INFO),\n params: GetRewindInfoRequestParamsSchema,\n});\n\nexport type GetRewindInfoRequest = z.infer<typeof GetRewindInfoRequestSchema>;\n\nexport const ExecuteRewindRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.EXECUTE_REWIND),\n params: ExecuteRewindRequestParamsSchema,\n});\n\nexport type ExecuteRewindRequest = z.infer<typeof ExecuteRewindRequestSchema>;\n\nexport const CompactSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.COMPACT_SESSION),\n params: CompactSessionRequestParamsSchema,\n});\n\nexport type CompactSessionRequest = z.infer<typeof CompactSessionRequestSchema>;\n\nexport const ForkSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.FORK_SESSION),\n params: ForkSessionRequestParamsSchema,\n});\n\nexport type ForkSessionRequest = z.infer<typeof ForkSessionRequestSchema>;\n\nexport const GetContextStatsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.GET_CONTEXT_STATS),\n params: GetContextStatsRequestParamsSchema,\n});\n\nexport type GetContextStatsRequest = z.infer<\n typeof GetContextStatsRequestSchema\n>;\n\nexport const RenameSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.RENAME_SESSION),\n params: RenameSessionRequestParamsSchema,\n});\n\nexport type RenameSessionRequest = z.infer<typeof RenameSessionRequestSchema>;\n\n/** Discriminated union over all client→server request types. */\nexport const ClientRequestSchema = z.discriminatedUnion('method', [\n InitializeSessionRequestSchema,\n LoadSessionRequestSchema,\n AddUserMessageRequestSchema,\n CloseSessionRequestSchema,\n InterruptSessionRequestSchema,\n KillWorkerSessionRequestSchema,\n UpdateSessionSettingsRequestSchema,\n ToggleMcpServerRequestSchema,\n AuthenticateMcpServerRequestSchema,\n CancelMcpAuthRequestSchema,\n ClearMcpAuthRequestSchema,\n SubmitMcpAuthCodeRequestSchema,\n AddMcpServerRequestSchema,\n RemoveMcpServerRequestSchema,\n ListMcpRegistryRequestSchema,\n ListMcpToolsRequestSchema,\n ListToolsRequestSchema,\n ListMcpServersRequestSchema,\n ToggleMcpToolRequestSchema,\n ListSkillsRequestSchema,\n SubmitBugReportRequestSchema,\n GetRewindInfoRequestSchema,\n ExecuteRewindRequestSchema,\n CompactSessionRequestSchema,\n ForkSessionRequestSchema,\n GetContextStatsRequestSchema,\n RenameSessionRequestSchema,\n]);\n\nexport type ClientRequest = z.infer<typeof ClientRequestSchema>;\n\nexport const MissionSnapshotSchema = z\n .object({\n state: z.nativeEnum(MissionState),\n features: z.array(MissionFeatureSchema),\n progressLog: z.array(ProgressLogEntrySchema),\n workerSessionIds: z.array(z.string()),\n workerStates: z.record(WorkerStateInfoSchema).optional(),\n tokenUsage: TokenUsageSchema.optional(),\n tokenUsageBySessionId: z.record(TokenUsageSchema).optional(),\n })\n .passthrough();\n\nexport type MissionSnapshot = z.infer<typeof MissionSnapshotSchema>;\n\nexport const InitializeSessionResultSchema = z\n .object({\n sessionId: z.string(),\n session: JsonObjectSchema,\n mcpServers: z.array(McpServerConfigSchema).optional(),\n settings: SessionSettingsSchema,\n gitRepo: GitRepoInfoSchema.optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n })\n .passthrough();\n\nexport type InitializeSessionResult = z.infer<\n typeof InitializeSessionResultSchema\n>;\n\nexport const LoadSessionResultSchema = z\n .object({\n session: JsonObjectSchema,\n mcpServers: z.array(McpServerConfigSchema).optional(),\n pendingPermissions: z.array(JsonObjectSchema).optional(),\n pendingAskUserRequests: z.array(JsonObjectSchema).optional(),\n settings: SessionSettingsSchema,\n isAgentLoopInProgress: z.boolean().optional(),\n queuedMessages: z.array(JsonObjectSchema).optional(),\n gitRepo: GitRepoInfoSchema.optional(),\n cwd: z.string().optional(),\n callingSessionId: z.string().optional(),\n callingToolUseId: z.string().optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n tokenUsage: TokenUsageSchema.optional(),\n mission: MissionSnapshotSchema.optional(),\n decompSessionType: z.nativeEnum(DecompSessionType).optional(),\n })\n .passthrough();\n\nexport type LoadSessionResult = z.infer<typeof LoadSessionResultSchema>;\n\nexport const AddUserMessageResultSchema = EmptyResultSchema;\n\nexport type AddUserMessageResult = z.infer<typeof AddUserMessageResultSchema>;\n\nexport const InterruptSessionResultSchema = EmptyResultSchema;\n\nexport type InterruptSessionResult = z.infer<\n typeof InterruptSessionResultSchema\n>;\n\nexport const CloseSessionResultSchema = EmptyResultSchema;\n\nexport type CloseSessionResult = z.infer<typeof CloseSessionResultSchema>;\n\nexport const KillWorkerSessionResultSchema = EmptyResultSchema;\n\nexport type KillWorkerSessionResult = z.infer<\n typeof KillWorkerSessionResultSchema\n>;\n\nexport const UpdateSessionSettingsResultSchema = EmptyResultSchema;\n\nexport type UpdateSessionSettingsResult = z.infer<\n typeof UpdateSessionSettingsResultSchema\n>;\n\nexport const ToggleMcpServerResultSchema = SuccessResultSchema;\n\nexport type ToggleMcpServerResult = z.infer<typeof ToggleMcpServerResultSchema>;\n\nexport const AuthenticateMcpServerResultSchema = SuccessResultSchema;\n\nexport type AuthenticateMcpServerResult = z.infer<\n typeof AuthenticateMcpServerResultSchema\n>;\n\nexport const CancelMcpAuthResultSchema = SuccessResultSchema;\n\nexport type CancelMcpAuthResult = z.infer<typeof CancelMcpAuthResultSchema>;\n\nexport const ClearMcpAuthResultSchema = SuccessResultSchema;\n\nexport type ClearMcpAuthResult = z.infer<typeof ClearMcpAuthResultSchema>;\n\nexport const SubmitMcpAuthCodeResultSchema = SuccessResultSchema;\n\nexport type SubmitMcpAuthCodeResult = z.infer<\n typeof SubmitMcpAuthCodeResultSchema\n>;\n\nexport const AddMcpServerResultSchema = SuccessResultSchema;\n\nexport type AddMcpServerResult = z.infer<typeof AddMcpServerResultSchema>;\n\nexport const RemoveMcpServerResultSchema = SuccessResultSchema;\n\nexport type RemoveMcpServerResult = z.infer<typeof RemoveMcpServerResultSchema>;\n\nexport const ListMcpRegistryResultSchema = z\n .object({ servers: z.array(McpRegistryServerSchema) })\n .passthrough();\n\nexport type ListMcpRegistryResult = z.infer<typeof ListMcpRegistryResultSchema>;\n\nexport const ListMcpToolsResultSchema = z\n .object({ tools: z.array(McpToolInfoSchema) })\n .passthrough();\n\nexport type ListMcpToolsResult = z.infer<typeof ListMcpToolsResultSchema>;\n\nexport const ListToolsResultSchema = z\n .object({ tools: z.array(ExecToolInfoSchema) })\n .passthrough();\n\nexport type ListToolsResult = z.infer<typeof ListToolsResultSchema>;\n\nexport const ListMcpServersResultSchema = z\n .object({\n servers: z.array(McpServerStatusInfoSchema),\n summary: McpStatusSummarySchema,\n })\n .passthrough();\n\nexport type ListMcpServersResult = z.infer<typeof ListMcpServersResultSchema>;\n\nexport const ToggleMcpToolResultSchema = SuccessResultSchema;\n\nexport type ToggleMcpToolResult = z.infer<typeof ToggleMcpToolResultSchema>;\n\nexport const ListSkillsResultSchema = z\n .object({ skills: z.array(SkillInfoSchema) })\n .passthrough();\n\nexport type ListSkillsResult = z.infer<typeof ListSkillsResultSchema>;\n\nexport const SubmitBugReportResultSchema = z\n .object({ bugReportId: z.string() })\n .passthrough();\n\nexport type SubmitBugReportResult = z.infer<typeof SubmitBugReportResultSchema>;\n\nexport const GetRewindInfoResultSchema = z\n .object({\n availableFiles: z.array(RewindFileSnapshotSchema),\n createdFiles: z.array(RewindFileCreationSchema),\n evictedFiles: z.array(RewindEvictedFileSchema),\n })\n .passthrough();\n\nexport type GetRewindInfoResult = z.infer<typeof GetRewindInfoResultSchema>;\n\nexport const ExecuteRewindResultSchema = z\n .object({\n newSessionId: z.string(),\n restoredCount: z.number(),\n deletedCount: z.number(),\n failedRestoreCount: z.number(),\n failedDeleteCount: z.number(),\n })\n .passthrough();\n\nexport type ExecuteRewindResult = z.infer<typeof ExecuteRewindResultSchema>;\n\nexport const CompactSessionResultSchema = z\n .object({\n newSessionId: z.string(),\n removedCount: z.number(),\n })\n .passthrough();\n\nexport type CompactSessionResult = z.infer<typeof CompactSessionResultSchema>;\n\nexport const ForkSessionResultSchema = z\n .object({\n newSessionId: z.string(),\n })\n .passthrough();\n\nexport type ForkSessionResult = z.infer<typeof ForkSessionResultSchema>;\n\nexport const GetContextStatsResultSchema = ContextStatsSchema;\n\nexport type GetContextStatsResult = z.infer<typeof GetContextStatsResultSchema>;\n\nexport const ContextBreakdownCategorySchema = z\n .object({\n name: z.string(),\n tokens: z.number(),\n colorKey: z.string(),\n })\n .passthrough();\n\nexport const ContextBreakdownResultSchema = z\n .object({\n modelId: z.string(),\n modelDisplayName: z.string(),\n contextBudget: z.number(),\n usedTokens: z.number(),\n freeTokens: z.number(),\n categories: z.array(ContextBreakdownCategorySchema),\n })\n .passthrough();\n\nexport type ContextBreakdownResult = z.infer<\n typeof ContextBreakdownResultSchema\n>;\n\nexport const RenameSessionResultSchema = SuccessResultSchema;\n\nexport type RenameSessionResult = z.infer<typeof RenameSessionResultSchema>;\n\nexport const InitializeSessionResponseSchema = createResponseSchema(\n InitializeSessionResultSchema\n);\nexport type InitializeSessionResponse = z.infer<\n typeof InitializeSessionResponseSchema\n>;\n\n/** Concrete type for LoadSessionResponse (avoids TS7056 deep inference). */\nexport type LoadSessionResponse =\n | (Omit<z.infer<typeof JsonRpcResponseSuccessSchema>, 'result'> & {\n result: LoadSessionResult;\n })\n | JsonRpcResponseFailure;\n\nconst _LoadSessionResponseSchema = createResponseSchema(\n LoadSessionResultSchema\n);\n\nexport const LoadSessionResponseSchema: z.ZodType<\n LoadSessionResponse,\n z.ZodTypeDef,\n unknown\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Zod workaround for TS7056 deep type inference\n> = _LoadSessionResponseSchema as z.ZodType<\n LoadSessionResponse,\n z.ZodTypeDef,\n unknown\n>;\n\nexport const AddUserMessageResponseSchema = createResponseSchema(\n AddUserMessageResultSchema\n);\nexport type AddUserMessageResponse = z.infer<\n typeof AddUserMessageResponseSchema\n>;\n\nexport const InterruptSessionResponseSchema = createResponseSchema(\n InterruptSessionResultSchema\n);\nexport type InterruptSessionResponse = z.infer<\n typeof InterruptSessionResponseSchema\n>;\n\nexport const CloseSessionResponseSchema = createResponseSchema(\n CloseSessionResultSchema\n);\nexport type CloseSessionResponse = z.infer<typeof CloseSessionResponseSchema>;\n\nexport const KillWorkerSessionResponseSchema = createResponseSchema(\n KillWorkerSessionResultSchema\n);\nexport type KillWorkerSessionResponse = z.infer<\n typeof KillWorkerSessionResponseSchema\n>;\n\nexport const UpdateSessionSettingsResponseSchema = createResponseSchema(\n UpdateSessionSettingsResultSchema\n);\nexport type UpdateSessionSettingsResponse = z.infer<\n typeof UpdateSessionSettingsResponseSchema\n>;\n\nexport const ToggleMcpServerResponseSchema = createResponseSchema(\n ToggleMcpServerResultSchema\n);\nexport type ToggleMcpServerResponse = z.infer<\n typeof ToggleMcpServerResponseSchema\n>;\n\nexport const AuthenticateMcpServerResponseSchema = createResponseSchema(\n AuthenticateMcpServerResultSchema\n);\nexport type AuthenticateMcpServerResponse = z.infer<\n typeof AuthenticateMcpServerResponseSchema\n>;\n\nexport const CancelMcpAuthResponseSchema = createResponseSchema(\n CancelMcpAuthResultSchema\n);\nexport type CancelMcpAuthResponse = z.infer<typeof CancelMcpAuthResponseSchema>;\n\nexport const ClearMcpAuthResponseSchema = createResponseSchema(\n ClearMcpAuthResultSchema\n);\nexport type ClearMcpAuthResponse = z.infer<typeof ClearMcpAuthResponseSchema>;\n\nexport const SubmitMcpAuthCodeResponseSchema = createResponseSchema(\n SubmitMcpAuthCodeResultSchema\n);\nexport type SubmitMcpAuthCodeResponse = z.infer<\n typeof SubmitMcpAuthCodeResponseSchema\n>;\n\nexport const AddMcpServerResponseSchema = createResponseSchema(\n AddMcpServerResultSchema\n);\nexport type AddMcpServerResponse = z.infer<typeof AddMcpServerResponseSchema>;\n\nexport const RemoveMcpServerResponseSchema = createResponseSchema(\n RemoveMcpServerResultSchema\n);\nexport type RemoveMcpServerResponse = z.infer<\n typeof RemoveMcpServerResponseSchema\n>;\n\nexport const ListMcpRegistryResponseSchema = createResponseSchema(\n ListMcpRegistryResultSchema\n);\nexport type ListMcpRegistryResponse = z.infer<\n typeof ListMcpRegistryResponseSchema\n>;\n\nexport const ListMcpToolsResponseSchema = createResponseSchema(\n ListMcpToolsResultSchema\n);\nexport type ListMcpToolsResponse = z.infer<typeof ListMcpToolsResponseSchema>;\n\nexport const ListToolsResponseSchema = createResponseSchema(\n ListToolsResultSchema\n);\nexport type ListToolsResponse = z.infer<typeof ListToolsResponseSchema>;\n\nexport const ListMcpServersResponseSchema = createResponseSchema(\n ListMcpServersResultSchema\n);\nexport type ListMcpServersResponse = z.infer<\n typeof ListMcpServersResponseSchema\n>;\n\nexport const ToggleMcpToolResponseSchema = createResponseSchema(\n ToggleMcpToolResultSchema\n);\nexport type ToggleMcpToolResponse = z.infer<typeof ToggleMcpToolResponseSchema>;\n\nexport const ListSkillsResponseSchema = createResponseSchema(\n ListSkillsResultSchema\n);\nexport type ListSkillsResponse = z.infer<typeof ListSkillsResponseSchema>;\n\nexport const SubmitBugReportResponseSchema = createResponseSchema(\n SubmitBugReportResultSchema\n);\nexport type SubmitBugReportResponse = z.infer<\n typeof SubmitBugReportResponseSchema\n>;\n\nexport const GetRewindInfoResponseSchema = createResponseSchema(\n GetRewindInfoResultSchema\n);\nexport type GetRewindInfoResponse = z.infer<typeof GetRewindInfoResponseSchema>;\n\nexport const ExecuteRewindResponseSchema = createResponseSchema(\n ExecuteRewindResultSchema\n);\nexport type ExecuteRewindResponse = z.infer<typeof ExecuteRewindResponseSchema>;\n\nexport const CompactSessionResponseSchema = createResponseSchema(\n CompactSessionResultSchema\n);\nexport type CompactSessionResponse = z.infer<\n typeof CompactSessionResponseSchema\n>;\n\nexport const ForkSessionResponseSchema = createResponseSchema(\n ForkSessionResultSchema\n);\nexport type ForkSessionResponse = z.infer<typeof ForkSessionResponseSchema>;\n\nexport const GetContextStatsResponseSchema = createResponseSchema(\n GetContextStatsResultSchema\n);\nexport type GetContextStatsResponse = z.infer<\n typeof GetContextStatsResponseSchema\n>;\n\nexport const RenameSessionResponseSchema = createResponseSchema(\n RenameSessionResultSchema\n);\nexport type RenameSessionResponse = z.infer<typeof RenameSessionResponseSchema>;\n","import { z } from 'zod';\n\nimport {\n McpServerStatus,\n McpServerType,\n SettingsLevel,\n ToolConfirmationOutcome,\n} from './enums.js';\nimport { JsonObjectSchema } from './shared.js';\n\nexport const McpStdioServerConfigFieldsSchema = z.object({\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n});\n\nexport type McpStdioServerConfigFields = z.infer<\n typeof McpStdioServerConfigFieldsSchema\n>;\n\nexport const McpHttpServerConfigFieldsSchema = z.object({\n url: z.string().optional(),\n});\n\nexport type McpHttpServerConfigFields = z.infer<\n typeof McpHttpServerConfigFieldsSchema\n>;\n\nexport const McpSseServerConfigFieldsSchema = z.object({\n url: z.string(),\n headers: z.record(z.string()).optional(),\n});\n\nexport type McpSseServerConfigFields = z.infer<\n typeof McpSseServerConfigFieldsSchema\n>;\n\nexport const McpServerStatusInfoSchema = z\n .object({\n name: z.string(),\n status: z.nativeEnum(McpServerStatus),\n source: z.nativeEnum(SettingsLevel),\n isManaged: z.boolean(),\n error: z.string().optional(),\n toolCount: z.number().optional(),\n serverType: z.nativeEnum(McpServerType).optional(),\n hasAuthTokens: z.boolean().optional(),\n })\n .passthrough();\n\nexport type McpServerStatusInfo = z.infer<typeof McpServerStatusInfoSchema>;\n\nexport const McpStatusSummarySchema = z\n .object({\n total: z.number(),\n connected: z.number(),\n connecting: z.number(),\n failed: z.number(),\n disabled: z.number().optional(),\n })\n .passthrough();\n\nexport type McpStatusSummary = z.infer<typeof McpStatusSummarySchema>;\n\nexport const McpRegistryServerSchema = z\n .object({\n name: z.string(),\n description: z.string(),\n type: z.nativeEnum(McpServerType),\n // Stdio config fields\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n // HTTP config fields\n url: z.string().optional(),\n // Additional metadata\n note: z.string().optional(),\n logoUrl: z.string().optional(),\n })\n .passthrough();\n\nexport type McpRegistryServer = z.infer<typeof McpRegistryServerSchema>;\n\n/** JSON Schema subset for MCP tool input parameters. */\nexport const McpToolInputSchemaSchema = z\n .object({\n type: z.string().optional(),\n properties: JsonObjectSchema.optional(),\n required: z.array(z.string()).optional(),\n })\n .passthrough();\n\nexport type McpToolInputSchema = z.infer<typeof McpToolInputSchemaSchema>;\n\nexport const McpToolInfoSchema = z\n .object({\n serverName: z.string(),\n name: z.string(),\n description: z.string().optional(),\n isEnabled: z.boolean(),\n isReadOnly: z.boolean().optional(),\n inputSchema: McpToolInputSchemaSchema.optional(),\n })\n .passthrough();\n\nexport type McpToolInfo = z.infer<typeof McpToolInfoSchema>;\n\nexport const ToolConfirmationListItemSchema = z\n .object({\n label: z.string(),\n value: z.nativeEnum(ToolConfirmationOutcome),\n })\n .passthrough();\n\nexport type ToolConfirmationListItem = z.infer<\n typeof ToolConfirmationListItemSchema\n>;\n","import { z } from 'zod';\n\nimport { JsonObjectSchema, JsonValueSchema } from './shared.js';\n\n/** Text content block. */\nexport const TextBlockSchema = z\n .object({\n type: z.literal('text'),\n text: z.string(),\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type TextBlock = z.infer<typeof TextBlockSchema>;\n\n/** Base64-encoded image source. */\nexport const Base64ImageSourceSchema = z\n .object({\n type: z.literal('base64'),\n data: z.string(),\n mediaType: z.enum(['image/jpeg', 'image/png', 'image/gif', 'image/webp']),\n })\n .passthrough();\n\nexport type Base64ImageSource = z.infer<typeof Base64ImageSourceSchema>;\n\n/** Image content block. */\nexport const ImageBlockSchema = z\n .object({\n type: z.literal('image'),\n source: Base64ImageSourceSchema,\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type ImageBlock = z.infer<typeof ImageBlockSchema>;\n\n/** Thinking content block. */\nexport const ThinkingBlockSchema = z\n .object({\n type: z.literal('thinking'),\n signature: z.string(),\n thinking: z.string(),\n id: z.string().optional(),\n signatureProvider: z.string().optional(),\n })\n .passthrough();\n\nexport type ThinkingBlock = z.infer<typeof ThinkingBlockSchema>;\n\n/** Redacted thinking content block. */\nexport const RedactedThinkingBlockSchema = z\n .object({\n type: z.literal('redacted_thinking'),\n data: z.string(),\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type RedactedThinkingBlock = z.infer<typeof RedactedThinkingBlockSchema>;\n\n/** Tool use content block. */\nexport const ToolUseBlockSchema = z\n .object({\n type: z.literal('tool_use'),\n id: z.string(),\n input: JsonObjectSchema,\n name: z.string(),\n thoughtSignature: z.string().optional(),\n })\n .passthrough();\n\nexport type ToolUseBlock = z.infer<typeof ToolUseBlockSchema>;\n\n/** Tool result content block. */\nexport const ToolResultBlockSchema = z\n .object({\n type: z.literal('tool_result'),\n toolUseId: z.string(),\n content: z.union([z.string(), z.array(JsonValueSchema)]).optional(),\n isError: z.boolean().optional(),\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type ToolResultBlock = z.infer<typeof ToolResultBlockSchema>;\n\n/** Document content block. */\nexport const DocumentBlockSchema = z\n .object({\n type: z.literal('document'),\n source: JsonObjectSchema,\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type DocumentBlock = z.infer<typeof DocumentBlockSchema>;\n\n/** Discriminated union over all content block types. */\nexport const ContentBlockSchema = z.discriminatedUnion('type', [\n TextBlockSchema,\n ImageBlockSchema,\n ThinkingBlockSchema,\n RedactedThinkingBlockSchema,\n ToolUseBlockSchema,\n ToolResultBlockSchema,\n DocumentBlockSchema,\n]);\n\nexport type ContentBlock = z.infer<typeof ContentBlockSchema>;\n\nexport const FactoryDroidMessageRole = {\n User: 'user',\n Assistant: 'assistant',\n Tool: 'tool',\n System: 'system',\n} as const;\n\nexport type FactoryDroidMessageRole =\n (typeof FactoryDroidMessageRole)[keyof typeof FactoryDroidMessageRole];\n\n/** Factory Droid message schema (used in CreateMessageNotification and session data). */\nexport const FactoryDroidMessageSchema = z\n .object({\n id: z.string(),\n role: z.enum([\n FactoryDroidMessageRole.User,\n FactoryDroidMessageRole.Assistant,\n FactoryDroidMessageRole.Tool,\n FactoryDroidMessageRole.System,\n ]),\n content: z.array(ContentBlockSchema),\n createdAt: z.number(),\n updatedAt: z.number(),\n parentId: z.string().optional(),\n visibility: z.enum(['both', 'llm_only', 'user_only']).optional(),\n isError: z.boolean().optional(),\n })\n .passthrough();\n\nexport type FactoryDroidMessage = z.infer<typeof FactoryDroidMessageSchema>;\n\n/** Document source for user messages (PDF or plain text). */\nexport const DocumentSourceSchema = z\n .object({\n type: z.string(),\n mediaType: z.string(),\n data: z.string(),\n name: z.string().optional(),\n mime: z.string().optional(),\n })\n .passthrough();\n\nexport type DocumentSource = z.infer<typeof DocumentSourceSchema>;\n","import { z } from 'zod';\n\nimport {\n DismissalType,\n FeatureStatus,\n FeatureSuccessState,\n IssueSeverity,\n ProgressLogEntryType,\n} from './enums.js';\n\n/** Mission feature schema. */\nexport const MissionFeatureSchema = z\n .object({\n id: z.string(),\n description: z.string(),\n status: z.nativeEnum(FeatureStatus),\n skillName: z.string(),\n preconditions: z.array(z.string()),\n expectedBehavior: z.array(z.string()),\n verificationSteps: z.array(z.string()),\n fulfills: z.array(z.string()).optional(),\n milestone: z.string().optional(),\n workerSessionIds: z.array(z.string()).optional(),\n currentWorkerSessionId: z.string().nullable().optional(),\n completedWorkerSessionId: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type MissionFeature = z.infer<typeof MissionFeatureSchema>;\n\nexport const FeatureSuccessStateSchema = z.nativeEnum(FeatureSuccessState);\n\n/** Discovered issue during feature implementation. */\nexport const DiscoveredIssueSchema = z\n .object({\n severity: z.nativeEnum(IssueSeverity),\n description: z.string(),\n suggestedFix: z.string().optional(),\n })\n .passthrough();\n\nexport type DiscoveredIssue = z.infer<typeof DiscoveredIssueSchema>;\n\n/** A command run during verification. */\nexport const VerificationCommandSchema = z\n .object({\n command: z.string(),\n exitCode: z.number(),\n observation: z.string(),\n })\n .passthrough();\n\nexport type VerificationCommand = z.infer<typeof VerificationCommandSchema>;\n\n/** An interactive check performed during verification. */\nexport const InteractiveCheckSchema = z\n .object({\n action: z.string(),\n observed: z.string(),\n })\n .passthrough();\n\nexport type InteractiveCheck = z.infer<typeof InteractiveCheckSchema>;\n\n/** Verification performed during feature implementation. */\nexport const VerificationSchema = z\n .object({\n commandsRun: z.array(VerificationCommandSchema),\n interactiveChecks: z.array(InteractiveCheckSchema).optional(),\n })\n .passthrough();\n\nexport type Verification = z.infer<typeof VerificationSchema>;\n\n/** A single test case. */\nexport const TestCaseSchema = z\n .object({\n name: z.string(),\n verifies: z.string(),\n })\n .passthrough();\n\nexport type TestCase = z.infer<typeof TestCaseSchema>;\n\n/** A test file with its test cases. */\nexport const TestFileSchema = z\n .object({\n file: z.string(),\n cases: z.array(TestCaseSchema),\n })\n .passthrough();\n\nexport type TestFile = z.infer<typeof TestFileSchema>;\n\n/** Test information for a feature implementation. */\nexport const TestsSchema = z\n .object({\n added: z.array(TestFileSchema),\n updated: z.array(z.string()).optional(),\n coverage: z.string(),\n })\n .passthrough();\n\nexport type Tests = z.infer<typeof TestsSchema>;\n\n/** A deviation from the skill procedure. */\nexport const SkillDeviationSchema = z\n .object({\n step: z.string(),\n whatIDidInstead: z.string(),\n why: z.string(),\n })\n .passthrough();\n\nexport type SkillDeviation = z.infer<typeof SkillDeviationSchema>;\n\n/** Feedback on the skill procedure. */\nexport const SkillFeedbackSchema = z\n .object({\n followedProcedure: z.boolean(),\n deviations: z.array(SkillDeviationSchema),\n suggestedChanges: z.array(z.string()).optional(),\n })\n .passthrough();\n\nexport type SkillFeedback = z.infer<typeof SkillFeedbackSchema>;\n\n/** Worker handoff information. */\nexport const HandoffSchema = z\n .object({\n salientSummary: z.string().optional(),\n whatWasImplemented: z.string(),\n whatWasLeftUndone: z.string(),\n verification: VerificationSchema,\n tests: TestsSchema,\n discoveredIssues: z.array(DiscoveredIssueSchema),\n skillFeedback: SkillFeedbackSchema.optional(),\n })\n .passthrough();\n\nexport type Handoff = z.infer<typeof HandoffSchema>;\n\n/** A record of a dismissed handoff item. */\nexport const DismissalRecordSchema = z\n .object({\n type: z.nativeEnum(DismissalType),\n sourceFeatureId: z.string(),\n summary: z.string(),\n justification: z.string(),\n })\n .passthrough();\n\nexport type DismissalRecord = z.infer<typeof DismissalRecordSchema>;\n\nconst BaseProgressLogEntrySchema = z.object({\n timestamp: z.string(),\n});\n\nexport const MissionAcceptedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionAccepted),\n title: z.string(),\n}).passthrough();\n\nexport type MissionAcceptedEntry = z.infer<typeof MissionAcceptedEntrySchema>;\n\nexport const MissionPausedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionPaused),\n}).passthrough();\n\nexport type MissionPausedEntry = z.infer<typeof MissionPausedEntrySchema>;\n\nexport const MissionResumedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionResumed),\n}).passthrough();\n\nexport type MissionResumedEntry = z.infer<typeof MissionResumedEntrySchema>;\n\nexport const MissionRunStartedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionRunStarted),\n message: z.string().optional(),\n}).passthrough();\n\nexport type MissionRunStartedEntry = z.infer<\n typeof MissionRunStartedEntrySchema\n>;\n\nexport const WorkerStartedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerStarted),\n workerSessionId: z.string(),\n spawnId: z.string(),\n featureId: z.string().optional(),\n}).passthrough();\n\nexport type WorkerStartedEntry = z.infer<typeof WorkerStartedEntrySchema>;\n\nexport const WorkerSelectedFeatureEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerSelectedFeature),\n workerSessionId: z.string(),\n featureId: z.string(),\n }).passthrough();\n\nexport type WorkerSelectedFeatureEntry = z.infer<\n typeof WorkerSelectedFeatureEntrySchema\n>;\n\nexport const WorkerCompletedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerCompleted),\n workerSessionId: z.string(),\n featureId: z.string(),\n successState: FeatureSuccessStateSchema,\n returnToOrchestrator: z.boolean(),\n commitId: z.string().optional(),\n exitCode: z.number(),\n validatorsPassed: z.boolean().optional(),\n handoff: HandoffSchema.optional(),\n}).passthrough();\n\nexport type WorkerCompletedEntry = z.infer<typeof WorkerCompletedEntrySchema>;\n\nexport const WorkerFailedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerFailed),\n workerSessionId: z.string().optional(),\n spawnId: z.string(),\n exitCode: z.number().optional(),\n reason: z.string(),\n}).passthrough();\n\nexport type WorkerFailedEntry = z.infer<typeof WorkerFailedEntrySchema>;\n\nexport const WorkerPausedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerPaused),\n workerSessionId: z.string(),\n featureId: z.string().optional(),\n}).passthrough();\n\nexport type WorkerPausedEntry = z.infer<typeof WorkerPausedEntrySchema>;\n\nexport const HandoffItemsDismissedEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.HandoffItemsDismissed),\n dismissals: z.array(DismissalRecordSchema).optional(),\n }).passthrough();\n\nexport type HandoffItemsDismissedEntry = z.infer<\n typeof HandoffItemsDismissedEntrySchema\n>;\n\nexport const MilestoneValidationTriggeredEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MilestoneValidationTriggered),\n milestone: z.string(),\n featureId: z.string(),\n }).passthrough();\n\nexport type MilestoneValidationTriggeredEntry = z.infer<\n typeof MilestoneValidationTriggeredEntrySchema\n>;\n\n/** Discriminated union over all 11 progress log entry types. */\nexport const ProgressLogEntrySchema = z.discriminatedUnion('type', [\n MissionAcceptedEntrySchema,\n MissionPausedEntrySchema,\n MissionResumedEntrySchema,\n MissionRunStartedEntrySchema,\n WorkerStartedEntrySchema,\n WorkerSelectedFeatureEntrySchema,\n WorkerCompletedEntrySchema,\n WorkerFailedEntrySchema,\n WorkerPausedEntrySchema,\n HandoffItemsDismissedEntrySchema,\n MilestoneValidationTriggeredEntrySchema,\n]);\n\nexport type ProgressLogEntry = z.infer<typeof ProgressLogEntrySchema>;\n","import { z } from 'zod';\n\nexport const DroidHookEventSchema = z.enum([\n 'PreToolUse',\n 'PostToolUse',\n 'Notification',\n 'UserPromptSubmit',\n 'Stop',\n 'SubagentStop',\n 'PreCompact',\n 'SessionStart',\n 'SessionEnd',\n]);\n\nexport type DroidHookEvent = z.infer<typeof DroidHookEventSchema>;\n\nexport const DroidHookSpecificOutputSchema = z\n .object({\n hookEventName: DroidHookEventSchema.optional(),\n permissionDecision: z.enum(['allow', 'deny', 'ask']).optional(),\n permissionDecisionReason: z.string().optional(),\n additionalContext: z.string().optional(),\n updatedInput: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\nexport const DroidHookOutputSchema = z\n .object({\n continue: z.boolean().optional(),\n stopReason: z.string().optional(),\n suppressOutput: z.boolean().optional(),\n systemMessage: z.string().optional(),\n decision: z.enum(['block', 'approve']).optional(),\n reason: z.string().optional(),\n hookSpecificOutput: DroidHookSpecificOutputSchema.optional(),\n })\n .passthrough();\n\nexport type DroidHookOutput = z.infer<typeof DroidHookOutputSchema>;\n\nexport const DroidHookExecutionResultSchema = DroidHookOutputSchema.extend({\n exitCode: z.number(),\n stdout: z.string(),\n stderr: z.string(),\n});\n\nexport type DroidHookExecutionResult = z.infer<\n typeof DroidHookExecutionResultSchema\n>;\n","import { z } from 'zod';\n\nimport { TokenUsageSchema } from './client.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n DroidClientMethod,\n DroidErrorType,\n DroidInteractionMode,\n DroidWorkingState,\n McpAuthOutcome,\n MissionState,\n ReasoningEffort,\n SessionNotificationType,\n ToolConfirmationOutcome,\n ToolConfirmationType,\n} from './enums.js';\nimport { DroidHookEventSchema } from './hooks.js';\nimport {\n McpServerStatusInfoSchema,\n McpStatusSummarySchema,\n ToolConfirmationListItemSchema,\n} from './mcp.js';\nimport {\n FactoryDroidMessageSchema,\n ToolUseBlockSchema as MessageToolUseBlockSchema,\n} from './messages.js';\nimport { MissionFeatureSchema, ProgressLogEntrySchema } from './mission.js';\nimport {\n createResponseSchema,\n JsonObjectSchema,\n JsonRpcNotificationSchema,\n JsonRpcRequestSchema,\n JsonValueSchema,\n ToolSelectionOverridesSchema,\n} from './shared.js';\n\nexport const ToolUseBlockSchema = MessageToolUseBlockSchema;\n\nexport type ToolUseBlock = z.infer<typeof ToolUseBlockSchema>;\n\n/** @deprecated Use ToolUseBlockSchema/ToolUseBlock for the message block shape. */\nexport const ToolUseSchema = ToolUseBlockSchema;\n\n/** @deprecated Use ToolUseBlock for the message block shape. */\nexport type ToolUse = ToolUseBlock;\n\nexport const ErrorDetailSchema = z\n .object({\n name: z.string(),\n message: z.string(),\n })\n .passthrough();\n\nexport type ErrorDetail = z.infer<typeof ErrorDetailSchema>;\n\nexport const ToolProgressUpdateSchema = z\n .object({\n type: z.enum(['tool_call', 'tool_result', 'error', 'status', 'message']),\n toolName: z.string().optional(),\n status: z.string().optional(),\n details: z.string().optional(),\n text: z.string().optional(),\n error: z.string().optional(),\n timestamp: z.number().optional(),\n parameters: JsonObjectSchema.optional(),\n valueSnippet: z.string().optional(),\n subagentSessionId: z.string().optional(),\n })\n .passthrough();\n\nexport type ToolProgressUpdate = z.infer<typeof ToolProgressUpdateSchema>;\n\nexport const SettingsUpdatedPayloadSchema = z\n .object({\n autonomyMode: z.nativeEnum(AutonomyMode).optional(),\n interactionMode: z\n .nativeEnum(DroidInteractionMode)\n .optional()\n .catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n ...ToolSelectionOverridesSchema.shape,\n })\n .passthrough();\n\nexport type SettingsUpdatedPayload = z.infer<\n typeof SettingsUpdatedPayloadSchema\n>;\n\nexport const ToolResultNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.TOOL_RESULT),\n messageId: z.string(),\n toolUseId: z.string(),\n content: JsonValueSchema.optional(),\n isError: z.boolean().optional(),\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type ToolResultNotification = z.infer<\n typeof ToolResultNotificationSchema\n>;\n\nexport const ToolProgressUpdateNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.TOOL_PROGRESS_UPDATE),\n toolUseId: z.string(),\n toolName: z.string(),\n update: ToolProgressUpdateSchema,\n })\n .passthrough();\n\nexport type ToolProgressUpdateNotification = z.infer<\n typeof ToolProgressUpdateNotificationSchema\n>;\n\nexport const CreateMessageNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.CREATE_MESSAGE),\n message: FactoryDroidMessageSchema,\n parentId: z.string().optional(),\n requestId: z.string().optional(),\n })\n .passthrough();\n\nexport type CreateMessageNotification = z.infer<\n typeof CreateMessageNotificationSchema\n>;\n\nexport const ErrorNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.ERROR),\n message: z.string(),\n errorType: z.nativeEnum(DroidErrorType),\n timestamp: z.string(),\n error: ErrorDetailSchema.optional(),\n })\n .passthrough();\n\nexport type ErrorNotification = z.infer<typeof ErrorNotificationSchema>;\n\nexport const DroidWorkingStateChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.DROID_WORKING_STATE_CHANGED),\n newState: z.nativeEnum(DroidWorkingState),\n })\n .passthrough();\n\nexport type DroidWorkingStateChangedNotification = z.infer<\n typeof DroidWorkingStateChangedNotificationSchema\n>;\n\nexport const PermissionResolvedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.PERMISSION_RESOLVED),\n requestId: z.string(),\n toolUseIds: z.array(z.string()),\n selectedOption: z.nativeEnum(ToolConfirmationOutcome),\n })\n .passthrough();\n\nexport type PermissionResolvedNotification = z.infer<\n typeof PermissionResolvedNotificationSchema\n>;\n\nexport const SettingsUpdatedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.SETTINGS_UPDATED),\n settings: SettingsUpdatedPayloadSchema,\n })\n .passthrough();\n\nexport type SettingsUpdatedNotification = z.infer<\n typeof SettingsUpdatedNotificationSchema\n>;\n\nexport const SessionTitleUpdatedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.SESSION_TITLE_UPDATED),\n title: z.string(),\n })\n .passthrough();\n\nexport type SessionTitleUpdatedNotification = z.infer<\n typeof SessionTitleUpdatedNotificationSchema\n>;\n\nexport const McpStatusChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MCP_STATUS_CHANGED),\n servers: z.array(McpServerStatusInfoSchema),\n summary: McpStatusSummarySchema,\n })\n .passthrough();\n\nexport type McpStatusChangedNotification = z.infer<\n typeof McpStatusChangedNotificationSchema\n>;\n\n/** Assistant text delta notification (streaming token). */\nexport const AssistantTextDeltaNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.ASSISTANT_TEXT_DELTA),\n messageId: z.string(),\n blockIndex: z.number(),\n textDelta: z.string(),\n })\n .passthrough();\n\nexport type AssistantTextDeltaNotification = z.infer<\n typeof AssistantTextDeltaNotificationSchema\n>;\n\n/** Assistant text complete notification (streaming block finished). */\nexport const AssistantTextCompleteNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.ASSISTANT_TEXT_COMPLETE),\n messageId: z.string(),\n blockIndex: z.number(),\n })\n .passthrough();\n\nexport type AssistantTextCompleteNotification = z.infer<\n typeof AssistantTextCompleteNotificationSchema\n>;\n\nexport const ThinkingTextDeltaNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.THINKING_TEXT_DELTA),\n messageId: z.string(),\n blockIndex: z.number(),\n textDelta: z.string(),\n })\n .passthrough();\n\nexport type ThinkingTextDeltaNotification = z.infer<\n typeof ThinkingTextDeltaNotificationSchema\n>;\n\nexport const ThinkingTextCompleteNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.THINKING_TEXT_COMPLETE),\n messageId: z.string(),\n blockIndex: z.number(),\n durationMs: z.number().optional(),\n })\n .passthrough();\n\nexport type ThinkingTextCompleteNotification = z.infer<\n typeof ThinkingTextCompleteNotificationSchema\n>;\n\nexport const ToolCallNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.TOOL_CALL),\n toolUse: ToolUseBlockSchema,\n })\n .passthrough();\n\nexport type ToolCallNotification = z.infer<typeof ToolCallNotificationSchema>;\n\nexport const SessionTokenUsageChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.SESSION_TOKEN_USAGE_CHANGED),\n sessionId: z.string(),\n tokenUsage: TokenUsageSchema,\n })\n .passthrough();\n\nexport type SessionTokenUsageChangedNotification = z.infer<\n typeof SessionTokenUsageChangedNotificationSchema\n>;\n\nexport const MissionStateChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_STATE_CHANGED),\n state: z.nativeEnum(MissionState),\n })\n .passthrough();\n\nexport type MissionStateChangedNotification = z.infer<\n typeof MissionStateChangedNotificationSchema\n>;\n\nexport const MissionFeaturesChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_FEATURES_CHANGED),\n features: z.array(MissionFeatureSchema),\n })\n .passthrough();\n\nexport type MissionFeaturesChangedNotification = z.infer<\n typeof MissionFeaturesChangedNotificationSchema\n>;\n\nexport const MissionProgressEntryNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_PROGRESS_ENTRY),\n progressLog: z.array(ProgressLogEntrySchema),\n })\n .passthrough();\n\nexport type MissionProgressEntryNotification = z.infer<\n typeof MissionProgressEntryNotificationSchema\n>;\n\nexport const MissionHeartbeatNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_HEARTBEAT),\n timestamp: z.string(),\n })\n .passthrough();\n\nexport type MissionHeartbeatNotification = z.infer<\n typeof MissionHeartbeatNotificationSchema\n>;\n\nexport const MissionWorkerStartedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_WORKER_STARTED),\n workerSessionId: z.string(),\n })\n .passthrough();\n\nexport type MissionWorkerStartedNotification = z.infer<\n typeof MissionWorkerStartedNotificationSchema\n>;\n\nexport const MissionWorkerCompletedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_WORKER_COMPLETED),\n workerSessionId: z.string(),\n exitCode: z.number(),\n })\n .passthrough();\n\nexport type MissionWorkerCompletedNotification = z.infer<\n typeof MissionWorkerCompletedNotificationSchema\n>;\n\nexport const McpAuthRequiredNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MCP_AUTH_REQUIRED),\n serverName: z.string(),\n authUrl: z.string(),\n message: z.string(),\n state: z.string(),\n })\n .passthrough();\n\nexport type McpAuthRequiredNotification = z.infer<\n typeof McpAuthRequiredNotificationSchema\n>;\n\nexport const McpAuthCompletedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MCP_AUTH_COMPLETED),\n serverName: z.string(),\n outcome: z.nativeEnum(McpAuthOutcome),\n message: z.string(),\n })\n .passthrough();\n\nexport type McpAuthCompletedNotification = z.infer<\n typeof McpAuthCompletedNotificationSchema\n>;\n\nexport const HookCommandSchema = z\n .object({\n command: z.string(),\n timeout: z.number().optional(),\n })\n .passthrough();\n\nexport type HookCommand = z.infer<typeof HookCommandSchema>;\n\nexport const HookResultSchema = z\n .object({\n exitCode: z.number(),\n stdout: z.string(),\n stderr: z.string(),\n command: z.string().optional(),\n timeout: z.number().optional(),\n })\n .passthrough();\n\nexport type HookResult = z.infer<typeof HookResultSchema>;\n\nexport const HookExecutionStartedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.HOOK_EXECUTION_STARTED),\n hookId: z.string(),\n hookEventName: DroidHookEventSchema,\n hookMatcher: z.string().optional(),\n hookCommands: z.array(HookCommandSchema),\n hookToolCallId: z.string().optional(),\n isParallelExecution: z.boolean().optional(),\n parallelGroupId: z.string().optional(),\n })\n .passthrough();\n\nexport type HookExecutionStartedNotification = z.infer<\n typeof HookExecutionStartedNotificationSchema\n>;\n\nexport const HookExecutionCompletedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.HOOK_EXECUTION_COMPLETED),\n hookId: z.string(),\n hookEventName: DroidHookEventSchema.optional(),\n hookMatcher: z.string().optional(),\n hookToolCallId: z.string().optional(),\n hookStatus: z.enum(['completed', 'error']),\n hookResults: z.array(HookResultSchema).optional(),\n })\n .passthrough();\n\nexport type HookExecutionCompletedNotification = z.infer<\n typeof HookExecutionCompletedNotificationSchema\n>;\n\n/** Structured output validation error emitted by Droid. */\nexport const StructuredOutputErrorSchema = z\n .object({\n code: z.string(),\n message: z.string(),\n details: z.unknown().optional(),\n })\n .passthrough();\n\nexport type StructuredOutputError = z.infer<typeof StructuredOutputErrorSchema>;\n\n/** Backend-validated structured output for the completed turn. */\nexport const StructuredOutputNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.STRUCTURED_OUTPUT),\n messageId: z.string(),\n structuredOutput: JsonObjectSchema.nullable(),\n structuredOutputError: StructuredOutputErrorSchema.nullable(),\n })\n .passthrough();\n\nexport type StructuredOutputNotification = z.infer<\n typeof StructuredOutputNotificationSchema\n>;\n\n/** List of all session notification schemas (for discriminatedUnion). */\nexport const SessionNotificationSchemaList = [\n ToolResultNotificationSchema,\n ToolProgressUpdateNotificationSchema,\n CreateMessageNotificationSchema,\n ErrorNotificationSchema,\n DroidWorkingStateChangedNotificationSchema,\n PermissionResolvedNotificationSchema,\n SettingsUpdatedNotificationSchema,\n SessionTitleUpdatedNotificationSchema,\n McpStatusChangedNotificationSchema,\n AssistantTextDeltaNotificationSchema,\n AssistantTextCompleteNotificationSchema,\n ThinkingTextDeltaNotificationSchema,\n ThinkingTextCompleteNotificationSchema,\n ToolCallNotificationSchema,\n SessionTokenUsageChangedNotificationSchema,\n MissionStateChangedNotificationSchema,\n MissionFeaturesChangedNotificationSchema,\n MissionProgressEntryNotificationSchema,\n MissionHeartbeatNotificationSchema,\n MissionWorkerStartedNotificationSchema,\n MissionWorkerCompletedNotificationSchema,\n McpAuthRequiredNotificationSchema,\n McpAuthCompletedNotificationSchema,\n HookExecutionStartedNotificationSchema,\n HookExecutionCompletedNotificationSchema,\n StructuredOutputNotificationSchema,\n] as const;\n\n/** Discriminated union over all session notification types. */\nexport const SessionNotificationPayloadSchema = z.discriminatedUnion(\n 'type',\n SessionNotificationSchemaList\n);\n\nexport type SessionNotificationPayload = z.infer<\n typeof SessionNotificationPayloadSchema\n>;\n\n/** Parameters for session notification (wraps the discriminated union). */\nconst _SessionNotificationParamsSchema = z\n .object({\n notification: SessionNotificationPayloadSchema,\n })\n .passthrough();\n\n/* eslint-disable @typescript-eslint/consistent-type-assertions -- Zod workaround for deep type inference */\nexport const SessionNotificationParamsSchema: z.ZodType<\n SessionNotificationParams,\n z.ZodTypeDef,\n unknown\n> = _SessionNotificationParamsSchema as z.ZodType<\n SessionNotificationParams,\n z.ZodTypeDef,\n unknown\n>;\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n\nexport type SessionNotificationParams = {\n notification: SessionNotificationPayload;\n [key: string]: unknown;\n};\n\n/** Full session notification with JSON-RPC envelope. */\nconst _SessionNotificationSchema = JsonRpcNotificationSchema.extend({\n method: z.literal(DroidClientMethod.SESSION_NOTIFICATION),\n params: SessionNotificationParamsSchema,\n});\n\n/* eslint-disable @typescript-eslint/consistent-type-assertions -- Zod workaround for deep type inference */\nexport const SessionNotificationSchema: z.ZodType<\n SessionNotification,\n z.ZodTypeDef,\n unknown\n> = _SessionNotificationSchema as z.ZodType<\n SessionNotification,\n z.ZodTypeDef,\n unknown\n>;\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n\nexport type SessionNotification = z.output<typeof JsonRpcNotificationSchema> & {\n method: 'droid.session_notification';\n params: SessionNotificationParams;\n};\n\nexport const EditToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.Edit),\n filePath: z.string(),\n fileName: z.string(),\n oldContent: z.string().optional(),\n newContent: z.string().optional(),\n })\n .passthrough();\n\nexport type EditToolConfirmationDetails = z.infer<\n typeof EditToolConfirmationDetailsSchema\n>;\n\nexport const ExecuteToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.Execute),\n fullCommand: z.string(),\n command: z.string(),\n extractedCommands: z.array(z.string()).optional(),\n impactLevel: z.string().optional(),\n })\n .passthrough();\n\nexport type ExecuteToolConfirmationDetails = z.infer<\n typeof ExecuteToolConfirmationDetailsSchema\n>;\n\nexport const CreateToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.Create),\n filePath: z.string(),\n fileName: z.string(),\n content: z.string(),\n })\n .passthrough();\n\nexport type CreateToolConfirmationDetails = z.infer<\n typeof CreateToolConfirmationDetailsSchema\n>;\n\nexport const AskUserQuestionSchema = z\n .object({\n index: z.number(),\n topic: z.string(),\n question: z.string(),\n options: z.array(z.string()),\n })\n .passthrough();\n\nexport type AskUserQuestion = z.infer<typeof AskUserQuestionSchema>;\n\nexport const AskUserConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.AskUser),\n questionnaire: z.string(),\n parsed: z\n .object({\n questions: z.array(AskUserQuestionSchema),\n })\n .optional(),\n parseError: z\n .object({\n message: z.string(),\n line: z.number().optional(),\n })\n .optional(),\n })\n .passthrough();\n\nexport type AskUserConfirmationDetails = z.infer<\n typeof AskUserConfirmationDetailsSchema\n>;\n\nexport const ExitSpecModeConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.ExitSpecMode),\n plan: z.string(),\n title: z.string().optional(),\n optionNames: z.array(z.string()).optional(),\n })\n .passthrough();\n\nexport type ExitSpecModeConfirmationDetails = z.infer<\n typeof ExitSpecModeConfirmationDetailsSchema\n>;\n\nexport const ProposeMissionConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.ProposeMission),\n proposal: z.string(),\n title: z.string().optional(),\n })\n .passthrough();\n\nexport type ProposeMissionConfirmationDetails = z.infer<\n typeof ProposeMissionConfirmationDetailsSchema\n>;\n\nexport const StartMissionRunConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.StartMissionRun),\n runningMissionCount: z.number(),\n runningMissionSessionIds: z.array(z.string()),\n })\n .passthrough();\n\nexport type StartMissionRunConfirmationDetails = z.infer<\n typeof StartMissionRunConfirmationDetailsSchema\n>;\n\nexport const ApplyPatchToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.ApplyPatch),\n filePath: z.string(),\n fileName: z.string(),\n patchContent: z.string(),\n oldContent: z.string().optional(),\n newContent: z.string().optional(),\n })\n .passthrough();\n\nexport type ApplyPatchToolConfirmationDetails = z.infer<\n typeof ApplyPatchToolConfirmationDetailsSchema\n>;\n\nexport const McpToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.McpTool),\n toolName: z.string(),\n impactLevel: z.string(),\n })\n .passthrough();\n\nexport type McpToolConfirmationDetails = z.infer<\n typeof McpToolConfirmationDetailsSchema\n>;\n\n/** Discriminated union over tool confirmation detail types. */\nexport const ToolConfirmationDetailsSchema = z.discriminatedUnion('type', [\n EditToolConfirmationDetailsSchema,\n ExecuteToolConfirmationDetailsSchema,\n CreateToolConfirmationDetailsSchema,\n AskUserConfirmationDetailsSchema,\n ExitSpecModeConfirmationDetailsSchema,\n ProposeMissionConfirmationDetailsSchema,\n StartMissionRunConfirmationDetailsSchema,\n ApplyPatchToolConfirmationDetailsSchema,\n McpToolConfirmationDetailsSchema,\n]);\n\nexport type ToolConfirmationDetails = z.infer<\n typeof ToolConfirmationDetailsSchema\n>;\n\n/** Tool confirmation information (toolUse + confirmationType + details). */\nexport const ToolConfirmationInfoSchema = z\n .object({\n toolUse: ToolUseSchema,\n confirmationType: z.nativeEnum(ToolConfirmationType),\n details: ToolConfirmationDetailsSchema,\n })\n .passthrough();\n\nexport type ToolConfirmationInfo = z.infer<typeof ToolConfirmationInfoSchema>;\n\n/** Parameters for droid.request_permission request. */\nexport const RequestPermissionRequestParamsSchema = z\n .object({\n toolUses: z.array(ToolConfirmationInfoSchema),\n options: z.array(ToolConfirmationListItemSchema),\n })\n .passthrough();\n\nexport type RequestPermissionRequestParams = z.infer<\n typeof RequestPermissionRequestParamsSchema\n>;\n\n/** Request for permission from the server (server → client). */\nexport const RequestPermissionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidClientMethod.REQUEST_PERMISSION),\n params: RequestPermissionRequestParamsSchema,\n});\n\nexport type RequestPermissionRequest = z.infer<\n typeof RequestPermissionRequestSchema\n>;\n\nexport type RequestPermissionSelection =\n | ToolConfirmationOutcome\n | `${ToolConfirmationOutcome}`;\n\nexport type RequestPermissionHandlerResult =\n | RequestPermissionSelection\n | {\n selectedOption: RequestPermissionSelection;\n comment?: string;\n };\n\n/** Result for droid.request_permission response. */\nexport const RequestPermissionResultSchema = z\n .object({\n selectedOption: z.nativeEnum(ToolConfirmationOutcome),\n comment: z.string().optional(),\n })\n .strict();\n\nexport type RequestPermissionResult = z.infer<\n typeof RequestPermissionResultSchema\n>;\n\n/** Response to droid.request_permission. */\nexport const RequestPermissionResponseSchema = createResponseSchema(\n RequestPermissionResultSchema\n);\nexport type RequestPermissionResponse = z.infer<\n typeof RequestPermissionResponseSchema\n>;\n\n/** Parameters for droid.ask_user request. */\nexport const AskUserRequestParamsSchema = z\n .object({\n toolCallId: z.string(),\n questions: z.array(AskUserQuestionSchema),\n })\n .passthrough();\n\nexport type AskUserRequestParams = z.infer<typeof AskUserRequestParamsSchema>;\n\n/** Ask user request from the server (server → client). */\nexport const AskUserRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidClientMethod.ASK_USER),\n params: AskUserRequestParamsSchema,\n});\n\nexport type AskUserRequest = z.infer<typeof AskUserRequestSchema>;\n\n/** A collected answer from the user. */\nexport const AskUserCollectedAnswerSchema = z\n .object({\n index: z.number(),\n question: z.string(),\n answer: z.string(),\n })\n .strict();\n\nexport type AskUserCollectedAnswer = z.infer<\n typeof AskUserCollectedAnswerSchema\n>;\n\n/** Result for droid.ask_user response. */\nexport const AskUserResultSchema = z\n .object({\n cancelled: z.boolean().optional(),\n answers: z.array(AskUserCollectedAnswerSchema),\n })\n .strict();\n\nexport type AskUserResult = z.infer<typeof AskUserResultSchema>;\n\n/** Response to droid.ask_user. */\nexport const AskUserResponseSchema = createResponseSchema(AskUserResultSchema);\nexport type AskUserResponse = z.infer<typeof AskUserResponseSchema>;\n\n/** Union over all server → client methods. */\nconst _CliRequestOrNotificationSchema = z.union([\n SessionNotificationSchema,\n RequestPermissionRequestSchema,\n AskUserRequestSchema,\n]);\n\n/* eslint-disable @typescript-eslint/consistent-type-assertions -- Zod workaround for deep type inference */\nexport const CliRequestOrNotificationSchema: z.ZodType<\n CliRequestOrNotification,\n z.ZodTypeDef,\n unknown\n> = _CliRequestOrNotificationSchema as z.ZodType<\n CliRequestOrNotification,\n z.ZodTypeDef,\n unknown\n>;\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n\nexport type CliRequestOrNotification =\n | SessionNotification\n | RequestPermissionRequest\n | AskUserRequest;\n","/** Re-exported for convenience. */\nexport {\n DEFAULT_REQUEST_TIMEOUT,\n SESSION_INIT_TIMEOUT,\n MCP_AUTH_TIMEOUT,\n} from './schemas/constants.js';\n\n/** Injected at build time via tsup's `define` option. */\nexport const SDK_VERSION: string = process.env.SDK_VERSION || 'unknown';\n\n/** Injected into every `initializeSession` call for backend tracking. */\nexport const SDK_TAG = {\n name: 'sdk' as const,\n metadata: { language: 'typescript' as const, version: SDK_VERSION },\n};\n","export class ConnectionError extends Error {\n readonly cwd: string;\n\n readonly execPath: string;\n\n constructor(message: string, options?: { cwd?: string; execPath?: string }) {\n super(message);\n this.name = 'ConnectionError';\n this.cwd = options?.cwd ?? '';\n this.execPath = options?.execPath ?? '';\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\n\nexport class ProtocolError extends Error {\n readonly code: number | undefined;\n\n readonly data: unknown;\n\n constructor(message: string, options?: { code?: number; data?: unknown }) {\n super(message);\n this.name = 'ProtocolError';\n this.code = options?.code;\n this.data = options?.data;\n Object.setPrototypeOf(this, ProtocolError.prototype);\n }\n}\n\nexport class SessionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'SessionError';\n Object.setPrototypeOf(this, SessionError.prototype);\n }\n}\n\nexport class SessionNotFoundError extends SessionError {\n readonly sessionId: string;\n\n constructor(sessionId: string) {\n super(`Session not found: ${sessionId}`);\n this.name = 'SessionNotFoundError';\n this.sessionId = sessionId;\n Object.setPrototypeOf(this, SessionNotFoundError.prototype);\n }\n}\n\nexport class TimeoutError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'TimeoutError';\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\nexport class ProcessExitError extends Error {\n readonly exitCode: number | null;\n\n readonly signal: string | null;\n\n constructor(\n message: string,\n options?: { exitCode?: number | null; signal?: string | null }\n ) {\n super(message);\n this.name = 'ProcessExitError';\n this.exitCode = options?.exitCode ?? null;\n this.signal = options?.signal ?? null;\n Object.setPrototypeOf(this, ProcessExitError.prototype);\n }\n}\n","import { type ChildProcess, spawn } from 'node:child_process';\nimport * as readline from 'node:readline';\n\nimport { ConnectionError, ProcessExitError } from './errors.js';\nimport type {\n DroidClientTransport,\n ErrorCallback,\n MessageCallback,\n ProcessTransportOptions,\n} from './types.js';\nimport { isRecord } from './utils.js';\n\nconst DEFAULT_EXEC_ARGS = [\n 'exec',\n '--input-format',\n 'stream-jsonrpc',\n '--output-format',\n 'stream-jsonrpc',\n];\n\nconst DEFAULT_GRACE_PERIOD_MS = 5_000;\n\nexport class ProcessTransport implements DroidClientTransport {\n private readonly execPath: string;\n private readonly execArgs: string[];\n private readonly cwd: string | undefined;\n private readonly env: Record<string, string> | undefined;\n private readonly gracePeriodMs: number;\n\n private childProcess: ChildProcess | null = null;\n private readlineInterface: readline.Interface | null = null;\n private messageHandler: MessageCallback | null = null;\n private errorHandler: ErrorCallback | null = null;\n\n /** Once set, all subsequent `send()` calls throw immediately. */\n private processError: Error | null = null;\n\n /** Serializes stdin writes to prevent interleaving. */\n private writeChain: Promise<void> = Promise.resolve();\n\n private _isConnected = false;\n private isClosing = false;\n\n constructor(options: ProcessTransportOptions = {}) {\n this.execPath = options.execPath ?? 'droid';\n this.execArgs = options.execArgs\n ? [...options.execArgs]\n : [...DEFAULT_EXEC_ARGS];\n this.cwd = options.cwd;\n this.env = options.env;\n this.gracePeriodMs =\n (options.gracePeriod ?? DEFAULT_GRACE_PERIOD_MS / 1_000) * 1_000;\n }\n\n get isConnected(): boolean {\n return this._isConnected;\n }\n\n async connect(): Promise<void> {\n if (this._isConnected) {\n throw new ConnectionError('Transport already connected', {\n execPath: this.execPath,\n });\n }\n\n this.processError = null;\n this.isClosing = false;\n this.writeChain = Promise.resolve();\n\n const mergedEnv = this.env ? { ...process.env, ...this.env } : undefined;\n\n try {\n this.childProcess = spawn(this.execPath, this.execArgs, {\n stdio: ['pipe', 'pipe', 'pipe'],\n cwd: this.cwd,\n env: mergedEnv,\n });\n } catch (err: unknown) {\n const message =\n err instanceof Error\n ? `Failed to start droid process: ${err.message}`\n : 'Failed to start droid process';\n throw new ConnectionError(message, {\n execPath: this.execPath,\n cwd: this.cwd,\n });\n }\n\n this._isConnected = true;\n this.setupHandlers();\n }\n\n send(message: Record<string, unknown>): void {\n if (this.processError) {\n throw this.processError;\n }\n if (!this._isConnected || !this.childProcess || !this.childProcess.stdin) {\n throw new ConnectionError('Transport not connected', {\n execPath: this.execPath,\n });\n }\n\n const line = JSON.stringify(message) + '\\n';\n\n // Chain writes to prevent interleaving on concurrent calls.\n const previousChain = this.writeChain;\n\n this.writeChain = (async () => {\n // Wait for the previous write to finish (ignore its error — it's\n // already been reported to the caller of the previous send()).\n await previousChain.catch(() => {});\n\n if (\n !this.childProcess ||\n !this.childProcess.stdin ||\n this.childProcess.killed ||\n this.isClosing\n ) {\n throw new ConnectionError('Process disconnected before write', {\n execPath: this.execPath,\n });\n }\n\n if (this.processError) {\n throw this.processError;\n }\n\n await new Promise<void>((resolve, reject) => {\n if (!this.childProcess || !this.childProcess.stdin) {\n reject(\n new ConnectionError('Process stdin unavailable', {\n execPath: this.execPath,\n })\n );\n return;\n }\n\n const stdin = this.childProcess.stdin;\n if ('writable' in stdin && !stdin.writable) {\n reject(\n new ConnectionError('Process stdin is not writable', {\n execPath: this.execPath,\n })\n );\n return;\n }\n\n stdin.write(line, (error) => {\n if (error) {\n const msg = error.message || String(error);\n if (msg.includes('EPIPE') || msg.includes('ECONNRESET')) {\n reject(\n new ConnectionError('Process stdin closed during write', {\n execPath: this.execPath,\n })\n );\n } else {\n reject(\n new ConnectionError(\n `Failed to write to process stdin: ${msg}`,\n { execPath: this.execPath }\n )\n );\n }\n } else {\n resolve();\n }\n });\n });\n })();\n }\n\n onMessage(callback: MessageCallback): void {\n this.messageHandler = callback;\n }\n\n onError(callback: ErrorCallback): void {\n this.errorHandler = callback;\n }\n\n async close(): Promise<void> {\n if (this.isClosing) {\n return;\n }\n\n this.isClosing = true;\n this._isConnected = false;\n\n const proc = this.childProcess;\n this.childProcess = null;\n\n if (this.readlineInterface) {\n this.readlineInterface.close();\n this.readlineInterface = null;\n }\n\n if (proc && proc.exitCode === null && !proc.killed) {\n await new Promise<void>((resolve) => {\n const timeout = setTimeout(() => {\n // Escalate to SIGKILL\n if (proc.exitCode === null && !proc.killed) {\n try {\n proc.kill('SIGKILL');\n } catch {\n // Process may already be gone\n }\n }\n }, this.gracePeriodMs);\n\n proc.once('exit', () => {\n clearTimeout(timeout);\n resolve();\n });\n\n // Close stdin first, then SIGTERM\n if (proc.stdin) {\n try {\n proc.stdin.end();\n } catch {\n // Ignore\n }\n }\n\n try {\n proc.kill('SIGTERM');\n } catch {\n // Process may already be gone — resolve immediately\n clearTimeout(timeout);\n resolve();\n }\n });\n }\n\n this.isClosing = false;\n }\n\n private setupHandlers(): void {\n const proc = this.childProcess;\n if (!proc || !proc.stdout) {\n return;\n }\n\n this.readlineInterface = readline.createInterface({\n input: proc.stdout,\n crlfDelay: Infinity,\n });\n\n this.readlineInterface.on('line', (line) => {\n const trimmed = line.trim();\n if (!trimmed) {\n return;\n }\n\n // Protocol messages are JSON objects, not JSON-RPC batch arrays.\n if (trimmed.startsWith('{')) {\n try {\n const parsed: unknown = JSON.parse(trimmed);\n if (this.messageHandler && isRecord(parsed)) {\n this.messageHandler(parsed);\n }\n } catch {\n // Malformed JSON — skip silently\n }\n }\n });\n\n proc.on('error', (error) => {\n this.processError = new ConnectionError(\n `Failed to start droid process: ${error.message}`,\n {\n execPath: this.execPath,\n cwd: this.cwd,\n }\n );\n this._isConnected = false;\n if (!this.isClosing && this.errorHandler) {\n this.errorHandler(this.processError);\n }\n });\n\n proc.on('exit', (code, signal) => {\n if (this.readlineInterface) {\n this.readlineInterface.close();\n this.readlineInterface = null;\n }\n\n this._isConnected = false;\n\n if (!this.isClosing) {\n const exitCode = code ?? null;\n const exitSignal = signal ?? null;\n\n let message: string;\n if (exitSignal) {\n message = `Droid process was killed (${exitSignal})`;\n } else if (exitCode !== null && exitCode !== 0) {\n message = `Droid process exited unexpectedly (exit code ${exitCode})`;\n } else if (exitCode === 0) {\n message = 'Droid process exited normally';\n } else {\n message = 'Droid process exited unexpectedly';\n }\n\n this.processError = new ProcessExitError(message, {\n exitCode,\n signal: exitSignal,\n });\n\n if (this.errorHandler) {\n this.errorHandler(this.processError);\n }\n }\n });\n }\n}\n","/** Shared low-level utilities with no other module dependencies. */\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { v4 as uuidv4 } from 'uuid';\n\nimport {\n ConnectionError,\n ProtocolError,\n SessionNotFoundError,\n TimeoutError,\n} from './errors.js';\nimport {\n DEFAULT_REQUEST_TIMEOUT,\n FACTORY_PROTOCOL_VERSION,\n JSONRPC_VERSION,\n LEGACY_FACTORY_API_VERSION,\n} from './schemas/constants.js';\nimport {\n DroidClientMethod,\n JsonRpcMessageType,\n JsonRpcErrorCode,\n ServerRequestHandlerType,\n ToolConfirmationOutcome,\n} from './schemas/enums.js';\nimport {\n AskUserRequestParamsSchema,\n AskUserResultSchema,\n RequestPermissionRequestParamsSchema,\n RequestPermissionResultSchema,\n SessionNotificationParamsSchema,\n} from './schemas/server.js';\nimport type {\n AskUserRequestParams,\n AskUserResult,\n RequestPermissionHandlerResult,\n RequestPermissionRequestParams,\n RequestPermissionResult,\n} from './schemas/server.js';\nimport { JsonRpcMessageSchema, type JsonRpcError } from './schemas/shared.js';\nimport type { DroidClientTransport } from './types.js';\n\nexport type PermissionHandler = (\n params: RequestPermissionRequestParams\n) => RequestPermissionHandlerResult | Promise<RequestPermissionHandlerResult>;\n\nexport type AskUserHandler = (\n params: AskUserRequestParams\n) => AskUserResult | Promise<AskUserResult>;\n\nexport type NotificationCallback = (\n notification: Record<string, unknown>\n) => void;\n\nexport interface NotificationFilter {\n type?: string;\n}\n\ninterface PendingRequest {\n readonly method: string;\n readonly requestId: string;\n readonly params: Record<string, unknown>;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: Error) => void;\n readonly timer: ReturnType<typeof setTimeout>;\n}\n\nexport interface NotificationListener {\n readonly callback: NotificationCallback;\n readonly filter?: NotificationFilter;\n}\n\n/** Dispatch a notification to matching listeners, swallowing listener errors. */\nexport function dispatchNotification(\n notification: Record<string, unknown>,\n listeners: Iterable<NotificationListener>\n): void {\n let notificationType: string | undefined;\n const parsed = SessionNotificationParamsSchema.safeParse(\n notification['params']\n );\n if (parsed.success) {\n notificationType = parsed.data.notification.type;\n }\n\n for (const listener of listeners) {\n if (\n listener.filter?.type != null &&\n listener.filter.type !== notificationType\n ) {\n continue;\n }\n\n try {\n listener.callback(notification);\n } catch {\n // Notification listener raised — don't crash the dispatch loop\n }\n }\n}\n\n/** Default method map for exec-mode (droid.*) server-to-client requests. */\nconst DEFAULT_SERVER_REQUEST_METHOD_MAP: Record<\n string,\n ServerRequestHandlerType\n> = {\n [DroidClientMethod.REQUEST_PERMISSION]: ServerRequestHandlerType.Permission,\n [DroidClientMethod.ASK_USER]: ServerRequestHandlerType.AskUser,\n};\n\nexport class ProtocolEngine {\n private readonly _transport: DroidClientTransport;\n private readonly _defaultTimeout: number;\n private readonly _serverRequestMethodMap: Record<\n string,\n ServerRequestHandlerType\n >;\n\n private readonly _pendingRequests = new Map<string, PendingRequest>();\n private readonly _notificationListeners = new Set<NotificationListener>();\n private _permissionHandler: PermissionHandler | null = null;\n private _askUserHandler: AskUserHandler | null = null;\n private _transportError: Error | null = null;\n private _closed = false;\n\n constructor(options: {\n transport: DroidClientTransport;\n defaultTimeout?: number;\n /**\n * Maps incoming server-to-client request method strings to handler types.\n * Defaults to `{ 'droid.request_permission': 'permission', 'droid.ask_user': 'askUser' }`.\n * Override for daemon mode: `{ 'daemon.request_permission': 'permission', ... }`.\n */\n serverRequestMethodMap?: Record<string, ServerRequestHandlerType>;\n }) {\n this._transport = options.transport;\n this._defaultTimeout = options.defaultTimeout ?? DEFAULT_REQUEST_TIMEOUT;\n this._serverRequestMethodMap =\n options.serverRequestMethodMap ?? DEFAULT_SERVER_REQUEST_METHOD_MAP;\n\n this._transport.onMessage((message: Record<string, unknown>) => {\n this._handleMessage(message);\n });\n this._transport.onError((error: Error) => {\n this._handleTransportError(error);\n });\n }\n\n async sendRequest(\n method: string,\n params: Record<string, unknown>,\n timeout?: number\n ): Promise<unknown> {\n if (this._closed) {\n throw new ConnectionError('Protocol engine is closed');\n }\n\n if (this._transportError !== null) {\n throw new ConnectionError(\n `Transport error: ${this._transportError.message}`\n );\n }\n\n const effectiveTimeout = timeout ?? this._defaultTimeout;\n const requestId = uuidv4();\n\n const envelope = {\n jsonrpc: JSONRPC_VERSION,\n factoryApiVersion: LEGACY_FACTORY_API_VERSION,\n factoryProtocolVersion: FACTORY_PROTOCOL_VERSION,\n type: JsonRpcMessageType.Request,\n id: requestId,\n method,\n params,\n };\n\n // Create a promise that will be resolved when we get a matching response\n return new Promise<unknown>((resolve, reject) => {\n const timer = setTimeout(() => {\n this._pendingRequests.delete(requestId);\n reject(\n new TimeoutError(\n `Request ${method} timed out after ${effectiveTimeout}ms`\n )\n );\n }, effectiveTimeout);\n\n const pending: PendingRequest = {\n method,\n requestId,\n params,\n resolve,\n reject,\n timer,\n };\n this._pendingRequests.set(requestId, pending);\n\n try {\n this._transport.send(envelope);\n } catch (sendError) {\n clearTimeout(timer);\n this._pendingRequests.delete(requestId);\n if (sendError instanceof Error) {\n reject(\n new ConnectionError(`Failed to send request: ${sendError.message}`)\n );\n } else {\n reject(new ConnectionError('Failed to send request'));\n }\n }\n });\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n const listener: NotificationListener = { callback, filter };\n this._notificationListeners.add(listener);\n\n let unsubscribed = false;\n return () => {\n if (!unsubscribed) {\n unsubscribed = true;\n this._notificationListeners.delete(listener);\n }\n };\n }\n\n setPermissionHandler(handler: PermissionHandler): void {\n this._permissionHandler = handler;\n }\n\n clearPermissionHandler(): void {\n this._permissionHandler = null;\n }\n\n /**\n * Register a handler for server→client ask-user requests.\n *\n * The handler receives the request params and should return\n * a result object with `cancelled` and `answers` keys.\n *\n * Replaces any previously registered handler.\n */\n setAskUserHandler(handler: AskUserHandler): void {\n this._askUserHandler = handler;\n }\n\n clearAskUserHandler(): void {\n this._askUserHandler = null;\n }\n\n get isHealthy(): boolean {\n return !this._closed && this._transportError === null;\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n const error = new ConnectionError(\n 'Protocol engine closed: pending requests cancelled'\n );\n this._rejectAllPending(error);\n\n this._permissionHandler = null;\n this._askUserHandler = null;\n this._notificationListeners.clear();\n\n await this._transport.close();\n }\n\n private _handleMessage(raw: Record<string, unknown>): void {\n const parsed = JsonRpcMessageSchema.safeParse(raw);\n\n if (!parsed.success) {\n // Malformed message — silently ignore\n return;\n }\n\n const msg = parsed.data;\n switch (msg.type) {\n case JsonRpcMessageType.Response:\n this._handleResponse(msg.id, msg.result, msg.error);\n break;\n case JsonRpcMessageType.Notification:\n this._handleNotification(msg);\n break;\n case JsonRpcMessageType.Request:\n void this._handleServerRequest(msg.method, msg.id, msg.params);\n break;\n }\n }\n\n private _handleResponse(\n responseId: string | null,\n result: unknown,\n error: JsonRpcError | undefined\n ): void {\n if (responseId == null) {\n return;\n }\n\n const pending = this._pendingRequests.get(responseId);\n\n if (pending == null) {\n return;\n }\n\n this._pendingRequests.delete(responseId);\n clearTimeout(pending.timer);\n\n if (error != null) {\n if (error.code === JsonRpcErrorCode.ENTITY_NOT_FOUND) {\n const sessionId = String(\n pending.params['sessionId'] ?? pending.requestId\n );\n pending.reject(new SessionNotFoundError(sessionId));\n return;\n }\n\n pending.reject(\n new ProtocolError(error.message, { code: error.code, data: error.data })\n );\n return;\n }\n\n pending.resolve(result);\n }\n\n private _handleNotification(notification: Record<string, unknown>): void {\n dispatchNotification(notification, this._notificationListeners);\n }\n\n private async _handleServerRequest(\n method: string,\n requestId: string,\n params: unknown\n ): Promise<void> {\n const handlerType = this._serverRequestMethodMap[method];\n if (handlerType === ServerRequestHandlerType.Permission) {\n await this._handlePermissionRequest(requestId, params);\n } else if (handlerType === ServerRequestHandlerType.AskUser) {\n await this._handleAskUserRequest(requestId, params);\n }\n }\n\n private async _handlePermissionRequest(\n requestId: string,\n params: unknown\n ): Promise<void> {\n const handler = this._permissionHandler;\n\n if (handler == null) {\n // Default: Cancel\n this._sendResponse(\n requestId,\n RequestPermissionResultSchema.parse({\n selectedOption: ToolConfirmationOutcome.Cancel,\n })\n );\n return;\n }\n\n try {\n const parsedParams = RequestPermissionRequestParamsSchema.parse(params);\n const selection = await Promise.resolve(handler(parsedParams));\n const result =\n typeof selection === 'string'\n ? { selectedOption: selection }\n : selection;\n this._sendResponse(\n requestId,\n RequestPermissionResultSchema.parse(result)\n );\n } catch (exc) {\n const errorMessage = exc instanceof Error ? exc.message : String(exc);\n this._sendErrorResponse(\n requestId,\n JsonRpcErrorCode.INTERNAL_ERROR,\n 'Failed to handle permission request',\n errorMessage\n );\n }\n }\n\n private async _handleAskUserRequest(\n requestId: string,\n params: unknown\n ): Promise<void> {\n const handler = this._askUserHandler;\n\n if (handler == null) {\n // Default: cancelled=true\n this._sendResponse(\n requestId,\n AskUserResultSchema.parse({ cancelled: true, answers: [] })\n );\n return;\n }\n\n try {\n const parsedParams = AskUserRequestParamsSchema.parse(params);\n const result = await Promise.resolve(handler(parsedParams));\n this._sendResponse(requestId, AskUserResultSchema.parse(result));\n } catch (exc) {\n const errorMessage = exc instanceof Error ? exc.message : String(exc);\n this._sendErrorResponse(\n requestId,\n JsonRpcErrorCode.INTERNAL_ERROR,\n 'Failed to handle ask-user request',\n errorMessage\n );\n }\n }\n\n /**\n * Handle a transport error.\n * Sets the sticky transport error and rejects all pending requests.\n * The original error is preserved as `cause` on the ConnectionError.\n */\n private _handleTransportError(error: Error): void {\n this._transportError = error;\n const connectionError = new ConnectionError(\n `Transport error: ${error.message}`\n );\n connectionError.cause = error;\n this._rejectAllPending(connectionError);\n }\n\n private _sendResponse(\n requestId: string,\n result: RequestPermissionResult | AskUserResult\n ): void {\n const response: Record<string, unknown> = {\n jsonrpc: JSONRPC_VERSION,\n factoryApiVersion: LEGACY_FACTORY_API_VERSION,\n factoryProtocolVersion: FACTORY_PROTOCOL_VERSION,\n type: JsonRpcMessageType.Response,\n id: requestId,\n result,\n };\n this._sendBestEffort(response);\n }\n\n private _sendErrorResponse(\n requestId: string,\n code: number,\n message: string,\n data?: unknown\n ): void {\n const errorObj: Record<string, unknown> = { code, message };\n if (data !== undefined) {\n errorObj['data'] = data;\n }\n\n const response: Record<string, unknown> = {\n jsonrpc: JSONRPC_VERSION,\n factoryApiVersion: LEGACY_FACTORY_API_VERSION,\n factoryProtocolVersion: FACTORY_PROTOCOL_VERSION,\n type: JsonRpcMessageType.Response,\n id: requestId,\n error: errorObj,\n };\n this._sendBestEffort(response);\n }\n\n private _sendBestEffort(message: Record<string, unknown>): void {\n try {\n this._transport.send(message);\n } catch {\n // The transport is already failing; dropping the reply is safer than\n // throwing from a server→client callback path.\n }\n }\n\n private _rejectAllPending(error: Error): void {\n const pending = new Map(this._pendingRequests);\n this._pendingRequests.clear();\n\n for (const req of pending.values()) {\n clearTimeout(req.timer);\n req.reject(error);\n }\n }\n}\n","// Barrel for the protocol source-of-truth modules.\n// These files mirror the private factory-mono-alpha protocol exactly and are\n// intentionally self-contained (zod-only). NOT yet wired into the public\n// package API (src/index.ts).\n\nexport * from './constants.js';\nexport * from './enums.js';\nexport * from './json-rpc.js';\nexport * from './host.js';\nexport * from './session.js';\nexport * from './session-source.js';\nexport * from './messages.js';\nexport * from './model-settings.js';\nexport * from './settings.js';\nexport * from './general-settings.js';\nexport * from './loop.js';\nexport * from './selectable-list-item.js';\nexport * from './custom-models.js';\nexport * from './mcp.js';\nexport * from './mission-decomposition.js';\nexport * from './cli.js';\nexport * from './client.js';\n\n// TIER-4d aux leaves\nexport * from './automations-enums.js';\nexport * from './automations.js';\nexport * from './session-summary.js';\nexport * from './session-tools.js';\nexport * from './session-settings-schema.js';\nexport * from './session-settings-types.js';\nexport * from './policy.js';\nexport * from './tools-enums.js';\nexport * from './tools.js';\nexport * from './updater.js';\n\n// `./usage.js` defines its own `TokenUsageSchema` whose shape (snake-cased\n// integer fields) differs from the one in `./session.js`. Both upstream\n// modules ship the same symbol name (`TokenUsageSchema`) under different\n// folder namespaces, so we mirror that here by re-exporting `./usage.js`\n// under a namespace alias rather than as a top-level wildcard.\nexport * as usage from './usage.js';\n\nexport * as daemon from './daemon/index.js';\n","// Source-of-truth mirror of factory-mono-alpha protocol constants.\n// Faithful copy of:\n// packages/common/src/droid/schemas/constants.ts\n// packages/common/src/droid/constants.ts (LOOP_INTERVAL_POLICY)\n// Keep shapes/values identical to the private monorepo to avoid protocol drift.\n\n/**\n * Legacy envelope field for old JSON-RPC peers - `factoryApiVersion` must be set to this value.\n *\n * @deprecated Do not change this value; use `factoryProtocolVersion` for runtime compatibility.\n */\nexport const LEGACY_FACTORY_API_VERSION = '1.0.0' as const;\n\nexport const FACTORY_PROTOCOL_VERSION = '1.62.0' as const;\n\nexport const JSONRPC_VERSION = '2.0' as const;\n\n/**\n * Sentinel ModelID value for the Factory routing model. Faithful copy of\n * packages/common/src/llm/constants.ts.\n */\nexport const FACTORY_ROUTER_MODEL_ID = 'factory-router' as const;\n\n/**\n * Sentinel value used by CompactionModelSchema to mean \"use the session's\n * current model for compaction\". Faithful copy of\n * packages/common/src/settings/constants.ts.\n */\nexport const CURRENT_COMPACTION_MODEL = 'current-model';\n\n// Faithful copy of packages/common/src/settings/constants.ts router-rule\n// guardrails. Used by ManagedSettingsBaseSchema and FactoryRouterRuleSchema.\n\n/** Sized comparably to a trimmed user message in the classifier context budget. */\nexport const FACTORY_ROUTER_GUIDANCE_MAX_LENGTH = 2000;\nexport const FACTORY_ROUTER_RULES_MAX_COUNT = 20;\nexport const FACTORY_ROUTER_RULE_WHEN_MAX_LENGTH = 300;\nexport const FACTORY_ROUTER_RULE_GUIDANCE_MAX_LENGTH = 600;\n\nconst seconds = (value: number) => value * 1_000;\nconst minutes = (value: number) => seconds(value * 60);\nconst hours = (value: number) => minutes(value * 60);\n\nexport const LOOP_INTERVAL_POLICY = {\n minMs: seconds(5),\n maxMs: hours(24),\n displayRange: '5s–24h',\n examples: '5s, 5m, 30m, 2h',\n} as const;\n","// Source-of-truth mirror of factory-mono-alpha protocol enums (leaf enums only).\n// Faithful copies of the private monorepo definitions from:\n// packages/common/src/shared/enums.ts\n// packages/common/src/droid/enums.ts\n// packages/common/src/sessionV2/messages/enums.ts\n// packages/common/src/session/sources/enums.ts\n// packages/common/src/llm/enums.ts (leaf subset)\n// packages/common/src/settings/enums.ts (leaf subset)\n// Keep values byte-identical to the private monorepo to avoid protocol drift.\n\n// ---------------------------------------------------------------------------\n// shared/enums.ts\n// ---------------------------------------------------------------------------\n\nexport enum JsonRpcMessageType {\n Request = 'request',\n Response = 'response',\n Notification = 'notification',\n}\n\n/**\n * Standard JSON-RPC 2.0 error codes\n * @see https://www.jsonrpc.org/specification#error_object\n */\nexport enum JsonRpcErrorCode {\n PARSE_ERROR = -32700,\n INVALID_REQUEST = -32600,\n METHOD_NOT_FOUND = -32601,\n INVALID_PARAMS = -32602,\n INTERNAL_ERROR = -32603,\n AUTHENTICATION_ERROR = -32001,\n ENTITY_NOT_FOUND = -32004,\n /** Session's CLI process has disconnected or died */\n SESSION_DISCONNECTED = -32005,\n}\n\n/**\n * The interaction mode determines how Droid operates.\n * - Auto: Droid can execute actions based on autonomy level\n * - Spec: Droid is in planning/research mode only (read-only operations)\n * - Mission: Droid orchestrates missions with read-only tools and orchestrator controls\n */\nexport enum DroidInteractionMode {\n Auto = 'auto',\n Spec = 'spec',\n /** @deprecated Use Mission instead. Kept for protocol compatibility. */\n AGI = 'agi',\n Mission = 'mission',\n}\n\n/**\n * Supported operating system platforms\n */\nexport enum Platform {\n Darwin = 'darwin',\n Windows = 'win32',\n Linux = 'linux',\n}\n\n/**\n * Autonomy level determines what actions Droid can perform without user confirmation.\n * - Off: User controls all actions (confirmation required for everything)\n * - Low: Allow file edits and read-only commands\n * - Medium: Allow reversible commands\n * - High: Allow all commands without prompts\n */\nexport enum AutonomyLevel {\n Off = 'off',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n}\n\n/**\n * Combined autonomy mode for backward compatibility.\n * This is derived from DroidInteractionMode + AutonomyLevel:\n * - Normal = Auto + Off\n * - Spec = Spec mode (autonomy level ignored)\n * - AutoLow = Auto + Low\n * - AutoMedium = Auto + Medium\n * - AutoHigh = Auto + High\n * @deprecated Use DroidInteractionMode + AutonomyLevel instead\n */\nexport enum AutonomyMode {\n Normal = 'normal',\n Spec = 'spec',\n AutoLow = 'auto-low',\n AutoMedium = 'auto-medium',\n AutoHigh = 'auto-high',\n}\n\n// ---------------------------------------------------------------------------\n// droid/enums.ts (leaf — zero imports)\n// ---------------------------------------------------------------------------\n\n// Tool confirmation outcome options (possible user responses to permission requests)\nexport enum ToolConfirmationOutcome {\n ProceedOnce = 'proceed_once',\n ProceedAlways = 'proceed_always',\n /** Like ProceedAlways, but persists the exact file path instead of its parent directory. */\n ProceedAlwaysForExactPath = 'proceed_always_file',\n ProceedAutoRun = 'proceed_auto_run',\n ProceedAutoRunLow = 'proceed_auto_run_low',\n ProceedAutoRunMedium = 'proceed_auto_run_medium',\n ProceedAutoRunHigh = 'proceed_auto_run_high',\n ProceedNewSession = 'proceed_new_session',\n ProceedNewSessionLow = 'proceed_new_session_low',\n ProceedNewSessionMedium = 'proceed_new_session_medium',\n ProceedNewSessionHigh = 'proceed_new_session_high',\n ProceedEdit = 'proceed_edit',\n /** MCP: Persist approval for specific tool(s) across sessions */\n ProceedAlwaysTools = 'proceed_always_tools',\n /** MCP: Persist approval for all tools from a server across sessions */\n ProceedAlwaysServer = 'proceed_always_server',\n Cancel = 'cancel',\n}\n\n// Tool confirmation type (which tool is requesting permission)\nexport enum ToolConfirmationType {\n Edit = 'edit',\n Execute = 'exec',\n Create = 'create',\n AskUser = 'ask_user',\n ExitSpecMode = 'exit_spec_mode',\n ProposeMission = 'propose_mission',\n StartMissionRun = 'start_mission_run',\n ApplyPatch = 'apply_patch',\n McpTool = 'mcp_tool',\n SandboxViolation = 'sandbox_violation',\n}\n\n// Sandbox violation type (filesystem read, filesystem write, or network)\nexport enum SandboxViolationType {\n FilesystemRead = 'filesystem-read',\n FilesystemWrite = 'filesystem-write',\n Network = 'network',\n}\n\n// Sandbox violation reason (why the access was denied)\nexport enum SandboxViolationReason {\n DenyList = 'deny-list',\n NotAllowed = 'not-allowed',\n}\n\n// Sandbox operation type (the type of operation that was blocked)\nexport enum SandboxOperationType {\n Read = 'read',\n Write = 'write',\n Network = 'network',\n}\n\n// Droid server methods (client to server communication)\nexport enum DroidServerMethod {\n INITIALIZE_SESSION = 'droid.initialize_session',\n LOAD_SESSION = 'droid.load_session',\n ADD_USER_MESSAGE = 'droid.add_user_message',\n RESOLVE_QUEUED_USER_MESSAGE = 'droid.resolve_queued_user_message',\n CLOSE_SESSION = 'droid.close_session',\n INTERRUPT_SESSION = 'droid.interrupt_session',\n KILL_WORKER_SESSION = 'droid.kill_worker_session',\n UPDATE_SESSION_SETTINGS = 'droid.update_session_settings',\n // MCP server management\n TOGGLE_MCP_SERVER = 'droid.toggle_mcp_server',\n AUTHENTICATE_MCP_SERVER = 'droid.authenticate_mcp_server',\n CANCEL_MCP_AUTH = 'droid.cancel_mcp_auth',\n CLEAR_MCP_AUTH = 'droid.clear_mcp_auth',\n ADD_MCP_SERVER = 'droid.add_mcp_server',\n REMOVE_MCP_SERVER = 'droid.remove_mcp_server',\n LIST_MCP_REGISTRY = 'droid.list_mcp_registry',\n LIST_MCP_TOOLS = 'droid.list_mcp_tools',\n LIST_TOOLS = 'droid.list_tools',\n LIST_MCP_SERVERS = 'droid.list_mcp_servers',\n TOGGLE_MCP_TOOL = 'droid.toggle_mcp_tool',\n SUBMIT_MCP_AUTH_CODE = 'droid.submit_mcp_auth_code',\n // Skills\n LIST_SKILLS = 'droid.list_skills',\n // Bug reports\n SUBMIT_BUG_REPORT = 'droid.submit_bug_report',\n // Rewind\n GET_REWIND_INFO = 'droid.get_rewind_info',\n EXECUTE_REWIND = 'droid.execute_rewind',\n // Compaction\n COMPACT_SESSION = 'droid.compact_session',\n // Fork\n FORK_SESSION = 'droid.fork_session',\n // Rename\n RENAME_SESSION = 'droid.rename_session',\n // Context stats\n GET_CONTEXT_STATS = 'droid.get_context_stats',\n // Detailed context breakdown for the /context modal\n GET_CONTEXT_BREAKDOWN = 'droid.get_context_breakdown',\n // Cache warmup\n WARMUP_CACHE = 'droid.warmup_cache',\n}\n\nexport enum QueuePlacement {\n EndOfTurn = 'end_of_turn',\n EndOfLoop = 'end_of_loop',\n}\n\nexport enum ResolveQueuedUserMessageAction {\n UpdateQueue = 'update_queue',\n Delete = 'delete',\n}\n\n// Droid client methods (server to client communication)\nexport enum DroidClientMethod {\n SESSION_NOTIFICATION = 'droid.session_notification',\n REQUEST_PERMISSION = 'droid.request_permission',\n ASK_USER = 'droid.ask_user',\n}\n\n// Session notification types\nexport enum SessionNotificationType {\n TOOL_RESULT = 'tool_result',\n TOOL_PROGRESS_UPDATE = 'tool_progress_update',\n CREATE_MESSAGE = 'create_message',\n ERROR = 'error',\n DROID_WORKING_STATE_CHANGED = 'droid_working_state_changed',\n SESSION_COMPACTED = 'session_compacted',\n LOOP_STATE_CHANGED = 'loop_state_changed',\n PERMISSION_RESOLVED = 'permission_resolved',\n SETTINGS_UPDATED = 'settings_updated',\n SESSION_TITLE_UPDATED = 'session_title_updated',\n MCP_STATUS_CHANGED = 'mcp_status_changed',\n ASSISTANT_TEXT_DELTA = 'assistant_text_delta',\n ASSISTANT_TEXT_COMPLETE = 'assistant_text_complete',\n STRUCTURED_OUTPUT = 'structured_output',\n THINKING_TEXT_DELTA = 'thinking_text_delta',\n THINKING_TEXT_COMPLETE = 'thinking_text_complete',\n SESSION_TOKEN_USAGE_CHANGED = 'session_token_usage_changed',\n MISSION_STATE_CHANGED = 'mission_state_changed',\n MISSION_FEATURES_CHANGED = 'mission_features_changed',\n MISSION_PROGRESS_ENTRY = 'mission_progress_entry',\n MISSION_HEARTBEAT = 'mission_heartbeat',\n MISSION_WORKER_STARTED = 'mission_worker_started',\n MISSION_WORKER_COMPLETED = 'mission_worker_completed',\n MCP_AUTH_REQUIRED = 'mcp_auth_required',\n MCP_AUTH_COMPLETED = 'mcp_auth_completed',\n HOOK_EXECUTION_STARTED = 'hook_execution_started',\n HOOK_EXECUTION_COMPLETED = 'hook_execution_completed',\n TOOL_CALL = 'tool_call',\n QUEUED_MESSAGES_DISCARDED = 'queued_messages_discarded',\n /**\n * Internal daemon keep-alive signal emitted while a long-running tool\n * (e.g. Execute) is actively executing but not streaming output. Used by\n * the daemon to refresh session inactivity timeouts. Not forwarded to\n * external clients.\n */\n TOOL_EXECUTION_HEARTBEAT = 'tool_execution_heartbeat',\n}\n\nexport enum StructuredOutputErrorCode {\n MissingStructuredOutput = 'missing_structured_output',\n InvalidStructuredOutput = 'invalid_structured_output',\n InvalidSchema = 'invalid_schema',\n SchemaValidationFailed = 'schema_validation_failed',\n}\n\nexport enum McpAuthOutcome {\n Success = 'success',\n Cancelled = 'cancelled',\n Failed = 'failed',\n}\n\n// MCP server connection status\nexport enum McpServerStatus {\n Connecting = 'connecting',\n Connected = 'connected',\n Disconnected = 'disconnected',\n Failed = 'failed',\n Disabled = 'disabled',\n}\n\n// MCP server transport type\nexport enum McpServerType {\n Stdio = 'stdio',\n Http = 'http',\n Sse = 'sse',\n}\n\n// Overall MCP initialization status\nexport enum McpStatus {\n NotInitialized = 'not-initialized',\n Initializing = 'initializing',\n Ready = 'ready',\n NoServers = 'no-servers',\n Failed = 'failed',\n}\n\n// Error types for error notifications\nexport enum DroidErrorType {\n CONNECTION_ERROR = 'ConnectionError',\n PROTOCOL_ERROR = 'ProtocolError',\n SESSION_ERROR = 'SessionError',\n TIMEOUT_ERROR = 'TimeoutError',\n DROID_CLIENT_ERROR = 'DroidClientError',\n PROCESS_EXIT_ERROR = 'ProcessExitError',\n ERROR = 'Error',\n}\n\n// Droid working state (represents what the agent is currently doing)\nexport enum DroidWorkingState {\n Idle = 'idle',\n Thinking = 'thinking',\n StreamingAssistantMessage = 'streaming_assistant_message',\n WaitingForToolConfirmation = 'waiting_for_tool_confirmation',\n ExecutingTool = 'executing_tool',\n CompactingConversation = 'compacting_conversation',\n}\n\nexport enum DroidLoopStatus {\n Waiting = 'waiting',\n Running = 'running',\n Due = 'due',\n Stopped = 'stopped',\n Error = 'error',\n}\n\nexport enum DroidLoopStopReason {\n UserStopped = 'user_stopped',\n ManualMessage = 'manual_message',\n Interrupted = 'interrupted',\n SessionClosed = 'session_closed',\n ProcessExited = 'process_exited',\n Error = 'error',\n}\n\nexport enum ContextStatsAccuracy {\n Exact = 'exact',\n Estimated = 'estimated',\n}\n\nexport enum ToolExecutionRenderStatus {\n Streaming = 'streaming',\n Pending = 'pending',\n Executing = 'executing',\n Completed = 'completed',\n Error = 'error',\n}\n\n// Session type for mission decomposition (orchestrator manages workers)\nexport enum DecompSessionType {\n Orchestrator = 'orchestrator',\n Worker = 'worker',\n}\n\n/** Mission state enum (used by orchestrator mission runner). */\nexport enum MissionState {\n /** Idle. Waiting for user to send a message. */\n AwaitingInput = 'awaiting_input',\n /** Orchestrator is creating mission artifacts after user accepted proposal. */\n Initializing = 'initializing',\n /** Runner is active, spawning/monitoring workers. User input disabled. */\n Running = 'running',\n /** User paused execution. Resumable. */\n Paused = 'paused',\n /** Worker returned control or failed. Orchestrator acts next. */\n OrchestratorTurn = 'orchestrator_turn',\n /** All features done. Terminal state. */\n Completed = 'completed',\n}\n\n/** Feature status enum (mirrors orchestrator feature lifecycle). */\nexport enum FeatureStatus {\n Pending = 'pending',\n InProgress = 'in_progress',\n Completed = 'completed',\n Cancelled = 'cancelled',\n}\n\n/** Success state for feature completion. */\nexport enum FeatureSuccessState {\n Success = 'success',\n Partial = 'partial',\n Failure = 'failure',\n}\n\n/** Issue severity for discovered issues. */\nexport enum IssueSeverity {\n Blocking = 'blocking',\n NonBlocking = 'non_blocking',\n Suggestion = 'suggestion',\n}\n\n/** Dismissal item type. */\nexport enum DismissalType {\n DiscoveredIssue = 'discovered_issue',\n CriticalContext = 'critical_context',\n IncompleteWork = 'incomplete_work',\n}\n\n/** Progress log entry type. */\nexport enum ProgressLogEntryType {\n MissionAccepted = 'mission_accepted',\n MissionPaused = 'mission_paused',\n MissionResumed = 'mission_resumed',\n MissionRunStarted = 'mission_run_started',\n WorkerStarted = 'worker_started',\n WorkerSelectedFeature = 'worker_selected_feature',\n WorkerCompleted = 'worker_completed',\n WorkerFailed = 'worker_failed',\n WorkerPaused = 'worker_paused',\n HandoffItemsDismissed = 'handoff_items_dismissed',\n MilestoneValidationTriggered = 'milestone_validation_triggered',\n}\n\n/**\n * Discriminator on `WorkerFailedEntry.failureReason` so the MissionRunner can\n * distinguish failure modes that should auto-pause the mission (e.g. an\n * unrecoverable 402) from generic worker exits that should be requeued and\n * retried by the orchestrator.\n */\nexport enum WorkerFailureReason {\n /**\n * Worker LLM call returned 402 (Payment Required) and the in-process\n * Droid Core fallback path was ineligible (overage preference != droidCore,\n * already on Core, or no swap-eligible slot). The mission must auto-pause.\n */\n UnrecoverableUsage402 = 'unrecoverable_usage_402',\n}\n\n/**\n * Discriminator on `MissionPausedEntry.pauseReason`. Default (`undefined`)\n * means a user- or runner-initiated pause; structured values mark\n * automatically-triggered pauses so the UI/orchestrator can react.\n */\nexport enum MissionPauseReason {\n /** Worker hit an unrecoverable 402 — usage limit reached. */\n UnrecoverableUsage402 = 'unrecoverable_usage_402',\n}\n\n/**\n * Color-key discriminators for the `/context` window usage breakdown. Each key\n * maps to a CSS variable in the rendering surface (CLI chalk colors or web\n * design tokens), so adding a new category requires updating both ends.\n */\nexport enum ContextCategoryColorKey {\n SystemPrompt = 'systemPrompt',\n SystemTools = 'systemTools',\n McpTools = 'mcpTools',\n UserInfo = 'userInfo',\n AgentsMd = 'agentsMd',\n CustomAgents = 'customAgents',\n Skills = 'skills',\n Messages = 'messages',\n}\n\n// ---------------------------------------------------------------------------\n// sessionV2/messages/enums.ts\n// ---------------------------------------------------------------------------\n\nexport enum MessageVisibility {\n Both = 'both',\n LLMOnly = 'llm_only',\n UserOnly = 'user_only',\n}\n\nexport enum MessageRoleNoSystem {\n User = 'user',\n Assistant = 'assistant',\n Tool = 'tool',\n}\n\nexport enum MessageRole {\n User = 'user',\n Assistant = 'assistant',\n Tool = 'tool',\n System = 'system',\n}\n\nexport enum MessageContentBlockType {\n Text = 'text',\n Image = 'image',\n Thinking = 'thinking',\n RedactedThinking = 'redacted_thinking',\n ToolUse = 'tool_use',\n ToolResult = 'tool_result',\n Document = 'document',\n}\n\nexport enum DocumentSourceType {\n Base64 = 'base64',\n Text = 'text',\n}\n\n// ---------------------------------------------------------------------------\n// session/sources/enums.ts\n// ---------------------------------------------------------------------------\n\nexport enum SessionPlatform {\n Slack = 'slack',\n Web = 'web',\n Api = 'api',\n SessionsApi = 'sessions_api',\n Linear = 'linear',\n ReadinessRemediation = 'readiness-remediation',\n ReadinessEvaluation = 'readiness-evaluation',\n Automation = 'automation',\n WikiGeneration = 'wiki-generation',\n WikiCISetup = 'wiki-ci-setup',\n}\n\nexport enum SessionOrigin {\n Web = 'web',\n Desktop = 'desktop',\n CliTui = 'cli_tui',\n CliExec = 'cli_exec',\n CliAcp = 'cli_acp',\n Slack = 'slack',\n Linear = 'linear',\n SessionsApi = 'sessions_api',\n Api = 'api',\n Automation = 'automation',\n ReadinessRemediation = 'readiness-remediation',\n ReadinessEvaluation = 'readiness-evaluation',\n WikiGeneration = 'wiki-generation',\n WikiCiSetup = 'wiki-ci-setup',\n}\n\n// ---------------------------------------------------------------------------\n// llm/enums.ts (leaf subset)\n// ---------------------------------------------------------------------------\n\n/**\n * ModelID enum defines unique identifiers for language models.\n *\n * These IDs are independent of provider (Anthropic, OpenAI, etc.) and reasoning effort (Low, Medium, High).\n * They represent the core model identity that remains consistent regardless of how the model is accessed.\n */\nexport enum ModelID {\n // Claude models\n CLAUDE_SONNET_3_5 = 'claude-3-5-sonnet-20241022',\n CLAUDE_SONNET_3_7 = 'claude-3-7-sonnet-20250219',\n CLAUDE_SONNET_4 = 'claude-sonnet-4-20250514',\n CLAUDE_OPUS_4 = 'claude-opus-4-1-20250805',\n CLAUDE_HAIKU_3_5 = 'claude-3-5-haiku-20241022',\n CLAUDE_SONNET_4_5 = 'claude-sonnet-4-5-20250929',\n CLAUDE_OPUS_4_5 = 'claude-opus-4-5-20251101',\n CLAUDE_HAIKU_4_5 = 'claude-haiku-4-5-20251001',\n CLAUDE_SONNET_4_6 = 'claude-sonnet-4-6',\n CLAUDE_OPUS_4_6 = 'claude-opus-4-6',\n CLAUDE_OPUS_4_6_FAST = 'claude-opus-4-6-fast',\n CLAUDE_OPUS_4_7 = 'claude-opus-4-7',\n CLAUDE_OPUS_4_7_FAST = 'claude-opus-4-7-fast',\n CLAUDE_OPUS_4_8 = 'claude-opus-4-8',\n CLAUDE_OPUS_4_8_FAST = 'claude-opus-4-8-fast',\n ASPEN_0515 = 'aspen-05-15',\n ALMOND_0527 = 'almond-05-27',\n\n // OpenAI models\n GPT_5 = 'gpt-5-2025-08-07',\n GPT_5_MINI = 'gpt-5-mini-2025-08-07',\n GPT_5_NANO = 'gpt-5-nano-2025-08-07',\n GPT_5_CODEX = 'gpt-5-codex',\n GPT_5_1 = 'gpt-5.1',\n GPT_5_1_CODEX = 'gpt-5.1-codex',\n GPT_5_1_CODEX_MAX = 'gpt-5.1-codex-max',\n GPT_5_2 = 'gpt-5.2',\n GPT_5_2_CODEX = 'gpt-5.2-codex',\n GPT_5_3_CODEX = 'gpt-5.3-codex',\n GPT_5_3_CODEX_FAST = 'gpt-5.3-codex-fast',\n GPT_5_4 = 'gpt-5.4',\n GPT_5_4_FAST = 'gpt-5.4-fast',\n GPT_5_4_MINI = 'gpt-5.4-mini',\n GPT_5_5 = 'gpt-5.5',\n GPT_5_5_FAST = 'gpt-5.5-fast',\n GPT_5_5_PRO = 'gpt-5.5-pro',\n OLM_0305 = 'olm-03-05',\n ORBIT_0409 = 'orbit-04-09',\n OLIVE_0522 = 'olive-05-22',\n\n // Google models\n GEMINI_2_5_FLASH = 'gemini-2.5-flash',\n GEMINI_2_5_PRO = 'gemini-2.5-pro',\n GEMINI_3_PRO = 'gemini-3-pro-preview',\n GEMINI_3_FLASH = 'gemini-3-flash-preview',\n GEMINI_3_1_PRO = 'gemini-3.1-pro-preview',\n GEMINI_3_5_FLASH = 'gemini-3.5-flash',\n GANTRY_0507 = 'gantry-05-07',\n\n // XAI models\n TITAN_0212 = 'titan-02-12',\n\n // Open source models\n GLM_4_6 = 'glm-4.6',\n GLM_4_7 = 'glm-4.7',\n KIMI_K2_5 = 'kimi-k2.5',\n KIMI_K2_6 = 'kimi-k2.6',\n DEEPSEEK_V4_PRO = 'deepseek-v4-pro',\n MINIMAX_M2_5 = 'minimax-m2.5',\n MINIMAX_M2_7 = 'minimax-m2.7',\n GLM_5 = 'glm-5',\n GLM_5_1 = 'glm-5.1',\n\n // Routers\n FACTORY_ROUTER = 'factory-router',\n}\n\nexport enum OpenAIPhase {\n Commentary = 'commentary',\n FinalAnswer = 'final_answer',\n}\n\n/**\n * Wire-format field name for assistant-message reasoning on the OpenAI\n * Chat Completions endpoint. OpenAI / XAI capture reasoning in `reasoning`;\n * vLLM / SGLang / Fireworks' Kimi deployments use `reasoning_content`.\n */\nexport enum ChatCompletionReasoningField {\n Reasoning = 'reasoning',\n ReasoningContent = 'reasoning_content',\n}\n\n/**\n * Enum defining the reasoning effort levels for LLMs.\n * This determines how much \"thinking\" the model does before responding.\n */\nexport enum ReasoningEffort {\n None = 'none',\n Dynamic = 'dynamic',\n Off = 'off',\n Minimal = 'minimal',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n ExtraHigh = 'xhigh',\n Max = 'max',\n}\n\nexport enum ModelProvider {\n ANTHROPIC = 'anthropic',\n OPENAI = 'openai',\n GENERIC_CHAT_COMPLETION_API = 'generic-chat-completion-api',\n FACTORY = 'factory',\n GOOGLE = 'google',\n XAI = 'xai',\n VOYAGE = 'voyage',\n /**\n * BYOK custom models served over the AWS Bedrock Converse API\n * (`ConverseStream`). Distinct from {@link ModelProvider.ANTHROPIC}\n * Bedrock routing (which speaks the Anthropic Messages dialect over the\n * Bedrock SDK): this provider speaks the native Converse schema and is\n * never used for first-party / proxy-routed models.\n */\n BEDROCK_CONVERSE = 'bedrock-converse',\n}\n\nexport enum ApiProvider {\n BEDROCK = 'bedrock', // Ideally we deprecate!\n ANTHROPIC = 'anthropic',\n VERTEX_ANTHROPIC = 'vertex_anthropic', // A minimal wrapper for Anthropic's API on GCP\n BEDROCK_ANTHROPIC = 'bedrock_anthropic', // A minimal wrapper for Anthropic's API on AWS\n BEDROCK_CONVERSE = 'bedrock_converse', // BYOK custom models over the Bedrock Converse API (metric labeling only)\n OPENAI = 'openai',\n AZURE_OPENAI = 'azure_openai',\n GOOGLE = 'google',\n XAI = 'xai',\n FIREWORKS = 'fireworks',\n BASETEN = 'baseten',\n SNOWFLAKE = 'snowflake',\n}\n\nexport enum ModelKind {\n Concrete = 'concrete',\n Router = 'router',\n}\n\nexport enum LLMModelTier {\n Standard = 'standard',\n // Deprecated\n Premium = 'premium',\n // Extra Usage (overage) billing tier\n Overage = 'overage',\n}\n\n// ---------------------------------------------------------------------------\n// settings/enums.ts (leaf subset)\n// ---------------------------------------------------------------------------\n\n/**\n * Settings hierarchy level enum.\n * Precedence order (highest to lowest): Org -> Runtime -> Folder -> Project -> User\n */\nexport enum SettingsLevel {\n Org = 'org',\n Runtime = 'runtime',\n User = 'user',\n Project = 'project',\n Folder = 'folder',\n Dynamic = 'dynamic',\n BuiltIn = 'builtin',\n}\n\nexport enum DroidLocation {\n Project = 'project',\n Personal = 'personal',\n}\n\nexport enum SkillLocation {\n Project = 'project',\n Personal = 'personal',\n Builtin = 'builtin',\n}\n\nexport enum SandboxMode {\n PerCommand = 'per-command',\n WholeProcess = 'whole-process',\n}\n\n// ---------------------------------------------------------------------------\n// settings/enums.ts (additional leaf enums for GeneralSettingsSchema)\n// ---------------------------------------------------------------------------\n\nexport enum DiffMode {\n Github = 'github',\n Unified = 'unified',\n}\n\nexport enum SoundFocusMode {\n Always = 'always',\n Focused = 'focused',\n Unfocused = 'unfocused',\n}\n\nexport enum TodoDisplayMode {\n Inline = 'inline',\n Pinned = 'pinned',\n}\n\nexport enum SubagentSoundMode {\n Off = 'off',\n Quiet = 'quiet',\n Inherit = 'inherit',\n}\n\n// ---------------------------------------------------------------------------\n// cli/enums.ts (leaf enums for GeneralSettingsSchema)\n// ---------------------------------------------------------------------------\n\nexport enum LogoAnimationMode {\n Once = 'once',\n Always = 'always',\n Off = 'off',\n}\n\nexport enum ToolResultDisplay {\n Expanded = 'expanded',\n Compact = 'compact',\n}\n","// Source-of-truth mirror of factory-mono-alpha JSON-RPC envelope family.\n// Faithful copy of packages/common/src/shared/schemas.ts.\n// Shapes match the private monorepo exactly (note: params/result/data use\n// z.unknown() as in the private source, NOT typed JsonValue). Do not \"improve\"\n// these shapes here — divergence from the private monorepo reintroduces drift.\n\nimport { z } from 'zod';\n\nimport { JSONRPC_VERSION, LEGACY_FACTORY_API_VERSION } from './constants.js';\nimport {\n DroidInteractionMode,\n JsonRpcErrorCode,\n JsonRpcMessageType,\n} from './enums.js';\n\nconst JsonRpcMessageTypeSchema = z.nativeEnum(JsonRpcMessageType);\n\nexport const DroidInteractionModeSchema = z.nativeEnum(DroidInteractionMode);\n\n/**\n * Trace context metadata for distributed tracing propagation.\n * Follows W3C Trace Context standard for cross-service trace correlation.\n * @see https://www.w3.org/TR/trace-context/\n */\nexport const TraceContextMetaSchema = z.object({\n /** W3C traceparent header value (e.g., \"00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01\") */\n traceparent: z.string().optional(),\n /** W3C tracestate header value for vendor-specific trace data */\n tracestate: z.string().optional(),\n});\n\nexport const JsonRpcEnvelopeSchema = z.object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n // Legacy metadata only. Do not repurpose for compatibility checks.\n factoryApiVersion: z\n .literal(LEGACY_FACTORY_API_VERSION)\n .describe('DEPRECATED - use factoryProtocolVersion for versioning instead'),\n /** Optional runtime compatibility signal; tolerate absence while old peers roll forward. */\n factoryProtocolVersion: z.string().optional(),\n /** Optional metadata for trace context propagation (MCP-style) */\n _meta: TraceContextMetaSchema.optional(),\n});\n\nexport const JsonRpcProtocolVersionMismatchErrorDataSchema = z.object({\n localFactoryProtocolVersion: z.string(),\n peerFactoryProtocolVersion: z.string(),\n messageType: JsonRpcMessageTypeSchema.optional(),\n method: z.string().optional(),\n requestId: z.string().nullable().optional(),\n});\n\nexport const JsonRpcErrorSchema = z.object({\n code: z.nativeEnum(JsonRpcErrorCode),\n message: z.string(),\n data: z.unknown().optional(),\n});\n\nexport const BaseRequestSchema = z.object({\n type: z.literal('request'),\n id: z.string(),\n method: z.string(),\n params: z.unknown().optional(),\n});\n\nconst BaseResponseGenericSchema = z.object({\n type: z.literal('response'),\n id: z.string().nullable(),\n result: z.unknown().optional(),\n error: JsonRpcErrorSchema.optional(),\n});\n\n// id and result are required\nexport const BaseResponseSuccessSchema = BaseResponseGenericSchema.extend({\n id: z.string(),\n result: z.unknown(),\n});\n// error is required\nexport const BaseResponseFailureSchema = BaseResponseGenericSchema.extend({\n error: JsonRpcErrorSchema,\n});\n\nexport const BaseNotificationSchema = z.object({\n type: z.literal('notification'),\n method: z.string(),\n params: z.unknown().optional(),\n});\n\nexport const JsonRpcBaseRequestSchema = JsonRpcEnvelopeSchema.extend(\n BaseRequestSchema.shape\n);\nexport const JsonRpcBaseResponseSuccessSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseSuccessSchema.shape\n);\nexport const JsonRpcBaseResponseFailureSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseFailureSchema.shape\n);\nconst JsonRpcBaseResponseGenericSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseGenericSchema.shape\n);\n\nexport const JsonRpcBaseResponseSchema = z.union([\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n]);\n\nexport const JsonRpcBaseNotificationSchema = JsonRpcEnvelopeSchema.extend(\n BaseNotificationSchema.shape\n);\n\n/**\n * Generic acknowledgement payload for command-style RPCs.\n */\nexport const CommandAckSchema = z.object({\n accepted: z.literal(true),\n});\n\n// Discriminated union for initial message type routing\n// After parsing, use JsonRpcBaseResponseSchema for strict success/failure typing\nexport const JsonRpcMessageSchema = z.discriminatedUnion('type', [\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseGenericSchema,\n JsonRpcBaseNotificationSchema,\n]);\n\nexport type TraceContextMeta = z.infer<typeof TraceContextMetaSchema>;\nexport type JsonRpcEnvelope = z.infer<typeof JsonRpcEnvelopeSchema>;\nexport type JsonRpcError = z.infer<typeof JsonRpcErrorSchema>;\nexport type JsonRpcProtocolVersionMismatchErrorData = z.infer<\n typeof JsonRpcProtocolVersionMismatchErrorDataSchema\n>;\nexport type JsonRpcBaseRequest = z.infer<typeof JsonRpcBaseRequestSchema>;\nexport type JsonRpcBaseResponseSuccess = z.infer<\n typeof JsonRpcBaseResponseSuccessSchema\n>;\nexport type JsonRpcBaseResponseFailure = z.infer<\n typeof JsonRpcBaseResponseFailureSchema\n>;\nexport type JsonRpcBaseResponse = z.infer<typeof JsonRpcBaseResponseSchema>;\nexport type JsonRpcBaseNotification = z.infer<\n typeof JsonRpcBaseNotificationSchema\n>;\nexport type CommandAck = z.infer<typeof CommandAckSchema>;\nexport type JsonRpcMessage = z.infer<typeof JsonRpcMessageSchema>;\n","// Source-of-truth mirror of factory-mono-alpha host schemas.\n// Faithful copy of packages/common/src/host/schemas.ts.\n\nimport { z } from 'zod';\n\nexport const HostIdSchema = z.string().uuid();\n\nconst ComputerRegistrationSchema = z.object({\n computerId: z.string().uuid(),\n firestoreOrgId: z.string().min(1),\n userId: z.string().min(1),\n registeredAt: z.number(),\n});\n\nexport const HostConfigSchema = z.object({\n schemaVersion: z.literal(1), // when we need to bump the version, make this a discriminated union of v1 vs v2 schemas\n hostId: HostIdSchema,\n createdAt: z.number(),\n computerRegistration: ComputerRegistrationSchema.optional(),\n});\n\nexport const LegacyComputerConfigSchema = z.object({\n computerId: z.string().uuid(),\n registeredAt: z.number(),\n});\n\nexport type ComputerRegistration = z.infer<typeof ComputerRegistrationSchema>;\nexport type HostConfig = z.infer<typeof HostConfigSchema>;\nexport type LegacyComputerConfig = z.infer<typeof LegacyComputerConfigSchema>;\nexport type ResolvedComputerRegistration = Omit<\n ComputerRegistration,\n 'registeredAt'\n>;\n\nexport type ResolvedHostIdentity = {\n hostId: string;\n computerRegistration?: ResolvedComputerRegistration;\n};\n","// Source-of-truth mirror of factory-mono-alpha session schemas (symbol-only).\n// Faithful copies of:\n// SessionTagSchema — packages/common/src/session/tags/schema.ts\n// TokenUsageSchema — packages/common/src/session/settings/schema.ts\n// Only the leaf, zero-coupling symbols are mirrored here (not the full files).\n\nimport { z } from 'zod';\n\nexport const SessionTagSchema = z.object({\n name: z.string().min(1),\n metadata: z.record(z.string()).optional(),\n});\n\nexport type SessionTag = z.infer<typeof SessionTagSchema>;\n\n/**\n * Token usage schema for session settings.\n * Tracks LLM token consumption for a session.\n */\nexport const TokenUsageSchema = z\n .object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n cacheCreationTokens: z.number(),\n cacheReadTokens: z.number(),\n thinkingTokens: z.number(),\n factoryCredits: z.number().optional(),\n })\n .strip();\n\nexport type TokenUsage = z.infer<typeof TokenUsageSchema>;\n","// Source-of-truth mirror of factory-mono-alpha session source schemas.\n// Faithful copy of packages/common/src/session/sources/schema.ts.\n\nimport { z } from 'zod';\n\nimport { SessionPlatform } from './enums.js';\n\n// -------------------------------------------------------------\n// Platform source schemas (used for messages and sessions)\n// -------------------------------------------------------------\n\nconst SlackSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Slack),\n teamId: z.string().nullish(),\n channel: z.string().nullish(),\n threadTs: z.string().nullish(),\n userId: z.string().nullish(),\n});\n\nconst WebSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Web),\n});\n\nconst ApiSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Api),\n});\n\nconst SessionsApiSourceSchema = z.object({\n platform: z.literal(SessionPlatform.SessionsApi),\n});\n\nconst LinearSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Linear),\n agentSessionId: z.string(),\n issueId: z.string().nullish(),\n issueUrl: z.string().nullish(),\n issueIdentifier: z.string().nullish(),\n organizationId: z.string().nullish(),\n userId: z.string().nullish(),\n});\n\nconst ReadinessRemediationSourceSchema = z.object({\n platform: z.literal(SessionPlatform.ReadinessRemediation),\n reportId: z.string(),\n repoUrl: z.string(),\n criterionId: z.string(),\n});\n\nconst ReadinessEvaluationSourceSchema = z.object({\n platform: z.literal(SessionPlatform.ReadinessEvaluation),\n repoUrl: z.string(),\n});\n\nconst AutomationSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Automation),\n automationId: z.string(),\n computerId: z.string(),\n});\n\nconst WikiGenerationSourceSchema = z.object({\n platform: z.literal(SessionPlatform.WikiGeneration),\n repoUrl: z.string(),\n});\n\nconst WikiCISetupSourceSchema = z.object({\n platform: z.literal(SessionPlatform.WikiCISetup),\n repoUrl: z.string(),\n});\n\n// -------------------------------------------------------------\n// Session-specific source schemas (adds delegationSessionId)\n// -------------------------------------------------------------\n\nconst SlackSessionSourceSchema = SlackSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nconst WebSessionSourceSchema = WebSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nconst ApiSessionSourceSchema = ApiSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nconst SessionsApiSessionSourceSchema = SessionsApiSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nconst LinearSessionSourceSchema = LinearSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nexport const SessionSourceSchema = z.discriminatedUnion('platform', [\n SlackSessionSourceSchema,\n WebSessionSourceSchema,\n ApiSessionSourceSchema,\n SessionsApiSessionSourceSchema,\n LinearSessionSourceSchema,\n ReadinessRemediationSourceSchema, // No delegationSessionId needed\n ReadinessEvaluationSourceSchema, // No delegationSessionId needed\n AutomationSourceSchema, // No delegationSessionId needed\n WikiGenerationSourceSchema, // No delegationSessionId needed\n WikiCISetupSourceSchema, // No delegationSessionId needed\n]);\n\n// -------------------------------------------------------------\n// Inferred types (single source of truth)\n// -------------------------------------------------------------\n\nexport type SlackSource = z.infer<typeof SlackSourceSchema>;\nexport type WebSource = z.infer<typeof WebSourceSchema>;\nexport type ApiSource = z.infer<typeof ApiSourceSchema>;\nexport type SessionsApiSource = z.infer<typeof SessionsApiSourceSchema>;\nexport type LinearSource = z.infer<typeof LinearSourceSchema>;\nexport type ReadinessRemediationSource = z.infer<\n typeof ReadinessRemediationSourceSchema\n>;\nexport type ReadinessEvaluationSource = z.infer<\n typeof ReadinessEvaluationSourceSchema\n>;\nexport type AutomationSource = z.infer<typeof AutomationSourceSchema>;\nexport type WikiGenerationSource = z.infer<typeof WikiGenerationSourceSchema>;\nexport type WikiCISetupSource = z.infer<typeof WikiCISetupSourceSchema>;\nexport type PlatformSource =\n | SlackSource\n | WebSource\n | ApiSource\n | SessionsApiSource\n | LinearSource\n | ReadinessRemediationSource\n | ReadinessEvaluationSource\n | AutomationSource\n | WikiGenerationSource\n | WikiCISetupSource;\nexport type SessionSource = z.infer<typeof SessionSourceSchema>;\n","// Source-of-truth mirror of factory-mono-alpha message content-block schemas.\n// Faithful copy of the message schemas from\n// packages/common/src/sessionV2/messages/schemas.ts\n\nimport { z } from 'zod';\n\nimport {\n ChatCompletionReasoningField,\n DocumentSourceType,\n MessageContentBlockType,\n MessageRole,\n MessageVisibility,\n ModelProvider,\n OpenAIPhase,\n SessionOrigin,\n} from './enums.js';\n\n// Base content block with optional id field\nexport const BaseContentBlockSchema = z.object({\n id: z.string().optional(),\n});\n\n// Text block\nexport const TextBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.Text),\n text: z.string(),\n});\n\n// Image source and block\nexport const Base64ImageSourceSchema = z.object({\n type: z.literal('base64'),\n data: z.string(),\n mediaType: z.enum(['image/jpeg', 'image/png', 'image/gif', 'image/webp']),\n});\n\nexport const ImageBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.Image),\n source: Base64ImageSourceSchema,\n});\n\n// Thinking blocks\nexport const ThinkingBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.Thinking),\n signature: z.string(), // required but can be empty string for Gemini\n signatureProvider: z\n .union([z.nativeEnum(ModelProvider), z.literal('unknown')])\n .optional(),\n thinking: z.string(),\n durationMs: z.number().nonnegative().optional(),\n});\n\nexport const RedactedThinkingBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.RedactedThinking),\n data: z.string(),\n});\n\n// Tool use block (id is required, not optional)\nexport const ToolUseSchema = z.object({\n type: z.literal(MessageContentBlockType.ToolUse),\n id: z.string(),\n input: z.record(z.unknown()),\n name: z.string(),\n thoughtSignature: z.string().optional(), // Gemini thought signature\n});\n\n// For now, this will be only used to send initial file content from the frontend to the daemon.\n// In the future, when we switch off vercel, we'll be able to use this instead of parsedData.\nexport const Base64PDFSourceSchema = z.object({\n type: z.literal(DocumentSourceType.Base64),\n mediaType: z.literal('application/pdf'),\n data: z.string(),\n parsedData: z.string().optional(),\n name: z.string().optional(),\n path: z.string().optional(),\n});\n\nexport const PlainTextSourceSchema = z.object({\n type: z.literal(DocumentSourceType.Text),\n mediaType: z.literal('text/plain'),\n data: z.string(),\n name: z.string().optional(),\n mime: z.string().optional(),\n});\n\nexport const DocumentSourceSchema = z.union([\n Base64PDFSourceSchema,\n PlainTextSourceSchema,\n]);\n\nexport const DocumentBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.Document),\n source: DocumentSourceSchema,\n});\n\n// Tool result block\nexport const ToolResultSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.ToolResult),\n toolUseId: z.string(),\n content: z\n .union([\n z.string(),\n z.array(\n z.union([TextBlockSchema, ImageBlockSchema, DocumentBlockSchema])\n ),\n ])\n .optional(),\n isError: z.boolean().optional(),\n});\n\n// Content block discriminated union\nexport const ContentBlockSchema = z.discriminatedUnion('type', [\n TextBlockSchema,\n ImageBlockSchema,\n ThinkingBlockSchema,\n RedactedThinkingBlockSchema,\n ToolUseSchema,\n ToolResultSchema,\n DocumentBlockSchema,\n]);\n\n// Cache label for caching support\nexport const CacheLabelSchema = z.object({\n cache_control: z\n .object({\n type: z.literal('ephemeral'),\n })\n .optional(),\n});\n\n// FactoryDroidMessage schema (used in JSON-RPC protocol and application)\nexport const FactoryDroidMessageSchema = z.object({\n id: z.string(),\n role: z.nativeEnum(MessageRole),\n content: z.array(ContentBlockSchema),\n createdAt: z.number(),\n updatedAt: z.number(),\n parentId: z.string().optional(),\n userMessageSource: z.nativeEnum(SessionOrigin).optional(),\n visibility: z.nativeEnum(MessageVisibility).optional(),\n openaiMessageId: z.string().optional(),\n openaiPhase: z\n .enum([OpenAIPhase.Commentary, OpenAIPhase.FinalAnswer])\n .nullable()\n .optional(),\n openaiEncryptedContent: z.string().optional(),\n openaiReasoningId: z.string().optional(),\n openaiReasoningSummary: z.string().optional(),\n geminiThoughtSignature: z\n .string()\n .optional()\n .describe(\n '@deprecated Use thinking block `signature` fields with `signatureProvider: \"google\"` instead. Do not use in new code.'\n ),\n chatCompletionReasoningField: z\n .nativeEnum(ChatCompletionReasoningField)\n .optional(),\n chatCompletionReasoningContent: z.string().optional(),\n isUserVisible: z.boolean().optional(), // deprecated\n isError: z.boolean().optional(),\n});\n\n// FactoryDroidMessageWithCaching schema\nexport const FactoryDroidMessageWithCachingSchema =\n FactoryDroidMessageSchema.extend({\n content: z.array(ContentBlockSchema.and(CacheLabelSchema)),\n });\n\nexport type TextBlock = z.infer<typeof TextBlockSchema>;\nexport type Base64ImageSource = z.infer<typeof Base64ImageSourceSchema>;\nexport type ImageBlock = z.infer<typeof ImageBlockSchema>;\nexport type ThinkingBlock = z.infer<typeof ThinkingBlockSchema>;\nexport type RedactedThinkingBlock = z.infer<typeof RedactedThinkingBlockSchema>;\nexport type ToolUse = z.infer<typeof ToolUseSchema>;\nexport type Base64PDFSource = z.infer<typeof Base64PDFSourceSchema>;\nexport type PlainTextSource = z.infer<typeof PlainTextSourceSchema>;\nexport type DocumentSource = z.infer<typeof DocumentSourceSchema>;\nexport type DocumentBlock = z.infer<typeof DocumentBlockSchema>;\nexport type ToolResult = z.infer<typeof ToolResultSchema>;\nexport type ContentBlock = z.infer<typeof ContentBlockSchema>;\nexport type CacheLabel = z.infer<typeof CacheLabelSchema>;\nexport type FactoryDroidMessage = z.infer<typeof FactoryDroidMessageSchema>;\nexport type FactoryDroidMessageWithCaching = z.infer<\n typeof FactoryDroidMessageWithCachingSchema\n>;\n","// Source-of-truth mirror of factory-mono-alpha model-settings schemas (symbol-only).\n// Faithful copies of MissionModelSettingsSchema and SubagentModelSettingsSchema\n// from packages/common/src/settings/schema.ts. Only these leaf symbols are\n// mirrored here (not the full, TIER-3 settings file).\n\nimport { z } from 'zod';\n\nimport { ReasoningEffort } from './enums.js';\n\nconst ReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\nexport const MissionModelSettingsSchema = z.object({\n workerModel: z.string().optional(),\n workerReasoningEffort: ReasoningEffortSchema.optional(),\n validationWorkerModel: z.string().optional(),\n validationWorkerReasoningEffort: ReasoningEffortSchema.optional(),\n skipScrutiny: z.boolean().optional(),\n skipUserTesting: z.boolean().optional(),\n});\n\nexport const SubagentModelSettingsSchema = z.object({\n lightModel: z.string().optional(),\n lightReasoningEffort: ReasoningEffortSchema.optional(),\n mediumModel: z.string().optional(),\n mediumReasoningEffort: ReasoningEffortSchema.optional(),\n heavyModel: z.string().optional(),\n heavyReasoningEffort: ReasoningEffortSchema.optional(),\n});\n\nexport type MissionModelSettings = z.infer<typeof MissionModelSettingsSchema>;\nexport type SubagentModelSettings = z.infer<typeof SubagentModelSettingsSchema>;\n","// Source-of-truth mirror of factory-mono-alpha settings schemas (symbol-only).\n// Faithful copies of the leaf schemas the daemon protocol references, drawn\n// from packages/common/src/settings/schema.ts. Verbatim:\n// - MarketplaceSourceSchema (+ inner discriminated-union variants)\n// - SessionDefaultSettingsSchema\n// - CompactionModelSchema\n// - AutonomyModeSchema\n// - SettingsSourceTypeEnum, SettingsSourceSchema, SettingsActionEnum,\n// SettingsResolutionEventSchema (+ private SettingsResolutionLocationSchema)\n//\n// MissionModelSettingsSchema and SubagentModelSettingsSchema are already\n// mirrored verbatim in ./model-settings.js; they are not re-exported here to\n// avoid duplicate barrel exports. Callers needing them should import from\n// './model-settings.js' as before.\n//\n// GeneralSettingsSchema and ManagedSettingsBaseSchema (plus their helper\n// schemas: ModelPolicySchema, McpPolicySchema, MissionPolicySchema,\n// SandboxSettingsSchema, FactoryRouterRuleSchema, etc.) live in\n// ./general-settings.js, mirrored verbatim from the same upstream source\n// file.\n\nimport { z } from 'zod';\n\nimport {\n CURRENT_COMPACTION_MODEL,\n FACTORY_ROUTER_MODEL_ID,\n} from './constants.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n ModelID,\n ReasoningEffort,\n} from './enums.js';\nimport { DroidInteractionModeSchema } from './json-rpc.js';\n\n// =============================================================================\n// Session Default Settings Schema\n// =============================================================================\n\nconst ReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\nexport const AutonomyModeSchema = z.nativeEnum(AutonomyMode);\n\nconst FIRST_COMPACTION_MODEL_ID = 'claude-3-5-sonnet-20241022';\nconst CompactionModelIdValues: [string, ...string[]] = [\n FIRST_COMPACTION_MODEL_ID,\n ...Object.values(ModelID).filter(\n (modelId) =>\n modelId !== FACTORY_ROUTER_MODEL_ID &&\n modelId !== FIRST_COMPACTION_MODEL_ID\n ),\n];\n\nexport const CompactionModelSchema = z.union([\n z.literal(CURRENT_COMPACTION_MODEL),\n z.enum(CompactionModelIdValues),\n z.string().regex(/^custom:.+$/, 'Expected a custom model id'),\n]);\n\nexport const SessionDefaultSettingsSchema = z.object({\n model: z.string().optional(),\n reasoningEffort: ReasoningEffortSchema.optional(),\n interactionMode: DroidInteractionModeSchema.optional(),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional(),\n autonomyMode: AutonomyModeSchema.optional().describe(\n 'Deprecated: use interactionMode + autonomyLevel instead.'\n ),\n specModeModel: z.string().optional(),\n specModeReasoningEffort: ReasoningEffortSchema.optional(),\n /**\n * When true, new sessions started against a git repo are created in an\n * isolated worktree. Gated behind the `DesktopWorktrees` feature flag in\n * the desktop UI.\n */\n runInWorktree: z.boolean().optional(),\n});\n\n// =============================================================================\n// Marketplace Source Schema\n// =============================================================================\n\nconst GitHubMarketplaceSourceSchema = z.object({\n source: z.literal('github'),\n repo: z.string(),\n});\n\nconst UrlMarketplaceSourceSchema = z.object({\n source: z.literal('url'),\n url: z.string(),\n});\n\nconst LocalMarketplaceSourceSchema = z.object({\n source: z.literal('local'),\n path: z.string(),\n});\n\nconst GitSubdirMarketplaceSourceSchema = z.object({\n source: z.literal('git-subdir'),\n url: z.string(),\n path: z.string(),\n});\n\nexport const MarketplaceSourceSchema = z.discriminatedUnion('source', [\n GitHubMarketplaceSourceSchema,\n UrlMarketplaceSourceSchema,\n LocalMarketplaceSourceSchema,\n GitSubdirMarketplaceSourceSchema,\n]);\n\n// =============================================================================\n// Settings Resolution Chain Schemas\n// =============================================================================\n\nexport const SettingsSourceTypeEnum = z.enum([\n /** Factory's hardcoded defaults (lowest priority) */\n 'builtin-default',\n /** Remote dynamic config (e.g. Statsig dynamic configs) */\n 'dynamic-config',\n /** Organization-level settings pushed from the server */\n 'org',\n /** User-level settings from ~/.factory/settings.json */\n 'user',\n /** Project-level settings from <git-root>/.factory/settings.json */\n 'project',\n /** Folder-level settings from ancestor .factory/settings.json files */\n 'folder',\n /** Model availability determined by a feature flag gate */\n 'feature-flag',\n /** Value read from browser localStorage (CLOUD path only) */\n 'localstorage',\n /** Value provided via React Router navigation state (e.g. template launch, session continuation) */\n 'nav-state',\n /** Model/effort override enforced for orchestrator (mission) sessions */\n 'orchestrator-override',\n /** Last-resort fallback when no model was selected after all other sources */\n 'auto-select',\n /** Settings restored from the daemon's CLI process for this session — re-resolved from the settings hierarchy if the daemon restarts */\n 'session-state',\n]);\n\nexport const SettingsSourceSchema = z.object({\n type: SettingsSourceTypeEnum,\n filePath: z.string().optional(),\n flagName: z.string().optional(),\n key: z.string().optional(),\n orgId: z.string().optional(),\n});\n\nexport const SettingsActionEnum = z.enum([\n 'set',\n 'override',\n 'skip',\n 'fallback',\n]);\n\nconst SettingsResolutionLocationSchema = z.object({\n package: z.string(),\n file: z.string(),\n function: z.string().optional(),\n});\n\nexport const SettingsResolutionEventSchema = z.object({\n timestamp: z.string(),\n keys: z.array(z.string()),\n action: SettingsActionEnum,\n source: SettingsSourceSchema,\n value: z.record(z.unknown()).optional(),\n reason: z.string().optional(),\n location: SettingsResolutionLocationSchema.optional(),\n});\n\nexport type SessionDefaultSettings = z.infer<\n typeof SessionDefaultSettingsSchema\n>;\nexport type MarketplaceSource = z.infer<typeof MarketplaceSourceSchema>;\nexport type CompactionModel = z.infer<typeof CompactionModelSchema>;\nexport type SettingsResolutionEvent = z.infer<\n typeof SettingsResolutionEventSchema\n>;\nexport type SettingsSource = z.infer<typeof SettingsSourceSchema>;\n","// Source-of-truth mirror of `ManagedSettingsBaseSchema` and\n// `GeneralSettingsSchema` from `packages/common/src/settings/schema.ts`.\n// Verbatim port; do not modify the schema bodies. The only allowed\n// divergences are:\n// 1. Import paths are rewritten to local `./` siblings with `.js` ESM\n// extensions (and helpers that already exist in sibling SDK modules\n// are imported instead of redeclared).\n// 2. `ManagedSettingsBaseSchema` is `export const` here (upstream declares\n// it `const`); the visibility is raised so `GeneralSettingsSchema` can\n// call `.extend(...)` on it from a separate module boundary if needed\n// and so the public API can surface it. See the inline NOTE below.\n//\n// Symbols ported verbatim (in upstream order):\n// - SESSION_RETENTION_MIN_DAYS / SESSION_RETENTION_MAX_DAYS\n// - ModelPolicySchema (+ private tolerantModelIdArray helper — upstream\n// intentionally redefines this locally; we mirror that)\n// - McpPolicySchema\n// - MissionPolicySchema\n// - NetworkPolicySchema (private, like upstream)\n// - SandboxFilesystemSettingsSchema\n// - SandboxNetworkSettingsSchema\n// - SandboxSettingsSchema\n// - ExtraMarketplaceEntrySchema (private, like upstream)\n// - FactoryRouterRuleSchema\n// - McpAutonomyLevelSchema (private, like upstream)\n// - StatusLineConfigSchema (private, like upstream)\n// - ManagedSettingsBaseSchema (exported; see NOTE)\n// - GeneralSettingsSchema\n\nimport { z } from 'zod';\n\nimport {\n FACTORY_ROUTER_GUIDANCE_MAX_LENGTH,\n FACTORY_ROUTER_RULE_GUIDANCE_MAX_LENGTH,\n FACTORY_ROUTER_RULE_WHEN_MAX_LENGTH,\n FACTORY_ROUTER_RULES_MAX_COUNT,\n} from './constants.js';\nimport { CustomModelsSchema } from './custom-models.js';\nimport {\n AutonomyLevel,\n DiffMode,\n LogoAnimationMode,\n ModelID,\n ReasoningEffort,\n SandboxMode,\n SoundFocusMode,\n SubagentSoundMode,\n TodoDisplayMode,\n ToolResultDisplay,\n} from './enums.js';\nimport {\n MissionModelSettingsSchema,\n SubagentModelSettingsSchema,\n} from './model-settings.js';\nimport { UserModelPolicySchema } from './policy.js';\nimport {\n CompactionModelSchema,\n MarketplaceSourceSchema,\n SessionDefaultSettingsSchema,\n} from './settings.js';\n\nconst ReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\n// =============================================================================\n// Model Policy Schema (for org-level model access control)\n// =============================================================================\n\n/**\n * A lenient model ID array that silently drops unrecognized values instead of\n * failing validation. This is critical for backward compatibility: when a ModelID\n * enum value is removed (e.g. after an EAP model cleanup), any Firestore\n * documents still referencing the old ID will have it filtered out rather than\n * causing the entire settings object to fail parsing.\n */\nconst modelIdValues: ReadonlySet<string> = new Set(Object.values(ModelID));\nconst tolerantModelIdArray = z\n .array(z.string())\n .transform((ids) => ids.filter((id): id is ModelID => modelIdValues.has(id)));\n\nexport const ModelPolicySchema = z.object({\n allowedModelIds: tolerantModelIdArray.optional(),\n blockedModelIds: tolerantModelIdArray.optional(),\n allowCustomModels: z.boolean().optional(),\n allowedBaseUrls: z.array(z.string()).optional(),\n allowAllFactoryModels: z.boolean().optional(),\n isFastModelsAllowed: z.boolean().optional(),\n});\n\n// =============================================================================\n// MCP Policy Schema (for org-level MCP server access control)\n// =============================================================================\n\nexport const McpPolicySchema = z.object({\n enabled: z.boolean().default(false),\n allowlist: z.array(z.string()).optional(),\n});\n\n// =============================================================================\n// Mission Policy Schema (for org-level missions access control)\n// =============================================================================\n\nexport const MissionPolicySchema = z.object({\n restrictedAccess: z.boolean().default(false),\n allowedUserIds: z.array(z.string()).optional(),\n});\n\n// =============================================================================\n// Network Policy Schema (for org-level network access control)\n// IP format validation is handled by @factory/utils/ip (isValidIpOrCidr).\n// The schema only enforces shape: non-empty array of trimmed strings.\n// =============================================================================\n\nconst NetworkPolicySchema = z.object({\n allowedIps: z\n .array(z.string().trim())\n .min(1, 'IP allowlist must contain at least one entry when enabled'),\n});\n\n// =============================================================================\n// Sandbox Settings Schema\n// =============================================================================\n\nexport const SandboxFilesystemSettingsSchema = z.object({\n allowWrite: z.array(z.string()).optional(),\n allowRead: z.array(z.string()).optional(),\n denyWrite: z.array(z.string()).optional(),\n denyRead: z.array(z.string()).optional(),\n});\n\nexport const SandboxNetworkSettingsSchema = z.object({\n allowedDomains: z.array(z.string()).optional(),\n allowUnixSockets: z.array(z.string()).optional(),\n allowAllUnixSockets: z.boolean().optional(),\n allowLocalBinding: z.boolean().optional(),\n httpProxyPort: z.number().optional(),\n socksProxyPort: z.number().optional(),\n});\n\nconst SandboxModeSchema = z.nativeEnum(SandboxMode);\n\nexport const SandboxSettingsSchema = z.object({\n enabled: z.boolean().optional(),\n mode: SandboxModeSchema.optional(),\n filesystem: SandboxFilesystemSettingsSchema.optional(),\n network: SandboxNetworkSettingsSchema.optional(),\n});\n\n// =============================================================================\n// Session Retention Constants\n// =============================================================================\n\nexport const SESSION_RETENTION_MIN_DAYS = 14;\nexport const SESSION_RETENTION_MAX_DAYS = 365;\n\nconst ExtraMarketplaceEntrySchema = z.object({\n source: MarketplaceSourceSchema,\n});\n\nexport const FactoryRouterRuleSchema = z.object({\n when: z.string().max(FACTORY_ROUTER_RULE_WHEN_MAX_LENGTH).optional(),\n guidance: z.string().max(FACTORY_ROUTER_RULE_GUIDANCE_MAX_LENGTH),\n});\n\n// =============================================================================\n// Managed Settings Schema\n// =============================================================================\n\nconst McpAutonomyLevelSchema = z.enum([\n AutonomyLevel.Low,\n AutonomyLevel.Medium,\n AutonomyLevel.High,\n]);\n\nconst StatusLineConfigSchema = z.object({\n type: z.literal('command').optional(),\n command: z.string(),\n padding: z.number().optional(),\n maxRows: z.number().int().min(1).max(3).optional(),\n});\n\n// NOTE: upstream declares this `const`; exported here to allow `.extend(...)`\n// across module boundaries and to surface it on the public protocol namespace.\nexport const ManagedSettingsBaseSchema = z.object({\n sessionDefaultSettings: SessionDefaultSettingsSchema.optional(),\n maxAutonomyLevel: z.nativeEnum(AutonomyLevel).optional(),\n mcpAutonomyOverrides: z\n .record(\n z.string(),\n z.object({\n defaultLevel: McpAutonomyLevelSchema.optional(),\n tools: z.record(z.string(), McpAutonomyLevelSchema).optional(),\n })\n )\n .optional(),\n cloudSessionSync: z.boolean().optional(),\n wikiCloudSync: z.boolean().optional(),\n includeCoAuthoredByDroid: z.boolean().optional(),\n enableDroidShield: z.boolean().optional(),\n ideAutoConnect: z.boolean().optional(),\n commandAllowlist: z.array(z.string()).optional(),\n commandDenylist: z.array(z.string()).optional(),\n customModels: CustomModelsSchema.optional(),\n modelPolicy: ModelPolicySchema.optional(),\n mcpPolicy: McpPolicySchema.optional(),\n missionPolicy: MissionPolicySchema.optional(),\n userModelPolicies: z.record(z.string(), UserModelPolicySchema).optional(),\n enabledPlugins: z.record(z.boolean()).optional(),\n extraKnownMarketplaces: z.record(ExtraMarketplaceEntrySchema).optional(),\n strictKnownMarketplaces: z.array(MarketplaceSourceSchema).optional(),\n networkPolicy: NetworkPolicySchema.optional(),\n sandbox: SandboxSettingsSchema.optional(),\n restrictMemberVisibility: z.boolean().optional(),\n restrictApiKeyCreationToManagers: z.boolean().optional(),\n managedComputersEnabled: z.boolean().optional(),\n managedComputersAllowedEmails: z.array(z.string().trim()).optional(),\n byomComputersEnabled: z.boolean().optional(),\n byomComputersAllowedEmails: z.array(z.string().trim()).optional(),\n sessionRetentionDays: z\n .number()\n .int()\n .min(SESSION_RETENTION_MIN_DAYS)\n .max(SESSION_RETENTION_MAX_DAYS)\n .optional(),\n factoryRouterGuidance: z\n .string()\n .max(FACTORY_ROUTER_GUIDANCE_MAX_LENGTH)\n .optional(),\n factoryRouterRules: z\n .array(FactoryRouterRuleSchema)\n .max(FACTORY_ROUTER_RULES_MAX_COUNT)\n .optional(),\n});\n\n// =============================================================================\n// General Settings Schema (CLI settings.json / settings.local.json)\n// =============================================================================\n\nexport const GeneralSettingsSchema = ManagedSettingsBaseSchema.extend({\n diffMode: z.nativeEnum(DiffMode).optional(),\n ideExtensionPromptedAt: z.record(z.number()).optional(),\n ideActivationNudgedForVersion: z.record(z.string()).optional(),\n enableCompletionBell: z.boolean().optional(),\n completionSound: z.string().optional(),\n awaitingInputSound: z.string().optional(),\n soundFocusMode: z.nativeEnum(SoundFocusMode).optional(),\n completionSoundFocusMode: z.nativeEnum(SoundFocusMode).optional(),\n awaitingInputSoundFocusMode: z.nativeEnum(SoundFocusMode).optional(),\n specSaveEnabled: z.boolean().optional(),\n specSaveDir: z.string().optional(),\n todoDisplayMode: z.nativeEnum(TodoDisplayMode).optional(),\n toolResultDisplay: z.nativeEnum(ToolResultDisplay).optional(),\n showThinkingInMainView: z.boolean().optional(),\n keepSystemAwakeDuringMissions: z.boolean().optional(),\n showTokenUsageIndicator: z.boolean().optional(),\n missionOrchestratorModel: z.string().optional(),\n missionOrchestratorReasoningEffort: ReasoningEffortSchema.optional(),\n modelFavorites: z.array(z.string()).optional(),\n logoAnimation: z.nativeEnum(LogoAnimationMode).optional(),\n missionModelSettings: MissionModelSettingsSchema.optional(),\n subagentModelSettings: SubagentModelSettingsSchema.optional(),\n statusLine: StatusLineConfigSchema.optional(),\n theme: z.string().optional(),\n overrideTerminalColors: z.boolean().optional(),\n hasSeenMissionOnboarding: z.boolean().optional(),\n worktreeDirectory: z.string().optional(),\n windowZoomLevel: z.number().finite().optional(),\n remoteAccessEnabled: z.boolean().optional(),\n llmRequestTimeout: z.number().min(1000).optional(),\n subagentInactivityTimeout: z.number().min(1000).optional(),\n subagentSounds: z.nativeEnum(SubagentSoundMode).optional(),\n nerdFont: z.boolean().optional(),\n compactionTokenLimit: z.number().optional(),\n compactionTokenLimitPerModel: z.record(z.number()).optional(),\n compactionModel: CompactionModelSchema.optional(),\n});\n\nexport type ManagedSettingsBase = z.infer<typeof ManagedSettingsBaseSchema>;\nexport type GeneralSettings = z.infer<typeof GeneralSettingsSchema>;\nexport type ModelPolicy = z.infer<typeof ModelPolicySchema>;\nexport type McpPolicy = z.infer<typeof McpPolicySchema>;\nexport type MissionPolicy = z.infer<typeof MissionPolicySchema>;\nexport type SandboxSettings = z.infer<typeof SandboxSettingsSchema>;\nexport type FactoryRouterRule = z.infer<typeof FactoryRouterRuleSchema>;\n","// Source-of-truth mirror of factory-mono-alpha custom-model schemas (symbol-only).\n// Verbatim copy of CustomModelBedrockSchema, ManagedCustomModelSchema, and\n// CustomModelsSchema from packages/common/src/settings/schema.ts. Ported as-is\n// per the no-modification rule (includes apiKey / aws credential fields).\n// SandboxModeSchema is colocated here (one-liner from the same settings module).\n\nimport { z } from 'zod';\n\nimport { ModelProvider, ReasoningEffort, SandboxMode } from './enums.js';\n\nconst ReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\nexport const SandboxModeSchema = z.nativeEnum(SandboxMode);\n\nconst CustomModelBedrockSchema = z.object({\n awsProfile: z.string().optional(),\n awsRegion: z.string().min(1).optional(),\n bedrockBaseUrl: z.string().url().optional(),\n awsAuthRefresh: z.string().optional(),\n awsCredentialExport: z.string().optional(),\n});\n\nexport const ManagedCustomModelSchema = z\n .object({\n model: z.string(),\n id: z.string().optional(),\n index: z.number().optional(),\n baseUrl: z.string().optional(),\n apiKey: z.string().optional(),\n provider: z.nativeEnum(ModelProvider),\n displayName: z.string().optional(),\n maxContextLimit: z.number().optional(),\n enableThinking: z.boolean().optional(),\n thinkingMaxTokens: z.number().optional(),\n maxOutputTokens: z.number().optional(),\n reasoningEffort: ReasoningEffortSchema.optional(),\n extraHeaders: z.record(z.string()).optional(),\n extraArgs: z.record(z.unknown()).optional(),\n noImageSupport: z.boolean().optional(),\n bedrock: CustomModelBedrockSchema.optional(),\n })\n .superRefine((model, ctx) => {\n if (model.provider === ModelProvider.BEDROCK_CONVERSE && !model.bedrock) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['bedrock'],\n message:\n 'bedrock-converse custom models require a bedrock configuration block',\n });\n return;\n }\n if (model.bedrock) {\n if (\n model.provider !== ModelProvider.ANTHROPIC &&\n model.provider !== ModelProvider.BEDROCK_CONVERSE\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['provider'],\n message:\n 'bedrock custom models require provider \"anthropic\" or \"bedrock-converse\"',\n });\n }\n return;\n }\n if (!model.baseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['baseUrl'],\n message: 'baseUrl is required unless bedrock is configured',\n });\n }\n if (!model.apiKey) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['apiKey'],\n message: 'apiKey is required unless bedrock is configured',\n });\n }\n });\n\nexport const CustomModelsSchema = z.array(ManagedCustomModelSchema);\n\nexport type ManagedCustomModel = z.infer<typeof ManagedCustomModelSchema>;\nexport type CustomModels = z.infer<typeof CustomModelsSchema>;\n","import { z } from 'zod';\n\nimport { ModelID } from './enums.js';\n\n/**\n * A lenient model ID array that silently drops unrecognized values instead of\n * failing validation. This ensures backward compatibility when ModelID enum\n * values are removed (e.g. after EAP model cleanup) — any Firestore documents\n * still referencing old IDs will have them filtered out rather than causing\n * the entire security policy to fail parsing.\n */\nconst modelIdValues: ReadonlySet<string> = new Set(Object.values(ModelID));\nconst tolerantModelIdArray = z\n .array(z.string())\n .transform((ids) => ids.filter((id): id is ModelID => modelIdValues.has(id)));\n\nexport const UserModelPolicySchema = z.object({\n allowedModelIds: tolerantModelIdArray,\n blockedModelIds: tolerantModelIdArray,\n});\n","// Source-of-truth mirror of factory-mono-alpha loop schemas.\n// Faithful copy of packages/common/src/droid/schemas/loop.ts.\n\nimport { z } from 'zod';\n\nimport { LOOP_INTERVAL_POLICY } from './constants.js';\nimport { DroidLoopStatus, DroidLoopStopReason } from './enums.js';\n\nexport const LoopIntervalMsSchema = z\n .number()\n .int()\n .finite()\n .safe()\n .min(LOOP_INTERVAL_POLICY.minMs)\n .max(LOOP_INTERVAL_POLICY.maxMs);\n\nexport const LoopStateSchema = z.object({\n loopId: z.string(),\n status: z.nativeEnum(DroidLoopStatus),\n intervalMs: LoopIntervalMsSchema,\n iteration: z.number().int().nonnegative(),\n startedAt: z.number().int().nonnegative(),\n updatedAt: z.number().int().nonnegative(),\n nextRunAt: z.number().int().nonnegative().nullable(),\n isDue: z.boolean(),\n lastRunStartedAt: z.number().int().nonnegative().optional(),\n lastRunCompletedAt: z.number().int().nonnegative().optional(),\n stopReason: z.nativeEnum(DroidLoopStopReason).optional(),\n});\n\nexport const StartLoopRequestParamsSchema = z.object({\n intervalMs: LoopIntervalMsSchema,\n prompt: z.string().trim().min(1),\n});\n\nexport const StopLoopRequestParamsSchema = z.object({});\n\nexport const GetLoopStatusRequestParamsSchema = z.object({});\n\nexport const RunLoopNowRequestParamsSchema = z.object({});\n\nexport const StartLoopResultSchema = z.object({\n loopState: LoopStateSchema,\n});\n\nexport const StopLoopResultSchema = z.object({\n loopState: LoopStateSchema.nullable(),\n});\n\nexport const GetLoopStatusResultSchema = z.object({\n loopState: LoopStateSchema.nullable(),\n});\n\nexport const RunLoopNowResultSchema = z.object({\n loopState: LoopStateSchema,\n});\n\nexport type LoopState = z.infer<typeof LoopStateSchema>;\nexport type StartLoopRequestParams = z.infer<\n typeof StartLoopRequestParamsSchema\n>;\nexport type StartLoopResult = z.infer<typeof StartLoopResultSchema>;\nexport type StopLoopResult = z.infer<typeof StopLoopResultSchema>;\nexport type GetLoopStatusResult = z.infer<typeof GetLoopStatusResultSchema>;\nexport type RunLoopNowResult = z.infer<typeof RunLoopNowResultSchema>;\n","// Source-of-truth mirror of factory-mono-alpha selectable-list-item schema.\n// Faithful copy of packages/common/src/droid/schemas/selectable-list-item.ts.\n\nimport { z } from 'zod';\n\nimport { ToolConfirmationOutcome } from './enums.js';\n\n/**\n * Schema for a selectable list item in CLI UI\n *\n * Used for tool confirmation prompts to provide structured options\n * that can be rendered with visual feedback (colors, prefixes, etc.)\n */\nexport const ToolConfirmationListItemSchema = z.object({\n label: z.string(),\n value: z.nativeEnum(ToolConfirmationOutcome),\n});\n\nexport type ToolConfirmationListItem = z.infer<\n typeof ToolConfirmationListItemSchema\n>;\n","// Source-of-truth mirror of factory-mono-alpha MCP schemas.\n// Verbatim copy of packages/common/src/droid/schemas/mcp.ts.\n\nimport { z } from 'zod';\n\nimport { McpServerStatus, McpServerType, SettingsLevel } from './enums.js';\n\n// MCP primitives\nexport const McpServerNameSchema = z.string();\nexport const McpServerTypeSchema = z.enum(['stdio', 'http', 'sse']);\n\n// Server config field schemas (used by registry and add-server requests)\nexport const McpHttpServerConfigFieldsSchema = z.object({\n url: z.string().optional(),\n});\n\nexport const McpStdioServerConfigFieldsSchema = z.object({\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n});\n\n// MCP server status (shared between LIST_MCP_SERVERS result and MCP_STATUS_CHANGED notification)\nexport const McpServerStatusInfoSchema = z.object({\n name: z.string(),\n status: z.nativeEnum(McpServerStatus),\n source: z.nativeEnum(SettingsLevel),\n isManaged: z.boolean(),\n error: z.string().optional(),\n toolCount: z.number().optional(),\n serverType: z.nativeEnum(McpServerType),\n hasAuthTokens: z.boolean().optional(),\n requiresAuth: z.boolean().optional(),\n pendingAuthUrl: z.string().optional(),\n pendingAuthMessage: z.string().optional(),\n pendingAuthState: z.string().optional(),\n});\n\n// MCP status summary (shared between LIST_MCP_SERVERS result and MCP_STATUS_CHANGED notification)\nexport const McpStatusSummarySchema = z.object({\n total: z.number(),\n connected: z.number(),\n connecting: z.number(),\n failed: z.number(),\n disabled: z.number().optional(),\n});\n\n// MCP registry server entity\nconst McpRegistryServerBaseSchema = z.object({\n name: McpServerNameSchema,\n description: z.string(),\n type: McpServerTypeSchema,\n});\n\nexport const McpRegistryServerSchema = McpRegistryServerBaseSchema.merge(\n McpHttpServerConfigFieldsSchema\n)\n .merge(McpStdioServerConfigFieldsSchema)\n .extend({\n note: z.string().optional(),\n logoUrl: z.string().optional(),\n });\n\n// MCP tool entity\nexport const McpToolInfoSchema = z.object({\n serverName: McpServerNameSchema,\n name: z.string(),\n description: z.string().optional(),\n isEnabled: z.boolean(),\n isReadOnly: z.boolean().optional(),\n inputSchema: z\n .object({\n type: z.string().optional(),\n properties: z.record(z.unknown()).optional(),\n required: z.array(z.string()).optional(),\n })\n .optional(),\n});\n","// Source-of-truth mirror of factory-mono-alpha mission-decomposition schemas.\n// Verbatim copy of packages/common/src/droid/schemas/mission-decomposition.ts.\n\nimport { z } from 'zod';\n\nimport { CustomModelsSchema } from './custom-models.js';\nimport {\n DismissalType,\n FeatureStatus,\n FeatureSuccessState,\n IssueSeverity,\n MissionPauseReason,\n MissionState,\n ProgressLogEntryType,\n WorkerFailureReason,\n} from './enums.js';\n\nexport const FeatureSuccessStateSchema = z.nativeEnum(FeatureSuccessState);\n\nconst OptionalNonBlankStringSchema = z.preprocess(\n (value) =>\n typeof value === 'string' && value.trim() === '' ? undefined : value,\n z.string().optional()\n);\n\n// -------------------------\n// Feature schema\n// -------------------------\n\n/**\n * Mission feature schema.\n *\n * NOTE: This is intentionally tolerant (passthrough + optional fields)\n * because the CLI/orchestrator owns the canonical on-disk feature shape and\n * may evolve it over time.\n */\nexport const MissionFeatureSchema = z.object({\n id: z.string(),\n description: z.string(),\n status: z.nativeEnum(FeatureStatus),\n skillName: z.string(),\n preconditions: z.array(z.string()),\n expectedBehavior: z.array(z.string()),\n fulfills: z.array(z.string()).optional(),\n\n // Optional orchestrator-authored fields\n milestone: z.string().optional(),\n\n // System-managed fields (present in CLI features.json)\n workerSessionIds: z.array(z.string()).optional(),\n // Deprecated compatibility fields kept for protocol stability.\n currentWorkerSessionId: z.string().nullable().optional(),\n completedWorkerSessionId: z.string().nullable().optional(),\n});\n\n// -------------------------\n// Progress log schemas\n// -------------------------\n\n// -------------------------\n// Handoff-related schemas\n// -------------------------\n\nconst IssueSeveritySchema = z.nativeEnum(IssueSeverity);\n\nconst DismissalTypeSchema = z.nativeEnum(DismissalType);\n\nexport const DiscoveredIssueSchema = z.object({\n severity: IssueSeveritySchema,\n description: z.string(),\n suggestedFix: z.string().optional(),\n});\n\nexport const VerificationCommandSchema = z.object({\n command: z.string(),\n exitCode: z.number(),\n observation: z.string(),\n});\n\nexport const InteractiveCheckSchema = z.object({\n action: z.string(),\n observed: z.string(),\n});\n\nexport const VerificationSchema = z.object({\n commandsRun: z.array(VerificationCommandSchema),\n interactiveChecks: z.array(InteractiveCheckSchema).optional(),\n});\n\nexport const TestCaseSchema = z.object({\n name: z.string(),\n verifies: z.string(),\n});\n\nexport const TestFileSchema = z.object({\n file: z.string(),\n cases: z.array(TestCaseSchema),\n});\n\nexport const TestsSchema = z.object({\n added: z.array(TestFileSchema),\n updated: z.array(z.string()).optional(),\n coverage: z.string(),\n});\n\nconst SkillDeviationSchema = z.object({\n step: z.string(),\n whatIDidInstead: z.string(),\n why: z.string(),\n});\n\nconst SkillFeedbackSchema = z.object({\n followedProcedure: z.boolean(),\n deviations: z.array(SkillDeviationSchema),\n suggestedChanges: z.array(z.string()).optional(),\n});\n\nexport const HandoffSchema = z.object({\n // Optional for backward compatibility with historical on-disk handoffs.\n salientSummary: z.string().optional(),\n whatWasImplemented: z.string(),\n whatWasLeftUndone: z.string(),\n verification: VerificationSchema,\n tests: TestsSchema,\n discoveredIssues: z.array(DiscoveredIssueSchema),\n skillFeedback: SkillFeedbackSchema.optional(),\n});\n\nexport const DismissalRecordSchema = z.object({\n type: DismissalTypeSchema,\n sourceFeatureId: z.string(),\n summary: z.string(),\n justification: z.string(),\n});\n\n// -------------------------\n// On-disk mission artifact schemas (GitHub issue #974)\n//\n// These describe the shape of files the CLI's MissionFileService reads\n// and writes under `{missionDir}/`. They are intentionally stricter than\n// the protocol-level MissionFeatureSchema above: on-disk corruption\n// (a missing `status`, a truncated `state.json`, etc.) is the failure\n// class that drives scheduler-replay bugs, so schema enforcement here is\n// the first line of defense.\n// -------------------------\n\n/**\n * On-disk feature schema. Kept intentionally more permissive than\n * `MissionFeatureSchema` (several list-typed fields are optional here\n * because `MissionFileService.normalizeFeature()` fills them with `[]`\n * defaults after reading). The fields we keep strict are the ones the\n * orchestrator always authors and whose silent regression would cause\n * scheduler-replay bugs: `id`, `description`, `status`.\n */\nconst OnDiskMissionFeatureSchema = z\n .object({\n id: z.string(),\n description: z.string(),\n // Required: silent default-to-Pending re-enables the replay bug #974\n // defends against. Missing status is corruption. Readers may have a\n // narrow self-heal path for uniformly-legacy files authored by older\n // CLI builds that never wrote `status`; anything else routes through\n // the pause/repair flow in MissionRunner.\n status: z.nativeEnum(FeatureStatus),\n skillName: z.string().optional(),\n preconditions: z.array(z.string()).optional(),\n expectedBehavior: z.union([z.array(z.string()), z.string()]).optional(),\n fulfills: z.array(z.string()).optional(),\n milestone: z.string().optional(),\n workerSessionIds: z.array(z.string()).optional(),\n currentWorkerSessionId: z.string().nullable().optional(),\n completedWorkerSessionId: z.string().nullable().optional(),\n })\n .passthrough();\n\n/**\n * Schema for handoff entries stored in `handoffs.jsonl`.\n */\nexport const HandoffEntrySchema = z.object({\n timestamp: z.string(),\n workerSessionId: z.string(),\n featureId: z.string(),\n milestone: z.string().optional(),\n commitId: OptionalNonBlankStringSchema,\n repoPath: OptionalNonBlankStringSchema,\n handoff: HandoffSchema,\n});\n\n/**\n * Schema for per-worker handoff JSON files written to\n * `{missionDir}/handoffs/{timestamp}__{featureId}__{workerSessionId}.json`.\n */\nexport const WorkerHandoffFileSchema = z.object({\n timestamp: z.string(),\n workerSessionId: z.string(),\n featureId: z.string(),\n milestone: z.string().optional(),\n commitId: z.string().optional(),\n successState: z.string().optional(),\n returnToOrchestrator: z.boolean().optional(),\n handoff: HandoffSchema,\n});\n\n/**\n * Schema for the mission state file (`state.json`). System-managed.\n *\n * Kept permissive on unknown top-level keys (`.passthrough`) to stay\n * forward-compatible with in-flight missions authored by older CLI versions,\n * but strict on required fields and enums so that genuine corruption (e.g.\n * truncated write) is caught.\n */\nexport const MissionStateFileSchema = z\n .object({\n missionId: z.string().min(1),\n state: z.nativeEnum(MissionState),\n workingDirectory: z.string().min(1),\n createdAt: z.string(),\n updatedAt: z.string(),\n lastReviewedHandoffCount: z.number().nonnegative().optional(),\n })\n .passthrough();\n\n/**\n * Schema for the features file (`features.json`).\n *\n * Accepts only the modern `{ \"features\": [...] }` wrapper shape; legacy bare\n * arrays are normalized into the wrapper shape by callers before validation.\n */\nexport const FeaturesFileSchema = z\n .object({\n features: z.array(OnDiskMissionFeatureSchema),\n })\n .passthrough();\n\n/**\n * Schema for `runtime-custom-models.json`.\n */\nexport const RuntimeCustomModelsFileSchema = z.object({\n customModels: CustomModelsSchema,\n});\n\n// -------------------------\n// Progress log entry schemas\n// -------------------------\n\nconst BaseProgressLogEntrySchema = z.object({\n timestamp: z.string(),\n});\n\nexport const MissionAcceptedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionAccepted),\n title: z.string(),\n});\n\nexport const MissionPausedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionPaused),\n /**\n * Structured cause when the pause is automatic (e.g. unrecoverable 402).\n * Absent for user- or runner-initiated pauses.\n */\n pauseReason: z.nativeEnum(MissionPauseReason).optional(),\n});\n\nexport const MissionResumedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionResumed),\n resumeWorkerSessionId: z.string().optional(),\n});\n\nexport const MissionRunStartedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionRunStarted),\n message: z.string().optional(),\n});\n\nexport const WorkerStartedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerStarted),\n workerSessionId: z.string(),\n spawnId: z.string(),\n featureId: z.string().optional(),\n});\n\nexport const WorkerSelectedFeatureEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerSelectedFeature),\n workerSessionId: z.string(),\n featureId: z.string(),\n });\n\nexport const WorkerCompletedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerCompleted),\n workerSessionId: z.string(),\n featureId: z.string(),\n successState: FeatureSuccessStateSchema,\n returnToOrchestrator: z.boolean(),\n commitId: OptionalNonBlankStringSchema,\n repoPath: OptionalNonBlankStringSchema,\n exitCode: z.number(),\n validatorsPassed: z.boolean().optional(),\n handoff: HandoffSchema.optional(),\n});\n\nexport const WorkerFailedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerFailed),\n workerSessionId: z.string().optional(),\n spawnId: z.string(),\n exitCode: z.number().optional(),\n reason: z.string(),\n /**\n * Structured cause that lets the MissionRunner branch on specific failure\n * modes (e.g. unrecoverable 402 → auto-pause). Absent means a generic\n * failure: requeue + return to orchestrator.\n */\n failureReason: z.nativeEnum(WorkerFailureReason).optional(),\n});\n\nexport const WorkerPausedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerPaused),\n workerSessionId: z.string(),\n featureId: z.string().optional(),\n});\n\nexport const HandoffItemsDismissedEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.HandoffItemsDismissed),\n dismissals: z.array(DismissalRecordSchema).optional(),\n });\n\nexport const MilestoneValidationTriggeredEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MilestoneValidationTriggered),\n milestone: z.string(),\n featureId: z.string(),\n });\n\nexport const ProgressLogEntrySchema = z.discriminatedUnion('type', [\n MissionAcceptedEntrySchema,\n MissionPausedEntrySchema,\n MissionResumedEntrySchema,\n MissionRunStartedEntrySchema,\n WorkerStartedEntrySchema,\n WorkerSelectedFeatureEntrySchema,\n WorkerCompletedEntrySchema,\n WorkerFailedEntrySchema,\n WorkerPausedEntrySchema,\n HandoffItemsDismissedEntrySchema,\n MilestoneValidationTriggeredEntrySchema,\n]);\n","// Source-of-truth mirror of factory-mono-alpha CLI protocol schemas.\n// Verbatim copy of packages/common/src/droid/schemas/cli.ts.\n\nimport { z } from 'zod';\n\nimport { SandboxModeSchema } from './custom-models.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n DroidClientMethod,\n DroidErrorType,\n DroidWorkingState,\n McpAuthOutcome,\n MissionState,\n ReasoningEffort,\n SandboxOperationType,\n SandboxViolationReason,\n SandboxViolationType,\n SessionNotificationType,\n ToolConfirmationOutcome,\n ToolConfirmationType,\n} from './enums.js';\nimport {\n DroidInteractionModeSchema,\n JsonRpcBaseNotificationSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n JsonRpcEnvelopeSchema,\n} from './json-rpc.js';\nimport { LoopStateSchema } from './loop.js';\nimport { McpServerStatusInfoSchema, McpStatusSummarySchema } from './mcp.js';\nimport {\n FactoryDroidMessageSchema,\n ToolResultSchema,\n ToolUseSchema,\n} from './messages.js';\nimport {\n MissionFeatureSchema,\n ProgressLogEntrySchema,\n} from './mission-decomposition.js';\nimport { MissionModelSettingsSchema } from './model-settings.js';\nimport { ToolConfirmationListItemSchema } from './selectable-list-item.js';\nimport { TokenUsageSchema } from './session.js';\n\nconst ToolResultNotificationSchema = ToolResultSchema.extend({\n type: z.literal(SessionNotificationType.TOOL_RESULT),\n messageId: z.string(),\n});\n\n// Schema for streaming updates from subagent tool calls\nexport const ToolProgressUpdateSchema = z.object({\n type: z.enum(['tool_call', 'tool_result', 'error', 'status', 'message']),\n toolName: z.string().optional(),\n status: z.string().optional(),\n details: z.string().optional(),\n text: z.string().optional(),\n error: z.string().optional(),\n timestamp: z.number().optional(),\n parameters: z.record(z.unknown()).optional(),\n valueSnippet: z.string().optional(),\n terminalId: z.string().optional(),\n fullOutput: z.string().optional(),\n /** The session ID of the spawned subagent, parsed from a system/init debug event */\n subagentSessionId: z.string().optional(),\n});\n\nconst ToolProgressUpdateNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.TOOL_PROGRESS_UPDATE),\n toolUseId: z.string(),\n toolName: z.string(),\n update: ToolProgressUpdateSchema,\n});\n\nconst CreateMessageNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.CREATE_MESSAGE),\n message: FactoryDroidMessageSchema,\n parentId: z.string().optional(),\n requestId: z.string().optional(),\n});\n\nconst ErrorNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.ERROR),\n message: z.string(),\n errorType: z.nativeEnum(DroidErrorType),\n timestamp: z.string(),\n error: z\n .object({\n name: z.string(),\n message: z.string(),\n })\n .optional(),\n});\n\nconst DroidWorkingStateChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.DROID_WORKING_STATE_CHANGED),\n newState: z.nativeEnum(DroidWorkingState),\n});\n\nexport const SessionCompactedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.SESSION_COMPACTED),\n summaryId: z.string(),\n removedCount: z.number().nonnegative(),\n visibleBoundaryMessageId: z.string().nullable(),\n});\n\nexport const LoopStateChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.LOOP_STATE_CHANGED),\n loopState: LoopStateSchema,\n});\n\nconst PermissionResolvedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.PERMISSION_RESOLVED),\n requestId: z.string(),\n toolUseIds: z.array(z.string()), // Array to match batched permission requests\n selectedOption: z.nativeEnum(ToolConfirmationOutcome),\n});\n\nconst SettingsUpdatedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.SETTINGS_UPDATED),\n requestId: z.string().optional(),\n settings: z.object({\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .optional()\n .describe('Deprecated: use interactionMode + autonomyLevel instead.'),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n enabledToolIds: z.array(z.string()).optional(),\n disabledToolIds: z.array(z.string()).optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n compactionThresholdCheckEnabled: z.boolean().optional(),\n }),\n});\n\nconst SessionTitleUpdatedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.SESSION_TITLE_UPDATED),\n requestId: z.string().optional(),\n title: z.string(),\n});\n\nconst McpStatusChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MCP_STATUS_CHANGED),\n servers: z.array(McpServerStatusInfoSchema),\n summary: McpStatusSummarySchema,\n});\n\nconst AssistantTextDeltaNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.ASSISTANT_TEXT_DELTA),\n messageId: z.string(),\n blockIndex: z.number(),\n textDelta: z.string(),\n});\n\nconst AssistantTextCompleteNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.ASSISTANT_TEXT_COMPLETE),\n messageId: z.string(),\n blockIndex: z.number(),\n});\n\nconst StructuredOutputNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.STRUCTURED_OUTPUT),\n messageId: z.string(),\n structuredOutput: z.record(z.unknown()).nullable(),\n});\n\nconst ThinkingTextDeltaNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.THINKING_TEXT_DELTA),\n messageId: z.string(),\n blockIndex: z.number(),\n textDelta: z.string(),\n});\n\nconst ThinkingTextCompleteNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.THINKING_TEXT_COMPLETE),\n messageId: z.string(),\n blockIndex: z.number(),\n durationMs: z.number().nonnegative().optional(),\n});\n\nexport const SessionTokenUsageChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.SESSION_TOKEN_USAGE_CHANGED),\n sessionId: z.string(),\n tokenUsage: TokenUsageSchema,\n inclusiveTokenUsage: TokenUsageSchema.optional(),\n // Latest provider-reported usage used by the compaction meter.\n lastCallTokenUsage: TokenUsageSchema.pick({\n inputTokens: true,\n cacheReadTokens: true,\n })\n .extend({\n outputTokens: TokenUsageSchema.shape.outputTokens.optional(),\n })\n .optional(),\n});\n\n// Mission notification schemas\nexport const MissionStateChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_STATE_CHANGED),\n state: z.nativeEnum(MissionState),\n updatedAt: z.string().optional(),\n});\n\nexport const MissionFeaturesChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_FEATURES_CHANGED),\n features: z.array(MissionFeatureSchema),\n});\n\nexport const MissionProgressEntryNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_PROGRESS_ENTRY),\n progressLog: z.array(ProgressLogEntrySchema),\n});\n\nexport const MissionHeartbeatNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_HEARTBEAT),\n timestamp: z.string(),\n});\n\nexport const MissionWorkerStartedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_WORKER_STARTED),\n workerSessionId: z.string(),\n});\n\nexport const MissionWorkerCompletedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_WORKER_COMPLETED),\n workerSessionId: z.string(),\n exitCode: z.number(),\n});\n\nconst McpAuthRequiredNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MCP_AUTH_REQUIRED),\n serverName: z.string(),\n authUrl: z.string(),\n message: z.string(),\n state: z.string(),\n});\n\nconst McpAuthCompletedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MCP_AUTH_COMPLETED),\n serverName: z.string(),\n outcome: z.nativeEnum(McpAuthOutcome),\n message: z.string(),\n});\n\nconst HookCommandSchema = z.object({\n command: z.string(),\n timeout: z.number().optional(),\n});\n\nconst HookResultSchema = z.object({\n exitCode: z.number(),\n stdout: z.string(),\n stderr: z.string(),\n command: z.string().optional(),\n timeout: z.number().optional(),\n});\n\nexport const DroidHookEventSchema = z.enum([\n 'PreToolUse',\n 'PostToolUse',\n 'Notification',\n 'UserPromptSubmit',\n 'Stop',\n 'SubagentStop',\n 'PreCompact',\n 'SessionStart',\n 'SessionEnd',\n]);\n\nconst ToolCallNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.TOOL_CALL),\n toolUse: ToolUseSchema,\n});\n\nconst QueuedMessagesDiscardedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.QUEUED_MESSAGES_DISCARDED),\n text: z.string(),\n requestId: z.string().optional(),\n});\n\n/**\n * Internal keep-alive notification emitted while a long-running tool\n * (e.g. Execute/pytest) is actively running without producing new streaming\n * output. Consumed by the daemon to refresh the session inactivity timeout;\n * never forwarded to external clients.\n */\nconst ToolExecutionHeartbeatNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.TOOL_EXECUTION_HEARTBEAT),\n toolUseId: z.string(),\n toolName: z.string(),\n});\n\nconst HookExecutionStartedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.HOOK_EXECUTION_STARTED),\n hookId: z.string(),\n hookEventName: z.string(),\n hookMatcher: z.string().optional(),\n hookCommands: z.array(HookCommandSchema),\n hookToolCallId: z.string().optional(),\n isParallelExecution: z.boolean().optional(),\n parallelGroupId: z.string().optional(),\n});\n\nconst HookExecutionCompletedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.HOOK_EXECUTION_COMPLETED),\n hookId: z.string(),\n hookEventName: DroidHookEventSchema.optional(),\n hookMatcher: z.string().optional(),\n hookToolCallId: z.string().optional(),\n hookStatus: z.enum(['completed', 'error']),\n hookResults: z.array(HookResultSchema).optional(),\n});\n\nexport const SandboxStatusSchema = z.object({\n enabled: z.boolean(),\n mode: SandboxModeSchema.optional(),\n});\n\nexport const SessionNotificationSchemaList = [\n ToolResultNotificationSchema,\n ToolProgressUpdateNotificationSchema,\n CreateMessageNotificationSchema,\n ErrorNotificationSchema,\n DroidWorkingStateChangedNotificationSchema,\n SessionCompactedNotificationSchema,\n LoopStateChangedNotificationSchema,\n PermissionResolvedNotificationSchema,\n SettingsUpdatedNotificationSchema,\n SessionTitleUpdatedNotificationSchema,\n McpStatusChangedNotificationSchema,\n AssistantTextDeltaNotificationSchema,\n AssistantTextCompleteNotificationSchema,\n StructuredOutputNotificationSchema,\n ThinkingTextDeltaNotificationSchema,\n ThinkingTextCompleteNotificationSchema,\n SessionTokenUsageChangedNotificationSchema,\n // Mission notifications\n MissionStateChangedNotificationSchema,\n MissionFeaturesChangedNotificationSchema,\n MissionProgressEntryNotificationSchema,\n MissionHeartbeatNotificationSchema,\n MissionWorkerStartedNotificationSchema,\n MissionWorkerCompletedNotificationSchema,\n McpAuthRequiredNotificationSchema,\n McpAuthCompletedNotificationSchema,\n HookExecutionStartedNotificationSchema,\n HookExecutionCompletedNotificationSchema,\n ToolCallNotificationSchema,\n QueuedMessagesDiscardedNotificationSchema,\n ToolExecutionHeartbeatNotificationSchema,\n] as const;\n\nconst SessionNotificationParamsSchema = z.object({\n notification: z.discriminatedUnion('type', SessionNotificationSchemaList),\n});\n\nexport const SessionNotificationSchema = JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DroidClientMethod.SESSION_NOTIFICATION),\n params: SessionNotificationParamsSchema,\n});\n\n// Tool Confirmation Details schemas (matching TypeScript types in types.ts)\nconst EditToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.Edit),\n filePath: z.string(),\n fileName: z.string(),\n oldContent: z.string().optional(),\n newContent: z.string().optional(),\n});\n\nconst ExecuteToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.Execute),\n fullCommand: z.string(),\n command: z.string(),\n extractedCommands: z.array(z.string()).optional(),\n impactLevel: z.string().optional(),\n riskLevelReason: z.string().optional(),\n});\n\nconst CreateToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.Create),\n filePath: z.string(),\n fileName: z.string(),\n content: z.string(),\n});\n\nconst AskUserConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.AskUser),\n questionnaire: z.string(),\n parsed: z\n .object({\n questions: z.array(\n z.object({\n index: z.number(),\n topic: z.string(),\n question: z.string(),\n options: z.array(z.string()),\n })\n ),\n })\n .optional(),\n parseError: z\n .object({\n message: z.string(),\n line: z.number().optional(),\n })\n .optional(),\n});\n\nconst ExitSpecModeConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.ExitSpecMode),\n plan: z.string(),\n title: z.string().optional(),\n});\n\nconst ProposeMissionConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.ProposeMission),\n proposal: z.string(),\n title: z.string().optional(),\n});\n\nconst StartMissionRunConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.StartMissionRun),\n runningMissionCount: z.number(),\n runningMissionSessionIds: z.array(z.string()),\n});\n\nconst ApplyPatchToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.ApplyPatch),\n filePath: z.string(),\n fileName: z.string(),\n patchContent: z.string(),\n oldContent: z.string().optional(),\n newContent: z.string().optional(),\n});\n\nconst McpToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.McpTool),\n toolName: z.string(),\n impactLevel: z.string(),\n serverName: z.string().optional(),\n actualToolName: z.string().optional(),\n});\n\nconst SandboxViolationConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.SandboxViolation),\n violatingToolName: z.string(),\n target: z.string(),\n operationType: z.nativeEnum(SandboxOperationType),\n violationType: z.nativeEnum(SandboxViolationType),\n reason: z.string(),\n violationReason: z.nativeEnum(SandboxViolationReason).optional(),\n isOrgDeny: z.boolean(),\n});\n\nexport const ToolConfirmationDetailsSchema = z.discriminatedUnion('type', [\n EditToolConfirmationDetailsSchema,\n ExecuteToolConfirmationDetailsSchema,\n CreateToolConfirmationDetailsSchema,\n AskUserConfirmationDetailsSchema,\n ExitSpecModeConfirmationDetailsSchema,\n ProposeMissionConfirmationDetailsSchema,\n StartMissionRunConfirmationDetailsSchema,\n ApplyPatchToolConfirmationDetailsSchema,\n McpToolConfirmationDetailsSchema,\n SandboxViolationConfirmationDetailsSchema,\n]);\n\nconst ToolConfirmationInfoSchema = z.object({\n toolUse: ToolUseSchema,\n confirmationType: z.nativeEnum(ToolConfirmationType),\n details: ToolConfirmationDetailsSchema,\n});\n\nexport const RequestPermissionRequestParamsSchema = z.object({\n toolUses: z.array(ToolConfirmationInfoSchema),\n options: z.array(ToolConfirmationListItemSchema),\n});\n\nexport const RequestPermissionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidClientMethod.REQUEST_PERMISSION),\n params: RequestPermissionRequestParamsSchema,\n});\n\n// ============================================================\n// Ask User (multi-question user input)\n// ============================================================\n\nexport const AskUserQuestionSchema = z.object({\n index: z.number(), // 1-based\n topic: z.string(),\n question: z.string(),\n options: z.array(z.string()),\n});\n\nexport const AskUserRequestParamsSchema = z.object({\n /** The tool call id that initiated this AskUser request */\n toolCallId: z.string(),\n questions: z.array(AskUserQuestionSchema),\n});\n\nexport const AskUserRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidClientMethod.ASK_USER),\n params: AskUserRequestParamsSchema,\n});\n\nexport const AskUserCollectedAnswerSchema = z.object({\n index: z.number(),\n question: z.string(),\n answer: z.string(),\n});\n\nexport const AskUserResultSchema = z.object({\n /** If true, the user cancelled the questionnaire */\n cancelled: z.boolean().optional(),\n answers: z.array(AskUserCollectedAnswerSchema),\n});\n\nexport const AskUserResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: AskUserResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const RequestPermissionResultSchema = z\n .object({\n selectedOption: z.nativeEnum(ToolConfirmationOutcome),\n comment: z.string().optional(),\n editedSpecContent: z.string().optional(),\n })\n .superRefine((value, ctx) => {\n if (\n value.selectedOption === ToolConfirmationOutcome.ProceedEdit &&\n typeof value.editedSpecContent !== 'string'\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'editedSpecContent is required when selectedOption is proceed_edit',\n path: ['editedSpecContent'],\n });\n }\n });\n\nexport const RequestPermissionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: RequestPermissionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const CliRequestOrNotificationSchema = JsonRpcEnvelopeSchema.and(\n z.discriminatedUnion('method', [\n SessionNotificationSchema,\n RequestPermissionRequestSchema,\n AskUserRequestSchema,\n ])\n);\n","// Source-of-truth mirror of factory-mono-alpha client protocol schemas.\n// Verbatim copy of packages/common/src/droid/schemas/client.ts.\n\nimport { z } from 'zod';\n\nimport {\n AskUserRequestParamsSchema,\n RequestPermissionRequestParamsSchema,\n SandboxStatusSchema,\n} from './cli.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n ContextCategoryColorKey,\n ContextStatsAccuracy,\n DecompSessionType,\n DroidLocation,\n DroidServerMethod,\n LLMModelTier,\n MessageRole,\n MessageVisibility,\n MissionState,\n ModelKind,\n ModelProvider,\n QueuePlacement,\n ReasoningEffort,\n ResolveQueuedUserMessageAction,\n SessionOrigin,\n SettingsLevel,\n SkillLocation,\n} from './enums.js';\nimport { HostIdSchema } from './host.js';\nimport {\n DroidInteractionModeSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n} from './json-rpc.js';\nimport { LoopStateSchema } from './loop.js';\nimport {\n McpHttpServerConfigFieldsSchema,\n McpRegistryServerSchema,\n McpServerNameSchema,\n McpServerStatusInfoSchema,\n McpServerTypeSchema,\n McpStatusSummarySchema,\n McpStdioServerConfigFieldsSchema,\n McpToolInfoSchema,\n} from './mcp.js';\nimport {\n Base64ImageSourceSchema,\n DocumentSourceSchema,\n FactoryDroidMessageSchema,\n} from './messages.js';\nimport {\n MissionFeatureSchema,\n ProgressLogEntrySchema,\n} from './mission-decomposition.js';\nimport { MissionModelSettingsSchema } from './model-settings.js';\nimport { SessionSourceSchema } from './session-source.js';\nimport { SessionTagSchema, TokenUsageSchema } from './session.js';\n\n/**\n * Schema for available model configuration returned in session init/load responses.\n * This represents both built-in models (feature-flag filtered) and custom BYOK models.\n */\nexport const AvailableModelConfigSchema = z.object({\n id: z.string(),\n displayName: z.string(),\n shortDisplayName: z.string(),\n modelProvider: z.nativeEnum(ModelProvider),\n supportedReasoningEfforts: z.array(z.nativeEnum(ReasoningEffort)),\n defaultReasoningEffort: z.nativeEnum(ReasoningEffort),\n isCustom: z.boolean().default(false),\n noImageSupport: z.boolean().optional(),\n tier: z.nativeEnum(LLMModelTier).optional(),\n tokenMultiplier: z.number().optional(),\n promoLabel: z.string().optional(),\n kind: z.nativeEnum(ModelKind).optional(),\n variantBadge: z.string().optional(),\n});\n\nexport const ContextStatsSchema = z.object({\n used: z.number(),\n remaining: z.number(),\n limit: z.number(),\n accuracy: z.nativeEnum(ContextStatsAccuracy),\n updatedAt: z.string(),\n});\n\nconst StdioMcpSchema = z.object({\n name: z.string(),\n command: z.string(),\n args: z.array(z.string()).default([]),\n env: z.record(z.string()).optional().default({}),\n});\n\nconst HttpHeaderSchema = z.object({\n name: z.string(),\n value: z.string(),\n});\n\nconst HttpMcpSchema = z.object({\n type: z.literal('http'),\n name: z.string(),\n url: z.string().url(),\n headers: HttpHeaderSchema.array().default([]),\n});\n\nconst SseMcpSchema = z.object({\n type: z.literal('sse'),\n name: z.string(),\n url: z.string().url(),\n headers: HttpHeaderSchema.array().default([]),\n});\n\nconst McpServersSchema = z\n .union([StdioMcpSchema, HttpMcpSchema, SseMcpSchema])\n .array();\n\nconst SessionSchema = z.object({\n messages: FactoryDroidMessageSchema.array(),\n title: z.string().optional(),\n});\n\n// Session type for mission decomposition (orchestrator manages workers)\nconst DecompSessionTypeSchema = z.nativeEnum(DecompSessionType);\n\nconst ToolOverrideParamsSchema = z.object({\n enabledToolIds: z.array(z.string()).optional(),\n disabledToolIds: z.array(z.string()).optional(),\n});\n\nexport const OutputFormatSchema = z.object({\n type: z.literal('json_schema'),\n schema: z.record(z.unknown()),\n});\n\nexport const InitializeSessionRequestParamsSchema = z\n .object({\n machineId: z.string(),\n cwd: z.string(),\n // Optional if we want to attach a session to a specific workspace\n workspaceId: z.string().optional(),\n // Optional if we want to create a session with a specific ID\n sessionId: z.string().optional(),\n mcpServers: McpServersSchema.optional(),\n // Session settings (optional - uses defaults from settings.json if not provided)\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .optional()\n .describe('Deprecated: use interactionMode + autonomyLevel instead.'),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n compactionThresholdCheckEnabled: z.boolean().optional(),\n /**\n * @deprecated use session tags instead: mission decomposition session\n * type (orchestrator or worker). undefined = standard session (not part of decomposition)\n */\n decompSessionType: DecompSessionTypeSchema.optional(),\n /**\n * @deprecated use session tags instead: mission id for worker sessions\n * (links worker back to its orchestrator's mission)\n */\n decompMissionId: z.string().optional(),\n // Skip permission checks (used by worker sessions running autonomously)\n skipPermissionsUnsafe: z.boolean().optional(),\n // Session metadata for delegations (Linear, Slack, etc.)\n sessionLocation: z.string().optional(),\n sessionSource: SessionSourceSchema.optional(),\n sessionOriginHint: z.nativeEnum(SessionOrigin).optional(),\n tags: z.array(SessionTagSchema).optional(),\n // OAuth callback URI for MCP auth relay (set by frontend based on web vs desktop client)\n mcpOAuthCallbackUri: z.string().optional(),\n /**\n * When true, the daemon should create or reuse a git worktree rooted\n * at `cwd` and run the session there. The original `cwd` is used to\n * locate the git repo; the actual session cwd becomes the worktree\n * path. No-op when `cwd` is not inside a git repository.\n */\n worktree: z.boolean().optional(),\n /**\n * Optional override for where the worktree directory is created.\n * Falls back to the user's `worktreeDirectory` setting (or the\n * sibling-of-repo default) when omitted.\n */\n worktreeDir: z.string().optional(),\n })\n .merge(ToolOverrideParamsSchema);\n\nexport const LoadSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n mcpServers: McpServersSchema.optional(),\n loadAllMessages: z.boolean().optional(),\n // OAuth callback URI for MCP auth relay (set by frontend based on web vs desktop client)\n mcpOAuthCallbackUri: z.string().optional(),\n});\n\nexport const AddUserMessageRequestParamsSchema = z.object({\n messageId: z.string().optional(),\n text: z.string(),\n images: Base64ImageSourceSchema.array().optional(),\n files: DocumentSourceSchema.array().optional(),\n outputFormat: OutputFormatSchema.optional(),\n skipAgentLoop: z.boolean().optional(),\n queuePlacement: z.nativeEnum(QueuePlacement).optional(),\n role: z.nativeEnum(MessageRole).optional(),\n visibility: z.nativeEnum(MessageVisibility).optional(),\n userMessageSource: z.nativeEnum(SessionOrigin).optional(),\n});\n\nconst QueuePlacementSchema = z.nativeEnum(QueuePlacement);\n\nexport const ResolveQueuedUserMessageRequestParamsSchema = z.discriminatedUnion(\n 'action',\n [\n z.object({\n requestId: z.string(),\n action: z.literal(ResolveQueuedUserMessageAction.UpdateQueue),\n queuePlacement: QueuePlacementSchema,\n }),\n z.object({\n requestId: z.string(),\n action: z.literal(ResolveQueuedUserMessageAction.Delete),\n }),\n ]\n);\n\nexport const InterruptSessionRequestParamsSchema = z.object({});\n\nconst CloseSessionRequestParamsSchema = z.object({\n reason: z.enum(['clear', 'logout', 'prompt_input_exit', 'other']).optional(),\n});\n\nexport const CloseSessionResultSchema = z.object({});\n\nexport const KillWorkerSessionRequestParamsSchema = z.object({\n workerSessionId: z.string(),\n});\n\nexport const KillWorkerSessionResultSchema = z.object({});\n\nexport const UpdateSessionSettingsRequestParamsSchema = z\n .object({\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .optional()\n .describe('Deprecated: use interactionMode + autonomyLevel instead.'),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n specModeModelId: z.string().nullable().optional(),\n specModeReasoningEffort: z\n .nativeEnum(ReasoningEffort)\n .nullable()\n .optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n tags: z.array(SessionTagSchema).optional(),\n compactionTokenLimit: z.number().optional(),\n compactionThresholdCheckEnabled: z.boolean().optional(),\n })\n .merge(ToolOverrideParamsSchema);\n\nconst SessionSettingsSchema = z\n .object({\n modelId: z.string(),\n reasoningEffort: z.nativeEnum(ReasoningEffort),\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .optional()\n .describe('Deprecated: use interactionMode + autonomyLevel instead.'),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n tags: z.array(SessionTagSchema).optional(),\n sandbox: SandboxStatusSchema.optional(),\n compactionThresholdCheckEnabled: z.boolean().optional(),\n })\n .merge(ToolOverrideParamsSchema);\n\nconst GitRepoInfoSchema = z.object({\n owner: z.string().optional(),\n repoName: z.string(),\n});\n\n/**\n * Worktree metadata returned to the client when a session is created in\n * an isolated git worktree. Surfaces the branch + path so the UI can\n * display badges and the user can locate the worktree on disk.\n */\nconst SessionWorktreeInfoSchema = z.object({\n branch: z.string(),\n path: z.string(),\n repoRoot: z.string().optional(),\n isNewlyCreated: z.boolean(),\n});\n\nexport const InitializeSessionResultSchema = z.object({\n sessionId: z.string(),\n hostId: HostIdSchema.optional(),\n session: SessionSchema,\n mcpServers: McpServersSchema.optional(),\n settings: SessionSettingsSchema,\n gitRepo: GitRepoInfoSchema.optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n worktree: SessionWorktreeInfoSchema.optional(),\n});\n\nexport const WorkerStateInfoSchema = z.object({\n startedAt: z.string(),\n completedAt: z.string().optional(),\n exitCode: z.number().optional(),\n});\n\n// Mission snapshot schema (optional, only for orchestrator sessions)\nexport const MissionStateSchema = z.object({\n state: z.nativeEnum(MissionState),\n updatedAt: z.string().optional(),\n title: z.string().optional(),\n workingDirectory: z.string().optional(),\n features: z.array(MissionFeatureSchema),\n progressLog: z.array(ProgressLogEntrySchema),\n workerSessionIds: z.array(z.string()),\n workerStates: z.record(WorkerStateInfoSchema).optional(),\n tokenUsage: TokenUsageSchema.optional(),\n tokenUsageBySessionId: z.record(TokenUsageSchema).optional(),\n});\n\nexport const LoadSessionResultSchema = z.object({\n session: SessionSchema,\n hostId: HostIdSchema.optional(),\n mcpServers: McpServersSchema.optional(),\n pendingPermissions: z\n .array(\n RequestPermissionRequestParamsSchema.extend({\n requestId: z.string(),\n })\n )\n .optional(),\n pendingAskUserRequests: z\n .array(\n AskUserRequestParamsSchema.extend({\n requestId: z.string(),\n })\n )\n .optional(),\n settings: SessionSettingsSchema,\n isAgentLoopInProgress: z.boolean().optional(),\n queuedMessages: z\n .array(\n AddUserMessageRequestParamsSchema.extend({\n requestId: z.string(),\n })\n )\n .optional(),\n gitRepo: GitRepoInfoSchema.optional(),\n cwd: z.string().optional(),\n callingSessionId: z.string().optional(),\n callingToolUseId: z.string().optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n // Token usage for the session (input, output, cache tokens)\n tokenUsage: TokenUsageSchema.optional(),\n // Mission state (only for orchestrator sessions with active missions)\n mission: MissionStateSchema.optional(),\n // Session type for mission decomposition (orchestrator or worker)\n decompSessionType: DecompSessionTypeSchema.optional(),\n loopState: LoopStateSchema.nullable().optional(),\n});\n\nexport const AddUserMessageResultSchema = z.object({});\n\nexport const ResolveQueuedUserMessageResultSchema = z.object({});\n\nexport const InterruptSessionResultSchema = z.object({});\n\nexport const UpdateSessionSettingsResultSchema = z.object({});\n\nexport const GetUserInfoResultSchema = z.object({\n userId: z.string(),\n orgId: z.string(),\n});\n\nexport const ValidateWorkingDirectoryResultSchema = z.object({\n isValid: z.boolean(),\n error: z.string().optional(),\n /**\n * The fully-resolved absolute path (tilde expanded, `..`/`.` normalized,\n * symlinks canonicalized). Set by daemons that support it when\n * `isValid === true`. Optional for backwards compatibility with daemons\n * that predate the field — callers should fall back to the original\n * user input when absent.\n */\n resolvedPath: z.string().optional(),\n});\n\nexport const InitializeSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.INITIALIZE_SESSION),\n params: InitializeSessionRequestParamsSchema,\n});\n\nexport const LoadSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LOAD_SESSION),\n params: LoadSessionRequestParamsSchema,\n});\n\nexport const AddUserMessageRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.ADD_USER_MESSAGE),\n params: AddUserMessageRequestParamsSchema,\n});\n\nexport const ResolveQueuedUserMessageRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.RESOLVE_QUEUED_USER_MESSAGE),\n params: ResolveQueuedUserMessageRequestParamsSchema,\n });\n\nexport const InterruptSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.INTERRUPT_SESSION),\n params: InterruptSessionRequestParamsSchema,\n});\n\nexport const CloseSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.CLOSE_SESSION),\n params: CloseSessionRequestParamsSchema,\n});\n\nexport const KillWorkerSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.KILL_WORKER_SESSION),\n params: KillWorkerSessionRequestParamsSchema,\n});\n\nexport const UpdateSessionSettingsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.UPDATE_SESSION_SETTINGS),\n params: UpdateSessionSettingsRequestParamsSchema,\n });\n\n// MCP server management requests\nconst McpServerNameParamsSchema = z.object({\n serverName: McpServerNameSchema,\n});\n\n// MCP config mutations are applied via user-level overrides only.\nconst McpSettingsLevelSchema = z.literal(SettingsLevel.User);\n\nconst McpHttpServerAddFieldsSchema = McpHttpServerConfigFieldsSchema.extend({\n headers: z.record(z.string()).optional(),\n});\n\nconst McpStdioServerAddFieldsSchema = McpStdioServerConfigFieldsSchema.extend({\n env: z.record(z.string()).optional(),\n});\n\nexport const ToggleMcpServerRequestParamsSchema =\n McpServerNameParamsSchema.extend({\n enabled: z.boolean(),\n settingsLevel: McpSettingsLevelSchema,\n });\n\nconst ToggleMcpServerResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const ToggleMcpServerRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.TOGGLE_MCP_SERVER),\n params: ToggleMcpServerRequestParamsSchema,\n});\n\nexport const AuthenticateMcpServerRequestParamsSchema =\n McpServerNameParamsSchema.extend({});\n\nconst AuthenticateMcpServerResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const AuthenticateMcpServerRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.AUTHENTICATE_MCP_SERVER),\n params: AuthenticateMcpServerRequestParamsSchema,\n });\n\nexport const CancelMcpAuthRequestParamsSchema =\n McpServerNameParamsSchema.extend({});\n\nconst CancelMcpAuthResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const CancelMcpAuthRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.CANCEL_MCP_AUTH),\n params: CancelMcpAuthRequestParamsSchema,\n});\n\nexport const ClearMcpAuthRequestParamsSchema = McpServerNameParamsSchema.extend(\n {}\n);\n\nconst ClearMcpAuthResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const ClearMcpAuthRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.CLEAR_MCP_AUTH),\n params: ClearMcpAuthRequestParamsSchema,\n});\n\n// Submit MCP auth code (for remote sessions)\nexport const SubmitMcpAuthCodeRequestParamsSchema = z.object({\n serverName: McpServerNameSchema,\n code: z.string(),\n state: z.string(),\n});\n\nconst SubmitMcpAuthCodeResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const SubmitMcpAuthCodeRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.SUBMIT_MCP_AUTH_CODE),\n params: SubmitMcpAuthCodeRequestParamsSchema,\n});\n\nexport const SubmitMcpAuthCodeResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: SubmitMcpAuthCodeResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Add MCP server request\nexport const AddMcpServerRequestParamsSchema = z\n .object({\n name: McpServerNameSchema,\n type: McpServerTypeSchema,\n })\n .merge(McpHttpServerAddFieldsSchema)\n .merge(McpStdioServerAddFieldsSchema);\n\nconst AddMcpServerResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const AddMcpServerRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.ADD_MCP_SERVER),\n params: AddMcpServerRequestParamsSchema,\n});\n\n// Remove MCP server request\nexport const RemoveMcpServerRequestParamsSchema =\n McpServerNameParamsSchema.extend({\n settingsLevel: McpSettingsLevelSchema,\n });\n\nconst RemoveMcpServerResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const RemoveMcpServerRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.REMOVE_MCP_SERVER),\n params: RemoveMcpServerRequestParamsSchema,\n});\n\n// List MCP registry request (returns available servers from hardcoded registry)\nexport const ListMcpRegistryRequestParamsSchema = z.object({});\n\nexport const ListMcpRegistryResultSchema = z.object({\n servers: z.array(McpRegistryServerSchema),\n});\n\nexport const ListMcpRegistryRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_REGISTRY),\n params: ListMcpRegistryRequestParamsSchema,\n});\n\n// List MCP tools request (returns all tools with enabled/disabled state)\nexport const ListMcpToolsRequestParamsSchema = z.object({});\n\nexport const ListMcpToolsResultSchema = z.object({\n tools: z.array(McpToolInfoSchema),\n});\n\nexport const ListMcpToolsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_TOOLS),\n params: ListMcpToolsRequestParamsSchema,\n});\n\nconst ToolCatalogCategorySchema = z.enum(['read', 'edit', 'execute', 'other']);\n\nconst ExecToolInfoSchema = z.object({\n id: z.string(),\n llmId: z.string(),\n displayName: z.string(),\n description: z.string(),\n category: ToolCatalogCategorySchema,\n defaultAllowed: z.boolean(),\n currentlyAllowed: z.boolean(),\n});\n\nexport const ListToolsRequestParamsSchema =\n UpdateSessionSettingsRequestParamsSchema.pick({\n modelId: true,\n autonomyMode: true,\n interactionMode: true,\n autonomyLevel: true,\n specModeModelId: true,\n enabledToolIds: true,\n disabledToolIds: true,\n }).extend({\n skipPermissionsUnsafe: z.boolean().optional(),\n depth: z.number().int().min(0).optional(),\n });\n\nexport const ListToolsResultSchema = z.object({\n tools: z.array(ExecToolInfoSchema),\n});\n\nexport const ListToolsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_TOOLS),\n params: ListToolsRequestParamsSchema,\n});\n\n// List MCP servers request (returns current server status, same shape as MCP_STATUS_CHANGED notification)\nexport const ListMcpServersRequestParamsSchema = z.object({});\n\nexport const ListMcpServersResultSchema = z.object({\n servers: z.array(McpServerStatusInfoSchema),\n summary: McpStatusSummarySchema,\n});\n\nexport const ListMcpServersRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_SERVERS),\n params: ListMcpServersRequestParamsSchema,\n});\n\n// Toggle MCP tool request (enable/disable a specific tool)\nexport const ToggleMcpToolRequestParamsSchema =\n McpServerNameParamsSchema.extend({\n toolName: z.string(),\n enabled: z.boolean(),\n });\n\nconst ToggleMcpToolResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const ToggleMcpToolRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.TOGGLE_MCP_TOOL),\n params: ToggleMcpToolRequestParamsSchema,\n});\n\n// List skills request (returns all available skills)\nconst ListSkillsRequestParamsSchema = z.object({});\n\n// Resource file in a skill folder (anything except SKILL.md)\nconst SkillResourceSchema = z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['reference', 'asset']), // reference = .md files, asset = other files\n});\n\nexport const SkillInfoSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n location: z.nativeEnum(SkillLocation),\n filePath: z.string(),\n enabled: z.boolean().optional(),\n userInvocable: z.boolean().optional(),\n version: z.string().optional(),\n // Full SKILL.md content (markdown)\n content: z.string().optional(),\n // Other files in the skill folder\n resources: z.array(SkillResourceSchema).optional(),\n});\n\nconst ListSkillsResultSchema = z.object({\n skills: z.array(SkillInfoSchema),\n});\n\nexport const ListSkillsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_SKILLS),\n params: ListSkillsRequestParamsSchema,\n});\n\nconst GetContextStatsRequestParamsSchema = z.object({});\n\nexport { ContextStatsSchema as GetContextStatsResultSchema };\n\nexport const GetContextStatsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.GET_CONTEXT_STATS),\n params: GetContextStatsRequestParamsSchema,\n});\n\nconst ContextBreakdownCategorySchema = z.object({\n name: z.string(),\n tokens: z.number(),\n colorKey: z.nativeEnum(ContextCategoryColorKey),\n});\n\nconst ContextBreakdownSkillEntrySchema = z.object({\n name: z.string(),\n location: z.nativeEnum(SkillLocation),\n tokens: z.number(),\n});\n\nconst ContextBreakdownMcpServerEntrySchema = z.object({\n name: z.string(),\n toolCount: z.number(),\n tokens: z.number(),\n});\n\nconst ContextBreakdownDroidEntrySchema = z.object({\n name: z.string(),\n location: z.nativeEnum(DroidLocation),\n tokens: z.number(),\n});\n\nconst GetContextBreakdownRequestParamsSchema = z.object({});\n\nexport const GetContextBreakdownResultSchema = z.object({\n modelId: z.string(),\n modelDisplayName: z.string(),\n contextBudget: z.number(),\n lastCallCompactionTokens: z.number().optional(),\n usedTokens: z.number(),\n freeTokens: z.number(),\n categories: z.array(ContextBreakdownCategorySchema),\n skills: z.array(ContextBreakdownSkillEntrySchema),\n mcpServers: z.array(ContextBreakdownMcpServerEntrySchema),\n droids: z.array(ContextBreakdownDroidEntrySchema),\n});\n\nexport const GetContextBreakdownRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DroidServerMethod.GET_CONTEXT_BREAKDOWN),\n params: GetContextBreakdownRequestParamsSchema,\n }\n);\n\n// Submit bug report request (creates and uploads bug report with session data)\nconst SubmitBugReportRequestParamsSchema = z.object({\n userComment: z.string(),\n clientLogs: z.string().optional(),\n});\n\nexport const SubmitBugReportResultSchema = z.object({\n bugReportId: z.string(),\n});\n\nexport const SubmitBugReportRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.SUBMIT_BUG_REPORT),\n params: SubmitBugReportRequestParamsSchema,\n});\n\n// Rewind schemas\n\nconst GetRewindInfoRequestParamsSchema = z.object({\n sessionId: z.string(),\n messageId: z.string(),\n});\n\nconst RewindFileSnapshotSchema = z.object({\n filePath: z.string(),\n contentHash: z.string(),\n size: z.number(),\n});\n\nconst RewindFileCreationSchema = z.object({\n filePath: z.string(),\n});\n\nconst RewindEvictedFileSchema = z.object({\n filePath: z.string(),\n reason: z.string(),\n});\n\nexport const GetRewindInfoResultSchema = z.object({\n availableFiles: z.array(RewindFileSnapshotSchema),\n createdFiles: z.array(RewindFileCreationSchema),\n evictedFiles: z.array(RewindEvictedFileSchema),\n});\n\nexport const GetRewindInfoRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.GET_REWIND_INFO),\n params: GetRewindInfoRequestParamsSchema,\n});\n\nconst ExecuteRewindRequestParamsSchema = z.object({\n sessionId: z.string(),\n messageId: z.string(),\n filesToRestore: z.array(RewindFileSnapshotSchema),\n filesToDelete: z.array(RewindFileCreationSchema),\n forkTitle: z.string(),\n});\n\nexport const ExecuteRewindResultSchema = z.object({\n newSessionId: z.string(),\n restoredCount: z.number(),\n deletedCount: z.number(),\n failedRestoreCount: z.number(),\n failedDeleteCount: z.number(),\n});\n\nexport const ExecuteRewindRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.EXECUTE_REWIND),\n params: ExecuteRewindRequestParamsSchema,\n});\n\n// Compact session schemas\n\nconst CompactSessionRequestParamsSchema = z.object({\n customInstructions: z.string().optional(),\n});\n\nexport const CompactSessionResultSchema = z.object({\n newSessionId: z.string(),\n removedCount: z.number(),\n});\n\nexport const CompactSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.COMPACT_SESSION),\n params: CompactSessionRequestParamsSchema,\n});\n\nexport const CompactSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CompactSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ForkSessionResultSchema = z.object({\n newSessionId: z.string(),\n});\n\nexport const ForkSessionRequestParamsSchema = z.object({\n title: z.string().optional(),\n tags: z\n .array(\n z.object({ name: z.string(), metadata: z.record(z.string()).optional() })\n )\n .optional(),\n});\n\nexport const ForkSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.FORK_SESSION),\n params: ForkSessionRequestParamsSchema,\n});\n\nexport const ForkSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ForkSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Rename Session\nexport const RenameSessionRequestParamsSchema = z.object({\n title: z.string(),\n});\n\nexport const RenameSessionResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const RenameSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.RENAME_SESSION),\n params: RenameSessionRequestParamsSchema,\n});\n\nexport const RenameSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: RenameSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Cache warmup\nexport const WarmupCacheRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.WARMUP_CACHE),\n params: z.object({}),\n});\n\nexport const WarmupCacheResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: z.object({}),\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ClientRequestSchema = z.discriminatedUnion('method', [\n InitializeSessionRequestSchema,\n LoadSessionRequestSchema,\n InterruptSessionRequestSchema,\n CloseSessionRequestSchema,\n KillWorkerSessionRequestSchema,\n AddUserMessageRequestSchema,\n ResolveQueuedUserMessageRequestSchema,\n UpdateSessionSettingsRequestSchema,\n ToggleMcpServerRequestSchema,\n AuthenticateMcpServerRequestSchema,\n CancelMcpAuthRequestSchema,\n ClearMcpAuthRequestSchema,\n AddMcpServerRequestSchema,\n RemoveMcpServerRequestSchema,\n ListMcpRegistryRequestSchema,\n ListMcpToolsRequestSchema,\n ListToolsRequestSchema,\n ListMcpServersRequestSchema,\n ToggleMcpToolRequestSchema,\n SubmitMcpAuthCodeRequestSchema,\n ListSkillsRequestSchema,\n GetContextStatsRequestSchema,\n GetContextBreakdownRequestSchema,\n SubmitBugReportRequestSchema,\n GetRewindInfoRequestSchema,\n ExecuteRewindRequestSchema,\n CompactSessionRequestSchema,\n ForkSessionRequestSchema,\n RenameSessionRequestSchema,\n WarmupCacheRequestSchema,\n]);\n\nexport const InitializeSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: InitializeSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const LoadSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: LoadSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const AddUserMessageResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: AddUserMessageResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ResolveQueuedUserMessageResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ResolveQueuedUserMessageResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const InterruptSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: InterruptSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const CloseSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CloseSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const KillWorkerSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: KillWorkerSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const UpdateSessionSettingsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: UpdateSessionSettingsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ToggleMcpServerResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ToggleMcpServerResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const AuthenticateMcpServerResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: AuthenticateMcpServerResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const CancelMcpAuthResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CancelMcpAuthResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ClearMcpAuthResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ClearMcpAuthResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const AddMcpServerResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: AddMcpServerResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const RemoveMcpServerResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: RemoveMcpServerResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListMcpRegistryResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListMcpRegistryResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListMcpToolsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListMcpToolsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListToolsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListToolsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListMcpServersResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListMcpServersResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ToggleMcpToolResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ToggleMcpToolResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListSkillsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListSkillsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const GetContextStatsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ContextStatsSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const GetContextBreakdownResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: GetContextBreakdownResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const SubmitBugReportResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: SubmitBugReportResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const GetRewindInfoResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: GetRewindInfoResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ExecuteRewindResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ExecuteRewindResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n","/** Named schedule cadences */\nexport enum AutomationScheduleCadence {\n Daily = 'daily',\n Weekly = 'weekly',\n Monthly = 'monthly',\n}\n\n/** Types of validation issues */\nexport enum AutomationValidationIssueType {\n MissingFile = 'missing_file',\n InvalidFrontmatter = 'invalid_frontmatter',\n InvalidSchedule = 'invalid_schedule',\n ParseError = 'parse_error',\n}\n\n// =============================================================================\n// Control-plane enums\n// =============================================================================\n\n/**\n * Control-plane error codes.\n *\n * These codes enable deterministic error handling across CLI/desktop surfaces.\n */\nexport enum AutomationErrorCode {\n /** Automation with the given ID was not found */\n NotFound = 'AUTOMATION_NOT_FOUND',\n /** Automation already exists with the given ID */\n AlreadyExists = 'AUTOMATION_ALREADY_EXISTS',\n /** Invalid automation ID format */\n InvalidId = 'INVALID_AUTOMATION_ID',\n /** Invalid configuration (e.g., invalid schedule) */\n InvalidConfig = 'INVALID_AUTOMATION_CONFIG',\n /** Automation is already in the requested state */\n AlreadyInState = 'ALREADY_IN_STATE',\n /** A run is already in progress for this automation */\n RunInProgress = 'RUN_IN_PROGRESS',\n /** Heartbeat execution failed */\n ExecutionFailed = 'EXECUTION_FAILED',\n /** General internal error */\n InternalError = 'INTERNAL_ERROR',\n}\n\n/** Privacy level for an automation */\nexport enum AutomationPrivacyLevel {\n /** Only visible to the creator */\n Private = 'private',\n /** Visible to all members of the organization */\n Organization = 'organization',\n}\n","import { z } from 'zod';\n\nimport { AutomationPrivacyLevel } from './automations-enums.js';\n\nexport const AutomationCreatedBySchema = z.object({\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n});\n\nexport type AutomationCreatedBy = z.infer<typeof AutomationCreatedBySchema>;\n\n/**\n * Schema for the on-disk YAML metadata in HEARTBEAT.md frontmatter.\n *\n * This is the flat representation stored between `---` delimiters.\n * Differs from AutomationConfig in that `schedule` is a plain string\n * (e.g. \"daily\", \"0 9 * * 1-5\") rather than the runtime\n * `{ cadence: string }` shape.\n */\nexport const AutomationsHeartbeatSchema = z.object({\n id: z.string().uuid().optional(),\n name: z.string(),\n description: z.string().optional(),\n schedule: z.string(),\n model: z.string().optional(),\n tags: z.array(z.string()).optional(),\n paused: z.boolean().optional(),\n privacyLevel: z.nativeEnum(AutomationPrivacyLevel).optional(),\n createdBy: AutomationCreatedBySchema.optional(),\n forkedFrom: z.string().optional(),\n});\n\nexport type AutomationsHeartbeat = z.infer<typeof AutomationsHeartbeatSchema>;\n","import { z } from 'zod';\n\nimport { DecompSessionType } from './enums.js';\nimport { HostIdSchema } from './host.js';\n\n/**\n * Auto-stage for session title generation.\n * Tracks whether the title was generated from the first message or first file edit.\n */\nexport enum SessionTitleAutoStage {\n FirstMessage = 'first_message',\n FirstFileEdit = 'first_file_edit',\n}\n\n/**\n * Schema for the first line (session_start event) of a session .jsonl file.\n * This is the canonical definition of the session summary format on disk.\n */\nexport const SessionSummaryEventSchema = z.object({\n type: z.literal('session_start'),\n id: z.string(),\n title: z.string(),\n sessionTitle: z.string().optional(),\n isSessionTitleManuallySet: z.boolean().optional(),\n sessionTitleAutoStage: z.nativeEnum(SessionTitleAutoStage).optional(),\n owner: z.string(),\n parent: z.string().nullable().optional(),\n version: z.number().optional(),\n cwd: z.string().optional(),\n lastCwd: z.string().optional(),\n decompSessionType: z.nativeEnum(DecompSessionType).optional(),\n decompMissionId: z.string().optional(),\n callingSessionId: z.string().optional(),\n callingToolUseId: z.string().optional(),\n // Durable execution-store identity for this local session file.\n hostId: HostIdSchema.optional(),\n});\n\nexport type SessionSummaryEvent = z.infer<typeof SessionSummaryEventSchema>;\n","import { z } from 'zod';\n\nexport const GenericToolExecutionOutputSchema = z.union([\n z.record(z.string(), z.any()),\n z.string(),\n z.array(z.union([z.string(), z.record(z.string(), z.any())])),\n]);\n\nexport type GenericToolExecutionOutput = z.infer<\n typeof GenericToolExecutionOutputSchema\n>;\n","// Source-of-truth mirror of packages/common/src/session/settings/schema.ts.\n// `TokenUsageSchema` is intentionally imported from `./session.js` (where it\n// was previously mirrored verbatim from the same upstream definition) rather\n// than redeclared here, to avoid duplicate barrel exports for the same shape.\n\nimport { z } from 'zod';\n\nimport { ApiProvider, ModelProvider, ReasoningEffort } from './enums.js';\nimport { TokenUsageSchema } from './session.js';\nimport { SessionTagSchema } from './session.js';\nimport {\n CompactionModelSchema,\n SessionDefaultSettingsSchema,\n} from './settings.js';\n\n/**\n * Cached pick written once per Factory Router session (or overridden by the\n * upgrade tool). Resumes + sub-agents read it instead of re-routing.\n */\nexport const EffectiveFactoryRouterModelSchema = z\n .object({\n modelId: z.string(),\n apiProvider: z.nativeEnum(ApiProvider),\n reasoningEffort: z.nativeEnum(ReasoningEffort),\n })\n .strict();\n\n/**\n * Session settings schema.\n * Settings persisted to .settings.json for each session.\n */\nexport const SessionSettingsSchema = SessionDefaultSettingsSchema.extend({\n providerLock: z.nativeEnum(ModelProvider).optional(),\n providerLockTimestamp: z.string().optional(),\n apiProviderLock: z.nativeEnum(ApiProvider).optional(),\n assistantActiveTimeMs: z.number().optional(),\n tokenUsage: TokenUsageSchema.optional(),\n inclusiveTokenUsage: TokenUsageSchema.optional(),\n childInclusiveTokenUsageBySessionId: z.record(TokenUsageSchema).optional(),\n\n /**\n * ISO timestamp when the session was archived.\n * Presence indicates archived status (omit to unarchive).\n */\n archivedAt: z.string().optional(),\n\n /** Session tags for categorization */\n tags: z.array(SessionTagSchema).optional(),\n\n /** Additional tool IDs enabled for this session */\n enabledToolIds: z.array(z.string()).optional(),\n\n /** Tool IDs explicitly disabled for this session */\n disabledToolIds: z.array(z.string()).optional(),\n\n /** Model to use for compaction; \"current-model\" follows the session/spec model. */\n compactionModel: CompactionModelSchema.optional(),\n /** Whether threshold-based automatic compaction is enabled for this session */\n compactionThresholdCheckEnabled: z.boolean().optional(),\n\n effectiveFactoryRouterModel: EffectiveFactoryRouterModelSchema.optional(),\n});\n","/**\n * The execution location for an tool:\n * - Client: The tool is executed in the UI context (e.g. change the page).\n * - Server: The tool is executed server-side (e.g. a code search).\n * - Both: The tool can be executed in either environment depending on runtime logic.\n */\nexport enum ToolExecutionLocation {\n Client = 'client',\n Server = 'server',\n Both = 'both',\n}\n\n/**\n * Common status values for tool execution.\n * Used for tracking the progress and final outcome of an tool's execution.\n */\nexport enum ToolStatus {\n Pending = 'pending',\n Running = 'running',\n Completed = 'completed',\n Failed = 'failed',\n}\nexport enum RiskLevel {\n LOW = 'low',\n MEDIUM = 'medium',\n HIGH = 'high',\n}\n","import { z } from 'zod';\n\nimport { RiskLevel } from './tools-enums.js';\n\n// ============================================================\n// Common Tool Input Schemas\n// These schemas define the input parameters for tools and are\n// shared between droid-core (execution) and component-library (rendering)\n// ============================================================\n\n/**\n * Edit tool input (Anthropic-style find/replace)\n */\nexport const EditToolInputSchema = z.object({\n file_path: z.string(),\n old_str: z.string(),\n new_str: z.string(),\n change_all: z.boolean().optional(),\n});\n\n/**\n * Create tool input\n */\nexport const CreateToolInputSchema = z.object({\n file_path: z.string(),\n content: z.string(),\n});\n\n/**\n * Read tool input\n */\nexport const ReadToolInputSchema = z.object({\n file_path: z.string(),\n offset: z.number().optional(),\n limit: z.number().optional(),\n image_quality: z.enum(['default', 'high']).optional(),\n});\n\n/**\n * Execute tool input\n */\nexport const ExecuteToolInputSchema = z.object({\n summary: z.string().optional(),\n command: z.string(),\n timeout: z.number().optional(),\n riskLevel: z.nativeEnum(RiskLevel).optional(),\n riskLevelReason: z.string().optional(),\n fireAndForget: z.boolean().optional(),\n});\n\n/**\n * Glob tool input\n */\nexport const GlobToolInputSchema = z.object({\n patterns: z.array(z.string()).optional(),\n folder: z.string().optional(),\n excludePatterns: z.array(z.string()).optional(),\n});\n\n/**\n * Grep tool input\n */\nexport const GrepToolInputSchema = z.object({\n pattern: z.string(),\n path: z.string().optional(),\n glob_pattern: z.string().optional(),\n case_insensitive: z.boolean().optional(),\n output_mode: z.enum(['file_paths', 'content']).optional(),\n context: z.number().optional(),\n context_before: z.number().optional(),\n context_after: z.number().optional(),\n line_numbers: z.boolean().optional(),\n head_limit: z.number().optional(),\n});\n\n/**\n * LS tool input\n */\nexport const LSToolInputSchema = z.object({\n directory_path: z.string().optional(),\n ignorePatterns: z.array(z.string()).optional(),\n});\n\n/**\n * WebSearch tool input\n */\nexport const WebSearchToolInputSchema = z.object({\n query: z.string(),\n numResults: z.number().optional(),\n includeDomains: z.array(z.string()).optional(),\n excludeDomains: z.array(z.string()).optional(),\n category: z.string().optional(),\n});\n\n/**\n * FetchUrl tool input\n */\nexport const FetchUrlToolInputSchema = z.object({\n url: z.string(),\n});\n\n/**\n * Task (subagent) tool input\n */\nexport const TaskToolInputSchema = z.object({\n subagent_type: z\n .string()\n .describe(\n 'The custom droid name/identifier to run (must match an available droid; do not guess)'\n ),\n description: z\n .string()\n .describe('A short (3-5 word) description of the task (used in UI)'),\n prompt: z\n .string()\n .describe('The full task prompt for the subagent to execute'),\n});\n\n/**\n * TodoWrite tool input\n */\nexport const TodoWriteToolInputSchema = z.object({\n todos: z.string(),\n});\n\n/**\n * ExitSpecMode tool input\n */\nexport const ExitSpecModeToolInputSchema = z.object({\n plan: z.string(),\n title: z.string().optional(),\n});\n\n/**\n * Skill tool input\n */\nexport const SkillToolInputSchema = z.object({\n skill: z.string(),\n});\n\n/**\n * ApplyPatch tool input\n */\nexport const ApplyPatchToolInputSchema = z.object({\n file_path: z.string(),\n patch: z.string(),\n});\n\n/**\n * ProposeMission tool input\n */\nexport const ProposeMissionToolInputSchema = z.object({\n proposal: z.string(),\n title: z.string().optional(),\n});\n\n// ============================================================\n// Common Tool Result Schemas\n// These define the shape of data returned by tools\n// ============================================================\n\n/**\n * Diff line for Edit/Create tool results\n */\nexport const DiffLineSchema = z.object({\n type: z.enum(['added', 'removed', 'unchanged', 'context']),\n content: z.string(),\n lineNumber: z\n .object({\n old: z.number().optional(),\n new: z.number().optional(),\n })\n .optional(),\n});\n\n/**\n * Common result payload for file operation tools (Edit, Create, ApplyPatch)\n */\nexport const FileOperationResultSchema = z.object({\n success: z.boolean().optional(),\n diff: z.string().optional(),\n diffLines: z.array(DiffLineSchema).optional(),\n content: z.string().optional(),\n message: z.string().optional(),\n file_path: z.string().optional(),\n filePath: z.string().optional(),\n});\n","import { z } from 'zod';\n\n/**\n * Schema for a resolved binary download plan.\n * Contains a version and fully-qualified URLs for the binary and its checksum.\n * Used by both the backend API response and internal provisioning.\n */\nexport const BinaryDownloadPlanSchema = z.object({\n version: z.string(),\n binaryUrl: z.string(),\n checksumUrl: z.string(),\n});\n","import { z } from 'zod';\n\n/**\n * Token usage schema for tracking LLM token consumption.\n */\nexport const TokenUsageSchema = z.object({\n inputTokens: z.number().int(),\n outputTokens: z.number().int(),\n cacheCreationInputTokens: z.number().int(),\n cacheReadInputTokens: z.number().int(),\n thinkingTokens: z.number().int(),\n factoryCredits: z.number().optional(),\n});\n","// Internal barrel for the daemon protocol source-of-truth modules.\n// Mirrors files under factory-mono-alpha/packages/common/src/daemon/schemas/.\n// NOT yet wired into the public package API (src/index.ts).\n\nexport * from './enums.js';\nexport * from './bug-report.js';\nexport * from './management.js';\nexport * from './skills.js';\nexport * from './relay.js';\nexport * from './terminal.js';\nexport * from './connection.js';\nexport * from './mcp.js';\nexport * from './automations-enums.js';\nexport * from './automations.js';\nexport * from './plugins.js';\nexport * from './settings.js';\nexport * from './droid.js';\n","// Connection-level methods (shared across all daemon connections)\nexport enum DaemonConnectionMethod {\n AUTHENTICATE = 'daemon.authenticate',\n LOGOUT = 'daemon.logout',\n}\n\n// Connection-level events (notifications from server to client)\nexport enum DaemonConnectionEvent {\n CONNECTION_STATUS = 'daemon.connection_status',\n}\n\n/**\n * Connection state for daemon WebSocket connections.\n *\n * This enum contains two categories of states:\n *\n * **WebSocket connection states** (actual transport-level states):\n * - `Disconnected` - No active WebSocket connection\n * - `Connecting` - WebSocket handshake in progress\n * - `Connected` - WebSocket is open and ready\n * - `Closing` - WebSocket is closing\n *\n * **UI/UX display states** (for user feedback, not actual WS state):\n * - `LookingUpMachine` - Checking if session exists locally or in backend\n * - `StartingMachine` - Waiting for remote sandbox/machine to start before connecting\n * - `LoadingSession` - WebSocket connected, but loading session state from daemon\n * - `AuthenticationFailed` - Connection succeeded but authentication was rejected\n */\nexport enum ConnectionState {\n // WebSocket transport states\n Disconnected = 'disconnected',\n Connecting = 'connecting',\n Connected = 'connected',\n Closing = 'closing',\n\n // UI/UX display states (WebSocket may be connected)\n LookingUpMachine = 'looking_up_machine',\n StartingMachine = 'starting_machine',\n LoadingSession = 'loading_session',\n /** @deprecated Use ConnectionStatus.lastFailure instead. Will be removed in a future version. */\n AuthenticationFailed = 'authentication_failed',\n}\n\n// Terminal-specific methods\nexport enum DaemonTerminalMethod {\n CREATE = 'daemon.create_terminal',\n WRITE_DATA = 'daemon.write_terminal_data',\n RESIZE = 'daemon.resize_terminal',\n CLOSE = 'daemon.close_terminal',\n LIST = 'daemon.list_terminals',\n}\n\n// Terminal-specific events (notifications from server to client)\nexport enum DaemonTerminalEvent {\n DATA = 'daemon.terminal_data',\n EXIT = 'daemon.terminal_exit',\n ERROR = 'daemon.terminal_error',\n}\n\n// Droid-specific methods (for daemon-managed droid sessions)\nexport enum DaemonDroidMethod {\n INITIALIZE_SESSION = 'daemon.initialize_session',\n LOAD_SESSION = 'daemon.load_session',\n ADD_USER_MESSAGE = 'daemon.add_user_message',\n RESOLVE_QUEUED_USER_MESSAGE = 'daemon.resolve_queued_user_message',\n INTERRUPT_SESSION = 'daemon.interrupt_session',\n CLOSE_SESSION = 'daemon.close_session',\n KILL_WORKER_SESSION = 'daemon.kill_worker_session',\n LIST_OPENED_SESSIONS = 'daemon.list_opened_sessions',\n LIST_AVAILABLE_SESSIONS = 'daemon.list_available_sessions',\n GET_SESSION_MESSAGES = 'daemon.get_session_messages',\n UPDATE_SESSION_SETTINGS = 'daemon.update_session_settings',\n START_LOOP = 'daemon.start_loop',\n STOP_LOOP = 'daemon.stop_loop',\n GET_LOOP_STATUS = 'daemon.get_loop_status',\n RUN_LOOP_NOW = 'daemon.run_loop_now',\n VALIDATE_WORKING_DIRECTORY = 'daemon.validate_working_directory',\n GET_MCP_CONFIG = 'daemon.get_mcp_config',\n UPDATE_MCP_CONFIG = 'daemon.update_mcp_config',\n TOGGLE_MCP_SERVER = 'daemon.toggle_mcp_server',\n AUTHENTICATE_MCP_SERVER = 'daemon.authenticate_mcp_server',\n CANCEL_MCP_AUTH = 'daemon.cancel_mcp_auth',\n CLEAR_MCP_AUTH = 'daemon.clear_mcp_auth',\n SUBMIT_MCP_AUTH_CODE = 'daemon.submit_mcp_auth_code',\n LIST_FILES = 'daemon.list_files',\n SEARCH_FILES = 'daemon.search_files',\n ADD_MCP_SERVER = 'daemon.add_mcp_server',\n REMOVE_MCP_SERVER = 'daemon.remove_mcp_server',\n LIST_MCP_REGISTRY = 'daemon.list_mcp_registry',\n LIST_MCP_TOOLS = 'daemon.list_mcp_tools',\n LIST_MCP_SERVERS = 'daemon.list_mcp_servers',\n TOGGLE_MCP_TOOL = 'daemon.toggle_mcp_tool',\n SEARCH_SESSIONS = 'daemon.search_sessions',\n ARCHIVE_SESSION = 'daemon.archive_session',\n UNARCHIVE_SESSION = 'daemon.unarchive_session',\n RENAME_SESSION = 'daemon.rename_session',\n LIST_SKILLS = 'daemon.list_skills',\n LIST_AVAILABLE_PLUGINS = 'daemon.list_available_plugins',\n LIST_INSTALLED_PLUGINS = 'daemon.list_installed_plugins',\n INSTALL_PLUGIN = 'daemon.install_plugin',\n UNINSTALL_PLUGIN = 'daemon.uninstall_plugin',\n UPDATE_PLUGIN = 'daemon.update_plugin',\n LIST_MARKETPLACES = 'daemon.list_marketplaces',\n ADD_MARKETPLACE = 'daemon.add_marketplace',\n REMOVE_MARKETPLACE = 'daemon.remove_marketplace',\n UPDATE_MARKETPLACE = 'daemon.update_marketplace',\n LIST_AUTOMATIONS = 'daemon.list_automations',\n RUN_AUTOMATION = 'daemon.run_automation',\n PAUSE_AUTOMATION = 'daemon.pause_automation',\n RESUME_AUTOMATION = 'daemon.resume_automation',\n GET_AUTOMATION_HISTORY = 'daemon.get_automation_history',\n GET_AUTOMATION_VISUAL = 'daemon.get_automation_visual',\n CREATE_AUTOMATION = 'daemon.create_automation',\n UPDATE_AUTOMATION_MODEL = 'daemon.update_automation_model',\n UPDATE_AUTOMATION_PRIVACY = 'daemon.update_automation_privacy',\n RENAME_AUTOMATION = 'daemon.rename_automation',\n DELETE_AUTOMATION = 'daemon.delete_automation',\n FORK_AUTOMATION = 'daemon.fork_automation',\n GET_GIT_DIFF = 'daemon.get_git_diff',\n GIT_PUSH = 'daemon.git_push',\n GIT_COMMIT = 'daemon.git_commit',\n CREATE_PR = 'daemon.create_pr',\n GET_SEMANTIC_DIFF_CACHE = 'daemon.get_semantic_diff_cache',\n SAVE_SEMANTIC_DIFF_CACHE = 'daemon.save_semantic_diff_cache',\n GENERATE_SEMANTIC_DIFF = 'daemon.generate_semantic_diff',\n GET_PROXY_TOKEN = 'daemon.get_proxy_token',\n GET_WORKSPACE_FILE_CONTENT = 'daemon.get_workspace_file_content',\n SUBMIT_BUG_REPORT = 'daemon.submit_bug_report',\n GET_REWIND_INFO = 'daemon.get_rewind_info',\n EXECUTE_REWIND = 'daemon.execute_rewind',\n COMPACT_SESSION = 'daemon.compact_session',\n FORK_SESSION = 'daemon.fork_session',\n WARMUP_CACHE = 'daemon.warmup_cache',\n GET_CONTEXT_BREAKDOWN = 'daemon.get_context_breakdown',\n}\n\nexport enum DaemonGetGitDiffUnavailableReason {\n MissingSessionCwd = 'missing_session_cwd',\n NotGitRepository = 'not_git_repository',\n GitNotAvailable = 'git_not_available',\n Unknown = 'unknown',\n}\n\n// Daemon-only settings methods (handled by daemon, not forwarded to CLI)\nexport enum DaemonSettingsMethod {\n GET_DEFAULT_SETTINGS = 'daemon.get_default_settings',\n UPDATE_SESSION_DEFAULTS = 'daemon.update_session_defaults',\n}\n\n// Daemon management methods (lifecycle operations like updates, restarts)\nexport enum DaemonManagementMethod {\n TRIGGER_UPDATE = 'daemon.trigger_update',\n INSTALL_SSH_KEY = 'daemon.install_ssh_key',\n}\n\n// Daemon relay methods (request/response RPCs for relay lifecycle)\nexport enum DaemonRelayMethod {\n START = 'daemon.relay.start',\n STOP = 'daemon.relay.stop',\n GET_STATUS = 'daemon.relay.get_status',\n}\n\n// Daemon relay events (notifications from server to client, e.g. external disconnects)\nexport enum DaemonRelayEvent {\n STATUS_CHANGED = 'daemon.relay.status_changed',\n}\n\n// Session notification types defined at the daemon level\nexport enum DaemonSpecificNotificationType {\n SESSION_INACTIVITY = 'session_inactivity',\n SESSION_PROCESS_EXITED = 'session_process_exited',\n SESSION_CLOSED = 'session_closed',\n SESSION_UNSUBSCRIBED = 'session_unsubscribed',\n CHILD_SESSION_AVAILABLE = 'child_session_available',\n}\n\n// Droid-specific events (notifications and requests from server to client)\nexport enum DaemonDroidEvent {\n SESSION_NOTIFICATION = 'daemon.session_notification',\n REQUEST_PERMISSION = 'daemon.request_permission',\n ASK_USER = 'daemon.ask_user',\n}\n\n// Terminal creation errors\nexport enum CreateTerminalError {\n TerminalIdExists = 'TerminalIdExists',\n}\n\n// MCP Config Source\nexport enum McpConfigSource {\n User = 'user',\n Project = 'project',\n}\n\n// Tunnel message methods (for WebSocket tunnel protocol)\n\n/**\n * Tracks the loading state of a session in the daemon.\n *\n * State Transitions (Event-Driven, Non-Linear):\n * - New session: NotLoaded → Loading → Loaded\n * - Existing session (direct URL): NotLoaded → Loading → Loaded\n * - Reconnection: Loaded → NotLoaded → Loading → Loaded\n * - After inactivity: Loaded → NotLoaded → Loading → Loaded\n *\n * Entry Points:\n * - NotLoaded: Default state, or via disconnect/inactivity/unsubscribed\n * - Loading: Via markSessionLoading() for new sessions, existing sessions, reloads, or reconnections\n * - Loaded: Via initializeSession() (new) or loadSession() (existing/reload)\n */\nexport enum SessionLoadState {\n /**\n * Session doesn't exist in daemon state yet, or became inactive.\n *\n * Effect: Default state for sessions not yet created or loaded.\n * Next State:\n * - Call markSessionLoading() → Loading (for all sessions)\n */\n NotLoaded = 'NOT_LOADED',\n\n /**\n * Session is fully loaded and ready for use in daemon state.\n *\n * Effect: Normal operation, all features available, UI fully interactive.\n * Next State:\n * - Via WebSocket disconnect → NotLoaded (connection lost, then reconnect flow starts)\n * - Via daemon notification → NotLoaded (inactivity timeout or unsubscribed)\n * - Via markSessionLoading() → Loading (manual reload without disconnect)\n */\n Loaded = 'LOADED',\n\n /**\n * Session is being loaded, initialized, or reloaded.\n *\n * Effect: Shows loading UI. Session may be new or existing.\n * Next State: When initializeSession() or loadSession() completes → Loaded\n * Usage: New session creation, initial load of existing session, reconnection, manual reload, or reload after inactive.\n */\n Loading = 'LOADING',\n}\n\nexport enum SessionSearchDocKind {\n MessageText = 'message_text',\n Document = 'document',\n ToolUse = 'tool_use',\n ToolResult = 'tool_result',\n}\n","import z from 'zod';\n\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { DaemonDroidMethod } from './enums.js';\n\n// SUBMIT_BUG_REPORT - create and upload a bug report\nconst DaemonSubmitBugReportRequestParamsSchema = z.object({\n sessionId: z.string(),\n userComment: z.string(),\n clientLogs: z.string().optional(),\n});\n\nexport const DaemonSubmitBugReportRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SUBMIT_BUG_REPORT),\n params: DaemonSubmitBugReportRequestParamsSchema,\n });\n\nexport const DaemonSubmitBugReportResultSchema = z.object({\n bugReportId: z.string(),\n});\n","/**\n * Daemon management schemas.\n * These cover daemon lifecycle operations (updates, restarts, etc.)\n * that are not tied to specific droid sessions or settings.\n */\nimport z from 'zod';\n\nimport {\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n} from '../json-rpc.js';\nimport { DaemonManagementMethod } from './enums.js';\n\n// Trigger update schemas\nconst DaemonTriggerUpdateRequestParamsSchema = z.object({});\n\nexport const DaemonTriggerUpdateRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonManagementMethod.TRIGGER_UPDATE),\n params: DaemonTriggerUpdateRequestParamsSchema,\n }\n);\n\nexport const DaemonTriggerUpdateResultSchema = z.object({\n triggered: z.boolean(),\n message: z.string().optional(),\n});\n\nexport const DaemonTriggerUpdateResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonTriggerUpdateResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Install SSH key schemas\nconst DaemonInstallSshKeyRequestParamsSchema = z.object({\n publicKey: z.string().min(1),\n});\n\nexport const DaemonInstallSshKeyRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonManagementMethod.INSTALL_SSH_KEY),\n params: DaemonInstallSshKeyRequestParamsSchema,\n }\n);\n\nexport const DaemonInstallSshKeyResultSchema = z.object({\n installed: z.boolean(),\n});\n","import z from 'zod';\n\nimport { SkillInfoSchema } from '../client.js';\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { DaemonDroidMethod } from './enums.js';\n\n// LIST_SKILLS - get all available skills for a session\nconst DaemonListSkillsRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonListSkillsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_SKILLS),\n params: DaemonListSkillsRequestParamsSchema,\n});\n\nexport const DaemonListSkillsResultSchema = z.object({\n skills: z.array(SkillInfoSchema),\n});\n","/**\n * Daemon relay schemas.\n * These cover relay connection lifecycle operations for BYOM computers.\n */\nimport z from 'zod';\n\nimport {\n JsonRpcBaseNotificationSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n} from '../json-rpc.js';\nimport { DaemonRelayEvent, DaemonRelayMethod } from './enums.js';\n\n// daemon.relay.start\nexport const DaemonRelayStartRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonRelayMethod.START),\n params: z.object({}),\n});\n\nexport const DaemonRelayStartResultSchema = z.object({\n relayUrl: z.string(),\n computerId: z.string(),\n});\n\nexport const DaemonRelayStartResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonRelayStartResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// daemon.relay.stop\nexport const DaemonRelayStopRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonRelayMethod.STOP),\n params: z.object({}),\n});\n\nexport const DaemonRelayStopResultSchema = z.object({}).strict();\n\nexport const DaemonRelayStopResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonRelayStopResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// daemon.relay.get_status\nexport const DaemonRelayGetStatusRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonRelayMethod.GET_STATUS),\n params: z.object({}),\n });\n\nexport const DaemonRelayGetStatusResultSchema = z.object({\n connected: z.boolean(),\n url: z.string().optional(),\n clientCount: z.number().optional(),\n computerId: z.string().optional(),\n});\n\nexport const DaemonRelayGetStatusResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonRelayGetStatusResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// daemon.relay.status_changed (push notification for external state changes, e.g. unexpected disconnects)\nexport const DaemonRelayStatusChangedNotificationParamsSchema = z.object({\n connected: z.boolean(),\n url: z.string().optional(),\n clientCount: z.number().optional(),\n computerId: z.string().optional(),\n});\n\nexport const DaemonRelayStatusChangedNotificationSchema =\n JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DaemonRelayEvent.STATUS_CHANGED),\n params: DaemonRelayStatusChangedNotificationParamsSchema,\n });\n","import z from 'zod';\n\nimport {\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseSuccessSchema,\n JsonRpcBaseResponseFailureSchema,\n} from '../json-rpc.js';\nimport {\n DaemonTerminalMethod,\n DaemonTerminalEvent,\n CreateTerminalError,\n} from './enums.js';\n\n// Terminal request params schemas\nexport const CreateTerminalRequestParamsSchema = z.object({\n terminalId: z.string(),\n cols: z.number().optional(),\n rows: z.number().optional(),\n cwd: z.string().optional(),\n env: z.record(z.string()).optional(),\n});\n\nexport const WriteDataRequestParamsSchema = z.object({\n terminalId: z.string(),\n data: z.string(),\n});\n\nexport const ResizeRequestParamsSchema = z.object({\n terminalId: z.string(),\n cols: z.number(),\n rows: z.number(),\n});\n\nexport const CloseTerminalRequestParamsSchema = z.object({\n terminalId: z.string(),\n});\n\nexport const ListTerminalsRequestParamsSchema = z.object({});\n\n// Terminal result schemas\nexport const CreateTerminalResultSchema = z.discriminatedUnion('success', [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.nativeEnum(CreateTerminalError),\n }),\n]);\n\nexport const WriteDataResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const ResizeResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const CloseTerminalResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const TerminalInfoSchema = z.object({\n id: z.string(),\n pid: z.number().nullable(),\n cols: z.number(),\n rows: z.number(),\n createdAt: z.coerce.date(),\n state: z\n .object({\n serialized: z.string(),\n plainText: z.string(),\n cols: z.number(),\n rows: z.number(),\n timestamp: z.coerce.date(),\n cursorHidden: z.boolean().optional(),\n })\n .optional(),\n});\n\nexport const ListTerminalsResultSchema = z.object({\n terminals: z.array(TerminalInfoSchema),\n});\n\n// Terminal request schemas - use TerminalMethod enum\nexport const CreateTerminalRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.CREATE),\n params: CreateTerminalRequestParamsSchema,\n});\n\nexport const WriteDataRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.WRITE_DATA),\n params: WriteDataRequestParamsSchema,\n});\n\nexport const ResizeRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.RESIZE),\n params: ResizeRequestParamsSchema,\n});\n\nexport const CloseTerminalRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.CLOSE),\n params: CloseTerminalRequestParamsSchema,\n});\n\nexport const ListTerminalsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.LIST),\n params: ListTerminalsRequestParamsSchema,\n});\n\n// Terminal response schemas\nexport const CreateTerminalResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CreateTerminalResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const WriteDataResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: WriteDataResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ResizeResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ResizeResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const CloseTerminalResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CloseTerminalResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListTerminalsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListTerminalsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Union of all terminal request types (discriminated by method)\nexport const TerminalRequestSchema = z.discriminatedUnion('method', [\n CreateTerminalRequestSchema,\n WriteDataRequestSchema,\n ResizeRequestSchema,\n CloseTerminalRequestSchema,\n ListTerminalsRequestSchema,\n]);\n\n// Terminal notification schemas - match session notification pattern (no params wrapper, no sessionId)\nexport const TerminalDataNotificationSchema = z.object({\n type: z.literal(DaemonTerminalEvent.DATA),\n terminalId: z.string(),\n data: z.string(),\n});\n\nexport const TerminalExitNotificationSchema = z.object({\n type: z.literal(DaemonTerminalEvent.EXIT),\n terminalId: z.string(),\n exitCode: z.number(),\n signal: z.string(),\n});\n\n// Union of all terminal notification types\nexport const TerminalNotificationSchema = z.discriminatedUnion('type', [\n TerminalDataNotificationSchema,\n TerminalExitNotificationSchema,\n]);\n\n// ============ DAEMON Terminal Request Params (with sessionId) ============\n\nexport const DaemonCreateTerminalRequestParamsSchema =\n CreateTerminalRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonWriteDataRequestParamsSchema =\n WriteDataRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonResizeRequestParamsSchema = ResizeRequestParamsSchema.extend(\n {\n sessionId: z.string(),\n }\n);\n\nexport const DaemonCloseTerminalRequestParamsSchema =\n CloseTerminalRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonListTerminalsRequestParamsSchema =\n ListTerminalsRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\n// ============ DAEMON Terminal Request Schemas ============\n\nexport const DaemonCreateTerminalRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.CREATE),\n params: DaemonCreateTerminalRequestParamsSchema,\n });\n\nexport const DaemonWriteDataRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.WRITE_DATA),\n params: DaemonWriteDataRequestParamsSchema,\n});\n\nexport const DaemonResizeRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.RESIZE),\n params: DaemonResizeRequestParamsSchema,\n});\n\nexport const DaemonCloseTerminalRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonTerminalMethod.CLOSE),\n params: DaemonCloseTerminalRequestParamsSchema,\n }\n);\n\nexport const DaemonListTerminalsRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonTerminalMethod.LIST),\n params: DaemonListTerminalsRequestParamsSchema,\n }\n);\n","import z from 'zod';\n\nimport { Platform } from '../enums.js';\nimport {\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseSuccessSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseNotificationSchema,\n} from '../json-rpc.js';\nimport { DaemonConnectionMethod, DaemonConnectionEvent } from './enums.js';\n\n/**\n * Client-supplied metadata attached to the authenticate handshake.\n * Extensible: new fields can be added here without changing the\n * transport protocol. The daemon stores these on the connection\n * context and uses them for span attribution.\n */\nexport const DaemonConnectionMetadataSchema = z.object({\n tracing: z\n .object({\n /** Human interaction surface (e.g., 'web', 'desktop', 'cli_tui'). Absent for infrastructure callers. */\n app: z.string().optional(),\n /** Client-relative machine classification: local | ephemeral | computer. */\n machineType: z.string().optional(),\n /** Computer provider: byom | e2b. */\n machineProvider: z.string().optional(),\n /** Transport kind: ws_localhost | ws_direct | ws_relay. */\n daemonTransport: z.string().optional(),\n })\n .optional(),\n});\n\n// Connection-level authentication schemas\nexport const DaemonAuthenticateRequestParamsSchema = z\n .object({\n /** WorkOS JWT access token */\n token: z.string().optional(),\n /** Factory API key (fk-*) */\n apiKey: z.string().optional(),\n /** Frontend-generated connection ID for trace correlation */\n connectionId: z.string().optional(),\n /** Caller identifier for debugging (e.g., 'frontend', 'backend-v0-sessions', 'cli') */\n caller: z.string(),\n /** Client-supplied metadata for tracing and diagnostics. */\n metadata: DaemonConnectionMetadataSchema.optional(),\n })\n .refine((data) => data.token || data.apiKey, {\n message: 'Either token or apiKey must be provided',\n });\n\nexport const DaemonAuthenticateRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonConnectionMethod.AUTHENTICATE),\n params: DaemonAuthenticateRequestParamsSchema,\n});\n\nexport const DaemonAuthenticateResultSchema = z.object({\n userId: z.string(),\n orgId: z.string(),\n});\n\nexport const DaemonAuthenticateResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonAuthenticateResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonLogoutRequestParamsSchema = z.object({}).strict();\n\nexport const DaemonLogoutRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonConnectionMethod.LOGOUT),\n params: DaemonLogoutRequestParamsSchema,\n});\n\nexport const DaemonLogoutResultSchema = z.object({\n accepted: z.literal(true),\n});\n\nexport const DaemonLogoutResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonLogoutResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Connection status notification schemas\nexport const DaemonConnectionStatusNotificationParamsSchema = z.object({\n isDroidCLIInPath: z.boolean(),\n droidCLIVersion: z.string().optional(),\n homedir: z.string(),\n platform: z.nativeEnum(Platform),\n});\n\nexport const DaemonConnectionStatusNotificationSchema =\n JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DaemonConnectionEvent.CONNECTION_STATUS),\n params: DaemonConnectionStatusNotificationParamsSchema,\n });\n\n// Inferred types\nexport type DaemonConnectionMetadata = z.infer<\n typeof DaemonConnectionMetadataSchema\n>;\nexport type DaemonAuthenticateRequestParams = z.infer<\n typeof DaemonAuthenticateRequestParamsSchema\n>;\nexport type DaemonAuthenticateRequest = z.infer<\n typeof DaemonAuthenticateRequestSchema\n>;\nexport type DaemonAuthenticateResult = z.infer<\n typeof DaemonAuthenticateResultSchema\n>;\nexport type DaemonAuthenticateResponse = z.infer<\n typeof DaemonAuthenticateResponseSchema\n>;\nexport type DaemonLogoutRequestParams = z.infer<\n typeof DaemonLogoutRequestParamsSchema\n>;\nexport type DaemonLogoutRequest = z.infer<typeof DaemonLogoutRequestSchema>;\nexport type DaemonLogoutResult = z.infer<typeof DaemonLogoutResultSchema>;\nexport type DaemonLogoutResponse = z.infer<typeof DaemonLogoutResponseSchema>;\nexport type DaemonConnectionStatusNotificationParams = z.infer<\n typeof DaemonConnectionStatusNotificationParamsSchema\n>;\nexport type DaemonConnectionStatusNotification = z.infer<\n typeof DaemonConnectionStatusNotificationSchema\n>;\n","import z from 'zod';\n\nimport {\n AddMcpServerRequestParamsSchema,\n AuthenticateMcpServerRequestParamsSchema,\n CancelMcpAuthRequestParamsSchema,\n ClearMcpAuthRequestParamsSchema,\n ListMcpRegistryRequestParamsSchema,\n ListMcpRegistryResultSchema,\n ListMcpServersRequestParamsSchema,\n ListMcpServersResultSchema,\n ListMcpToolsRequestParamsSchema,\n ListMcpToolsResultSchema,\n RemoveMcpServerRequestParamsSchema,\n ToggleMcpServerRequestParamsSchema,\n ToggleMcpToolRequestParamsSchema,\n} from '../client.js';\nimport { McpServerStatus } from '../enums.js';\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { McpRegistryServerSchema, McpToolInfoSchema } from '../mcp.js';\nimport { DaemonDroidMethod, McpConfigSource } from './enums.js';\n\n// MCP Server Config Schema (matches @factory/mcp)\nconst McpStdioServerConfigSchema = z.object({\n type: z.literal('stdio').optional().default('stdio'),\n command: z.string(),\n args: z.array(z.string()),\n env: z.record(z.string(), z.string()).optional(),\n disabled: z.boolean().optional().default(false),\n});\n\nexport const McpOAuthConfigSchema = z.object({\n scopes: z.array(z.string().trim().min(1)).optional(),\n clientId: z.string().trim().min(1).optional(),\n clientSecret: z\n .string()\n .min(1)\n .refine((secret) => secret.trim().length > 0, {\n message: 'clientSecret cannot be blank',\n })\n .optional(),\n callbackPort: z.number().int().min(1).max(65535).optional(),\n});\n\nexport const McpHttpServerConfigSchema = z.object({\n type: z.literal('http'),\n url: z.string(),\n headers: z.record(z.string(), z.string()).optional(),\n oauth: McpOAuthConfigSchema.optional(),\n disabled: z.boolean().optional().default(false),\n});\n\nconst McpSseServerConfigSchema = z.object({\n type: z.literal('sse'),\n url: z.string(),\n headers: z.record(z.string(), z.string()).optional(),\n oauth: McpOAuthConfigSchema.optional(),\n disabled: z.boolean().optional().default(false),\n});\n\nexport const McpServerConfigSchema = z.union([\n McpStdioServerConfigSchema,\n McpHttpServerConfigSchema,\n McpSseServerConfigSchema,\n]);\n\n// Server info with source and status\nexport const McpServerInfoSchema = z.object({\n name: z.string(),\n config: McpServerConfigSchema,\n source: z.nativeEnum(McpConfigSource),\n status: z.nativeEnum(McpServerStatus).optional(),\n error: z.string().optional(),\n});\n\n// Simple success result used by multiple MCP operations\nexport const McpSuccessResultSchema = z.object({\n success: z.boolean(),\n});\n\n// GET_MCP_CONFIG\nexport const DaemonGetMcpConfigRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_MCP_CONFIG),\n params: z.object({}),\n});\n\nexport const DaemonGetMcpConfigResultSchema = z.object({\n servers: z.array(McpServerInfoSchema),\n});\n\n// UPDATE_MCP_CONFIG\nexport const DaemonUpdateMcpConfigRequestParamsSchema = z.object({\n action: z.enum(['add', 'remove', 'enable', 'disable']),\n serverNames: z.array(z.string()),\n serverConfig: McpServerConfigSchema.optional(),\n});\n\nexport const DaemonUpdateMcpConfigRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_MCP_CONFIG),\n params: DaemonUpdateMcpConfigRequestParamsSchema,\n });\n\nexport const DaemonUpdateMcpConfigResultSchema = z.object({\n success: z.boolean(),\n servers: z.array(McpServerInfoSchema),\n error: z.string().optional(),\n});\n\n// TOGGLE_MCP_SERVER - proxied to CLI session\nexport const DaemonToggleMcpServerRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.TOGGLE_MCP_SERVER),\n params: ToggleMcpServerRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\n// AUTHENTICATE_MCP_SERVER - proxied to CLI session for OAuth flow\nexport const DaemonAuthenticateMcpServerRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.AUTHENTICATE_MCP_SERVER),\n params: AuthenticateMcpServerRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\n// CANCEL_MCP_AUTH - proxied to CLI session to cancel pending OAuth flow\nexport const DaemonCancelMcpAuthRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.CANCEL_MCP_AUTH),\n params: CancelMcpAuthRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n }\n);\n\n// CLEAR_MCP_AUTH - proxied to CLI session to clear OAuth tokens\nexport const DaemonClearMcpAuthRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CLEAR_MCP_AUTH),\n params: ClearMcpAuthRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n});\n\n// ADD_MCP_SERVER - proxied to CLI session to add MCP server to config\nexport const DaemonAddMcpServerRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.ADD_MCP_SERVER),\n params: AddMcpServerRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n});\n\n// REMOVE_MCP_SERVER - proxied to CLI session to remove MCP server from config\nexport const DaemonRemoveMcpServerRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.REMOVE_MCP_SERVER),\n params: RemoveMcpServerRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\n// LIST_MCP_REGISTRY - proxied to CLI session to list available MCP servers\nexport const DaemonListMcpRegistryRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_MCP_REGISTRY),\n params: ListMcpRegistryRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\nexport const DaemonMcpRegistryServerSchema = McpRegistryServerSchema.extend({});\n\nexport const DaemonListMcpRegistryResultSchema =\n ListMcpRegistryResultSchema.extend({});\n\n// LIST_MCP_TOOLS - get all tools with enabled/disabled state\nexport const DaemonListMcpToolsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_MCP_TOOLS),\n params: ListMcpToolsRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n});\n\nexport const DaemonMcpToolInfoSchema = McpToolInfoSchema.extend({});\n\nexport const DaemonListMcpToolsResultSchema = ListMcpToolsResultSchema.extend(\n {}\n);\n\n// TOGGLE_MCP_TOOL - enable/disable a specific tool\nexport const DaemonToggleMcpToolRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.TOGGLE_MCP_TOOL),\n params: ToggleMcpToolRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n }\n);\n\n// LIST_MCP_SERVERS - get current MCP server statuses for a session\nexport const DaemonListMcpServersRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_MCP_SERVERS),\n params: ListMcpServersRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\nexport const DaemonListMcpServersResultSchema =\n ListMcpServersResultSchema.extend({});\n\n// SUBMIT_MCP_AUTH_CODE - relay OAuth auth code from frontend to CLI for remote sessions\nconst DaemonSubmitMcpAuthCodeRequestParamsSchema = z.object({\n sessionId: z.string(),\n serverName: z.string(),\n code: z.string(),\n state: z.string(),\n});\n\nexport const DaemonSubmitMcpAuthCodeRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SUBMIT_MCP_AUTH_CODE),\n params: DaemonSubmitMcpAuthCodeRequestParamsSchema,\n });\n","import z from 'zod';\n\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { AutomationPrivacyLevel } from './automations-enums.js';\nimport { DaemonDroidMethod } from './enums.js';\n\n// LIST_AUTOMATIONS - discover automations from the filesystem\nconst DaemonListAutomationsRequestParamsSchema = z.object({\n basePath: z.string().optional(),\n});\n\nexport const DaemonListAutomationsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_AUTOMATIONS),\n params: DaemonListAutomationsRequestParamsSchema,\n });\n\nexport const AutomationEntrySchema = z.object({\n /** Directory name slug (e.g. \"health-check\"). Kept as `id` because protocol rules forbid renaming required fields. */\n id: z.string(),\n /** Stable UUID from HEARTBEAT.md frontmatter, used for backend/Firestore sync. */\n uuid: z.string().optional(),\n name: z.string(),\n description: z.string().optional(),\n status: z.string(),\n schedule: z.string().optional(),\n model: z.string().optional(),\n tags: z.array(z.string()).optional(),\n nextRunAt: z.string().optional(),\n lastRunAt: z.string().optional(),\n isValid: z.boolean(),\n path: z.string(),\n privacyLevel: z.string().optional(),\n createdBy: z\n .object({\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n })\n .optional(),\n forkedFrom: z.string().optional(),\n /** Present when the automation targets a remote computer. */\n computerId: z.string().optional(),\n});\n\nexport const DaemonListAutomationsResultSchema = z.object({\n automations: z.array(AutomationEntrySchema),\n});\n\n// RUN_AUTOMATION - resolve automation metadata so frontend can create a session.\n// For local automations: reads HEARTBEAT.md from filesystem.\n// For computer automations: fetches from backend API when computerId is present.\nconst DaemonRunAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n /** Directory name of the automation (e.g. \"health-check\"). Preferred over automationId. */\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n /** When set, fetches the automation from the backend API instead of local filesystem. */\n computerId: z.string().optional(),\n});\n\nexport const DaemonRunAutomationRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.RUN_AUTOMATION),\n params: DaemonRunAutomationRequestParamsSchema,\n }\n);\n\nexport const DaemonRunAutomationResultSchema = z.object({\n prompt: z.string(),\n automationName: z.string(),\n /** UUID from HEARTBEAT.md frontmatter (falls back to directory name if no UUID) */\n automationId: z.string(),\n cwd: z.string(),\n model: z.string().optional(),\n /** Present when the automation targets a remote computer. */\n computerId: z.string().optional(),\n});\n\n// PAUSE_AUTOMATION\nconst DaemonPauseAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonPauseAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.PAUSE_AUTOMATION),\n params: DaemonPauseAutomationRequestParamsSchema,\n });\n\nexport const DaemonPauseAutomationResultSchema = z.object({\n success: z.boolean(),\n automationId: z.string(),\n status: z.string(),\n error: z.string().optional(),\n});\n\n// RESUME_AUTOMATION\nconst DaemonResumeAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonResumeAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.RESUME_AUTOMATION),\n params: DaemonResumeAutomationRequestParamsSchema,\n });\n\nexport const DaemonResumeAutomationResultSchema = z.object({\n success: z.boolean(),\n automationId: z.string(),\n status: z.string(),\n error: z.string().optional(),\n});\n\n// GET_AUTOMATION_HISTORY\nconst DaemonGetAutomationHistoryRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonGetAutomationHistoryRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_AUTOMATION_HISTORY),\n params: DaemonGetAutomationHistoryRequestParamsSchema,\n });\n\nconst AutomationRunRecordSchema = z.object({\n runId: z.string(),\n automationId: z.string(),\n status: z.string(),\n startedAt: z.string(),\n completedAt: z.string().optional(),\n durationMs: z.number().optional(),\n errorMessage: z.string().optional(),\n isRetry: z.boolean().optional(),\n originalRunId: z.string().optional(),\n});\n\nexport const DaemonGetAutomationHistoryResultSchema = z.object({\n automationId: z.string(),\n runs: z.array(AutomationRunRecordSchema),\n totalCount: z.number(),\n});\n\n// GET_AUTOMATION_VISUAL\nconst DaemonGetAutomationVisualRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n sessionId: z.string().optional(),\n});\n\nexport const DaemonGetAutomationVisualRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_AUTOMATION_VISUAL),\n params: DaemonGetAutomationVisualRequestParamsSchema,\n });\n\nexport const DaemonGetAutomationVisualResultSchema = z.object({\n automationId: z.string(),\n exists: z.boolean(),\n content: z.string().optional(),\n isStale: z.boolean().optional(),\n s3Url: z.string().optional(),\n});\n\n// CREATE_AUTOMATION\nconst DaemonCreateAutomationRequestParamsSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n schedule: z.string(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonCreateAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CREATE_AUTOMATION),\n params: DaemonCreateAutomationRequestParamsSchema,\n });\n\nexport const DaemonCreateAutomationResultSchema = z.object({\n success: z.boolean(),\n automationId: z.string().optional(),\n error: z.string().optional(),\n});\n\n// UPDATE_AUTOMATION_MODEL - update the model field in HEARTBEAT.md frontmatter\nconst DaemonUpdateAutomationModelRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n model: z.string().nullable(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonUpdateAutomationModelRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_AUTOMATION_MODEL),\n params: DaemonUpdateAutomationModelRequestParamsSchema,\n });\n\nexport const DaemonUpdateAutomationModelResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// UPDATE_AUTOMATION_PRIVACY - update the privacyLevel field in HEARTBEAT.md frontmatter\nconst DaemonUpdateAutomationPrivacyRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n privacyLevel: z.nativeEnum(AutomationPrivacyLevel),\n createdBy: z\n .object({\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n })\n .optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonUpdateAutomationPrivacyRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_AUTOMATION_PRIVACY),\n params: DaemonUpdateAutomationPrivacyRequestParamsSchema,\n });\n\nexport const DaemonUpdateAutomationPrivacyResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// RENAME_AUTOMATION - update the name field in HEARTBEAT.md frontmatter\nconst DaemonRenameAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n newName: z.string(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonRenameAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.RENAME_AUTOMATION),\n params: DaemonRenameAutomationRequestParamsSchema,\n });\n\nexport const DaemonRenameAutomationResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// DELETE_AUTOMATION - remove an automation directory\nconst DaemonDeleteAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonDeleteAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.DELETE_AUTOMATION),\n params: DaemonDeleteAutomationRequestParamsSchema,\n });\n\nexport const DaemonDeleteAutomationResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// FORK_AUTOMATION - fork a shared automation into the local filesystem\nconst DaemonForkAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n name: z.string(),\n description: z.string().optional(),\n schedule: z.string(),\n tags: z.array(z.string()).optional(),\n model: z.string().optional(),\n prompt: z.string(),\n forkedFrom: z.string(),\n localDirName: z.string(),\n});\n\nexport const DaemonForkAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.FORK_AUTOMATION),\n params: DaemonForkAutomationRequestParamsSchema,\n });\n\nexport const DaemonForkAutomationResultSchema = z.object({\n success: z.boolean(),\n automationId: z.string().optional(),\n error: z.string().optional(),\n});\n","import z from 'zod';\n\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { MarketplaceSourceSchema } from '../settings.js';\nimport { DaemonDroidMethod } from './enums.js';\n\nexport { MarketplaceSourceSchema };\n\n// CRITICAL: `RedactedMarketplaceSourceSchema` below stays intentionally\n// distinct from `MarketplaceSourceSchema`. The redacted variant omits\n// filesystem paths and userinfo for RPC responses; collapsing the two would\n// risk credential / local-layout leakage.\n\n// ── LIST_AVAILABLE_PLUGINS ───────────────────────────────────────────\n\nconst DaemonListAvailablePluginsRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonListAvailablePluginsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_AVAILABLE_PLUGINS),\n params: DaemonListAvailablePluginsRequestParamsSchema,\n });\n\nexport const DaemonListAvailablePluginsResultSchema = z.object({\n plugins: z.array(\n z.object({\n name: z.string(),\n marketplace: z.string(),\n description: z.string().optional(),\n })\n ),\n});\n\n// ── LIST_INSTALLED_PLUGINS ───────────────────────────────────────────\n\nconst DaemonListInstalledPluginsRequestParamsSchema = z.object({\n sessionId: z.string(),\n scope: z.string().optional(),\n});\n\nexport const DaemonListInstalledPluginsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_INSTALLED_PLUGINS),\n params: DaemonListInstalledPluginsRequestParamsSchema,\n });\n\nexport const DaemonListInstalledPluginsResultSchema = z.object({\n plugins: z.array(\n z.object({\n id: z.string(),\n scope: z.string(),\n version: z.string(),\n installPath: z.string(),\n installedAt: z.string(),\n lastUpdated: z.string(),\n source: z.string(),\n })\n ),\n});\n\n// ── INSTALL_PLUGIN ───────────────────────────────────────────────────\n\nconst DaemonInstallPluginRequestParamsSchema = z.object({\n sessionId: z.string(),\n marketplace: z.string(),\n pluginName: z.string(),\n scope: z.string(),\n});\n\nexport const DaemonInstallPluginRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.INSTALL_PLUGIN),\n params: DaemonInstallPluginRequestParamsSchema,\n }\n);\n\nexport const DaemonInstallPluginResultSchema = z.object({\n success: z.boolean(),\n pluginId: z.string().optional(),\n error: z.string().optional(),\n});\n\n// ── UNINSTALL_PLUGIN ─────────────────────────────────────────────────\n\nconst DaemonUninstallPluginRequestParamsSchema = z.object({\n sessionId: z.string(),\n pluginId: z.string(),\n scope: z.string(),\n});\n\nexport const DaemonUninstallPluginRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UNINSTALL_PLUGIN),\n params: DaemonUninstallPluginRequestParamsSchema,\n });\n\nexport const DaemonUninstallPluginResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// ── UPDATE_PLUGIN ────────────────────────────────────────────────────\n\nconst DaemonUpdatePluginRequestParamsSchema = z.object({\n sessionId: z.string(),\n pluginId: z.string().optional(),\n scope: z.string().optional(),\n});\n\nexport const DaemonUpdatePluginRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_PLUGIN),\n params: DaemonUpdatePluginRequestParamsSchema,\n});\n\nexport const DaemonUpdatePluginResultSchema = z.object({\n results: z.array(\n z.object({\n pluginId: z.string(),\n success: z.boolean(),\n error: z.string().optional(),\n })\n ),\n});\n\n// ── LIST_MARKETPLACES ────────────────────────────────────────────────\n\nconst DaemonListMarketplacesRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonListMarketplacesRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_MARKETPLACES),\n params: DaemonListMarketplacesRequestParamsSchema,\n });\n\n// Redacted marketplace source shape for RPC responses. Unlike\n// `MarketplaceSourceSchema`, this intentionally omits filesystem paths for\n// `local` sources and expects URLs for `url` / `git-subdir` sources to be\n// scrubbed of credential userinfo before crossing the RPC boundary.\nexport const RedactedMarketplaceSourceSchema = z.discriminatedUnion('source', [\n z.object({\n source: z.literal('github'),\n repo: z.string(),\n }),\n z.object({\n source: z.literal('url'),\n url: z.string(),\n }),\n z.object({\n source: z.literal('local'),\n }),\n z.object({\n source: z.literal('git-subdir'),\n url: z.string(),\n path: z.string(),\n }),\n]);\n\nexport const DaemonListMarketplacesResultSchema = z.object({\n marketplaces: z.array(\n z.object({\n name: z.string(),\n source: RedactedMarketplaceSourceSchema,\n pluginCount: z.number(),\n autoUpdate: z.boolean(),\n })\n ),\n});\n\n// ── ADD_MARKETPLACE ──────────────────────────────────────────────────\n\nconst DaemonAddMarketplaceRequestParamsSchema = z.object({\n sessionId: z.string(),\n source: MarketplaceSourceSchema,\n});\n\nexport const DaemonAddMarketplaceRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.ADD_MARKETPLACE),\n params: DaemonAddMarketplaceRequestParamsSchema,\n });\n\nexport const DaemonAddMarketplaceResultSchema = z.object({\n success: z.boolean(),\n name: z.string().optional(),\n error: z.string().optional(),\n});\n\n// ── REMOVE_MARKETPLACE ───────────────────────────────────────────────\n\nconst DaemonRemoveMarketplaceRequestParamsSchema = z.object({\n sessionId: z.string(),\n name: z.string(),\n});\n\nexport const DaemonRemoveMarketplaceRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.REMOVE_MARKETPLACE),\n params: DaemonRemoveMarketplaceRequestParamsSchema,\n });\n\nexport const DaemonRemoveMarketplaceResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// ── UPDATE_MARKETPLACE ───────────────────────────────────────────────\n\nconst DaemonUpdateMarketplaceRequestParamsSchema = z.object({\n sessionId: z.string(),\n name: z.string().optional(),\n});\n\nexport const DaemonUpdateMarketplaceRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_MARKETPLACE),\n params: DaemonUpdateMarketplaceRequestParamsSchema,\n });\n\nexport const DaemonUpdateMarketplaceResultSchema = z.object({\n results: z.array(\n z.object({\n name: z.string(),\n success: z.boolean(),\n error: z.string().optional(),\n })\n ),\n});\n","/**\n * Daemon-only settings schemas.\n * These are for settings that are stored/retrieved directly by the daemon\n * without forwarding to the CLI process.\n */\nimport z from 'zod';\n\nimport { AvailableModelConfigSchema } from '../client.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n ReasoningEffort,\n SettingsLevel,\n} from '../enums.js';\nimport { GeneralSettingsSchema } from '../general-settings.js';\nimport {\n DroidInteractionModeSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n} from '../json-rpc.js';\nimport {\n MissionModelSettingsSchema,\n SubagentModelSettingsSchema,\n} from '../model-settings.js';\nimport {\n SessionDefaultSettingsSchema,\n SettingsResolutionEventSchema,\n} from '../settings.js';\nimport { DaemonSettingsMethod } from './enums.js';\n\n// ---------------------------------------------------------------------------\n// Daemon settings RPC schemas\n// ---------------------------------------------------------------------------\n\n// Request params schemas\nexport const DaemonGetDefaultSettingsRequestParamsSchema = z.object({});\nconst DaemonSettingsManagementInfoSchema = z.object({\n disabled: z.boolean(),\n source: z.nativeEnum(SettingsLevel).nullable(),\n folderPath: z.string().optional(),\n});\nconst DaemonSettingsManagementInfoFieldSchema =\n DaemonSettingsManagementInfoSchema.optional().catch(undefined);\nconst LegacyCompactionModelModeWireSchema = z.enum([\n 'current-model',\n 'factory-default',\n]);\nconst DaemonSubagentDefaultsManagementMapSchema = z\n .object({\n lightModel: DaemonSettingsManagementInfoFieldSchema,\n lightReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n mediumModel: DaemonSettingsManagementInfoFieldSchema,\n mediumReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n heavyModel: DaemonSettingsManagementInfoFieldSchema,\n heavyReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n })\n .catch({});\nconst DaemonMissionDefaultsManagementMapSchema = z\n .object({\n orchestratorModel: DaemonSettingsManagementInfoFieldSchema,\n orchestratorReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n workerModel: DaemonSettingsManagementInfoFieldSchema,\n workerReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n validationWorkerModel: DaemonSettingsManagementInfoFieldSchema,\n validationWorkerReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n skipScrutiny: DaemonSettingsManagementInfoFieldSchema,\n skipUserTesting: DaemonSettingsManagementInfoFieldSchema,\n })\n .catch({});\nexport const DaemonSessionDefaultsManagementMapSchema = z\n .object({\n modelId: DaemonSettingsManagementInfoFieldSchema,\n reasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n interactionMode: DaemonSettingsManagementInfoFieldSchema,\n autonomyLevel: DaemonSettingsManagementInfoFieldSchema,\n autonomyMode: DaemonSettingsManagementInfoFieldSchema,\n specModeModelId: DaemonSettingsManagementInfoFieldSchema,\n specModeReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n specSaveDir: DaemonSettingsManagementInfoFieldSchema,\n compactionTokenLimit: DaemonSettingsManagementInfoFieldSchema,\n compactionTokenLimitPerModel: DaemonSettingsManagementInfoFieldSchema,\n compactionModel: DaemonSettingsManagementInfoFieldSchema,\n compactionModelMode: DaemonSettingsManagementInfoFieldSchema,\n runInWorktree: DaemonSettingsManagementInfoFieldSchema,\n worktreeDirectory: DaemonSettingsManagementInfoFieldSchema,\n subagent:\n DaemonSubagentDefaultsManagementMapSchema.optional().catch(undefined),\n mission:\n DaemonMissionDefaultsManagementMapSchema.optional().catch(undefined),\n })\n .catch({});\nexport const DaemonUpdateSessionDefaultsRequestParamsSchema = z.object({\n modelId: SessionDefaultSettingsSchema.shape.model,\n reasoningEffort: SessionDefaultSettingsSchema.shape.reasoningEffort,\n interactionMode: SessionDefaultSettingsSchema.shape.interactionMode,\n autonomyLevel: SessionDefaultSettingsSchema.shape.autonomyLevel,\n specModeModelId: SessionDefaultSettingsSchema.shape.specModeModel.nullable(),\n specModeReasoningEffort:\n SessionDefaultSettingsSchema.shape.specModeReasoningEffort.nullable(),\n compactionTokenLimit: GeneralSettingsSchema.shape.compactionTokenLimit,\n compactionTokenLimitPerModel:\n GeneralSettingsSchema.shape.compactionTokenLimitPerModel,\n compactionModel: GeneralSettingsSchema.shape.compactionModel,\n compactionModelMode: LegacyCompactionModelModeWireSchema.optional().describe(\n 'Deprecated wire input retained for existing daemon clients; use compactionModel instead.'\n ),\n subagentModelSettings: SubagentModelSettingsSchema.partial().optional(),\n specSaveDir: GeneralSettingsSchema.shape.specSaveDir.nullable().optional(),\n missionOrchestratorModel: GeneralSettingsSchema.shape.missionOrchestratorModel\n .nullable()\n .optional(),\n missionOrchestratorReasoningEffort:\n GeneralSettingsSchema.shape.missionOrchestratorReasoningEffort\n .nullable()\n .optional(),\n missionModelSettings: MissionModelSettingsSchema.partial().optional(),\n runInWorktree: SessionDefaultSettingsSchema.shape.runInWorktree\n .nullable()\n .optional(),\n worktreeDirectory: GeneralSettingsSchema.shape.worktreeDirectory\n .nullable()\n .optional(),\n});\n\nconst DaemonSpecSavePresetsSchema = z\n .object({\n projectFactoryDir: z.string().optional(),\n userFactoryDir: z.string(),\n })\n .optional();\n\n// Request schemas\nexport const DaemonGetDefaultSettingsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonSettingsMethod.GET_DEFAULT_SETTINGS),\n params: DaemonGetDefaultSettingsRequestParamsSchema,\n });\n\nexport const DaemonUpdateSessionDefaultsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonSettingsMethod.UPDATE_SESSION_DEFAULTS),\n params: DaemonUpdateSessionDefaultsRequestParamsSchema,\n });\n\n// Result schemas\nexport const DaemonGetDefaultSettingsResultSchema = z.object({\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .describe('Deprecated: use interactionMode + autonomyLevel instead.')\n .optional(),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n maxAutonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specSaveDir: z.string().optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n compactionTokenLimit: z.number().optional(),\n compactionTokenLimitPerModel: z.record(z.number()).optional(),\n compactionModel: GeneralSettingsSchema.shape.compactionModel,\n compactionModelMode: LegacyCompactionModelModeWireSchema.optional().describe(\n 'Deprecated wire view retained for existing daemon clients; use compactionModel instead.'\n ),\n runInWorktree: z.boolean().optional(),\n worktreeDirectory: z.string().optional(),\n management: DaemonSessionDefaultsManagementMapSchema.optional(),\n missionOrchestratorModel: z.string().optional(),\n missionOrchestratorReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n subagentModelSettings: SubagentModelSettingsSchema.optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n specSavePresets: DaemonSpecSavePresetsSchema,\n resolutionChain: z\n .array(SettingsResolutionEventSchema)\n .optional()\n .catch(undefined),\n});\n\nexport const DaemonUpdateSessionDefaultsResultSchema = z.object({\n success: z.boolean(),\n defaults: DaemonGetDefaultSettingsResultSchema,\n});\n\n// Response schemas\nexport const DaemonGetDefaultSettingsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetDefaultSettingsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonUpdateSessionDefaultsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonUpdateSessionDefaultsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n","import z from 'zod';\n\nimport {\n AskUserRequestParamsSchema,\n AskUserResultSchema,\n RequestPermissionRequestParamsSchema,\n RequestPermissionResultSchema,\n SessionNotificationSchemaList,\n} from '../cli.js';\nimport {\n AddUserMessageRequestParamsSchema,\n AddUserMessageResultSchema,\n GetContextBreakdownResultSchema,\n InitializeSessionRequestParamsSchema,\n InitializeSessionResultSchema,\n InterruptSessionRequestParamsSchema,\n InterruptSessionResultSchema,\n KillWorkerSessionRequestParamsSchema,\n KillWorkerSessionResultSchema,\n LoadSessionRequestParamsSchema,\n LoadSessionResultSchema,\n ResolveQueuedUserMessageRequestParamsSchema,\n ResolveQueuedUserMessageResultSchema,\n UpdateSessionSettingsRequestParamsSchema,\n UpdateSessionSettingsResultSchema,\n ValidateWorkingDirectoryResultSchema,\n} from '../client.js';\nimport { DroidWorkingState, MissionState } from '../enums.js';\nimport { MessageRoleNoSystem } from '../enums.js';\nimport { HostIdSchema } from '../host.js';\nimport {\n CommandAckSchema,\n JsonRpcBaseNotificationSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseSuccessSchema,\n JsonRpcBaseResponseFailureSchema,\n} from '../json-rpc.js';\nimport {\n StartLoopRequestParamsSchema,\n StartLoopResultSchema,\n StopLoopRequestParamsSchema,\n StopLoopResultSchema,\n GetLoopStatusRequestParamsSchema,\n GetLoopStatusResultSchema,\n RunLoopNowRequestParamsSchema,\n RunLoopNowResultSchema,\n} from '../loop.js';\nimport { FactoryDroidMessageSchema } from '../messages.js';\nimport { SessionTagSchema } from '../session.js';\nimport {\n DaemonListAutomationsRequestSchema,\n DaemonRunAutomationRequestSchema,\n DaemonPauseAutomationRequestSchema,\n DaemonResumeAutomationRequestSchema,\n DaemonGetAutomationHistoryRequestSchema,\n DaemonGetAutomationVisualRequestSchema,\n DaemonCreateAutomationRequestSchema,\n DaemonUpdateAutomationModelRequestSchema,\n DaemonUpdateAutomationPrivacyRequestSchema,\n DaemonRenameAutomationRequestSchema,\n DaemonDeleteAutomationRequestSchema,\n DaemonForkAutomationRequestSchema,\n} from './automations.js';\nimport { DaemonSubmitBugReportRequestSchema } from './bug-report.js';\nimport {\n DaemonDroidEvent,\n DaemonDroidMethod,\n DaemonGetGitDiffUnavailableReason,\n DaemonSpecificNotificationType,\n SessionSearchDocKind,\n} from './enums.js';\nimport {\n DaemonInstallSshKeyRequestSchema,\n DaemonTriggerUpdateRequestSchema,\n} from './management.js';\nimport {\n DaemonGetMcpConfigRequestSchema,\n DaemonUpdateMcpConfigRequestSchema,\n DaemonToggleMcpServerRequestSchema,\n DaemonAuthenticateMcpServerRequestSchema,\n DaemonCancelMcpAuthRequestSchema,\n DaemonClearMcpAuthRequestSchema,\n DaemonAddMcpServerRequestSchema,\n DaemonRemoveMcpServerRequestSchema,\n DaemonListMcpRegistryRequestSchema,\n DaemonListMcpToolsRequestSchema,\n DaemonListMcpServersRequestSchema,\n DaemonToggleMcpToolRequestSchema,\n DaemonSubmitMcpAuthCodeRequestSchema,\n} from './mcp.js';\nimport {\n DaemonListAvailablePluginsRequestSchema,\n DaemonListInstalledPluginsRequestSchema,\n DaemonInstallPluginRequestSchema,\n DaemonUninstallPluginRequestSchema,\n DaemonUpdatePluginRequestSchema,\n DaemonListMarketplacesRequestSchema,\n DaemonAddMarketplaceRequestSchema,\n DaemonRemoveMarketplaceRequestSchema,\n DaemonUpdateMarketplaceRequestSchema,\n} from './plugins.js';\nimport {\n DaemonGetDefaultSettingsRequestSchema,\n DaemonUpdateSessionDefaultsRequestSchema,\n} from './settings.js';\nimport { DaemonListSkillsRequestSchema } from './skills.js';\nimport {\n TerminalDataNotificationSchema,\n TerminalExitNotificationSchema,\n} from './terminal.js';\n\n// Daemon request params schemas - extend client schemas with sessionId and token where needed\n\nexport const DaemonCommandAckResultSchema = CommandAckSchema;\n\nconst createResponseSchema = <T extends z.ZodTypeAny>(resultSchema: T) =>\n z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: resultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n ]);\n\nconst createAckCompatibleResponseSchema = <T extends z.ZodTypeAny>(\n resultSchema: T\n) =>\n z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: z.union([DaemonCommandAckResultSchema, resultSchema]),\n }),\n JsonRpcBaseResponseFailureSchema,\n ]);\n\nexport const DaemonInitializeSessionRequestParamsSchema =\n InitializeSessionRequestParamsSchema.extend({\n token: z.string(),\n inactivityTimeoutMs: z.number().int().positive().optional(),\n disableInactivityTimeout: z.boolean().optional(),\n runtimeSettingsPath: z.string().optional(),\n });\n\n/** Session spawn options captured for loadSession replay. */\nexport const DaemonLoadSessionSpawnOptionsSchema = z.object({\n disableInactivityTimeout: z.boolean().optional(),\n skipPermissionsUnsafe: z.boolean().optional(),\n runtimeSettingsPath: z.string().optional(),\n});\n\nexport const DaemonLoadSessionRequestParamsSchema =\n LoadSessionRequestParamsSchema.merge(\n DaemonLoadSessionSpawnOptionsSchema\n ).extend({\n token: z.string(),\n });\n\nexport const DaemonAddUserMessageRequestParamsSchema =\n AddUserMessageRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonResolveQueuedUserMessageRequestParamsSchema =\n ResolveQueuedUserMessageRequestParamsSchema.and(\n z.object({\n sessionId: z.string(),\n })\n );\n\nexport const DaemonInterruptSessionRequestParamsSchema =\n InterruptSessionRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonCloseSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonSessionListFilterSchema = z.object({\n missionSessions: z.boolean().optional(),\n includeBtwForks: z.boolean().optional(),\n});\n\nexport const DaemonListOpenedSessionsRequestParamsSchema = z.object({\n filter: DaemonSessionListFilterSchema.optional(),\n});\n\nexport const DaemonListAvailableSessionsFilterSchema =\n DaemonSessionListFilterSchema.extend({\n missionStates: z.array(z.nativeEnum(MissionState)).optional(),\n });\n\nexport const DaemonListAvailableSessionsRequestParamsSchema = z.object({\n limit: z.number().min(1).max(100).default(50), // Default 50\n endBefore: z.number().optional(), // Unix epoch seconds cursor\n includeMissionMetadata: z.boolean().optional(),\n filter: DaemonListAvailableSessionsFilterSchema.optional(),\n});\n\nexport const DaemonGetSessionMessagesRequestParamsSchema = z.object({\n sessionId: z.string(),\n limit: z.number().min(1).max(100).default(20),\n cursor: z.string().optional(),\n role: z.nativeEnum(MessageRoleNoSystem).optional(),\n});\n\nexport const DaemonUpdateSessionSettingsRequestParamsSchema =\n UpdateSessionSettingsRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonStartLoopRequestParamsSchema =\n StartLoopRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonStopLoopRequestParamsSchema =\n StopLoopRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonGetLoopStatusRequestParamsSchema =\n GetLoopStatusRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonRunLoopNowRequestParamsSchema =\n RunLoopNowRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonGetUserInfoRequestParamsSchema = z.object({});\n\nexport const DaemonValidateWorkingDirectoryRequestParamsSchema = z.object({\n workingDirectory: z.string(),\n});\n\nexport const DaemonInitializeSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.INITIALIZE_SESSION),\n params: DaemonInitializeSessionRequestParamsSchema,\n });\n\nexport const DaemonLoadSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LOAD_SESSION),\n params: DaemonLoadSessionRequestParamsSchema,\n});\n\nexport const DaemonAddUserMessageRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.ADD_USER_MESSAGE),\n params: DaemonAddUserMessageRequestParamsSchema,\n });\n\nexport const DaemonResolveQueuedUserMessageRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.RESOLVE_QUEUED_USER_MESSAGE),\n params: DaemonResolveQueuedUserMessageRequestParamsSchema,\n });\n\nexport const DaemonInterruptSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.INTERRUPT_SESSION),\n params: DaemonInterruptSessionRequestParamsSchema,\n });\n\nexport const DaemonCloseSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CLOSE_SESSION),\n params: DaemonCloseSessionRequestParamsSchema,\n});\n\nexport const DaemonCloseSessionResultSchema = z.object({});\n\nexport const DaemonKillWorkerSessionRequestParamsSchema = z\n .object({\n /** The orchestrator session ID (where the mission is running) */\n sessionId: z.string(),\n })\n .extend(KillWorkerSessionRequestParamsSchema.shape);\n\nexport const DaemonKillWorkerSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.KILL_WORKER_SESSION),\n params: DaemonKillWorkerSessionRequestParamsSchema,\n });\n\nexport const DaemonKillWorkerSessionResultSchema =\n KillWorkerSessionResultSchema;\n\nexport const DaemonListOpenedSessionsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_OPENED_SESSIONS),\n params: DaemonListOpenedSessionsRequestParamsSchema,\n });\n\nexport const DaemonListAvailableSessionsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_AVAILABLE_SESSIONS),\n params: DaemonListAvailableSessionsRequestParamsSchema,\n });\n\nexport const DaemonGetSessionMessagesRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_SESSION_MESSAGES),\n params: DaemonGetSessionMessagesRequestParamsSchema,\n });\n\nexport const DaemonUpdateSessionSettingsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_SESSION_SETTINGS),\n params: DaemonUpdateSessionSettingsRequestParamsSchema,\n });\n\nexport const DaemonStartLoopRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.START_LOOP),\n params: DaemonStartLoopRequestParamsSchema,\n});\n\nexport const DaemonStopLoopRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.STOP_LOOP),\n params: DaemonStopLoopRequestParamsSchema,\n});\n\nexport const DaemonGetLoopStatusRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.GET_LOOP_STATUS),\n params: DaemonGetLoopStatusRequestParamsSchema,\n }\n);\n\nexport const DaemonRunLoopNowRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.RUN_LOOP_NOW),\n params: DaemonRunLoopNowRequestParamsSchema,\n});\n\nexport const DaemonValidateWorkingDirectoryRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.VALIDATE_WORKING_DIRECTORY),\n params: DaemonValidateWorkingDirectoryRequestParamsSchema,\n });\n\nexport const DaemonInitializeSessionResultSchema =\n InitializeSessionResultSchema;\n\nexport const DaemonLoadSessionResultSchema = LoadSessionResultSchema;\n\nexport const DaemonAddUserMessageResultSchema = AddUserMessageResultSchema;\n\nexport const DaemonResolveQueuedUserMessageResultSchema =\n ResolveQueuedUserMessageResultSchema;\n\nexport const DaemonInterruptSessionResultSchema = InterruptSessionResultSchema;\n\nexport const DaemonOpenedSessionInfoSchema = z.object({\n sessionId: z.string(),\n hostId: HostIdSchema.optional(),\n updatedAt: z.number(), // Unix epoch seconds (in-memory updatedAt timestamp)\n workingState: z.nativeEnum(DroidWorkingState),\n cwd: z.string().optional(), // Working directory for the session (may be missing for older sessions)\n repoRoot: z.string().optional(), // Git repo root for `cwd`; for worktree cwds this points at the main repo path. Used to group worktree sessions under their parent project in the sidebar.\n messagesCount: z.number().optional(), // Number of messages in session\n callingSessionId: z.string().optional(), // Parent session ID for child/worker sessions\n callingToolUseId: z.string().optional(), // Parent tool use ID that spawned this child session\n tags: z.array(SessionTagSchema).optional(), // Session tags for categorization\n});\n\nexport const DaemonAvailableSessionInfoSchema = z.object({\n sessionId: z.string(),\n hostId: HostIdSchema.optional(),\n updatedAt: z.number(), // Unix epoch seconds (file mtime)\n title: z.string().optional(), // May be missing on parse errors\n cwd: z.string().optional(), // Working directory for the session (may be missing for older sessions)\n repoRoot: z.string().optional(), // See DaemonOpenedSessionInfoSchema.repoRoot.\n messagesCount: z.number().optional(), // Number of messages in session\n archivedAt: z.string().optional(), // ISO timestamp when archived - presence indicates archived status\n callingSessionId: z.string().optional(), // Parent session ID for child/worker sessions (from JSONL summary `callingSessionId` field)\n callingToolUseId: z.string().optional(), // Parent tool use ID that spawned this child session (from JSONL summary)\n tags: z.array(SessionTagSchema).optional(), // Session tags for categorization\n mission: z\n .object({\n state: z.nativeEnum(MissionState).nullable(),\n title: z.string().nullable(),\n workingDirectory: z.string().nullable(),\n createdAt: z.string().nullable(),\n elapsedMs: z.number().nullable(),\n completedFeatures: z.number().nullable(),\n totalFeatures: z.number().nullable(),\n })\n .optional(),\n});\n\nexport const DaemonListOpenedSessionsResultSchema = z.object({\n sessions: z.array(DaemonOpenedSessionInfoSchema),\n});\n\nexport const DaemonListAvailableSessionsResultSchema = z.object({\n sessions: z.array(DaemonAvailableSessionInfoSchema),\n hasMore: z.boolean(),\n nextCursor: z.number().optional(),\n});\n\nexport const DaemonGetSessionMessagesResultSchema = z.object({\n messages: z.array(FactoryDroidMessageSchema),\n hasMore: z.boolean(),\n nextCursor: z.string().optional(),\n});\n\nexport const DaemonUpdateSessionSettingsResultSchema =\n UpdateSessionSettingsResultSchema;\n\nexport const DaemonStartLoopResultSchema = StartLoopResultSchema;\n\nexport const DaemonStopLoopResultSchema = StopLoopResultSchema;\n\nexport const DaemonGetLoopStatusResultSchema = GetLoopStatusResultSchema;\n\nexport const DaemonRunLoopNowResultSchema = RunLoopNowResultSchema;\n\nexport const DaemonGetUserInfoResultSchema = z.object({\n userId: z.string(),\n orgId: z.string(),\n});\n\nexport const DaemonValidateWorkingDirectoryResultSchema =\n ValidateWorkingDirectoryResultSchema;\n\n// Permission request schemas - extend client schemas with sessionId\nexport const DaemonRequestPermissionParamsSchema =\n RequestPermissionRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonRequestPermissionResultSchema =\n RequestPermissionResultSchema.and(z.object({ sessionId: z.string() }));\n\n// AskUser request schemas - extend droid schemas with sessionId\nexport const DaemonAskUserParamsSchema = AskUserRequestParamsSchema.extend({\n sessionId: z.string(),\n});\n\nexport const DaemonAskUserResultSchema = AskUserResultSchema.extend({\n sessionId: z.string(),\n});\n\n// ============================================================\n// List Files\n// ============================================================\n\nexport const DaemonListFilesRequestParamsSchema = z.object({\n sessionId: z.string(),\n showHidden: z.boolean().optional().default(false),\n});\n\nexport const DaemonListFilesResultSchema = z.object({\n files: z.array(z.string()),\n});\n\nexport const DaemonListFilesRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_FILES),\n params: DaemonListFilesRequestParamsSchema,\n});\n\nexport const DaemonListFilesResponseSchema =\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonListFilesResultSchema,\n });\n\n// ============================================================\n// Search Files (Fuzzy Search)\n// ============================================================\n\nexport const DaemonSearchFilesRequestParamsSchema = z.object({\n sessionId: z.string(),\n query: z.string(),\n maxResults: z.number().optional().default(60),\n showHidden: z.boolean().optional().default(false),\n});\n\nexport const DaemonSearchFilesResultSchema = z.object({\n files: z.array(z.string()),\n totalFiles: z.number(),\n});\n\nexport const DaemonSearchFilesRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SEARCH_FILES),\n params: DaemonSearchFilesRequestParamsSchema,\n});\n\nexport const DaemonSearchFilesResponseSchema =\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonSearchFilesResultSchema,\n });\n\n// ============================================================\n// Search Sessions (Full-text search across session history)\n// ============================================================\n\nconst SessionSearchDocKindSchema = z.nativeEnum(SessionSearchDocKind);\n\nexport const DaemonSearchSessionsRequestParamsSchema = z.object({\n query: z.string(),\n kind: z.union([SessionSearchDocKindSchema, z.literal('all')]).optional(),\n limitSessions: z.number().optional(),\n limitHitsPerSession: z.number().optional(),\n contextChars: z.number().optional(),\n});\n\nexport const DaemonSearchSessionsHitSchema = z.object({\n docId: z.string(),\n kind: SessionSearchDocKindSchema,\n score: z.number().optional(),\n toolName: z.string().optional(),\n messageRole: z.enum(['user', 'assistant']).optional(),\n snippets: z.array(z.string()),\n});\n\nexport const DaemonSearchSessionsSessionResultSchema = z.object({\n sessionId: z.string(),\n title: z.string().optional(),\n updatedAt: z.number().optional(), // Unix timestamp in milliseconds for sorting\n hits: z.array(DaemonSearchSessionsHitSchema),\n totals: z\n .object({\n byKind: z.record(z.number()).optional(),\n toolUse: z.record(z.number()).optional(),\n toolResult: z.record(z.number()).optional(),\n })\n .optional(),\n});\n\nexport const DaemonSearchSessionsResultSchema = z.object({\n query: z.string(),\n sessions: z.array(DaemonSearchSessionsSessionResultSchema),\n});\n\nexport const DaemonSearchSessionsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SEARCH_SESSIONS),\n params: DaemonSearchSessionsRequestParamsSchema,\n });\n\nexport const DaemonSearchSessionsResponseSchema =\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonSearchSessionsResultSchema,\n });\n\n// ============================================================\n// Archive Session\n// ============================================================\n\nexport const DaemonArchiveSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonArchiveSessionResultSchema = z.object({\n success: z.boolean(),\n archivedAt: z.string(), // ISO timestamp\n});\n\nexport const DaemonArchiveSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.ARCHIVE_SESSION),\n params: DaemonArchiveSessionRequestParamsSchema,\n });\n\nexport const DaemonArchiveSessionResponseSchema = createResponseSchema(\n DaemonArchiveSessionResultSchema\n);\n\n// ============================================================\n// Unarchive Session\n// ============================================================\n\nexport const DaemonUnarchiveSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonUnarchiveSessionResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonUnarchiveSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UNARCHIVE_SESSION),\n params: DaemonUnarchiveSessionRequestParamsSchema,\n });\n\nexport const DaemonUnarchiveSessionResponseSchema = createResponseSchema(\n DaemonUnarchiveSessionResultSchema\n);\n\n// ============================================================\n// Rename Session\n// ============================================================\n\nexport const DaemonRenameSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n title: z.string(),\n});\n\nexport const DaemonRenameSessionResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonRenameSessionRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.RENAME_SESSION),\n params: DaemonRenameSessionRequestParamsSchema,\n }\n);\n\nexport const DaemonRenameSessionResponseSchema =\n createAckCompatibleResponseSchema(DaemonRenameSessionResultSchema);\n\n// ============================================================\n// Get Git Diff\n// ============================================================\n\nexport const DaemonGetGitDiffRequestParamsSchema = z.object({\n sessionId: z.string(),\n baseBranch: z.string().optional(),\n});\n\nexport const DaemonGetGitDiffFileSchema = z.object({\n path: z.string(),\n additions: z.number(),\n deletions: z.number(),\n status: z.string(),\n});\n\nexport const DaemonGetGitDiffCommitSchema = z.object({\n hash: z.string(),\n message: z.string(),\n});\n\nconst DaemonGetGitDiffUnavailableReasonSchema = z\n .nativeEnum(DaemonGetGitDiffUnavailableReason)\n .catch(DaemonGetGitDiffUnavailableReason.Unknown);\n\nexport const DaemonGetGitDiffDataSchema = z.object({\n diff: z.string(),\n branch: z.string(),\n baseBranch: z.string(),\n files: z.array(DaemonGetGitDiffFileSchema),\n totalAdditions: z.number(),\n totalDeletions: z.number(),\n remoteUrl: z.string().nullable(),\n commits: z.array(DaemonGetGitDiffCommitSchema),\n unstagedDiff: z.string().default(''),\n unstagedFiles: z.array(DaemonGetGitDiffFileSchema).default([]),\n unstagedTotalAdditions: z.number().default(0),\n unstagedTotalDeletions: z.number().default(0),\n});\n\nexport const DaemonGetGitDiffSuccessResultSchema = z.object({\n success: z.literal(true),\n data: DaemonGetGitDiffDataSchema,\n});\n\nexport const DaemonGetGitDiffUnavailableResultSchema = z.object({\n success: z.literal(false),\n unavailableReason: DaemonGetGitDiffUnavailableReasonSchema,\n unavailableMessage: z.string(),\n});\n\nexport const DaemonGetGitDiffResultSchema = z.preprocess(\n (value) => {\n if (\n value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n !('success' in value)\n ) {\n const legacyResult = DaemonGetGitDiffDataSchema.safeParse(value);\n if (legacyResult.success) {\n return { success: true, data: legacyResult.data };\n }\n }\n\n return value;\n },\n z.discriminatedUnion('success', [\n DaemonGetGitDiffSuccessResultSchema,\n DaemonGetGitDiffUnavailableResultSchema,\n ])\n);\n\nexport const DaemonGetGitDiffRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_GIT_DIFF),\n params: DaemonGetGitDiffRequestParamsSchema,\n});\n\nexport const DaemonGetGitDiffResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetGitDiffResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// ============================================================\n// Git Push\n// ============================================================\n\nexport const DaemonGitPushRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonGitPushResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonGitPushRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GIT_PUSH),\n params: DaemonGitPushRequestParamsSchema,\n});\n\nexport const DaemonGitPushResponseSchema = createResponseSchema(\n DaemonGitPushResultSchema\n);\n\n// ============================================================\n// Git Commit\n// ============================================================\n\nexport const DaemonGitCommitRequestParamsSchema = z.object({\n sessionId: z.string(),\n message: z.string(),\n});\n\nexport const DaemonGitCommitResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonGitCommitRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GIT_COMMIT),\n params: DaemonGitCommitRequestParamsSchema,\n});\n\nexport const DaemonGitCommitResponseSchema = createResponseSchema(\n DaemonGitCommitResultSchema\n);\n\n// ============================================================\n// Create PR\n// ============================================================\n\nexport const DaemonCreatePRRequestParamsSchema = z.object({\n sessionId: z.string(),\n title: z.string(),\n body: z.string().optional(),\n baseBranch: z.string(),\n draft: z.boolean().optional(),\n linkedTicketIds: z.array(z.string()).optional(),\n linkedTicketUrls: z.array(z.string()).optional(),\n jiraIssueKeys: z.array(z.string()).optional(),\n linearIssueIds: z.array(z.string()).optional(),\n});\n\nexport const DaemonCreatePRResultSchema = z.object({\n number: z.number(),\n title: z.string(),\n url: z.string(),\n state: z.string(),\n draft: z.boolean(),\n});\n\nexport const DaemonCreatePRRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CREATE_PR),\n params: DaemonCreatePRRequestParamsSchema,\n});\n\nexport const DaemonCreatePRResponseSchema = createResponseSchema(\n DaemonCreatePRResultSchema\n);\n\n// ============================================================\n// Semantic Diff Cache\n// ============================================================\n\nexport const DaemonGetSemanticDiffCacheRequestParamsSchema = z.object({\n currentBranch: z.string(),\n baseBranch: z.string(),\n});\n\nexport const DaemonGetSemanticDiffCacheResultSchema = z.object({\n content: z.string().nullable(),\n commitHash: z.string().nullable(),\n truncated: z.boolean(),\n});\n\nexport const DaemonGetSemanticDiffCacheRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_SEMANTIC_DIFF_CACHE),\n params: DaemonGetSemanticDiffCacheRequestParamsSchema,\n });\n\nexport const DaemonGetSemanticDiffCacheResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetSemanticDiffCacheResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonSaveSemanticDiffCacheRequestParamsSchema = z.object({\n currentBranch: z.string(),\n baseBranch: z.string(),\n commitHash: z.string(),\n content: z.string(),\n truncated: z.boolean(),\n});\n\nexport const DaemonSaveSemanticDiffCacheResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonSaveSemanticDiffCacheRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SAVE_SEMANTIC_DIFF_CACHE),\n params: DaemonSaveSemanticDiffCacheRequestParamsSchema,\n });\n\nexport const DaemonSaveSemanticDiffCacheResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonSaveSemanticDiffCacheResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// ============================================================\n// Generate Semantic Diff (Agent Flow)\n// ============================================================\n\nexport const DaemonGenerateSemanticDiffRequestParamsSchema = z.object({\n sessionId: z.string(),\n diff: z.string(),\n baseBranch: z.string(),\n currentBranch: z.string(),\n commitHash: z.string().optional(),\n modelId: z.string().optional(),\n unstagedDiff: z.string().optional(),\n});\n\nexport const DaemonGenerateSemanticDiffResultSchema = z.object({\n content: z.string(),\n truncated: z.boolean(),\n sessionId: z.string(),\n});\n\nexport const DaemonGenerateSemanticDiffRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GENERATE_SEMANTIC_DIFF),\n params: DaemonGenerateSemanticDiffRequestParamsSchema,\n });\n\nexport const DaemonGenerateSemanticDiffResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGenerateSemanticDiffResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Get Proxy Token\n// ============================================================\n\nexport const DaemonGetProxyTokenResultSchema = z.object({\n token: z.string(),\n});\n\nexport const DaemonGetProxyTokenRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.GET_PROXY_TOKEN),\n }\n);\n\nexport const DaemonGetProxyTokenResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetProxyTokenResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Get Workspace File Content\n// ============================================================\n\nconst DaemonGetWorkspaceFileContentRequestParamsSchema = z.object({\n sessionId: z.string(),\n filePath: z.string(),\n});\n\nexport const DaemonGetWorkspaceFileContentResultSchema = z.object({\n content: z.string(),\n byteLength: z.number(),\n});\n\nexport const DaemonGetWorkspaceFileContentRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_WORKSPACE_FILE_CONTENT),\n params: DaemonGetWorkspaceFileContentRequestParamsSchema,\n });\n\nexport const DaemonGetWorkspaceFileContentResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetWorkspaceFileContentResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Rewind schemas\n\nconst DaemonGetRewindInfoRequestParamsSchema = z.object({\n sessionId: z.string(),\n messageId: z.string(),\n});\n\nconst DaemonRewindFileSnapshotSchema = z.object({\n filePath: z.string(),\n contentHash: z.string(),\n size: z.number(),\n});\n\nconst DaemonRewindFileCreationSchema = z.object({\n filePath: z.string(),\n});\n\nconst DaemonRewindEvictedFileSchema = z.object({\n filePath: z.string(),\n reason: z.string(),\n});\n\nexport const DaemonGetRewindInfoResultSchema = z.object({\n availableFiles: z.array(DaemonRewindFileSnapshotSchema),\n createdFiles: z.array(DaemonRewindFileCreationSchema),\n evictedFiles: z.array(DaemonRewindEvictedFileSchema),\n});\n\nexport const DaemonGetRewindInfoRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.GET_REWIND_INFO),\n params: DaemonGetRewindInfoRequestParamsSchema,\n }\n);\n\nexport const DaemonGetRewindInfoResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetRewindInfoResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nconst DaemonExecuteRewindRequestParamsSchema = z.object({\n sessionId: z.string(),\n messageId: z.string(),\n filesToRestore: z.array(DaemonRewindFileSnapshotSchema),\n filesToDelete: z.array(DaemonRewindFileCreationSchema),\n forkTitle: z.string(),\n});\n\nexport const DaemonExecuteRewindResultSchema = z.object({\n newSessionId: z.string(),\n restoredCount: z.number(),\n deletedCount: z.number(),\n failedRestoreCount: z.number(),\n failedDeleteCount: z.number(),\n});\n\nexport const DaemonExecuteRewindRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.EXECUTE_REWIND),\n params: DaemonExecuteRewindRequestParamsSchema,\n }\n);\n\nexport const DaemonExecuteRewindResponseSchema = createResponseSchema(\n DaemonExecuteRewindResultSchema\n);\n\n// ============================================================\n// Compact Session\n// ============================================================\n\nexport const DaemonCompactSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n customInstructions: z.string().optional(),\n});\n\nexport const DaemonCompactSessionResultSchema = z.object({\n newSessionId: z.string(),\n removedCount: z.number(),\n});\n\nexport const DaemonCompactSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.COMPACT_SESSION),\n params: DaemonCompactSessionRequestParamsSchema,\n });\n\nexport const DaemonCompactSessionResponseSchema = createResponseSchema(\n DaemonCompactSessionResultSchema\n);\n\n// Fork Session\n// ============================================================\n\nexport const DaemonForkSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n title: z.string().optional(),\n tags: z\n .array(\n z.object({ name: z.string(), metadata: z.record(z.string()).optional() })\n )\n .optional(),\n});\n\nexport const DaemonForkSessionResultSchema = z.object({\n newSessionId: z.string(),\n});\n\nexport const DaemonForkSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.FORK_SESSION),\n params: DaemonForkSessionRequestParamsSchema,\n});\n\nexport const DaemonForkSessionResponseSchema = createResponseSchema(\n DaemonForkSessionResultSchema\n);\n\n// Warmup Cache\n// ============================================================\n\nexport const DaemonWarmupCacheRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonWarmupCacheRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.WARMUP_CACHE),\n params: DaemonWarmupCacheRequestParamsSchema,\n});\n\nconst DaemonWarmupCacheResultSchema = z.object({});\n\nexport const DaemonWarmupCacheResponseSchema = createResponseSchema(\n DaemonWarmupCacheResultSchema\n);\n\n// ============================================================\n// Get Context Breakdown\n// ============================================================\n\n// The daemon RPC is a passthrough — reuse the droid SDK result shape directly.\nexport const DaemonGetContextBreakdownResultSchema =\n GetContextBreakdownResultSchema;\n\nconst DaemonGetContextBreakdownRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonGetContextBreakdownRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_CONTEXT_BREAKDOWN),\n params: DaemonGetContextBreakdownRequestParamsSchema,\n });\n\nexport const DaemonGetContextBreakdownResponseSchema = createResponseSchema(\n DaemonGetContextBreakdownResultSchema\n);\n\n// Union of all daemon request types (discriminated by method)\nexport const DaemonRequestSchema = z.discriminatedUnion('method', [\n DaemonInitializeSessionRequestSchema,\n DaemonLoadSessionRequestSchema,\n DaemonAddUserMessageRequestSchema,\n DaemonResolveQueuedUserMessageRequestSchema,\n DaemonInterruptSessionRequestSchema,\n DaemonCloseSessionRequestSchema,\n DaemonKillWorkerSessionRequestSchema,\n DaemonListOpenedSessionsRequestSchema,\n DaemonListAvailableSessionsRequestSchema,\n DaemonGetSessionMessagesRequestSchema,\n DaemonUpdateSessionSettingsRequestSchema,\n DaemonStartLoopRequestSchema,\n DaemonStopLoopRequestSchema,\n DaemonGetLoopStatusRequestSchema,\n DaemonRunLoopNowRequestSchema,\n DaemonGetDefaultSettingsRequestSchema,\n DaemonUpdateSessionDefaultsRequestSchema,\n DaemonValidateWorkingDirectoryRequestSchema,\n DaemonListFilesRequestSchema,\n DaemonSearchFilesRequestSchema,\n DaemonGetMcpConfigRequestSchema,\n DaemonUpdateMcpConfigRequestSchema,\n DaemonToggleMcpServerRequestSchema,\n DaemonAuthenticateMcpServerRequestSchema,\n DaemonCancelMcpAuthRequestSchema,\n DaemonClearMcpAuthRequestSchema,\n DaemonAddMcpServerRequestSchema,\n DaemonRemoveMcpServerRequestSchema,\n DaemonListMcpRegistryRequestSchema,\n DaemonListMcpToolsRequestSchema,\n DaemonListMcpServersRequestSchema,\n DaemonToggleMcpToolRequestSchema,\n DaemonSubmitMcpAuthCodeRequestSchema,\n DaemonSearchSessionsRequestSchema,\n DaemonArchiveSessionRequestSchema,\n DaemonUnarchiveSessionRequestSchema,\n DaemonRenameSessionRequestSchema,\n DaemonListSkillsRequestSchema,\n DaemonListAvailablePluginsRequestSchema,\n DaemonListInstalledPluginsRequestSchema,\n DaemonInstallPluginRequestSchema,\n DaemonUninstallPluginRequestSchema,\n DaemonUpdatePluginRequestSchema,\n DaemonListMarketplacesRequestSchema,\n DaemonAddMarketplaceRequestSchema,\n DaemonRemoveMarketplaceRequestSchema,\n DaemonUpdateMarketplaceRequestSchema,\n DaemonSubmitBugReportRequestSchema,\n DaemonListAutomationsRequestSchema,\n DaemonRunAutomationRequestSchema,\n DaemonPauseAutomationRequestSchema,\n DaemonResumeAutomationRequestSchema,\n DaemonGetAutomationHistoryRequestSchema,\n DaemonGetAutomationVisualRequestSchema,\n DaemonCreateAutomationRequestSchema,\n DaemonUpdateAutomationModelRequestSchema,\n DaemonUpdateAutomationPrivacyRequestSchema,\n DaemonRenameAutomationRequestSchema,\n DaemonDeleteAutomationRequestSchema,\n DaemonForkAutomationRequestSchema,\n DaemonGetGitDiffRequestSchema,\n DaemonGitPushRequestSchema,\n DaemonGitCommitRequestSchema,\n DaemonCreatePRRequestSchema,\n DaemonGetSemanticDiffCacheRequestSchema,\n DaemonSaveSemanticDiffCacheRequestSchema,\n DaemonGenerateSemanticDiffRequestSchema,\n DaemonGetProxyTokenRequestSchema,\n DaemonGetWorkspaceFileContentRequestSchema,\n DaemonTriggerUpdateRequestSchema,\n DaemonInstallSshKeyRequestSchema,\n DaemonGetRewindInfoRequestSchema,\n DaemonExecuteRewindRequestSchema,\n DaemonCompactSessionRequestSchema,\n DaemonForkSessionRequestSchema,\n DaemonWarmupCacheRequestSchema,\n DaemonGetContextBreakdownRequestSchema,\n]);\n\n// Daemon response schemas\nexport const DaemonInitializeSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonInitializeSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonLoadSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonLoadSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonAddUserMessageResponseSchema =\n createAckCompatibleResponseSchema(DaemonAddUserMessageResultSchema);\n\nexport const DaemonResolveQueuedUserMessageResponseSchema =\n createAckCompatibleResponseSchema(DaemonResolveQueuedUserMessageResultSchema);\n\nexport const DaemonInterruptSessionResponseSchema = createResponseSchema(\n DaemonInterruptSessionResultSchema\n);\n\nexport const DaemonCloseSessionResponseSchema = createResponseSchema(\n DaemonCloseSessionResultSchema\n);\n\nexport const DaemonListOpenedSessionsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonListOpenedSessionsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonListAvailableSessionsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonListAvailableSessionsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonGetSessionMessagesResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetSessionMessagesResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonUpdateSessionSettingsResponseSchema =\n createAckCompatibleResponseSchema(DaemonUpdateSessionSettingsResultSchema);\n\nexport const DaemonStartLoopResponseSchema = createAckCompatibleResponseSchema(\n DaemonStartLoopResultSchema\n);\n\nexport const DaemonStopLoopResponseSchema = createAckCompatibleResponseSchema(\n DaemonStopLoopResultSchema\n);\n\nexport const DaemonGetLoopStatusResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetLoopStatusResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonRunLoopNowResponseSchema = createAckCompatibleResponseSchema(\n DaemonRunLoopNowResultSchema\n);\n\nexport const DaemonValidateWorkingDirectoryResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonValidateWorkingDirectoryResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Session inactivity params - daemon-level lifecycle event\nexport const SessionInactivityNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.SESSION_INACTIVITY),\n message: z.string(),\n timestamp: z.number(),\n timeoutSeconds: z.number(),\n});\n\n// Session process exit params - daemon-level lifecycle event\nconst SessionProcessExitedNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.SESSION_PROCESS_EXITED),\n message: z.string(),\n timestamp: z.number(),\n});\n\nconst SessionClosedNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.SESSION_CLOSED),\n timestamp: z.number(),\n});\n\n// Session unsubscribed params - daemon-level notification when another client connects\nexport const SessionUnsubscribedNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.SESSION_UNSUBSCRIBED),\n message: z.string(),\n});\n\nexport const ChildSessionAvailableNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.CHILD_SESSION_AVAILABLE),\n childSessionId: z.string(),\n timestamp: z.number(),\n});\n\n// Daemon session notification schema - extends SDK schema with sessionId\nexport const DaemonSessionNotificationParamsSchema = z.object({\n sessionId: z.string(),\n notification: z.discriminatedUnion('type', [\n ...SessionNotificationSchemaList,\n SessionInactivityNotificationSchema,\n SessionProcessExitedNotificationSchema,\n SessionClosedNotificationSchema,\n SessionUnsubscribedNotificationSchema,\n ChildSessionAvailableNotificationSchema,\n TerminalDataNotificationSchema,\n TerminalExitNotificationSchema,\n ]),\n});\n\nexport const DaemonSessionNotificationSchema =\n JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DaemonDroidEvent.SESSION_NOTIFICATION),\n params: DaemonSessionNotificationParamsSchema,\n });\n\n// Permission request schema - daemon-level request for tool permissions\nexport const DaemonRequestPermissionSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidEvent.REQUEST_PERMISSION),\n params: DaemonRequestPermissionParamsSchema,\n});\n\n// AskUser request schema - daemon-level request for user questionnaire answers\nexport const DaemonAskUserSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidEvent.ASK_USER),\n params: DaemonAskUserParamsSchema,\n});\n","import type { z } from 'zod';\n\nimport { ConnectionError, SessionError } from './errors.js';\nimport {\n dispatchNotification,\n ProtocolEngine,\n type AskUserHandler,\n type NotificationCallback,\n type NotificationFilter,\n type NotificationListener,\n type PermissionHandler,\n} from './protocol.js';\nimport type {\n AddMcpServerRequestParams,\n AddMcpServerResult,\n AddUserMessageRequestParams,\n AddUserMessageResult,\n AuthenticateMcpServerRequestParams,\n AuthenticateMcpServerResult,\n CancelMcpAuthRequestParams,\n CancelMcpAuthResult,\n ClearMcpAuthRequestParams,\n ClearMcpAuthResult,\n CloseSessionRequestParams,\n CloseSessionResult,\n CompactSessionRequestParams,\n CompactSessionResult,\n GetContextStatsResult,\n ExecuteRewindRequestParams,\n ExecuteRewindResult,\n ForkSessionResult,\n RenameSessionRequestParams,\n RenameSessionResult,\n GetRewindInfoRequestParams,\n GetRewindInfoResult,\n InitializeSessionRequestParams,\n InitializeSessionResult,\n InterruptSessionResult,\n KillWorkerSessionRequestParams,\n KillWorkerSessionResult,\n ListMcpRegistryResult,\n ListMcpServersResult,\n ListMcpToolsResult,\n ListToolsRequestParams,\n ListToolsResult,\n ListSkillsResult,\n LoadSessionRequestParams,\n LoadSessionResult,\n RemoveMcpServerRequestParams,\n RemoveMcpServerResult,\n SubmitBugReportRequestParams,\n SubmitBugReportResult,\n SubmitMcpAuthCodeRequestParams,\n SubmitMcpAuthCodeResult,\n ToggleMcpServerRequestParams,\n ToggleMcpServerResult,\n ToggleMcpToolRequestParams,\n ToggleMcpToolResult,\n UpdateSessionSettingsRequestParams,\n UpdateSessionSettingsResult,\n} from './schemas/client.js';\nimport {\n AddMcpServerResultSchema,\n AddUserMessageResultSchema,\n AuthenticateMcpServerResultSchema,\n CancelMcpAuthResultSchema,\n ClearMcpAuthResultSchema,\n CloseSessionResultSchema,\n CompactSessionResultSchema,\n GetContextStatsResultSchema,\n ExecuteRewindResultSchema,\n ForkSessionResultSchema,\n RenameSessionResultSchema,\n GetRewindInfoResultSchema,\n InitializeSessionResultSchema,\n InterruptSessionResultSchema,\n KillWorkerSessionResultSchema,\n ListMcpRegistryResultSchema,\n ListMcpServersResultSchema,\n ListMcpToolsResultSchema,\n ListToolsResultSchema,\n ListSkillsResultSchema,\n LoadSessionResultSchema,\n RemoveMcpServerResultSchema,\n SubmitBugReportResultSchema,\n SubmitMcpAuthCodeResultSchema,\n ToggleMcpServerResultSchema,\n ToggleMcpToolResultSchema,\n UpdateSessionSettingsResultSchema,\n} from './schemas/client.js';\nimport {\n COMPACTION_TIMEOUT,\n MCP_AUTH_TIMEOUT,\n REWIND_TIMEOUT,\n SESSION_INIT_TIMEOUT,\n} from './schemas/constants.js';\nimport { DroidServerMethod, ToolConfirmationOutcome } from './schemas/enums.js';\nimport type {\n AskUserRequestParams,\n AskUserResult,\n RequestPermissionHandlerResult,\n RequestPermissionRequestParams,\n} from './schemas/server.js';\nimport type { DroidClientTransport } from './types.js';\n\nexport type ClientPermissionHandler = PermissionHandler;\n\nexport type ClientAskUserHandler = AskUserHandler;\n\nexport interface DroidClientOptions {\n /** A connected DroidClientTransport implementation. */\n transport: DroidClientTransport;\n\n /** Default request timeout in ms. Defaults to 30 000. */\n defaultTimeout?: number;\n}\n\nexport class DroidClient {\n private readonly _engine: ProtocolEngine;\n private _sessionId: string | null = null;\n private _closed = false;\n\n private readonly _notificationListeners: NotificationListener[] = [];\n\n /** Client-level permission handler. */\n private _permissionHandler: ClientPermissionHandler | null = null;\n\n /** Client-level ask-user handler. */\n private _askUserHandler: ClientAskUserHandler | null = null;\n\n constructor(options: DroidClientOptions) {\n this._engine = new ProtocolEngine({\n transport: options.transport,\n defaultTimeout: options.defaultTimeout,\n });\n\n this._engine.onNotification((notification) => {\n this._dispatchNotification(notification);\n });\n\n this._engine.setPermissionHandler((params) =>\n this._dispatchPermissionRequest(params)\n );\n this._engine.setAskUserHandler((params) =>\n this._dispatchAskUserRequest(params)\n );\n }\n\n private async _rpc<T extends z.ZodTypeAny>(\n method: string,\n params: Record<string, unknown>,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n const raw = await this._engine.sendRequest(method, params, timeout);\n return schema.parse(raw);\n }\n\n private async _sessionRpc<T extends z.ZodTypeAny>(\n method: string,\n params: Record<string, unknown>,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n this._ensureNotClosed();\n this._ensureSession();\n return this._rpc(method, params, schema, timeout);\n }\n\n private async _sessionRpcWithoutParams<T extends z.ZodTypeAny>(\n method: string,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n return this._sessionRpc(method, {}, schema, timeout);\n }\n\n get sessionId(): string | null {\n return this._sessionId;\n }\n\n get isConnected(): boolean {\n return !this._closed && this._engine.isHealthy;\n }\n\n async initializeSession(\n params: InitializeSessionRequestParams\n ): Promise<InitializeSessionResult> {\n this._ensureNotClosed();\n\n const result = await this._rpc(\n DroidServerMethod.INITIALIZE_SESSION,\n params,\n InitializeSessionResultSchema,\n SESSION_INIT_TIMEOUT\n );\n this._sessionId = result.sessionId;\n return result;\n }\n\n async loadSession(\n params: LoadSessionRequestParams\n ): Promise<LoadSessionResult> {\n this._ensureNotClosed();\n\n const result = await this._rpc(\n DroidServerMethod.LOAD_SESSION,\n params,\n LoadSessionResultSchema,\n SESSION_INIT_TIMEOUT\n );\n this._sessionId = params.sessionId;\n return result;\n }\n\n async addUserMessage(\n params: Pick<AddUserMessageRequestParams, 'text'> &\n Partial<\n Pick<\n AddUserMessageRequestParams,\n 'images' | 'files' | 'messageId' | 'outputFormat'\n >\n >\n ): Promise<AddUserMessageResult> {\n return this._sessionRpc(\n DroidServerMethod.ADD_USER_MESSAGE,\n params,\n AddUserMessageResultSchema\n );\n }\n\n async interruptSession(): Promise<InterruptSessionResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.INTERRUPT_SESSION,\n InterruptSessionResultSchema\n );\n }\n\n async closeSession(\n params: CloseSessionRequestParams = {}\n ): Promise<CloseSessionResult> {\n return this._sessionRpc(\n DroidServerMethod.CLOSE_SESSION,\n params,\n CloseSessionResultSchema\n );\n }\n\n async killWorkerSession(\n params: KillWorkerSessionRequestParams\n ): Promise<KillWorkerSessionResult> {\n return this._sessionRpc(\n DroidServerMethod.KILL_WORKER_SESSION,\n params,\n KillWorkerSessionResultSchema\n );\n }\n\n async updateSessionSettings(\n params: Partial<UpdateSessionSettingsRequestParams>\n ): Promise<UpdateSessionSettingsResult> {\n return this._sessionRpc(\n DroidServerMethod.UPDATE_SESSION_SETTINGS,\n params,\n UpdateSessionSettingsResultSchema\n );\n }\n\n async toggleMcpServer(\n params: ToggleMcpServerRequestParams\n ): Promise<ToggleMcpServerResult> {\n return this._sessionRpc(\n DroidServerMethod.TOGGLE_MCP_SERVER,\n params,\n ToggleMcpServerResultSchema\n );\n }\n\n async authenticateMcpServer(\n params: AuthenticateMcpServerRequestParams\n ): Promise<AuthenticateMcpServerResult> {\n return this._sessionRpc(\n DroidServerMethod.AUTHENTICATE_MCP_SERVER,\n params,\n AuthenticateMcpServerResultSchema,\n MCP_AUTH_TIMEOUT\n );\n }\n\n async cancelMcpAuth(\n params: CancelMcpAuthRequestParams\n ): Promise<CancelMcpAuthResult> {\n return this._sessionRpc(\n DroidServerMethod.CANCEL_MCP_AUTH,\n params,\n CancelMcpAuthResultSchema\n );\n }\n\n async clearMcpAuth(\n params: ClearMcpAuthRequestParams\n ): Promise<ClearMcpAuthResult> {\n return this._sessionRpc(\n DroidServerMethod.CLEAR_MCP_AUTH,\n params,\n ClearMcpAuthResultSchema\n );\n }\n\n async submitMcpAuthCode(\n params: SubmitMcpAuthCodeRequestParams\n ): Promise<SubmitMcpAuthCodeResult> {\n return this._sessionRpc(\n DroidServerMethod.SUBMIT_MCP_AUTH_CODE,\n params,\n SubmitMcpAuthCodeResultSchema\n );\n }\n\n async addMcpServer(\n params: AddMcpServerRequestParams\n ): Promise<AddMcpServerResult> {\n return this._sessionRpc(\n DroidServerMethod.ADD_MCP_SERVER,\n params,\n AddMcpServerResultSchema\n );\n }\n\n async removeMcpServer(\n params: RemoveMcpServerRequestParams\n ): Promise<RemoveMcpServerResult> {\n return this._sessionRpc(\n DroidServerMethod.REMOVE_MCP_SERVER,\n params,\n RemoveMcpServerResultSchema\n );\n }\n\n async listMcpRegistry(): Promise<ListMcpRegistryResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.LIST_MCP_REGISTRY,\n ListMcpRegistryResultSchema\n );\n }\n\n async listMcpTools(): Promise<ListMcpToolsResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.LIST_MCP_TOOLS,\n ListMcpToolsResultSchema\n );\n }\n\n async listTools(\n params: ListToolsRequestParams = {}\n ): Promise<ListToolsResult> {\n return this._sessionRpc(\n DroidServerMethod.LIST_TOOLS,\n params,\n ListToolsResultSchema\n );\n }\n\n async listMcpServers(): Promise<ListMcpServersResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.LIST_MCP_SERVERS,\n ListMcpServersResultSchema\n );\n }\n\n async toggleMcpTool(\n params: ToggleMcpToolRequestParams\n ): Promise<ToggleMcpToolResult> {\n return this._sessionRpc(\n DroidServerMethod.TOGGLE_MCP_TOOL,\n params,\n ToggleMcpToolResultSchema\n );\n }\n\n async listSkills(): Promise<ListSkillsResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.LIST_SKILLS,\n ListSkillsResultSchema\n );\n }\n\n async submitBugReport(\n params: SubmitBugReportRequestParams\n ): Promise<SubmitBugReportResult> {\n return this._sessionRpc(\n DroidServerMethod.SUBMIT_BUG_REPORT,\n params,\n SubmitBugReportResultSchema\n );\n }\n\n async getRewindInfo(\n params: GetRewindInfoRequestParams\n ): Promise<GetRewindInfoResult> {\n return this._sessionRpc(\n DroidServerMethod.GET_REWIND_INFO,\n params,\n GetRewindInfoResultSchema\n );\n }\n\n async executeRewind(\n params: ExecuteRewindRequestParams\n ): Promise<ExecuteRewindResult> {\n return this._sessionRpc(\n DroidServerMethod.EXECUTE_REWIND,\n params,\n ExecuteRewindResultSchema,\n REWIND_TIMEOUT\n );\n }\n\n async compactSession(\n params: CompactSessionRequestParams\n ): Promise<CompactSessionResult> {\n return this._sessionRpc(\n DroidServerMethod.COMPACT_SESSION,\n params,\n CompactSessionResultSchema,\n COMPACTION_TIMEOUT\n );\n }\n\n async forkSession(): Promise<ForkSessionResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.FORK_SESSION,\n ForkSessionResultSchema\n );\n }\n\n async getContextStats(): Promise<GetContextStatsResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.GET_CONTEXT_STATS,\n GetContextStatsResultSchema\n );\n }\n\n async renameSession(\n params: RenameSessionRequestParams\n ): Promise<RenameSessionResult> {\n return this._sessionRpc(\n DroidServerMethod.RENAME_SESSION,\n params,\n RenameSessionResultSchema\n );\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n const entry: NotificationListener = { callback, filter };\n this._notificationListeners.push(entry);\n\n let unsubscribed = false;\n return () => {\n if (!unsubscribed) {\n unsubscribed = true;\n const idx = this._notificationListeners.indexOf(entry);\n if (idx !== -1) {\n this._notificationListeners.splice(idx, 1);\n }\n }\n };\n }\n\n setPermissionHandler(handler: ClientPermissionHandler): void {\n this._permissionHandler = handler;\n }\n\n clearPermissionHandler(): void {\n this._permissionHandler = null;\n }\n\n setAskUserHandler(handler: ClientAskUserHandler): void {\n this._askUserHandler = handler;\n }\n\n clearAskUserHandler(): void {\n this._askUserHandler = null;\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n this._notificationListeners.length = 0;\n this._permissionHandler = null;\n this._askUserHandler = null;\n\n await this._engine.close();\n }\n\n private _dispatchNotification(notification: Record<string, unknown>): void {\n dispatchNotification(notification, [...this._notificationListeners]);\n }\n\n private _dispatchPermissionRequest(\n params: RequestPermissionRequestParams\n ): RequestPermissionHandlerResult | Promise<RequestPermissionHandlerResult> {\n const handler = this._permissionHandler;\n if (handler == null) {\n return ToolConfirmationOutcome.Cancel;\n }\n return handler(params);\n }\n\n private _dispatchAskUserRequest(\n params: AskUserRequestParams\n ): AskUserResult | Promise<AskUserResult> {\n const handler = this._askUserHandler;\n if (handler == null) {\n return { cancelled: true, answers: [] };\n }\n return handler(params);\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Client has been closed. Create a new DroidClient instance to reconnect.'\n );\n }\n }\n\n private _ensureSession(): void {\n if (this._sessionId == null) {\n throw new SessionError(\n 'No active session. Call initializeSession or loadSession first.'\n );\n }\n }\n}\n","import type { TokenUsage } from './schemas/client.js';\nimport {\n DroidWorkingState,\n McpAuthOutcome,\n MissionState,\n SessionNotificationType,\n ToolConfirmationOutcome,\n} from './schemas/enums.js';\nimport type { DroidHookEvent } from './schemas/hooks.js';\nimport type { McpServerStatusInfo, McpStatusSummary } from './schemas/mcp.js';\nimport {\n FactoryDroidMessageRole,\n type FactoryDroidMessage,\n type ToolUseBlock,\n} from './schemas/messages.js';\nimport type { MissionFeature, ProgressLogEntry } from './schemas/mission.js';\nimport {\n SessionNotificationPayloadSchema,\n type CreateMessageNotification,\n type ErrorNotification,\n type SessionNotificationPayload,\n type SettingsUpdatedPayload,\n type StructuredOutputError as ServerStructuredOutputError,\n type ToolProgressUpdate,\n} from './schemas/server.js';\nimport {\n JsonObjectSchema,\n type JsonObject,\n type JsonValue,\n} from './schemas/shared.js';\n\nexport const DroidMessageType = {\n Assistant: 'assistant',\n User: 'user',\n ToolCall: 'tool_call',\n AssistantTextDelta: 'assistant_text_delta',\n AssistantTextComplete: 'assistant_text_complete',\n ThinkingTextDelta: 'thinking_text_delta',\n ThinkingTextComplete: 'thinking_text_complete',\n ToolCallDelta: 'tool_call_delta',\n ToolResult: 'tool_result',\n ToolProgress: 'tool_progress',\n WorkingStateChanged: 'working_state_changed',\n TokenUsageUpdate: 'token_usage_update',\n PermissionResolved: 'permission_resolved',\n SettingsUpdated: 'settings_updated',\n SessionTitleUpdated: 'session_title_updated',\n McpStatusChanged: 'mcp_status_changed',\n MissionStateChanged: 'mission_state_changed',\n MissionFeaturesChanged: 'mission_features_changed',\n MissionProgressEntry: 'mission_progress_entry',\n MissionHeartbeat: 'mission_heartbeat',\n MissionWorkerStarted: 'mission_worker_started',\n MissionWorkerCompleted: 'mission_worker_completed',\n McpAuthRequired: 'mcp_auth_required',\n McpAuthCompleted: 'mcp_auth_completed',\n Hook: 'hook',\n Error: 'error',\n Result: 'result',\n} as const;\n\nexport interface AssistantTextDelta {\n readonly type: 'assistant_text_delta';\n readonly messageId: string;\n readonly blockIndex: number;\n readonly text: string;\n}\n\nexport interface AssistantTextComplete {\n readonly type: 'assistant_text_complete';\n readonly messageId: string;\n readonly blockIndex: number;\n}\n\nexport interface ThinkingTextDelta {\n readonly type: 'thinking_text_delta';\n readonly messageId: string;\n readonly blockIndex: number;\n readonly text: string;\n}\n\nexport interface ThinkingTextComplete {\n readonly type: 'thinking_text_complete';\n readonly messageId: string;\n readonly blockIndex: number;\n readonly durationMs?: number;\n}\n\nexport interface ToolCallDelta {\n readonly type: 'tool_call_delta';\n readonly toolUse: ToolUseBlock;\n}\n\nexport interface ToolUse {\n readonly type: 'tool_use';\n readonly toolName: string;\n readonly toolInput: JsonObject;\n readonly toolUseId: string;\n}\n\nexport interface DroidToolCallMessage {\n readonly type: 'tool_call';\n readonly toolUse: ToolUseBlock;\n}\n\nexport interface DroidAssistantMessage {\n readonly type: 'assistant';\n readonly message: FactoryDroidMessage;\n readonly text: string;\n}\n\nexport interface DroidUserMessage {\n readonly type: 'user';\n readonly message: FactoryDroidMessage;\n}\n\nexport interface ToolResult {\n readonly type: 'tool_result';\n readonly toolUseId: string;\n readonly toolName: string;\n readonly content: string | JsonValue[];\n readonly isError: boolean;\n}\n\nexport interface ToolProgress {\n readonly type: 'tool_progress';\n readonly toolUseId: string;\n readonly toolName: string;\n readonly content: string;\n readonly update: ToolProgressUpdate;\n}\n\nexport interface WorkingStateChanged {\n readonly type: 'working_state_changed';\n readonly state: DroidWorkingState;\n}\n\nexport type TokenUsageUpdate = Readonly<\n {\n type: 'token_usage_update';\n } & TokenUsage\n>;\n\nexport interface CreateMessage {\n readonly type: 'create_message';\n readonly messageId: CreateMessageNotification['message']['id'];\n readonly role: CreateMessageNotification['message']['role'];\n readonly content: CreateMessageNotification['message']['content'];\n readonly parentId?: CreateMessageNotification['parentId'];\n}\n\nexport interface PermissionResolved {\n readonly type: 'permission_resolved';\n readonly requestId: string;\n readonly toolUseIds: string[];\n readonly selectedOption: ToolConfirmationOutcome;\n}\n\nexport interface SettingsUpdated {\n readonly type: 'settings_updated';\n readonly settings: SettingsUpdatedPayload;\n}\n\nexport interface SessionTitleUpdated {\n readonly type: 'session_title_updated';\n readonly title: string;\n}\n\nexport interface McpStatusChanged {\n readonly type: 'mcp_status_changed';\n readonly servers: McpServerStatusInfo[];\n readonly summary: McpStatusSummary;\n}\n\nexport interface MissionStateChanged {\n readonly type: 'mission_state_changed';\n readonly state: MissionState;\n}\n\nexport interface MissionFeaturesChanged {\n readonly type: 'mission_features_changed';\n readonly features: MissionFeature[];\n}\n\nexport interface MissionProgressEntry {\n readonly type: 'mission_progress_entry';\n readonly progressLog: ProgressLogEntry[];\n}\n\nexport interface MissionHeartbeat {\n readonly type: 'mission_heartbeat';\n readonly timestamp: string;\n}\n\nexport interface MissionWorkerStarted {\n readonly type: 'mission_worker_started';\n readonly workerSessionId: string;\n}\n\nexport interface MissionWorkerCompleted {\n readonly type: 'mission_worker_completed';\n readonly workerSessionId: string;\n readonly exitCode: number;\n}\n\nexport interface McpAuthRequired {\n readonly type: 'mcp_auth_required';\n readonly serverName: string;\n readonly authUrl: string;\n readonly message: string;\n readonly state: string;\n}\n\nexport interface McpAuthCompleted {\n readonly type: 'mcp_auth_completed';\n readonly serverName: string;\n readonly outcome: McpAuthOutcome;\n readonly message: string;\n}\n\nexport interface HookExecution {\n readonly type: 'hook';\n readonly hookId: string;\n readonly eventName?: DroidHookEvent;\n readonly matcher?: string;\n readonly toolCallId?: string;\n readonly command?: string;\n readonly timeout?: number;\n readonly status: 'started' | 'completed' | 'error';\n readonly exitCode?: number;\n readonly stdout?: string;\n readonly stderr?: string;\n}\n\nexport interface StructuredOutputFields {\n readonly structuredOutput: JsonObject | null;\n readonly structuredOutputError: ServerStructuredOutputError | null;\n}\n\nexport interface StructuredOutput extends StructuredOutputFields {\n readonly type: 'structured_output';\n readonly messageId: string;\n}\n\nexport interface ErrorEvent {\n readonly type: 'error';\n readonly message: string;\n readonly errorType: ErrorNotification['errorType'];\n readonly timestamp: string;\n}\n\nexport type DroidErrorMessage = ErrorEvent;\n\nexport type DroidToolResultMessage = ToolResult;\n\nexport type DroidResultSubtype =\n | 'success'\n | 'error_during_execution'\n | 'error_structured_output';\n\ninterface DroidResultBase {\n readonly type: 'result';\n readonly sessionId: string;\n readonly durationMs: number;\n readonly numTurns: number;\n readonly result: string;\n readonly tokenUsage: TokenUsage | null;\n /** Stream messages emitted before this result. */\n readonly messages: DroidStreamEvent[];\n readonly text: string;\n readonly turnCount: number;\n readonly success: boolean;\n}\n\nexport interface DroidResultSuccessMessage extends DroidResultBase {\n readonly subtype: 'success';\n readonly isError: false;\n readonly structuredOutput?: unknown;\n readonly structuredOutputError?: null;\n readonly error: null;\n}\n\nexport interface DroidResultErrorMessage extends DroidResultBase {\n readonly subtype: 'error_during_execution' | 'error_structured_output';\n readonly isError: true;\n readonly errors: string[];\n readonly structuredOutput?: unknown;\n readonly structuredOutputError?: ServerStructuredOutputError | null;\n readonly error: ErrorEvent | null;\n}\n\nexport type DroidResultMessage =\n | DroidResultSuccessMessage\n | DroidResultErrorMessage;\n\nexport type DroidStreamMessage =\n | DroidAssistantMessage\n | DroidUserMessage\n | DroidToolCallMessage\n | ToolResult\n | HookExecution\n | ErrorEvent\n | DroidResultMessage;\n\nexport type DroidStreamEvent =\n | DroidStreamMessage\n | AssistantTextDelta\n | AssistantTextComplete\n | ThinkingTextDelta\n | ThinkingTextComplete\n | ToolCallDelta\n | ToolProgress\n | WorkingStateChanged\n | TokenUsageUpdate\n | PermissionResolved\n | SettingsUpdated\n | SessionTitleUpdated\n | McpStatusChanged\n | MissionStateChanged\n | MissionFeaturesChanged\n | MissionProgressEntry\n | MissionHeartbeat\n | MissionWorkerStarted\n | MissionWorkerCompleted\n | McpAuthRequired\n | McpAuthCompleted\n | HookExecution;\n\nexport type InternalDroidMessage =\n | DroidStreamEvent\n | ToolUse\n | CreateMessage\n | StructuredOutput;\n\nexport type DroidMessage = DroidStreamEvent;\n\nexport type DroidMessageType =\n (typeof DroidMessageType)[keyof typeof DroidMessageType];\n\nexport function convertNotificationToStreamMessage(\n raw: unknown\n): InternalDroidMessage | InternalDroidMessage[] | null {\n const parsed = SessionNotificationPayloadSchema.safeParse(raw);\n if (!parsed.success) {\n return null;\n }\n\n const notification: SessionNotificationPayload = parsed.data;\n\n switch (notification.type) {\n case SessionNotificationType.ASSISTANT_TEXT_DELTA:\n return {\n type: DroidMessageType.AssistantTextDelta,\n messageId: notification.messageId,\n blockIndex: notification.blockIndex,\n text: notification.textDelta,\n };\n\n case SessionNotificationType.ASSISTANT_TEXT_COMPLETE:\n return {\n type: DroidMessageType.AssistantTextComplete,\n messageId: notification.messageId,\n blockIndex: notification.blockIndex,\n };\n\n case SessionNotificationType.THINKING_TEXT_DELTA:\n return {\n type: DroidMessageType.ThinkingTextDelta,\n messageId: notification.messageId,\n blockIndex: notification.blockIndex,\n text: notification.textDelta,\n };\n\n case SessionNotificationType.THINKING_TEXT_COMPLETE:\n return {\n type: DroidMessageType.ThinkingTextComplete,\n messageId: notification.messageId,\n blockIndex: notification.blockIndex,\n durationMs: notification.durationMs,\n };\n\n case SessionNotificationType.TOOL_CALL:\n return {\n type: DroidMessageType.ToolCallDelta,\n toolUse: notification.toolUse,\n };\n\n case SessionNotificationType.TOOL_RESULT:\n return {\n type: DroidMessageType.ToolResult,\n toolUseId: notification.toolUseId,\n toolName: '',\n content: normalizeToolResultContent(notification.content),\n isError: Boolean(notification.isError),\n };\n\n case SessionNotificationType.TOOL_PROGRESS_UPDATE: {\n const update: ToolProgressUpdate = notification.update;\n const text = update?.text ?? update?.status ?? update?.details ?? '';\n return {\n type: DroidMessageType.ToolProgress,\n toolUseId: notification.toolUseId,\n toolName: notification.toolName,\n content: text,\n update,\n };\n }\n\n case SessionNotificationType.DROID_WORKING_STATE_CHANGED:\n return {\n type: DroidMessageType.WorkingStateChanged,\n state: notification.newState,\n };\n\n case SessionNotificationType.SESSION_TOKEN_USAGE_CHANGED: {\n const tu: TokenUsage = notification.tokenUsage;\n return {\n type: DroidMessageType.TokenUsageUpdate,\n inputTokens: tu.inputTokens,\n outputTokens: tu.outputTokens,\n cacheReadTokens: tu.cacheReadTokens,\n cacheCreationTokens: tu.cacheCreationTokens,\n thinkingTokens: tu.thinkingTokens,\n };\n }\n\n case SessionNotificationType.CREATE_MESSAGE: {\n const msg = notification.message;\n const messages: InternalDroidMessage[] = [];\n\n for (const block of msg.content) {\n if (block.type === 'tool_use') {\n messages.push({\n type: DroidMessageType.ToolCall,\n toolUse: block,\n });\n }\n }\n\n if (msg.role === FactoryDroidMessageRole.Assistant) {\n messages.push({\n type: DroidMessageType.Assistant,\n message: msg,\n text: extractTextFromMessage(msg),\n });\n } else if (msg.role === FactoryDroidMessageRole.User) {\n messages.push({\n type: DroidMessageType.User,\n message: msg,\n });\n } else {\n messages.push({\n type: 'create_message',\n messageId: msg.id,\n role: msg.role,\n content: msg.content,\n parentId: notification.parentId,\n });\n }\n\n return messages;\n }\n\n case SessionNotificationType.ERROR:\n return {\n type: DroidMessageType.Error,\n message: notification.message,\n errorType: notification.errorType,\n timestamp: notification.timestamp,\n };\n\n case SessionNotificationType.PERMISSION_RESOLVED:\n return {\n type: DroidMessageType.PermissionResolved,\n requestId: notification.requestId,\n toolUseIds: notification.toolUseIds,\n selectedOption: notification.selectedOption,\n };\n\n case SessionNotificationType.SETTINGS_UPDATED:\n return {\n type: DroidMessageType.SettingsUpdated,\n settings: notification.settings,\n };\n\n case SessionNotificationType.SESSION_TITLE_UPDATED:\n return {\n type: DroidMessageType.SessionTitleUpdated,\n title: notification.title,\n };\n\n case SessionNotificationType.MCP_STATUS_CHANGED:\n return {\n type: DroidMessageType.McpStatusChanged,\n servers: notification.servers,\n summary: notification.summary,\n };\n\n case SessionNotificationType.MISSION_STATE_CHANGED:\n return {\n type: DroidMessageType.MissionStateChanged,\n state: notification.state,\n };\n\n case SessionNotificationType.MISSION_FEATURES_CHANGED:\n return {\n type: DroidMessageType.MissionFeaturesChanged,\n features: notification.features,\n };\n\n case SessionNotificationType.MISSION_PROGRESS_ENTRY:\n return {\n type: DroidMessageType.MissionProgressEntry,\n progressLog: notification.progressLog,\n };\n\n case SessionNotificationType.MISSION_HEARTBEAT:\n return {\n type: DroidMessageType.MissionHeartbeat,\n timestamp: notification.timestamp,\n };\n\n case SessionNotificationType.MISSION_WORKER_STARTED:\n return {\n type: DroidMessageType.MissionWorkerStarted,\n workerSessionId: notification.workerSessionId,\n };\n\n case SessionNotificationType.MISSION_WORKER_COMPLETED:\n return {\n type: DroidMessageType.MissionWorkerCompleted,\n workerSessionId: notification.workerSessionId,\n exitCode: notification.exitCode,\n };\n\n case SessionNotificationType.MCP_AUTH_REQUIRED:\n return {\n type: DroidMessageType.McpAuthRequired,\n serverName: notification.serverName,\n authUrl: notification.authUrl,\n message: notification.message,\n state: notification.state,\n };\n\n case SessionNotificationType.MCP_AUTH_COMPLETED:\n return {\n type: DroidMessageType.McpAuthCompleted,\n serverName: notification.serverName,\n outcome: notification.outcome,\n message: notification.message,\n };\n\n case SessionNotificationType.HOOK_EXECUTION_STARTED:\n return notification.hookCommands.map((hookCommand) => ({\n type: DroidMessageType.Hook,\n hookId: notification.hookId,\n eventName: notification.hookEventName,\n matcher: notification.hookMatcher,\n toolCallId: notification.hookToolCallId,\n command: hookCommand.command,\n timeout: hookCommand.timeout,\n status: 'started',\n }));\n\n case SessionNotificationType.HOOK_EXECUTION_COMPLETED:\n return (notification.hookResults ?? []).map((hookResult) => ({\n type: DroidMessageType.Hook,\n hookId: notification.hookId,\n eventName: notification.hookEventName,\n matcher: notification.hookMatcher,\n toolCallId: notification.hookToolCallId,\n command: hookResult.command,\n timeout: hookResult.timeout,\n status: notification.hookStatus,\n exitCode: hookResult.exitCode,\n stdout: hookResult.stdout,\n stderr: hookResult.stderr,\n }));\n\n case SessionNotificationType.STRUCTURED_OUTPUT:\n return {\n type: 'structured_output',\n messageId: notification.messageId,\n structuredOutput: notification.structuredOutput,\n structuredOutputError: notification.structuredOutputError,\n };\n\n default:\n return null;\n }\n}\n\n/**\n * Tracks working state to detect turn completion (non-idle → idle transition).\n * Create a fresh instance per `stream()` call.\n */\nexport class StreamStateTracker {\n private hasBeenNonIdle = false;\n\n private lastTokenUsage: TokenUsageUpdate | null = null;\n\n private fullText = '';\n\n private finalAssistantText = '';\n\n private structuredOutput: JsonObject | null = null;\n\n private structuredOutputError: ServerStructuredOutputError | null = null;\n\n private errors: ErrorEvent[] = [];\n\n private numTurns = 0;\n\n private emittedMessages: DroidStreamEvent[] = [];\n\n private toolNameMap = new Map<string, string>();\n\n constructor(\n private readonly options: {\n sessionId?: string;\n startedAt?: number;\n hasOutputFormat?: boolean;\n } = {}\n ) {}\n\n private getToolName(toolUseId: string): string {\n return this.toolNameMap.get(toolUseId) ?? '';\n }\n\n processMessage(message: InternalDroidMessage): {\n message: InternalDroidMessage | null;\n additional: InternalDroidMessage[];\n } {\n const additional: InternalDroidMessage[] = [];\n\n if (message.type === 'tool_use') {\n this.toolNameMap.set(message.toolUseId, message.toolName);\n }\n\n if (message.type === DroidMessageType.ToolCall) {\n this.toolNameMap.set(message.toolUse.id, message.toolUse.name);\n }\n\n if (message.type === DroidMessageType.ToolCallDelta) {\n this.toolNameMap.set(message.toolUse.id, message.toolUse.name);\n }\n\n // Enrich tool_result with toolName from prior tool_use\n if (message.type === DroidMessageType.ToolResult) {\n message = { ...message, toolName: this.getToolName(message.toolUseId) };\n }\n\n if (message.type === DroidMessageType.AssistantTextDelta) {\n this.fullText += message.text;\n }\n\n if (message.type === DroidMessageType.Assistant) {\n this.finalAssistantText = message.text;\n if (this.fullText.length === 0) {\n this.fullText = message.text;\n }\n }\n\n if (message.type === DroidMessageType.TokenUsageUpdate) {\n this.lastTokenUsage = message;\n }\n\n if (message.type === DroidMessageType.Error) {\n this.errors.push(message);\n }\n\n if (message.type === 'structured_output') {\n this.structuredOutput = message.structuredOutput;\n this.structuredOutputError = message.structuredOutputError;\n return { message: null, additional };\n }\n\n if (message.type === DroidMessageType.WorkingStateChanged) {\n if (message.state !== DroidWorkingState.Idle) {\n this.hasBeenNonIdle = true;\n } else if (this.hasBeenNonIdle) {\n this.numTurns++;\n additional.push(this.createResultMessage());\n this.hasBeenNonIdle = false;\n this.resetTurnState();\n }\n }\n\n if (message.type !== DroidMessageType.WorkingStateChanged) {\n this.trackEmittedMessage(message);\n }\n\n return { message, additional };\n }\n\n private createResultMessage(): DroidResultMessage {\n if (\n this.options.hasOutputFormat &&\n this.structuredOutput === null &&\n this.structuredOutputError === null\n ) {\n this.structuredOutput =\n parseJsonObject(this.finalAssistantText || this.fullText) ?? null;\n }\n\n const tokenUsage = this.lastTokenUsage\n ? stripTokenUsageType(this.lastTokenUsage)\n : null;\n const result = this.finalAssistantText || this.fullText;\n const base = {\n type: DroidMessageType.Result,\n sessionId: this.options.sessionId ?? '',\n durationMs: Date.now() - (this.options.startedAt ?? Date.now()),\n numTurns: this.numTurns,\n result,\n tokenUsage,\n messages: [...this.emittedMessages],\n text: result,\n turnCount: this.numTurns,\n };\n\n if (this.structuredOutputError) {\n return {\n ...base,\n subtype: 'error_structured_output',\n isError: true,\n success: false,\n errors: [this.structuredOutputError.message],\n structuredOutput: this.structuredOutput,\n structuredOutputError: this.structuredOutputError,\n error: null,\n };\n }\n\n if (this.errors.length > 0) {\n return {\n ...base,\n subtype: 'error_during_execution',\n isError: true,\n success: false,\n errors: this.errors.map((error) => error.message),\n structuredOutput: this.structuredOutput,\n structuredOutputError: null,\n error: this.errors[0] ?? null,\n };\n }\n\n return {\n ...base,\n subtype: 'success',\n isError: false,\n success: true,\n structuredOutput: this.structuredOutput,\n structuredOutputError: null,\n error: null,\n };\n }\n\n private trackEmittedMessage(message: InternalDroidMessage): void {\n if (isDefaultStreamMessage(message)) {\n this.emittedMessages.push(message);\n }\n }\n\n private resetTurnState(): void {\n this.lastTokenUsage = null;\n this.fullText = '';\n this.finalAssistantText = '';\n this.structuredOutput = null;\n this.structuredOutputError = null;\n this.errors = [];\n this.emittedMessages = [];\n }\n}\n\nexport function isInternalMessage(message: InternalDroidMessage): boolean {\n return (\n message.type === 'structured_output' ||\n message.type === 'tool_use' ||\n message.type === 'create_message'\n );\n}\n\nexport function isDefaultStreamMessage(\n message: InternalDroidMessage\n): message is DroidStreamMessage {\n return (\n message.type === DroidMessageType.Assistant ||\n message.type === DroidMessageType.User ||\n message.type === DroidMessageType.ToolCall ||\n message.type === DroidMessageType.ToolResult ||\n message.type === DroidMessageType.Hook ||\n message.type === DroidMessageType.Error ||\n message.type === DroidMessageType.Result\n );\n}\n\nfunction stripTokenUsageType(message: TokenUsageUpdate): TokenUsage {\n const {\n inputTokens,\n outputTokens,\n cacheCreationTokens,\n cacheReadTokens,\n thinkingTokens,\n } = message;\n return {\n inputTokens,\n outputTokens,\n cacheCreationTokens,\n cacheReadTokens,\n thinkingTokens,\n };\n}\n\nfunction parseJsonObject(text: string): JsonObject | null {\n try {\n const parsed: unknown = JSON.parse(text);\n const result = JsonObjectSchema.safeParse(parsed);\n return result.success ? result.data : null;\n } catch {\n return null;\n }\n}\n\nfunction normalizeToolResultContent(\n content: JsonValue | undefined\n): string | JsonValue[] {\n if (content == null) {\n return '';\n }\n if (typeof content === 'string') {\n return content;\n }\n if (Array.isArray(content)) {\n return content;\n }\n return String(content);\n}\n\nfunction extractTextFromMessage(message: FactoryDroidMessage): string {\n return message.content\n .filter((block) => block.type === 'text')\n .map((block) => block.text)\n .join('');\n}\n","import { DroidClient } from './client.js';\nimport type {\n ClientAskUserHandler,\n ClientPermissionHandler,\n} from './client.js';\nimport { SDK_TAG } from './constants.js';\nimport type { DroidMcpServerConfig } from './mcp.js';\nimport type {\n InitializeSessionRequestParams,\n McpServerConfig,\n OutputFormat,\n SessionSource,\n SessionTag,\n} from './schemas/client.js';\nimport type {\n AutonomyLevel,\n DroidInteractionMode,\n ReasoningEffort,\n} from './schemas/enums.js';\nimport type { Base64ImageSource, DocumentSource } from './schemas/messages.js';\nimport {\n SessionNotificationSchema,\n type SessionNotificationPayload,\n} from './schemas/server.js';\nimport type { ToolSelectionOverrides } from './schemas/shared.js';\nimport {\n convertNotificationToStreamMessage,\n DroidMessageType,\n isDefaultStreamMessage,\n isInternalMessage,\n StreamStateTracker,\n} from './stream.js';\nimport type { DroidStreamEvent, InternalDroidMessage } from './stream.js';\nimport { ProcessTransport } from './transport.js';\nimport type { DroidClientTransport, ProcessTransportOptions } from './types.js';\n\nexport function wireAbortSignal(\n signal: AbortSignal | undefined,\n onAbort: () => void\n): () => void {\n if (!signal) return () => {};\n if (signal.aborted) {\n onAbort();\n return () => {};\n } else {\n const listener = () => onAbort();\n signal.addEventListener('abort', listener, { once: true });\n return () => signal.removeEventListener('abort', listener);\n }\n}\n\nfunction getAbortError(signal: AbortSignal): Error {\n if (signal.reason instanceof Error) {\n return signal.reason;\n }\n\n return new Error(\n typeof signal.reason === 'string' ? signal.reason : 'Operation aborted'\n );\n}\n\nexport function throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted) {\n throw getAbortError(signal);\n }\n}\n\nexport interface MessageOptions {\n images?: Base64ImageSource[];\n files?: DocumentSource[];\n outputFormat?: OutputFormat;\n includePartialMessages?: boolean;\n abortSignal?: AbortSignal;\n}\n\ninterface StreamableClient {\n onNotification(handler: (n: Record<string, unknown>) => void): () => void;\n addUserMessage(params: {\n text: string;\n images?: Base64ImageSource[];\n files?: DocumentSource[];\n outputFormat?: OutputFormat;\n }): Promise<unknown>;\n interruptSession(): Promise<unknown>;\n}\n\nexport async function* streamFromClient(\n client: StreamableClient,\n sessionId: string,\n activeBridges: Set<MessageBridge>,\n prompt: string,\n options?: MessageOptions\n): AsyncGenerator<DroidStreamEvent, void, undefined> {\n throwIfAborted(options?.abortSignal);\n\n const startedAt = Date.now();\n let resolveDone: () => void = () => {};\n const donePromise = new Promise<void>((resolve) => {\n resolveDone = resolve;\n });\n const bridge = new MessageBridge(resolveDone, {\n includePartialMessages: options?.includePartialMessages,\n sessionId,\n startedAt,\n outputFormat: options?.outputFormat,\n });\n activeBridges.add(bridge);\n const unsubscribe = client.onNotification(bridge.notificationHandler);\n let resolveAbort: () => void = () => {};\n const abortPromise = new Promise<void>((resolve) => {\n resolveAbort = resolve;\n });\n const cleanupAbortSignal = wireAbortSignal(options?.abortSignal, () => {\n bridge.signalDone();\n resolveAbort();\n void client.interruptSession().catch(() => {});\n });\n\n try {\n await Promise.race([\n client.addUserMessage({\n text: prompt,\n images: options?.images,\n files: options?.files,\n outputFormat: options?.outputFormat,\n }),\n donePromise,\n abortPromise,\n ]);\n throwIfAborted(options?.abortSignal);\n\n for await (const msg of bridge.messages()) {\n throwIfAborted(options?.abortSignal);\n yield msg;\n }\n throwIfAborted(options?.abortSignal);\n } finally {\n cleanupAbortSignal();\n unsubscribe();\n activeBridges.delete(bridge);\n }\n}\n\nexport function extractInnerNotification(\n notification: unknown\n): SessionNotificationPayload | null {\n const parsed = SessionNotificationSchema.safeParse(notification);\n return parsed.success ? parsed.data.params.notification : null;\n}\n\nexport class MessageBridge {\n private readonly _queue: DroidStreamEvent[] = [];\n private readonly _onDone: (() => void) | undefined;\n private _resolveWaiting: (() => void) | null = null;\n private _done = false;\n private readonly _stateTracker: StreamStateTracker;\n\n constructor(\n onDone?: () => void,\n private readonly _options: {\n includePartialMessages?: boolean;\n sessionId?: string;\n startedAt?: number;\n outputFormat?: OutputFormat;\n } = {}\n ) {\n this._onDone = onDone;\n this._stateTracker = new StreamStateTracker({\n sessionId: _options.sessionId,\n startedAt: _options.startedAt,\n hasOutputFormat: _options.outputFormat !== undefined,\n });\n }\n\n readonly notificationHandler = (\n notification: Record<string, unknown>\n ): void => {\n const inner = extractInnerNotification(notification);\n if (!inner) return;\n\n const converted = convertNotificationToStreamMessage(inner);\n if (converted === null) return;\n\n const messages = Array.isArray(converted) ? converted : [converted];\n\n for (const msg of messages) {\n const { message, additional } = this._stateTracker.processMessage(msg);\n if (message && this._shouldYield(message)) {\n this._enqueue(message);\n }\n\n for (const extra of additional) {\n if (this._shouldYield(extra)) {\n this._enqueue(extra);\n }\n if (extra.type === DroidMessageType.Result) {\n this._signalDone();\n }\n }\n }\n };\n\n signalDone(): void {\n this._signalDone();\n }\n\n async *messages(): AsyncGenerator<DroidStreamEvent, void, undefined> {\n while (true) {\n while (this._queue.length > 0) {\n const msg = this._queue.shift()!;\n yield msg;\n\n if (msg.type === DroidMessageType.Result) {\n return;\n }\n }\n\n if (this._done && this._queue.length === 0) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n this._resolveWaiting = resolve;\n });\n }\n }\n\n private _shouldYield(\n message: InternalDroidMessage\n ): message is DroidStreamEvent {\n if (isInternalMessage(message)) {\n return false;\n }\n return this._options.includePartialMessages\n ? true\n : isDefaultStreamMessage(message);\n }\n\n private _enqueue(msg: DroidStreamEvent): void {\n this._queue.push(msg);\n if (this._resolveWaiting) {\n const resolve = this._resolveWaiting;\n this._resolveWaiting = null;\n resolve();\n }\n }\n\n private _signalDone(): void {\n const wasDone = this._done;\n this._done = true;\n if (!wasDone) {\n this._onDone?.();\n }\n if (this._resolveWaiting) {\n const resolve = this._resolveWaiting;\n this._resolveWaiting = null;\n resolve();\n }\n }\n}\n\nexport interface TransportCreationOptions extends Pick<\n ProcessTransportOptions,\n 'execPath' | 'execArgs' | 'cwd' | 'env'\n> {\n apiKey: string;\n transport?: DroidClientTransport;\n}\n\nexport async function createTransport(\n options: TransportCreationOptions\n): Promise<DroidClientTransport> {\n if (options.transport) {\n return options.transport;\n }\n\n const transportOptions: ProcessTransportOptions = {\n execPath: options.execPath,\n execArgs: options.execArgs,\n cwd: options.cwd,\n env: { ...options.env, FACTORY_API_KEY: options.apiKey },\n };\n const processTransport = new ProcessTransport(transportOptions);\n await processTransport.connect();\n return processTransport;\n}\n\nexport interface HandlerOptions {\n permissionHandler?: ClientPermissionHandler;\n askUserHandler?: ClientAskUserHandler;\n}\n\nexport function setupClientHandlers(\n client: DroidClient,\n options: HandlerOptions\n): void {\n if (options.permissionHandler) {\n client.setPermissionHandler(options.permissionHandler);\n }\n if (options.askUserHandler) {\n client.setAskUserHandler(options.askUserHandler);\n }\n}\n\ninterface ClientCreationOptions\n extends TransportCreationOptions, HandlerOptions {}\n\nexport async function createConfiguredClient(\n options: ClientCreationOptions\n): Promise<{\n transport: DroidClientTransport;\n client: DroidClient;\n}> {\n const transport = await createTransport(options);\n const client = new DroidClient({ transport });\n setupClientHandlers(client, options);\n return { transport, client };\n}\n\ntype Closable = {\n close(): Promise<void>;\n};\n\nexport async function closeQuietly(\n resource: Closable | null | undefined\n): Promise<void> {\n if (!resource) {\n return;\n }\n\n try {\n await resource.close();\n } catch {\n // Best-effort cleanup\n }\n}\n\nexport interface SessionInitOptions extends ToolSelectionOverrides {\n apiKey: string;\n cwd?: string;\n machineId?: string;\n modelId?: string;\n autonomyLevel?: AutonomyLevel;\n interactionMode?: DroidInteractionMode;\n reasoningEffort?: ReasoningEffort;\n specModeModelId?: string;\n specModeReasoningEffort?: ReasoningEffort;\n mcpServers?: DroidMcpServerConfig[];\n sessionSource?: SessionSource;\n tags?: SessionTag[];\n}\n\ntype ResolvedSessionInitOptions = Omit<\n SessionInitOptions,\n 'apiKey' | 'mcpServers'\n> & {\n mcpServers?: McpServerConfig[];\n};\n\nexport function buildInitParams(\n options: ResolvedSessionInitOptions\n): InitializeSessionRequestParams {\n return {\n machineId: options.machineId ?? 'default',\n cwd: options.cwd ?? '.',\n ...(options.modelId !== undefined && { modelId: options.modelId }),\n ...(options.autonomyLevel !== undefined && {\n autonomyLevel: options.autonomyLevel,\n }),\n ...(options.interactionMode !== undefined && {\n interactionMode: options.interactionMode,\n }),\n ...(options.reasoningEffort !== undefined && {\n reasoningEffort: options.reasoningEffort,\n }),\n ...(options.specModeModelId !== undefined && {\n specModeModelId: options.specModeModelId,\n }),\n ...(options.specModeReasoningEffort !== undefined && {\n specModeReasoningEffort: options.specModeReasoningEffort,\n }),\n ...(options.mcpServers !== undefined && {\n mcpServers: options.mcpServers,\n }),\n ...(options.enabledToolIds !== undefined && {\n enabledToolIds: options.enabledToolIds,\n }),\n ...(options.disabledToolIds !== undefined && {\n disabledToolIds: options.disabledToolIds,\n }),\n ...(options.sessionSource !== undefined && {\n sessionSource: options.sessionSource,\n }),\n tags: [...(options.tags ?? []), SDK_TAG],\n };\n}\n","import { once } from 'node:events';\nimport http, { type IncomingMessage, type ServerResponse } from 'node:http';\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\n\nimport type { McpServerConfig } from './schemas/client.js';\nimport { JSONRPC_VERSION } from './schemas/constants.js';\nimport { JsonRpcErrorCode, McpServerType } from './schemas/enums.js';\n\ntype ToolInputShape = Record<string, z.ZodTypeAny>;\n\nexport type DroidToolResult = string | CallToolResult;\n\nexport interface DroidTool {\n name: string;\n description?: string;\n inputSchema?: ToolInputShape;\n handler: (\n input: Record<string, unknown>\n ) => DroidToolResult | Promise<DroidToolResult>;\n}\n\nexport interface SdkMcpServerOptions {\n name: string;\n version?: string;\n tools: DroidTool[];\n}\n\nexport type DroidMcpServerConfig = McpServerConfig | SdkMcpServer;\n\nexport function tool<InputShape extends ToolInputShape>(\n name: string,\n description: string,\n inputSchema: InputShape,\n handler: (\n input: z.infer<z.ZodObject<InputShape>>\n ) => DroidToolResult | Promise<DroidToolResult>\n): DroidTool;\nexport function tool(\n name: string,\n description: string,\n handler: DroidTool['handler']\n): DroidTool;\nexport function tool<InputShape extends ToolInputShape>(\n name: string,\n description: string,\n inputSchemaOrHandler:\n | InputShape\n | ((\n input: Record<string, unknown>\n ) => DroidToolResult | Promise<DroidToolResult>),\n handler?: (\n input: z.infer<z.ZodObject<InputShape>>\n ) => DroidToolResult | Promise<DroidToolResult>\n): DroidTool {\n if (typeof inputSchemaOrHandler === 'function') {\n const actualHandler = inputSchemaOrHandler;\n return {\n name,\n description,\n handler: (input) => actualHandler(input),\n };\n }\n\n if (!handler) {\n throw new Error(`Missing handler for SDK MCP tool \"${name}\"`);\n }\n\n const inputObjectSchema = z.object(inputSchemaOrHandler);\n\n return {\n name,\n description,\n inputSchema: inputSchemaOrHandler,\n handler: (input) => handler(inputObjectSchema.parse(input)),\n };\n}\n\nfunction isSdkMcpServer(server: DroidMcpServerConfig): server is SdkMcpServer {\n return server instanceof SdkMcpServer;\n}\n\nfunction toCallToolResult(result: DroidToolResult): CallToolResult {\n if (typeof result === 'string') {\n return {\n content: [{ type: 'text', text: result }],\n };\n }\n\n return result;\n}\n\nasync function readJsonBody(req: IncomingMessage): Promise<unknown> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n\n if (chunks.length === 0) {\n return undefined;\n }\n\n return JSON.parse(Buffer.concat(chunks).toString('utf8'));\n}\n\nfunction writeJsonError(\n res: ServerResponse,\n statusCode: number,\n message: string\n): void {\n if (res.headersSent) {\n return;\n }\n\n res.writeHead(statusCode, { 'content-type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: JSONRPC_VERSION,\n error: { code: JsonRpcErrorCode.INTERNAL_ERROR, message },\n id: null,\n })\n );\n}\n\nexport class SdkMcpServer {\n readonly name: string;\n readonly version: string;\n readonly tools: DroidTool[];\n\n private _httpServer: http.Server | null = null;\n private _url: string | null = null;\n\n constructor(options: SdkMcpServerOptions) {\n this.name = options.name;\n this.version = options.version ?? '1.0.0';\n this.tools = options.tools;\n }\n\n get config(): McpServerConfig | null {\n if (!this._url) {\n return null;\n }\n\n return {\n type: McpServerType.Http,\n name: this.name,\n url: this._url,\n headers: [],\n };\n }\n\n async start(): Promise<McpServerConfig> {\n if (this.config) {\n return this.config;\n }\n\n this._httpServer = http.createServer((req, res) => {\n void this.handleRequest(req, res);\n });\n this._httpServer.listen(0, '127.0.0.1');\n await once(this._httpServer, 'listening');\n\n const address = this._httpServer.address();\n if (!address || typeof address === 'string') {\n throw new Error('Unable to determine SDK MCP server address');\n }\n\n this._url = `http://127.0.0.1:${address.port}/mcp`;\n const config = this.config;\n if (!config) {\n throw new Error('Unable to start SDK MCP server');\n }\n return config;\n }\n\n async close(): Promise<void> {\n const server = this._httpServer;\n this._httpServer = null;\n this._url = null;\n\n if (!server) {\n return;\n }\n\n server.closeAllConnections?.();\n server.close();\n await once(server, 'close');\n }\n\n private createMcpServer(): McpServer {\n const server = new McpServer({\n name: this.name,\n version: this.version,\n });\n\n for (const sdkTool of this.tools) {\n server.registerTool(\n sdkTool.name,\n {\n description: sdkTool.description,\n ...(sdkTool.inputSchema && {\n inputSchema: sdkTool.inputSchema,\n }),\n },\n async (input: Record<string, unknown>) =>\n toCallToolResult(await sdkTool.handler(input))\n );\n }\n\n return server;\n }\n\n private async handleRequest(\n req: IncomingMessage,\n res: ServerResponse\n ): Promise<void> {\n if (req.url !== '/mcp') {\n res.writeHead(404).end();\n return;\n }\n\n if (req.method !== 'POST') {\n res.writeHead(405).end();\n return;\n }\n\n const server = this.createMcpServer();\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: undefined,\n });\n\n res.on('close', () => {\n void transport.close();\n void server.close();\n });\n\n try {\n const body = await readJsonBody(req);\n await server.connect(transport);\n await transport.handleRequest(req, res, body);\n } catch (error) {\n writeJsonError(\n res,\n 500,\n error instanceof Error ? error.message : 'Internal server error'\n );\n await transport.close();\n await server.close();\n }\n }\n}\n\nexport function createSdkMcpServer(options: SdkMcpServerOptions): SdkMcpServer {\n return new SdkMcpServer(options);\n}\n\nexport async function startSdkMcpServers(\n servers: DroidMcpServerConfig[] | undefined\n): Promise<{ mcpServers?: McpServerConfig[]; cleanup: () => Promise<void> }> {\n if (!servers) {\n return { cleanup: async () => {} };\n }\n\n const startedServers: SdkMcpServer[] = [];\n const mcpServers: McpServerConfig[] = [];\n\n try {\n for (const server of servers) {\n if (isSdkMcpServer(server)) {\n mcpServers.push(await server.start());\n startedServers.push(server);\n } else {\n mcpServers.push(server);\n }\n }\n } catch (error) {\n await Promise.all(startedServers.map((server) => server.close()));\n throw error;\n }\n\n return {\n mcpServers,\n cleanup: async () => {\n await Promise.all(startedServers.map((server) => server.close()));\n },\n };\n}\n","import { DroidClient } from './client.js';\nimport { ConnectionError } from './errors.js';\nimport {\n buildInitParams,\n closeQuietly,\n createConfiguredClient,\n streamFromClient,\n wireAbortSignal,\n} from './helpers.js';\nimport type {\n HandlerOptions,\n MessageBridge,\n MessageOptions,\n SessionInitOptions,\n TransportCreationOptions,\n} from './helpers.js';\nimport { startSdkMcpServers } from './mcp.js';\nimport type { DroidMcpServerConfig } from './mcp.js';\nimport type { NotificationCallback, NotificationFilter } from './protocol.js';\nimport type {\n AddMcpServerRequestParams,\n AddMcpServerResult,\n AuthenticateMcpServerRequestParams,\n AuthenticateMcpServerResult,\n CompactSessionRequestParams,\n CompactSessionResult,\n GetContextStatsResult,\n ExecuteRewindRequestParams,\n ExecuteRewindResult,\n ForkSessionResult,\n RenameSessionRequestParams,\n RenameSessionResult,\n GetRewindInfoRequestParams,\n GetRewindInfoResult,\n InitializeSessionResult,\n ListMcpServersResult,\n ListMcpToolsResult,\n ListToolsRequestParams,\n ListToolsResult,\n ListSkillsResult,\n LoadSessionRequestParams,\n LoadSessionResult,\n RemoveMcpServerRequestParams,\n RemoveMcpServerResult,\n ToggleMcpServerRequestParams,\n ToggleMcpServerResult,\n UpdateSessionSettingsRequestParams,\n UpdateSessionSettingsResult,\n} from './schemas/client.js';\nimport { DroidInteractionMode } from './schemas/enums.js';\nimport type {\n DroidResultMessage,\n DroidStreamEvent,\n DroidStreamMessage,\n} from './stream.js';\n\n/** Aggregated result from a one-shot {@link run} call. */\nexport type DroidResult = DroidResultMessage;\n\nexport interface CreateSessionOptions\n extends SessionInitOptions, HandlerOptions, TransportCreationOptions {\n abortSignal?: AbortSignal;\n}\n\nexport interface ResumeSessionOptions extends Pick<\n CreateSessionOptions,\n | 'apiKey'\n | 'execPath'\n | 'execArgs'\n | 'env'\n | 'permissionHandler'\n | 'askUserHandler'\n | 'transport'\n | 'abortSignal'\n> {\n mcpServers?: DroidMcpServerConfig[];\n}\n\nexport type { MessageOptions } from './helpers.js';\n\n/** Create instances via {@link createSession} or {@link resumeSession}. */\nexport class DroidSession {\n private _client: DroidClient;\n private _sessionId: string;\n private _initResult: InitializeSessionResult | LoadSessionResult;\n private _closed = false;\n private _cleanupAbortSignal: (() => void) | null = null;\n private _cleanupCallbacks: Array<() => Promise<void> | void> = [];\n private readonly _activeBridges = new Set<MessageBridge>();\n\n /** @internal */\n constructor(\n client: DroidClient,\n sessionId: string,\n initResult: InitializeSessionResult | LoadSessionResult\n ) {\n this._client = client;\n this._sessionId = sessionId;\n this._initResult = initResult;\n }\n\n get sessionId(): string {\n return this._sessionId;\n }\n\n get initResult(): InitializeSessionResult | LoadSessionResult {\n return this._initResult;\n }\n\n /** @internal */\n setAbortSignalCleanup(cleanup: () => void): void {\n this._cleanupAbortSignal = cleanup;\n }\n\n /** @internal */\n addCleanup(cleanup: () => Promise<void> | void): void {\n this._cleanupCallbacks.push(cleanup);\n }\n\n /** Yields message-level events until the final `result` message. */\n stream(\n prompt: string,\n options?: MessageOptions & { includePartialMessages?: false }\n ): AsyncGenerator<DroidStreamMessage, void, undefined>;\n /** Yields message-level events plus partial chunks until the final `result` message. */\n stream(\n prompt: string,\n options: MessageOptions & { includePartialMessages: true }\n ): AsyncGenerator<DroidStreamEvent, void, undefined>;\n async *stream(\n prompt: string,\n options?: MessageOptions\n ): AsyncGenerator<DroidStreamEvent, void, undefined> {\n this._ensureNotClosed();\n yield* streamFromClient(\n this._client,\n this._sessionId,\n this._activeBridges,\n prompt,\n options\n );\n }\n\n async interrupt(): Promise<void> {\n this._ensureNotClosed();\n await this._client.interruptSession();\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this._cleanupAbortSignal?.();\n this._cleanupAbortSignal = null;\n for (const bridge of this._activeBridges) {\n bridge.signalDone();\n }\n\n try {\n await this._client.closeSession({ reason: 'other' }).catch(() => {});\n await this._client.close();\n } finally {\n const cleanups = this._cleanupCallbacks.splice(0);\n await Promise.all(cleanups.map((cleanup) => cleanup()));\n }\n }\n\n async updateSettings(\n params: Partial<UpdateSessionSettingsRequestParams>\n ): Promise<UpdateSessionSettingsResult> {\n this._ensureNotClosed();\n return this._client.updateSessionSettings(params);\n }\n\n async enterSpecMode(\n params: Pick<\n UpdateSessionSettingsRequestParams,\n 'specModeModelId' | 'specModeReasoningEffort'\n > = {}\n ): Promise<UpdateSessionSettingsResult> {\n this._ensureNotClosed();\n return this._client.updateSessionSettings({\n interactionMode: DroidInteractionMode.Spec,\n ...params,\n });\n }\n\n async addMcpServer(\n params: AddMcpServerRequestParams\n ): Promise<AddMcpServerResult> {\n this._ensureNotClosed();\n return this._client.addMcpServer(params);\n }\n\n async removeMcpServer(\n params: RemoveMcpServerRequestParams\n ): Promise<RemoveMcpServerResult> {\n this._ensureNotClosed();\n return this._client.removeMcpServer(params);\n }\n\n async toggleMcpServer(\n params: ToggleMcpServerRequestParams\n ): Promise<ToggleMcpServerResult> {\n this._ensureNotClosed();\n return this._client.toggleMcpServer(params);\n }\n\n async listMcpServers(): Promise<ListMcpServersResult> {\n this._ensureNotClosed();\n return this._client.listMcpServers();\n }\n\n async listMcpTools(): Promise<ListMcpToolsResult> {\n this._ensureNotClosed();\n return this._client.listMcpTools();\n }\n\n async listTools(\n params: ListToolsRequestParams = {}\n ): Promise<ListToolsResult> {\n this._ensureNotClosed();\n return this._client.listTools(params);\n }\n\n async authenticateMcpServer(\n params: AuthenticateMcpServerRequestParams\n ): Promise<AuthenticateMcpServerResult> {\n this._ensureNotClosed();\n return this._client.authenticateMcpServer(params);\n }\n\n async listSkills(): Promise<ListSkillsResult> {\n this._ensureNotClosed();\n return this._client.listSkills();\n }\n\n async getRewindInfo(\n params: GetRewindInfoRequestParams\n ): Promise<GetRewindInfoResult> {\n this._ensureNotClosed();\n return this._client.getRewindInfo(params);\n }\n\n async executeRewind(\n params: ExecuteRewindRequestParams\n ): Promise<ExecuteRewindResult> {\n this._ensureNotClosed();\n return this._client.executeRewind(params);\n }\n\n async compactSession(\n params?: CompactSessionRequestParams\n ): Promise<CompactSessionResult> {\n this._ensureNotClosed();\n return this._client.compactSession(params ?? {});\n }\n\n async forkSession(): Promise<ForkSessionResult> {\n this._ensureNotClosed();\n return this._client.forkSession();\n }\n\n async getContextStats(): Promise<GetContextStatsResult> {\n this._ensureNotClosed();\n return this._client.getContextStats();\n }\n\n async renameSession(\n params: RenameSessionRequestParams\n ): Promise<RenameSessionResult> {\n this._ensureNotClosed();\n return this._client.renameSession(params);\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n return this._client.onNotification(callback, filter);\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Session has been closed. Create a new session to continue.'\n );\n }\n }\n}\n\nexport async function createSession(\n options: CreateSessionOptions\n): Promise<DroidSession> {\n const { client } = await createConfiguredClient(options);\n let cleanupInitAbortSignal = options.abortSignal?.aborted\n ? () => {}\n : wireAbortSignal(options.abortSignal, () => {\n void closeQuietly(client);\n });\n let sdkMcpServers: Awaited<ReturnType<typeof startSdkMcpServers>> | undefined;\n\n try {\n sdkMcpServers = await startSdkMcpServers(options.mcpServers);\n const initParams = buildInitParams({\n ...options,\n mcpServers: sdkMcpServers.mcpServers,\n });\n const initResult = await client.initializeSession(initParams);\n const session = new DroidSession(client, initResult.sessionId, initResult);\n session.addCleanup(sdkMcpServers.cleanup);\n cleanupInitAbortSignal();\n cleanupInitAbortSignal = () => {};\n session.setAbortSignalCleanup(\n wireAbortSignal(options.abortSignal, () => void session.close())\n );\n\n return session;\n } catch (error) {\n cleanupInitAbortSignal();\n await sdkMcpServers?.cleanup();\n await closeQuietly(client);\n throw error;\n }\n}\n\n/**\n * Resumes an existing Droid session.\n *\n * The resumed session always runs in the working directory that was persisted\n * with the session at creation time. `resumeSession()` intentionally does not\n * accept a `cwd` option: the persisted session cwd is authoritative. The\n * underlying subprocess is launched in the host process's `process.cwd()`, but\n * this does not affect the session's working directory as far as the Droid is\n * concerned. To run in a different directory, create a new session or fork the\n * existing one.\n *\n * @throws {SessionNotFoundError} If the session ID does not exist.\n */\nexport async function resumeSession(\n sessionId: string,\n options: ResumeSessionOptions\n): Promise<DroidSession> {\n const { client } = await createConfiguredClient(options);\n let sdkMcpServers: Awaited<ReturnType<typeof startSdkMcpServers>> | undefined;\n\n try {\n sdkMcpServers = await startSdkMcpServers(options.mcpServers);\n const loadParams: LoadSessionRequestParams = {\n sessionId,\n mcpServers: sdkMcpServers.mcpServers,\n };\n const loadResult = await client.loadSession(loadParams);\n const session = new DroidSession(client, sessionId, loadResult);\n session.addCleanup(sdkMcpServers.cleanup);\n session.setAbortSignalCleanup(\n wireAbortSignal(options.abortSignal, () => void session.close())\n );\n\n return session;\n } catch (error) {\n await sdkMcpServers?.cleanup();\n await closeQuietly(client);\n throw error;\n }\n}\n","import {\n createSession,\n type CreateSessionOptions,\n type DroidResult,\n type MessageOptions,\n} from './session.js';\nimport { DroidMessageType } from './stream.js';\n\nexport interface RunOptions\n extends\n CreateSessionOptions,\n Omit<MessageOptions, 'includePartialMessages'> {}\n\nexport async function run(\n prompt: string,\n options: RunOptions\n): Promise<DroidResult> {\n const session = await createSession(options);\n\n try {\n for await (const msg of session.stream(prompt, {\n ...options,\n includePartialMessages: false,\n })) {\n if (msg.type === DroidMessageType.Result) {\n return msg;\n }\n }\n\n throw new Error('Stream completed without a result message');\n } finally {\n await session.close();\n }\n}\n","import * as fs from 'node:fs';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\n\nimport {\n SessionSettingsFileSchema,\n SessionStartEventSchema,\n type SessionMetadata,\n type SessionSettingsFile,\n type SessionStartEvent,\n type ListSessionsOptions,\n} from './schemas/session-metadata.js';\n\nconst FAVORITES_FILE = '.favorites';\nconst SESSION_EXTENSION = '.jsonl';\nconst SETTINGS_SUFFIX = '.settings.json';\nconst MISSION_TAG_PREFIX = 'mission:';\nconst MISSION_ID_METADATA_KEY = 'missionId';\nconst DECOMP_SESSION_TYPE_TAG = 'decompSessionType';\nconst DECOMP_SESSION_TYPE_METADATA_KEY = 'value';\n\n// Byte constants for the byte-level scanner.\nconst LF = 0x0a;\nconst CR = 0x0d;\nconst SPACE = 0x20;\nconst TAB = 0x09;\n\n// When `numSessions` is set, stat every candidate then parse only the top\n// N. Parse failures force us to drop further down the stat-sorted list —\n// oversample so we rarely have to re-dip.\nconst PARSE_OVERSAMPLE = 20;\n\n/**\n * Read a file into a Buffer, returning `null` if it doesn't exist or can't\n * be read. Avoids a TOCTOU `existsSync` pre-check.\n */\nfunction readFileBuffer(filePath: string): Buffer | null {\n try {\n return fs.readFileSync(filePath);\n } catch {\n return null;\n }\n}\n\n/** Parse a Buffer as JSON, returning `null` on failure. */\nfunction parseJsonBuffer(buf: Buffer): unknown {\n try {\n return JSON.parse(buf.toString('utf-8'));\n } catch {\n return null;\n }\n}\n\n/**\n * Walk a Buffer byte-by-byte to extract the first line and count non-empty\n * lines. Avoids allocating a full UTF-8 string for potentially large\n * session files.\n */\nfunction scanBufferForLines(buf: Buffer): {\n firstLine: Buffer;\n nonEmptyLineCount: number;\n} {\n let nonEmptyLineCount = 0;\n let firstLineEnd = -1;\n let currentLineHasContent = false;\n\n for (let i = 0; i < buf.length; i++) {\n const ch = buf[i];\n if (ch === LF) {\n if (currentLineHasContent) nonEmptyLineCount++;\n if (firstLineEnd === -1) firstLineEnd = i;\n currentLineHasContent = false;\n } else if (ch !== CR && ch !== SPACE && ch !== TAB) {\n currentLineHasContent = true;\n }\n }\n if (currentLineHasContent) nonEmptyLineCount++;\n\n // Trim trailing CR from the first line if the file uses CRLF.\n const end =\n firstLineEnd === -1\n ? buf.length\n : firstLineEnd > 0 && buf[firstLineEnd - 1] === CR\n ? firstLineEnd - 1\n : firstLineEnd;\n\n return {\n firstLine: buf.subarray(0, end),\n nonEmptyLineCount,\n };\n}\n\nfunction loadFavorites(sessionsDir: string): Set<string> {\n const buf = readFileBuffer(path.join(sessionsDir, FAVORITES_FILE));\n if (!buf) return new Set();\n const parsed = parseJsonBuffer(buf);\n if (!Array.isArray(parsed)) return new Set();\n return new Set(parsed.filter((id): id is string => typeof id === 'string'));\n}\n\nfunction loadSettingsFile(\n directory: string,\n sessionId: string\n): SessionSettingsFile | null {\n const buf = readFileBuffer(\n path.join(directory, `${sessionId}${SETTINGS_SUFFIX}`)\n );\n if (!buf) return null;\n const parsed = parseJsonBuffer(buf);\n if (parsed === null) return null;\n const result = SessionSettingsFileSchema.safeParse(parsed);\n return result.success ? result.data : null;\n}\n\nfunction getMissionMetadataFromTags(settings: SessionSettingsFile | null): {\n decompMissionId?: string;\n decompSessionType?: string;\n} {\n if (!settings?.tags) return {};\n\n const missionTag = settings.tags.find((tag) =>\n tag.name.startsWith(MISSION_TAG_PREFIX)\n );\n const roleTag = settings.tags.find(\n (tag) => tag.name === DECOMP_SESSION_TYPE_TAG\n );\n\n return {\n decompMissionId: missionTag?.metadata?.[MISSION_ID_METADATA_KEY],\n decompSessionType: roleTag?.metadata?.[DECOMP_SESSION_TYPE_METADATA_KEY],\n };\n}\n\ninterface SessionCandidate {\n sessionId: string;\n sessionPath: string;\n directory: string;\n /** Names of sibling files in `directory` — used to skip settings probe. */\n siblingNames: Set<string>;\n /** Cached stat, populated eagerly in the stat-first pre-pass. */\n stats: fs.Stats;\n}\n\ninterface ParseContext {\n favorites: Set<string>;\n /**\n * When set, candidates whose embedded `cwd` doesn't match (after\n * resolution) are rejected early. Used to filter legacy-global files.\n */\n requiredCwd?: string;\n}\n\n/**\n * Parse a single session `.jsonl` file into a {@link SessionMetadata}.\n * Returns `null` if the file can't be read, isn't a valid session_start\n * event, is archived, or (when `requiredCwd` is set) doesn't match.\n */\nfunction parseSessionFile(\n candidate: SessionCandidate,\n ctx: ParseContext\n): SessionMetadata | null {\n const buf = readFileBuffer(candidate.sessionPath);\n if (!buf) return null;\n\n const scanned = scanBufferForLines(buf);\n\n const firstParsed = parseJsonBuffer(scanned.firstLine);\n if (firstParsed === null) return null;\n\n const firstResult = SessionStartEventSchema.safeParse(firstParsed);\n if (!firstResult.success) return null;\n const summary: SessionStartEvent = firstResult.data;\n\n // Early reject legacy-global sessions that don't belong to the cwd we\n // want, before touching the settings file.\n if (\n ctx.requiredCwd !== undefined &&\n (summary.cwd === undefined || path.resolve(summary.cwd) !== ctx.requiredCwd)\n ) {\n return null;\n }\n\n // Only read <sessionId>.settings.json if it actually exists — we already\n // have the directory listing and can tell.\n const settingsName = `${candidate.sessionId}${SETTINGS_SUFFIX}`;\n const settings = candidate.siblingNames.has(settingsName)\n ? loadSettingsFile(candidate.directory, candidate.sessionId)\n : null;\n if (settings?.archivedAt) return null;\n\n const tagMeta = getMissionMetadataFromTags(settings);\n const decompSessionType =\n summary.decompSessionType ??\n SessionStartEventSchema.shape.decompSessionType.safeParse(\n tagMeta.decompSessionType\n ).data;\n\n // messageCount = non-empty lines minus the session_start line.\n const messageCount = Math.max(0, scanned.nonEmptyLineCount - 1);\n\n return {\n id: candidate.sessionId,\n title: summary.title ?? '',\n sessionTitle: summary.sessionTitle,\n owner: summary.owner ?? '',\n messageCount,\n modifiedTime: candidate.stats.mtime,\n createdTime: candidate.stats.birthtime || candidate.stats.ctime,\n isFavorite: ctx.favorites.has(candidate.sessionId),\n cwd: summary.cwd,\n decompSessionType,\n decompMissionId: tagMeta.decompMissionId ?? summary.decompMissionId,\n };\n}\n\nfunction readDirEntries(directory: string): fs.Dirent[] {\n try {\n return fs.readdirSync(directory, { withFileTypes: true });\n } catch {\n return [];\n }\n}\n\n/**\n * Stat every `.jsonl` in `directory` (from its already-listed `entries`)\n * and return candidate records. No file contents are read yet — this is\n * the cheap pre-pass that lets `numSessions` avoid parsing every file on\n * disk.\n */\nfunction collectCandidates(\n directory: string,\n entries: fs.Dirent[]\n): SessionCandidate[] {\n const siblingNames = new Set(entries.map((e) => e.name));\n const candidates: SessionCandidate[] = [];\n\n for (const entry of entries) {\n if (entry.isDirectory()) continue;\n if (!entry.name.endsWith(SESSION_EXTENSION)) continue;\n\n const sessionPath = path.join(directory, entry.name);\n let stats: fs.Stats;\n try {\n stats = fs.statSync(sessionPath);\n } catch {\n continue;\n }\n candidates.push({\n sessionId: entry.name.slice(0, -SESSION_EXTENSION.length),\n sessionPath,\n directory,\n siblingNames,\n stats,\n });\n }\n\n return candidates;\n}\n\n/**\n * Parse `candidates` in order until we have `limit` valid sessions (or run\n * out). When `limit` is undefined, parse everything.\n */\nfunction parseUpTo(\n candidates: SessionCandidate[],\n ctx: ParseContext,\n limit?: number\n): SessionMetadata[] {\n const out: SessionMetadata[] = [];\n for (const candidate of candidates) {\n if (limit !== undefined && out.length >= limit) break;\n const metadata = parseSessionFile(candidate, ctx);\n if (metadata) out.push(metadata);\n }\n return out;\n}\n\n/**\n * Convert a working directory path to the sanitized directory name used by\n * the droid CLI for project-specific session storage.\n *\n * Mirrors the CLI's `sanitizePathToDirectoryName` helper.\n *\n * @internal Exported primarily for testing — typical callers should use\n * {@link listSessions} with the `cwd` option instead.\n */\nexport function sanitizePathToDirectoryName(cwd: string): string {\n let expandedPath = cwd;\n if (cwd.startsWith('~/') || cwd === '~') {\n expandedPath = path.join(os.homedir(), cwd.slice(1));\n }\n\n const absolutePath = path.resolve(expandedPath);\n let canonicalPath = absolutePath;\n try {\n canonicalPath = fs.realpathSync(absolutePath);\n } catch {\n canonicalPath = absolutePath;\n }\n const normalized = canonicalPath.replace(/[\\\\/]+$/, '');\n\n if (process.platform === 'win32') {\n return `-${normalized.replace(/^([A-Z]):/i, '$1').replace(/[\\\\/]+/g, '-')}`;\n }\n return `-${normalized.replace(/^\\/+/, '').replace(/\\/+/g, '-')}`;\n}\n\n/**\n * Resolve the default sessions root directory.\n *\n * @internal Exported primarily for testing — typical callers should use\n * {@link listSessions} without a `sessionsDir` option instead.\n */\nexport function getDefaultSessionsDir(): string {\n return path.join(os.homedir(), '.factory', 'sessions');\n}\n\n/**\n * List droid sessions stored on disk.\n *\n * Sessions are read from `~/.factory/sessions/` (or the `sessionsDir`\n * override) by scanning `.jsonl` files, mirroring the logic used by the\n * `droid` CLI's `SessionService`. No JSON-RPC server calls are made.\n *\n * By default, returns sessions for `process.cwd()`. Pass a specific `cwd`\n * to scope to a different project, or `fetchOutsideCWD: true` to return\n * every session on disk regardless of working directory. Results are\n * sorted by `modifiedTime` descending and can be capped with `numSessions`.\n *\n * @example\n * ```ts\n * // Sessions for the current project\n * const sessions = await listSessions();\n *\n * // 10 most recent sessions across every project\n * const recent = await listSessions({\n * fetchOutsideCWD: true,\n * numSessions: 10,\n * });\n * ```\n */\nexport async function listSessions(\n options: ListSessionsOptions = {}\n): Promise<SessionMetadata[]> {\n const sessionsDir = options.sessionsDir ?? getDefaultSessionsDir();\n const favorites = loadFavorites(sessionsDir);\n\n const rootEntries = readDirEntries(sessionsDir);\n\n // Legacy-global candidates (pre-subdir sessions) always live directly\n // under sessionsDir; collect them regardless of mode. Project-specific\n // candidates come from either one subdir (single-project mode) or all\n // of them (fetchOutsideCWD mode).\n const legacyCandidates = collectCandidates(sessionsDir, rootEntries);\n const projectCandidates: SessionCandidate[] = [];\n\n let requiredCwd: string | undefined;\n\n if (options.fetchOutsideCWD) {\n for (const entry of rootEntries) {\n if (!entry.isDirectory()) continue;\n if (!entry.name.startsWith('-')) continue;\n const dir = path.join(sessionsDir, entry.name);\n projectCandidates.push(...collectCandidates(dir, readDirEntries(dir)));\n }\n } else {\n const normalizedCwd = path.resolve(options.cwd ?? process.cwd());\n requiredCwd = normalizedCwd;\n const projectDir = path.join(\n sessionsDir,\n sanitizePathToDirectoryName(normalizedCwd)\n );\n projectCandidates.push(\n ...collectCandidates(projectDir, readDirEntries(projectDir))\n );\n }\n\n // Sort candidates mtime-descending so the first parses hit the newest\n // sessions — required for `numSessions` to skip the tail.\n const byMtimeDesc = (a: SessionCandidate, b: SessionCandidate): number =>\n b.stats.mtime.getTime() - a.stats.mtime.getTime();\n projectCandidates.sort(byMtimeDesc);\n legacyCandidates.sort(byMtimeDesc);\n\n // When numSessions is set, parse only as many files as we need (with a\n // small oversample to cover parse failures / archived / cwd-mismatch).\n const parseLimit =\n options.numSessions !== undefined && options.numSessions >= 0\n ? options.numSessions + PARSE_OVERSAMPLE\n : undefined;\n\n const ctx: ParseContext = { favorites };\n const legacyCtx: ParseContext =\n requiredCwd !== undefined ? { favorites, requiredCwd } : ctx;\n\n const projectSessions = parseUpTo(projectCandidates, ctx, parseLimit);\n const legacySessions = parseUpTo(legacyCandidates, legacyCtx, parseLimit);\n\n // Dedupe by id (migration edge case where the same session appears in\n // both a legacy global file and a project subdir).\n const byId = new Map<string, SessionMetadata>();\n for (const session of [...projectSessions, ...legacySessions]) {\n const existing = byId.get(session.id);\n if (\n !existing ||\n session.modifiedTime.getTime() > existing.modifiedTime.getTime()\n ) {\n byId.set(session.id, session);\n }\n }\n\n const sorted = Array.from(byId.values()).sort(\n (a, b) => b.modifiedTime.getTime() - a.modifiedTime.getTime()\n );\n\n if (options.numSessions !== undefined && options.numSessions >= 0) {\n return sorted.slice(0, options.numSessions);\n }\n\n return sorted;\n}\n","import { z } from 'zod';\n\nconst EnvironmentVariableSchema = z.object({\n key: z.string(),\n value: z.string(),\n});\n\nexport const MachineTemplateBuildStatusSchema = z.object({\n status: z.enum(['building', 'success', 'failed']),\n failureReason: z.enum(['setup_script_error', 'system_error']).optional(),\n buildStartedAt: z.number().int().optional(),\n builtAt: z.number().int().optional(),\n logs: z.string().optional(),\n});\n\nexport type MachineTemplateBuildStatus = z.infer<\n typeof MachineTemplateBuildStatusSchema\n>;\n\nexport const MachineTemplateSchema = z.object({\n templateId: z.string(),\n repoUrl: z.string(),\n templateName: z.string(),\n defaultBranch: z.string(),\n createdBy: z.string(),\n createdAt: z.number().int().optional(),\n buildStatus: MachineTemplateBuildStatusSchema.optional(),\n lastUpdatedAt: z.number().int().nullable().optional(),\n environmentVariables: z.array(EnvironmentVariableSchema).optional(),\n userEnvironmentVariablesByUser: z.array(EnvironmentVariableSchema).optional(),\n setupScript: z.string().optional(),\n});\n\nexport type MachineTemplate = z.infer<typeof MachineTemplateSchema>;\n\nexport const MachineTemplateListResponseSchema = z.object({\n templates: z.array(MachineTemplateSchema),\n pagination: z.object({\n hasMore: z.boolean(),\n nextCursor: z.string().nullable(),\n }),\n});\n\nexport type MachineTemplateListResponse = z.infer<\n typeof MachineTemplateListResponseSchema\n>;\n\nexport interface FactoryApiOptions {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport interface ComputerApiOptions extends FactoryApiOptions {\n computerId: string;\n}\n\nexport interface ListMachineTemplatesOptions extends FactoryApiOptions {\n limit?: number;\n cursor?: string;\n}\n\nexport interface GetMachineTemplateOptions extends FactoryApiOptions {\n templateId: string;\n}\n\nexport const ComputerSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n hostname: z.string().optional(),\n providerType: z.enum(['byom', 'e2b']),\n status: z.enum(['provisioning', 'active', 'error']).optional(),\n createdAt: z.number().int(),\n relayClientUrl: z.string().optional(),\n remoteUser: z.string().optional(),\n })\n .passthrough();\n\nexport type Computer = z.infer<typeof ComputerSchema>;\n\nexport const ComputerListResponseSchema = z.object({\n computers: z.array(ComputerSchema),\n});\n\nexport type ComputerListResponse = z.infer<typeof ComputerListResponseSchema>;\n\nexport interface ListComputersOptions extends FactoryApiOptions {}\n\nexport interface GetComputerOptions extends ComputerApiOptions {}\n\nexport interface CreateComputerOptions extends FactoryApiOptions {\n name: string;\n remoteUser: string;\n provider?: 'byom' | 'e2b';\n hostId?: string;\n repos?: string[];\n autoInstallDeps?: boolean;\n serviceAccountId?: string;\n}\n\nexport interface GetComputerByNameOptions extends FactoryApiOptions {\n name: string;\n}\n\nexport interface UpdateComputerOptions extends ComputerApiOptions {\n name?: string;\n remoteUser?: string;\n hostId?: string;\n}\n\nexport interface DeleteComputerOptions extends ComputerApiOptions {}\n\nexport interface RestartComputerOptions extends ComputerApiOptions {}\n\nexport interface RefreshComputerOptions extends ComputerApiOptions {}\n\nexport const RefreshComputerResponseSchema = z.object({\n configured: z.number().int(),\n});\n\nexport type RefreshComputerResponse = z.infer<\n typeof RefreshComputerResponseSchema\n>;\n\nexport const ComputerMetricSchema = z.object({\n timestamp: z.string(),\n cpuUsedPct: z.number(),\n cpuCount: z.number(),\n memUsed: z.number(),\n memTotal: z.number(),\n diskUsed: z.number(),\n diskTotal: z.number(),\n});\n\nexport type ComputerMetric = z.infer<typeof ComputerMetricSchema>;\n\nexport const ComputerMetricsResponseSchema = z.array(ComputerMetricSchema);\n\nexport type ComputerMetricsResponse = z.infer<\n typeof ComputerMetricsResponseSchema\n>;\n\nexport interface GetComputerMetricsOptions extends ComputerApiOptions {\n start?: string;\n}\n\nexport interface RetryInstallDepsOptions extends ComputerApiOptions {}\n\nexport const RemoteSessionSchema = z.object({\n sessionId: z.string(),\n title: z.string().optional(),\n status: z.enum(['idle', 'pending', 'running']),\n messageCount: z.number().int(),\n createdAt: z.number().int(),\n updatedAt: z.number().int(),\n completedAt: z.number().int().optional(),\n computerId: z.string().optional(),\n});\n\nexport type RemoteSession = z.infer<typeof RemoteSessionSchema>;\n\nexport const RemoteSessionListResponseSchema = z.object({\n sessions: z.array(RemoteSessionSchema),\n pagination: z.object({\n hasMore: z.boolean(),\n nextCursor: z.string().nullable(),\n }),\n});\n\nexport type RemoteSessionListResponse = z.infer<\n typeof RemoteSessionListResponseSchema\n>;\n\nexport interface ListRemoteSessionsOptions extends FactoryApiOptions {\n computerId?: string;\n limit?: number;\n cursor?: string;\n}\n","import type { z } from 'zod';\n\nimport {\n ComputerListResponseSchema,\n ComputerMetricsResponseSchema,\n ComputerSchema,\n MachineTemplateListResponseSchema,\n MachineTemplateSchema,\n RefreshComputerResponseSchema,\n RemoteSessionListResponseSchema,\n} from './api-types.js';\nimport type {\n Computer,\n ComputerListResponse,\n ComputerMetricsResponse,\n CreateComputerOptions,\n DeleteComputerOptions,\n GetComputerByNameOptions,\n GetComputerMetricsOptions,\n GetComputerOptions,\n GetMachineTemplateOptions,\n ListComputersOptions,\n ListMachineTemplatesOptions,\n ListRemoteSessionsOptions,\n MachineTemplate,\n MachineTemplateListResponse,\n RefreshComputerOptions,\n RefreshComputerResponse,\n RemoteSessionListResponse,\n RestartComputerOptions,\n RetryInstallDepsOptions,\n UpdateComputerOptions,\n} from './api-types.js';\nimport { ConnectionError, ProtocolError } from './errors.js';\nimport { isRecord } from './utils.js';\n\nconst DEFAULT_BASE_URL = 'https://api.factory.ai';\n\ninterface FetchOptions {\n method?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n body?: Record<string, unknown>;\n}\n\nfunction extractErrorMessage(body: unknown, status: number): string {\n if (isRecord(body) && typeof body['error'] === 'string') {\n return body['error'];\n }\n return `Factory API error (status ${status})`;\n}\n\nasync function factoryFetch(\n path: string,\n apiKey: string,\n baseUrl?: string,\n options?: FetchOptions\n): Promise<unknown> {\n const url = `${baseUrl ?? DEFAULT_BASE_URL}${path}`;\n const method = options?.method ?? 'GET';\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n Accept: 'application/json',\n };\n if (options?.body) {\n headers['Content-Type'] = 'application/json';\n }\n\n let response: Response;\n\n try {\n response = await fetch(url, {\n method,\n headers,\n ...(options?.body ? { body: JSON.stringify(options.body) } : {}),\n });\n } catch (error) {\n throw new ConnectionError(\n `Failed to reach Factory API: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n if (response.status === 204) {\n return undefined;\n }\n\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n throw new ProtocolError(\n `Factory API returned non-JSON response (status ${response.status})`\n );\n }\n\n if (!response.ok) {\n const message = extractErrorMessage(body, response.status);\n\n if (response.status === 401 || response.status === 403) {\n throw new ProtocolError(`Invalid or expired API key: ${message}`, {\n code: response.status,\n });\n }\n\n throw new ProtocolError(message, { code: response.status });\n }\n\n return body;\n}\n\nfunction parseResponse<T extends z.ZodTypeAny>(\n body: unknown,\n schema: T\n): z.output<T> {\n const parsed = schema.safeParse(body);\n if (!parsed.success) {\n throw new ProtocolError(\n `Unexpected response format from Factory API: ${parsed.error.message}`\n );\n }\n return parsed.data;\n}\n\nexport async function listMachineTemplates(\n options: ListMachineTemplatesOptions\n): Promise<MachineTemplateListResponse> {\n const params = new URLSearchParams();\n if (options.limit != null) {\n params.set('limit', String(options.limit));\n }\n if (options.cursor != null) {\n params.set('cursor', options.cursor);\n }\n const query = params.toString();\n const path = `/api/v0/machines/templates${query ? `?${query}` : ''}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, MachineTemplateListResponseSchema);\n}\n\nexport async function getMachineTemplate(\n options: GetMachineTemplateOptions\n): Promise<MachineTemplate> {\n const path = `/api/v0/machines/templates/${encodeURIComponent(options.templateId)}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, MachineTemplateSchema);\n}\n\nexport async function listComputers(\n options: ListComputersOptions\n): Promise<ComputerListResponse> {\n const path = '/api/v0/computers';\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, ComputerListResponseSchema);\n}\n\nexport async function getComputer(\n options: GetComputerOptions\n): Promise<Computer> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function createComputer(\n options: CreateComputerOptions\n): Promise<Computer> {\n const path = '/api/v0/computers';\n const reqBody: Record<string, unknown> = {\n name: options.name,\n remoteUser: options.remoteUser,\n };\n if (options.provider != null) reqBody['provider'] = options.provider;\n if (options.hostId != null) reqBody['hostId'] = options.hostId;\n if (options.repos != null) reqBody['repos'] = options.repos;\n if (options.autoInstallDeps != null)\n reqBody['autoInstallDeps'] = options.autoInstallDeps;\n if (options.serviceAccountId != null)\n reqBody['serviceAccountId'] = options.serviceAccountId;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'POST',\n body: reqBody,\n });\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function getComputerByName(\n options: GetComputerByNameOptions\n): Promise<Computer> {\n const path = `/api/v0/computers/name/${encodeURIComponent(options.name)}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function updateComputer(\n options: UpdateComputerOptions\n): Promise<Computer> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}`;\n const reqBody: Record<string, unknown> = {};\n if (options.name != null) reqBody['name'] = options.name;\n if (options.remoteUser != null) reqBody['remoteUser'] = options.remoteUser;\n if (options.hostId != null) reqBody['hostId'] = options.hostId;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'PATCH',\n body: reqBody,\n });\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function deleteComputer(\n options: DeleteComputerOptions\n): Promise<void> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}`;\n\n await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'DELETE',\n });\n}\n\nexport async function restartComputer(\n options: RestartComputerOptions\n): Promise<void> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}/restart`;\n\n await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'POST',\n });\n}\n\nexport async function refreshComputer(\n options: RefreshComputerOptions\n): Promise<RefreshComputerResponse> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}/refresh`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'POST',\n });\n return parseResponse(body, RefreshComputerResponseSchema);\n}\n\nexport async function getComputerMetrics(\n options: GetComputerMetricsOptions\n): Promise<ComputerMetricsResponse> {\n const params = new URLSearchParams();\n if (options.start != null) {\n params.set('start', options.start);\n }\n const query = params.toString();\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}/metrics${query ? `?${query}` : ''}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, ComputerMetricsResponseSchema);\n}\n\nexport async function retryInstallDeps(\n options: RetryInstallDepsOptions\n): Promise<Computer> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}/install-deps`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'POST',\n });\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function listRemoteSessions(\n options: ListRemoteSessionsOptions\n): Promise<RemoteSessionListResponse> {\n const params = new URLSearchParams();\n if (options.computerId != null) {\n params.set('computerId', options.computerId);\n }\n if (options.limit != null) {\n params.set('limit', String(options.limit));\n }\n if (options.cursor != null) {\n params.set('cursor', options.cursor);\n }\n const query = params.toString();\n const path = `/api/v0/sessions${query ? `?${query}` : ''}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, RemoteSessionListResponseSchema);\n}\n","import type { z } from 'zod';\n\nimport { ConnectionError, SessionError } from '../errors.js';\nimport {\n dispatchNotification,\n ProtocolEngine,\n type AskUserHandler,\n type NotificationCallback,\n type NotificationFilter,\n type NotificationListener,\n type PermissionHandler,\n} from '../protocol.js';\nimport type {\n AddMcpServerRequestParams,\n AddMcpServerResult,\n AddUserMessageRequestParams,\n AddUserMessageResult,\n AuthenticateMcpServerRequestParams,\n AuthenticateMcpServerResult,\n CloseSessionRequestParams,\n CloseSessionResult,\n CompactSessionRequestParams,\n CompactSessionResult,\n ExecuteRewindRequestParams,\n ExecuteRewindResult,\n ContextBreakdownResult,\n ForkSessionResult,\n GetRewindInfoRequestParams,\n GetRewindInfoResult,\n InitializeSessionRequestParams,\n InitializeSessionResult,\n InterruptSessionResult,\n ListMcpServersResult,\n ListMcpToolsResult,\n ListSkillsResult,\n LoadSessionRequestParams,\n LoadSessionResult,\n RemoveMcpServerRequestParams,\n RemoveMcpServerResult,\n RenameSessionRequestParams,\n RenameSessionResult,\n ToggleMcpServerRequestParams,\n ToggleMcpServerResult,\n UpdateSessionSettingsRequestParams,\n UpdateSessionSettingsResult,\n} from '../schemas/client.js';\nimport {\n AddMcpServerResultSchema,\n AddUserMessageResultSchema,\n AuthenticateMcpServerResultSchema,\n CloseSessionResultSchema,\n CompactSessionResultSchema,\n ExecuteRewindResultSchema,\n ContextBreakdownResultSchema,\n ForkSessionResultSchema,\n GetRewindInfoResultSchema,\n InitializeSessionResultSchema,\n InterruptSessionResultSchema,\n ListMcpServersResultSchema,\n ListMcpToolsResultSchema,\n ListSkillsResultSchema,\n LoadSessionResultSchema,\n RemoveMcpServerResultSchema,\n RenameSessionResultSchema,\n ToggleMcpServerResultSchema,\n UpdateSessionSettingsResultSchema,\n} from '../schemas/client.js';\nimport {\n COMPACTION_TIMEOUT,\n REWIND_TIMEOUT,\n SESSION_INIT_TIMEOUT,\n} from '../schemas/constants.js';\nimport {\n ServerRequestHandlerType,\n ToolConfirmationOutcome,\n} from '../schemas/enums.js';\nimport type {\n AskUserRequestParams,\n AskUserResult,\n RequestPermissionHandlerResult,\n RequestPermissionRequestParams,\n} from '../schemas/server.js';\nimport type { DroidClientTransport } from '../types.js';\n\n/** Daemon wire methods (client -> server). */\nenum DaemonMethod {\n INITIALIZE_SESSION = 'daemon.initialize_session',\n LOAD_SESSION = 'daemon.load_session',\n ADD_USER_MESSAGE = 'daemon.add_user_message',\n CLOSE_SESSION = 'daemon.close_session',\n INTERRUPT_SESSION = 'daemon.interrupt_session',\n UPDATE_SESSION_SETTINGS = 'daemon.update_session_settings',\n COMPACT_SESSION = 'daemon.compact_session',\n FORK_SESSION = 'daemon.fork_session',\n GET_CONTEXT_STATS = 'daemon.get_context_breakdown',\n RENAME_SESSION = 'daemon.rename_session',\n GET_REWIND_INFO = 'daemon.get_rewind_info',\n EXECUTE_REWIND = 'daemon.execute_rewind',\n ADD_MCP_SERVER = 'daemon.add_mcp_server',\n REMOVE_MCP_SERVER = 'daemon.remove_mcp_server',\n TOGGLE_MCP_SERVER = 'daemon.toggle_mcp_server',\n LIST_MCP_SERVERS = 'daemon.list_mcp_servers',\n LIST_MCP_TOOLS = 'daemon.list_mcp_tools',\n AUTHENTICATE_MCP_SERVER = 'daemon.authenticate_mcp_server',\n LIST_SKILLS = 'daemon.list_skills',\n}\n\n/** Maps daemon server-to-client request methods to handler types. */\nconst DAEMON_SERVER_REQUEST_METHODS: Record<string, ServerRequestHandlerType> =\n {\n 'daemon.request_permission': ServerRequestHandlerType.Permission,\n 'daemon.ask_user': ServerRequestHandlerType.AskUser,\n };\n\nexport type DaemonClientPermissionHandler = PermissionHandler;\nexport type DaemonClientAskUserHandler = AskUserHandler;\n\nexport interface DaemonClientOptions {\n transport: DroidClientTransport;\n apiKey: string;\n}\n\nexport class DaemonClient {\n private readonly _engine: ProtocolEngine;\n private readonly _apiKey: string;\n private _sessionId: string | null = null;\n private _closed = false;\n\n private readonly _notificationListeners: NotificationListener[] = [];\n private _permissionHandler: DaemonClientPermissionHandler | null = null;\n private _askUserHandler: DaemonClientAskUserHandler | null = null;\n\n constructor(options: DaemonClientOptions) {\n this._apiKey = options.apiKey;\n this._engine = new ProtocolEngine({\n transport: options.transport,\n serverRequestMethodMap: DAEMON_SERVER_REQUEST_METHODS,\n });\n\n this._engine.onNotification((notification) => {\n // Remap daemon.session_notification → droid.session_notification so\n // MessageBridge/StreamStateTracker (which validate against the exec-mode\n // SessionNotificationSchema) can parse the inner notification payload.\n const normalized =\n notification['method'] === 'daemon.session_notification'\n ? { ...notification, method: 'droid.session_notification' }\n : notification;\n dispatchNotification(normalized, [...this._notificationListeners]);\n });\n\n this._engine.setPermissionHandler((params) =>\n this._dispatchPermissionRequest(params)\n );\n this._engine.setAskUserHandler((params) =>\n this._dispatchAskUserRequest(params)\n );\n }\n\n get sessionId(): string | null {\n return this._sessionId;\n }\n\n get isConnected(): boolean {\n return !this._closed && this._engine.isHealthy;\n }\n\n async initializeSession(\n params: InitializeSessionRequestParams\n ): Promise<InitializeSessionResult> {\n this._ensureNotClosed();\n\n const result = await this._rpc(\n DaemonMethod.INITIALIZE_SESSION,\n { ...params, token: this._apiKey },\n InitializeSessionResultSchema,\n SESSION_INIT_TIMEOUT\n );\n this._sessionId = result.sessionId;\n return result;\n }\n\n async loadSession(\n params: LoadSessionRequestParams\n ): Promise<LoadSessionResult> {\n this._ensureNotClosed();\n\n const result = await this._rpc(\n DaemonMethod.LOAD_SESSION,\n { ...params, token: this._apiKey },\n LoadSessionResultSchema,\n SESSION_INIT_TIMEOUT\n );\n this._sessionId = params.sessionId;\n return result;\n }\n\n async addUserMessage(\n params: Pick<AddUserMessageRequestParams, 'text'> &\n Partial<\n Pick<\n AddUserMessageRequestParams,\n 'images' | 'files' | 'messageId' | 'outputFormat'\n >\n >\n ): Promise<AddUserMessageResult> {\n return this._sessionRpc(\n DaemonMethod.ADD_USER_MESSAGE,\n params,\n AddUserMessageResultSchema\n );\n }\n\n async interruptSession(): Promise<InterruptSessionResult> {\n return this._sessionRpc(\n DaemonMethod.INTERRUPT_SESSION,\n {},\n InterruptSessionResultSchema\n );\n }\n\n async closeSession(\n params: CloseSessionRequestParams = {}\n ): Promise<CloseSessionResult> {\n return this._sessionRpc(\n DaemonMethod.CLOSE_SESSION,\n params,\n CloseSessionResultSchema\n );\n }\n\n async updateSessionSettings(\n params: Partial<UpdateSessionSettingsRequestParams>\n ): Promise<UpdateSessionSettingsResult> {\n return this._sessionRpc(\n DaemonMethod.UPDATE_SESSION_SETTINGS,\n params,\n UpdateSessionSettingsResultSchema\n );\n }\n\n async compactSession(\n params: CompactSessionRequestParams = {}\n ): Promise<CompactSessionResult> {\n return this._sessionRpc(\n DaemonMethod.COMPACT_SESSION,\n params,\n CompactSessionResultSchema,\n COMPACTION_TIMEOUT\n );\n }\n\n async forkSession(): Promise<ForkSessionResult> {\n return this._sessionRpc(\n DaemonMethod.FORK_SESSION,\n {},\n ForkSessionResultSchema\n );\n }\n\n async getContextBreakdown(): Promise<ContextBreakdownResult> {\n return this._sessionRpc(\n DaemonMethod.GET_CONTEXT_STATS,\n {},\n ContextBreakdownResultSchema\n );\n }\n\n async renameSession(\n params: RenameSessionRequestParams\n ): Promise<RenameSessionResult> {\n return this._sessionRpc(\n DaemonMethod.RENAME_SESSION,\n params,\n RenameSessionResultSchema\n );\n }\n\n async getRewindInfo(\n params: GetRewindInfoRequestParams\n ): Promise<GetRewindInfoResult> {\n return this._sessionRpc(\n DaemonMethod.GET_REWIND_INFO,\n params,\n GetRewindInfoResultSchema,\n REWIND_TIMEOUT\n );\n }\n\n async executeRewind(\n params: ExecuteRewindRequestParams\n ): Promise<ExecuteRewindResult> {\n return this._sessionRpc(\n DaemonMethod.EXECUTE_REWIND,\n params,\n ExecuteRewindResultSchema,\n REWIND_TIMEOUT\n );\n }\n\n async addMcpServer(\n params: AddMcpServerRequestParams\n ): Promise<AddMcpServerResult> {\n return this._sessionRpc(\n DaemonMethod.ADD_MCP_SERVER,\n params,\n AddMcpServerResultSchema\n );\n }\n\n async removeMcpServer(\n params: RemoveMcpServerRequestParams\n ): Promise<RemoveMcpServerResult> {\n return this._sessionRpc(\n DaemonMethod.REMOVE_MCP_SERVER,\n params,\n RemoveMcpServerResultSchema\n );\n }\n\n async toggleMcpServer(\n params: ToggleMcpServerRequestParams\n ): Promise<ToggleMcpServerResult> {\n return this._sessionRpc(\n DaemonMethod.TOGGLE_MCP_SERVER,\n params,\n ToggleMcpServerResultSchema\n );\n }\n\n async listMcpServers(): Promise<ListMcpServersResult> {\n return this._sessionRpc(\n DaemonMethod.LIST_MCP_SERVERS,\n {},\n ListMcpServersResultSchema\n );\n }\n\n async listMcpTools(): Promise<ListMcpToolsResult> {\n return this._sessionRpc(\n DaemonMethod.LIST_MCP_TOOLS,\n {},\n ListMcpToolsResultSchema\n );\n }\n\n async authenticateMcpServer(\n params: AuthenticateMcpServerRequestParams\n ): Promise<AuthenticateMcpServerResult> {\n return this._sessionRpc(\n DaemonMethod.AUTHENTICATE_MCP_SERVER,\n params,\n AuthenticateMcpServerResultSchema\n );\n }\n\n async listSkills(): Promise<ListSkillsResult> {\n return this._sessionRpc(\n DaemonMethod.LIST_SKILLS,\n {},\n ListSkillsResultSchema\n );\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n const entry: NotificationListener = { callback, filter };\n this._notificationListeners.push(entry);\n\n let unsubscribed = false;\n return () => {\n if (!unsubscribed) {\n unsubscribed = true;\n const idx = this._notificationListeners.indexOf(entry);\n if (idx !== -1) {\n this._notificationListeners.splice(idx, 1);\n }\n }\n };\n }\n\n setPermissionHandler(handler: DaemonClientPermissionHandler): void {\n this._permissionHandler = handler;\n }\n\n setAskUserHandler(handler: DaemonClientAskUserHandler): void {\n this._askUserHandler = handler;\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this._notificationListeners.length = 0;\n this._permissionHandler = null;\n this._askUserHandler = null;\n await this._engine.close();\n }\n\n private async _rpc<T extends z.ZodTypeAny>(\n method: string,\n params: Record<string, unknown>,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n const raw = await this._engine.sendRequest(method, params, timeout);\n return schema.parse(raw);\n }\n\n private async _sessionRpc<T extends z.ZodTypeAny>(\n method: string,\n params: Record<string, unknown>,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n this._ensureNotClosed();\n this._ensureSession();\n return this._rpc(\n method,\n { sessionId: this._sessionId, ...params },\n schema,\n timeout\n );\n }\n\n private _dispatchPermissionRequest(\n params: RequestPermissionRequestParams\n ): RequestPermissionHandlerResult | Promise<RequestPermissionHandlerResult> {\n const handler = this._permissionHandler;\n if (handler == null) {\n return ToolConfirmationOutcome.Cancel;\n }\n return handler(params);\n }\n\n private _dispatchAskUserRequest(\n params: AskUserRequestParams\n ): AskUserResult | Promise<AskUserResult> {\n const handler = this._askUserHandler;\n if (handler == null) {\n return { cancelled: true, answers: [] };\n }\n return handler(params);\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Daemon client has been closed. Create a new DaemonClient instance.'\n );\n }\n }\n\n private _ensureSession(): void {\n if (this._sessionId == null) {\n throw new SessionError(\n 'No active session. Call initializeSession or loadSession first.'\n );\n }\n }\n}\n","import { type ChildProcess, spawn } from 'node:child_process';\nimport * as fs from 'node:fs';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\n\nimport { ConnectionError } from '../errors.js';\n\nconst SOCKET_TIMEOUT_MS = 2_000;\nconst STARTUP_POLL_INTERVAL_MS = 250;\nconst STARTUP_TIMEOUT_MS = 30_000;\nconst MAX_STARTUP_ATTEMPTS = 3;\n\nconst FACTORY_DIR = '.factory';\n\nconst DEFAULT_PORT = 37643;\nconst DAEMON_PORT_FILE = 'daemon.port';\nconst DEFAULT_HOST = '127.0.0.1';\n\ntype DaemonStartupResult = 'ready' | 'timeout' | 'exited';\n\nlet spawnedDaemonProcess: ChildProcess | null = null;\nlet daemonTarget: { host: string; port: number } | null = null;\nlet daemonEnsureInflight: Promise<{ port: number }> | null = null;\n\nfunction getFactoryHome(): string {\n return process.env.FACTORY_HOME_OVERRIDE || os.homedir();\n}\n\nfunction getFactoryDirName(): string {\n return FACTORY_DIR;\n}\n\nfunction getFactoryDir(): string {\n return path.join(getFactoryHome(), getFactoryDirName());\n}\n\nfunction getSdkDir(): string {\n return path.join(getFactoryDir(), 'sdk');\n}\n\nfunction getDefaultDaemonPort(): number {\n return DEFAULT_PORT;\n}\n\nfunction resolveExecPath(): string {\n const override = process.env.FACTORY_DROID_BINARY?.trim();\n if (override && override.length > 0) {\n if (override.includes('/') || override.includes('\\\\')) {\n // Absolute or relative path — validate it exists before using\n try {\n fs.accessSync(override, fs.constants.X_OK);\n return override;\n } catch {\n // Fall through to default\n }\n } else {\n // Bare command name — return as-is and let spawn() resolve via PATH\n return override;\n }\n }\n return 'droid';\n}\n\nasync function allocatePort(): Promise<number> {\n return new Promise((resolve, reject) => {\n const server = net.createServer();\n server.once('error', reject);\n server.listen(0, DEFAULT_HOST, () => {\n const address = server.address();\n if (!address || typeof address === 'string') {\n server.close();\n reject(new Error('Failed to determine dynamic port'));\n return;\n }\n const port = address.port;\n server.close((err) => {\n if (err) reject(err);\n else resolve(port);\n });\n });\n });\n}\n\nasync function isDaemonReachable(port: number): Promise<boolean> {\n return new Promise((resolve) => {\n const socket = net.createConnection({ host: DEFAULT_HOST, port });\n const cleanup = () => {\n socket.removeAllListeners();\n socket.destroy();\n };\n const fail = () => {\n cleanup();\n resolve(false);\n };\n socket.setTimeout(SOCKET_TIMEOUT_MS, fail);\n socket.once('error', fail);\n socket.once('connect', () => {\n cleanup();\n resolve(true);\n });\n });\n}\n\nasync function waitForDaemonReady(\n child: ChildProcess,\n port: number,\n timeoutMs: number = STARTUP_TIMEOUT_MS\n): Promise<DaemonStartupResult> {\n return new Promise((resolve) => {\n let settled = false;\n let exited = false;\n const deadline = Date.now() + timeoutMs;\n\n const settle = (result: DaemonStartupResult) => {\n if (settled) return;\n settled = true;\n child.removeListener('exit', onExit);\n child.removeListener('error', onExit);\n resolve(result);\n };\n\n const onExit = () => {\n exited = true;\n settle('exited');\n };\n\n child.once('exit', onExit);\n child.once('error', onExit);\n\n const poll = async () => {\n while (!exited && !settled) {\n if (await isDaemonReachable(port)) {\n settle('ready');\n return;\n }\n if (Date.now() >= deadline) {\n settle('timeout');\n return;\n }\n await new Promise<void>((r) => setTimeout(r, STARTUP_POLL_INTERVAL_MS));\n }\n };\n\n void poll();\n });\n}\n\nfunction readPortFile(): number | null {\n try {\n const portPath = path.join(getSdkDir(), DAEMON_PORT_FILE);\n const content = fs.readFileSync(portPath, 'utf-8').trim();\n const port = parseInt(content, 10);\n if (Number.isFinite(port) && port > 0 && port < 65536) {\n return port;\n }\n return null;\n } catch {\n return null;\n }\n}\n\nfunction writePortFile(port: number): void {\n try {\n const sdkDir = getSdkDir();\n fs.mkdirSync(sdkDir, { recursive: true });\n fs.writeFileSync(path.join(sdkDir, DAEMON_PORT_FILE), String(port), {\n mode: 0o600,\n });\n } catch {\n // Non-fatal\n }\n}\n\nfunction cacheTarget(port: number): { port: number } {\n daemonTarget = { host: DEFAULT_HOST, port };\n return { port };\n}\n\nfunction clearSpawnedDaemonProcess(child: ChildProcess): void {\n if (spawnedDaemonProcess === child) {\n spawnedDaemonProcess = null;\n }\n}\n\nasync function spawnDaemon(\n execPath: string,\n port: number\n): Promise<DaemonStartupResult> {\n const args = ['daemon', '--host', DEFAULT_HOST, '--port', String(port)];\n\n let stderrFd: number | undefined;\n try {\n const logsDir = path.join(getSdkDir(), 'logs');\n fs.mkdirSync(logsDir, { recursive: true });\n stderrFd = fs.openSync(path.join(logsDir, 'daemon-stderr.log'), 'a');\n } catch {\n // Non-fatal\n }\n\n const child = spawn(execPath, args, {\n detached: true,\n stdio: ['ignore', 'ignore', stderrFd ?? 'ignore'],\n cwd: os.homedir(),\n env: { ...process.env },\n });\n\n if (stderrFd !== undefined) {\n try {\n fs.closeSync(stderrFd);\n } catch {\n // Ignore\n }\n }\n\n spawnedDaemonProcess = child;\n\n // Allow the Node process to exit without waiting for the daemon.\n // The daemon is a long-lived server that should outlive the SDK.\n child.unref();\n\n child.once('exit', () => {\n clearSpawnedDaemonProcess(child);\n });\n\n child.on('error', () => {\n clearSpawnedDaemonProcess(child);\n });\n\n const result = await waitForDaemonReady(child, port);\n\n if (result !== 'ready') {\n clearSpawnedDaemonProcess(child);\n if (result === 'timeout') {\n try {\n child.kill('SIGTERM');\n } catch {\n // Best effort\n }\n }\n }\n\n return result;\n}\n\n/**\n * Core implementation — called at most once per inflight window.\n *\n * Discovery order:\n * 1. Well-known port (37643)\n * 2. Port file (~/.factory/sdk/daemon.port)\n * 3. Spawn new daemon (prefer well-known port, fallback to random)\n */\nasync function _ensureLocalDaemon(): Promise<{ port: number }> {\n const execPath = resolveExecPath();\n\n // 1. Probe well-known port\n const wellKnownPort = getDefaultDaemonPort();\n if (await isDaemonReachable(wellKnownPort)) {\n return cacheTarget(wellKnownPort);\n }\n\n // 2. Probe port file\n const portFilePort = readPortFile();\n if (portFilePort !== null && portFilePort !== wellKnownPort) {\n if (await isDaemonReachable(portFilePort)) {\n return cacheTarget(portFilePort);\n }\n }\n\n // 3. Spawn — first attempt on the well-known port\n const firstResult = await spawnDaemon(execPath, wellKnownPort);\n if (firstResult === 'ready') {\n writePortFile(wellKnownPort);\n return cacheTarget(wellKnownPort);\n }\n\n // Retry on random ports\n for (let attempt = 2; attempt <= MAX_STARTUP_ATTEMPTS; attempt++) {\n const port = await allocatePort();\n const result = await spawnDaemon(execPath, port);\n if (result === 'ready') {\n writePortFile(port);\n return cacheTarget(port);\n }\n }\n\n throw new ConnectionError(\n `Failed to start local droid daemon after ${MAX_STARTUP_ATTEMPTS} attempts. ` +\n 'Ensure the `droid` CLI is installed and `droid auth login` has been run.'\n );\n}\n\n/**\n * Ensure a local `droid daemon` process is running and reachable.\n *\n * Discovery order:\n * 1. Cached target from a previous call in this process\n * 2. Well-known port (37643)\n * 3. Port file (`~/.factory/sdk/daemon.port`)\n * 4. Spawn new daemon (prefer well-known port, fallback to random)\n *\n * Concurrent calls are deduplicated — all callers join the same\n * spawn attempt.\n */\nexport async function ensureLocalDaemon(): Promise<{ port: number }> {\n // Fast path: cached target still reachable\n if (daemonTarget) {\n if (await isDaemonReachable(daemonTarget.port)) {\n return { port: daemonTarget.port };\n }\n daemonTarget = null;\n }\n\n // Deduplicate concurrent calls\n if (!daemonEnsureInflight) {\n daemonEnsureInflight = _ensureLocalDaemon().finally(() => {\n daemonEnsureInflight = null;\n });\n }\n\n return daemonEnsureInflight;\n}\n\n/** Resets module-level state between tests. Not intended for production use. */\nexport function _resetDaemonStateForTesting(): void {\n daemonEnsureInflight = null;\n daemonTarget = null;\n spawnedDaemonProcess = null;\n}\n","import { ConnectionError } from '../errors.js';\nimport { streamFromClient } from '../helpers.js';\nimport type { MessageBridge, MessageOptions } from '../helpers.js';\nimport type { NotificationCallback, NotificationFilter } from '../protocol.js';\nimport type {\n AddMcpServerRequestParams,\n AddMcpServerResult,\n AuthenticateMcpServerRequestParams,\n AuthenticateMcpServerResult,\n CompactSessionRequestParams,\n CompactSessionResult,\n ExecuteRewindRequestParams,\n ExecuteRewindResult,\n ContextBreakdownResult,\n ForkSessionResult,\n GetRewindInfoRequestParams,\n GetRewindInfoResult,\n ListMcpServersResult,\n ListMcpToolsResult,\n ListSkillsResult,\n RemoveMcpServerRequestParams,\n RemoveMcpServerResult,\n RenameSessionRequestParams,\n RenameSessionResult,\n ToggleMcpServerRequestParams,\n ToggleMcpServerResult,\n UpdateSessionSettingsRequestParams,\n UpdateSessionSettingsResult,\n} from '../schemas/client.js';\nimport { DroidInteractionMode } from '../schemas/enums.js';\nimport type { DroidStreamEvent, DroidStreamMessage } from '../stream.js';\nimport type { DaemonClient } from './client.js';\nimport type { SendOptions } from './types.js';\n\nexport class DaemonSession {\n private _client: DaemonClient;\n private _sessionId: string;\n private _closed = false;\n private readonly _activeBridges = new Set<MessageBridge>();\n private readonly _cleanupCallbacks: Array<() => Promise<void> | void> = [];\n\n /** @internal */\n constructor(client: DaemonClient, sessionId: string) {\n this._client = client;\n this._sessionId = sessionId;\n }\n\n /** @internal */\n addCleanup(cleanup: () => Promise<void> | void): void {\n this._cleanupCallbacks.push(cleanup);\n }\n\n get sessionId(): string {\n return this._sessionId;\n }\n\n stream(\n prompt: string,\n options?: MessageOptions & { includePartialMessages?: false }\n ): AsyncGenerator<DroidStreamMessage, void, undefined>;\n stream(\n prompt: string,\n options: MessageOptions & { includePartialMessages: true }\n ): AsyncGenerator<DroidStreamEvent, void, undefined>;\n async *stream(\n prompt: string,\n options?: MessageOptions\n ): AsyncGenerator<DroidStreamEvent, void, undefined> {\n this._ensureNotClosed();\n yield* streamFromClient(\n this._client,\n this._sessionId,\n this._activeBridges,\n prompt,\n options\n );\n }\n\n async send(prompt: string, options?: SendOptions): Promise<void> {\n this._ensureNotClosed();\n\n await this._client.addUserMessage({\n text: prompt,\n images: options?.images,\n files: options?.files,\n outputFormat: options?.outputFormat,\n });\n }\n\n async interrupt(): Promise<void> {\n this._ensureNotClosed();\n await this._client.interruptSession();\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n for (const bridge of this._activeBridges) {\n bridge.signalDone();\n }\n\n try {\n await this._client.closeSession({ reason: 'other' }).catch(() => {});\n } finally {\n await this._client.close();\n for (const cleanup of this._cleanupCallbacks) {\n try {\n await cleanup();\n } catch {\n // Best-effort cleanup\n }\n }\n this._cleanupCallbacks.length = 0;\n }\n }\n\n async updateSettings(\n params: Partial<UpdateSessionSettingsRequestParams>\n ): Promise<UpdateSessionSettingsResult> {\n this._ensureNotClosed();\n return this._client.updateSessionSettings(params);\n }\n\n async enterSpecMode(\n params: Pick<\n UpdateSessionSettingsRequestParams,\n 'specModeModelId' | 'specModeReasoningEffort'\n > = {}\n ): Promise<UpdateSessionSettingsResult> {\n this._ensureNotClosed();\n return this._client.updateSessionSettings({\n interactionMode: DroidInteractionMode.Spec,\n ...params,\n });\n }\n\n async compactSession(\n params?: CompactSessionRequestParams\n ): Promise<CompactSessionResult> {\n this._ensureNotClosed();\n return this._client.compactSession(params ?? {});\n }\n\n async forkSession(): Promise<ForkSessionResult> {\n this._ensureNotClosed();\n return this._client.forkSession();\n }\n\n async getContextBreakdown(): Promise<ContextBreakdownResult> {\n this._ensureNotClosed();\n return this._client.getContextBreakdown();\n }\n\n async renameSession(\n params: RenameSessionRequestParams\n ): Promise<RenameSessionResult> {\n this._ensureNotClosed();\n return this._client.renameSession(params);\n }\n\n async getRewindInfo(\n params: GetRewindInfoRequestParams\n ): Promise<GetRewindInfoResult> {\n this._ensureNotClosed();\n return this._client.getRewindInfo(params);\n }\n\n async executeRewind(\n params: ExecuteRewindRequestParams\n ): Promise<ExecuteRewindResult> {\n this._ensureNotClosed();\n return this._client.executeRewind(params);\n }\n\n async addMcpServer(\n params: AddMcpServerRequestParams\n ): Promise<AddMcpServerResult> {\n this._ensureNotClosed();\n return this._client.addMcpServer(params);\n }\n\n async removeMcpServer(\n params: RemoveMcpServerRequestParams\n ): Promise<RemoveMcpServerResult> {\n this._ensureNotClosed();\n return this._client.removeMcpServer(params);\n }\n\n async toggleMcpServer(\n params: ToggleMcpServerRequestParams\n ): Promise<ToggleMcpServerResult> {\n this._ensureNotClosed();\n return this._client.toggleMcpServer(params);\n }\n\n async listMcpServers(): Promise<ListMcpServersResult> {\n this._ensureNotClosed();\n return this._client.listMcpServers();\n }\n\n async listMcpTools(): Promise<ListMcpToolsResult> {\n this._ensureNotClosed();\n return this._client.listMcpTools();\n }\n\n async authenticateMcpServer(\n params: AuthenticateMcpServerRequestParams\n ): Promise<AuthenticateMcpServerResult> {\n this._ensureNotClosed();\n return this._client.authenticateMcpServer(params);\n }\n\n async listSkills(): Promise<ListSkillsResult> {\n this._ensureNotClosed();\n return this._client.listSkills();\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n return this._client.onNotification(callback, filter);\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Daemon session has been closed. Create a new session to continue.'\n );\n }\n }\n}\n","import WebSocket from 'ws';\n\nimport { ConnectionError } from '../errors.js';\nimport type {\n DroidClientTransport,\n ErrorCallback,\n MessageCallback,\n} from '../types.js';\nimport { isRecord } from '../utils.js';\nimport { DEFAULT_WS_CONFIG } from './types.js';\nimport type { WebSocketTransportOptions } from './types.js';\n\nexport class WebSocketTransport implements DroidClientTransport {\n private readonly maxConnectRetries: number;\n private readonly initialRetryDelayMs: number;\n private readonly maxRetryDelayMs: number;\n private readonly connectionTimeoutMs: number;\n\n private ws: WebSocket | null = null;\n private messageHandler: MessageCallback | null = null;\n private errorHandler: ErrorCallback | null = null;\n private _isConnected = false;\n private isClosing = false;\n\n constructor(options: WebSocketTransportOptions = {}) {\n this.maxConnectRetries =\n options.maxConnectRetries ?? DEFAULT_WS_CONFIG.maxConnectRetries;\n this.initialRetryDelayMs =\n options.initialRetryDelayMs ?? DEFAULT_WS_CONFIG.initialRetryDelayMs;\n this.maxRetryDelayMs =\n options.maxRetryDelayMs ?? DEFAULT_WS_CONFIG.maxRetryDelayMs;\n this.connectionTimeoutMs =\n options.connectionTimeoutMs ?? DEFAULT_WS_CONFIG.connectionTimeoutMs;\n }\n\n get isConnected(): boolean {\n return this._isConnected;\n }\n\n async connect(url?: string): Promise<void> {\n if (!url) {\n throw new ConnectionError('WebSocket URL is required');\n }\n\n if (this._isConnected) {\n throw new ConnectionError('Transport already connected');\n }\n\n this.isClosing = false;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= this.maxConnectRetries; attempt++) {\n try {\n await this._doConnect(url);\n return;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt < this.maxConnectRetries) {\n const delay = Math.min(\n this.initialRetryDelayMs * 2 ** attempt,\n this.maxRetryDelayMs\n );\n await new Promise<void>((resolve) => setTimeout(resolve, delay));\n }\n }\n }\n\n throw lastError;\n }\n\n send(message: Record<string, unknown>): void {\n if (!this._isConnected || !this.ws) {\n throw new ConnectionError('WebSocket transport not connected');\n }\n\n try {\n this.ws.send(JSON.stringify(message));\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n throw new ConnectionError(`Failed to send WebSocket message: ${msg}`);\n }\n }\n\n onMessage(callback: MessageCallback): void {\n this.messageHandler = callback;\n }\n\n onError(callback: ErrorCallback): void {\n this.errorHandler = callback;\n }\n\n async close(): Promise<void> {\n if (this.isClosing) {\n return;\n }\n\n this.isClosing = true;\n this._isConnected = false;\n\n const ws = this.ws;\n this.ws = null;\n\n if (ws && ws.readyState === WebSocket.OPEN) {\n await new Promise<void>((resolve) => {\n ws.once('close', () => resolve());\n ws.close(1000, 'Client disconnect');\n\n // Safety timeout — don't hang forever waiting for close\n setTimeout(() => resolve(), 5_000);\n });\n }\n\n this.isClosing = false;\n }\n\n private async _doConnect(url: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n let settled = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const cleanup = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n const ws = new WebSocket(url);\n\n const handleOpen = () => {\n if (settled) return;\n settled = true;\n cleanup();\n\n this.ws = ws;\n this._isConnected = true;\n this._setupOngoingHandlers(ws);\n resolve();\n };\n\n const handleError = (error: Error) => {\n if (settled) return;\n settled = true;\n cleanup();\n\n try {\n ws.close();\n } catch {\n // Best-effort cleanup\n }\n\n reject(\n new ConnectionError(`WebSocket connection failed: ${error.message}`)\n );\n };\n\n const handleClose = (code: number, reason: Buffer) => {\n if (settled) return;\n settled = true;\n cleanup();\n\n reject(\n new ConnectionError(\n `WebSocket closed before opening (code: ${code}, reason: ${reason.toString()})`\n )\n );\n };\n\n ws.once('open', handleOpen);\n ws.once('error', handleError);\n ws.once('close', handleClose);\n\n timeoutId = setTimeout(() => {\n if (settled) return;\n settled = true;\n\n try {\n ws.close();\n } catch {\n // Best-effort cleanup\n }\n\n reject(\n new ConnectionError(\n `WebSocket connection timeout after ${this.connectionTimeoutMs}ms: ${url}`\n )\n );\n }, this.connectionTimeoutMs);\n });\n }\n\n private _setupOngoingHandlers(ws: WebSocket): void {\n ws.on('message', (data: WebSocket.Data) => {\n if (!this.messageHandler) return;\n\n const text = typeof data === 'string' ? data : data.toString();\n try {\n const parsed: unknown = JSON.parse(text);\n if (isRecord(parsed)) {\n this.messageHandler(parsed);\n }\n } catch {\n // Malformed JSON — skip silently\n }\n });\n\n ws.on('error', (error: Error) => {\n if (!this.isClosing && this.errorHandler) {\n this.errorHandler(\n new ConnectionError(`WebSocket error: ${error.message}`)\n );\n }\n });\n\n ws.on('close', (code: number, reason: Buffer) => {\n this._isConnected = false;\n this.ws = null;\n\n if (!this.isClosing && this.errorHandler) {\n this.errorHandler(\n new ConnectionError(\n `WebSocket closed (code: ${code}, reason: ${reason.toString()})`\n )\n );\n }\n });\n }\n}\n","import type {\n ClientAskUserHandler,\n ClientPermissionHandler,\n} from '../client.js';\nimport type { DroidMcpServerConfig } from '../mcp.js';\nimport type {\n OutputFormat,\n SessionSource,\n SessionTag,\n} from '../schemas/client.js';\nimport type {\n AutonomyLevel,\n DroidInteractionMode,\n ReasoningEffort,\n} from '../schemas/enums.js';\nimport type { Base64ImageSource, DocumentSource } from '../schemas/messages.js';\nimport type { ToolSelectionOverrides } from '../schemas/shared.js';\n\nexport enum MachineType {\n Local = 'local',\n Computer = 'computer',\n}\n\nexport type SDKMachineConfig =\n | { type: MachineType.Local }\n | { type: MachineType.Computer; computerId: string };\n\nexport interface ConnectDaemonOptions {\n /** Factory API key for authentication. */\n apiKey: string;\n\n /** Machine to connect to. Defaults to local daemon if omitted. */\n machine?: SDKMachineConfig;\n\n /** Direct WebSocket URL. Overrides machine-based URL resolution. */\n url?: string;\n\n /** Connection retry budget for the connect+authenticate cycle. */\n maxRetries?: number;\n\n /** Local daemon WebSocket port. Default: 37643. */\n daemonPort?: number;\n\n /** Factory relay base URL for computer connections. Default: wss://relay.factory.ai */\n relayBaseUrl?: string;\n\n /** Factory API base URL. Default: https://api.factory.ai */\n baseUrl?: string;\n}\n\nexport interface DaemonSessionOptions extends ToolSelectionOverrides {\n cwd?: string;\n modelId?: string;\n autonomyLevel?: AutonomyLevel;\n interactionMode?: DroidInteractionMode;\n reasoningEffort?: ReasoningEffort;\n specModeModelId?: string;\n specModeReasoningEffort?: ReasoningEffort;\n mcpServers?: DroidMcpServerConfig[];\n tags?: SessionTag[];\n\n /** Permission handler for tool confirmations. */\n permissionHandler?: ClientPermissionHandler;\n\n /** Handler for ask-user requests from the agent. */\n askUserHandler?: ClientAskUserHandler;\n\n /** Where this session was created from. Used for attribution. */\n sessionSource?: SessionSource;\n}\n\nexport interface DaemonResumeOptions {\n /** Permission handler for tool confirmations. */\n permissionHandler?: ClientPermissionHandler;\n\n /** Handler for ask-user requests from the agent. */\n askUserHandler?: ClientAskUserHandler;\n\n /** MCP servers to attach to the resumed session. */\n mcpServers?: DroidMcpServerConfig[];\n}\n\nexport interface SendOptions {\n /** Base64-encoded image attachments. */\n images?: Base64ImageSource[];\n\n /** Document/file attachments. */\n files?: DocumentSource[];\n\n /** Structured output request. */\n outputFormat?: OutputFormat;\n}\n\nexport interface WebSocketTransportOptions {\n /** Max connection retries. Default: 5. */\n maxConnectRetries?: number;\n\n /** Initial retry delay in ms. Default: 500. */\n initialRetryDelayMs?: number;\n\n /** Max retry delay in ms. Default: 5000. */\n maxRetryDelayMs?: number;\n\n /** Connection timeout in ms. Default: 5000. */\n connectionTimeoutMs?: number;\n}\n\n/** Default daemon WebSocket port. */\nexport const DEFAULT_DAEMON_PORT = 37643;\n\n/** Default Factory relay base URL. */\nexport const DEFAULT_RELAY_BASE_URL = 'wss://relay.factory.ai';\n\n/** Default WebSocket connection config. */\nexport const DEFAULT_WS_CONFIG: Required<WebSocketTransportOptions> = {\n maxConnectRetries: 5,\n initialRetryDelayMs: 500,\n maxRetryDelayMs: 5000,\n connectionTimeoutMs: 5000,\n};\n\n/** WebSocket config overrides for computer connections (longer timeouts). */\nexport const COMPUTER_WS_CONFIG: Partial<WebSocketTransportOptions> = {\n connectionTimeoutMs: 45_000,\n maxConnectRetries: 10,\n initialRetryDelayMs: 2_000,\n maxRetryDelayMs: 10_000,\n};\n","import { ConnectionError } from '../errors.js';\nimport { buildInitParams } from '../helpers.js';\nimport { startSdkMcpServers } from '../mcp.js';\nimport {\n FACTORY_PROTOCOL_VERSION,\n JSONRPC_VERSION,\n LEGACY_FACTORY_API_VERSION,\n} from '../schemas/constants.js';\nimport { JsonRpcMessageType } from '../schemas/enums.js';\nimport type { JsonRpcRequest } from '../schemas/shared.js';\nimport type {\n DroidClientTransport,\n ErrorCallback,\n MessageCallback,\n} from '../types.js';\nimport { isRecord } from '../utils.js';\nimport { DaemonClient } from './client.js';\nimport { ensureLocalDaemon } from './local.js';\nimport { DaemonSession } from './session.js';\nimport { WebSocketTransport } from './transport.js';\nimport {\n COMPUTER_WS_CONFIG,\n DEFAULT_DAEMON_PORT,\n DEFAULT_RELAY_BASE_URL,\n DEFAULT_WS_CONFIG,\n MachineType,\n} from './types.js';\nimport type {\n ConnectDaemonOptions,\n DaemonResumeOptions,\n DaemonSessionOptions,\n SDKMachineConfig,\n} from './types.js';\n\nconst DAEMON_AUTHENTICATE_METHOD = 'daemon.authenticate';\nconst DAEMON_AUTHENTICATE_TIMEOUT = 30_000;\nconst SDK_CALLER = 'droid-sdk';\n\ninterface ResolvedConnectOptions extends ConnectDaemonOptions {\n _localPort?: number;\n}\n\nexport function resolveWebSocketUrl(\n options: ConnectDaemonOptions & { _localPort?: number }\n): string {\n if (options.url) {\n return options.url;\n }\n\n const machine = options.machine;\n\n if (!machine || machine.type === MachineType.Local) {\n const port =\n options._localPort ?? options.daemonPort ?? DEFAULT_DAEMON_PORT;\n return `ws://127.0.0.1:${port}`;\n }\n\n if (machine.type === MachineType.Computer) {\n const relayBase = options.relayBaseUrl ?? DEFAULT_RELAY_BASE_URL;\n return `${relayBase}/v0/computer/${machine.computerId}/client`;\n }\n\n // Exhaustive check — should never be reached\n const _exhaustive: never = machine;\n throw new ConnectionError(`Unsupported machine type: ${String(_exhaustive)}`);\n}\n\nfunction getWebSocketConfig(\n machine?: SDKMachineConfig\n): Required<import('./types.js').WebSocketTransportOptions> {\n if (machine?.type === MachineType.Computer) {\n return { ...DEFAULT_WS_CONFIG, ...COMPUTER_WS_CONFIG };\n }\n if (!machine || machine.type === MachineType.Local) {\n return { ...DEFAULT_WS_CONFIG, connectionTimeoutMs: 10_000 };\n }\n return { ...DEFAULT_WS_CONFIG };\n}\n\ninterface MultiplexedView {\n messageCallback: MessageCallback | null;\n errorCallback: ErrorCallback | null;\n pendingRequestIds: Set<string>;\n sessionId: string | null;\n}\n\n/**\n * Multiplexes a single WebSocketTransport across multiple DroidClient\n * instances. Each client gets its own \"view\" of the transport:\n * - Responses are routed to the view that sent the matching request\n * - Notifications are routed by `params.sessionId` to the matching view\n * - Errors are broadcast to all registered views\n * - send() writes to the shared transport and tracks request IDs\n * - close() is a no-op (only DaemonConnection closes the real transport)\n */\nclass SharedTransportMultiplexer {\n private readonly _views = new Set<MultiplexedView>();\n\n constructor(private readonly _inner: WebSocketTransport) {\n this._inner.onMessage((message) => {\n this._routeMessage(message);\n });\n\n this._inner.onError((error) => {\n for (const view of this._views) {\n if (view.errorCallback) {\n try {\n view.errorCallback(error);\n } catch {\n // Don't let one handler crash others\n }\n }\n }\n });\n }\n\n createView(): DroidClientTransport {\n const inner = this._inner;\n const viewState: MultiplexedView = {\n messageCallback: null,\n errorCallback: null,\n pendingRequestIds: new Set(),\n sessionId: null,\n };\n this._views.add(viewState);\n\n const view: DroidClientTransport = {\n send: (message: Record<string, unknown>) => {\n // Track request IDs for response routing\n if (\n message['type'] === 'request' &&\n typeof message['id'] === 'string'\n ) {\n viewState.pendingRequestIds.add(message['id']);\n }\n // Track sessionId from init/load responses\n inner.send(message);\n },\n\n onMessage: (callback: MessageCallback) => {\n viewState.messageCallback = callback;\n },\n\n onError: (callback: ErrorCallback) => {\n viewState.errorCallback = callback;\n },\n\n close: async () => {\n viewState.messageCallback = null;\n viewState.errorCallback = null;\n viewState.pendingRequestIds.clear();\n this._views.delete(viewState);\n },\n\n get isConnected(): boolean {\n return inner.isConnected;\n },\n };\n\n return view;\n }\n\n private _routeMessage(message: Record<string, unknown>): void {\n const messageType = message['type'];\n const messageId = message['id'];\n\n // Responses: route to the view that sent the matching request\n if (messageType === 'response' && typeof messageId === 'string') {\n for (const view of this._views) {\n if (view.pendingRequestIds.has(messageId)) {\n view.pendingRequestIds.delete(messageId);\n\n // Learn sessionId from init/load response results\n const result = message['result'];\n if (isRecord(result) && typeof result['sessionId'] === 'string') {\n view.sessionId = result['sessionId'];\n }\n\n if (view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n }\n return;\n }\n }\n // No matching view — drop silently\n return;\n }\n\n // Notifications: route by params.sessionId\n if (messageType === 'notification') {\n const params = message['params'];\n const sessionId =\n isRecord(params) && typeof params['sessionId'] === 'string'\n ? params['sessionId']\n : null;\n\n if (sessionId) {\n for (const view of this._views) {\n if (view.sessionId === sessionId && view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n return;\n }\n }\n }\n\n // No sessionId or no matching view — broadcast to all\n for (const view of this._views) {\n if (view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n }\n }\n return;\n }\n\n // Server requests (daemon.request_permission, daemon.ask_user):\n // route by params.sessionId\n if (messageType === 'request') {\n const params = message['params'];\n const sessionId =\n isRecord(params) && typeof params['sessionId'] === 'string'\n ? params['sessionId']\n : null;\n\n if (sessionId) {\n for (const view of this._views) {\n if (view.sessionId === sessionId && view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n return;\n }\n }\n }\n\n // Broadcast if no matching session (shouldn't happen in practice)\n for (const view of this._views) {\n if (view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n }\n }\n }\n }\n}\n\n/**\n * Authenticate with the daemon over a freshly connected transport.\n *\n * This runs before any DroidClient/ProtocolEngine is attached, so we\n * do the JSON-RPC handshake manually. We temporarily install a message\n * handler, send the authenticate request, wait for the matching\n * response, then clear the handler so the ProtocolEngine can take over.\n */\nasync function authenticate(\n transport: WebSocketTransport,\n options: ConnectDaemonOptions\n): Promise<void> {\n const requestId = crypto.randomUUID();\n\n const envelope: JsonRpcRequest = {\n jsonrpc: JSONRPC_VERSION,\n factoryApiVersion: LEGACY_FACTORY_API_VERSION,\n factoryProtocolVersion: FACTORY_PROTOCOL_VERSION,\n type: JsonRpcMessageType.Request,\n id: requestId,\n method: DAEMON_AUTHENTICATE_METHOD,\n params: {\n apiKey: options.apiKey,\n caller: SDK_CALLER,\n },\n };\n\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n // Clear handler so ProtocolEngine can install its own\n transport.onMessage(() => {});\n reject(\n new ConnectionError(\n `Daemon authentication timed out after ${DAEMON_AUTHENTICATE_TIMEOUT}ms`\n )\n );\n }, DAEMON_AUTHENTICATE_TIMEOUT);\n\n transport.onMessage((message: Record<string, unknown>) => {\n // Only handle the auth response\n if (message['id'] !== requestId) {\n return;\n }\n\n clearTimeout(timer);\n // Clear handler so ProtocolEngine can install its own\n transport.onMessage(() => {});\n\n if (message['error']) {\n const error = message['error'];\n const errorMessage =\n error && typeof error === 'object' && 'message' in error\n ? String(error.message)\n : 'unknown error';\n reject(\n new ConnectionError(`Daemon authentication failed: ${errorMessage}`)\n );\n return;\n }\n\n resolve();\n });\n\n transport.send(envelope);\n });\n}\n\nexport class DaemonConnection {\n private readonly _transport: WebSocketTransport;\n private readonly _multiplexer: SharedTransportMultiplexer;\n private readonly _apiKey: string;\n private _closed = false;\n\n /** @internal */\n constructor(transport: WebSocketTransport, apiKey: string) {\n this._transport = transport;\n this._multiplexer = new SharedTransportMultiplexer(transport);\n this._apiKey = apiKey;\n }\n\n async createSession(\n options: DaemonSessionOptions = {}\n ): Promise<DaemonSession> {\n this._ensureNotClosed();\n\n const view = this._multiplexer.createView();\n const client = new DaemonClient({\n transport: view,\n apiKey: this._apiKey,\n });\n if (options.permissionHandler) {\n client.setPermissionHandler(options.permissionHandler);\n }\n if (options.askUserHandler) {\n client.setAskUserHandler(options.askUserHandler);\n }\n\n let sdkMcpServers:\n | Awaited<ReturnType<typeof startSdkMcpServers>>\n | undefined;\n\n try {\n sdkMcpServers = await startSdkMcpServers(options.mcpServers);\n const initParams = buildInitParams({\n ...options,\n mcpServers: sdkMcpServers.mcpServers,\n });\n\n const initResult = await client.initializeSession(initParams);\n const session = new DaemonSession(client, initResult.sessionId);\n if (sdkMcpServers) {\n session.addCleanup(sdkMcpServers.cleanup);\n }\n return session;\n } catch (error) {\n await sdkMcpServers?.cleanup();\n await client.close();\n throw error;\n }\n }\n\n async resumeSession(\n sessionId: string,\n options: DaemonResumeOptions = {}\n ): Promise<DaemonSession> {\n this._ensureNotClosed();\n\n const view = this._multiplexer.createView();\n const client = new DaemonClient({\n transport: view,\n apiKey: this._apiKey,\n });\n if (options.permissionHandler) {\n client.setPermissionHandler(options.permissionHandler);\n }\n if (options.askUserHandler) {\n client.setAskUserHandler(options.askUserHandler);\n }\n\n let sdkMcpServers:\n | Awaited<ReturnType<typeof startSdkMcpServers>>\n | undefined;\n\n try {\n sdkMcpServers = await startSdkMcpServers(options.mcpServers);\n await client.loadSession({\n sessionId,\n mcpServers: sdkMcpServers.mcpServers,\n });\n const session = new DaemonSession(client, sessionId);\n if (sdkMcpServers) {\n session.addCleanup(sdkMcpServers.cleanup);\n }\n return session;\n } catch (error) {\n await sdkMcpServers?.cleanup();\n await client.close();\n throw error;\n }\n }\n\n async interruptSession(sessionId: string): Promise<void> {\n this._ensureNotClosed();\n\n const view = this._multiplexer.createView();\n const client = new DaemonClient({\n transport: view,\n apiKey: this._apiKey,\n });\n try {\n await client.loadSession({ sessionId });\n await client.interruptSession();\n } finally {\n await client.close();\n }\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n await this._transport.close();\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Daemon connection has been closed. Call connectDaemon() to create a new connection.'\n );\n }\n }\n}\n\nexport async function connectDaemon(\n options: ConnectDaemonOptions\n): Promise<DaemonConnection> {\n const isLocal =\n !options.url &&\n (!options.machine || options.machine.type === MachineType.Local);\n\n // For local connections, spawn/discover the daemon\n let resolvedOptions: ResolvedConnectOptions = options;\n if (isLocal) {\n const { port } = await ensureLocalDaemon();\n resolvedOptions = { ...options, _localPort: port };\n }\n\n const url = resolveWebSocketUrl(resolvedOptions);\n const wsConfig = getWebSocketConfig(resolvedOptions.machine);\n\n const transport = new WebSocketTransport(wsConfig);\n\n const apiKey = resolvedOptions.apiKey;\n\n const maxRetries = resolvedOptions.maxRetries ?? 0;\n\n try {\n // Connect with optional retry budget\n if (maxRetries > 0) {\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n await transport.connect(url);\n await authenticate(transport, resolvedOptions);\n return new DaemonConnection(transport, apiKey);\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n try {\n await transport.close();\n } catch {\n // Best-effort cleanup between retries\n }\n if (attempt < maxRetries) {\n await new Promise<void>((resolve) => setTimeout(resolve, 2_000));\n }\n }\n }\n\n throw lastError;\n }\n\n // Single attempt\n await transport.connect(url);\n await authenticate(transport, resolvedOptions);\n return new DaemonConnection(transport, apiKey);\n } catch (error) {\n try {\n await transport.close();\n } catch {\n // Best-effort cleanup\n }\n throw error;\n }\n}\n"],"mappings":";;;;;;;AACO,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,mBAAgB;AAChB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,yBAAsB;AACtB,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,0BAAuB;AACvB,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,uBAAoB;AA3BV,SAAAA;AAAA,GAAA;AA+BL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,0BAAuB;AACvB,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,cAAW;AAHD,SAAAA;AAAA,GAAA;AAML,IAAK,0BAAL,kBAAKC,6BAAL;AACL,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,0BAAuB;AACvB,EAAAA,yBAAA,oBAAiB;AACjB,EAAAA,yBAAA,WAAQ;AACR,EAAAA,yBAAA,iCAA8B;AAC9B,EAAAA,yBAAA,yBAAsB;AACtB,EAAAA,yBAAA,sBAAmB;AACnB,EAAAA,yBAAA,2BAAwB;AACxB,EAAAA,yBAAA,wBAAqB;AACrB,EAAAA,yBAAA,0BAAuB;AACvB,EAAAA,yBAAA,6BAA0B;AAC1B,EAAAA,yBAAA,yBAAsB;AACtB,EAAAA,yBAAA,4BAAyB;AACzB,EAAAA,yBAAA,eAAY;AACZ,EAAAA,yBAAA,iCAA8B;AAC9B,EAAAA,yBAAA,2BAAwB;AACxB,EAAAA,yBAAA,8BAA2B;AAC3B,EAAAA,yBAAA,4BAAyB;AACzB,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,4BAAyB;AACzB,EAAAA,yBAAA,8BAA2B;AAC3B,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,wBAAqB;AACrB,EAAAA,yBAAA,4BAAyB;AACzB,EAAAA,yBAAA,8BAA2B;AAC3B,EAAAA,yBAAA,uBAAoB;AA1BV,SAAAA;AAAA,GAAA;AA8BL,IAAK,0BAAL,kBAAKC,6BAAL;AACL,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,mBAAgB;AAChB,EAAAA,yBAAA,oBAAiB;AACjB,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,0BAAuB;AACvB,EAAAA,yBAAA,wBAAqB;AACrB,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,0BAAuB;AACvB,EAAAA,yBAAA,6BAA0B;AAC1B,EAAAA,yBAAA,2BAAwB;AACxB,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,YAAS;AAZC,SAAAA;AAAA,GAAA;AAgBL,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,YAAS;AACT,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,gBAAa;AACb,EAAAA,sBAAA,aAAU;AATA,SAAAA;AAAA,GAAA;AAYL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,+BAA4B;AAC5B,EAAAA,mBAAA,gCAA6B;AAC7B,EAAAA,mBAAA,mBAAgB;AAChB,EAAAA,mBAAA,4BAAyB;AALf,SAAAA;AAAA,GAAA;AAQL,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,WAAQ;AACR,EAAAA,sBAAA,eAAY;AAFF,SAAAA;AAAA,GAAA;AAKL,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,sBAAmB;AACnB,EAAAA,gBAAA,oBAAiB;AACjB,EAAAA,gBAAA,mBAAgB;AAChB,EAAAA,gBAAA,mBAAgB;AAChB,EAAAA,gBAAA,wBAAqB;AACrB,EAAAA,gBAAA,wBAAqB;AACrB,EAAAA,gBAAA,WAAQ;AAPE,SAAAA;AAAA,GAAA;AAUL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,kBAAe;AACf,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,cAAW;AALD,SAAAA;AAAA,GAAA;AAQL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,SAAM;AAHI,SAAAA;AAAA,GAAA;AAML,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,oBAAiB;AACjB,EAAAA,WAAA,kBAAe;AACf,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,eAAY;AACZ,EAAAA,WAAA,YAAS;AALC,SAAAA;AAAA,GAAA;AAQL,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,aAAU;AACV,EAAAA,gBAAA,eAAY;AACZ,EAAAA,gBAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;AAOL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,YAAS;AAFC,SAAAA;AAAA,GAAA;AAML,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,mBAAgB;AAChB,EAAAA,cAAA,kBAAe;AACf,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,sBAAmB;AACnB,EAAAA,cAAA,eAAY;AANF,SAAAA;AAAA,GAAA;AAUL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,eAAY;AAJF,SAAAA;AAAA,GAAA;AAQL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AAOL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,iBAAc;AACd,EAAAA,eAAA,gBAAa;AAHH,SAAAA;AAAA,GAAA;AAOL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,qBAAkB;AAClB,EAAAA,eAAA,qBAAkB;AAClB,EAAAA,eAAA,oBAAiB;AAHP,SAAAA;AAAA,GAAA;AAOL,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,mBAAgB;AAChB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,uBAAoB;AACpB,EAAAA,sBAAA,mBAAgB;AAChB,EAAAA,sBAAA,2BAAwB;AACxB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,2BAAwB;AACxB,EAAAA,sBAAA,kCAA+B;AAXrB,SAAAA;AAAA,GAAA;AAoBL,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,SAAM;AAHI,SAAAA;AAAA,GAAA;AAaL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,UAAO;AAJG,SAAAA;AAAA,GAAA;AAWL,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,cAAW;AALD,SAAAA;AAAA,GAAA;AAQL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,SAAM;AATI,SAAAA;AAAA,GAAA;AAYL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,iCAA8B;AAC9B,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,YAAS;AAPC,SAAAA;AAAA,GAAA;AAWL,IAAK,mBAAL,kBAAKC,sBAAL;AACL,EAAAA,oCAAA,iBAAc,UAAd;AACA,EAAAA,oCAAA,qBAAkB,UAAlB;AACA,EAAAA,oCAAA,sBAAmB,UAAnB;AACA,EAAAA,oCAAA,oBAAiB,UAAjB;AACA,EAAAA,oCAAA,oBAAiB,UAAjB;AACA,EAAAA,oCAAA,0BAAuB,UAAvB;AACA,EAAAA,oCAAA,sBAAmB,UAAnB;AACA,EAAAA,oCAAA,0BAAuB,UAAvB;AARU,SAAAA;AAAA,GAAA;AAWL,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,oBAAA,aAAU;AACV,EAAAA,oBAAA,cAAW;AACX,EAAAA,oBAAA,kBAAe;AAHL,SAAAA;AAAA,GAAA;AAML,IAAK,2BAAL,kBAAKC,8BAAL;AACL,EAAAA,0BAAA,gBAAa;AACb,EAAAA,0BAAA,aAAU;AAFA,SAAAA;AAAA,GAAA;AASL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AAPA,SAAAA;AAAA,GAAA;AAUL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;;;AC/SL,IAAM,kBAAkB;AAOxB,IAAM,6BAA6B;AAGnC,IAAM,2BAA2B;AAGjC,IAAM,wBAAwB;AAG9B,IAAM,yBAAyB;AAG/B,IAAM,0BAA0B;AAGhC,IAAM,uBAAuB;AAG7B,IAAM,mBAAmB;AAGzB,IAAM,qBAAqB;AAG3B,IAAM,iBAAiB;;;AChC9B,SAAS,SAAS;AAmBX,IAAM,kBAAwC,EAAE;AAAA,EAAK,MAC1D,EAAE,MAAM;AAAA,IACN,EAAE,OAAO;AAAA,IACT,EAAE,OAAO;AAAA,IACT,EAAE,QAAQ;AAAA,IACV,EAAE,KAAK;AAAA,IACP,EAAE,MAAM,eAAe;AAAA,IACvB,EAAE,OAAO,eAAe;AAAA,EAC1B,CAAC;AACH;AAEO,IAAM,mBACX,EAAE,OAAO,eAAe;AAEnB,IAAM,kBAAwC,EAAE,MAAM,eAAe;AAGrE,IAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAY,EAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAKM,IAAM,+BAA+B,EAAE,OAAO;AAAA,EACnD,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAChD,CAAC;AAOM,IAAM,oBAAoB,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAKnD,IAAM,sBAAsB,EAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAC/B,YAAY;AAKR,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,SAAS,EAAE,QAAQ,eAAe;AAAA,EAClC,mBAAmB,EAAE,QAAQ,0BAA0B;AAAA,EACvD,wBAAwB,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,OAAO,uBAAuB,SAAS;AACzC,CAAC;AAKM,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,MAAM,EAAE,WAAW,gBAAgB;AAAA,EACnC,SAAS,EAAE,OAAO;AAAA,EAClB,MAAM,gBAAgB,SAAS;AACjC,CAAC;AAKM,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,MAAM,EAAE,QAAQ,SAAS;AAAA,EACzB,IAAI,EAAE,OAAO;AAAA,EACb,QAAQ,EAAE,OAAO;AAAA,EACjB,QAAQ,gBAAgB,SAAS;AACnC,CAAC;AAKM,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,QAAQ,UAAU;AAAA,EAC1B,IAAI,EAAE,OAAO;AAAA,EACb,QAAQ;AACV,CAAC;AAKM,IAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,QAAQ,UAAU;AAAA,EAC1B,IAAI,EAAE,OAAO,EAAE,SAAS;AAAA,EACxB,OAAO;AACT,CAAC;AAKM,IAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,MAAM,EAAE,QAAQ,cAAc;AAAA,EAC9B,QAAQ,EAAE,OAAO;AAAA,EACjB,QAAQ,gBAAgB,SAAS;AACnC,CAAC;AAKM,IAAM,uBAAuB,sBAAsB;AAAA,EACxD,kBAAkB;AACpB;AAKO,IAAM,+BAA+B,sBAAsB;AAAA,EAChE,0BAA0B;AAC5B;AAOO,IAAM,+BAA+B,sBAAsB;AAAA,EAChE,0BAA0B;AAC5B;AAOO,IAAM,4BAA4B,sBAAsB;AAAA,EAC7D,uBAAuB;AACzB;AAKO,IAAM,wBAAwB,EAAE,MAAM;AAAA,EAC3C;AAAA,EACA;AACF,CAAC;AAKM,IAAM,uBAAuB,EAAE,mBAAmB,QAAQ;AAAA,EAC/D;AAAA,EACA,sBAAsB,OAAO;AAAA,IAC3B,MAAM,EAAE,QAAQ,UAAU;AAAA,IAC1B,IAAI,EAAE,OAAO,EAAE,SAAS;AAAA,IACxB,QAAQ,gBAAgB,SAAS;AAAA,IACjC,OAAO,mBAAmB,SAAS;AAAA,EACrC,CAAC;AAAA,EACD;AACF,CAAC;AAKM,SAAS,qBAA6C,cAAiB;AAC5E,SAAO,EAAE,MAAM;AAAA,IACb,6BAA6B,OAAO,EAAE,QAAQ,aAAa,CAAC;AAAA,IAC5D;AAAA,EACF,CAAC;AACH;;;ACrLA,SAAS,KAAAC,UAAS;;;ACAlB,SAAS,KAAAC,UAAS;;;ACAlB,SAAS,KAAAC,UAAS;AAUX,IAAM,mCAAmCC,GAAE,OAAO;AAAA,EACvD,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AACrC,CAAC;AAMM,IAAM,kCAAkCA,GAAE,OAAO;AAAA,EACtD,KAAKA,GAAE,OAAO,EAAE,SAAS;AAC3B,CAAC;AAMM,IAAM,iCAAiCA,GAAE,OAAO;AAAA,EACrD,KAAKA,GAAE,OAAO;AAAA,EACd,SAASA,GAAE,OAAOA,GAAE,OAAO,CAAC,EAAE,SAAS;AACzC,CAAC;AAMM,IAAM,4BAA4BA,GACtC,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,QAAQA,GAAE,WAAW,eAAe;AAAA,EACpC,QAAQA,GAAE,WAAW,aAAa;AAAA,EAClC,WAAWA,GAAE,QAAQ;AAAA,EACrB,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAYA,GAAE,WAAW,aAAa,EAAE,SAAS;AAAA,EACjD,eAAeA,GAAE,QAAQ,EAAE,SAAS;AACtC,CAAC,EACA,YAAY;AAIR,IAAM,yBAAyBA,GACnC,OAAO;AAAA,EACN,OAAOA,GAAE,OAAO;AAAA,EAChB,WAAWA,GAAE,OAAO;AAAA,EACpB,YAAYA,GAAE,OAAO;AAAA,EACrB,QAAQA,GAAE,OAAO;AAAA,EACjB,UAAUA,GAAE,OAAO,EAAE,SAAS;AAChC,CAAC,EACA,YAAY;AAIR,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,aAAaA,GAAE,OAAO;AAAA,EACtB,MAAMA,GAAE,WAAW,aAAa;AAAA;AAAA,EAEhC,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAEnC,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEzB,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAASA,GAAE,OAAO,EAAE,SAAS;AAC/B,CAAC,EACA,YAAY;AAKR,IAAM,2BAA2BA,GACrC,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,YAAY,iBAAiB,SAAS;AAAA,EACtC,UAAUA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AACzC,CAAC,EACA,YAAY;AAIR,IAAM,oBAAoBA,GAC9B,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AAAA,EACrB,MAAMA,GAAE,OAAO;AAAA,EACf,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,WAAWA,GAAE,QAAQ;AAAA,EACrB,YAAYA,GAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,aAAa,yBAAyB,SAAS;AACjD,CAAC,EACA,YAAY;AAIR,IAAM,iCAAiCA,GAC3C,OAAO;AAAA,EACN,OAAOA,GAAE,OAAO;AAAA,EAChB,OAAOA,GAAE,WAAW,uBAAuB;AAC7C,CAAC,EACA,YAAY;;;AC9Gf,SAAS,KAAAC,UAAS;AAKX,IAAM,kBAAkBC,GAC5B,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,MAAM;AAAA,EACtB,MAAMA,GAAE,OAAO;AAAA,EACf,IAAIA,GAAE,OAAO,EAAE,SAAS;AAC1B,CAAC,EACA,YAAY;AAKR,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,QAAQ;AAAA,EACxB,MAAMA,GAAE,OAAO;AAAA,EACf,WAAWA,GAAE,KAAK,CAAC,cAAc,aAAa,aAAa,YAAY,CAAC;AAC1E,CAAC,EACA,YAAY;AAKR,IAAM,mBAAmBA,GAC7B,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,OAAO;AAAA,EACvB,QAAQ;AAAA,EACR,IAAIA,GAAE,OAAO,EAAE,SAAS;AAC1B,CAAC,EACA,YAAY;AAKR,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,UAAU;AAAA,EAC1B,WAAWA,GAAE,OAAO;AAAA,EACpB,UAAUA,GAAE,OAAO;AAAA,EACnB,IAAIA,GAAE,OAAO,EAAE,SAAS;AAAA,EACxB,mBAAmBA,GAAE,OAAO,EAAE,SAAS;AACzC,CAAC,EACA,YAAY;AAKR,IAAM,8BAA8BA,GACxC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,mBAAmB;AAAA,EACnC,MAAMA,GAAE,OAAO;AAAA,EACf,IAAIA,GAAE,OAAO,EAAE,SAAS;AAC1B,CAAC,EACA,YAAY;AAKR,IAAM,qBAAqBA,GAC/B,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,UAAU;AAAA,EAC1B,IAAIA,GAAE,OAAO;AAAA,EACb,OAAO;AAAA,EACP,MAAMA,GAAE,OAAO;AAAA,EACf,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AACxC,CAAC,EACA,YAAY;AAKR,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,aAAa;AAAA,EAC7B,WAAWA,GAAE,OAAO;AAAA,EACpB,SAASA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,MAAM,eAAe,CAAC,CAAC,EAAE,SAAS;AAAA,EAClE,SAASA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,IAAIA,GAAE,OAAO,EAAE,SAAS;AAC1B,CAAC,EACA,YAAY;AAKR,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,UAAU;AAAA,EAC1B,QAAQ;AAAA,EACR,IAAIA,GAAE,OAAO,EAAE,SAAS;AAC1B,CAAC,EACA,YAAY;AAKR,IAAM,qBAAqBA,GAAE,mBAAmB,QAAQ;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAIM,IAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AACV;AAMO,IAAM,4BAA4BA,GACtC,OAAO;AAAA,EACN,IAAIA,GAAE,OAAO;AAAA,EACb,MAAMA,GAAE,KAAK;AAAA,IACX,wBAAwB;AAAA,IACxB,wBAAwB;AAAA,IACxB,wBAAwB;AAAA,IACxB,wBAAwB;AAAA,EAC1B,CAAC;AAAA,EACD,SAASA,GAAE,MAAM,kBAAkB;AAAA,EACnC,WAAWA,GAAE,OAAO;AAAA,EACpB,WAAWA,GAAE,OAAO;AAAA,EACpB,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,YAAYA,GAAE,KAAK,CAAC,QAAQ,YAAY,WAAW,CAAC,EAAE,SAAS;AAAA,EAC/D,SAASA,GAAE,QAAQ,EAAE,SAAS;AAChC,CAAC,EACA,YAAY;AAKR,IAAM,uBAAuBA,GACjC,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,WAAWA,GAAE,OAAO;AAAA,EACpB,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAC5B,CAAC,EACA,YAAY;;;ACvJf,SAAS,KAAAC,UAAS;AAWX,IAAM,uBAAuBC,GACjC,OAAO;AAAA,EACN,IAAIA,GAAE,OAAO;AAAA,EACb,aAAaA,GAAE,OAAO;AAAA,EACtB,QAAQA,GAAE,WAAW,aAAa;AAAA,EAClC,WAAWA,GAAE,OAAO;AAAA,EACpB,eAAeA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,EACjC,kBAAkBA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,EACpC,mBAAmBA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,EACrC,UAAUA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACvC,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,kBAAkBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,wBAAwBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,0BAA0BA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC3D,CAAC,EACA,YAAY;AAIR,IAAM,4BAA4BA,GAAE,WAAW,mBAAmB;AAGlE,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,UAAUA,GAAE,WAAW,aAAa;AAAA,EACpC,aAAaA,GAAE,OAAO;AAAA,EACtB,cAAcA,GAAE,OAAO,EAAE,SAAS;AACpC,CAAC,EACA,YAAY;AAKR,IAAM,4BAA4BA,GACtC,OAAO;AAAA,EACN,SAASA,GAAE,OAAO;AAAA,EAClB,UAAUA,GAAE,OAAO;AAAA,EACnB,aAAaA,GAAE,OAAO;AACxB,CAAC,EACA,YAAY;AAKR,IAAM,yBAAyBA,GACnC,OAAO;AAAA,EACN,QAAQA,GAAE,OAAO;AAAA,EACjB,UAAUA,GAAE,OAAO;AACrB,CAAC,EACA,YAAY;AAKR,IAAM,qBAAqBA,GAC/B,OAAO;AAAA,EACN,aAAaA,GAAE,MAAM,yBAAyB;AAAA,EAC9C,mBAAmBA,GAAE,MAAM,sBAAsB,EAAE,SAAS;AAC9D,CAAC,EACA,YAAY;AAKR,IAAM,iBAAiBA,GAC3B,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,UAAUA,GAAE,OAAO;AACrB,CAAC,EACA,YAAY;AAKR,IAAM,iBAAiBA,GAC3B,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,OAAOA,GAAE,MAAM,cAAc;AAC/B,CAAC,EACA,YAAY;AAKR,IAAM,cAAcA,GACxB,OAAO;AAAA,EACN,OAAOA,GAAE,MAAM,cAAc;AAAA,EAC7B,SAASA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC,UAAUA,GAAE,OAAO;AACrB,CAAC,EACA,YAAY;AAKR,IAAM,uBAAuBA,GACjC,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,KAAKA,GAAE,OAAO;AAChB,CAAC,EACA,YAAY;AAKR,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,mBAAmBA,GAAE,QAAQ;AAAA,EAC7B,YAAYA,GAAE,MAAM,oBAAoB;AAAA,EACxC,kBAAkBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AACjD,CAAC,EACA,YAAY;AAKR,IAAM,gBAAgBA,GAC1B,OAAO;AAAA,EACN,gBAAgBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACpC,oBAAoBA,GAAE,OAAO;AAAA,EAC7B,mBAAmBA,GAAE,OAAO;AAAA,EAC5B,cAAc;AAAA,EACd,OAAO;AAAA,EACP,kBAAkBA,GAAE,MAAM,qBAAqB;AAAA,EAC/C,eAAe,oBAAoB,SAAS;AAC9C,CAAC,EACA,YAAY;AAKR,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,MAAMA,GAAE,WAAW,aAAa;AAAA,EAChC,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,SAASA,GAAE,OAAO;AAAA,EAClB,eAAeA,GAAE,OAAO;AAC1B,CAAC,EACA,YAAY;AAIf,IAAM,6BAA6BA,GAAE,OAAO;AAAA,EAC1C,WAAWA,GAAE,OAAO;AACtB,CAAC;AAEM,IAAM,6BAA6B,2BAA2B,OAAO;AAAA,EAC1E,MAAMA,GAAE,gDAA4C;AAAA,EACpD,OAAOA,GAAE,OAAO;AAClB,CAAC,EAAE,YAAY;AAIR,IAAM,2BAA2B,2BAA2B,OAAO;AAAA,EACxE,MAAMA,GAAE,4CAA0C;AACpD,CAAC,EAAE,YAAY;AAIR,IAAM,4BAA4B,2BAA2B,OAAO;AAAA,EACzE,MAAMA,GAAE,8CAA2C;AACrD,CAAC,EAAE,YAAY;AAIR,IAAM,+BAA+B,2BAA2B,OAAO;AAAA,EAC5E,MAAMA,GAAE,qDAA8C;AAAA,EACtD,SAASA,GAAE,OAAO,EAAE,SAAS;AAC/B,CAAC,EAAE,YAAY;AAMR,IAAM,2BAA2B,2BAA2B,OAAO;AAAA,EACxE,MAAMA,GAAE,4CAA0C;AAAA,EAClD,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,SAASA,GAAE,OAAO;AAAA,EAClB,WAAWA,GAAE,OAAO,EAAE,SAAS;AACjC,CAAC,EAAE,YAAY;AAIR,IAAM,mCACX,2BAA2B,OAAO;AAAA,EAChC,MAAMA,GAAE,6DAAkD;AAAA,EAC1D,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,WAAWA,GAAE,OAAO;AACtB,CAAC,EAAE,YAAY;AAMV,IAAM,6BAA6B,2BAA2B,OAAO;AAAA,EAC1E,MAAMA,GAAE,gDAA4C;AAAA,EACpD,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,WAAWA,GAAE,OAAO;AAAA,EACpB,cAAc;AAAA,EACd,sBAAsBA,GAAE,QAAQ;AAAA,EAChC,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,UAAUA,GAAE,OAAO;AAAA,EACnB,kBAAkBA,GAAE,QAAQ,EAAE,SAAS;AAAA,EACvC,SAAS,cAAc,SAAS;AAClC,CAAC,EAAE,YAAY;AAIR,IAAM,0BAA0B,2BAA2B,OAAO;AAAA,EACvE,MAAMA,GAAE,0CAAyC;AAAA,EACjD,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACrC,SAASA,GAAE,OAAO;AAAA,EAClB,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQA,GAAE,OAAO;AACnB,CAAC,EAAE,YAAY;AAIR,IAAM,0BAA0B,2BAA2B,OAAO;AAAA,EACvE,MAAMA,GAAE,0CAAyC;AAAA,EACjD,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,WAAWA,GAAE,OAAO,EAAE,SAAS;AACjC,CAAC,EAAE,YAAY;AAIR,IAAM,mCACX,2BAA2B,OAAO;AAAA,EAChC,MAAMA,GAAE,6DAAkD;AAAA,EAC1D,YAAYA,GAAE,MAAM,qBAAqB,EAAE,SAAS;AACtD,CAAC,EAAE,YAAY;AAMV,IAAM,0CACX,2BAA2B,OAAO;AAAA,EAChC,MAAMA,GAAE,2EAAyD;AAAA,EACjE,WAAWA,GAAE,OAAO;AAAA,EACpB,WAAWA,GAAE,OAAO;AACtB,CAAC,EAAE,YAAY;AAOV,IAAM,yBAAyBA,GAAE,mBAAmB,QAAQ;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;AH7OD,IAAM,gCAAgC;AAAA,EACpC,SAASC,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,cAAcA,GAAE,WAAW,YAAY,EAAE,SAAS;AAAA,EAClD,iBAAiBA,GAAE,WAAW,oBAAoB,EAAE,SAAS;AAAA,EAC7D,eAAeA,GAAE,WAAW,aAAa,EAAE,SAAS;AACtD;AAEO,IAAM,mBAAmBA,GAC7B,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,UAAUA,GAAE,OAAOA,GAAE,OAAO,CAAC,EAAE,SAAS;AAC1C,CAAC,EACA,OAAO;AAIH,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,UAAUA,GAAE,OAAO;AACrB,CAAC,EACA,YAAY;AAIR,IAAM,uBAAuBA,GACjC,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,SAASA,GAAE,OAAO;AAAA,EAClB,MAAMA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACpC,KAAKA,GAAE,OAAOA,GAAE,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC,EACA,OAAO;AAIH,IAAM,mBAAmBA,GAC7B,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,OAAOA,GAAE,OAAO;AAClB,CAAC,EACA,OAAO;AAIH,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,MAAM;AAAA,EACtB,MAAMA,GAAE,OAAO;AAAA,EACf,KAAKA,GAAE,OAAO,EAAE,IAAI;AAAA,EACpB,SAAS,iBAAiB,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC,EACA,OAAO;AAIH,IAAM,qBAAqBA,GAC/B,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,KAAK;AAAA,EACrB,MAAMA,GAAE,OAAO;AAAA,EACf,KAAKA,GAAE,OAAO,EAAE,IAAI;AAAA,EACpB,SAAS,iBAAiB,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC,EACA,OAAO;AAIH,IAAM,wBAAwBA,GAAE,MAAM;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKM,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,SAASA,GAAE,OAAO;AAAA,EAClB,iBAAiBA,GAAE,WAAW,eAAe;AAAA,EAC7C,cAAcA,GAAE,WAAW,YAAY,EAAE,SAAS;AAAA,EAClD,iBAAiBA,GACd,WAAW,oBAAoB,EAC/B,SAAS,EACT,MAAM,MAAS;AAAA,EAClB,eAAeA,GAAE,WAAW,aAAa,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACrE,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACrC,yBAAyBA,GAAE,WAAW,eAAe,EAAE,SAAS;AAAA,EAChE,GAAG,6BAA6B;AAClC,CAAC,EACA,YAAY;AAIR,IAAM,oBAAoBA,GAC9B,OAAO;AAAA,EACN,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,GAAE,OAAO;AACrB,CAAC,EACA,YAAY;AAKR,IAAM,6BAA6BA,GACvC,OAAO;AAAA,EACN,IAAIA,GAAE,OAAO;AAAA,EACb,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,aAAaA,GAAE,OAAO;AAAA,EACtB,kBAAkBA,GAAE,OAAO;AAAA,EAC3B,eAAeA,GAAE,WAAW,aAAa;AAAA,EACzC,2BAA2BA,GAAE,MAAMA,GAAE,WAAW,eAAe,CAAC;AAAA,EAChE,wBAAwBA,GAAE,WAAW,eAAe;AAAA,EACpD,UAAUA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACnC,gBAAgBA,GAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,cAAcA,GAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACrC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,aAAa,iBAAiB,SAAS;AAAA,EACvC,sBAAsBA,GAAE,QAAQ,EAAE,SAAS;AAC7C,CAAC,EACA,YAAY;AAIR,IAAM,mBAAmBA,GAC7B,OAAO;AAAA,EACN,aAAaA,GAAE,OAAO;AAAA,EACtB,cAAcA,GAAE,OAAO;AAAA,EACvB,qBAAqBA,GAAE,OAAO;AAAA,EAC9B,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,gBAAgBA,GAAE,OAAO;AAC3B,CAAC,EACA,YAAY;AAKR,IAAM,qBAAqBA,GAC/B,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,WAAWA,GAAE,OAAO;AAAA,EACpB,OAAOA,GAAE,OAAO;AAAA,EAChB,UAAUA,GAAE,WAAW,oBAAoB;AAAA,EAC3C,WAAWA,GAAE,OAAO;AACtB,CAAC,EACA,YAAY;AAIR,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,WAAWA,GAAE,OAAO;AAAA,EACpB,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAUA,GAAE,OAAO,EAAE,SAAS;AAChC,CAAC,EACA,YAAY;AAIR,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,KAAK,CAAC,aAAa,OAAO,CAAC;AACrC,CAAC,EACA,YAAY;AAIR,IAAM,kBAAkBA,GAC5B,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAUA,GAAE,WAAW,aAAa;AAAA,EACpC,UAAUA,GAAE,OAAO;AAAA,EACnB,SAASA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,eAAeA,GAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,WAAWA,GAAE,MAAM,mBAAmB,EAAE,SAAS;AACnD,CAAC,EACA,YAAY;AAIR,IAAM,uCAAuCA,GACjD,OAAO;AAAA,EACN,WAAWA,GAAE,OAAO;AAAA,EACpB,KAAKA,GAAE,OAAO;AAAA,EACd,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAYA,GAAE,MAAM,qBAAqB,EAAE,SAAS;AAAA,EACpD,GAAG;AAAA,EACH,iBAAiBA,GAAE,WAAW,eAAe,EAAE,SAAS;AAAA,EACxD,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACrC,yBAAyBA,GAAE,WAAW,eAAe,EAAE,SAAS;AAAA,EAChE,mBAAmBA,GAAE,WAAW,iBAAiB,EAAE,SAAS;AAAA,EAC5D,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACrC,uBAAuBA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,GAAG,6BAA6B;AAAA,EAChC,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACrC,eAAe,oBAAoB,SAAS;AAAA,EAC5C,MAAMA,GAAE,MAAM,gBAAgB,EAAE,SAAS;AAAA,EACzC,qBAAqBA,GAAE,OAAO,EAAE,SAAS;AAC3C,CAAC,EACA,OAAO;AAMH,IAAM,iCAAiCA,GAC3C,OAAO;AAAA,EACN,WAAWA,GAAE,OAAO;AAAA,EACpB,YAAYA,GAAE,MAAM,qBAAqB,EAAE,SAAS;AAAA,EACpD,qBAAqBA,GAAE,OAAO,EAAE,SAAS;AAC3C,CAAC,EACA,OAAO;AAMH,IAAM,mBAAmB;AAAA,EAC9B,YAAY;AACd;AAKO,IAAM,qBAAqBA,GAC/B,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,iBAAiB,UAAU;AAAA,EAC3C,QAAQ;AACV,CAAC,EACA,OAAO;AAIH,IAAM,oCAAoCA,GAC9C,OAAO;AAAA,EACN,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,MAAMA,GAAE,OAAO;AAAA,EACf,QAAQA,GAAE,MAAM,uBAAuB,EAAE,SAAS;AAAA,EAClD,OAAOA,GAAE,MAAM,oBAAoB,EAAE,SAAS;AAAA,EAC9C,cAAc,mBAAmB,SAAS;AAC5C,CAAC,EACA,OAAO;AAMH,IAAM,sCAAsCA,GAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAMhE,IAAM,kCAAkCA,GAC5C,OAAO;AAAA,EACN,QAAQA,GACL,KAAK,CAAC,SAAS,UAAU,qBAAqB,OAAO,CAAC,EACtD,SAAS;AACd,CAAC,EACA,OAAO;AAMH,IAAM,uCAAuCA,GACjD,OAAO;AAAA,EACN,iBAAiBA,GAAE,OAAO;AAC5B,CAAC,EACA,OAAO;AAMH,IAAM,2CAA2CA,GACrD,OAAO;AAAA,EACN,GAAG;AAAA,EACH,iBAAiBA,GAAE,WAAW,eAAe,EAAE,SAAS;AAAA,EACxD,iBAAiBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,yBAAyBA,GACtB,WAAW,eAAe,EAC1B,SAAS,EACT,SAAS;AAAA,EACZ,GAAG,6BAA6B;AAClC,CAAC,EACA,OAAO;AAMH,IAAM,qCAAqCA,GAC/C,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AAAA,EACrB,SAASA,GAAE,QAAQ;AAAA,EACnB,eAAeA,GAAE,yBAA0B;AAC7C,CAAC,EACA,OAAO;AAMH,IAAM,2CAA2CA,GACrD,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AACvB,CAAC,EACA,OAAO;AAMH,IAAM,mCAAmCA,GAC7C,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AACvB,CAAC,EACA,OAAO;AAMH,IAAM,kCAAkCA,GAC5C,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AACvB,CAAC,EACA,OAAO;AAMH,IAAM,uCAAuCA,GACjD,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AAAA,EACrB,MAAMA,GAAE,OAAO;AAAA,EACf,OAAOA,GAAE,OAAO;AAClB,CAAC,EACA,OAAO;AAMH,IAAM,kCAAkCA,GAC5C,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,MAAMA,GAAE,WAAW,aAAa;AAAA,EAChC,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA,EACzB,SAASA,GAAE,OAAOA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACvC,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACnC,KAAKA,GAAE,OAAOA,GAAE,OAAO,CAAC,EAAE,SAAS;AACrC,CAAC,EACA,OAAO;AAMH,IAAM,qCAAqCA,GAC/C,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AAAA,EACrB,eAAeA,GAAE,yBAA0B;AAC7C,CAAC,EACA,OAAO;AAMH,IAAM,qCAAqCA,GAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAM/D,IAAM,kCAAkCA,GAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAM5D,IAAM,qBAAqBA,GAC/B,OAAO;AAAA,EACN,IAAIA,GAAE,OAAO;AAAA,EACb,OAAOA,GAAE,OAAO;AAAA,EAChB,aAAaA,GAAE,OAAO;AAAA,EACtB,aAAaA,GAAE,OAAO;AAAA,EACtB,UAAUA,GAAE,KAAK,CAAC,QAAQ,QAAQ,WAAW,OAAO,CAAC;AAAA,EACrD,gBAAgBA,GAAE,QAAQ;AAAA,EAC1B,kBAAkBA,GAAE,QAAQ;AAC9B,CAAC,EACA,YAAY;AAIR,IAAM,+BAA+BA,GACzC,OAAO;AAAA,EACN,GAAG;AAAA,EACH,iBAAiBA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,uBAAuBA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,GAAG,6BAA6B;AAAA,EAChC,OAAOA,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAC1C,CAAC,EACA,OAAO;AAMH,IAAM,oCAAoCA,GAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAM9D,IAAM,mCAAmCA,GAC7C,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AAAA,EACrB,UAAUA,GAAE,OAAO;AAAA,EACnB,SAASA,GAAE,QAAQ;AACrB,CAAC,EACA,OAAO;AAMH,IAAM,gCAAgCA,GAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAM1D,IAAM,qCAAqCA,GAC/C,OAAO;AAAA,EACN,aAAaA,GAAE,OAAO;AAAA,EACtB,YAAYA,GAAE,OAAO,EAAE,SAAS;AAClC,CAAC,EACA,OAAO;AAMH,IAAM,2BAA2BA,GACrC,OAAO;AAAA,EACN,UAAUA,GAAE,OAAO;AAAA,EACnB,aAAaA,GAAE,OAAO;AAAA,EACtB,MAAMA,GAAE,OAAO;AACjB,CAAC,EACA,YAAY;AAIR,IAAM,2BAA2BA,GACrC,OAAO;AAAA,EACN,UAAUA,GAAE,OAAO;AACrB,CAAC,EACA,YAAY;AAIR,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,UAAUA,GAAE,OAAO;AAAA,EACnB,QAAQA,GAAE,OAAO;AACnB,CAAC,EACA,YAAY;AAIR,IAAM,mCAAmCA,GAC7C,OAAO;AAAA,EACN,WAAWA,GAAE,OAAO;AACtB,CAAC,EACA,YAAY;AAMR,IAAM,mCAAmCA,GAC7C,OAAO;AAAA,EACN,WAAWA,GAAE,OAAO;AAAA,EACpB,gBAAgBA,GAAE,MAAM,wBAAwB;AAAA,EAChD,eAAeA,GAAE,MAAM,wBAAwB;AAAA,EAC/C,WAAWA,GAAE,OAAO;AACtB,CAAC,EACA,YAAY;AAMR,IAAM,oCAAoCA,GAC9C,OAAO;AAAA,EACN,oBAAoBA,GAAE,OAAO,EAAE,SAAS;AAC1C,CAAC,EACA,YAAY;AAMR,IAAM,mCAAmCA,GAC7C,OAAO;AAAA,EACN,OAAOA,GAAE,OAAO;AAClB,CAAC,EACA,YAAY;AAMR,IAAM,iCAAiCA,GAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAMhE,IAAM,qCAAqCA,GAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAMpE,IAAM,iCAAiC,qBAAqB,OAAO;AAAA,EACxE,QAAQA,GAAE,2DAA4C;AAAA,EACtD,QAAQ;AACV,CAAC;AAMM,IAAM,2BAA2B,qBAAqB,OAAO;AAAA,EAClE,QAAQA,GAAE,+CAAsC;AAAA,EAChD,QAAQ;AACV,CAAC;AAIM,IAAM,8BAA8B,qBAAqB,OAAO;AAAA,EACrE,QAAQA,GAAE,uDAA0C;AAAA,EACpD,QAAQ;AACV,CAAC;AAIM,IAAM,gCAAgC,qBAAqB,OAAO;AAAA,EACvE,QAAQA,GAAE,yDAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAMM,IAAM,4BAA4B,qBAAqB,OAAO;AAAA,EACnE,QAAQA,GAAE,iDAAuC;AAAA,EACjD,QAAQ;AACV,CAAC;AAIM,IAAM,iCAAiC,qBAAqB,OAAO;AAAA,EACxE,QAAQA,GAAE,6DAA6C;AAAA,EACvD,QAAQ;AACV,CAAC;AAMM,IAAM,qCAAqC,qBAAqB,OAAO;AAAA,EAC5E,QAAQA,GAAE,qEAAiD;AAAA,EAC3D,QAAQ;AACV,CAAC;AAMM,IAAM,+BAA+B,qBAAqB,OAAO;AAAA,EACtE,QAAQA,GAAE,yDAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAMM,IAAM,qCAAqC,qBAAqB,OAAO;AAAA,EAC5E,QAAQA,GAAE,qEAAiD;AAAA,EAC3D,QAAQ;AACV,CAAC;AAMM,IAAM,6BAA6B,qBAAqB,OAAO;AAAA,EACpE,QAAQA,GAAE,qDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAIM,IAAM,4BAA4B,qBAAqB,OAAO;AAAA,EACnE,QAAQA,GAAE,mDAAwC;AAAA,EAClD,QAAQ;AACV,CAAC;AAIM,IAAM,iCAAiC,qBAAqB,OAAO;AAAA,EACxE,QAAQA,GAAE,+DAA8C;AAAA,EACxD,QAAQ;AACV,CAAC;AAMM,IAAM,4BAA4B,qBAAqB,OAAO;AAAA,EACnE,QAAQA,GAAE,mDAAwC;AAAA,EAClD,QAAQ;AACV,CAAC;AAIM,IAAM,+BAA+B,qBAAqB,OAAO;AAAA,EACtE,QAAQA,GAAE,yDAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAMM,IAAM,+BAA+B,qBAAqB,OAAO;AAAA,EACtE,QAAQA,GAAE,yDAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAMM,IAAM,4BAA4B,qBAAqB,OAAO;AAAA,EACnE,QAAQA,GAAE,mDAAwC;AAAA,EAClD,QAAQ;AACV,CAAC;AAIM,IAAM,yBAAyB,qBAAqB,OAAO;AAAA,EAChE,QAAQA,GAAE,2CAAoC;AAAA,EAC9C,QAAQ;AACV,CAAC;AAIM,IAAM,8BAA8B,qBAAqB,OAAO;AAAA,EACrE,QAAQA,GAAE,uDAA0C;AAAA,EACpD,QAAQ;AACV,CAAC;AAIM,IAAM,6BAA6B,qBAAqB,OAAO;AAAA,EACpE,QAAQA,GAAE,qDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAIM,IAAM,0BAA0B,qBAAqB,OAAO;AAAA,EACjE,QAAQA,GAAE,6CAAqC;AAAA,EAC/C,QAAQ;AACV,CAAC;AAIM,IAAM,+BAA+B,qBAAqB,OAAO;AAAA,EACtE,QAAQA,GAAE,yDAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAMM,IAAM,6BAA6B,qBAAqB,OAAO;AAAA,EACpE,QAAQA,GAAE,qDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAIM,IAAM,6BAA6B,qBAAqB,OAAO;AAAA,EACpE,QAAQA,GAAE,mDAAwC;AAAA,EAClD,QAAQ;AACV,CAAC;AAIM,IAAM,8BAA8B,qBAAqB,OAAO;AAAA,EACrE,QAAQA,GAAE,qDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAIM,IAAM,2BAA2B,qBAAqB,OAAO;AAAA,EAClE,QAAQA,GAAE,+CAAsC;AAAA,EAChD,QAAQ;AACV,CAAC;AAIM,IAAM,+BAA+B,qBAAqB,OAAO;AAAA,EACtE,QAAQA,GAAE,yDAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAMM,IAAM,6BAA6B,qBAAqB,OAAO;AAAA,EACpE,QAAQA,GAAE,mDAAwC;AAAA,EAClD,QAAQ;AACV,CAAC;AAKM,IAAM,sBAAsBA,GAAE,mBAAmB,UAAU;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAIM,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,OAAOA,GAAE,WAAW,YAAY;AAAA,EAChC,UAAUA,GAAE,MAAM,oBAAoB;AAAA,EACtC,aAAaA,GAAE,MAAM,sBAAsB;AAAA,EAC3C,kBAAkBA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,EACpC,cAAcA,GAAE,OAAO,qBAAqB,EAAE,SAAS;AAAA,EACvD,YAAY,iBAAiB,SAAS;AAAA,EACtC,uBAAuBA,GAAE,OAAO,gBAAgB,EAAE,SAAS;AAC7D,CAAC,EACA,YAAY;AAIR,IAAM,gCAAgCA,GAC1C,OAAO;AAAA,EACN,WAAWA,GAAE,OAAO;AAAA,EACpB,SAAS;AAAA,EACT,YAAYA,GAAE,MAAM,qBAAqB,EAAE,SAAS;AAAA,EACpD,UAAU;AAAA,EACV,SAAS,kBAAkB,SAAS;AAAA,EACpC,iBAAiBA,GAAE,MAAM,0BAA0B,EAAE,SAAS;AAChE,CAAC,EACA,YAAY;AAMR,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,SAAS;AAAA,EACT,YAAYA,GAAE,MAAM,qBAAqB,EAAE,SAAS;AAAA,EACpD,oBAAoBA,GAAE,MAAM,gBAAgB,EAAE,SAAS;AAAA,EACvD,wBAAwBA,GAAE,MAAM,gBAAgB,EAAE,SAAS;AAAA,EAC3D,UAAU;AAAA,EACV,uBAAuBA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,gBAAgBA,GAAE,MAAM,gBAAgB,EAAE,SAAS;AAAA,EACnD,SAAS,kBAAkB,SAAS;AAAA,EACpC,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA,EACzB,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACtC,kBAAkBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACtC,iBAAiBA,GAAE,MAAM,0BAA0B,EAAE,SAAS;AAAA,EAC9D,YAAY,iBAAiB,SAAS;AAAA,EACtC,SAAS,sBAAsB,SAAS;AAAA,EACxC,mBAAmBA,GAAE,WAAW,iBAAiB,EAAE,SAAS;AAC9D,CAAC,EACA,YAAY;AAIR,IAAM,6BAA6B;AAInC,IAAM,+BAA+B;AAMrC,IAAM,2BAA2B;AAIjC,IAAM,gCAAgC;AAMtC,IAAM,oCAAoC;AAM1C,IAAM,8BAA8B;AAIpC,IAAM,oCAAoC;AAM1C,IAAM,4BAA4B;AAIlC,IAAM,2BAA2B;AAIjC,IAAM,gCAAgC;AAMtC,IAAM,2BAA2B;AAIjC,IAAM,8BAA8B;AAIpC,IAAM,8BAA8BA,GACxC,OAAO,EAAE,SAASA,GAAE,MAAM,uBAAuB,EAAE,CAAC,EACpD,YAAY;AAIR,IAAM,2BAA2BA,GACrC,OAAO,EAAE,OAAOA,GAAE,MAAM,iBAAiB,EAAE,CAAC,EAC5C,YAAY;AAIR,IAAM,wBAAwBA,GAClC,OAAO,EAAE,OAAOA,GAAE,MAAM,kBAAkB,EAAE,CAAC,EAC7C,YAAY;AAIR,IAAM,6BAA6BA,GACvC,OAAO;AAAA,EACN,SAASA,GAAE,MAAM,yBAAyB;AAAA,EAC1C,SAAS;AACX,CAAC,EACA,YAAY;AAIR,IAAM,4BAA4B;AAIlC,IAAM,yBAAyBA,GACnC,OAAO,EAAE,QAAQA,GAAE,MAAM,eAAe,EAAE,CAAC,EAC3C,YAAY;AAIR,IAAM,8BAA8BA,GACxC,OAAO,EAAE,aAAaA,GAAE,OAAO,EAAE,CAAC,EAClC,YAAY;AAIR,IAAM,4BAA4BA,GACtC,OAAO;AAAA,EACN,gBAAgBA,GAAE,MAAM,wBAAwB;AAAA,EAChD,cAAcA,GAAE,MAAM,wBAAwB;AAAA,EAC9C,cAAcA,GAAE,MAAM,uBAAuB;AAC/C,CAAC,EACA,YAAY;AAIR,IAAM,4BAA4BA,GACtC,OAAO;AAAA,EACN,cAAcA,GAAE,OAAO;AAAA,EACvB,eAAeA,GAAE,OAAO;AAAA,EACxB,cAAcA,GAAE,OAAO;AAAA,EACvB,oBAAoBA,GAAE,OAAO;AAAA,EAC7B,mBAAmBA,GAAE,OAAO;AAC9B,CAAC,EACA,YAAY;AAIR,IAAM,6BAA6BA,GACvC,OAAO;AAAA,EACN,cAAcA,GAAE,OAAO;AAAA,EACvB,cAAcA,GAAE,OAAO;AACzB,CAAC,EACA,YAAY;AAIR,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,cAAcA,GAAE,OAAO;AACzB,CAAC,EACA,YAAY;AAIR,IAAM,8BAA8B;AAIpC,IAAM,iCAAiCA,GAC3C,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,QAAQA,GAAE,OAAO;AAAA,EACjB,UAAUA,GAAE,OAAO;AACrB,CAAC,EACA,YAAY;AAER,IAAM,+BAA+BA,GACzC,OAAO;AAAA,EACN,SAASA,GAAE,OAAO;AAAA,EAClB,kBAAkBA,GAAE,OAAO;AAAA,EAC3B,eAAeA,GAAE,OAAO;AAAA,EACxB,YAAYA,GAAE,OAAO;AAAA,EACrB,YAAYA,GAAE,OAAO;AAAA,EACrB,YAAYA,GAAE,MAAM,8BAA8B;AACpD,CAAC,EACA,YAAY;AAMR,IAAM,4BAA4B;AAIlC,IAAM,kCAAkC;AAAA,EAC7C;AACF;AAYA,IAAM,6BAA6B;AAAA,EACjC;AACF;AAEO,IAAM,4BAKT;AAMG,IAAM,+BAA+B;AAAA,EAC1C;AACF;AAKO,IAAM,iCAAiC;AAAA,EAC5C;AACF;AAKO,IAAM,6BAA6B;AAAA,EACxC;AACF;AAGO,IAAM,kCAAkC;AAAA,EAC7C;AACF;AAKO,IAAM,sCAAsC;AAAA,EACjD;AACF;AAKO,IAAM,gCAAgC;AAAA,EAC3C;AACF;AAKO,IAAM,sCAAsC;AAAA,EACjD;AACF;AAKO,IAAM,8BAA8B;AAAA,EACzC;AACF;AAGO,IAAM,6BAA6B;AAAA,EACxC;AACF;AAGO,IAAM,kCAAkC;AAAA,EAC7C;AACF;AAKO,IAAM,6BAA6B;AAAA,EACxC;AACF;AAGO,IAAM,gCAAgC;AAAA,EAC3C;AACF;AAKO,IAAM,gCAAgC;AAAA,EAC3C;AACF;AAKO,IAAM,6BAA6B;AAAA,EACxC;AACF;AAGO,IAAM,0BAA0B;AAAA,EACrC;AACF;AAGO,IAAM,+BAA+B;AAAA,EAC1C;AACF;AAKO,IAAM,8BAA8B;AAAA,EACzC;AACF;AAGO,IAAM,2BAA2B;AAAA,EACtC;AACF;AAGO,IAAM,gCAAgC;AAAA,EAC3C;AACF;AAKO,IAAM,8BAA8B;AAAA,EACzC;AACF;AAGO,IAAM,8BAA8B;AAAA,EACzC;AACF;AAGO,IAAM,+BAA+B;AAAA,EAC1C;AACF;AAKO,IAAM,4BAA4B;AAAA,EACvC;AACF;AAGO,IAAM,gCAAgC;AAAA,EAC3C;AACF;AAKO,IAAM,8BAA8B;AAAA,EACzC;AACF;;;ADprCO,IAAM,wBAAwBC,GAClC,OAAO;AAAA,EACN,IAAIA,GAAE,OAAO;AAAA,EACb,OAAOA,GAAE,OAAO;AAAA,EAChB,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,OAAOA,GAAE,OAAO;AAAA,EAChB,cAAcA,GAAE,OAAO;AAAA,EACvB,cAAcA,GAAE,KAAK;AAAA,EACrB,aAAaA,GAAE,KAAK;AAAA,EACpB,YAAYA,GAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA,EACzB,mBAAmBA,GAAE,WAAW,iBAAiB,EAAE,SAAS;AAAA,EAC5D,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AACvC,CAAC,EACA,YAAY;AASR,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,eAAe;AAAA,EAC/B,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,KAAKA,GAAE,OAAO,EAAE,SAAS;AAAA,EACzB,mBAAmBA,GAChB,WAAW,iBAAiB,EAC5B,SAAS,EACT,MAAM,MAAS;AAAA,EAClB,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AACvC,CAAC,EACA,YAAY;AASR,IAAM,4BAA4BA,GACtC,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,MAAMA,GAAE,MAAM,gBAAgB,EAAE,SAAS;AAC3C,CAAC,EACA,YAAY;;;AK9Df,SAAS,KAAAC,UAAS;AAEX,IAAM,uBAAuBA,GAAE,KAAK;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAIM,IAAM,gCAAgCA,GAC1C,OAAO;AAAA,EACN,eAAe,qBAAqB,SAAS;AAAA,EAC7C,oBAAoBA,GAAE,KAAK,CAAC,SAAS,QAAQ,KAAK,CAAC,EAAE,SAAS;AAAA,EAC9D,0BAA0BA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,mBAAmBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACvC,cAAcA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,SAAS;AAC/C,CAAC,EACA,YAAY;AAER,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,UAAUA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,gBAAgBA,GAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,eAAeA,GAAE,OAAO,EAAE,SAAS;AAAA,EACnC,UAAUA,GAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAE,SAAS;AAAA,EAChD,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,oBAAoB,8BAA8B,SAAS;AAC7D,CAAC,EACA,YAAY;AAIR,IAAM,iCAAiC,sBAAsB,OAAO;AAAA,EACzE,UAAUA,GAAE,OAAO;AAAA,EACnB,QAAQA,GAAE,OAAO;AAAA,EACjB,QAAQA,GAAE,OAAO;AACnB,CAAC;;;AC5CD,SAAS,KAAAC,UAAS;AAqCX,IAAMC,sBAAqB;AAK3B,IAAM,gBAAgBA;AAKtB,IAAM,oBAAoBC,GAC9B,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,SAASA,GAAE,OAAO;AACpB,CAAC,EACA,YAAY;AAIR,IAAM,2BAA2BA,GACrC,OAAO;AAAA,EACN,MAAMA,GAAE,KAAK,CAAC,aAAa,eAAe,SAAS,UAAU,SAAS,CAAC;AAAA,EACvE,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAY,iBAAiB,SAAS;AAAA,EACtC,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,mBAAmBA,GAAE,OAAO,EAAE,SAAS;AACzC,CAAC,EACA,YAAY;AAIR,IAAM,+BAA+BA,GACzC,OAAO;AAAA,EACN,cAAcA,GAAE,WAAW,YAAY,EAAE,SAAS;AAAA,EAClD,iBAAiBA,GACd,WAAW,oBAAoB,EAC/B,SAAS,EACT,MAAM,MAAS;AAAA,EAClB,eAAeA,GAAE,WAAW,aAAa,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACrE,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,iBAAiBA,GAAE,WAAW,eAAe,EAAE,SAAS;AAAA,EACxD,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACrC,yBAAyBA,GAAE,WAAW,eAAe,EAAE,SAAS;AAAA,EAChE,GAAG,6BAA6B;AAClC,CAAC,EACA,YAAY;AAMR,IAAM,+BAA+BA,GACzC,OAAO;AAAA,EACN,MAAMA,GAAE,uCAA2C;AAAA,EACnD,WAAWA,GAAE,OAAO;AAAA,EACpB,WAAWA,GAAE,OAAO;AAAA,EACpB,SAAS,gBAAgB,SAAS;AAAA,EAClC,SAASA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,IAAIA,GAAE,OAAO,EAAE,SAAS;AAC1B,CAAC,EACA,YAAY;AAMR,IAAM,uCAAuCA,GACjD,OAAO;AAAA,EACN,MAAMA,GAAE,yDAAoD;AAAA,EAC5D,WAAWA,GAAE,OAAO;AAAA,EACpB,UAAUA,GAAE,OAAO;AAAA,EACnB,QAAQ;AACV,CAAC,EACA,YAAY;AAMR,IAAM,kCAAkCA,GAC5C,OAAO;AAAA,EACN,MAAMA,GAAE,6CAA8C;AAAA,EACtD,SAAS;AAAA,EACT,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,WAAWA,GAAE,OAAO,EAAE,SAAS;AACjC,CAAC,EACA,YAAY;AAMR,IAAM,0BAA0BA,GACpC,OAAO;AAAA,EACN,MAAMA,GAAE,2BAAqC;AAAA,EAC7C,SAASA,GAAE,OAAO;AAAA,EAClB,WAAWA,GAAE,WAAW,cAAc;AAAA,EACtC,WAAWA,GAAE,OAAO;AAAA,EACpB,OAAO,kBAAkB,SAAS;AACpC,CAAC,EACA,YAAY;AAIR,IAAM,6CAA6CA,GACvD,OAAO;AAAA,EACN,MAAMA,GAAE,uEAA2D;AAAA,EACnE,UAAUA,GAAE,WAAW,iBAAiB;AAC1C,CAAC,EACA,YAAY;AAMR,IAAM,uCAAuCA,GACjD,OAAO;AAAA,EACN,MAAMA,GAAE,uDAAmD;AAAA,EAC3D,WAAWA,GAAE,OAAO;AAAA,EACpB,YAAYA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAAA,EAC9B,gBAAgBA,GAAE,WAAW,uBAAuB;AACtD,CAAC,EACA,YAAY;AAMR,IAAM,oCAAoCA,GAC9C,OAAO;AAAA,EACN,MAAMA,GAAE,iDAAgD;AAAA,EACxD,UAAU;AACZ,CAAC,EACA,YAAY;AAMR,IAAM,wCAAwCA,GAClD,OAAO;AAAA,EACN,MAAMA,GAAE,2DAAqD;AAAA,EAC7D,OAAOA,GAAE,OAAO;AAClB,CAAC,EACA,YAAY;AAMR,IAAM,qCAAqCA,GAC/C,OAAO;AAAA,EACN,MAAMA,GAAE,qDAAkD;AAAA,EAC1D,SAASA,GAAE,MAAM,yBAAyB;AAAA,EAC1C,SAAS;AACX,CAAC,EACA,YAAY;AAOR,IAAM,uCAAuCA,GACjD,OAAO;AAAA,EACN,MAAMA,GAAE,yDAAoD;AAAA,EAC5D,WAAWA,GAAE,OAAO;AAAA,EACpB,YAAYA,GAAE,OAAO;AAAA,EACrB,WAAWA,GAAE,OAAO;AACtB,CAAC,EACA,YAAY;AAOR,IAAM,0CAA0CA,GACpD,OAAO;AAAA,EACN,MAAMA,GAAE,+DAAuD;AAAA,EAC/D,WAAWA,GAAE,OAAO;AAAA,EACpB,YAAYA,GAAE,OAAO;AACvB,CAAC,EACA,YAAY;AAMR,IAAM,sCAAsCA,GAChD,OAAO;AAAA,EACN,MAAMA,GAAE,uDAAmD;AAAA,EAC3D,WAAWA,GAAE,OAAO;AAAA,EACpB,YAAYA,GAAE,OAAO;AAAA,EACrB,WAAWA,GAAE,OAAO;AACtB,CAAC,EACA,YAAY;AAMR,IAAM,yCAAyCA,GACnD,OAAO;AAAA,EACN,MAAMA,GAAE,6DAAsD;AAAA,EAC9D,WAAWA,GAAE,OAAO;AAAA,EACpB,YAAYA,GAAE,OAAO;AAAA,EACrB,YAAYA,GAAE,OAAO,EAAE,SAAS;AAClC,CAAC,EACA,YAAY;AAMR,IAAM,6BAA6BA,GACvC,OAAO;AAAA,EACN,MAAMA,GAAE,mCAAyC;AAAA,EACjD,SAASD;AACX,CAAC,EACA,YAAY;AAIR,IAAM,6CAA6CC,GACvD,OAAO;AAAA,EACN,MAAMA,GAAE,uEAA2D;AAAA,EACnE,WAAWA,GAAE,OAAO;AAAA,EACpB,YAAY;AACd,CAAC,EACA,YAAY;AAMR,IAAM,wCAAwCA,GAClD,OAAO;AAAA,EACN,MAAMA,GAAE,2DAAqD;AAAA,EAC7D,OAAOA,GAAE,WAAW,YAAY;AAClC,CAAC,EACA,YAAY;AAMR,IAAM,2CAA2CA,GACrD,OAAO;AAAA,EACN,MAAMA,GAAE,iEAAwD;AAAA,EAChE,UAAUA,GAAE,MAAM,oBAAoB;AACxC,CAAC,EACA,YAAY;AAMR,IAAM,yCAAyCA,GACnD,OAAO;AAAA,EACN,MAAMA,GAAE,6DAAsD;AAAA,EAC9D,aAAaA,GAAE,MAAM,sBAAsB;AAC7C,CAAC,EACA,YAAY;AAMR,IAAM,qCAAqCA,GAC/C,OAAO;AAAA,EACN,MAAMA,GAAE,mDAAiD;AAAA,EACzD,WAAWA,GAAE,OAAO;AACtB,CAAC,EACA,YAAY;AAMR,IAAM,yCAAyCA,GACnD,OAAO;AAAA,EACN,MAAMA,GAAE,6DAAsD;AAAA,EAC9D,iBAAiBA,GAAE,OAAO;AAC5B,CAAC,EACA,YAAY;AAMR,IAAM,2CAA2CA,GACrD,OAAO;AAAA,EACN,MAAMA,GAAE,iEAAwD;AAAA,EAChE,iBAAiBA,GAAE,OAAO;AAAA,EAC1B,UAAUA,GAAE,OAAO;AACrB,CAAC,EACA,YAAY;AAMR,IAAM,oCAAoCA,GAC9C,OAAO;AAAA,EACN,MAAMA,GAAE,mDAAiD;AAAA,EACzD,YAAYA,GAAE,OAAO;AAAA,EACrB,SAASA,GAAE,OAAO;AAAA,EAClB,SAASA,GAAE,OAAO;AAAA,EAClB,OAAOA,GAAE,OAAO;AAClB,CAAC,EACA,YAAY;AAMR,IAAM,qCAAqCA,GAC/C,OAAO;AAAA,EACN,MAAMA,GAAE,qDAAkD;AAAA,EAC1D,YAAYA,GAAE,OAAO;AAAA,EACrB,SAASA,GAAE,WAAW,cAAc;AAAA,EACpC,SAASA,GAAE,OAAO;AACpB,CAAC,EACA,YAAY;AAMR,IAAM,oBAAoBA,GAC9B,OAAO;AAAA,EACN,SAASA,GAAE,OAAO;AAAA,EAClB,SAASA,GAAE,OAAO,EAAE,SAAS;AAC/B,CAAC,EACA,YAAY;AAIR,IAAM,mBAAmBA,GAC7B,OAAO;AAAA,EACN,UAAUA,GAAE,OAAO;AAAA,EACnB,QAAQA,GAAE,OAAO;AAAA,EACjB,QAAQA,GAAE,OAAO;AAAA,EACjB,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAASA,GAAE,OAAO,EAAE,SAAS;AAC/B,CAAC,EACA,YAAY;AAIR,IAAM,yCAAyCA,GACnD,OAAO;AAAA,EACN,MAAMA,GAAE,6DAAsD;AAAA,EAC9D,QAAQA,GAAE,OAAO;AAAA,EACjB,eAAe;AAAA,EACf,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,cAAcA,GAAE,MAAM,iBAAiB;AAAA,EACvC,gBAAgBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACpC,qBAAqBA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC1C,iBAAiBA,GAAE,OAAO,EAAE,SAAS;AACvC,CAAC,EACA,YAAY;AAMR,IAAM,2CAA2CA,GACrD,OAAO;AAAA,EACN,MAAMA,GAAE,iEAAwD;AAAA,EAChE,QAAQA,GAAE,OAAO;AAAA,EACjB,eAAe,qBAAqB,SAAS;AAAA,EAC7C,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACpC,YAAYA,GAAE,KAAK,CAAC,aAAa,OAAO,CAAC;AAAA,EACzC,aAAaA,GAAE,MAAM,gBAAgB,EAAE,SAAS;AAClD,CAAC,EACA,YAAY;AAOR,IAAM,8BAA8BA,GACxC,OAAO;AAAA,EACN,MAAMA,GAAE,OAAO;AAAA,EACf,SAASA,GAAE,OAAO;AAAA,EAClB,SAASA,GAAE,QAAQ,EAAE,SAAS;AAChC,CAAC,EACA,YAAY;AAKR,IAAM,qCAAqCA,GAC/C,OAAO;AAAA,EACN,MAAMA,GAAE,mDAAiD;AAAA,EACzD,WAAWA,GAAE,OAAO;AAAA,EACpB,kBAAkB,iBAAiB,SAAS;AAAA,EAC5C,uBAAuB,4BAA4B,SAAS;AAC9D,CAAC,EACA,YAAY;AAOR,IAAM,gCAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,mCAAmCA,GAAE;AAAA,EAChD;AAAA,EACA;AACF;AAOA,IAAM,mCAAmCA,GACtC,OAAO;AAAA,EACN,cAAc;AAChB,CAAC,EACA,YAAY;AAGR,IAAM,kCAIT;AAaJ,IAAM,6BAA6B,0BAA0B,OAAO;AAAA,EAClE,QAAQA,GAAE,+DAA8C;AAAA,EACxD,QAAQ;AACV,CAAC;AAGM,IAAM,4BAIT;AAYG,IAAM,oCAAoCA,GAC9C,OAAO;AAAA,EACN,MAAMA,GAAE,yBAAiC;AAAA,EACzC,UAAUA,GAAE,OAAO;AAAA,EACnB,UAAUA,GAAE,OAAO;AAAA,EACnB,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAClC,CAAC,EACA,YAAY;AAMR,IAAM,uCAAuCA,GACjD,OAAO;AAAA,EACN,MAAMA,GAAE,4BAAoC;AAAA,EAC5C,aAAaA,GAAE,OAAO;AAAA,EACtB,SAASA,GAAE,OAAO;AAAA,EAClB,mBAAmBA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAChD,aAAaA,GAAE,OAAO,EAAE,SAAS;AACnC,CAAC,EACA,YAAY;AAMR,IAAM,sCAAsCA,GAChD,OAAO;AAAA,EACN,MAAMA,GAAE,6BAAmC;AAAA,EAC3C,UAAUA,GAAE,OAAO;AAAA,EACnB,UAAUA,GAAE,OAAO;AAAA,EACnB,SAASA,GAAE,OAAO;AACpB,CAAC,EACA,YAAY;AAMR,IAAM,wBAAwBA,GAClC,OAAO;AAAA,EACN,OAAOA,GAAE,OAAO;AAAA,EAChB,OAAOA,GAAE,OAAO;AAAA,EAChB,UAAUA,GAAE,OAAO;AAAA,EACnB,SAASA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAC7B,CAAC,EACA,YAAY;AAIR,IAAM,mCAAmCA,GAC7C,OAAO;AAAA,EACN,MAAMA,GAAE,gCAAoC;AAAA,EAC5C,eAAeA,GAAE,OAAO;AAAA,EACxB,QAAQA,GACL,OAAO;AAAA,IACN,WAAWA,GAAE,MAAM,qBAAqB;AAAA,EAC1C,CAAC,EACA,SAAS;AAAA,EACZ,YAAYA,GACT,OAAO;AAAA,IACN,SAASA,GAAE,OAAO;AAAA,IAClB,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,CAAC,EACA,SAAS;AACd,CAAC,EACA,YAAY;AAMR,IAAM,wCAAwCA,GAClD,OAAO;AAAA,EACN,MAAMA,GAAE,2CAAyC;AAAA,EACjD,MAAMA,GAAE,OAAO;AAAA,EACf,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,aAAaA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AAC5C,CAAC,EACA,YAAY;AAMR,IAAM,0CAA0CA,GACpD,OAAO;AAAA,EACN,MAAMA,GAAE,8CAA2C;AAAA,EACnD,UAAUA,GAAE,OAAO;AAAA,EACnB,OAAOA,GAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,YAAY;AAMR,IAAM,2CAA2CA,GACrD,OAAO;AAAA,EACN,MAAMA,GAAE,iDAA4C;AAAA,EACpD,qBAAqBA,GAAE,OAAO;AAAA,EAC9B,0BAA0BA,GAAE,MAAMA,GAAE,OAAO,CAAC;AAC9C,CAAC,EACA,YAAY;AAMR,IAAM,0CAA0CA,GACpD,OAAO;AAAA,EACN,MAAMA,GAAE,sCAAuC;AAAA,EAC/C,UAAUA,GAAE,OAAO;AAAA,EACnB,UAAUA,GAAE,OAAO;AAAA,EACnB,cAAcA,GAAE,OAAO;AAAA,EACvB,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAClC,CAAC,EACA,YAAY;AAMR,IAAM,mCAAmCA,GAC7C,OAAO;AAAA,EACN,MAAMA,GAAE,gCAAoC;AAAA,EAC5C,UAAUA,GAAE,OAAO;AAAA,EACnB,aAAaA,GAAE,OAAO;AACxB,CAAC,EACA,YAAY;AAOR,IAAM,gCAAgCA,GAAE,mBAAmB,QAAQ;AAAA,EACxE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAOM,IAAM,6BAA6BA,GACvC,OAAO;AAAA,EACN,SAAS;AAAA,EACT,kBAAkBA,GAAE,WAAW,oBAAoB;AAAA,EACnD,SAAS;AACX,CAAC,EACA,YAAY;AAKR,IAAM,uCAAuCA,GACjD,OAAO;AAAA,EACN,UAAUA,GAAE,MAAM,0BAA0B;AAAA,EAC5C,SAASA,GAAE,MAAM,8BAA8B;AACjD,CAAC,EACA,YAAY;AAOR,IAAM,iCAAiC,qBAAqB,OAAO;AAAA,EACxE,QAAQA,GAAE,2DAA4C;AAAA,EACtD,QAAQ;AACV,CAAC;AAkBM,IAAM,gCAAgCA,GAC1C,OAAO;AAAA,EACN,gBAAgBA,GAAE,WAAW,uBAAuB;AAAA,EACpD,SAASA,GAAE,OAAO,EAAE,SAAS;AAC/B,CAAC,EACA,OAAO;AAOH,IAAM,kCAAkC;AAAA,EAC7C;AACF;AAMO,IAAM,6BAA6BA,GACvC,OAAO;AAAA,EACN,YAAYA,GAAE,OAAO;AAAA,EACrB,WAAWA,GAAE,MAAM,qBAAqB;AAC1C,CAAC,EACA,YAAY;AAKR,IAAM,uBAAuB,qBAAqB,OAAO;AAAA,EAC9D,QAAQA,GAAE,uCAAkC;AAAA,EAC5C,QAAQ;AACV,CAAC;AAKM,IAAM,+BAA+BA,GACzC,OAAO;AAAA,EACN,OAAOA,GAAE,OAAO;AAAA,EAChB,UAAUA,GAAE,OAAO;AAAA,EACnB,QAAQA,GAAE,OAAO;AACnB,CAAC,EACA,OAAO;AAOH,IAAM,sBAAsBA,GAChC,OAAO;AAAA,EACN,WAAWA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,SAASA,GAAE,MAAM,4BAA4B;AAC/C,CAAC,EACA,OAAO;AAKH,IAAM,wBAAwB,qBAAqB,mBAAmB;AAI7E,IAAM,kCAAkCA,GAAE,MAAM;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,iCAIT;;;ACtyBG,IAAM,cAAsB;AAG5B,IAAM,UAAU;AAAA,EACrB,MAAM;AAAA,EACN,UAAU,EAAE,UAAU,cAAuB,SAAS,YAAY;AACpE;;;ACdO,IAAM,kBAAN,MAAM,yBAAwB,MAAM;AAAA,EAChC;AAAA,EAEA;AAAA,EAET,YAAY,SAAiB,SAA+C;AAC1E,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,MAAM,SAAS,OAAO;AAC3B,SAAK,WAAW,SAAS,YAAY;AACrC,WAAO,eAAe,MAAM,iBAAgB,SAAS;AAAA,EACvD;AACF;AAEO,IAAM,gBAAN,MAAM,uBAAsB,MAAM;AAAA,EAC9B;AAAA,EAEA;AAAA,EAET,YAAY,SAAiB,SAA6C;AACxE,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,OAAO,SAAS;AACrB,SAAK,OAAO,SAAS;AACrB,WAAO,eAAe,MAAM,eAAc,SAAS;AAAA,EACrD;AACF;AAEO,IAAM,eAAN,MAAM,sBAAqB,MAAM;AAAA,EACtC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,WAAO,eAAe,MAAM,cAAa,SAAS;AAAA,EACpD;AACF;AAEO,IAAM,uBAAN,MAAM,8BAA6B,aAAa;AAAA,EAC5C;AAAA,EAET,YAAY,WAAmB;AAC7B,UAAM,sBAAsB,SAAS,EAAE;AACvC,SAAK,OAAO;AACZ,SAAK,YAAY;AACjB,WAAO,eAAe,MAAM,sBAAqB,SAAS;AAAA,EAC5D;AACF;AAEO,IAAM,eAAN,MAAM,sBAAqB,MAAM;AAAA,EACtC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,WAAO,eAAe,MAAM,cAAa,SAAS;AAAA,EACpD;AACF;AAEO,IAAM,mBAAN,MAAM,0BAAyB,MAAM;AAAA,EACjC;AAAA,EAEA;AAAA,EAET,YACE,SACA,SACA;AACA,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,WAAW,SAAS,YAAY;AACrC,SAAK,SAAS,SAAS,UAAU;AACjC,WAAO,eAAe,MAAM,kBAAiB,SAAS;AAAA,EACxD;AACF;;;ACtEA,SAA4B,aAAa;AACzC,YAAY,cAAc;;;ACCnB,SAAS,SAAS,OAAkD;AACzE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;;ADQA,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,0BAA0B;AAEzB,IAAM,mBAAN,MAAuD;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,eAAoC;AAAA,EACpC,oBAA+C;AAAA,EAC/C,iBAAyC;AAAA,EACzC,eAAqC;AAAA;AAAA,EAGrC,eAA6B;AAAA;AAAA,EAG7B,aAA4B,QAAQ,QAAQ;AAAA,EAE5C,eAAe;AAAA,EACf,YAAY;AAAA,EAEpB,YAAY,UAAmC,CAAC,GAAG;AACjD,SAAK,WAAW,QAAQ,YAAY;AACpC,SAAK,WAAW,QAAQ,WACpB,CAAC,GAAG,QAAQ,QAAQ,IACpB,CAAC,GAAG,iBAAiB;AACzB,SAAK,MAAM,QAAQ;AACnB,SAAK,MAAM,QAAQ;AACnB,SAAK,iBACF,QAAQ,eAAe,0BAA0B,OAAS;AAAA,EAC/D;AAAA,EAEA,IAAI,cAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,UAAyB;AAC7B,QAAI,KAAK,cAAc;AACrB,YAAM,IAAI,gBAAgB,+BAA+B;AAAA,QACvD,UAAU,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AAEA,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,aAAa,QAAQ,QAAQ;AAElC,UAAM,YAAY,KAAK,MAAM,EAAE,GAAG,QAAQ,KAAK,GAAG,KAAK,IAAI,IAAI;AAE/D,QAAI;AACF,WAAK,eAAe,MAAM,KAAK,UAAU,KAAK,UAAU;AAAA,QACtD,OAAO,CAAC,QAAQ,QAAQ,MAAM;AAAA,QAC9B,KAAK,KAAK;AAAA,QACV,KAAK;AAAA,MACP,CAAC;AAAA,IACH,SAAS,KAAc;AACrB,YAAM,UACJ,eAAe,QACX,kCAAkC,IAAI,OAAO,KAC7C;AACN,YAAM,IAAI,gBAAgB,SAAS;AAAA,QACjC,UAAU,KAAK;AAAA,QACf,KAAK,KAAK;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,SAAK,eAAe;AACpB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,KAAK,SAAwC;AAC3C,QAAI,KAAK,cAAc;AACrB,YAAM,KAAK;AAAA,IACb;AACA,QAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,gBAAgB,CAAC,KAAK,aAAa,OAAO;AACxE,YAAM,IAAI,gBAAgB,2BAA2B;AAAA,QACnD,UAAU,KAAK;AAAA,MACjB,CAAC;AAAA,IACH;AAEA,UAAM,OAAO,KAAK,UAAU,OAAO,IAAI;AAGvC,UAAM,gBAAgB,KAAK;AAE3B,SAAK,cAAc,YAAY;AAG7B,YAAM,cAAc,MAAM,MAAM;AAAA,MAAC,CAAC;AAElC,UACE,CAAC,KAAK,gBACN,CAAC,KAAK,aAAa,SACnB,KAAK,aAAa,UAClB,KAAK,WACL;AACA,cAAM,IAAI,gBAAgB,qCAAqC;AAAA,UAC7D,UAAU,KAAK;AAAA,QACjB,CAAC;AAAA,MACH;AAEA,UAAI,KAAK,cAAc;AACrB,cAAM,KAAK;AAAA,MACb;AAEA,YAAM,IAAI,QAAc,CAACC,UAAS,WAAW;AAC3C,YAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,aAAa,OAAO;AAClD;AAAA,YACE,IAAI,gBAAgB,6BAA6B;AAAA,cAC/C,UAAU,KAAK;AAAA,YACjB,CAAC;AAAA,UACH;AACA;AAAA,QACF;AAEA,cAAM,QAAQ,KAAK,aAAa;AAChC,YAAI,cAAc,SAAS,CAAC,MAAM,UAAU;AAC1C;AAAA,YACE,IAAI,gBAAgB,iCAAiC;AAAA,cACnD,UAAU,KAAK;AAAA,YACjB,CAAC;AAAA,UACH;AACA;AAAA,QACF;AAEA,cAAM,MAAM,MAAM,CAAC,UAAU;AAC3B,cAAI,OAAO;AACT,kBAAM,MAAM,MAAM,WAAW,OAAO,KAAK;AACzC,gBAAI,IAAI,SAAS,OAAO,KAAK,IAAI,SAAS,YAAY,GAAG;AACvD;AAAA,gBACE,IAAI,gBAAgB,qCAAqC;AAAA,kBACvD,UAAU,KAAK;AAAA,gBACjB,CAAC;AAAA,cACH;AAAA,YACF,OAAO;AACL;AAAA,gBACE,IAAI;AAAA,kBACF,qCAAqC,GAAG;AAAA,kBACxC,EAAE,UAAU,KAAK,SAAS;AAAA,gBAC5B;AAAA,cACF;AAAA,YACF;AAAA,UACF,OAAO;AACL,YAAAA,SAAQ;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,GAAG;AAAA,EACL;AAAA,EAEA,UAAU,UAAiC;AACzC,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEA,QAAQ,UAA+B;AACrC,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,WAAW;AAClB;AAAA,IACF;AAEA,SAAK,YAAY;AACjB,SAAK,eAAe;AAEpB,UAAM,OAAO,KAAK;AAClB,SAAK,eAAe;AAEpB,QAAI,KAAK,mBAAmB;AAC1B,WAAK,kBAAkB,MAAM;AAC7B,WAAK,oBAAoB;AAAA,IAC3B;AAEA,QAAI,QAAQ,KAAK,aAAa,QAAQ,CAAC,KAAK,QAAQ;AAClD,YAAM,IAAI,QAAc,CAACA,aAAY;AACnC,cAAM,UAAU,WAAW,MAAM;AAE/B,cAAI,KAAK,aAAa,QAAQ,CAAC,KAAK,QAAQ;AAC1C,gBAAI;AACF,mBAAK,KAAK,SAAS;AAAA,YACrB,QAAQ;AAAA,YAER;AAAA,UACF;AAAA,QACF,GAAG,KAAK,aAAa;AAErB,aAAK,KAAK,QAAQ,MAAM;AACtB,uBAAa,OAAO;AACpB,UAAAA,SAAQ;AAAA,QACV,CAAC;AAGD,YAAI,KAAK,OAAO;AACd,cAAI;AACF,iBAAK,MAAM,IAAI;AAAA,UACjB,QAAQ;AAAA,UAER;AAAA,QACF;AAEA,YAAI;AACF,eAAK,KAAK,SAAS;AAAA,QACrB,QAAQ;AAEN,uBAAa,OAAO;AACpB,UAAAA,SAAQ;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH;AAEA,SAAK,YAAY;AAAA,EACnB;AAAA,EAEQ,gBAAsB;AAC5B,UAAM,OAAO,KAAK;AAClB,QAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ;AACzB;AAAA,IACF;AAEA,SAAK,oBAA6B,yBAAgB;AAAA,MAChD,OAAO,KAAK;AAAA,MACZ,WAAW;AAAA,IACb,CAAC;AAED,SAAK,kBAAkB,GAAG,QAAQ,CAAC,SAAS;AAC1C,YAAM,UAAU,KAAK,KAAK;AAC1B,UAAI,CAAC,SAAS;AACZ;AAAA,MACF;AAGA,UAAI,QAAQ,WAAW,GAAG,GAAG;AAC3B,YAAI;AACF,gBAAM,SAAkB,KAAK,MAAM,OAAO;AAC1C,cAAI,KAAK,kBAAkB,SAAS,MAAM,GAAG;AAC3C,iBAAK,eAAe,MAAM;AAAA,UAC5B;AAAA,QACF,QAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF,CAAC;AAED,SAAK,GAAG,SAAS,CAAC,UAAU;AAC1B,WAAK,eAAe,IAAI;AAAA,QACtB,kCAAkC,MAAM,OAAO;AAAA,QAC/C;AAAA,UACE,UAAU,KAAK;AAAA,UACf,KAAK,KAAK;AAAA,QACZ;AAAA,MACF;AACA,WAAK,eAAe;AACpB,UAAI,CAAC,KAAK,aAAa,KAAK,cAAc;AACxC,aAAK,aAAa,KAAK,YAAY;AAAA,MACrC;AAAA,IACF,CAAC;AAED,SAAK,GAAG,QAAQ,CAAC,MAAM,WAAW;AAChC,UAAI,KAAK,mBAAmB;AAC1B,aAAK,kBAAkB,MAAM;AAC7B,aAAK,oBAAoB;AAAA,MAC3B;AAEA,WAAK,eAAe;AAEpB,UAAI,CAAC,KAAK,WAAW;AACnB,cAAM,WAAW,QAAQ;AACzB,cAAM,aAAa,UAAU;AAE7B,YAAI;AACJ,YAAI,YAAY;AACd,oBAAU,6BAA6B,UAAU;AAAA,QACnD,WAAW,aAAa,QAAQ,aAAa,GAAG;AAC9C,oBAAU,gDAAgD,QAAQ;AAAA,QACpE,WAAW,aAAa,GAAG;AACzB,oBAAU;AAAA,QACZ,OAAO;AACL,oBAAU;AAAA,QACZ;AAEA,aAAK,eAAe,IAAI,iBAAiB,SAAS;AAAA,UAChD;AAAA,UACA,QAAQ;AAAA,QACV,CAAC;AAED,YAAI,KAAK,cAAc;AACrB,eAAK,aAAa,KAAK,YAAY;AAAA,QACrC;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AE1TA,SAAS,MAAM,cAAc;AAqEtB,SAAS,qBACd,cACA,WACM;AACN,MAAI;AACJ,QAAM,SAAS,gCAAgC;AAAA,IAC7C,aAAa,QAAQ;AAAA,EACvB;AACA,MAAI,OAAO,SAAS;AAClB,uBAAmB,OAAO,KAAK,aAAa;AAAA,EAC9C;AAEA,aAAW,YAAY,WAAW;AAChC,QACE,SAAS,QAAQ,QAAQ,QACzB,SAAS,OAAO,SAAS,kBACzB;AACA;AAAA,IACF;AAEA,QAAI;AACF,eAAS,SAAS,YAAY;AAAA,IAChC,QAAQ;AAAA,IAER;AAAA,EACF;AACF;AAGA,IAAM,oCAGF;AAAA,EACF,oDAAqC;AAAA,EACrC,gCAA2B;AAC7B;AAEO,IAAM,iBAAN,MAAqB;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EAKA,mBAAmB,oBAAI,IAA4B;AAAA,EACnD,yBAAyB,oBAAI,IAA0B;AAAA,EAChE,qBAA+C;AAAA,EAC/C,kBAAyC;AAAA,EACzC,kBAAgC;AAAA,EAChC,UAAU;AAAA,EAElB,YAAY,SAST;AACD,SAAK,aAAa,QAAQ;AAC1B,SAAK,kBAAkB,QAAQ,kBAAkB;AACjD,SAAK,0BACH,QAAQ,0BAA0B;AAEpC,SAAK,WAAW,UAAU,CAAC,YAAqC;AAC9D,WAAK,eAAe,OAAO;AAAA,IAC7B,CAAC;AACD,SAAK,WAAW,QAAQ,CAAC,UAAiB;AACxC,WAAK,sBAAsB,KAAK;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,YACJ,QACA,QACA,SACkB;AAClB,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI,gBAAgB,2BAA2B;AAAA,IACvD;AAEA,QAAI,KAAK,oBAAoB,MAAM;AACjC,YAAM,IAAI;AAAA,QACR,oBAAoB,KAAK,gBAAgB,OAAO;AAAA,MAClD;AAAA,IACF;AAEA,UAAM,mBAAmB,WAAW,KAAK;AACzC,UAAM,YAAY,OAAO;AAEzB,UAAM,WAAW;AAAA,MACf,SAAS;AAAA,MACT,mBAAmB;AAAA,MACnB,wBAAwB;AAAA,MACxB;AAAA,MACA,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAGA,WAAO,IAAI,QAAiB,CAACC,UAAS,WAAW;AAC/C,YAAM,QAAQ,WAAW,MAAM;AAC7B,aAAK,iBAAiB,OAAO,SAAS;AACtC;AAAA,UACE,IAAI;AAAA,YACF,WAAW,MAAM,oBAAoB,gBAAgB;AAAA,UACvD;AAAA,QACF;AAAA,MACF,GAAG,gBAAgB;AAEnB,YAAM,UAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAAA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,WAAK,iBAAiB,IAAI,WAAW,OAAO;AAE5C,UAAI;AACF,aAAK,WAAW,KAAK,QAAQ;AAAA,MAC/B,SAAS,WAAW;AAClB,qBAAa,KAAK;AAClB,aAAK,iBAAiB,OAAO,SAAS;AACtC,YAAI,qBAAqB,OAAO;AAC9B;AAAA,YACE,IAAI,gBAAgB,2BAA2B,UAAU,OAAO,EAAE;AAAA,UACpE;AAAA,QACF,OAAO;AACL,iBAAO,IAAI,gBAAgB,wBAAwB,CAAC;AAAA,QACtD;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,eACE,UACA,QACY;AACZ,UAAM,WAAiC,EAAE,UAAU,OAAO;AAC1D,SAAK,uBAAuB,IAAI,QAAQ;AAExC,QAAI,eAAe;AACnB,WAAO,MAAM;AACX,UAAI,CAAC,cAAc;AACjB,uBAAe;AACf,aAAK,uBAAuB,OAAO,QAAQ;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,qBAAqB,SAAkC;AACrD,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EAEA,yBAA+B;AAC7B,SAAK,qBAAqB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,kBAAkB,SAA+B;AAC/C,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,sBAA4B;AAC1B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,IAAI,YAAqB;AACvB,WAAO,CAAC,KAAK,WAAW,KAAK,oBAAoB;AAAA,EACnD;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,SAAS;AAChB;AAAA,IACF;AACA,SAAK,UAAU;AAEf,UAAM,QAAQ,IAAI;AAAA,MAChB;AAAA,IACF;AACA,SAAK,kBAAkB,KAAK;AAE5B,SAAK,qBAAqB;AAC1B,SAAK,kBAAkB;AACvB,SAAK,uBAAuB,MAAM;AAElC,UAAM,KAAK,WAAW,MAAM;AAAA,EAC9B;AAAA,EAEQ,eAAe,KAAoC;AACzD,UAAM,SAAS,qBAAqB,UAAU,GAAG;AAEjD,QAAI,CAAC,OAAO,SAAS;AAEnB;AAAA,IACF;AAEA,UAAM,MAAM,OAAO;AACnB,YAAQ,IAAI,MAAM;AAAA,MAChB;AACE,aAAK,gBAAgB,IAAI,IAAI,IAAI,QAAQ,IAAI,KAAK;AAClD;AAAA,MACF;AACE,aAAK,oBAAoB,GAAG;AAC5B;AAAA,MACF;AACE,aAAK,KAAK,qBAAqB,IAAI,QAAQ,IAAI,IAAI,IAAI,MAAM;AAC7D;AAAA,IACJ;AAAA,EACF;AAAA,EAEQ,gBACN,YACA,QACA,OACM;AACN,QAAI,cAAc,MAAM;AACtB;AAAA,IACF;AAEA,UAAM,UAAU,KAAK,iBAAiB,IAAI,UAAU;AAEpD,QAAI,WAAW,MAAM;AACnB;AAAA,IACF;AAEA,SAAK,iBAAiB,OAAO,UAAU;AACvC,iBAAa,QAAQ,KAAK;AAE1B,QAAI,SAAS,MAAM;AACjB,UAAI,MAAM,wCAA4C;AACpD,cAAM,YAAY;AAAA,UAChB,QAAQ,OAAO,WAAW,KAAK,QAAQ;AAAA,QACzC;AACA,gBAAQ,OAAO,IAAI,qBAAqB,SAAS,CAAC;AAClD;AAAA,MACF;AAEA,cAAQ;AAAA,QACN,IAAI,cAAc,MAAM,SAAS,EAAE,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC;AAAA,MACzE;AACA;AAAA,IACF;AAEA,YAAQ,QAAQ,MAAM;AAAA,EACxB;AAAA,EAEQ,oBAAoB,cAA6C;AACvE,yBAAqB,cAAc,KAAK,sBAAsB;AAAA,EAChE;AAAA,EAEA,MAAc,qBACZ,QACA,WACA,QACe;AACf,UAAM,cAAc,KAAK,wBAAwB,MAAM;AACvD,QAAI,+CAAqD;AACvD,YAAM,KAAK,yBAAyB,WAAW,MAAM;AAAA,IACvD,WAAW,yCAAkD;AAC3D,YAAM,KAAK,sBAAsB,WAAW,MAAM;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,MAAc,yBACZ,WACA,QACe;AACf,UAAM,UAAU,KAAK;AAErB,QAAI,WAAW,MAAM;AAEnB,WAAK;AAAA,QACH;AAAA,QACA,8BAA8B,MAAM;AAAA,UAClC;AAAA,QACF,CAAC;AAAA,MACH;AACA;AAAA,IACF;AAEA,QAAI;AACF,YAAM,eAAe,qCAAqC,MAAM,MAAM;AACtE,YAAM,YAAY,MAAM,QAAQ,QAAQ,QAAQ,YAAY,CAAC;AAC7D,YAAM,SACJ,OAAO,cAAc,WACjB,EAAE,gBAAgB,UAAU,IAC5B;AACN,WAAK;AAAA,QACH;AAAA,QACA,8BAA8B,MAAM,MAAM;AAAA,MAC5C;AAAA,IACF,SAAS,KAAK;AACZ,YAAM,eAAe,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACpE,WAAK;AAAA,QACH;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,sBACZ,WACA,QACe;AACf,UAAM,UAAU,KAAK;AAErB,QAAI,WAAW,MAAM;AAEnB,WAAK;AAAA,QACH;AAAA,QACA,oBAAoB,MAAM,EAAE,WAAW,MAAM,SAAS,CAAC,EAAE,CAAC;AAAA,MAC5D;AACA;AAAA,IACF;AAEA,QAAI;AACF,YAAM,eAAe,2BAA2B,MAAM,MAAM;AAC5D,YAAM,SAAS,MAAM,QAAQ,QAAQ,QAAQ,YAAY,CAAC;AAC1D,WAAK,cAAc,WAAW,oBAAoB,MAAM,MAAM,CAAC;AAAA,IACjE,SAAS,KAAK;AACZ,YAAM,eAAe,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACpE,WAAK;AAAA,QACH;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,sBAAsB,OAAoB;AAChD,SAAK,kBAAkB;AACvB,UAAM,kBAAkB,IAAI;AAAA,MAC1B,oBAAoB,MAAM,OAAO;AAAA,IACnC;AACA,oBAAgB,QAAQ;AACxB,SAAK,kBAAkB,eAAe;AAAA,EACxC;AAAA,EAEQ,cACN,WACA,QACM;AACN,UAAM,WAAoC;AAAA,MACxC,SAAS;AAAA,MACT,mBAAmB;AAAA,MACnB,wBAAwB;AAAA,MACxB;AAAA,MACA,IAAI;AAAA,MACJ;AAAA,IACF;AACA,SAAK,gBAAgB,QAAQ;AAAA,EAC/B;AAAA,EAEQ,mBACN,WACA,MACA,SACA,MACM;AACN,UAAM,WAAoC,EAAE,MAAM,QAAQ;AAC1D,QAAI,SAAS,QAAW;AACtB,eAAS,MAAM,IAAI;AAAA,IACrB;AAEA,UAAM,WAAoC;AAAA,MACxC,SAAS;AAAA,MACT,mBAAmB;AAAA,MACnB,wBAAwB;AAAA,MACxB;AAAA,MACA,IAAI;AAAA,MACJ,OAAO;AAAA,IACT;AACA,SAAK,gBAAgB,QAAQ;AAAA,EAC/B;AAAA,EAEQ,gBAAgB,SAAwC;AAC9D,QAAI;AACF,WAAK,WAAW,KAAK,OAAO;AAAA,IAC9B,QAAQ;AAAA,IAGR;AAAA,EACF;AAAA,EAEQ,kBAAkB,OAAoB;AAC5C,UAAM,UAAU,IAAI,IAAI,KAAK,gBAAgB;AAC7C,SAAK,iBAAiB,MAAM;AAE5B,eAAW,OAAO,QAAQ,OAAO,GAAG;AAClC,mBAAa,IAAI,KAAK;AACtB,UAAI,OAAO,KAAK;AAAA,IAClB;AAAA,EACF;AACF;;;ACpeA;AAAA;AAAA,yCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,yCAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA;AAAA;AAAA,sCAAAC;AAAA,EAAA,6BAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,6BAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA,gDAAAC;AAAA,EAAA,0CAAAC;AAAA,EAAA,2CAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA;AAAA,oCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA;AAAA;AAAA,gCAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,0CAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA;AAAA,yCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA;AAAA,qCAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA;AAAA,4BAAAC;AAAA,EAAA;AAAA,8BAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA,2BAAAC;AAAA,EAAA;AAAA;AAAA,+BAAAC;AAAA,EAAA,6BAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA;AAAA,2BAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,2BAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA;AAAA;AAAA,oCAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA;AAAA;AAAA,kCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCAAAC;AAAA,EAAA;AAAA;AAAA,uBAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,wCAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,mCAAA1B;AAAA,EAAA;AAAA;AAAA,oCAAA2B;AAAA,EAAA,mCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,0CAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA;AAAA;AAAA,0BAAAC;AAAA,EAAA,4CAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,uCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,8BAAAC;AAAA,EAAA,2CAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA,8CAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,uCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,4CAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,yCAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,uCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,8BAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA,6BAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAAC;AAAA,EAAA,uCAAAC;AAAA,EAAA;AAAA,iCAAAC;AAAA,EAAA;AAAA,yBAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA;AAAA,mBAAAC;AAAA,EAAA,8BAAAC;AAAA,EAAA,wCAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,iDAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,gDAAAC;AAAA,EAAA,0CAAAC;AAAA,EAAA;AAAA;AAAA,kCAAAC;AAAA,EAAA;AAAA,gDAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,6CAAAC;AAAA,EAAA;AAAA;AAAA,kDAAAC;AAAA,EAAA,8CAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,uBAAAC;AAAA,EAAA;AAAA,4BAAAC;AAAA,EAAA;AAAA;AAAA,gCAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,yBAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,0CAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,wCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,iCAAAC;AAAA,EAAA,4CAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,uCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA;AAAA;AAAA,+BAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA;AAAA,0BAAAC;AAAA,EAAA;AAAA,oDAAAC;AAAA,EAAA;AAAA,uBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,yBAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,4CAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,uCAAAC;AAAA,EAAA;AAAA,wBAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA;AAAA;AAAA,4CAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,wCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,qCAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA;AAAA;AAAA,kCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,uBAAAC;AAAA,EAAA,8BAAAC;AAAA,EAAA,gDAAAC;AAAA,EAAA,0CAAAC;AAAA,EAAA,2CAAAC;AAAA,EAAA,yCAAAC;AAAA,EAAA;AAAA;AAAA,mCAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,oCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA;AAAA;AAAA,iCAAAC;AAAA,EAAA,wCAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,6BAAAC;AAAA,EAAA;AAAA;AAAA;;;ACWO,IAAMC,8BAA6B;AAEnC,IAAMC,4BAA2B;AAEjC,IAAMC,mBAAkB;AAMxB,IAAM,0BAA0B;AAOhC,IAAM,2BAA2B;AAMjC,IAAM,qCAAqC;AAC3C,IAAM,iCAAiC;AACvC,IAAM,sCAAsC;AAC5C,IAAM,0CAA0C;AAEvD,IAAM,UAAU,CAAC,UAAkB,QAAQ;AAC3C,IAAM,UAAU,CAAC,UAAkB,QAAQ,QAAQ,EAAE;AACrD,IAAM,QAAQ,CAAC,UAAkB,QAAQ,QAAQ,EAAE;AAE5C,IAAM,uBAAuB;AAAA,EAClC,OAAO,QAAQ,CAAC;AAAA,EAChB,OAAO,MAAM,EAAE;AAAA,EACf,cAAc;AAAA,EACd,UAAU;AACZ;;;AClCO,IAAKC,sBAAL,kBAAKA,wBAAL;AACL,EAAAA,oBAAA,aAAU;AACV,EAAAA,oBAAA,cAAW;AACX,EAAAA,oBAAA,kBAAe;AAHL,SAAAA;AAAA,0BAAA;AAUL,IAAKC,oBAAL,kBAAKA,sBAAL;AACL,EAAAA,oCAAA,iBAAc,UAAd;AACA,EAAAA,oCAAA,qBAAkB,UAAlB;AACA,EAAAA,oCAAA,sBAAmB,UAAnB;AACA,EAAAA,oCAAA,oBAAiB,UAAjB;AACA,EAAAA,oCAAA,oBAAiB,UAAjB;AACA,EAAAA,oCAAA,0BAAuB,UAAvB;AACA,EAAAA,oCAAA,sBAAmB,UAAnB;AAEA,EAAAA,oCAAA,0BAAuB,UAAvB;AATU,SAAAA;AAAA,wBAAA;AAkBL,IAAKC,wBAAL,kBAAKA,0BAAL;AACL,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,UAAO;AAEP,EAAAA,sBAAA,SAAM;AACN,EAAAA,sBAAA,aAAU;AALA,SAAAA;AAAA,4BAAA;AAWL,IAAK,WAAL,kBAAKC,cAAL;AACL,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,WAAQ;AAHE,SAAAA;AAAA,GAAA;AAaL,IAAKC,iBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,UAAO;AAJG,SAAAA;AAAA,qBAAA;AAiBL,IAAKC,gBAAL,kBAAKA,kBAAL;AACL,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,cAAW;AALD,SAAAA;AAAA,oBAAA;AAaL,IAAKC,2BAAL,kBAAKA,6BAAL;AACL,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,mBAAgB;AAEhB,EAAAA,yBAAA,+BAA4B;AAC5B,EAAAA,yBAAA,oBAAiB;AACjB,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,0BAAuB;AACvB,EAAAA,yBAAA,wBAAqB;AACrB,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,0BAAuB;AACvB,EAAAA,yBAAA,6BAA0B;AAC1B,EAAAA,yBAAA,2BAAwB;AACxB,EAAAA,yBAAA,iBAAc;AAEd,EAAAA,yBAAA,wBAAqB;AAErB,EAAAA,yBAAA,yBAAsB;AACtB,EAAAA,yBAAA,YAAS;AAlBC,SAAAA;AAAA,+BAAA;AAsBL,IAAKC,wBAAL,kBAAKA,0BAAL;AACL,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,YAAS;AACT,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,gBAAa;AACb,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,sBAAmB;AAVT,SAAAA;AAAA,4BAAA;AAcL,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AAOL,IAAK,yBAAL,kBAAKC,4BAAL;AACL,EAAAA,wBAAA,cAAW;AACX,EAAAA,wBAAA,gBAAa;AAFH,SAAAA;AAAA,GAAA;AAML,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,WAAQ;AACR,EAAAA,sBAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AAOL,IAAKC,qBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,iCAA8B;AAC9B,EAAAA,mBAAA,mBAAgB;AAChB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,yBAAsB;AACtB,EAAAA,mBAAA,6BAA0B;AAE1B,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,0BAAuB;AAEvB,EAAAA,mBAAA,iBAAc;AAEd,EAAAA,mBAAA,uBAAoB;AAEpB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,oBAAiB;AAEjB,EAAAA,mBAAA,qBAAkB;AAElB,EAAAA,mBAAA,kBAAe;AAEf,EAAAA,mBAAA,oBAAiB;AAEjB,EAAAA,mBAAA,uBAAoB;AAEpB,EAAAA,mBAAA,2BAAwB;AAExB,EAAAA,mBAAA,kBAAe;AAxCL,SAAAA;AAAA,yBAAA;AA2CL,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,eAAY;AACZ,EAAAA,gBAAA,eAAY;AAFF,SAAAA;AAAA,GAAA;AAKL,IAAK,iCAAL,kBAAKC,oCAAL;AACL,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,YAAS;AAFC,SAAAA;AAAA,GAAA;AAML,IAAKC,qBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,0BAAuB;AACvB,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,cAAW;AAHD,SAAAA;AAAA,yBAAA;AAOL,IAAKC,2BAAL,kBAAKA,6BAAL;AACL,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,0BAAuB;AACvB,EAAAA,yBAAA,oBAAiB;AACjB,EAAAA,yBAAA,WAAQ;AACR,EAAAA,yBAAA,iCAA8B;AAC9B,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,wBAAqB;AACrB,EAAAA,yBAAA,yBAAsB;AACtB,EAAAA,yBAAA,sBAAmB;AACnB,EAAAA,yBAAA,2BAAwB;AACxB,EAAAA,yBAAA,wBAAqB;AACrB,EAAAA,yBAAA,0BAAuB;AACvB,EAAAA,yBAAA,6BAA0B;AAC1B,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,yBAAsB;AACtB,EAAAA,yBAAA,4BAAyB;AACzB,EAAAA,yBAAA,iCAA8B;AAC9B,EAAAA,yBAAA,2BAAwB;AACxB,EAAAA,yBAAA,8BAA2B;AAC3B,EAAAA,yBAAA,4BAAyB;AACzB,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,4BAAyB;AACzB,EAAAA,yBAAA,8BAA2B;AAC3B,EAAAA,yBAAA,uBAAoB;AACpB,EAAAA,yBAAA,wBAAqB;AACrB,EAAAA,yBAAA,4BAAyB;AACzB,EAAAA,yBAAA,8BAA2B;AAC3B,EAAAA,yBAAA,eAAY;AACZ,EAAAA,yBAAA,+BAA4B;AAO5B,EAAAA,yBAAA,8BAA2B;AApCjB,SAAAA;AAAA,+BAAA;AAuCL,IAAK,4BAAL,kBAAKC,+BAAL;AACL,EAAAA,2BAAA,6BAA0B;AAC1B,EAAAA,2BAAA,6BAA0B;AAC1B,EAAAA,2BAAA,mBAAgB;AAChB,EAAAA,2BAAA,4BAAyB;AAJf,SAAAA;AAAA,GAAA;AAOL,IAAKC,kBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,aAAU;AACV,EAAAA,gBAAA,eAAY;AACZ,EAAAA,gBAAA,YAAS;AAHC,SAAAA;AAAA,sBAAA;AAOL,IAAKC,mBAAL,kBAAKA,qBAAL;AACL,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,kBAAe;AACf,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,cAAW;AALD,SAAAA;AAAA,uBAAA;AASL,IAAKC,iBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,SAAM;AAHI,SAAAA;AAAA,qBAAA;AAOL,IAAKC,aAAL,kBAAKA,eAAL;AACL,EAAAA,WAAA,oBAAiB;AACjB,EAAAA,WAAA,kBAAe;AACf,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,eAAY;AACZ,EAAAA,WAAA,YAAS;AALC,SAAAA;AAAA,iBAAA;AASL,IAAKC,kBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,sBAAmB;AACnB,EAAAA,gBAAA,oBAAiB;AACjB,EAAAA,gBAAA,mBAAgB;AAChB,EAAAA,gBAAA,mBAAgB;AAChB,EAAAA,gBAAA,wBAAqB;AACrB,EAAAA,gBAAA,wBAAqB;AACrB,EAAAA,gBAAA,WAAQ;AAPE,SAAAA;AAAA,sBAAA;AAWL,IAAKC,qBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,+BAA4B;AAC5B,EAAAA,mBAAA,gCAA6B;AAC7B,EAAAA,mBAAA,mBAAgB;AAChB,EAAAA,mBAAA,4BAAyB;AANf,SAAAA;AAAA,yBAAA;AASL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,WAAQ;AALE,SAAAA;AAAA,GAAA;AAQL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,iBAAc;AACd,EAAAA,qBAAA,mBAAgB;AAChB,EAAAA,qBAAA,iBAAc;AACd,EAAAA,qBAAA,mBAAgB;AAChB,EAAAA,qBAAA,mBAAgB;AAChB,EAAAA,qBAAA,WAAQ;AANE,SAAAA;AAAA,GAAA;AASL,IAAKC,wBAAL,kBAAKA,0BAAL;AACL,EAAAA,sBAAA,WAAQ;AACR,EAAAA,sBAAA,eAAY;AAFF,SAAAA;AAAA,4BAAA;AAKL,IAAK,4BAAL,kBAAKC,+BAAL;AACL,EAAAA,2BAAA,eAAY;AACZ,EAAAA,2BAAA,aAAU;AACV,EAAAA,2BAAA,eAAY;AACZ,EAAAA,2BAAA,eAAY;AACZ,EAAAA,2BAAA,WAAQ;AALE,SAAAA;AAAA,GAAA;AASL,IAAKC,qBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,YAAS;AAFC,SAAAA;AAAA,yBAAA;AAML,IAAKC,gBAAL,kBAAKA,kBAAL;AAEL,EAAAA,cAAA,mBAAgB;AAEhB,EAAAA,cAAA,kBAAe;AAEf,EAAAA,cAAA,aAAU;AAEV,EAAAA,cAAA,YAAS;AAET,EAAAA,cAAA,sBAAmB;AAEnB,EAAAA,cAAA,eAAY;AAZF,SAAAA;AAAA,oBAAA;AAgBL,IAAKC,iBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,eAAY;AAJF,SAAAA;AAAA,qBAAA;AAQL,IAAKC,uBAAL,kBAAKA,yBAAL;AACL,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,aAAU;AACV,EAAAA,qBAAA,aAAU;AAHA,SAAAA;AAAA,2BAAA;AAOL,IAAKC,iBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,iBAAc;AACd,EAAAA,eAAA,gBAAa;AAHH,SAAAA;AAAA,qBAAA;AAOL,IAAKC,iBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,qBAAkB;AAClB,EAAAA,eAAA,qBAAkB;AAClB,EAAAA,eAAA,oBAAiB;AAHP,SAAAA;AAAA,qBAAA;AAOL,IAAKC,wBAAL,kBAAKA,0BAAL;AACL,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,mBAAgB;AAChB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,uBAAoB;AACpB,EAAAA,sBAAA,mBAAgB;AAChB,EAAAA,sBAAA,2BAAwB;AACxB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,2BAAwB;AACxB,EAAAA,sBAAA,kCAA+B;AAXrB,SAAAA;AAAA,4BAAA;AAoBL,IAAK,sBAAL,kBAAKC,yBAAL;AAML,EAAAA,qBAAA,2BAAwB;AANd,SAAAA;AAAA,GAAA;AAcL,IAAK,qBAAL,kBAAKC,wBAAL;AAEL,EAAAA,oBAAA,2BAAwB;AAFd,SAAAA;AAAA,GAAA;AAUL,IAAK,0BAAL,kBAAKC,6BAAL;AACL,EAAAA,yBAAA,kBAAe;AACf,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,cAAW;AACX,EAAAA,yBAAA,cAAW;AACX,EAAAA,yBAAA,cAAW;AACX,EAAAA,yBAAA,kBAAe;AACf,EAAAA,yBAAA,YAAS;AACT,EAAAA,yBAAA,cAAW;AARD,SAAAA;AAAA,GAAA;AAeL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,aAAU;AACV,EAAAA,mBAAA,cAAW;AAHD,SAAAA;AAAA,GAAA;AAML,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,UAAO;AACP,EAAAA,qBAAA,eAAY;AACZ,EAAAA,qBAAA,UAAO;AAHG,SAAAA;AAAA,GAAA;AAML,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,YAAS;AAJC,SAAAA;AAAA,GAAA;AAOL,IAAK,0BAAL,kBAAKC,6BAAL;AACL,EAAAA,yBAAA,UAAO;AACP,EAAAA,yBAAA,WAAQ;AACR,EAAAA,yBAAA,cAAW;AACX,EAAAA,yBAAA,sBAAmB;AACnB,EAAAA,yBAAA,aAAU;AACV,EAAAA,yBAAA,gBAAa;AACb,EAAAA,yBAAA,cAAW;AAPD,SAAAA;AAAA,GAAA;AAUL,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,oBAAA,YAAS;AACT,EAAAA,oBAAA,UAAO;AAFG,SAAAA;AAAA,GAAA;AASL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,iBAAc;AACd,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,0BAAuB;AACvB,EAAAA,iBAAA,yBAAsB;AACtB,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,oBAAiB;AACjB,EAAAA,iBAAA,iBAAc;AAVJ,SAAAA;AAAA,GAAA;AAaL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,iBAAc;AACd,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,0BAAuB;AACvB,EAAAA,eAAA,yBAAsB;AACtB,EAAAA,eAAA,oBAAiB;AACjB,EAAAA,eAAA,iBAAc;AAdJ,SAAAA;AAAA,GAAA;AA2BL,IAAK,UAAL,kBAAKC,aAAL;AAEL,EAAAA,SAAA,uBAAoB;AACpB,EAAAA,SAAA,uBAAoB;AACpB,EAAAA,SAAA,qBAAkB;AAClB,EAAAA,SAAA,mBAAgB;AAChB,EAAAA,SAAA,sBAAmB;AACnB,EAAAA,SAAA,uBAAoB;AACpB,EAAAA,SAAA,qBAAkB;AAClB,EAAAA,SAAA,sBAAmB;AACnB,EAAAA,SAAA,uBAAoB;AACpB,EAAAA,SAAA,qBAAkB;AAClB,EAAAA,SAAA,0BAAuB;AACvB,EAAAA,SAAA,qBAAkB;AAClB,EAAAA,SAAA,0BAAuB;AACvB,EAAAA,SAAA,qBAAkB;AAClB,EAAAA,SAAA,0BAAuB;AACvB,EAAAA,SAAA,gBAAa;AACb,EAAAA,SAAA,iBAAc;AAGd,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,gBAAa;AACb,EAAAA,SAAA,gBAAa;AACb,EAAAA,SAAA,iBAAc;AACd,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,mBAAgB;AAChB,EAAAA,SAAA,uBAAoB;AACpB,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,mBAAgB;AAChB,EAAAA,SAAA,mBAAgB;AAChB,EAAAA,SAAA,wBAAqB;AACrB,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,iBAAc;AACd,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,gBAAa;AACb,EAAAA,SAAA,gBAAa;AAGb,EAAAA,SAAA,sBAAmB;AACnB,EAAAA,SAAA,oBAAiB;AACjB,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,oBAAiB;AACjB,EAAAA,SAAA,oBAAiB;AACjB,EAAAA,SAAA,sBAAmB;AACnB,EAAAA,SAAA,iBAAc;AAGd,EAAAA,SAAA,gBAAa;AAGb,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,qBAAkB;AAClB,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,aAAU;AAGV,EAAAA,SAAA,oBAAiB;AAlEP,SAAAA;AAAA,GAAA;AAqEL,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,gBAAa;AACb,EAAAA,aAAA,iBAAc;AAFJ,SAAAA;AAAA,GAAA;AAUL,IAAK,+BAAL,kBAAKC,kCAAL;AACL,EAAAA,8BAAA,eAAY;AACZ,EAAAA,8BAAA,sBAAmB;AAFT,SAAAA;AAAA,GAAA;AASL,IAAKC,mBAAL,kBAAKA,qBAAL;AACL,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,SAAM;AATI,SAAAA;AAAA,uBAAA;AAYL,IAAKC,iBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,iCAA8B;AAC9B,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,YAAS;AAQT,EAAAA,eAAA,sBAAmB;AAfT,SAAAA;AAAA,qBAAA;AAkBL,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,sBAAmB;AACnB,EAAAA,aAAA,uBAAoB;AACpB,EAAAA,aAAA,sBAAmB;AACnB,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,kBAAe;AACf,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,eAAY;AAZF,SAAAA;AAAA,GAAA;AAeL,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,YAAS;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,cAAW;AAEX,EAAAA,cAAA,aAAU;AAEV,EAAAA,cAAA,aAAU;AALA,SAAAA;AAAA,GAAA;AAgBL,IAAKC,iBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AAPA,SAAAA;AAAA,qBAAA;AAUL,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,cAAW;AAFD,SAAAA;AAAA,GAAA;AAKL,IAAKC,iBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,aAAU;AAHA,SAAAA;AAAA,qBAAA;AAML,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,gBAAa;AACb,EAAAA,aAAA,kBAAe;AAFL,SAAAA;AAAA,GAAA;AASL,IAAK,WAAL,kBAAKC,cAAL;AACL,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,aAAU;AAFA,SAAAA;AAAA,GAAA;AAKL,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,YAAS;AACT,EAAAA,gBAAA,aAAU;AACV,EAAAA,gBAAA,eAAY;AAHF,SAAAA;AAAA,GAAA;AAML,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,YAAS;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,SAAM;AACN,EAAAA,mBAAA,WAAQ;AACR,EAAAA,mBAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AAUL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,SAAM;AAHI,SAAAA;AAAA,GAAA;AAML,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,aAAU;AAFA,SAAAA;AAAA,GAAA;;;ACpuBZ,SAAS,KAAAC,UAAS;AASlB,IAAM,2BAA2BC,GAAE,WAAWC,mBAAkB;AAEzD,IAAM,6BAA6BD,GAAE,WAAWE,qBAAoB;AAOpE,IAAMC,0BAAyBH,GAAE,OAAO;AAAA;AAAA,EAE7C,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,YAAYA,GAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAMI,yBAAwBJ,GAAE,OAAO;AAAA,EAC5C,SAASA,GAAE,QAAQK,gBAAe;AAAA;AAAA,EAElC,mBAAmBL,GAChB,QAAQM,2BAA0B,EAClC,SAAS,gEAAgE;AAAA;AAAA,EAE5E,wBAAwBN,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE5C,OAAOG,wBAAuB,SAAS;AACzC,CAAC;AAEM,IAAM,gDAAgDH,GAAE,OAAO;AAAA,EACpE,6BAA6BA,GAAE,OAAO;AAAA,EACtC,4BAA4BA,GAAE,OAAO;AAAA,EACrC,aAAa,yBAAyB,SAAS;AAAA,EAC/C,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC5C,CAAC;AAEM,IAAMO,sBAAqBP,GAAE,OAAO;AAAA,EACzC,MAAMA,GAAE,WAAWQ,iBAAgB;AAAA,EACnC,SAASR,GAAE,OAAO;AAAA,EAClB,MAAMA,GAAE,QAAQ,EAAE,SAAS;AAC7B,CAAC;AAEM,IAAMS,qBAAoBT,GAAE,OAAO;AAAA,EACxC,MAAMA,GAAE,QAAQ,SAAS;AAAA,EACzB,IAAIA,GAAE,OAAO;AAAA,EACb,QAAQA,GAAE,OAAO;AAAA,EACjB,QAAQA,GAAE,QAAQ,EAAE,SAAS;AAC/B,CAAC;AAED,IAAM,4BAA4BA,GAAE,OAAO;AAAA,EACzC,MAAMA,GAAE,QAAQ,UAAU;AAAA,EAC1B,IAAIA,GAAE,OAAO,EAAE,SAAS;AAAA,EACxB,QAAQA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,OAAOO,oBAAmB,SAAS;AACrC,CAAC;AAGM,IAAMG,6BAA4B,0BAA0B,OAAO;AAAA,EACxE,IAAIV,GAAE,OAAO;AAAA,EACb,QAAQA,GAAE,QAAQ;AACpB,CAAC;AAEM,IAAMW,6BAA4B,0BAA0B,OAAO;AAAA,EACxE,OAAOJ;AACT,CAAC;AAEM,IAAMK,0BAAyBZ,GAAE,OAAO;AAAA,EAC7C,MAAMA,GAAE,QAAQ,cAAc;AAAA,EAC9B,QAAQA,GAAE,OAAO;AAAA,EACjB,QAAQA,GAAE,QAAQ,EAAE,SAAS;AAC/B,CAAC;AAEM,IAAM,2BAA2BI,uBAAsB;AAAA,EAC5DK,mBAAkB;AACpB;AACO,IAAM,mCAAmCL,uBAAsB;AAAA,EACpEM,2BAA0B;AAC5B;AACO,IAAM,mCAAmCN,uBAAsB;AAAA,EACpEO,2BAA0B;AAC5B;AACA,IAAM,mCAAmCP,uBAAsB;AAAA,EAC7D,0BAA0B;AAC5B;AAEO,IAAM,4BAA4BJ,GAAE,MAAM;AAAA,EAC/C;AAAA,EACA;AACF,CAAC;AAEM,IAAM,gCAAgCI,uBAAsB;AAAA,EACjEQ,wBAAuB;AACzB;AAKO,IAAM,mBAAmBZ,GAAE,OAAO;AAAA,EACvC,UAAUA,GAAE,QAAQ,IAAI;AAC1B,CAAC;AAIM,IAAMa,wBAAuBb,GAAE,mBAAmB,QAAQ;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ACvHD,SAAS,KAAAc,WAAS;AAEX,IAAM,eAAeA,IAAE,OAAO,EAAE,KAAK;AAE5C,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EAC1C,YAAYA,IAAE,OAAO,EAAE,KAAK;AAAA,EAC5B,gBAAgBA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChC,QAAQA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,cAAcA,IAAE,OAAO;AACzB,CAAC;AAEM,IAAM,mBAAmBA,IAAE,OAAO;AAAA,EACvC,eAAeA,IAAE,QAAQ,CAAC;AAAA;AAAA,EAC1B,QAAQ;AAAA,EACR,WAAWA,IAAE,OAAO;AAAA,EACpB,sBAAsB,2BAA2B,SAAS;AAC5D,CAAC;AAEM,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EACjD,YAAYA,IAAE,OAAO,EAAE,KAAK;AAAA,EAC5B,cAAcA,IAAE,OAAO;AACzB,CAAC;;;AClBD,SAAS,KAAAC,WAAS;AAEX,IAAMC,oBAAmBD,IAAE,OAAO;AAAA,EACvC,MAAMA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,UAAUA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAC1C,CAAC;AAQM,IAAME,oBAAmBF,IAC7B,OAAO;AAAA,EACN,aAAaA,IAAE,OAAO;AAAA,EACtB,cAAcA,IAAE,OAAO;AAAA,EACvB,qBAAqBA,IAAE,OAAO;AAAA,EAC9B,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,gBAAgBA,IAAE,OAAO;AAAA,EACzB,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AACtC,CAAC,EACA,MAAM;;;ACzBT,SAAS,KAAAG,WAAS;AAQlB,IAAM,oBAAoBC,IAAE,OAAO;AAAA,EACjC,UAAUA,IAAE,2BAA6B;AAAA,EACzC,QAAQA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC3B,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC5B,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC7B,QAAQA,IAAE,OAAO,EAAE,QAAQ;AAC7B,CAAC;AAED,IAAM,kBAAkBA,IAAE,OAAO;AAAA,EAC/B,UAAUA,IAAE,uBAA2B;AACzC,CAAC;AAED,IAAM,kBAAkBA,IAAE,OAAO;AAAA,EAC/B,UAAUA,IAAE,uBAA2B;AACzC,CAAC;AAED,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EACvC,UAAUA,IAAE,wCAAmC;AACjD,CAAC;AAED,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EAClC,UAAUA,IAAE,6BAA8B;AAAA,EAC1C,gBAAgBA,IAAE,OAAO;AAAA,EACzB,SAASA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC5B,UAAUA,IAAE,OAAO,EAAE,QAAQ;AAAA,EAC7B,iBAAiBA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACpC,gBAAgBA,IAAE,OAAO,EAAE,QAAQ;AAAA,EACnC,QAAQA,IAAE,OAAO,EAAE,QAAQ;AAC7B,CAAC;AAED,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EAChD,UAAUA,IAAE,0DAA4C;AAAA,EACxD,UAAUA,IAAE,OAAO;AAAA,EACnB,SAASA,IAAE,OAAO;AAAA,EAClB,aAAaA,IAAE,OAAO;AACxB,CAAC;AAED,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EAC/C,UAAUA,IAAE,wDAA2C;AAAA,EACvD,SAASA,IAAE,OAAO;AACpB,CAAC;AAED,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EACtC,UAAUA,IAAE,qCAAkC;AAAA,EAC9C,cAAcA,IAAE,OAAO;AAAA,EACvB,YAAYA,IAAE,OAAO;AACvB,CAAC;AAED,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EAC1C,UAAUA,IAAE,8CAAsC;AAAA,EAClD,SAASA,IAAE,OAAO;AACpB,CAAC;AAED,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EACvC,UAAUA,IAAE,yCAAmC;AAAA,EAC/C,SAASA,IAAE,OAAO;AACpB,CAAC;AAMD,IAAM,2BAA2B,kBAAkB,OAAO;AAAA,EACxD,qBAAqBA,IAAE,OAAO;AAChC,CAAC;AAED,IAAM,yBAAyB,gBAAgB,OAAO;AAAA,EACpD,qBAAqBA,IAAE,OAAO;AAChC,CAAC;AAED,IAAM,yBAAyB,gBAAgB,OAAO;AAAA,EACpD,qBAAqBA,IAAE,OAAO;AAChC,CAAC;AAED,IAAM,iCAAiC,wBAAwB,OAAO;AAAA,EACpE,qBAAqBA,IAAE,OAAO;AAChC,CAAC;AAED,IAAM,4BAA4B,mBAAmB,OAAO;AAAA,EAC1D,qBAAqBA,IAAE,OAAO;AAChC,CAAC;AAEM,IAAMC,uBAAsBD,IAAE,mBAAmB,YAAY;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF,CAAC;;;ACpGD,SAAS,KAAAE,WAAS;AAcX,IAAM,yBAAyBC,IAAE,OAAO;AAAA,EAC7C,IAAIA,IAAE,OAAO,EAAE,SAAS;AAC1B,CAAC;AAGM,IAAMC,mBAAkB,uBAAuB,OAAO;AAAA,EAC3D,MAAMD,IAAE,yBAAoC;AAAA,EAC5C,MAAMA,IAAE,OAAO;AACjB,CAAC;AAGM,IAAME,2BAA0BF,IAAE,OAAO;AAAA,EAC9C,MAAMA,IAAE,QAAQ,QAAQ;AAAA,EACxB,MAAMA,IAAE,OAAO;AAAA,EACf,WAAWA,IAAE,KAAK,CAAC,cAAc,aAAa,aAAa,YAAY,CAAC;AAC1E,CAAC;AAEM,IAAMG,oBAAmB,uBAAuB,OAAO;AAAA,EAC5D,MAAMH,IAAE,2BAAqC;AAAA,EAC7C,QAAQE;AACV,CAAC;AAGM,IAAME,uBAAsB,uBAAuB,OAAO;AAAA,EAC/D,MAAMJ,IAAE,iCAAwC;AAAA,EAChD,WAAWA,IAAE,OAAO;AAAA;AAAA,EACpB,mBAAmBA,IAChB,MAAM,CAACA,IAAE,WAAWK,cAAa,GAAGL,IAAE,QAAQ,SAAS,CAAC,CAAC,EACzD,SAAS;AAAA,EACZ,UAAUA,IAAE,OAAO;AAAA,EACnB,YAAYA,IAAE,OAAO,EAAE,YAAY,EAAE,SAAS;AAChD,CAAC;AAEM,IAAMM,+BAA8B,uBAAuB,OAAO;AAAA,EACvE,MAAMN,IAAE,kDAAgD;AAAA,EACxD,MAAMA,IAAE,OAAO;AACjB,CAAC;AAGM,IAAMO,iBAAgBP,IAAE,OAAO;AAAA,EACpC,MAAMA,IAAE,gCAAuC;AAAA,EAC/C,IAAIA,IAAE,OAAO;AAAA,EACb,OAAOA,IAAE,OAAOA,IAAE,QAAQ,CAAC;AAAA,EAC3B,MAAMA,IAAE,OAAO;AAAA,EACf,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA;AACxC,CAAC;AAIM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,MAAMA,IAAE,6BAAiC;AAAA,EACzC,WAAWA,IAAE,QAAQ,iBAAiB;AAAA,EACtC,MAAMA,IAAE,OAAO;AAAA,EACf,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAEM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,MAAMA,IAAE,yBAA+B;AAAA,EACvC,WAAWA,IAAE,QAAQ,YAAY;AAAA,EACjC,MAAMA,IAAE,OAAO;AAAA,EACf,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAEM,IAAMQ,wBAAuBR,IAAE,MAAM;AAAA,EAC1C;AAAA,EACA;AACF,CAAC;AAEM,IAAMS,uBAAsB,uBAAuB,OAAO;AAAA,EAC/D,MAAMT,IAAE,iCAAwC;AAAA,EAChD,QAAQQ;AACV,CAAC;AAGM,IAAM,mBAAmB,uBAAuB,OAAO;AAAA,EAC5D,MAAMR,IAAE,sCAA0C;AAAA,EAClD,WAAWA,IAAE,OAAO;AAAA,EACpB,SAASA,IACN,MAAM;AAAA,IACLA,IAAE,OAAO;AAAA,IACTA,IAAE;AAAA,MACAA,IAAE,MAAM,CAACC,kBAAiBE,mBAAkBM,oBAAmB,CAAC;AAAA,IAClE;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,SAAST,IAAE,QAAQ,EAAE,SAAS;AAChC,CAAC;AAGM,IAAMU,sBAAqBV,IAAE,mBAAmB,QAAQ;AAAA,EAC7DC;AAAA,EACAE;AAAA,EACAC;AAAA,EACAE;AAAA,EACAC;AAAA,EACA;AAAA,EACAE;AACF,CAAC;AAGM,IAAM,mBAAmBT,IAAE,OAAO;AAAA,EACvC,eAAeA,IACZ,OAAO;AAAA,IACN,MAAMA,IAAE,QAAQ,WAAW;AAAA,EAC7B,CAAC,EACA,SAAS;AACd,CAAC;AAGM,IAAMW,6BAA4BX,IAAE,OAAO;AAAA,EAChD,IAAIA,IAAE,OAAO;AAAA,EACb,MAAMA,IAAE,WAAW,WAAW;AAAA,EAC9B,SAASA,IAAE,MAAMU,mBAAkB;AAAA,EACnC,WAAWV,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AAAA,EACpB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,mBAAmBA,IAAE,WAAW,aAAa,EAAE,SAAS;AAAA,EACxD,YAAYA,IAAE,WAAW,iBAAiB,EAAE,SAAS;AAAA,EACrD,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,aAAaA,IACV,KAAK,gEAAgD,CAAC,EACtD,SAAS,EACT,SAAS;AAAA,EACZ,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,wBAAwBA,IACrB,OAAO,EACP,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,8BAA8BA,IAC3B,WAAW,4BAA4B,EACvC,SAAS;AAAA,EACZ,gCAAgCA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpD,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EACpC,SAASA,IAAE,QAAQ,EAAE,SAAS;AAChC,CAAC;AAGM,IAAM,uCACXW,2BAA0B,OAAO;AAAA,EAC/B,SAASX,IAAE,MAAMU,oBAAmB,IAAI,gBAAgB,CAAC;AAC3D,CAAC;;;AChKH,SAAS,KAAAE,WAAS;AAIlB,IAAM,wBAAwBC,IAAE,WAAWC,gBAAe;AAEnD,IAAM,6BAA6BD,IAAE,OAAO;AAAA,EACjD,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,uBAAuB,sBAAsB,SAAS;AAAA,EACtD,uBAAuBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3C,iCAAiC,sBAAsB,SAAS;AAAA,EAChE,cAAcA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAEM,IAAM,8BAA8BA,IAAE,OAAO;AAAA,EAClD,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,sBAAsB,sBAAsB,SAAS;AAAA,EACrD,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,uBAAuB,sBAAsB,SAAS;AAAA,EACtD,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,sBAAsB,sBAAsB,SAAS;AACvD,CAAC;;;ACND,SAAS,KAAAE,WAAS;AAkBlB,IAAMC,yBAAwBC,IAAE,WAAWC,gBAAe;AAEnD,IAAM,qBAAqBD,IAAE,WAAWE,aAAY;AAE3D,IAAM,4BAA4B;AAClC,IAAM,0BAAiD;AAAA,EACrD;AAAA,EACA,GAAG,OAAO,OAAO,OAAO,EAAE;AAAA,IACxB,CAAC,YACC,YAAY,2BACZ,YAAY;AAAA,EAChB;AACF;AAEO,IAAM,wBAAwBF,IAAE,MAAM;AAAA,EAC3CA,IAAE,QAAQ,wBAAwB;AAAA,EAClCA,IAAE,KAAK,uBAAuB;AAAA,EAC9BA,IAAE,OAAO,EAAE,MAAM,eAAe,4BAA4B;AAC9D,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,iBAAiBD,uBAAsB,SAAS;AAAA,EAChD,iBAAiB,2BAA2B,SAAS;AAAA,EACrD,eAAeC,IAAE,WAAWG,cAAa,EAAE,SAAS;AAAA,EACpD,cAAc,mBAAmB,SAAS,EAAE;AAAA,IAC1C;AAAA,EACF;AAAA,EACA,eAAeH,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,yBAAyBD,uBAAsB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxD,eAAeC,IAAE,QAAQ,EAAE,SAAS;AACtC,CAAC;AAMD,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EAC7C,QAAQA,IAAE,QAAQ,QAAQ;AAAA,EAC1B,MAAMA,IAAE,OAAO;AACjB,CAAC;AAED,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EAC1C,QAAQA,IAAE,QAAQ,KAAK;AAAA,EACvB,KAAKA,IAAE,OAAO;AAChB,CAAC;AAED,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EAC5C,QAAQA,IAAE,QAAQ,OAAO;AAAA,EACzB,MAAMA,IAAE,OAAO;AACjB,CAAC;AAED,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EAChD,QAAQA,IAAE,QAAQ,YAAY;AAAA,EAC9B,KAAKA,IAAE,OAAO;AAAA,EACd,MAAMA,IAAE,OAAO;AACjB,CAAC;AAEM,IAAM,0BAA0BA,IAAE,mBAAmB,UAAU;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAMM,IAAM,yBAAyBA,IAAE,KAAK;AAAA;AAAA,EAE3C;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AACF,CAAC;AAEM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EAC3C,MAAM;AAAA,EACN,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAEM,IAAM,qBAAqBA,IAAE,KAAK;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EAChD,SAASA,IAAE,OAAO;AAAA,EAClB,MAAMA,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EACpD,WAAWA,IAAE,OAAO;AAAA,EACpB,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EACxB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAOA,IAAE,OAAOA,IAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACtC,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAU,iCAAiC,SAAS;AACtD,CAAC;;;AC5ID,SAAS,KAAAI,WAAS;;;ACvBlB,SAAS,KAAAC,WAAS;AAIlB,IAAMC,yBAAwBC,IAAE,WAAWC,gBAAe;AAEnD,IAAM,oBAAoBD,IAAE,WAAW,WAAW;AAEzD,IAAM,2BAA2BA,IAAE,OAAO;AAAA,EACxC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,WAAWA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACtC,gBAAgBA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAC1C,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAC3C,CAAC;AAEM,IAAM,2BAA2BA,IACrC,OAAO;AAAA,EACN,OAAOA,IAAE,OAAO;AAAA,EAChB,IAAIA,IAAE,OAAO,EAAE,SAAS;AAAA,EACxB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAUA,IAAE,WAAWE,cAAa;AAAA,EACpC,aAAaF,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,iBAAiBD,uBAAsB,SAAS;AAAA,EAChD,cAAcC,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC5C,WAAWA,IAAE,OAAOA,IAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC1C,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,SAAS,yBAAyB,SAAS;AAC7C,CAAC,EACA,YAAY,CAAC,OAAO,QAAQ;AAC3B,MAAI,MAAM,0DAA+C,CAAC,MAAM,SAAS;AACvE,QAAI,SAAS;AAAA,MACX,MAAMA,IAAE,aAAa;AAAA,MACrB,MAAM,CAAC,SAAS;AAAA,MAChB,SACE;AAAA,IACJ,CAAC;AACD;AAAA,EACF;AACA,MAAI,MAAM,SAAS;AACjB,QACE,MAAM,4CACN,MAAM,wDACN;AACA,UAAI,SAAS;AAAA,QACX,MAAMA,IAAE,aAAa;AAAA,QACrB,MAAM,CAAC,UAAU;AAAA,QACjB,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,MAAI,CAAC,MAAM,SAAS;AAClB,QAAI,SAAS;AAAA,MACX,MAAMA,IAAE,aAAa;AAAA,MACrB,MAAM,CAAC,SAAS;AAAA,MAChB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,CAAC,MAAM,QAAQ;AACjB,QAAI,SAAS;AAAA,MACX,MAAMA,IAAE,aAAa;AAAA,MACrB,MAAM,CAAC,QAAQ;AAAA,MACf,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF,CAAC;AAEI,IAAM,qBAAqBA,IAAE,MAAM,wBAAwB;;;ACjFlE,SAAS,KAAAG,WAAS;AAWlB,IAAM,gBAAqC,IAAI,IAAI,OAAO,OAAO,OAAO,CAAC;AACzE,IAAM,uBAAuBC,IAC1B,MAAMA,IAAE,OAAO,CAAC,EAChB,UAAU,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAsB,cAAc,IAAI,EAAE,CAAC,CAAC;AAEvE,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,iBAAiB;AAAA,EACjB,iBAAiB;AACnB,CAAC;;;AF0CD,IAAMC,yBAAwBC,IAAE,WAAWC,gBAAe;AAa1D,IAAMC,iBAAqC,IAAI,IAAI,OAAO,OAAO,OAAO,CAAC;AACzE,IAAMC,wBAAuBH,IAC1B,MAAMA,IAAE,OAAO,CAAC,EAChB,UAAU,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAsBE,eAAc,IAAI,EAAE,CAAC,CAAC;AAEvE,IAAM,oBAAoBF,IAAE,OAAO;AAAA,EACxC,iBAAiBG,sBAAqB,SAAS;AAAA,EAC/C,iBAAiBA,sBAAqB,SAAS;AAAA,EAC/C,mBAAmBH,IAAE,QAAQ,EAAE,SAAS;AAAA,EACxC,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC9C,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,qBAAqBA,IAAE,QAAQ,EAAE,SAAS;AAC5C,CAAC;AAMM,IAAM,kBAAkBA,IAAE,OAAO;AAAA,EACtC,SAASA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAClC,WAAWA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAC1C,CAAC;AAMM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EAC1C,kBAAkBA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC3C,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAC/C,CAAC;AAQD,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EACnC,YAAYA,IACT,MAAMA,IAAE,OAAO,EAAE,KAAK,CAAC,EACvB,IAAI,GAAG,2DAA2D;AACvE,CAAC;AAMM,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACzC,WAAWA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxC,WAAWA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxC,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,kBAAkBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,qBAAqBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC1C,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACxC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AACtC,CAAC;AAED,IAAMI,qBAAoBJ,IAAE,WAAW,WAAW;AAE3C,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,MAAMI,mBAAkB,SAAS;AAAA,EACjC,YAAY,gCAAgC,SAAS;AAAA,EACrD,SAAS,6BAA6B,SAAS;AACjD,CAAC;AAMM,IAAM,6BAA6B;AACnC,IAAM,6BAA6B;AAE1C,IAAM,8BAA8BJ,IAAE,OAAO;AAAA,EAC3C,QAAQ;AACV,CAAC;AAEM,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,MAAMA,IAAE,OAAO,EAAE,IAAI,mCAAmC,EAAE,SAAS;AAAA,EACnE,UAAUA,IAAE,OAAO,EAAE,IAAI,uCAAuC;AAClE,CAAC;AAMD,IAAM,yBAAyBA,IAAE,KAAK;AAAA;AAAA;AAAA;AAItC,CAAC;AAED,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EACtC,MAAMA,IAAE,QAAQ,SAAS,EAAE,SAAS;AAAA,EACpC,SAASA,IAAE,OAAO;AAAA,EAClB,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAASA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AACnD,CAAC;AAIM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,wBAAwB,6BAA6B,SAAS;AAAA,EAC9D,kBAAkBA,IAAE,WAAWK,cAAa,EAAE,SAAS;AAAA,EACvD,sBAAsBL,IACnB;AAAA,IACCA,IAAE,OAAO;AAAA,IACTA,IAAE,OAAO;AAAA,MACP,cAAc,uBAAuB,SAAS;AAAA,MAC9C,OAAOA,IAAE,OAAOA,IAAE,OAAO,GAAG,sBAAsB,EAAE,SAAS;AAAA,IAC/D,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,kBAAkBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACvC,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/C,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACxC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,kBAAkBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC9C,cAAc,mBAAmB,SAAS;AAAA,EAC1C,aAAa,kBAAkB,SAAS;AAAA,EACxC,WAAW,gBAAgB,SAAS;AAAA,EACpC,eAAe,oBAAoB,SAAS;AAAA,EAC5C,mBAAmBA,IAAE,OAAOA,IAAE,OAAO,GAAG,qBAAqB,EAAE,SAAS;AAAA,EACxE,gBAAgBA,IAAE,OAAOA,IAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC/C,wBAAwBA,IAAE,OAAO,2BAA2B,EAAE,SAAS;AAAA,EACvE,yBAAyBA,IAAE,MAAM,uBAAuB,EAAE,SAAS;AAAA,EACnE,eAAe,oBAAoB,SAAS;AAAA,EAC5C,SAAS,sBAAsB,SAAS;AAAA,EACxC,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/C,kCAAkCA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACvD,yBAAyBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,+BAA+BA,IAAE,MAAMA,IAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS;AAAA,EACnE,sBAAsBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3C,4BAA4BA,IAAE,MAAMA,IAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS;AAAA,EAChE,sBAAsBA,IACnB,OAAO,EACP,IAAI,EACJ,IAAI,0BAA0B,EAC9B,IAAI,0BAA0B,EAC9B,SAAS;AAAA,EACZ,uBAAuBA,IACpB,OAAO,EACP,IAAI,kCAAkC,EACtC,SAAS;AAAA,EACZ,oBAAoBA,IACjB,MAAM,uBAAuB,EAC7B,IAAI,8BAA8B,EAClC,SAAS;AACd,CAAC;AAMM,IAAM,wBAAwB,0BAA0B,OAAO;AAAA,EACpE,UAAUA,IAAE,WAAW,QAAQ,EAAE,SAAS;AAAA,EAC1C,wBAAwBA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtD,+BAA+BA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7D,sBAAsBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3C,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,oBAAoBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACxC,gBAAgBA,IAAE,WAAW,cAAc,EAAE,SAAS;AAAA,EACtD,0BAA0BA,IAAE,WAAW,cAAc,EAAE,SAAS;AAAA,EAChE,6BAA6BA,IAAE,WAAW,cAAc,EAAE,SAAS;AAAA,EACnE,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,iBAAiBA,IAAE,WAAW,eAAe,EAAE,SAAS;AAAA,EACxD,mBAAmBA,IAAE,WAAW,iBAAiB,EAAE,SAAS;AAAA,EAC5D,wBAAwBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC7C,+BAA+BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpD,yBAAyBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,0BAA0BA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,oCAAoCD,uBAAsB,SAAS;AAAA,EACnE,gBAAgBC,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,eAAeA,IAAE,WAAW,iBAAiB,EAAE,SAAS;AAAA,EACxD,sBAAsB,2BAA2B,SAAS;AAAA,EAC1D,uBAAuB,4BAA4B,SAAS;AAAA,EAC5D,YAAY,uBAAuB,SAAS;AAAA,EAC5C,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,wBAAwBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC7C,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/C,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,iBAAiBA,IAAE,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,qBAAqBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC1C,mBAAmBA,IAAE,OAAO,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EACjD,2BAA2BA,IAAE,OAAO,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EACzD,gBAAgBA,IAAE,WAAW,iBAAiB,EAAE,SAAS;AAAA,EACzD,UAAUA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,sBAAsBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1C,8BAA8BA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC5D,iBAAiB,sBAAsB,SAAS;AAClD,CAAC;;;AG/QD,SAAS,KAAAM,WAAS;AAKX,IAAM,uBAAuBC,IACjC,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,qBAAqB,KAAK,EAC9B,IAAI,qBAAqB,KAAK;AAE1B,IAAM,kBAAkBA,IAAE,OAAO;AAAA,EACtC,QAAQA,IAAE,OAAO;AAAA,EACjB,QAAQA,IAAE,WAAW,eAAe;AAAA,EACpC,YAAY;AAAA,EACZ,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACxC,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACxC,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACxC,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACnD,OAAOA,IAAE,QAAQ;AAAA,EACjB,kBAAkBA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EAC1D,oBAAoBA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EAC5D,YAAYA,IAAE,WAAW,mBAAmB,EAAE,SAAS;AACzD,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,YAAY;AAAA,EACZ,QAAQA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AACjC,CAAC;AAEM,IAAM,8BAA8BA,IAAE,OAAO,CAAC,CAAC;AAE/C,IAAM,mCAAmCA,IAAE,OAAO,CAAC,CAAC;AAEpD,IAAM,gCAAgCA,IAAE,OAAO,CAAC,CAAC;AAEjD,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,WAAW;AACb,CAAC;AAEM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EAC3C,WAAW,gBAAgB,SAAS;AACtC,CAAC;AAEM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,WAAW,gBAAgB,SAAS;AACtC,CAAC;AAEM,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EAC7C,WAAW;AACb,CAAC;;;ACpDD,SAAS,KAAAC,WAAS;AAUX,IAAMC,kCAAiCC,IAAE,OAAO;AAAA,EACrD,OAAOA,IAAE,OAAO;AAAA,EAChB,OAAOA,IAAE,WAAWC,wBAAuB;AAC7C,CAAC;;;ACbD,SAAS,KAAAC,WAAS;AAKX,IAAM,sBAAsBC,IAAE,OAAO;AACrC,IAAM,sBAAsBA,IAAE,KAAK,CAAC,SAAS,QAAQ,KAAK,CAAC;AAG3D,IAAMC,mCAAkCD,IAAE,OAAO;AAAA,EACtD,KAAKA,IAAE,OAAO,EAAE,SAAS;AAC3B,CAAC;AAEM,IAAME,oCAAmCF,IAAE,OAAO;AAAA,EACvD,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AACrC,CAAC;AAGM,IAAMG,6BAA4BH,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,OAAO;AAAA,EACf,QAAQA,IAAE,WAAWI,gBAAe;AAAA,EACpC,QAAQJ,IAAE,WAAWK,cAAa;AAAA,EAClC,WAAWL,IAAE,QAAQ;AAAA,EACrB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAYA,IAAE,WAAWM,cAAa;AAAA,EACtC,eAAeN,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,cAAcA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,oBAAoBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACxC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AACxC,CAAC;AAGM,IAAMO,0BAAyBP,IAAE,OAAO;AAAA,EAC7C,OAAOA,IAAE,OAAO;AAAA,EAChB,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AAAA,EACrB,QAAQA,IAAE,OAAO;AAAA,EACjB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAGD,IAAM,8BAA8BA,IAAE,OAAO;AAAA,EAC3C,MAAM;AAAA,EACN,aAAaA,IAAE,OAAO;AAAA,EACtB,MAAM;AACR,CAAC;AAEM,IAAMQ,2BAA0B,4BAA4B;AAAA,EACjEP;AACF,EACG,MAAMC,iCAAgC,EACtC,OAAO;AAAA,EACN,MAAMF,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAASA,IAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAGI,IAAMS,qBAAoBT,IAAE,OAAO;AAAA,EACxC,YAAY;AAAA,EACZ,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,WAAWA,IAAE,QAAQ;AAAA,EACrB,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,aAAaA,IACV,OAAO;AAAA,IACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAOA,IAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,IAC3C,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACzC,CAAC,EACA,SAAS;AACd,CAAC;;;ACzED,SAAS,KAAAU,WAAS;AAcX,IAAMC,6BAA4BC,IAAE,WAAWC,oBAAmB;AAEzE,IAAM,+BAA+BD,IAAE;AAAA,EACrC,CAAC,UACC,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,KAAK,SAAY;AAAA,EACjEA,IAAE,OAAO,EAAE,SAAS;AACtB;AAaO,IAAME,wBAAuBF,IAAE,OAAO;AAAA,EAC3C,IAAIA,IAAE,OAAO;AAAA,EACb,aAAaA,IAAE,OAAO;AAAA,EACtB,QAAQA,IAAE,WAAWG,cAAa;AAAA,EAClC,WAAWH,IAAE,OAAO;AAAA,EACpB,eAAeA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EACjC,kBAAkBA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EACpC,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAGvC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAG/B,kBAAkBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAE/C,wBAAwBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,0BAA0BA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC3D,CAAC;AAUD,IAAM,sBAAsBA,IAAE,WAAWI,cAAa;AAEtD,IAAM,sBAAsBJ,IAAE,WAAWK,cAAa;AAE/C,IAAMC,yBAAwBN,IAAE,OAAO;AAAA,EAC5C,UAAU;AAAA,EACV,aAAaA,IAAE,OAAO;AAAA,EACtB,cAAcA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAEM,IAAMO,6BAA4BP,IAAE,OAAO;AAAA,EAChD,SAASA,IAAE,OAAO;AAAA,EAClB,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IAAE,OAAO;AACxB,CAAC;AAEM,IAAMQ,0BAAyBR,IAAE,OAAO;AAAA,EAC7C,QAAQA,IAAE,OAAO;AAAA,EACjB,UAAUA,IAAE,OAAO;AACrB,CAAC;AAEM,IAAMS,sBAAqBT,IAAE,OAAO;AAAA,EACzC,aAAaA,IAAE,MAAMO,0BAAyB;AAAA,EAC9C,mBAAmBP,IAAE,MAAMQ,uBAAsB,EAAE,SAAS;AAC9D,CAAC;AAEM,IAAME,kBAAiBV,IAAE,OAAO;AAAA,EACrC,MAAMA,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,OAAO;AACrB,CAAC;AAEM,IAAMW,kBAAiBX,IAAE,OAAO;AAAA,EACrC,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,MAAMU,eAAc;AAC/B,CAAC;AAEM,IAAME,eAAcZ,IAAE,OAAO;AAAA,EAClC,OAAOA,IAAE,MAAMW,eAAc;AAAA,EAC7B,SAASX,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC,UAAUA,IAAE,OAAO;AACrB,CAAC;AAED,IAAMa,wBAAuBb,IAAE,OAAO;AAAA,EACpC,MAAMA,IAAE,OAAO;AAAA,EACf,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,KAAKA,IAAE,OAAO;AAChB,CAAC;AAED,IAAMc,uBAAsBd,IAAE,OAAO;AAAA,EACnC,mBAAmBA,IAAE,QAAQ;AAAA,EAC7B,YAAYA,IAAE,MAAMa,qBAAoB;AAAA,EACxC,kBAAkBb,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AACjD,CAAC;AAEM,IAAMe,iBAAgBf,IAAE,OAAO;AAAA;AAAA,EAEpC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,oBAAoBA,IAAE,OAAO;AAAA,EAC7B,mBAAmBA,IAAE,OAAO;AAAA,EAC5B,cAAcS;AAAA,EACd,OAAOG;AAAA,EACP,kBAAkBZ,IAAE,MAAMM,sBAAqB;AAAA,EAC/C,eAAeQ,qBAAoB,SAAS;AAC9C,CAAC;AAEM,IAAME,yBAAwBhB,IAAE,OAAO;AAAA,EAC5C,MAAM;AAAA,EACN,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,SAASA,IAAE,OAAO;AAAA,EAClB,eAAeA,IAAE,OAAO;AAC1B,CAAC;AAqBD,IAAM,6BAA6BA,IAChC,OAAO;AAAA,EACN,IAAIA,IAAE,OAAO;AAAA,EACb,aAAaA,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtB,QAAQA,IAAE,WAAWG,cAAa;AAAA,EAClC,WAAWH,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,eAAeA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC5C,kBAAkBA,IAAE,MAAM,CAACA,IAAE,MAAMA,IAAE,OAAO,CAAC,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACtE,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACvC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,kBAAkBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,wBAAwBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,0BAA0BA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC3D,CAAC,EACA,YAAY;AAKR,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACzC,WAAWA,IAAE,OAAO;AAAA,EACpB,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAASe;AACX,CAAC;AAMM,IAAM,0BAA0Bf,IAAE,OAAO;AAAA,EAC9C,WAAWA,IAAE,OAAO;AAAA,EACpB,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,sBAAsBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3C,SAASe;AACX,CAAC;AAUM,IAAM,yBAAyBf,IACnC,OAAO;AAAA,EACN,WAAWA,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,OAAOA,IAAE,WAAWiB,aAAY;AAAA,EAChC,kBAAkBjB,IAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAClC,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AAAA,EACpB,0BAA0BA,IAAE,OAAO,EAAE,YAAY,EAAE,SAAS;AAC9D,CAAC,EACA,YAAY;AAQR,IAAM,qBAAqBA,IAC/B,OAAO;AAAA,EACN,UAAUA,IAAE,MAAM,0BAA0B;AAC9C,CAAC,EACA,YAAY;AAKR,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EACpD,cAAc;AAChB,CAAC;AAMD,IAAMkB,8BAA6BlB,IAAE,OAAO;AAAA,EAC1C,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAMmB,8BAA6BD,4BAA2B,OAAO;AAAA,EAC1E,MAAMlB,IAAE,gDAA4C;AAAA,EACpD,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAMoB,4BAA2BF,4BAA2B,OAAO;AAAA,EACxE,MAAMlB,IAAE,4CAA0C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlD,aAAaA,IAAE,WAAW,kBAAkB,EAAE,SAAS;AACzD,CAAC;AAEM,IAAMqB,6BAA4BH,4BAA2B,OAAO;AAAA,EACzE,MAAMlB,IAAE,8CAA2C;AAAA,EACnD,uBAAuBA,IAAE,OAAO,EAAE,SAAS;AAC7C,CAAC;AAEM,IAAMsB,gCAA+BJ,4BAA2B,OAAO;AAAA,EAC5E,MAAMlB,IAAE,qDAA8C;AAAA,EACtD,SAASA,IAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAEM,IAAMuB,4BAA2BL,4BAA2B,OAAO;AAAA,EACxE,MAAMlB,IAAE,4CAA0C;AAAA,EAClD,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,SAASA,IAAE,OAAO;AAAA,EAClB,WAAWA,IAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAMwB,oCACXN,4BAA2B,OAAO;AAAA,EAChC,MAAMlB,IAAE,6DAAkD;AAAA,EAC1D,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEI,IAAMyB,8BAA6BP,4BAA2B,OAAO;AAAA,EAC1E,MAAMlB,IAAE,gDAA4C;AAAA,EACpD,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,WAAWA,IAAE,OAAO;AAAA,EACpB,cAAcD;AAAA,EACd,sBAAsBC,IAAE,QAAQ;AAAA,EAChC,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAUA,IAAE,OAAO;AAAA,EACnB,kBAAkBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACvC,SAASe,eAAc,SAAS;AAClC,CAAC;AAEM,IAAMW,2BAA0BR,4BAA2B,OAAO;AAAA,EACvE,MAAMlB,IAAE,0CAAyC;AAAA,EACjD,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,SAASA,IAAE,OAAO;AAAA,EAClB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQA,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjB,eAAeA,IAAE,WAAW,mBAAmB,EAAE,SAAS;AAC5D,CAAC;AAEM,IAAM2B,2BAA0BT,4BAA2B,OAAO;AAAA,EACvE,MAAMlB,IAAE,0CAAyC;AAAA,EACjD,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,WAAWA,IAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM4B,oCACXV,4BAA2B,OAAO;AAAA,EAChC,MAAMlB,IAAE,6DAAkD;AAAA,EAC1D,YAAYA,IAAE,MAAMgB,sBAAqB,EAAE,SAAS;AACtD,CAAC;AAEI,IAAMa,2CACXX,4BAA2B,OAAO;AAAA,EAChC,MAAMlB,IAAE,2EAAyD;AAAA,EACjE,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEI,IAAM8B,0BAAyB9B,IAAE,mBAAmB,QAAQ;AAAA,EACjEmB;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AACF,CAAC;;;ACtVD,SAAS,KAAAE,WAAS;AA0ClB,IAAMC,gCAA+B,iBAAiB,OAAO;AAAA,EAC3D,MAAMC,IAAE,uCAA2C;AAAA,EACnD,WAAWA,IAAE,OAAO;AACtB,CAAC;AAGM,IAAMC,4BAA2BD,IAAE,OAAO;AAAA,EAC/C,MAAMA,IAAE,KAAK,CAAC,aAAa,eAAe,SAAS,UAAU,SAAS,CAAC;AAAA,EACvE,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAYA,IAAE,OAAOA,IAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC3C,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEhC,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAED,IAAME,wCAAuCF,IAAE,OAAO;AAAA,EACpD,MAAMA,IAAE,yDAAoD;AAAA,EAC5D,WAAWA,IAAE,OAAO;AAAA,EACpB,UAAUA,IAAE,OAAO;AAAA,EACnB,QAAQC;AACV,CAAC;AAED,IAAME,mCAAkCH,IAAE,OAAO;AAAA,EAC/C,MAAMA,IAAE,6CAA8C;AAAA,EACtD,SAASI;AAAA,EACT,UAAUJ,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,WAAWA,IAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAED,IAAMK,2BAA0BL,IAAE,OAAO;AAAA,EACvC,MAAMA,IAAE,2BAAqC;AAAA,EAC7C,SAASA,IAAE,OAAO;AAAA,EAClB,WAAWA,IAAE,WAAWM,eAAc;AAAA,EACtC,WAAWN,IAAE,OAAO;AAAA,EACpB,OAAOA,IACJ,OAAO;AAAA,IACN,MAAMA,IAAE,OAAO;AAAA,IACf,SAASA,IAAE,OAAO;AAAA,EACpB,CAAC,EACA,SAAS;AACd,CAAC;AAED,IAAMO,8CAA6CP,IAAE,OAAO;AAAA,EAC1D,MAAMA,IAAE,uEAA2D;AAAA,EACnE,UAAUA,IAAE,WAAWQ,kBAAiB;AAC1C,CAAC;AAEM,IAAM,qCAAqCR,IAAE,OAAO;AAAA,EACzD,MAAMA,IAAE,mDAAiD;AAAA,EACzD,WAAWA,IAAE,OAAO;AAAA,EACpB,cAAcA,IAAE,OAAO,EAAE,YAAY;AAAA,EACrC,0BAA0BA,IAAE,OAAO,EAAE,SAAS;AAChD,CAAC;AAEM,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,MAAMA,IAAE,qDAAkD;AAAA,EAC1D,WAAW;AACb,CAAC;AAED,IAAMS,wCAAuCT,IAAE,OAAO;AAAA,EACpD,MAAMA,IAAE,uDAAmD;AAAA,EAC3D,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA;AAAA,EAC9B,gBAAgBA,IAAE,WAAWU,wBAAuB;AACtD,CAAC;AAED,IAAMC,qCAAoCX,IAAE,OAAO;AAAA,EACjD,MAAMA,IAAE,iDAAgD;AAAA,EACxD,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,OAAO;AAAA,IACjB,cAAcA,IACX,WAAWY,aAAY,EACvB,SAAS,EACT,SAAS,0DAA0D;AAAA,IACtE,iBAAiB,2BAA2B,SAAS,EAAE,MAAM,MAAS;AAAA,IACtE,eAAeZ,IAAE,WAAWa,cAAa,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,IACrE,SAASb,IAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,iBAAiBA,IAAE,WAAWc,gBAAe,EAAE,SAAS;AAAA,IACxD,iBAAiBd,IAAE,OAAO,EAAE,SAAS;AAAA,IACrC,yBAAyBA,IAAE,WAAWc,gBAAe,EAAE,SAAS;AAAA,IAChE,gBAAgBd,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IAC7C,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IAC9C,iBAAiB,2BAA2B,SAAS;AAAA,IACrD,iCAAiCA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACxD,CAAC;AACH,CAAC;AAED,IAAMe,yCAAwCf,IAAE,OAAO;AAAA,EACrD,MAAMA,IAAE,2DAAqD;AAAA,EAC7D,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAOA,IAAE,OAAO;AAClB,CAAC;AAED,IAAMgB,sCAAqChB,IAAE,OAAO;AAAA,EAClD,MAAMA,IAAE,qDAAkD;AAAA,EAC1D,SAASA,IAAE,MAAMiB,0BAAyB;AAAA,EAC1C,SAASC;AACX,CAAC;AAED,IAAMC,wCAAuCnB,IAAE,OAAO;AAAA,EACpD,MAAMA,IAAE,yDAAoD;AAAA,EAC5D,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AAAA,EACrB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAED,IAAMoB,2CAA0CpB,IAAE,OAAO;AAAA,EACvD,MAAMA,IAAE,+DAAuD;AAAA,EAC/D,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AACvB,CAAC;AAED,IAAMqB,sCAAqCrB,IAAE,OAAO;AAAA,EAClD,MAAMA,IAAE,mDAAiD;AAAA,EACzD,WAAWA,IAAE,OAAO;AAAA,EACpB,kBAAkBA,IAAE,OAAOA,IAAE,QAAQ,CAAC,EAAE,SAAS;AACnD,CAAC;AAED,IAAMsB,uCAAsCtB,IAAE,OAAO;AAAA,EACnD,MAAMA,IAAE,uDAAmD;AAAA,EAC3D,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AAAA,EACrB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAED,IAAMuB,0CAAyCvB,IAAE,OAAO;AAAA,EACtD,MAAMA,IAAE,6DAAsD;AAAA,EAC9D,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AAAA,EACrB,YAAYA,IAAE,OAAO,EAAE,YAAY,EAAE,SAAS;AAChD,CAAC;AAEM,IAAMwB,8CAA6CxB,IAAE,OAAO;AAAA,EACjE,MAAMA,IAAE,uEAA2D;AAAA,EACnE,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYyB;AAAA,EACZ,qBAAqBA,kBAAiB,SAAS;AAAA;AAAA,EAE/C,oBAAoBA,kBAAiB,KAAK;AAAA,IACxC,aAAa;AAAA,IACb,iBAAiB;AAAA,EACnB,CAAC,EACE,OAAO;AAAA,IACN,cAAcA,kBAAiB,MAAM,aAAa,SAAS;AAAA,EAC7D,CAAC,EACA,SAAS;AACd,CAAC;AAGM,IAAMC,yCAAwC1B,IAAE,OAAO;AAAA,EAC5D,MAAMA,IAAE,2DAAqD;AAAA,EAC7D,OAAOA,IAAE,WAAW2B,aAAY;AAAA,EAChC,WAAW3B,IAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM4B,4CAA2C5B,IAAE,OAAO;AAAA,EAC/D,MAAMA,IAAE,iEAAwD;AAAA,EAChE,UAAUA,IAAE,MAAM6B,qBAAoB;AACxC,CAAC;AAEM,IAAMC,0CAAyC9B,IAAE,OAAO;AAAA,EAC7D,MAAMA,IAAE,6DAAsD;AAAA,EAC9D,aAAaA,IAAE,MAAM+B,uBAAsB;AAC7C,CAAC;AAEM,IAAMC,sCAAqChC,IAAE,OAAO;AAAA,EACzD,MAAMA,IAAE,mDAAiD;AAAA,EACzD,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAMiC,0CAAyCjC,IAAE,OAAO;AAAA,EAC7D,MAAMA,IAAE,6DAAsD;AAAA,EAC9D,iBAAiBA,IAAE,OAAO;AAC5B,CAAC;AAEM,IAAMkC,4CAA2ClC,IAAE,OAAO;AAAA,EAC/D,MAAMA,IAAE,iEAAwD;AAAA,EAChE,iBAAiBA,IAAE,OAAO;AAAA,EAC1B,UAAUA,IAAE,OAAO;AACrB,CAAC;AAED,IAAMmC,qCAAoCnC,IAAE,OAAO;AAAA,EACjD,MAAMA,IAAE,mDAAiD;AAAA,EACzD,YAAYA,IAAE,OAAO;AAAA,EACrB,SAASA,IAAE,OAAO;AAAA,EAClB,SAASA,IAAE,OAAO;AAAA,EAClB,OAAOA,IAAE,OAAO;AAClB,CAAC;AAED,IAAMoC,sCAAqCpC,IAAE,OAAO;AAAA,EAClD,MAAMA,IAAE,qDAAkD;AAAA,EAC1D,YAAYA,IAAE,OAAO;AAAA,EACrB,SAASA,IAAE,WAAWqC,eAAc;AAAA,EACpC,SAASrC,IAAE,OAAO;AACpB,CAAC;AAED,IAAMsC,qBAAoBtC,IAAE,OAAO;AAAA,EACjC,SAASA,IAAE,OAAO;AAAA,EAClB,SAASA,IAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAED,IAAMuC,oBAAmBvC,IAAE,OAAO;AAAA,EAChC,UAAUA,IAAE,OAAO;AAAA,EACnB,QAAQA,IAAE,OAAO;AAAA,EACjB,QAAQA,IAAE,OAAO;AAAA,EACjB,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAASA,IAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAEM,IAAMwC,wBAAuBxC,IAAE,KAAK;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAMyC,8BAA6BzC,IAAE,OAAO;AAAA,EAC1C,MAAMA,IAAE,mCAAyC;AAAA,EACjD,SAAS0C;AACX,CAAC;AAED,IAAM,4CAA4C1C,IAAE,OAAO;AAAA,EACzD,MAAMA,IAAE,mEAAyD;AAAA,EACjE,MAAMA,IAAE,OAAO;AAAA,EACf,WAAWA,IAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAQD,IAAM,2CAA2CA,IAAE,OAAO;AAAA,EACxD,MAAMA,IAAE,iEAAwD;AAAA,EAChE,WAAWA,IAAE,OAAO;AAAA,EACpB,UAAUA,IAAE,OAAO;AACrB,CAAC;AAED,IAAM2C,0CAAyC3C,IAAE,OAAO;AAAA,EACtD,MAAMA,IAAE,6DAAsD;AAAA,EAC9D,QAAQA,IAAE,OAAO;AAAA,EACjB,eAAeA,IAAE,OAAO;AAAA,EACxB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,cAAcA,IAAE,MAAMsC,kBAAiB;AAAA,EACvC,gBAAgBtC,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,qBAAqBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC1C,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AACvC,CAAC;AAED,IAAM4C,4CAA2C5C,IAAE,OAAO;AAAA,EACxD,MAAMA,IAAE,iEAAwD;AAAA,EAChE,QAAQA,IAAE,OAAO;AAAA,EACjB,eAAewC,sBAAqB,SAAS;AAAA,EAC7C,aAAaxC,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,YAAYA,IAAE,KAAK,CAAC,aAAa,OAAO,CAAC;AAAA,EACzC,aAAaA,IAAE,MAAMuC,iBAAgB,EAAE,SAAS;AAClD,CAAC;AAEM,IAAM,sBAAsBvC,IAAE,OAAO;AAAA,EAC1C,SAASA,IAAE,QAAQ;AAAA,EACnB,MAAM,kBAAkB,SAAS;AACnC,CAAC;AAEM,IAAM6C,iCAAgC;AAAA,EAC3C9C;AAAA,EACAG;AAAA,EACAC;AAAA,EACAE;AAAA,EACAE;AAAA,EACA;AAAA,EACA;AAAA,EACAE;AAAA,EACAE;AAAA,EACAI;AAAA,EACAC;AAAA,EACAG;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA;AAAA,EAEAE;AAAA,EACAE;AAAA,EACAE;AAAA,EACAE;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAO;AAAA,EACAC;AAAA,EACAH;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAMK,mCAAkC9C,IAAE,OAAO;AAAA,EAC/C,cAAcA,IAAE,mBAAmB,QAAQ6C,8BAA6B;AAC1E,CAAC;AAEM,IAAME,6BAA4B,8BAA8B,OAAO;AAAA,EAC5E,QAAQ/C,IAAE,+DAA8C;AAAA,EACxD,QAAQ8C;AACV,CAAC;AAGD,IAAME,qCAAoChD,IAAE,OAAO;AAAA,EACjD,MAAMA,IAAE,yBAAiC;AAAA,EACzC,UAAUA,IAAE,OAAO;AAAA,EACnB,UAAUA,IAAE,OAAO;AAAA,EACnB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAED,IAAMiD,wCAAuCjD,IAAE,OAAO;AAAA,EACpD,MAAMA,IAAE,4BAAoC;AAAA,EAC5C,aAAaA,IAAE,OAAO;AAAA,EACtB,SAASA,IAAE,OAAO;AAAA,EAClB,mBAAmBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAChD,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AACvC,CAAC;AAED,IAAMkD,uCAAsClD,IAAE,OAAO;AAAA,EACnD,MAAMA,IAAE,6BAAmC;AAAA,EAC3C,UAAUA,IAAE,OAAO;AAAA,EACnB,UAAUA,IAAE,OAAO;AAAA,EACnB,SAASA,IAAE,OAAO;AACpB,CAAC;AAED,IAAMmD,oCAAmCnD,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,gCAAoC;AAAA,EAC5C,eAAeA,IAAE,OAAO;AAAA,EACxB,QAAQA,IACL,OAAO;AAAA,IACN,WAAWA,IAAE;AAAA,MACXA,IAAE,OAAO;AAAA,QACP,OAAOA,IAAE,OAAO;AAAA,QAChB,OAAOA,IAAE,OAAO;AAAA,QAChB,UAAUA,IAAE,OAAO;AAAA,QACnB,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ,YAAYA,IACT,OAAO;AAAA,IACN,SAASA,IAAE,OAAO;AAAA,IAClB,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,CAAC,EACA,SAAS;AACd,CAAC;AAED,IAAMoD,yCAAwCpD,IAAE,OAAO;AAAA,EACrD,MAAMA,IAAE,2CAAyC;AAAA,EACjD,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAED,IAAMqD,2CAA0CrD,IAAE,OAAO;AAAA,EACvD,MAAMA,IAAE,8CAA2C;AAAA,EACnD,UAAUA,IAAE,OAAO;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAED,IAAMsD,4CAA2CtD,IAAE,OAAO;AAAA,EACxD,MAAMA,IAAE,iDAA4C;AAAA,EACpD,qBAAqBA,IAAE,OAAO;AAAA,EAC9B,0BAA0BA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAC9C,CAAC;AAED,IAAMuD,2CAA0CvD,IAAE,OAAO;AAAA,EACvD,MAAMA,IAAE,sCAAuC;AAAA,EAC/C,UAAUA,IAAE,OAAO;AAAA,EACnB,UAAUA,IAAE,OAAO;AAAA,EACnB,cAAcA,IAAE,OAAO;AAAA,EACvB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAED,IAAMwD,oCAAmCxD,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,gCAAoC;AAAA,EAC5C,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IAAE,OAAO;AAAA,EACtB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AACtC,CAAC;AAED,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EACzD,MAAMA,IAAE,kDAA6C;AAAA,EACrD,mBAAmBA,IAAE,OAAO;AAAA,EAC5B,QAAQA,IAAE,OAAO;AAAA,EACjB,eAAeA,IAAE,WAAW,oBAAoB;AAAA,EAChD,eAAeA,IAAE,WAAW,oBAAoB;AAAA,EAChD,QAAQA,IAAE,OAAO;AAAA,EACjB,iBAAiBA,IAAE,WAAW,sBAAsB,EAAE,SAAS;AAAA,EAC/D,WAAWA,IAAE,QAAQ;AACvB,CAAC;AAEM,IAAMyD,iCAAgCzD,IAAE,mBAAmB,QAAQ;AAAA,EACxEgD;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACA;AACF,CAAC;AAED,IAAME,8BAA6B1D,IAAE,OAAO;AAAA,EAC1C,SAAS0C;AAAA,EACT,kBAAkB1C,IAAE,WAAW2D,qBAAoB;AAAA,EACnD,SAASF;AACX,CAAC;AAEM,IAAMG,wCAAuC5D,IAAE,OAAO;AAAA,EAC3D,UAAUA,IAAE,MAAM0D,2BAA0B;AAAA,EAC5C,SAAS1D,IAAE,MAAM6D,+BAA8B;AACjD,CAAC;AAEM,IAAMC,kCAAiC,yBAAyB,OAAO;AAAA,EAC5E,QAAQ9D,IAAE,2DAA4C;AAAA,EACtD,QAAQ4D;AACV,CAAC;AAMM,IAAMG,yBAAwB/D,IAAE,OAAO;AAAA,EAC5C,OAAOA,IAAE,OAAO;AAAA;AAAA,EAChB,OAAOA,IAAE,OAAO;AAAA,EAChB,UAAUA,IAAE,OAAO;AAAA,EACnB,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAC7B,CAAC;AAEM,IAAMgE,8BAA6BhE,IAAE,OAAO;AAAA;AAAA,EAEjD,YAAYA,IAAE,OAAO;AAAA,EACrB,WAAWA,IAAE,MAAM+D,sBAAqB;AAC1C,CAAC;AAEM,IAAME,wBAAuB,yBAAyB,OAAO;AAAA,EAClE,QAAQjE,IAAE,uCAAkC;AAAA,EAC5C,QAAQgE;AACV,CAAC;AAEM,IAAME,gCAA+BlE,IAAE,OAAO;AAAA,EACnD,OAAOA,IAAE,OAAO;AAAA,EAChB,UAAUA,IAAE,OAAO;AAAA,EACnB,QAAQA,IAAE,OAAO;AACnB,CAAC;AAEM,IAAMmE,uBAAsBnE,IAAE,OAAO;AAAA;AAAA,EAE1C,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,SAASA,IAAE,MAAMkE,6BAA4B;AAC/C,CAAC;AAEM,IAAME,yBAAwBpE,IAAE,MAAM;AAAA,EAC3C,iCAAiC,OAAO;AAAA,IACtC,QAAQmE;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAME,iCAAgCrE,IAC1C,OAAO;AAAA,EACN,gBAAgBA,IAAE,WAAWU,wBAAuB;AAAA,EACpD,SAASV,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC,EACA,YAAY,CAAC,OAAO,QAAQ;AAC3B,MACE,MAAM,uDACN,OAAO,MAAM,sBAAsB,UACnC;AACA,QAAI,SAAS;AAAA,MACX,MAAMA,IAAE,aAAa;AAAA,MACrB,SACE;AAAA,MACF,MAAM,CAAC,mBAAmB;AAAA,IAC5B,CAAC;AAAA,EACH;AACF,CAAC;AAEI,IAAMsE,mCAAkCtE,IAAE,MAAM;AAAA,EACrD,iCAAiC,OAAO;AAAA,IACtC,QAAQqE;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAME,kCAAiCC,uBAAsB;AAAA,EAClExE,IAAE,mBAAmB,UAAU;AAAA,IAC7B+C;AAAA,IACAe;AAAA,IACAG;AAAA,EACF,CAAC;AACH;;;AC/iBA,SAAS,KAAAQ,WAAS;AA+DX,IAAMC,8BAA6BC,IAAE,OAAO;AAAA,EACjD,IAAIA,IAAE,OAAO;AAAA,EACb,aAAaA,IAAE,OAAO;AAAA,EACtB,kBAAkBA,IAAE,OAAO;AAAA,EAC3B,eAAeA,IAAE,WAAWC,cAAa;AAAA,EACzC,2BAA2BD,IAAE,MAAMA,IAAE,WAAWE,gBAAe,CAAC;AAAA,EAChE,wBAAwBF,IAAE,WAAWE,gBAAe;AAAA,EACpD,UAAUF,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACnC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,MAAMA,IAAE,WAAW,YAAY,EAAE,SAAS;AAAA,EAC1C,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,MAAMA,IAAE,WAAW,SAAS,EAAE,SAAS;AAAA,EACvC,cAAcA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAEM,IAAMG,sBAAqBH,IAAE,OAAO;AAAA,EACzC,MAAMA,IAAE,OAAO;AAAA,EACf,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO;AAAA,EAChB,UAAUA,IAAE,WAAWI,qBAAoB;AAAA,EAC3C,WAAWJ,IAAE,OAAO;AACtB,CAAC;AAED,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EAC9B,MAAMA,IAAE,OAAO;AAAA,EACf,SAASA,IAAE,OAAO;AAAA,EAClB,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACpC,KAAKA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,IAAMK,oBAAmBL,IAAE,OAAO;AAAA,EAChC,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO;AAClB,CAAC;AAED,IAAM,gBAAgBA,IAAE,OAAO;AAAA,EAC7B,MAAMA,IAAE,QAAQ,MAAM;AAAA,EACtB,MAAMA,IAAE,OAAO;AAAA,EACf,KAAKA,IAAE,OAAO,EAAE,IAAI;AAAA,EACpB,SAASK,kBAAiB,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,IAAM,eAAeL,IAAE,OAAO;AAAA,EAC5B,MAAMA,IAAE,QAAQ,KAAK;AAAA,EACrB,MAAMA,IAAE,OAAO;AAAA,EACf,KAAKA,IAAE,OAAO,EAAE,IAAI;AAAA,EACpB,SAASK,kBAAiB,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,IAAM,mBAAmBL,IACtB,MAAM,CAAC,gBAAgB,eAAe,YAAY,CAAC,EACnD,MAAM;AAET,IAAM,gBAAgBA,IAAE,OAAO;AAAA,EAC7B,UAAUM,2BAA0B,MAAM;AAAA,EAC1C,OAAON,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,0BAA0BA,IAAE,WAAWO,kBAAiB;AAE9D,IAAM,2BAA2BP,IAAE,OAAO;AAAA,EACxC,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAChD,CAAC;AAEM,IAAMQ,sBAAqBR,IAAE,OAAO;AAAA,EACzC,MAAMA,IAAE,QAAQ,aAAa;AAAA,EAC7B,QAAQA,IAAE,OAAOA,IAAE,QAAQ,CAAC;AAC9B,CAAC;AAEM,IAAMS,wCAAuCT,IACjD,OAAO;AAAA,EACN,WAAWA,IAAE,OAAO;AAAA,EACpB,KAAKA,IAAE,OAAO;AAAA;AAAA,EAEd,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAY,iBAAiB,SAAS;AAAA;AAAA,EAEtC,cAAcA,IACX,WAAWU,aAAY,EACvB,SAAS,EACT,SAAS,0DAA0D;AAAA,EACtE,iBAAiB,2BAA2B,SAAS,EAAE,MAAM,MAAS;AAAA,EACtE,eAAeV,IAAE,WAAWW,cAAa,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACrE,SAASX,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,iBAAiBA,IAAE,WAAWE,gBAAe,EAAE,SAAS;AAAA,EACxD,iBAAiBF,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,yBAAyBA,IAAE,WAAWE,gBAAe,EAAE,SAAS;AAAA,EAChE,iBAAiB,2BAA2B,SAAS;AAAA,EACrD,iCAAiCF,IAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAKtD,mBAAmB,wBAAwB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpD,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAErC,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAE5C,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,eAAeY,qBAAoB,SAAS;AAAA,EAC5C,mBAAmBZ,IAAE,WAAW,aAAa,EAAE,SAAS;AAAA,EACxD,MAAMA,IAAE,MAAMa,iBAAgB,EAAE,SAAS;AAAA;AAAA,EAEzC,qBAAqBb,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOzC,UAAUA,IAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/B,aAAaA,IAAE,OAAO,EAAE,SAAS;AACnC,CAAC,EACA,MAAM,wBAAwB;AAE1B,IAAMc,kCAAiCd,IAAE,OAAO;AAAA,EACrD,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAY,iBAAiB,SAAS;AAAA,EACtC,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAEtC,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAC3C,CAAC;AAEM,IAAMe,qCAAoCf,IAAE,OAAO;AAAA,EACxD,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,MAAMA,IAAE,OAAO;AAAA,EACf,QAAQgB,yBAAwB,MAAM,EAAE,SAAS;AAAA,EACjD,OAAOC,sBAAqB,MAAM,EAAE,SAAS;AAAA,EAC7C,cAAcT,oBAAmB,SAAS;AAAA,EAC1C,eAAeR,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,gBAAgBA,IAAE,WAAW,cAAc,EAAE,SAAS;AAAA,EACtD,MAAMA,IAAE,WAAW,WAAW,EAAE,SAAS;AAAA,EACzC,YAAYA,IAAE,WAAW,iBAAiB,EAAE,SAAS;AAAA,EACrD,mBAAmBA,IAAE,WAAW,aAAa,EAAE,SAAS;AAC1D,CAAC;AAED,IAAM,uBAAuBA,IAAE,WAAW,cAAc;AAEjD,IAAM,8CAA8CA,IAAE;AAAA,EAC3D;AAAA,EACA;AAAA,IACEA,IAAE,OAAO;AAAA,MACP,WAAWA,IAAE,OAAO;AAAA,MACpB,QAAQA,IAAE,wCAAkD;AAAA,MAC5D,gBAAgB;AAAA,IAClB,CAAC;AAAA,IACDA,IAAE,OAAO;AAAA,MACP,WAAWA,IAAE,OAAO;AAAA,MACpB,QAAQA,IAAE,6BAA6C;AAAA,IACzD,CAAC;AAAA,EACH;AACF;AAEO,IAAMkB,uCAAsClB,IAAE,OAAO,CAAC,CAAC;AAE9D,IAAMmB,mCAAkCnB,IAAE,OAAO;AAAA,EAC/C,QAAQA,IAAE,KAAK,CAAC,SAAS,UAAU,qBAAqB,OAAO,CAAC,EAAE,SAAS;AAC7E,CAAC;AAEM,IAAMoB,4BAA2BpB,IAAE,OAAO,CAAC,CAAC;AAE5C,IAAMqB,wCAAuCrB,IAAE,OAAO;AAAA,EAC3D,iBAAiBA,IAAE,OAAO;AAC5B,CAAC;AAEM,IAAMsB,iCAAgCtB,IAAE,OAAO,CAAC,CAAC;AAEjD,IAAMuB,4CAA2CvB,IACrD,OAAO;AAAA,EACN,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,iBAAiBA,IAAE,WAAWE,gBAAe,EAAE,SAAS;AAAA,EACxD,cAAcF,IACX,WAAWU,aAAY,EACvB,SAAS,EACT,SAAS,0DAA0D;AAAA,EACtE,iBAAiB,2BAA2B,SAAS,EAAE,MAAM,MAAS;AAAA,EACtE,eAAeV,IAAE,WAAWW,cAAa,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACrE,iBAAiBX,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,yBAAyBA,IACtB,WAAWE,gBAAe,EAC1B,SAAS,EACT,SAAS;AAAA,EACZ,iBAAiB,2BAA2B,SAAS;AAAA,EACrD,MAAMF,IAAE,MAAMa,iBAAgB,EAAE,SAAS;AAAA,EACzC,sBAAsBb,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1C,iCAAiCA,IAAE,QAAQ,EAAE,SAAS;AACxD,CAAC,EACA,MAAM,wBAAwB;AAEjC,IAAMwB,yBAAwBxB,IAC3B,OAAO;AAAA,EACN,SAASA,IAAE,OAAO;AAAA,EAClB,iBAAiBA,IAAE,WAAWE,gBAAe;AAAA,EAC7C,cAAcF,IACX,WAAWU,aAAY,EACvB,SAAS,EACT,SAAS,0DAA0D;AAAA,EACtE,iBAAiB,2BAA2B,SAAS,EAAE,MAAM,MAAS;AAAA,EACtE,eAAeV,IAAE,WAAWW,cAAa,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACrE,iBAAiBX,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,yBAAyBA,IAAE,WAAWE,gBAAe,EAAE,SAAS;AAAA,EAChE,iBAAiB,2BAA2B,SAAS;AAAA,EACrD,MAAMF,IAAE,MAAMa,iBAAgB,EAAE,SAAS;AAAA,EACzC,SAAS,oBAAoB,SAAS;AAAA,EACtC,iCAAiCb,IAAE,QAAQ,EAAE,SAAS;AACxD,CAAC,EACA,MAAM,wBAAwB;AAEjC,IAAMyB,qBAAoBzB,IAAE,OAAO;AAAA,EACjC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,OAAO;AACrB,CAAC;AAOD,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EACzC,QAAQA,IAAE,OAAO;AAAA,EACjB,MAAMA,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,gBAAgBA,IAAE,QAAQ;AAC5B,CAAC;AAEM,IAAM0B,iCAAgC1B,IAAE,OAAO;AAAA,EACpD,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQ,aAAa,SAAS;AAAA,EAC9B,SAAS;AAAA,EACT,YAAY,iBAAiB,SAAS;AAAA,EACtC,UAAUwB;AAAA,EACV,SAASC,mBAAkB,SAAS;AAAA,EACpC,iBAAiBzB,IAAE,MAAMD,2BAA0B,EAAE,SAAS;AAAA,EAC9D,UAAU,0BAA0B,SAAS;AAC/C,CAAC;AAEM,IAAM4B,yBAAwB3B,IAAE,OAAO;AAAA,EAC5C,WAAWA,IAAE,OAAO;AAAA,EACpB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAGM,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACzC,OAAOA,IAAE,WAAW4B,aAAY;AAAA,EAChC,WAAW5B,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACtC,UAAUA,IAAE,MAAM6B,qBAAoB;AAAA,EACtC,aAAa7B,IAAE,MAAM8B,uBAAsB;AAAA,EAC3C,kBAAkB9B,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EACpC,cAAcA,IAAE,OAAO2B,sBAAqB,EAAE,SAAS;AAAA,EACvD,YAAYI,kBAAiB,SAAS;AAAA,EACtC,uBAAuB/B,IAAE,OAAO+B,iBAAgB,EAAE,SAAS;AAC7D,CAAC;AAEM,IAAMC,2BAA0BhC,IAAE,OAAO;AAAA,EAC9C,SAAS;AAAA,EACT,QAAQ,aAAa,SAAS;AAAA,EAC9B,YAAY,iBAAiB,SAAS;AAAA,EACtC,oBAAoBA,IACjB;AAAA,IACCiC,sCAAqC,OAAO;AAAA,MAC1C,WAAWjC,IAAE,OAAO;AAAA,IACtB,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,wBAAwBA,IACrB;AAAA,IACCkC,4BAA2B,OAAO;AAAA,MAChC,WAAWlC,IAAE,OAAO;AAAA,IACtB,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,UAAUwB;AAAA,EACV,uBAAuBxB,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,gBAAgBA,IACb;AAAA,IACCe,mCAAkC,OAAO;AAAA,MACvC,WAAWf,IAAE,OAAO;AAAA,IACtB,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,SAASyB,mBAAkB,SAAS;AAAA,EACpC,KAAKzB,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACtC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACtC,iBAAiBA,IAAE,MAAMD,2BAA0B,EAAE,SAAS;AAAA;AAAA,EAE9D,YAAYgC,kBAAiB,SAAS;AAAA;AAAA,EAEtC,SAAS,mBAAmB,SAAS;AAAA;AAAA,EAErC,mBAAmB,wBAAwB,SAAS;AAAA,EACpD,WAAW,gBAAgB,SAAS,EAAE,SAAS;AACjD,CAAC;AAEM,IAAMI,8BAA6BnC,IAAE,OAAO,CAAC,CAAC;AAE9C,IAAM,uCAAuCA,IAAE,OAAO,CAAC,CAAC;AAExD,IAAMoC,gCAA+BpC,IAAE,OAAO,CAAC,CAAC;AAEhD,IAAMqC,qCAAoCrC,IAAE,OAAO,CAAC,CAAC;AAErD,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,QAAQA,IAAE,OAAO;AAAA,EACjB,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,uCAAuCA,IAAE,OAAO;AAAA,EAC3D,SAASA,IAAE,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3B,cAAcA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAEM,IAAMsC,kCAAiC,yBAAyB,OAAO;AAAA,EAC5E,QAAQtC,IAAE,2DAA4C;AAAA,EACtD,QAAQS;AACV,CAAC;AAEM,IAAM8B,4BAA2B,yBAAyB,OAAO;AAAA,EACtE,QAAQvC,IAAE,+CAAsC;AAAA,EAChD,QAAQc;AACV,CAAC;AAEM,IAAM0B,+BAA8B,yBAAyB,OAAO;AAAA,EACzE,QAAQxC,IAAE,uDAA0C;AAAA,EACpD,QAAQe;AACV,CAAC;AAEM,IAAM,wCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQf,IAAE,6EAAqD;AAAA,EAC/D,QAAQ;AACV,CAAC;AAEI,IAAMyC,iCAAgC,yBAAyB,OAAO;AAAA,EAC3E,QAAQzC,IAAE,yDAA2C;AAAA,EACrD,QAAQkB;AACV,CAAC;AAEM,IAAMwB,6BAA4B,yBAAyB,OAAO;AAAA,EACvE,QAAQ1C,IAAE,iDAAuC;AAAA,EACjD,QAAQmB;AACV,CAAC;AAEM,IAAMwB,kCAAiC,yBAAyB,OAAO;AAAA,EAC5E,QAAQ3C,IAAE,6DAA6C;AAAA,EACvD,QAAQqB;AACV,CAAC;AAEM,IAAMuB,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQ5C,IAAE,qEAAiD;AAAA,EAC3D,QAAQuB;AACV,CAAC;AAGH,IAAM,4BAA4BvB,IAAE,OAAO;AAAA,EACzC,YAAY;AACd,CAAC;AAGD,IAAM,yBAAyBA,IAAE,yBAA0B;AAE3D,IAAM,+BAA+B6C,iCAAgC,OAAO;AAAA,EAC1E,SAAS7C,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AACzC,CAAC;AAED,IAAM,gCAAgC8C,kCAAiC,OAAO;AAAA,EAC5E,KAAK9C,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AACrC,CAAC;AAEM,IAAM+C,sCACX,0BAA0B,OAAO;AAAA,EAC/B,SAAS/C,IAAE,QAAQ;AAAA,EACnB,eAAe;AACjB,CAAC;AAEH,IAAMgD,+BAA8BhD,IAAE,OAAO;AAAA,EAC3C,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAMiD,gCAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQjD,IAAE,yDAA2C;AAAA,EACrD,QAAQ+C;AACV,CAAC;AAEM,IAAMG,4CACX,0BAA0B,OAAO,CAAC,CAAC;AAErC,IAAMC,qCAAoCnD,IAAE,OAAO;AAAA,EACjD,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAMoD,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQpD,IAAE,qEAAiD;AAAA,EAC3D,QAAQkD;AACV,CAAC;AAEI,IAAMG,oCACX,0BAA0B,OAAO,CAAC,CAAC;AAErC,IAAMC,6BAA4BtD,IAAE,OAAO;AAAA,EACzC,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAMuD,8BAA6B,yBAAyB,OAAO;AAAA,EACxE,QAAQvD,IAAE,qDAAyC;AAAA,EACnD,QAAQqD;AACV,CAAC;AAEM,IAAMG,mCAAkC,0BAA0B;AAAA,EACvE,CAAC;AACH;AAEA,IAAMC,4BAA2BzD,IAAE,OAAO;AAAA,EACxC,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM0D,6BAA4B,yBAAyB,OAAO;AAAA,EACvE,QAAQ1D,IAAE,mDAAwC;AAAA,EAClD,QAAQwD;AACV,CAAC;AAGM,IAAMG,wCAAuC3D,IAAE,OAAO;AAAA,EAC3D,YAAY;AAAA,EACZ,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO;AAClB,CAAC;AAED,IAAM4D,iCAAgC5D,IAAE,OAAO;AAAA,EAC7C,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM6D,kCAAiC,yBAAyB,OAAO;AAAA,EAC5E,QAAQ7D,IAAE,+DAA8C;AAAA,EACxD,QAAQ2D;AACV,CAAC;AAEM,IAAMG,mCAAkC9D,IAAE,MAAM;AAAA,EACrD,iCAAiC,OAAO;AAAA,IACtC,QAAQ4D;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAMG,mCAAkC/D,IAC5C,OAAO;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR,CAAC,EACA,MAAM,4BAA4B,EAClC,MAAM,6BAA6B;AAEtC,IAAMgE,4BAA2BhE,IAAE,OAAO;AAAA,EACxC,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAMiE,6BAA4B,yBAAyB,OAAO;AAAA,EACvE,QAAQjE,IAAE,mDAAwC;AAAA,EAClD,QAAQ+D;AACV,CAAC;AAGM,IAAMG,sCACX,0BAA0B,OAAO;AAAA,EAC/B,eAAe;AACjB,CAAC;AAEH,IAAMC,+BAA8BnE,IAAE,OAAO;AAAA,EAC3C,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAMoE,gCAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQpE,IAAE,yDAA2C;AAAA,EACrD,QAAQkE;AACV,CAAC;AAGM,IAAMG,sCAAqCrE,IAAE,OAAO,CAAC,CAAC;AAEtD,IAAMsE,+BAA8BtE,IAAE,OAAO;AAAA,EAClD,SAASA,IAAE,MAAMuE,wBAAuB;AAC1C,CAAC;AAEM,IAAMC,gCAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQxE,IAAE,yDAA2C;AAAA,EACrD,QAAQqE;AACV,CAAC;AAGM,IAAMI,mCAAkCzE,IAAE,OAAO,CAAC,CAAC;AAEnD,IAAM0E,4BAA2B1E,IAAE,OAAO;AAAA,EAC/C,OAAOA,IAAE,MAAM2E,kBAAiB;AAClC,CAAC;AAEM,IAAMC,6BAA4B,yBAAyB,OAAO;AAAA,EACvE,QAAQ5E,IAAE,mDAAwC;AAAA,EAClD,QAAQyE;AACV,CAAC;AAED,IAAM,4BAA4BzE,IAAE,KAAK,CAAC,QAAQ,QAAQ,WAAW,OAAO,CAAC;AAE7E,IAAM6E,sBAAqB7E,IAAE,OAAO;AAAA,EAClC,IAAIA,IAAE,OAAO;AAAA,EACb,OAAOA,IAAE,OAAO;AAAA,EAChB,aAAaA,IAAE,OAAO;AAAA,EACtB,aAAaA,IAAE,OAAO;AAAA,EACtB,UAAU;AAAA,EACV,gBAAgBA,IAAE,QAAQ;AAAA,EAC1B,kBAAkBA,IAAE,QAAQ;AAC9B,CAAC;AAEM,IAAM8E,gCACXvD,0CAAyC,KAAK;AAAA,EAC5C,SAAS;AAAA,EACT,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,iBAAiB;AACnB,CAAC,EAAE,OAAO;AAAA,EACR,uBAAuBvB,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,OAAOA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAC1C,CAAC;AAEI,IAAM+E,yBAAwB/E,IAAE,OAAO;AAAA,EAC5C,OAAOA,IAAE,MAAM6E,mBAAkB;AACnC,CAAC;AAEM,IAAMG,0BAAyB,yBAAyB,OAAO;AAAA,EACpE,QAAQhF,IAAE,2CAAoC;AAAA,EAC9C,QAAQ8E;AACV,CAAC;AAGM,IAAMG,qCAAoCjF,IAAE,OAAO,CAAC,CAAC;AAErD,IAAMkF,8BAA6BlF,IAAE,OAAO;AAAA,EACjD,SAASA,IAAE,MAAMmF,0BAAyB;AAAA,EAC1C,SAASC;AACX,CAAC;AAEM,IAAMC,+BAA8B,yBAAyB,OAAO;AAAA,EACzE,QAAQrF,IAAE,uDAA0C;AAAA,EACpD,QAAQiF;AACV,CAAC;AAGM,IAAMK,oCACX,0BAA0B,OAAO;AAAA,EAC/B,UAAUtF,IAAE,OAAO;AAAA,EACnB,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEH,IAAMuF,6BAA4BvF,IAAE,OAAO;AAAA,EACzC,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAMwF,8BAA6B,yBAAyB,OAAO;AAAA,EACxE,QAAQxF,IAAE,qDAAyC;AAAA,EACnD,QAAQsF;AACV,CAAC;AAGD,IAAMG,iCAAgCzF,IAAE,OAAO,CAAC,CAAC;AAGjD,IAAM0F,uBAAsB1F,IAAE,OAAO;AAAA,EACnC,MAAMA,IAAE,OAAO;AAAA,EACf,MAAMA,IAAE,OAAO;AAAA,EACf,MAAMA,IAAE,KAAK,CAAC,aAAa,OAAO,CAAC;AAAA;AACrC,CAAC;AAEM,IAAM2F,mBAAkB3F,IAAE,OAAO;AAAA,EACtC,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAUA,IAAE,WAAW4F,cAAa;AAAA,EACpC,UAAU5F,IAAE,OAAO;AAAA,EACnB,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE7B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE7B,WAAWA,IAAE,MAAM0F,oBAAmB,EAAE,SAAS;AACnD,CAAC;AAED,IAAMG,0BAAyB7F,IAAE,OAAO;AAAA,EACtC,QAAQA,IAAE,MAAM2F,gBAAe;AACjC,CAAC;AAEM,IAAMG,2BAA0B,yBAAyB,OAAO;AAAA,EACrE,QAAQ9F,IAAE,6CAAqC;AAAA,EAC/C,QAAQyF;AACV,CAAC;AAED,IAAMM,sCAAqC/F,IAAE,OAAO,CAAC,CAAC;AAI/C,IAAMgG,gCAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQC,IAAE,yDAA2C;AAAA,EACrD,QAAQC;AACV,CAAC;AAED,IAAMC,kCAAiCF,IAAE,OAAO;AAAA,EAC9C,MAAMA,IAAE,OAAO;AAAA,EACf,QAAQA,IAAE,OAAO;AAAA,EACjB,UAAUA,IAAE,WAAW,uBAAuB;AAChD,CAAC;AAED,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,WAAWG,cAAa;AAAA,EACpC,QAAQH,IAAE,OAAO;AACnB,CAAC;AAED,IAAM,uCAAuCA,IAAE,OAAO;AAAA,EACpD,MAAMA,IAAE,OAAO;AAAA,EACf,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQA,IAAE,OAAO;AACnB,CAAC;AAED,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,WAAW,aAAa;AAAA,EACpC,QAAQA,IAAE,OAAO;AACnB,CAAC;AAED,IAAM,yCAAyCA,IAAE,OAAO,CAAC,CAAC;AAEnD,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,SAASA,IAAE,OAAO;AAAA,EAClB,kBAAkBA,IAAE,OAAO;AAAA,EAC3B,eAAeA,IAAE,OAAO;AAAA,EACxB,0BAA0BA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,YAAYA,IAAE,OAAO;AAAA,EACrB,YAAYA,IAAE,OAAO;AAAA,EACrB,YAAYA,IAAE,MAAME,+BAA8B;AAAA,EAClD,QAAQF,IAAE,MAAM,gCAAgC;AAAA,EAChD,YAAYA,IAAE,MAAM,oCAAoC;AAAA,EACxD,QAAQA,IAAE,MAAM,gCAAgC;AAClD,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,iEAA+C;AAAA,IACzD,QAAQ;AAAA,EACV;AACF;AAGA,IAAMI,sCAAqCJ,IAAE,OAAO;AAAA,EAClD,aAAaA,IAAE,OAAO;AAAA,EACtB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAMK,+BAA8BL,IAAE,OAAO;AAAA,EAClD,aAAaA,IAAE,OAAO;AACxB,CAAC;AAEM,IAAMM,gCAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQN,IAAE,yDAA2C;AAAA,EACrD,QAAQI;AACV,CAAC;AAID,IAAMG,oCAAmCP,IAAE,OAAO;AAAA,EAChD,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAED,IAAMQ,4BAA2BR,IAAE,OAAO;AAAA,EACxC,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IAAE,OAAO;AAAA,EACtB,MAAMA,IAAE,OAAO;AACjB,CAAC;AAED,IAAMS,4BAA2BT,IAAE,OAAO;AAAA,EACxC,UAAUA,IAAE,OAAO;AACrB,CAAC;AAED,IAAMU,2BAA0BV,IAAE,OAAO;AAAA,EACvC,UAAUA,IAAE,OAAO;AAAA,EACnB,QAAQA,IAAE,OAAO;AACnB,CAAC;AAEM,IAAMW,6BAA4BX,IAAE,OAAO;AAAA,EAChD,gBAAgBA,IAAE,MAAMQ,yBAAwB;AAAA,EAChD,cAAcR,IAAE,MAAMS,yBAAwB;AAAA,EAC9C,cAAcT,IAAE,MAAMU,wBAAuB;AAC/C,CAAC;AAEM,IAAME,8BAA6B,yBAAyB,OAAO;AAAA,EACxE,QAAQZ,IAAE,qDAAyC;AAAA,EACnD,QAAQO;AACV,CAAC;AAED,IAAMM,oCAAmCb,IAAE,OAAO;AAAA,EAChD,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AAAA,EACpB,gBAAgBA,IAAE,MAAMQ,yBAAwB;AAAA,EAChD,eAAeR,IAAE,MAAMS,yBAAwB;AAAA,EAC/C,WAAWT,IAAE,OAAO;AACtB,CAAC;AAEM,IAAMc,6BAA4Bd,IAAE,OAAO;AAAA,EAChD,cAAcA,IAAE,OAAO;AAAA,EACvB,eAAeA,IAAE,OAAO;AAAA,EACxB,cAAcA,IAAE,OAAO;AAAA,EACvB,oBAAoBA,IAAE,OAAO;AAAA,EAC7B,mBAAmBA,IAAE,OAAO;AAC9B,CAAC;AAEM,IAAMe,8BAA6B,yBAAyB,OAAO;AAAA,EACxE,QAAQf,IAAE,mDAAwC;AAAA,EAClD,QAAQa;AACV,CAAC;AAID,IAAMG,qCAAoChB,IAAE,OAAO;AAAA,EACjD,oBAAoBA,IAAE,OAAO,EAAE,SAAS;AAC1C,CAAC;AAEM,IAAMiB,8BAA6BjB,IAAE,OAAO;AAAA,EACjD,cAAcA,IAAE,OAAO;AAAA,EACvB,cAAcA,IAAE,OAAO;AACzB,CAAC;AAEM,IAAMkB,+BAA8B,yBAAyB,OAAO;AAAA,EACzE,QAAQlB,IAAE,qDAAyC;AAAA,EACnD,QAAQgB;AACV,CAAC;AAEM,IAAMG,gCAA+BnB,IAAE,MAAM;AAAA,EAClD,iCAAiC,OAAO;AAAA,IACtC,QAAQiB;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMG,2BAA0BpB,IAAE,OAAO;AAAA,EAC9C,cAAcA,IAAE,OAAO;AACzB,CAAC;AAEM,IAAMqB,kCAAiCrB,IAAE,OAAO;AAAA,EACrD,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,MAAMA,IACH;AAAA,IACCA,IAAE,OAAO,EAAE,MAAMA,IAAE,OAAO,GAAG,UAAUA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;AAAA,EAC1E,EACC,SAAS;AACd,CAAC;AAEM,IAAMsB,4BAA2B,yBAAyB,OAAO;AAAA,EACtE,QAAQtB,IAAE,+CAAsC;AAAA,EAChD,QAAQqB;AACV,CAAC;AAEM,IAAME,6BAA4BvB,IAAE,MAAM;AAAA,EAC/C,iCAAiC,OAAO;AAAA,IACtC,QAAQoB;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAMI,oCAAmCxB,IAAE,OAAO;AAAA,EACvD,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAMyB,6BAA4BzB,IAAE,OAAO;AAAA,EAChD,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM0B,8BAA6B,yBAAyB,OAAO;AAAA,EACxE,QAAQ1B,IAAE,mDAAwC;AAAA,EAClD,QAAQwB;AACV,CAAC;AAEM,IAAMG,+BAA8B3B,IAAE,MAAM;AAAA,EACjD,iCAAiC,OAAO;AAAA,IACtC,QAAQyB;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAM,2BAA2B,yBAAyB,OAAO;AAAA,EACtE,QAAQzB,IAAE,+CAAsC;AAAA,EAChD,QAAQA,IAAE,OAAO,CAAC,CAAC;AACrB,CAAC;AAEM,IAAM,4BAA4BA,IAAE,MAAM;AAAA,EAC/C,iCAAiC,OAAO;AAAA,IACtC,QAAQA,IAAE,OAAO,CAAC,CAAC;AAAA,EACrB,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM4B,uBAAsB5B,IAAE,mBAAmB,UAAU;AAAA,EAChE6B;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACA;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAjD;AAAA,EACA;AAAA,EACAO;AAAA,EACAM;AAAA,EACAG;AAAA,EACAG;AAAA,EACAI;AAAA,EACAI;AAAA,EACA;AACF,CAAC;AAEM,IAAMuB,mCAAkCjD,IAAE,MAAM;AAAA,EACrD,iCAAiC,OAAO;AAAA,IACtC,QAAQkD;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,6BAA4BnD,IAAE,MAAM;AAAA,EAC/C,iCAAiC,OAAO;AAAA,IACtC,QAAQoD;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,gCAA+BrD,IAAE,MAAM;AAAA,EAClD,iCAAiC,OAAO;AAAA,IACtC,QAAQsD;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,yCAAyCtD,IAAE,MAAM;AAAA,EAC5D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMuD,kCAAiCvD,IAAE,MAAM;AAAA,EACpD,iCAAiC,OAAO;AAAA,IACtC,QAAQwD;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,8BAA6BzD,IAAE,MAAM;AAAA,EAChD,iCAAiC,OAAO;AAAA,IACtC,QAAQ0D;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,mCAAkC3D,IAAE,MAAM;AAAA,EACrD,iCAAiC,OAAO;AAAA,IACtC,QAAQ4D;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,uCAAsC7D,IAAE,MAAM;AAAA,EACzD,iCAAiC,OAAO;AAAA,IACtC,QAAQ8D;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,iCAAgC/D,IAAE,MAAM;AAAA,EACnD,iCAAiC,OAAO;AAAA,IACtC,QAAQgE;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,uCAAsCjE,IAAE,MAAM;AAAA,EACzD,iCAAiC,OAAO;AAAA,IACtC,QAAQkE;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,+BAA8BnE,IAAE,MAAM;AAAA,EACjD,iCAAiC,OAAO;AAAA,IACtC,QAAQoE;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,8BAA6BrE,IAAE,MAAM;AAAA,EAChD,iCAAiC,OAAO;AAAA,IACtC,QAAQsE;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,8BAA6BvE,IAAE,MAAM;AAAA,EAChD,iCAAiC,OAAO;AAAA,IACtC,QAAQwE;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,iCAAgCzE,IAAE,MAAM;AAAA,EACnD,iCAAiC,OAAO;AAAA,IACtC,QAAQ0E;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,iCAAgC3E,IAAE,MAAM;AAAA,EACnD,iCAAiC,OAAO;AAAA,IACtC,QAAQ4E;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,8BAA6B7E,IAAE,MAAM;AAAA,EAChD,iCAAiC,OAAO;AAAA,IACtC,QAAQ8E;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,2BAA0B/E,IAAE,MAAM;AAAA,EAC7C,iCAAiC,OAAO;AAAA,IACtC,QAAQgF;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,gCAA+BjF,IAAE,MAAM;AAAA,EAClD,iCAAiC,OAAO;AAAA,IACtC,QAAQkF;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,+BAA8BnF,IAAE,MAAM;AAAA,EACjD,iCAAiC,OAAO;AAAA,IACtC,QAAQoF;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,4BAA2BrF,IAAE,MAAM;AAAA,EAC9C,iCAAiC,OAAO;AAAA,IACtC,QAAQsF;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMC,iCAAgCvF,IAAE,MAAM;AAAA,EACnD,iCAAiC,OAAO;AAAA,IACtC,QAAQwF;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,oCAAoCxF,IAAE,MAAM;AAAA,EACvD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMyF,iCAAgCzF,IAAE,MAAM;AAAA,EACnD,iCAAiC,OAAO;AAAA,IACtC,QAAQK;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMqF,+BAA8B1F,IAAE,MAAM;AAAA,EACjD,iCAAiC,OAAO;AAAA,IACtC,QAAQW;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAMgF,+BAA8B3F,IAAE,MAAM;AAAA,EACjD,iCAAiC,OAAO;AAAA,IACtC,QAAQc;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;;;AC9kCM,IAAK,4BAAL,kBAAK8E,+BAAL;AACL,EAAAA,2BAAA,WAAQ;AACR,EAAAA,2BAAA,YAAS;AACT,EAAAA,2BAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AAOL,IAAK,gCAAL,kBAAKC,mCAAL;AACL,EAAAA,+BAAA,iBAAc;AACd,EAAAA,+BAAA,wBAAqB;AACrB,EAAAA,+BAAA,qBAAkB;AAClB,EAAAA,+BAAA,gBAAa;AAJH,SAAAA;AAAA,GAAA;AAgBL,IAAK,sBAAL,kBAAKC,yBAAL;AAEL,EAAAA,qBAAA,cAAW;AAEX,EAAAA,qBAAA,mBAAgB;AAEhB,EAAAA,qBAAA,eAAY;AAEZ,EAAAA,qBAAA,mBAAgB;AAEhB,EAAAA,qBAAA,oBAAiB;AAEjB,EAAAA,qBAAA,mBAAgB;AAEhB,EAAAA,qBAAA,qBAAkB;AAElB,EAAAA,qBAAA,mBAAgB;AAhBN,SAAAA;AAAA,GAAA;AAoBL,IAAK,yBAAL,kBAAKC,4BAAL;AAEL,EAAAA,wBAAA,aAAU;AAEV,EAAAA,wBAAA,kBAAe;AAJL,SAAAA;AAAA,GAAA;;;AC5CZ,SAAS,KAAAC,WAAS;AAIX,IAAM,4BAA4BC,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWA,IAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAYM,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EACjD,IAAIA,IAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EAC/B,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAUA,IAAE,OAAO;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACnC,QAAQA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,cAAcA,IAAE,WAAW,sBAAsB,EAAE,SAAS;AAAA,EAC5D,WAAW,0BAA0B,SAAS;AAAA,EAC9C,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;;;AC/BD,SAAS,KAAAC,WAAS;AASX,IAAK,wBAAL,kBAAKC,2BAAL;AACL,EAAAA,uBAAA,kBAAe;AACf,EAAAA,uBAAA,mBAAgB;AAFN,SAAAA;AAAA,GAAA;AASL,IAAM,4BAA4BC,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,QAAQ,eAAe;AAAA,EAC/B,IAAIA,IAAE,OAAO;AAAA,EACb,OAAOA,IAAE,OAAO;AAAA,EAChB,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,2BAA2BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChD,uBAAuBA,IAAE,WAAW,qBAAqB,EAAE,SAAS;AAAA,EACpE,OAAOA,IAAE,OAAO;AAAA,EAChB,QAAQA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,mBAAmBA,IAAE,WAAWC,kBAAiB,EAAE,SAAS;AAAA,EAC5D,iBAAiBD,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACtC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEtC,QAAQ,aAAa,SAAS;AAChC,CAAC;;;ACpCD,SAAS,KAAAE,WAAS;AAEX,IAAM,mCAAmCA,IAAE,MAAM;AAAA,EACtDA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,IAAI,CAAC;AAAA,EAC5BA,IAAE,OAAO;AAAA,EACTA,IAAE,MAAMA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;;;ACDD,SAAS,KAAAC,WAAS;AAcX,IAAM,oCAAoCC,IAC9C,OAAO;AAAA,EACN,SAASA,IAAE,OAAO;AAAA,EAClB,aAAaA,IAAE,WAAW,WAAW;AAAA,EACrC,iBAAiBA,IAAE,WAAWC,gBAAe;AAC/C,CAAC,EACA,OAAO;AAMH,IAAMC,yBAAwB,6BAA6B,OAAO;AAAA,EACvE,cAAcF,IAAE,WAAWG,cAAa,EAAE,SAAS;AAAA,EACnD,uBAAuBH,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3C,iBAAiBA,IAAE,WAAW,WAAW,EAAE,SAAS;AAAA,EACpD,uBAAuBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3C,YAAYI,kBAAiB,SAAS;AAAA,EACtC,qBAAqBA,kBAAiB,SAAS;AAAA,EAC/C,qCAAqCJ,IAAE,OAAOI,iBAAgB,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzE,YAAYJ,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAGhC,MAAMA,IAAE,MAAMK,iBAAgB,EAAE,SAAS;AAAA;AAAA,EAGzC,gBAAgBL,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAG7C,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAG9C,iBAAiB,sBAAsB,SAAS;AAAA;AAAA,EAEhD,iCAAiCA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAEtD,6BAA6B,kCAAkC,SAAS;AAC1E,CAAC;;;ACvDM,IAAK,wBAAL,kBAAKM,2BAAL;AACL,EAAAA,uBAAA,YAAS;AACT,EAAAA,uBAAA,YAAS;AACT,EAAAA,uBAAA,UAAO;AAHG,SAAAA;AAAA,GAAA;AAUL,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,YAAS;AAJC,SAAAA;AAAA,GAAA;AAML,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,UAAO;AAHG,SAAAA;AAAA,GAAA;;;ACtBZ,SAAS,KAAAC,WAAS;AAaX,IAAM,sBAAsBC,IAAE,OAAO;AAAA,EAC1C,WAAWA,IAAE,OAAO;AAAA,EACpB,SAASA,IAAE,OAAO;AAAA,EAClB,SAASA,IAAE,OAAO;AAAA,EAClB,YAAYA,IAAE,QAAQ,EAAE,SAAS;AACnC,CAAC;AAKM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,WAAWA,IAAE,OAAO;AAAA,EACpB,SAASA,IAAE,OAAO;AACpB,CAAC;AAKM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EAC1C,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,eAAeA,IAAE,KAAK,CAAC,WAAW,MAAM,CAAC,EAAE,SAAS;AACtD,CAAC;AAKM,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EAC7C,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAASA,IAAE,OAAO;AAAA,EAClB,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,WAAWA,IAAE,WAAW,SAAS,EAAE,SAAS;AAAA,EAC5C,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,eAAeA,IAAE,QAAQ,EAAE,SAAS;AACtC,CAAC;AAKM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EAC1C,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACvC,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAChD,CAAC;AAKM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EAC1C,SAASA,IAAE,OAAO;AAAA,EAClB,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,kBAAkBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACvC,aAAaA,IAAE,KAAK,CAAC,cAAc,SAAS,CAAC,EAAE,SAAS;AAAA,EACxD,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,cAAcA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAKM,IAAM,oBAAoBA,IAAE,OAAO;AAAA,EACxC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAC/C,CAAC;AAKM,IAAM,2BAA2BA,IAAE,OAAO;AAAA,EAC/C,OAAOA,IAAE,OAAO;AAAA,EAChB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAKM,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,OAAO;AAChB,CAAC;AAKM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EAC1C,eAAeA,IACZ,OAAO,EACP;AAAA,IACC;AAAA,EACF;AAAA,EACF,aAAaA,IACV,OAAO,EACP,SAAS,yDAAyD;AAAA,EACrE,QAAQA,IACL,OAAO,EACP,SAAS,kDAAkD;AAChE,CAAC;AAKM,IAAM,2BAA2BA,IAAE,OAAO;AAAA,EAC/C,OAAOA,IAAE,OAAO;AAClB,CAAC;AAKM,IAAM,8BAA8BA,IAAE,OAAO;AAAA,EAClD,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAKM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EAC3C,OAAOA,IAAE,OAAO;AAClB,CAAC;AAKM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO;AAClB,CAAC;AAKM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EACpD,UAAUA,IAAE,OAAO;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAUM,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EACrC,MAAMA,IAAE,KAAK,CAAC,SAAS,WAAW,aAAa,SAAS,CAAC;AAAA,EACzD,SAASA,IAAE,OAAO;AAAA,EAClB,YAAYA,IACT,OAAO;AAAA,IACN,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,IACzB,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,CAAC,EACA,SAAS;AACd,CAAC;AAKM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,WAAWA,IAAE,MAAM,cAAc,EAAE,SAAS;AAAA,EAC5C,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;;;AC1LD,SAAS,KAAAC,WAAS;AAOX,IAAM,2BAA2BA,IAAE,OAAO;AAAA,EAC/C,SAASA,IAAE,OAAO;AAAA,EAClB,WAAWA,IAAE,OAAO;AAAA,EACpB,aAAaA,IAAE,OAAO;AACxB,CAAC;;;ACXD;AAAA;AAAA,0BAAAC;AAAA;AAAA,SAAS,KAAAC,WAAS;AAKX,IAAMD,oBAAmBC,IAAE,OAAO;AAAA,EACvC,aAAaA,IAAE,OAAO,EAAE,IAAI;AAAA,EAC5B,cAAcA,IAAE,OAAO,EAAE,IAAI;AAAA,EAC7B,0BAA0BA,IAAE,OAAO,EAAE,IAAI;AAAA,EACzC,sBAAsBA,IAAE,OAAO,EAAE,IAAI;AAAA,EACrC,gBAAgBA,IAAE,OAAO,EAAE,IAAI;AAAA,EAC/B,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AACtC,CAAC;;;ACZD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":["DroidServerMethod","DroidClientMethod","SessionNotificationType","ToolConfirmationOutcome","ToolConfirmationType","DroidWorkingState","ContextStatsAccuracy","DroidErrorType","McpServerStatus","McpServerType","McpStatus","McpAuthOutcome","DecompSessionType","MissionState","FeatureStatus","FeatureSuccessState","IssueSeverity","DismissalType","ProgressLogEntryType","DroidInteractionMode","AutonomyLevel","AutonomyMode","ReasoningEffort","ModelProvider","JsonRpcErrorCode","JsonRpcMessageType","ServerRequestHandlerType","SettingsLevel","SkillLocation","z","z","z","z","z","z","z","z","z","z","z","z","ToolUseBlockSchema","z","resolve","resolve","AddMcpServerRequestParamsSchema","AddMcpServerRequestSchema","AddMcpServerResponseSchema","AddUserMessageRequestParamsSchema","AddUserMessageRequestSchema","AddUserMessageResponseSchema","AddUserMessageResultSchema","AskUserCollectedAnswerSchema","AskUserQuestionSchema","AskUserRequestParamsSchema","AskUserRequestSchema","AskUserResponseSchema","AskUserResultSchema","AuthenticateMcpServerRequestParamsSchema","AuthenticateMcpServerRequestSchema","AuthenticateMcpServerResponseSchema","AutonomyLevel","AutonomyMode","AvailableModelConfigSchema","Base64ImageSourceSchema","BaseNotificationSchema","BaseRequestSchema","BaseResponseFailureSchema","BaseResponseSuccessSchema","CancelMcpAuthRequestParamsSchema","CancelMcpAuthRequestSchema","CancelMcpAuthResponseSchema","ClearMcpAuthRequestParamsSchema","ClearMcpAuthRequestSchema","ClearMcpAuthResponseSchema","CliRequestOrNotificationSchema","ClientRequestSchema","CloseSessionRequestSchema","CloseSessionResponseSchema","CloseSessionResultSchema","CompactSessionRequestSchema","CompactSessionResponseSchema","CompactSessionResultSchema","ContentBlockSchema","ContextStatsAccuracy","ContextStatsSchema","DecompSessionType","DiscoveredIssueSchema","DismissalRecordSchema","DismissalType","DocumentBlockSchema","DocumentSourceSchema","DroidClientMethod","DroidErrorType","DroidHookEventSchema","DroidInteractionMode","DroidServerMethod","DroidWorkingState","ExecuteRewindRequestSchema","ExecuteRewindResponseSchema","ExecuteRewindResultSchema","FACTORY_PROTOCOL_VERSION","FactoryDroidMessageSchema","FeatureStatus","FeatureSuccessState","FeatureSuccessStateSchema","ForkSessionRequestParamsSchema","ForkSessionRequestSchema","ForkSessionResponseSchema","ForkSessionResultSchema","GetContextStatsRequestSchema","GetContextStatsResponseSchema","GetRewindInfoRequestSchema","GetRewindInfoResponseSchema","GetRewindInfoResultSchema","HandoffItemsDismissedEntrySchema","HandoffSchema","ImageBlockSchema","InitializeSessionRequestParamsSchema","InitializeSessionRequestSchema","InitializeSessionResponseSchema","InitializeSessionResultSchema","InteractiveCheckSchema","InterruptSessionRequestParamsSchema","InterruptSessionRequestSchema","InterruptSessionResponseSchema","InterruptSessionResultSchema","IssueSeverity","JSONRPC_VERSION","JsonRpcEnvelopeSchema","JsonRpcErrorCode","JsonRpcErrorSchema","JsonRpcMessageSchema","JsonRpcMessageType","KillWorkerSessionRequestParamsSchema","KillWorkerSessionRequestSchema","KillWorkerSessionResponseSchema","KillWorkerSessionResultSchema","LEGACY_FACTORY_API_VERSION","ListMcpRegistryRequestParamsSchema","ListMcpRegistryRequestSchema","ListMcpRegistryResponseSchema","ListMcpRegistryResultSchema","ListMcpServersRequestParamsSchema","ListMcpServersRequestSchema","ListMcpServersResponseSchema","ListMcpServersResultSchema","ListMcpToolsRequestParamsSchema","ListMcpToolsRequestSchema","ListMcpToolsResponseSchema","ListMcpToolsResultSchema","ListSkillsRequestSchema","ListSkillsResponseSchema","ListToolsRequestParamsSchema","ListToolsRequestSchema","ListToolsResponseSchema","ListToolsResultSchema","LoadSessionRequestParamsSchema","LoadSessionRequestSchema","LoadSessionResponseSchema","LoadSessionResultSchema","McpAuthOutcome","McpHttpServerConfigFieldsSchema","McpRegistryServerSchema","McpServerStatus","McpServerStatusInfoSchema","McpServerType","McpStatus","McpStatusSummarySchema","McpStdioServerConfigFieldsSchema","McpToolInfoSchema","MilestoneValidationTriggeredEntrySchema","MissionAcceptedEntrySchema","MissionFeatureSchema","MissionFeaturesChangedNotificationSchema","MissionHeartbeatNotificationSchema","MissionPausedEntrySchema","MissionProgressEntryNotificationSchema","MissionResumedEntrySchema","MissionRunStartedEntrySchema","MissionState","MissionStateChangedNotificationSchema","MissionWorkerCompletedNotificationSchema","MissionWorkerStartedNotificationSchema","ModelProvider","OutputFormatSchema","ProgressLogEntrySchema","ProgressLogEntryType","ReasoningEffort","RedactedThinkingBlockSchema","RemoveMcpServerRequestParamsSchema","RemoveMcpServerRequestSchema","RemoveMcpServerResponseSchema","RenameSessionRequestParamsSchema","RenameSessionRequestSchema","RenameSessionResponseSchema","RenameSessionResultSchema","RequestPermissionRequestParamsSchema","RequestPermissionRequestSchema","RequestPermissionResponseSchema","RequestPermissionResultSchema","SessionNotificationSchema","SessionNotificationSchemaList","SessionNotificationType","SessionSettingsSchema","SessionSourceSchema","SessionTagSchema","SessionTokenUsageChangedNotificationSchema","SettingsLevel","SkillInfoSchema","SkillLocation","SubmitBugReportRequestSchema","SubmitBugReportResponseSchema","SubmitBugReportResultSchema","SubmitMcpAuthCodeRequestParamsSchema","SubmitMcpAuthCodeRequestSchema","SubmitMcpAuthCodeResponseSchema","TestCaseSchema","TestFileSchema","TestsSchema","TextBlockSchema","ThinkingBlockSchema","ToggleMcpServerRequestParamsSchema","ToggleMcpServerRequestSchema","ToggleMcpServerResponseSchema","ToggleMcpToolRequestParamsSchema","ToggleMcpToolRequestSchema","ToggleMcpToolResponseSchema","TokenUsageSchema","ToolConfirmationDetailsSchema","ToolConfirmationListItemSchema","ToolConfirmationOutcome","ToolConfirmationType","ToolProgressUpdateSchema","ToolUseSchema","TraceContextMetaSchema","UpdateSessionSettingsRequestParamsSchema","UpdateSessionSettingsRequestSchema","UpdateSessionSettingsResponseSchema","UpdateSessionSettingsResultSchema","VerificationCommandSchema","VerificationSchema","WorkerCompletedEntrySchema","WorkerFailedEntrySchema","WorkerPausedEntrySchema","WorkerSelectedFeatureEntrySchema","WorkerStartedEntrySchema","WorkerStateInfoSchema","LEGACY_FACTORY_API_VERSION","FACTORY_PROTOCOL_VERSION","JSONRPC_VERSION","JsonRpcMessageType","JsonRpcErrorCode","DroidInteractionMode","Platform","AutonomyLevel","AutonomyMode","ToolConfirmationOutcome","ToolConfirmationType","SandboxViolationType","SandboxViolationReason","SandboxOperationType","DroidServerMethod","QueuePlacement","ResolveQueuedUserMessageAction","DroidClientMethod","SessionNotificationType","StructuredOutputErrorCode","McpAuthOutcome","McpServerStatus","McpServerType","McpStatus","DroidErrorType","DroidWorkingState","DroidLoopStatus","DroidLoopStopReason","ContextStatsAccuracy","ToolExecutionRenderStatus","DecompSessionType","MissionState","FeatureStatus","FeatureSuccessState","IssueSeverity","DismissalType","ProgressLogEntryType","WorkerFailureReason","MissionPauseReason","ContextCategoryColorKey","MessageVisibility","MessageRoleNoSystem","MessageRole","MessageContentBlockType","DocumentSourceType","SessionPlatform","SessionOrigin","ModelID","OpenAIPhase","ChatCompletionReasoningField","ReasoningEffort","ModelProvider","ApiProvider","ModelKind","LLMModelTier","SettingsLevel","DroidLocation","SkillLocation","SandboxMode","DiffMode","SoundFocusMode","TodoDisplayMode","SubagentSoundMode","LogoAnimationMode","ToolResultDisplay","z","z","JsonRpcMessageType","DroidInteractionMode","TraceContextMetaSchema","JsonRpcEnvelopeSchema","JSONRPC_VERSION","LEGACY_FACTORY_API_VERSION","JsonRpcErrorSchema","JsonRpcErrorCode","BaseRequestSchema","BaseResponseSuccessSchema","BaseResponseFailureSchema","BaseNotificationSchema","JsonRpcMessageSchema","z","z","SessionTagSchema","TokenUsageSchema","z","z","SessionSourceSchema","z","z","TextBlockSchema","Base64ImageSourceSchema","ImageBlockSchema","ThinkingBlockSchema","ModelProvider","RedactedThinkingBlockSchema","ToolUseSchema","DocumentSourceSchema","DocumentBlockSchema","ContentBlockSchema","FactoryDroidMessageSchema","z","z","ReasoningEffort","z","ReasoningEffortSchema","z","ReasoningEffort","AutonomyMode","AutonomyLevel","z","z","ReasoningEffortSchema","z","ReasoningEffort","ModelProvider","z","z","ReasoningEffortSchema","z","ReasoningEffort","modelIdValues","tolerantModelIdArray","SandboxModeSchema","AutonomyLevel","z","z","z","ToolConfirmationListItemSchema","z","ToolConfirmationOutcome","z","z","McpHttpServerConfigFieldsSchema","McpStdioServerConfigFieldsSchema","McpServerStatusInfoSchema","McpServerStatus","SettingsLevel","McpServerType","McpStatusSummarySchema","McpRegistryServerSchema","McpToolInfoSchema","z","FeatureSuccessStateSchema","z","FeatureSuccessState","MissionFeatureSchema","FeatureStatus","IssueSeverity","DismissalType","DiscoveredIssueSchema","VerificationCommandSchema","InteractiveCheckSchema","VerificationSchema","TestCaseSchema","TestFileSchema","TestsSchema","SkillDeviationSchema","SkillFeedbackSchema","HandoffSchema","DismissalRecordSchema","MissionState","BaseProgressLogEntrySchema","MissionAcceptedEntrySchema","MissionPausedEntrySchema","MissionResumedEntrySchema","MissionRunStartedEntrySchema","WorkerStartedEntrySchema","WorkerSelectedFeatureEntrySchema","WorkerCompletedEntrySchema","WorkerFailedEntrySchema","WorkerPausedEntrySchema","HandoffItemsDismissedEntrySchema","MilestoneValidationTriggeredEntrySchema","ProgressLogEntrySchema","z","ToolResultNotificationSchema","z","ToolProgressUpdateSchema","ToolProgressUpdateNotificationSchema","CreateMessageNotificationSchema","FactoryDroidMessageSchema","ErrorNotificationSchema","DroidErrorType","DroidWorkingStateChangedNotificationSchema","DroidWorkingState","PermissionResolvedNotificationSchema","ToolConfirmationOutcome","SettingsUpdatedNotificationSchema","AutonomyMode","AutonomyLevel","ReasoningEffort","SessionTitleUpdatedNotificationSchema","McpStatusChangedNotificationSchema","McpServerStatusInfoSchema","McpStatusSummarySchema","AssistantTextDeltaNotificationSchema","AssistantTextCompleteNotificationSchema","StructuredOutputNotificationSchema","ThinkingTextDeltaNotificationSchema","ThinkingTextCompleteNotificationSchema","SessionTokenUsageChangedNotificationSchema","TokenUsageSchema","MissionStateChangedNotificationSchema","MissionState","MissionFeaturesChangedNotificationSchema","MissionFeatureSchema","MissionProgressEntryNotificationSchema","ProgressLogEntrySchema","MissionHeartbeatNotificationSchema","MissionWorkerStartedNotificationSchema","MissionWorkerCompletedNotificationSchema","McpAuthRequiredNotificationSchema","McpAuthCompletedNotificationSchema","McpAuthOutcome","HookCommandSchema","HookResultSchema","DroidHookEventSchema","ToolCallNotificationSchema","ToolUseSchema","HookExecutionStartedNotificationSchema","HookExecutionCompletedNotificationSchema","SessionNotificationSchemaList","SessionNotificationParamsSchema","SessionNotificationSchema","EditToolConfirmationDetailsSchema","ExecuteToolConfirmationDetailsSchema","CreateToolConfirmationDetailsSchema","AskUserConfirmationDetailsSchema","ExitSpecModeConfirmationDetailsSchema","ProposeMissionConfirmationDetailsSchema","StartMissionRunConfirmationDetailsSchema","ApplyPatchToolConfirmationDetailsSchema","McpToolConfirmationDetailsSchema","ToolConfirmationDetailsSchema","ToolConfirmationInfoSchema","ToolConfirmationType","RequestPermissionRequestParamsSchema","ToolConfirmationListItemSchema","RequestPermissionRequestSchema","AskUserQuestionSchema","AskUserRequestParamsSchema","AskUserRequestSchema","AskUserCollectedAnswerSchema","AskUserResultSchema","AskUserResponseSchema","RequestPermissionResultSchema","RequestPermissionResponseSchema","CliRequestOrNotificationSchema","JsonRpcEnvelopeSchema","z","AvailableModelConfigSchema","z","ModelProvider","ReasoningEffort","ContextStatsSchema","ContextStatsAccuracy","HttpHeaderSchema","FactoryDroidMessageSchema","DecompSessionType","OutputFormatSchema","InitializeSessionRequestParamsSchema","AutonomyMode","AutonomyLevel","SessionSourceSchema","SessionTagSchema","LoadSessionRequestParamsSchema","AddUserMessageRequestParamsSchema","Base64ImageSourceSchema","DocumentSourceSchema","InterruptSessionRequestParamsSchema","CloseSessionRequestParamsSchema","CloseSessionResultSchema","KillWorkerSessionRequestParamsSchema","KillWorkerSessionResultSchema","UpdateSessionSettingsRequestParamsSchema","SessionSettingsSchema","GitRepoInfoSchema","InitializeSessionResultSchema","WorkerStateInfoSchema","MissionState","MissionFeatureSchema","ProgressLogEntrySchema","TokenUsageSchema","LoadSessionResultSchema","RequestPermissionRequestParamsSchema","AskUserRequestParamsSchema","AddUserMessageResultSchema","InterruptSessionResultSchema","UpdateSessionSettingsResultSchema","InitializeSessionRequestSchema","LoadSessionRequestSchema","AddUserMessageRequestSchema","InterruptSessionRequestSchema","CloseSessionRequestSchema","KillWorkerSessionRequestSchema","UpdateSessionSettingsRequestSchema","McpHttpServerConfigFieldsSchema","McpStdioServerConfigFieldsSchema","ToggleMcpServerRequestParamsSchema","ToggleMcpServerResultSchema","ToggleMcpServerRequestSchema","AuthenticateMcpServerRequestParamsSchema","AuthenticateMcpServerResultSchema","AuthenticateMcpServerRequestSchema","CancelMcpAuthRequestParamsSchema","CancelMcpAuthResultSchema","CancelMcpAuthRequestSchema","ClearMcpAuthRequestParamsSchema","ClearMcpAuthResultSchema","ClearMcpAuthRequestSchema","SubmitMcpAuthCodeRequestParamsSchema","SubmitMcpAuthCodeResultSchema","SubmitMcpAuthCodeRequestSchema","SubmitMcpAuthCodeResponseSchema","AddMcpServerRequestParamsSchema","AddMcpServerResultSchema","AddMcpServerRequestSchema","RemoveMcpServerRequestParamsSchema","RemoveMcpServerResultSchema","RemoveMcpServerRequestSchema","ListMcpRegistryRequestParamsSchema","ListMcpRegistryResultSchema","McpRegistryServerSchema","ListMcpRegistryRequestSchema","ListMcpToolsRequestParamsSchema","ListMcpToolsResultSchema","McpToolInfoSchema","ListMcpToolsRequestSchema","ExecToolInfoSchema","ListToolsRequestParamsSchema","ListToolsResultSchema","ListToolsRequestSchema","ListMcpServersRequestParamsSchema","ListMcpServersResultSchema","McpServerStatusInfoSchema","McpStatusSummarySchema","ListMcpServersRequestSchema","ToggleMcpToolRequestParamsSchema","ToggleMcpToolResultSchema","ToggleMcpToolRequestSchema","ListSkillsRequestParamsSchema","SkillResourceSchema","SkillInfoSchema","SkillLocation","ListSkillsResultSchema","ListSkillsRequestSchema","GetContextStatsRequestParamsSchema","GetContextStatsRequestSchema","z","GetContextStatsRequestParamsSchema","ContextBreakdownCategorySchema","SkillLocation","SubmitBugReportRequestParamsSchema","SubmitBugReportResultSchema","SubmitBugReportRequestSchema","GetRewindInfoRequestParamsSchema","RewindFileSnapshotSchema","RewindFileCreationSchema","RewindEvictedFileSchema","GetRewindInfoResultSchema","GetRewindInfoRequestSchema","ExecuteRewindRequestParamsSchema","ExecuteRewindResultSchema","ExecuteRewindRequestSchema","CompactSessionRequestParamsSchema","CompactSessionResultSchema","CompactSessionRequestSchema","CompactSessionResponseSchema","ForkSessionResultSchema","ForkSessionRequestParamsSchema","ForkSessionRequestSchema","ForkSessionResponseSchema","RenameSessionRequestParamsSchema","RenameSessionResultSchema","RenameSessionRequestSchema","RenameSessionResponseSchema","ClientRequestSchema","InitializeSessionRequestSchema","LoadSessionRequestSchema","InterruptSessionRequestSchema","CloseSessionRequestSchema","KillWorkerSessionRequestSchema","AddUserMessageRequestSchema","UpdateSessionSettingsRequestSchema","ToggleMcpServerRequestSchema","AuthenticateMcpServerRequestSchema","CancelMcpAuthRequestSchema","ClearMcpAuthRequestSchema","AddMcpServerRequestSchema","RemoveMcpServerRequestSchema","ListMcpRegistryRequestSchema","ListMcpToolsRequestSchema","ListToolsRequestSchema","ListMcpServersRequestSchema","ToggleMcpToolRequestSchema","SubmitMcpAuthCodeRequestSchema","ListSkillsRequestSchema","InitializeSessionResponseSchema","InitializeSessionResultSchema","LoadSessionResponseSchema","LoadSessionResultSchema","AddUserMessageResponseSchema","AddUserMessageResultSchema","InterruptSessionResponseSchema","InterruptSessionResultSchema","CloseSessionResponseSchema","CloseSessionResultSchema","KillWorkerSessionResponseSchema","KillWorkerSessionResultSchema","UpdateSessionSettingsResponseSchema","UpdateSessionSettingsResultSchema","ToggleMcpServerResponseSchema","ToggleMcpServerResultSchema","AuthenticateMcpServerResponseSchema","AuthenticateMcpServerResultSchema","CancelMcpAuthResponseSchema","CancelMcpAuthResultSchema","ClearMcpAuthResponseSchema","ClearMcpAuthResultSchema","AddMcpServerResponseSchema","AddMcpServerResultSchema","RemoveMcpServerResponseSchema","RemoveMcpServerResultSchema","ListMcpRegistryResponseSchema","ListMcpRegistryResultSchema","ListMcpToolsResponseSchema","ListMcpToolsResultSchema","ListToolsResponseSchema","ListToolsResultSchema","ListMcpServersResponseSchema","ListMcpServersResultSchema","ToggleMcpToolResponseSchema","ToggleMcpToolResultSchema","ListSkillsResponseSchema","ListSkillsResultSchema","GetContextStatsResponseSchema","ContextStatsSchema","SubmitBugReportResponseSchema","GetRewindInfoResponseSchema","ExecuteRewindResponseSchema","AutomationScheduleCadence","AutomationValidationIssueType","AutomationErrorCode","AutomationPrivacyLevel","z","z","z","SessionTitleAutoStage","z","DecompSessionType","z","z","z","ReasoningEffort","SessionSettingsSchema","ModelProvider","TokenUsageSchema","SessionTagSchema","ToolExecutionLocation","ToolStatus","RiskLevel","z","z","z","TokenUsageSchema","z","McpServerConfigSchema","DaemonConnectionMethod","DaemonConnectionEvent","ConnectionState","DaemonTerminalMethod","DaemonTerminalEvent","DaemonDroidMethod","DaemonGetGitDiffUnavailableReason","DaemonSettingsMethod","DaemonManagementMethod","DaemonRelayMethod","DaemonRelayEvent","DaemonSpecificNotificationType","DaemonDroidEvent","CreateTerminalError","McpConfigSource","SessionLoadState","SessionSearchDocKind","z","z","z","z","z","z","SkillInfoSchema","z","z","z","z","z","z","z","z","McpServerConfigSchema","McpServerStatus","ToggleMcpServerRequestParamsSchema","AuthenticateMcpServerRequestParamsSchema","CancelMcpAuthRequestParamsSchema","ClearMcpAuthRequestParamsSchema","AddMcpServerRequestParamsSchema","RemoveMcpServerRequestParamsSchema","ListMcpRegistryRequestParamsSchema","McpRegistryServerSchema","ListMcpRegistryResultSchema","ListMcpToolsRequestParamsSchema","McpToolInfoSchema","ListMcpToolsResultSchema","ToggleMcpToolRequestParamsSchema","ListMcpServersRequestParamsSchema","ListMcpServersResultSchema","z","z","z","z","z","z","SettingsLevel","AutonomyMode","AutonomyLevel","ReasoningEffort","AvailableModelConfigSchema","z","createResponseSchema","z","InitializeSessionRequestParamsSchema","LoadSessionRequestParamsSchema","AddUserMessageRequestParamsSchema","InterruptSessionRequestParamsSchema","MissionState","UpdateSessionSettingsRequestParamsSchema","KillWorkerSessionRequestParamsSchema","KillWorkerSessionResultSchema","InitializeSessionResultSchema","LoadSessionResultSchema","AddUserMessageResultSchema","InterruptSessionResultSchema","DroidWorkingState","SessionTagSchema","FactoryDroidMessageSchema","UpdateSessionSettingsResultSchema","RequestPermissionRequestParamsSchema","RequestPermissionResultSchema","AskUserRequestParamsSchema","AskUserResultSchema","SessionNotificationSchemaList","resolve","z","z","z","path","spawn","fs","os","path","resolve","spawn","MachineType","resolve","resolve"]}
1
+ {"version":3,"sources":["../src/schemas/enums.ts","../src/schemas/constants.ts","../src/schemas/shared.ts","../src/schemas/session-metadata.ts","../src/schemas/client.ts","../src/schemas/mcp.ts","../src/schemas/messages.ts","../src/schemas/mission.ts","../src/schemas/hooks.ts","../src/schemas/server.ts","../src/constants.ts","../src/errors.ts","../src/transport.ts","../src/utils.ts","../src/protocol.ts","../src/protocol/index.ts","../src/protocol/enums.ts","../src/protocol/constants.ts","../src/protocol/json-rpc.ts","../src/protocol/host.ts","../src/protocol/session.ts","../src/protocol/session-source.ts","../src/protocol/messages.ts","../src/protocol/model-settings.ts","../src/protocol/settings.ts","../src/protocol/general-settings.ts","../src/protocol/custom-models.ts","../src/protocol/policy.ts","../src/protocol/loop.ts","../src/protocol/selectable-list-item.ts","../src/protocol/mcp.ts","../src/protocol/mission-decomposition.ts","../src/protocol/cli.ts","../src/protocol/client.ts","../src/protocol/automations-enums.ts","../src/protocol/automations.ts","../src/protocol/crons.ts","../src/protocol/session-summary.ts","../src/protocol/session-tools.ts","../src/protocol/session-settings-schema.ts","../src/protocol/tools-enums.ts","../src/protocol/tools.ts","../src/protocol/updater.ts","../src/protocol/usage.ts","../src/protocol/daemon/index.ts","../src/protocol/daemon/enums.ts","../src/protocol/daemon/bug-report.ts","../src/protocol/daemon/management.ts","../src/protocol/daemon/skills.ts","../src/protocol/daemon/commands.ts","../src/protocol/daemon/relay.ts","../src/protocol/daemon/terminal.ts","../src/protocol/daemon/connection.ts","../src/protocol/daemon/mcp.ts","../src/protocol/daemon/automations.ts","../src/protocol/daemon/crons.ts","../src/protocol/daemon/plugins.ts","../src/protocol/daemon/settings.ts","../src/protocol/daemon/droid.ts","../src/client.ts","../src/stream.ts","../src/helpers.ts","../src/mcp.ts","../src/session.ts","../src/run.ts","../src/session-discovery.ts","../src/api-types.ts","../src/api.ts","../src/daemon/client.ts","../src/daemon/local.ts","../src/daemon/session.ts","../src/daemon/transport.ts","../src/daemon/types.ts","../src/daemon/connection.ts"],"sourcesContent":["/** Droid server methods (client → server communication). */\nexport enum DroidServerMethod {\n INITIALIZE_SESSION = 'droid.initialize_session',\n LOAD_SESSION = 'droid.load_session',\n ADD_USER_MESSAGE = 'droid.add_user_message',\n CLOSE_SESSION = 'droid.close_session',\n INTERRUPT_SESSION = 'droid.interrupt_session',\n KILL_WORKER_SESSION = 'droid.kill_worker_session',\n UPDATE_SESSION_SETTINGS = 'droid.update_session_settings',\n TOGGLE_MCP_SERVER = 'droid.toggle_mcp_server',\n AUTHENTICATE_MCP_SERVER = 'droid.authenticate_mcp_server',\n CANCEL_MCP_AUTH = 'droid.cancel_mcp_auth',\n CLEAR_MCP_AUTH = 'droid.clear_mcp_auth',\n ADD_MCP_SERVER = 'droid.add_mcp_server',\n REMOVE_MCP_SERVER = 'droid.remove_mcp_server',\n LIST_MCP_REGISTRY = 'droid.list_mcp_registry',\n LIST_MCP_TOOLS = 'droid.list_mcp_tools',\n LIST_TOOLS = 'droid.list_tools',\n LIST_MCP_SERVERS = 'droid.list_mcp_servers',\n TOGGLE_MCP_TOOL = 'droid.toggle_mcp_tool',\n SUBMIT_MCP_AUTH_CODE = 'droid.submit_mcp_auth_code',\n LIST_SKILLS = 'droid.list_skills',\n SUBMIT_BUG_REPORT = 'droid.submit_bug_report',\n GET_REWIND_INFO = 'droid.get_rewind_info',\n EXECUTE_REWIND = 'droid.execute_rewind',\n COMPACT_SESSION = 'droid.compact_session',\n FORK_SESSION = 'droid.fork_session',\n RENAME_SESSION = 'droid.rename_session',\n GET_CONTEXT_STATS = 'droid.get_context_stats',\n}\n\n/** Droid client methods (server → client communication). */\nexport enum DroidClientMethod {\n SESSION_NOTIFICATION = 'droid.session_notification',\n REQUEST_PERMISSION = 'droid.request_permission',\n ASK_USER = 'droid.ask_user',\n}\n\nexport enum SessionNotificationType {\n TOOL_RESULT = 'tool_result',\n TOOL_PROGRESS_UPDATE = 'tool_progress_update',\n CREATE_MESSAGE = 'create_message',\n ERROR = 'error',\n DROID_WORKING_STATE_CHANGED = 'droid_working_state_changed',\n PERMISSION_RESOLVED = 'permission_resolved',\n SETTINGS_UPDATED = 'settings_updated',\n SESSION_TITLE_UPDATED = 'session_title_updated',\n MCP_STATUS_CHANGED = 'mcp_status_changed',\n ASSISTANT_TEXT_DELTA = 'assistant_text_delta',\n ASSISTANT_TEXT_COMPLETE = 'assistant_text_complete',\n THINKING_TEXT_DELTA = 'thinking_text_delta',\n THINKING_TEXT_COMPLETE = 'thinking_text_complete',\n TOOL_CALL = 'tool_call',\n SESSION_TOKEN_USAGE_CHANGED = 'session_token_usage_changed',\n MISSION_STATE_CHANGED = 'mission_state_changed',\n MISSION_FEATURES_CHANGED = 'mission_features_changed',\n MISSION_PROGRESS_ENTRY = 'mission_progress_entry',\n MISSION_HEARTBEAT = 'mission_heartbeat',\n MISSION_WORKER_STARTED = 'mission_worker_started',\n MISSION_WORKER_COMPLETED = 'mission_worker_completed',\n MCP_AUTH_REQUIRED = 'mcp_auth_required',\n MCP_AUTH_COMPLETED = 'mcp_auth_completed',\n HOOK_EXECUTION_STARTED = 'hook_execution_started',\n HOOK_EXECUTION_COMPLETED = 'hook_execution_completed',\n STRUCTURED_OUTPUT = 'structured_output',\n}\n\n/** Tool confirmation outcome options (possible user responses to permission requests). */\nexport enum ToolConfirmationOutcome {\n ProceedOnce = 'proceed_once',\n ProceedAlways = 'proceed_always',\n ProceedAutoRun = 'proceed_auto_run',\n ProceedAutoRunLow = 'proceed_auto_run_low',\n ProceedAutoRunMedium = 'proceed_auto_run_medium',\n ProceedAutoRunHigh = 'proceed_auto_run_high',\n ProceedNewSession = 'proceed_new_session',\n ProceedNewSessionLow = 'proceed_new_session_low',\n ProceedNewSessionMedium = 'proceed_new_session_medium',\n ProceedNewSessionHigh = 'proceed_new_session_high',\n ProceedEdit = 'proceed_edit',\n Cancel = 'cancel',\n}\n\n/** Tool confirmation type (which tool is requesting permission). */\nexport enum ToolConfirmationType {\n Edit = 'edit',\n Execute = 'exec',\n Create = 'create',\n AskUser = 'ask_user',\n ExitSpecMode = 'exit_spec_mode',\n ProposeMission = 'propose_mission',\n StartMissionRun = 'start_mission_run',\n ApplyPatch = 'apply_patch',\n McpTool = 'mcp_tool',\n}\n\nexport enum DroidWorkingState {\n Idle = 'idle',\n StreamingAssistantMessage = 'streaming_assistant_message',\n WaitingForToolConfirmation = 'waiting_for_tool_confirmation',\n ExecutingTool = 'executing_tool',\n CompactingConversation = 'compacting_conversation',\n}\n\nexport enum ContextStatsAccuracy {\n Exact = 'exact',\n Estimated = 'estimated',\n}\n\nexport enum DroidErrorType {\n CONNECTION_ERROR = 'ConnectionError',\n PROTOCOL_ERROR = 'ProtocolError',\n SESSION_ERROR = 'SessionError',\n TIMEOUT_ERROR = 'TimeoutError',\n DROID_CLIENT_ERROR = 'DroidClientError',\n PROCESS_EXIT_ERROR = 'ProcessExitError',\n ERROR = 'Error',\n}\n\nexport enum McpServerStatus {\n Connecting = 'connecting',\n Connected = 'connected',\n Disconnected = 'disconnected',\n Failed = 'failed',\n Disabled = 'disabled',\n}\n\nexport enum McpServerType {\n Stdio = 'stdio',\n Http = 'http',\n Sse = 'sse',\n}\n\nexport enum McpStatus {\n NotInitialized = 'not-initialized',\n Initializing = 'initializing',\n Ready = 'ready',\n NoServers = 'no-servers',\n Failed = 'failed',\n}\n\nexport enum McpAuthOutcome {\n Success = 'success',\n Cancelled = 'cancelled',\n Failed = 'failed',\n}\n\n/** Session type for mission decomposition (orchestrator manages workers). */\nexport enum DecompSessionType {\n Orchestrator = 'orchestrator',\n Worker = 'worker',\n}\n\n/** Mission state enum (used by orchestrator mission runner). */\nexport enum MissionState {\n AwaitingInput = 'awaiting_input',\n Initializing = 'initializing',\n Running = 'running',\n Paused = 'paused',\n OrchestratorTurn = 'orchestrator_turn',\n Completed = 'completed',\n}\n\n/** Feature status enum (mirrors orchestrator feature lifecycle). */\nexport enum FeatureStatus {\n Pending = 'pending',\n InProgress = 'in_progress',\n Completed = 'completed',\n Cancelled = 'cancelled',\n}\n\n/** Success state for feature completion. */\nexport enum FeatureSuccessState {\n Success = 'success',\n Partial = 'partial',\n Failure = 'failure',\n}\n\n/** Issue severity for discovered issues. */\nexport enum IssueSeverity {\n Blocking = 'blocking',\n NonBlocking = 'non_blocking',\n Suggestion = 'suggestion',\n}\n\n/** Dismissal item type. */\nexport enum DismissalType {\n DiscoveredIssue = 'discovered_issue',\n CriticalContext = 'critical_context',\n IncompleteWork = 'incomplete_work',\n}\n\n/** Progress log entry type. */\nexport enum ProgressLogEntryType {\n MissionAccepted = 'mission_accepted',\n MissionPaused = 'mission_paused',\n MissionResumed = 'mission_resumed',\n MissionRunStarted = 'mission_run_started',\n WorkerStarted = 'worker_started',\n WorkerSelectedFeature = 'worker_selected_feature',\n WorkerCompleted = 'worker_completed',\n WorkerFailed = 'worker_failed',\n WorkerPaused = 'worker_paused',\n HandoffItemsDismissed = 'handoff_items_dismissed',\n MilestoneValidationTriggered = 'milestone_validation_triggered',\n}\n\n/**\n * The interaction mode determines how Droid operates.\n * - Auto: Droid can execute actions based on autonomy level\n * - Spec: Droid is in planning/research mode only (read-only operations)\n * - AGI: Droid orchestrates missions with read-only tools and orchestrator controls\n */\nexport enum DroidInteractionMode {\n Auto = 'auto',\n Spec = 'spec',\n AGI = 'agi',\n}\n\n/**\n * Autonomy level determines what actions Droid can perform without user confirmation.\n * - Off: User controls all actions (confirmation required for everything)\n * - Low: Allow file edits and read-only commands\n * - Medium: Allow reversible commands\n * - High: Allow all commands without prompts\n */\nexport enum AutonomyLevel {\n Off = 'off',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n}\n\n/**\n * Combined autonomy mode for backward compatibility.\n * @deprecated Use DroidInteractionMode + AutonomyLevel instead.\n */\nexport enum AutonomyMode {\n Normal = 'normal',\n Spec = 'spec',\n AutoLow = 'auto-low',\n AutoMedium = 'auto-medium',\n AutoHigh = 'auto-high',\n}\n\nexport enum ReasoningEffort {\n None = 'none',\n Dynamic = 'dynamic',\n Off = 'off',\n Minimal = 'minimal',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n ExtraHigh = 'xhigh',\n Max = 'max',\n}\n\nexport enum ModelProvider {\n ANTHROPIC = 'anthropic',\n OPENAI = 'openai',\n GENERIC_CHAT_COMPLETION_API = 'generic-chat-completion-api',\n FACTORY = 'factory',\n GOOGLE = 'google',\n XAI = 'xai',\n VOYAGE = 'voyage',\n}\n\n/** Standard JSON-RPC 2.0 error codes. */\nexport enum JsonRpcErrorCode {\n PARSE_ERROR = -32700,\n INVALID_REQUEST = -32600,\n METHOD_NOT_FOUND = -32601,\n INVALID_PARAMS = -32602,\n INTERNAL_ERROR = -32603,\n AUTHENTICATION_ERROR = -32001,\n ENTITY_NOT_FOUND = -32004,\n SESSION_DISCONNECTED = -32005,\n}\n\nexport enum JsonRpcMessageType {\n Request = 'request',\n Response = 'response',\n Notification = 'notification',\n}\n\nexport enum ServerRequestHandlerType {\n Permission = 'permission',\n AskUser = 'askUser',\n}\n\n/**\n * Settings hierarchy level enum.\n * Precedence order (highest to lowest): Org → Runtime → Folder → Project → User\n */\nexport enum SettingsLevel {\n Org = 'org',\n Runtime = 'runtime',\n User = 'user',\n Project = 'project',\n Folder = 'folder',\n Dynamic = 'dynamic',\n BuiltIn = 'builtin',\n}\n\nexport enum SkillLocation {\n Project = 'project',\n Personal = 'personal',\n Builtin = 'builtin',\n}\n","/** JSON-RPC protocol version. */\nexport const JSONRPC_VERSION = '2.0' as const;\n\n/**\n * Frozen Factory API version embedded in every JSON-RPC envelope.\n * This value is required by the wire protocol and must not be changed.\n * For version negotiation, use FACTORY_PROTOCOL_VERSION instead.\n */\nexport const LEGACY_FACTORY_API_VERSION = '1.0.0' as const;\n\n/** Current Factory protocol version. */\nexport const FACTORY_PROTOCOL_VERSION = '1.51.0' as const;\n\n/** HTTP header identifying the Factory client type. */\nexport const FACTORY_CLIENT_HEADER = 'X-Factory-Client' as const;\n\n/** HTTP header identifying the Factory client version. */\nexport const FACTORY_CLIENT_VERSION = 'X-Client-Version' as const;\n\n/** Default request timeout in milliseconds (30s). */\nexport const DEFAULT_REQUEST_TIMEOUT = 30_000;\n\n/** Session initialization timeout in milliseconds (60s). */\nexport const SESSION_INIT_TIMEOUT = 60_000;\n\n/** MCP authentication timeout in milliseconds (300s). */\nexport const MCP_AUTH_TIMEOUT = 300_000;\n\n/** Compaction timeout in milliseconds (240s — LLM summarization of full conversation). */\nexport const COMPACTION_TIMEOUT = 240_000;\n\n/** Rewind timeout in milliseconds (60s — file restore + session fork). */\nexport const REWIND_TIMEOUT = 60_000;\n","import { z } from 'zod';\n\nimport { JSONRPC_VERSION, LEGACY_FACTORY_API_VERSION } from './constants.js';\nimport { JsonRpcErrorCode } from './enums.js';\n\n/** JSON-compatible primitive values. */\nexport type JsonPrimitive = string | number | boolean | null;\n\n/** JSON-compatible object values. */\nexport interface JsonObject {\n [key: string]: JsonValue;\n}\n\n/** JSON-compatible array values. */\nexport type JsonArray = JsonValue[];\n\n/** Recursive JSON-compatible value. */\nexport type JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport const JsonValueSchema: z.ZodType<JsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(JsonValueSchema),\n z.record(JsonValueSchema),\n ])\n);\n\nexport const JsonObjectSchema: z.ZodType<JsonObject> =\n z.record(JsonValueSchema);\n\nexport const JsonArraySchema: z.ZodType<JsonArray> = z.array(JsonValueSchema);\n\n/** Trace context metadata for distributed tracing propagation. */\nexport const TraceContextMetaSchema = z.object({\n traceparent: z.string().optional(),\n tracestate: z.string().optional(),\n});\n\nexport type TraceContextMeta = z.infer<typeof TraceContextMetaSchema>;\n\n/** Shared tool selection override fields reused across client/server schemas. */\nexport const ToolSelectionOverridesSchema = z.object({\n enabledToolIds: z.array(z.string()).optional(),\n disabledToolIds: z.array(z.string()).optional(),\n});\n\nexport type ToolSelectionOverrides = z.infer<\n typeof ToolSelectionOverridesSchema\n>;\n\n/** Shared empty object result reused by RPC result schemas. */\nexport const EmptyResultSchema = z.object({}).passthrough();\n\nexport type EmptyResult = z.infer<typeof EmptyResultSchema>;\n\n/** Shared success result reused by RPC result schemas. */\nexport const SuccessResultSchema = z\n .object({ success: z.boolean() })\n .passthrough();\n\nexport type SuccessResult = z.infer<typeof SuccessResultSchema>;\n\n/** JSON-RPC 2.0 envelope with Factory protocol extensions. */\nexport const JsonRpcEnvelopeSchema = z.object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n factoryApiVersion: z.literal(LEGACY_FACTORY_API_VERSION),\n factoryProtocolVersion: z.string().optional(),\n _meta: TraceContextMetaSchema.optional(),\n});\n\nexport type JsonRpcEnvelope = z.infer<typeof JsonRpcEnvelopeSchema>;\n\n/** JSON-RPC 2.0 error object. */\nexport const JsonRpcErrorSchema = z.object({\n code: z.nativeEnum(JsonRpcErrorCode),\n message: z.string(),\n data: JsonValueSchema.optional(),\n});\n\nexport type JsonRpcError = z.infer<typeof JsonRpcErrorSchema>;\n\n/** Base JSON-RPC request. */\nexport const BaseRequestSchema = z.object({\n type: z.literal('request'),\n id: z.string(),\n method: z.string(),\n params: JsonValueSchema.optional(),\n});\n\nexport type BaseRequest = z.infer<typeof BaseRequestSchema>;\n\n/** Base JSON-RPC success response. */\nexport const BaseResponseSuccessSchema = z.object({\n type: z.literal('response'),\n id: z.string(),\n result: JsonValueSchema,\n});\n\nexport type BaseResponseSuccess = z.infer<typeof BaseResponseSuccessSchema>;\n\n/** Base JSON-RPC failure response. */\nexport const BaseResponseFailureSchema = z.object({\n type: z.literal('response'),\n id: z.string().nullable(),\n error: JsonRpcErrorSchema,\n});\n\nexport type BaseResponseFailure = z.infer<typeof BaseResponseFailureSchema>;\n\n/** Base JSON-RPC notification. */\nexport const BaseNotificationSchema = z.object({\n type: z.literal('notification'),\n method: z.string(),\n params: JsonValueSchema.optional(),\n});\n\nexport type BaseNotification = z.infer<typeof BaseNotificationSchema>;\n\n/** Full JSON-RPC request with envelope fields. */\nexport const JsonRpcRequestSchema = JsonRpcEnvelopeSchema.extend(\n BaseRequestSchema.shape\n);\n\nexport type JsonRpcRequest = z.infer<typeof JsonRpcRequestSchema>;\n\n/** Full JSON-RPC success response with envelope fields. */\nexport const JsonRpcResponseSuccessSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseSuccessSchema.shape\n);\n\nexport type JsonRpcResponseSuccess = z.infer<\n typeof JsonRpcResponseSuccessSchema\n>;\n\n/** Full JSON-RPC failure response with envelope fields. */\nexport const JsonRpcResponseFailureSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseFailureSchema.shape\n);\n\nexport type JsonRpcResponseFailure = z.infer<\n typeof JsonRpcResponseFailureSchema\n>;\n\n/** Full JSON-RPC notification with envelope fields. */\nexport const JsonRpcNotificationSchema = JsonRpcEnvelopeSchema.extend(\n BaseNotificationSchema.shape\n);\n\nexport type JsonRpcNotification = z.infer<typeof JsonRpcNotificationSchema>;\n\n/** JSON-RPC response (success or failure). */\nexport const JsonRpcResponseSchema = z.union([\n JsonRpcResponseFailureSchema,\n JsonRpcResponseSuccessSchema,\n]);\n\nexport type JsonRpcResponse = z.infer<typeof JsonRpcResponseSchema>;\n\n/** Discriminated union for initial message type routing. */\nexport const JsonRpcMessageSchema = z.discriminatedUnion('type', [\n JsonRpcRequestSchema,\n JsonRpcEnvelopeSchema.extend({\n type: z.literal('response'),\n id: z.string().nullable(),\n result: JsonValueSchema.optional(),\n error: JsonRpcErrorSchema.optional(),\n }),\n JsonRpcNotificationSchema,\n]);\n\nexport type JsonRpcMessage = z.infer<typeof JsonRpcMessageSchema>;\n\n/** Creates a JSON-RPC response schema (success | failure) for a given result schema. */\nexport function createResponseSchema<T extends z.ZodTypeAny>(resultSchema: T) {\n return z.union([\n JsonRpcResponseSuccessSchema.extend({ result: resultSchema }),\n JsonRpcResponseFailureSchema,\n ]);\n}\n","import { z } from 'zod';\n\nimport { SessionTagSchema } from './client.js';\nimport { DecompSessionType } from './enums.js';\n\n/**\n * Session metadata returned by {@link listSessions}.\n *\n * Mirrors the shape used by the `droid` CLI's `SessionService` so results\n * are interoperable with sessions created by the CLI or the SDK.\n */\nexport const SessionMetadataSchema = z\n .object({\n id: z.string(),\n title: z.string(),\n sessionTitle: z.string().optional(),\n owner: z.string(),\n messageCount: z.number(),\n modifiedTime: z.date(),\n createdTime: z.date(),\n isFavorite: z.boolean().optional(),\n cwd: z.string().optional(),\n decompSessionType: z.nativeEnum(DecompSessionType).optional(),\n decompMissionId: z.string().optional(),\n })\n .passthrough();\n\nexport type SessionMetadata = z.infer<typeof SessionMetadataSchema>;\n\n/**\n * First line of a droid session `.jsonl` file. Produced by the CLI's\n * `SessionService` when a session is created.\n * @internal\n */\nexport const SessionStartEventSchema = z\n .object({\n type: z.literal('session_start'),\n sessionId: z.string().optional(),\n title: z.string().optional(),\n sessionTitle: z.string().optional(),\n owner: z.string().optional(),\n cwd: z.string().optional(),\n decompSessionType: z\n .nativeEnum(DecompSessionType)\n .optional()\n .catch(undefined),\n decompMissionId: z.string().optional(),\n })\n .passthrough();\n\nexport type SessionStartEvent = z.infer<typeof SessionStartEventSchema>;\n\n/**\n * Content of the sibling `<sessionId>.settings.json` file, if present.\n * Used to detect archived sessions and recover tag metadata.\n * @internal\n */\nexport const SessionSettingsFileSchema = z\n .object({\n archivedAt: z.string().optional(),\n tags: z.array(SessionTagSchema).optional(),\n })\n .passthrough();\n\nexport type SessionSettingsFile = z.infer<typeof SessionSettingsFileSchema>;\n\n/** Options accepted by {@link listSessions}. */\nexport interface ListSessionsOptions {\n /**\n * Working directory to scope the listing to. Defaults to `process.cwd()`.\n * Ignored when `fetchOutsideCWD` is `true`.\n */\n cwd?: string;\n\n /**\n * If `true`, return sessions from every working directory on disk and\n * ignore `cwd`. Defaults to `false` (only sessions for the given `cwd`\n * are returned).\n */\n fetchOutsideCWD?: boolean;\n\n /**\n * Cap the number of sessions returned. Results are sorted by\n * `modifiedTime` descending before being truncated.\n */\n numSessions?: number;\n\n /**\n * Override the sessions root directory. Defaults to `~/.factory/sessions/`.\n * Primarily useful for tests and custom installations.\n */\n sessionsDir?: string;\n}\n","import { z } from 'zod';\n\nimport {\n AutonomyLevel,\n AutonomyMode,\n ContextStatsAccuracy,\n DecompSessionType,\n DroidInteractionMode,\n DroidServerMethod,\n McpServerType,\n ModelProvider,\n MissionState,\n ReasoningEffort,\n SettingsLevel,\n SkillLocation,\n} from './enums.js';\nimport {\n McpRegistryServerSchema,\n McpServerStatusInfoSchema,\n McpStatusSummarySchema,\n McpToolInfoSchema,\n} from './mcp.js';\nimport { Base64ImageSourceSchema, DocumentSourceSchema } from './messages.js';\nimport { MissionFeatureSchema, ProgressLogEntrySchema } from './mission.js';\nimport {\n createResponseSchema,\n EmptyResultSchema,\n JsonObjectSchema,\n type JsonRpcResponseFailure,\n JsonRpcRequestSchema,\n JsonRpcResponseSuccessSchema,\n SuccessResultSchema,\n ToolSelectionOverridesSchema,\n} from './shared.js';\n\nconst SessionModeRequestFieldsShape = {\n modelId: z.string().optional(),\n autonomyMode: z.nativeEnum(AutonomyMode).optional(),\n interactionMode: z.nativeEnum(DroidInteractionMode).optional(),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional(),\n};\n\nexport const SessionTagSchema = z\n .object({\n name: z.string(),\n metadata: z.record(z.string()).optional(),\n })\n .strict();\n\nexport type SessionTag = z.infer<typeof SessionTagSchema>;\n\nexport const SessionSourceSchema = z\n .object({\n platform: z.string(),\n })\n .passthrough();\n\nexport type SessionSource = z.infer<typeof SessionSourceSchema>;\n\nexport const StdioMcpConfigSchema = z\n .object({\n name: z.string(),\n command: z.string(),\n args: z.array(z.string()).default([]),\n env: z.record(z.string()).optional().default({}),\n })\n .strict();\n\nexport type StdioMcpConfig = z.infer<typeof StdioMcpConfigSchema>;\n\nexport const HttpHeaderSchema = z\n .object({\n name: z.string(),\n value: z.string(),\n })\n .strict();\n\nexport type HttpHeader = z.infer<typeof HttpHeaderSchema>;\n\nexport const HttpMcpConfigSchema = z\n .object({\n type: z.literal('http'),\n name: z.string(),\n url: z.string().url(),\n headers: HttpHeaderSchema.array().default([]),\n })\n .strict();\n\nexport type HttpMcpConfig = z.infer<typeof HttpMcpConfigSchema>;\n\nexport const SseMcpConfigSchema = z\n .object({\n type: z.literal('sse'),\n name: z.string(),\n url: z.string().url(),\n headers: HttpHeaderSchema.array().default([]),\n })\n .strict();\n\nexport type SseMcpConfig = z.infer<typeof SseMcpConfigSchema>;\n\nexport const McpServerConfigSchema = z.union([\n StdioMcpConfigSchema,\n HttpMcpConfigSchema,\n SseMcpConfigSchema,\n]);\n\nexport type McpServerConfig = z.infer<typeof McpServerConfigSchema>;\n\n/** Session settings returned in init/load results. */\nexport const SessionSettingsSchema = z\n .object({\n modelId: z.string(),\n reasoningEffort: z.nativeEnum(ReasoningEffort),\n autonomyMode: z.nativeEnum(AutonomyMode).optional(),\n interactionMode: z\n .nativeEnum(DroidInteractionMode)\n .optional()\n .catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n ...ToolSelectionOverridesSchema.shape,\n })\n .passthrough();\n\nexport type SessionSettings = z.infer<typeof SessionSettingsSchema>;\n\nexport const GitRepoInfoSchema = z\n .object({\n owner: z.string().optional(),\n repoName: z.string(),\n })\n .passthrough();\n\nexport type GitRepoInfo = z.infer<typeof GitRepoInfoSchema>;\n\n/** Available model configuration returned in session init/load responses. */\nexport const AvailableModelConfigSchema = z\n .object({\n id: z.string(),\n modelId: z.string().optional(),\n displayName: z.string(),\n shortDisplayName: z.string(),\n modelProvider: z.nativeEnum(ModelProvider),\n supportedReasoningEfforts: z.array(z.nativeEnum(ReasoningEffort)),\n defaultReasoningEffort: z.nativeEnum(ReasoningEffort),\n isCustom: z.boolean().default(false),\n noImageSupport: z.boolean().optional(),\n supportsPDFs: z.boolean().optional(),\n tier: z.string().optional(),\n tokenMultiplier: z.number().optional(),\n promoLabel: z.string().optional(),\n featureFlag: JsonObjectSchema.optional(),\n usesUSBasedInference: z.boolean().optional(),\n })\n .passthrough();\n\nexport type AvailableModelConfig = z.infer<typeof AvailableModelConfigSchema>;\n\nexport const TokenUsageSchema = z\n .object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n cacheCreationTokens: z.number(),\n cacheReadTokens: z.number(),\n thinkingTokens: z.number(),\n })\n .passthrough();\n\nexport type TokenUsage = z.infer<typeof TokenUsageSchema>;\n\n/** Current context window utilization for the active session. */\nexport const ContextStatsSchema = z\n .object({\n used: z.number(),\n remaining: z.number(),\n limit: z.number(),\n accuracy: z.nativeEnum(ContextStatsAccuracy),\n updatedAt: z.string(),\n })\n .passthrough();\n\nexport type ContextStats = z.infer<typeof ContextStatsSchema>;\n\nexport const WorkerStateInfoSchema = z\n .object({\n startedAt: z.string(),\n completedAt: z.string().optional(),\n exitCode: z.number().optional(),\n })\n .passthrough();\n\nexport type WorkerStateInfo = z.infer<typeof WorkerStateInfoSchema>;\n\nexport const SkillResourceSchema = z\n .object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['reference', 'asset']),\n })\n .passthrough();\n\nexport type SkillResource = z.infer<typeof SkillResourceSchema>;\n\nexport const SkillInfoSchema = z\n .object({\n name: z.string(),\n description: z.string().optional(),\n location: z.nativeEnum(SkillLocation),\n filePath: z.string(),\n enabled: z.boolean().optional(),\n userInvocable: z.boolean().optional(),\n version: z.string().optional(),\n content: z.string().optional(),\n resources: z.array(SkillResourceSchema).optional(),\n })\n .passthrough();\n\nexport type SkillInfo = z.infer<typeof SkillInfoSchema>;\n\nexport const InitializeSessionRequestParamsSchema = z\n .object({\n machineId: z.string(),\n cwd: z.string(),\n workspaceId: z.string().optional(),\n sessionId: z.string().optional(),\n mcpServers: z.array(McpServerConfigSchema).optional(),\n ...SessionModeRequestFieldsShape,\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n decompSessionType: z.nativeEnum(DecompSessionType).optional(),\n decompMissionId: z.string().optional(),\n skipPermissionsUnsafe: z.boolean().optional(),\n ...ToolSelectionOverridesSchema.shape,\n sessionLocation: z.string().optional(),\n sessionSource: SessionSourceSchema.optional(),\n tags: z.array(SessionTagSchema).optional(),\n mcpOAuthCallbackUri: z.string().optional(),\n })\n .strict();\n\nexport type InitializeSessionRequestParams = z.infer<\n typeof InitializeSessionRequestParamsSchema\n>;\n\nexport const LoadSessionRequestParamsSchema = z\n .object({\n sessionId: z.string(),\n mcpServers: z.array(McpServerConfigSchema).optional(),\n mcpOAuthCallbackUri: z.string().optional(),\n })\n .strict();\n\nexport type LoadSessionRequestParams = z.infer<\n typeof LoadSessionRequestParamsSchema\n>;\n\nexport const OutputFormatType = {\n JsonSchema: 'json_schema',\n} as const;\n\nexport type OutputFormatType =\n (typeof OutputFormatType)[keyof typeof OutputFormatType];\n\nexport const OutputFormatSchema = z\n .object({\n type: z.literal(OutputFormatType.JsonSchema),\n schema: JsonObjectSchema,\n })\n .strict();\n\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\n\nexport const AddUserMessageRequestParamsSchema = z\n .object({\n messageId: z.string().optional(),\n text: z.string(),\n images: z.array(Base64ImageSourceSchema).optional(),\n files: z.array(DocumentSourceSchema).optional(),\n outputFormat: OutputFormatSchema.optional(),\n })\n .strict();\n\nexport type AddUserMessageRequestParams = z.infer<\n typeof AddUserMessageRequestParamsSchema\n>;\n\nexport const InterruptSessionRequestParamsSchema = z.object({}).strict();\n\nexport type InterruptSessionRequestParams = z.infer<\n typeof InterruptSessionRequestParamsSchema\n>;\n\nexport const CloseSessionRequestParamsSchema = z\n .object({\n reason: z\n .enum(['clear', 'logout', 'prompt_input_exit', 'other'])\n .optional(),\n })\n .strict();\n\nexport type CloseSessionRequestParams = z.infer<\n typeof CloseSessionRequestParamsSchema\n>;\n\nexport const KillWorkerSessionRequestParamsSchema = z\n .object({\n workerSessionId: z.string(),\n })\n .strict();\n\nexport type KillWorkerSessionRequestParams = z.infer<\n typeof KillWorkerSessionRequestParamsSchema\n>;\n\nexport const UpdateSessionSettingsRequestParamsSchema = z\n .object({\n ...SessionModeRequestFieldsShape,\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().nullable().optional(),\n specModeReasoningEffort: z\n .nativeEnum(ReasoningEffort)\n .nullable()\n .optional(),\n ...ToolSelectionOverridesSchema.shape,\n })\n .strict();\n\nexport type UpdateSessionSettingsRequestParams = z.infer<\n typeof UpdateSessionSettingsRequestParamsSchema\n>;\n\nexport const ToggleMcpServerRequestParamsSchema = z\n .object({\n serverName: z.string(),\n enabled: z.boolean(),\n settingsLevel: z.literal(SettingsLevel.User),\n })\n .strict();\n\nexport type ToggleMcpServerRequestParams = z.infer<\n typeof ToggleMcpServerRequestParamsSchema\n>;\n\nexport const AuthenticateMcpServerRequestParamsSchema = z\n .object({\n serverName: z.string(),\n })\n .strict();\n\nexport type AuthenticateMcpServerRequestParams = z.infer<\n typeof AuthenticateMcpServerRequestParamsSchema\n>;\n\nexport const CancelMcpAuthRequestParamsSchema = z\n .object({\n serverName: z.string(),\n })\n .strict();\n\nexport type CancelMcpAuthRequestParams = z.infer<\n typeof CancelMcpAuthRequestParamsSchema\n>;\n\nexport const ClearMcpAuthRequestParamsSchema = z\n .object({\n serverName: z.string(),\n })\n .strict();\n\nexport type ClearMcpAuthRequestParams = z.infer<\n typeof ClearMcpAuthRequestParamsSchema\n>;\n\nexport const SubmitMcpAuthCodeRequestParamsSchema = z\n .object({\n serverName: z.string(),\n code: z.string(),\n state: z.string(),\n })\n .strict();\n\nexport type SubmitMcpAuthCodeRequestParams = z.infer<\n typeof SubmitMcpAuthCodeRequestParamsSchema\n>;\n\nexport const AddMcpServerRequestParamsSchema = z\n .object({\n name: z.string(),\n type: z.nativeEnum(McpServerType),\n url: z.string().optional(),\n headers: z.record(z.string()).optional(),\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n env: z.record(z.string()).optional(),\n })\n .strict();\n\nexport type AddMcpServerRequestParams = z.infer<\n typeof AddMcpServerRequestParamsSchema\n>;\n\nexport const RemoveMcpServerRequestParamsSchema = z\n .object({\n serverName: z.string(),\n settingsLevel: z.literal(SettingsLevel.User),\n })\n .strict();\n\nexport type RemoveMcpServerRequestParams = z.infer<\n typeof RemoveMcpServerRequestParamsSchema\n>;\n\nexport const ListMcpRegistryRequestParamsSchema = z.object({}).strict();\n\nexport type ListMcpRegistryRequestParams = z.infer<\n typeof ListMcpRegistryRequestParamsSchema\n>;\n\nexport const ListMcpToolsRequestParamsSchema = z.object({}).strict();\n\nexport type ListMcpToolsRequestParams = z.infer<\n typeof ListMcpToolsRequestParamsSchema\n>;\n\nexport const ExecToolInfoSchema = z\n .object({\n id: z.string(),\n llmId: z.string(),\n displayName: z.string(),\n description: z.string(),\n category: z.enum(['read', 'edit', 'execute', 'other']),\n defaultAllowed: z.boolean(),\n currentlyAllowed: z.boolean(),\n })\n .passthrough();\n\nexport type ExecToolInfo = z.infer<typeof ExecToolInfoSchema>;\n\nexport const ListToolsRequestParamsSchema = z\n .object({\n ...SessionModeRequestFieldsShape,\n specModeModelId: z.string().nullable().optional(),\n skipPermissionsUnsafe: z.boolean().optional(),\n ...ToolSelectionOverridesSchema.shape,\n depth: z.number().int().min(0).optional(),\n })\n .strict();\n\nexport type ListToolsRequestParams = z.infer<\n typeof ListToolsRequestParamsSchema\n>;\n\nexport const ListMcpServersRequestParamsSchema = z.object({}).strict();\n\nexport type ListMcpServersRequestParams = z.infer<\n typeof ListMcpServersRequestParamsSchema\n>;\n\nexport const ToggleMcpToolRequestParamsSchema = z\n .object({\n serverName: z.string(),\n toolName: z.string(),\n enabled: z.boolean(),\n })\n .strict();\n\nexport type ToggleMcpToolRequestParams = z.infer<\n typeof ToggleMcpToolRequestParamsSchema\n>;\n\nexport const ListSkillsRequestParamsSchema = z.object({}).strict();\n\nexport type ListSkillsRequestParams = z.infer<\n typeof ListSkillsRequestParamsSchema\n>;\n\nexport const SubmitBugReportRequestParamsSchema = z\n .object({\n userComment: z.string(),\n clientLogs: z.string().optional(),\n })\n .strict();\n\nexport type SubmitBugReportRequestParams = z.infer<\n typeof SubmitBugReportRequestParamsSchema\n>;\n\nexport const RewindFileSnapshotSchema = z\n .object({\n filePath: z.string(),\n contentHash: z.string(),\n size: z.number(),\n })\n .passthrough();\n\nexport type RewindFileSnapshot = z.infer<typeof RewindFileSnapshotSchema>;\n\nexport const RewindFileCreationSchema = z\n .object({\n filePath: z.string(),\n })\n .passthrough();\n\nexport type RewindFileCreation = z.infer<typeof RewindFileCreationSchema>;\n\nexport const RewindEvictedFileSchema = z\n .object({\n filePath: z.string(),\n reason: z.string(),\n })\n .passthrough();\n\nexport type RewindEvictedFile = z.infer<typeof RewindEvictedFileSchema>;\n\nexport const GetRewindInfoRequestParamsSchema = z\n .object({\n messageId: z.string(),\n })\n .passthrough();\n\nexport type GetRewindInfoRequestParams = z.infer<\n typeof GetRewindInfoRequestParamsSchema\n>;\n\nexport const ExecuteRewindRequestParamsSchema = z\n .object({\n messageId: z.string(),\n filesToRestore: z.array(RewindFileSnapshotSchema),\n filesToDelete: z.array(RewindFileCreationSchema),\n forkTitle: z.string(),\n })\n .passthrough();\n\nexport type ExecuteRewindRequestParams = z.infer<\n typeof ExecuteRewindRequestParamsSchema\n>;\n\nexport const CompactSessionRequestParamsSchema = z\n .object({\n customInstructions: z.string().optional(),\n })\n .passthrough();\n\nexport type CompactSessionRequestParams = z.infer<\n typeof CompactSessionRequestParamsSchema\n>;\n\nexport const RenameSessionRequestParamsSchema = z\n .object({\n title: z.string(),\n })\n .passthrough();\n\nexport type RenameSessionRequestParams = z.infer<\n typeof RenameSessionRequestParamsSchema\n>;\n\nexport const ForkSessionRequestParamsSchema = z.object({}).passthrough();\n\nexport type ForkSessionRequestParams = z.infer<\n typeof ForkSessionRequestParamsSchema\n>;\n\nexport const GetContextStatsRequestParamsSchema = z.object({}).passthrough();\n\nexport type GetContextStatsRequestParams = z.infer<\n typeof GetContextStatsRequestParamsSchema\n>;\n\nexport const InitializeSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.INITIALIZE_SESSION),\n params: InitializeSessionRequestParamsSchema,\n});\n\nexport type InitializeSessionRequest = z.infer<\n typeof InitializeSessionRequestSchema\n>;\n\nexport const LoadSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LOAD_SESSION),\n params: LoadSessionRequestParamsSchema,\n});\n\nexport type LoadSessionRequest = z.infer<typeof LoadSessionRequestSchema>;\n\nexport const AddUserMessageRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.ADD_USER_MESSAGE),\n params: AddUserMessageRequestParamsSchema,\n});\n\nexport type AddUserMessageRequest = z.infer<typeof AddUserMessageRequestSchema>;\n\nexport const InterruptSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.INTERRUPT_SESSION),\n params: InterruptSessionRequestParamsSchema,\n});\n\nexport type InterruptSessionRequest = z.infer<\n typeof InterruptSessionRequestSchema\n>;\n\nexport const CloseSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.CLOSE_SESSION),\n params: CloseSessionRequestParamsSchema,\n});\n\nexport type CloseSessionRequest = z.infer<typeof CloseSessionRequestSchema>;\n\nexport const KillWorkerSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.KILL_WORKER_SESSION),\n params: KillWorkerSessionRequestParamsSchema,\n});\n\nexport type KillWorkerSessionRequest = z.infer<\n typeof KillWorkerSessionRequestSchema\n>;\n\nexport const UpdateSessionSettingsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.UPDATE_SESSION_SETTINGS),\n params: UpdateSessionSettingsRequestParamsSchema,\n});\n\nexport type UpdateSessionSettingsRequest = z.infer<\n typeof UpdateSessionSettingsRequestSchema\n>;\n\nexport const ToggleMcpServerRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.TOGGLE_MCP_SERVER),\n params: ToggleMcpServerRequestParamsSchema,\n});\n\nexport type ToggleMcpServerRequest = z.infer<\n typeof ToggleMcpServerRequestSchema\n>;\n\nexport const AuthenticateMcpServerRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.AUTHENTICATE_MCP_SERVER),\n params: AuthenticateMcpServerRequestParamsSchema,\n});\n\nexport type AuthenticateMcpServerRequest = z.infer<\n typeof AuthenticateMcpServerRequestSchema\n>;\n\nexport const CancelMcpAuthRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.CANCEL_MCP_AUTH),\n params: CancelMcpAuthRequestParamsSchema,\n});\n\nexport type CancelMcpAuthRequest = z.infer<typeof CancelMcpAuthRequestSchema>;\n\nexport const ClearMcpAuthRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.CLEAR_MCP_AUTH),\n params: ClearMcpAuthRequestParamsSchema,\n});\n\nexport type ClearMcpAuthRequest = z.infer<typeof ClearMcpAuthRequestSchema>;\n\nexport const SubmitMcpAuthCodeRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.SUBMIT_MCP_AUTH_CODE),\n params: SubmitMcpAuthCodeRequestParamsSchema,\n});\n\nexport type SubmitMcpAuthCodeRequest = z.infer<\n typeof SubmitMcpAuthCodeRequestSchema\n>;\n\nexport const AddMcpServerRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.ADD_MCP_SERVER),\n params: AddMcpServerRequestParamsSchema,\n});\n\nexport type AddMcpServerRequest = z.infer<typeof AddMcpServerRequestSchema>;\n\nexport const RemoveMcpServerRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.REMOVE_MCP_SERVER),\n params: RemoveMcpServerRequestParamsSchema,\n});\n\nexport type RemoveMcpServerRequest = z.infer<\n typeof RemoveMcpServerRequestSchema\n>;\n\nexport const ListMcpRegistryRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_REGISTRY),\n params: ListMcpRegistryRequestParamsSchema,\n});\n\nexport type ListMcpRegistryRequest = z.infer<\n typeof ListMcpRegistryRequestSchema\n>;\n\nexport const ListMcpToolsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_TOOLS),\n params: ListMcpToolsRequestParamsSchema,\n});\n\nexport type ListMcpToolsRequest = z.infer<typeof ListMcpToolsRequestSchema>;\n\nexport const ListToolsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_TOOLS),\n params: ListToolsRequestParamsSchema,\n});\n\nexport type ListToolsRequest = z.infer<typeof ListToolsRequestSchema>;\n\nexport const ListMcpServersRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_SERVERS),\n params: ListMcpServersRequestParamsSchema,\n});\n\nexport type ListMcpServersRequest = z.infer<typeof ListMcpServersRequestSchema>;\n\nexport const ToggleMcpToolRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.TOGGLE_MCP_TOOL),\n params: ToggleMcpToolRequestParamsSchema,\n});\n\nexport type ToggleMcpToolRequest = z.infer<typeof ToggleMcpToolRequestSchema>;\n\nexport const ListSkillsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_SKILLS),\n params: ListSkillsRequestParamsSchema,\n});\n\nexport type ListSkillsRequest = z.infer<typeof ListSkillsRequestSchema>;\n\nexport const SubmitBugReportRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.SUBMIT_BUG_REPORT),\n params: SubmitBugReportRequestParamsSchema,\n});\n\nexport type SubmitBugReportRequest = z.infer<\n typeof SubmitBugReportRequestSchema\n>;\n\nexport const GetRewindInfoRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.GET_REWIND_INFO),\n params: GetRewindInfoRequestParamsSchema,\n});\n\nexport type GetRewindInfoRequest = z.infer<typeof GetRewindInfoRequestSchema>;\n\nexport const ExecuteRewindRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.EXECUTE_REWIND),\n params: ExecuteRewindRequestParamsSchema,\n});\n\nexport type ExecuteRewindRequest = z.infer<typeof ExecuteRewindRequestSchema>;\n\nexport const CompactSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.COMPACT_SESSION),\n params: CompactSessionRequestParamsSchema,\n});\n\nexport type CompactSessionRequest = z.infer<typeof CompactSessionRequestSchema>;\n\nexport const ForkSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.FORK_SESSION),\n params: ForkSessionRequestParamsSchema,\n});\n\nexport type ForkSessionRequest = z.infer<typeof ForkSessionRequestSchema>;\n\nexport const GetContextStatsRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.GET_CONTEXT_STATS),\n params: GetContextStatsRequestParamsSchema,\n});\n\nexport type GetContextStatsRequest = z.infer<\n typeof GetContextStatsRequestSchema\n>;\n\nexport const RenameSessionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidServerMethod.RENAME_SESSION),\n params: RenameSessionRequestParamsSchema,\n});\n\nexport type RenameSessionRequest = z.infer<typeof RenameSessionRequestSchema>;\n\n/** Discriminated union over all client→server request types. */\nexport const ClientRequestSchema = z.discriminatedUnion('method', [\n InitializeSessionRequestSchema,\n LoadSessionRequestSchema,\n AddUserMessageRequestSchema,\n CloseSessionRequestSchema,\n InterruptSessionRequestSchema,\n KillWorkerSessionRequestSchema,\n UpdateSessionSettingsRequestSchema,\n ToggleMcpServerRequestSchema,\n AuthenticateMcpServerRequestSchema,\n CancelMcpAuthRequestSchema,\n ClearMcpAuthRequestSchema,\n SubmitMcpAuthCodeRequestSchema,\n AddMcpServerRequestSchema,\n RemoveMcpServerRequestSchema,\n ListMcpRegistryRequestSchema,\n ListMcpToolsRequestSchema,\n ListToolsRequestSchema,\n ListMcpServersRequestSchema,\n ToggleMcpToolRequestSchema,\n ListSkillsRequestSchema,\n SubmitBugReportRequestSchema,\n GetRewindInfoRequestSchema,\n ExecuteRewindRequestSchema,\n CompactSessionRequestSchema,\n ForkSessionRequestSchema,\n GetContextStatsRequestSchema,\n RenameSessionRequestSchema,\n]);\n\nexport type ClientRequest = z.infer<typeof ClientRequestSchema>;\n\nexport const MissionSnapshotSchema = z\n .object({\n state: z.nativeEnum(MissionState),\n features: z.array(MissionFeatureSchema),\n progressLog: z.array(ProgressLogEntrySchema),\n workerSessionIds: z.array(z.string()),\n workerStates: z.record(WorkerStateInfoSchema).optional(),\n tokenUsage: TokenUsageSchema.optional(),\n tokenUsageBySessionId: z.record(TokenUsageSchema).optional(),\n })\n .passthrough();\n\nexport type MissionSnapshot = z.infer<typeof MissionSnapshotSchema>;\n\nexport const InitializeSessionResultSchema = z\n .object({\n sessionId: z.string(),\n session: JsonObjectSchema,\n mcpServers: z.array(McpServerConfigSchema).optional(),\n settings: SessionSettingsSchema,\n gitRepo: GitRepoInfoSchema.optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n })\n .passthrough();\n\nexport type InitializeSessionResult = z.infer<\n typeof InitializeSessionResultSchema\n>;\n\nexport const LoadSessionResultSchema = z\n .object({\n session: JsonObjectSchema,\n mcpServers: z.array(McpServerConfigSchema).optional(),\n pendingPermissions: z.array(JsonObjectSchema).optional(),\n pendingAskUserRequests: z.array(JsonObjectSchema).optional(),\n settings: SessionSettingsSchema,\n isAgentLoopInProgress: z.boolean().optional(),\n queuedMessages: z.array(JsonObjectSchema).optional(),\n gitRepo: GitRepoInfoSchema.optional(),\n cwd: z.string().optional(),\n callingSessionId: z.string().optional(),\n callingToolUseId: z.string().optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n tokenUsage: TokenUsageSchema.optional(),\n mission: MissionSnapshotSchema.optional(),\n decompSessionType: z.nativeEnum(DecompSessionType).optional(),\n })\n .passthrough();\n\nexport type LoadSessionResult = z.infer<typeof LoadSessionResultSchema>;\n\nexport const AddUserMessageResultSchema = EmptyResultSchema;\n\nexport type AddUserMessageResult = z.infer<typeof AddUserMessageResultSchema>;\n\nexport const InterruptSessionResultSchema = EmptyResultSchema;\n\nexport type InterruptSessionResult = z.infer<\n typeof InterruptSessionResultSchema\n>;\n\nexport const CloseSessionResultSchema = EmptyResultSchema;\n\nexport type CloseSessionResult = z.infer<typeof CloseSessionResultSchema>;\n\nexport const KillWorkerSessionResultSchema = EmptyResultSchema;\n\nexport type KillWorkerSessionResult = z.infer<\n typeof KillWorkerSessionResultSchema\n>;\n\nexport const UpdateSessionSettingsResultSchema = EmptyResultSchema;\n\nexport type UpdateSessionSettingsResult = z.infer<\n typeof UpdateSessionSettingsResultSchema\n>;\n\nexport const ToggleMcpServerResultSchema = SuccessResultSchema;\n\nexport type ToggleMcpServerResult = z.infer<typeof ToggleMcpServerResultSchema>;\n\nexport const AuthenticateMcpServerResultSchema = SuccessResultSchema;\n\nexport type AuthenticateMcpServerResult = z.infer<\n typeof AuthenticateMcpServerResultSchema\n>;\n\nexport const CancelMcpAuthResultSchema = SuccessResultSchema;\n\nexport type CancelMcpAuthResult = z.infer<typeof CancelMcpAuthResultSchema>;\n\nexport const ClearMcpAuthResultSchema = SuccessResultSchema;\n\nexport type ClearMcpAuthResult = z.infer<typeof ClearMcpAuthResultSchema>;\n\nexport const SubmitMcpAuthCodeResultSchema = SuccessResultSchema;\n\nexport type SubmitMcpAuthCodeResult = z.infer<\n typeof SubmitMcpAuthCodeResultSchema\n>;\n\nexport const AddMcpServerResultSchema = SuccessResultSchema;\n\nexport type AddMcpServerResult = z.infer<typeof AddMcpServerResultSchema>;\n\nexport const RemoveMcpServerResultSchema = SuccessResultSchema;\n\nexport type RemoveMcpServerResult = z.infer<typeof RemoveMcpServerResultSchema>;\n\nexport const ListMcpRegistryResultSchema = z\n .object({ servers: z.array(McpRegistryServerSchema) })\n .passthrough();\n\nexport type ListMcpRegistryResult = z.infer<typeof ListMcpRegistryResultSchema>;\n\nexport const ListMcpToolsResultSchema = z\n .object({ tools: z.array(McpToolInfoSchema) })\n .passthrough();\n\nexport type ListMcpToolsResult = z.infer<typeof ListMcpToolsResultSchema>;\n\nexport const ListToolsResultSchema = z\n .object({ tools: z.array(ExecToolInfoSchema) })\n .passthrough();\n\nexport type ListToolsResult = z.infer<typeof ListToolsResultSchema>;\n\nexport const ListMcpServersResultSchema = z\n .object({\n servers: z.array(McpServerStatusInfoSchema),\n summary: McpStatusSummarySchema,\n })\n .passthrough();\n\nexport type ListMcpServersResult = z.infer<typeof ListMcpServersResultSchema>;\n\nexport const ToggleMcpToolResultSchema = SuccessResultSchema;\n\nexport type ToggleMcpToolResult = z.infer<typeof ToggleMcpToolResultSchema>;\n\nexport const ListSkillsResultSchema = z\n .object({ skills: z.array(SkillInfoSchema) })\n .passthrough();\n\nexport type ListSkillsResult = z.infer<typeof ListSkillsResultSchema>;\n\nexport const SubmitBugReportResultSchema = z\n .object({ bugReportId: z.string() })\n .passthrough();\n\nexport type SubmitBugReportResult = z.infer<typeof SubmitBugReportResultSchema>;\n\nexport const GetRewindInfoResultSchema = z\n .object({\n availableFiles: z.array(RewindFileSnapshotSchema),\n createdFiles: z.array(RewindFileCreationSchema),\n evictedFiles: z.array(RewindEvictedFileSchema),\n })\n .passthrough();\n\nexport type GetRewindInfoResult = z.infer<typeof GetRewindInfoResultSchema>;\n\nexport const ExecuteRewindResultSchema = z\n .object({\n newSessionId: z.string(),\n restoredCount: z.number(),\n deletedCount: z.number(),\n failedRestoreCount: z.number(),\n failedDeleteCount: z.number(),\n })\n .passthrough();\n\nexport type ExecuteRewindResult = z.infer<typeof ExecuteRewindResultSchema>;\n\nexport const CompactSessionResultSchema = z\n .object({\n newSessionId: z.string(),\n removedCount: z.number(),\n })\n .passthrough();\n\nexport type CompactSessionResult = z.infer<typeof CompactSessionResultSchema>;\n\nexport const ForkSessionResultSchema = z\n .object({\n newSessionId: z.string(),\n })\n .passthrough();\n\nexport type ForkSessionResult = z.infer<typeof ForkSessionResultSchema>;\n\nexport const GetContextStatsResultSchema = ContextStatsSchema;\n\nexport type GetContextStatsResult = z.infer<typeof GetContextStatsResultSchema>;\n\nexport const ContextBreakdownCategorySchema = z\n .object({\n name: z.string(),\n tokens: z.number(),\n colorKey: z.string(),\n })\n .passthrough();\n\nexport const ContextBreakdownResultSchema = z\n .object({\n modelId: z.string(),\n modelDisplayName: z.string(),\n contextBudget: z.number(),\n usedTokens: z.number(),\n freeTokens: z.number(),\n categories: z.array(ContextBreakdownCategorySchema),\n })\n .passthrough();\n\nexport type ContextBreakdownResult = z.infer<\n typeof ContextBreakdownResultSchema\n>;\n\nexport const RenameSessionResultSchema = SuccessResultSchema;\n\nexport type RenameSessionResult = z.infer<typeof RenameSessionResultSchema>;\n\nexport const InitializeSessionResponseSchema = createResponseSchema(\n InitializeSessionResultSchema\n);\nexport type InitializeSessionResponse = z.infer<\n typeof InitializeSessionResponseSchema\n>;\n\n/** Concrete type for LoadSessionResponse (avoids TS7056 deep inference). */\nexport type LoadSessionResponse =\n | (Omit<z.infer<typeof JsonRpcResponseSuccessSchema>, 'result'> & {\n result: LoadSessionResult;\n })\n | JsonRpcResponseFailure;\n\nconst _LoadSessionResponseSchema = createResponseSchema(\n LoadSessionResultSchema\n);\n\nexport const LoadSessionResponseSchema: z.ZodType<\n LoadSessionResponse,\n z.ZodTypeDef,\n unknown\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Zod workaround for TS7056 deep type inference\n> = _LoadSessionResponseSchema as z.ZodType<\n LoadSessionResponse,\n z.ZodTypeDef,\n unknown\n>;\n\nexport const AddUserMessageResponseSchema = createResponseSchema(\n AddUserMessageResultSchema\n);\nexport type AddUserMessageResponse = z.infer<\n typeof AddUserMessageResponseSchema\n>;\n\nexport const InterruptSessionResponseSchema = createResponseSchema(\n InterruptSessionResultSchema\n);\nexport type InterruptSessionResponse = z.infer<\n typeof InterruptSessionResponseSchema\n>;\n\nexport const CloseSessionResponseSchema = createResponseSchema(\n CloseSessionResultSchema\n);\nexport type CloseSessionResponse = z.infer<typeof CloseSessionResponseSchema>;\n\nexport const KillWorkerSessionResponseSchema = createResponseSchema(\n KillWorkerSessionResultSchema\n);\nexport type KillWorkerSessionResponse = z.infer<\n typeof KillWorkerSessionResponseSchema\n>;\n\nexport const UpdateSessionSettingsResponseSchema = createResponseSchema(\n UpdateSessionSettingsResultSchema\n);\nexport type UpdateSessionSettingsResponse = z.infer<\n typeof UpdateSessionSettingsResponseSchema\n>;\n\nexport const ToggleMcpServerResponseSchema = createResponseSchema(\n ToggleMcpServerResultSchema\n);\nexport type ToggleMcpServerResponse = z.infer<\n typeof ToggleMcpServerResponseSchema\n>;\n\nexport const AuthenticateMcpServerResponseSchema = createResponseSchema(\n AuthenticateMcpServerResultSchema\n);\nexport type AuthenticateMcpServerResponse = z.infer<\n typeof AuthenticateMcpServerResponseSchema\n>;\n\nexport const CancelMcpAuthResponseSchema = createResponseSchema(\n CancelMcpAuthResultSchema\n);\nexport type CancelMcpAuthResponse = z.infer<typeof CancelMcpAuthResponseSchema>;\n\nexport const ClearMcpAuthResponseSchema = createResponseSchema(\n ClearMcpAuthResultSchema\n);\nexport type ClearMcpAuthResponse = z.infer<typeof ClearMcpAuthResponseSchema>;\n\nexport const SubmitMcpAuthCodeResponseSchema = createResponseSchema(\n SubmitMcpAuthCodeResultSchema\n);\nexport type SubmitMcpAuthCodeResponse = z.infer<\n typeof SubmitMcpAuthCodeResponseSchema\n>;\n\nexport const AddMcpServerResponseSchema = createResponseSchema(\n AddMcpServerResultSchema\n);\nexport type AddMcpServerResponse = z.infer<typeof AddMcpServerResponseSchema>;\n\nexport const RemoveMcpServerResponseSchema = createResponseSchema(\n RemoveMcpServerResultSchema\n);\nexport type RemoveMcpServerResponse = z.infer<\n typeof RemoveMcpServerResponseSchema\n>;\n\nexport const ListMcpRegistryResponseSchema = createResponseSchema(\n ListMcpRegistryResultSchema\n);\nexport type ListMcpRegistryResponse = z.infer<\n typeof ListMcpRegistryResponseSchema\n>;\n\nexport const ListMcpToolsResponseSchema = createResponseSchema(\n ListMcpToolsResultSchema\n);\nexport type ListMcpToolsResponse = z.infer<typeof ListMcpToolsResponseSchema>;\n\nexport const ListToolsResponseSchema = createResponseSchema(\n ListToolsResultSchema\n);\nexport type ListToolsResponse = z.infer<typeof ListToolsResponseSchema>;\n\nexport const ListMcpServersResponseSchema = createResponseSchema(\n ListMcpServersResultSchema\n);\nexport type ListMcpServersResponse = z.infer<\n typeof ListMcpServersResponseSchema\n>;\n\nexport const ToggleMcpToolResponseSchema = createResponseSchema(\n ToggleMcpToolResultSchema\n);\nexport type ToggleMcpToolResponse = z.infer<typeof ToggleMcpToolResponseSchema>;\n\nexport const ListSkillsResponseSchema = createResponseSchema(\n ListSkillsResultSchema\n);\nexport type ListSkillsResponse = z.infer<typeof ListSkillsResponseSchema>;\n\nexport const SubmitBugReportResponseSchema = createResponseSchema(\n SubmitBugReportResultSchema\n);\nexport type SubmitBugReportResponse = z.infer<\n typeof SubmitBugReportResponseSchema\n>;\n\nexport const GetRewindInfoResponseSchema = createResponseSchema(\n GetRewindInfoResultSchema\n);\nexport type GetRewindInfoResponse = z.infer<typeof GetRewindInfoResponseSchema>;\n\nexport const ExecuteRewindResponseSchema = createResponseSchema(\n ExecuteRewindResultSchema\n);\nexport type ExecuteRewindResponse = z.infer<typeof ExecuteRewindResponseSchema>;\n\nexport const CompactSessionResponseSchema = createResponseSchema(\n CompactSessionResultSchema\n);\nexport type CompactSessionResponse = z.infer<\n typeof CompactSessionResponseSchema\n>;\n\nexport const ForkSessionResponseSchema = createResponseSchema(\n ForkSessionResultSchema\n);\nexport type ForkSessionResponse = z.infer<typeof ForkSessionResponseSchema>;\n\nexport const GetContextStatsResponseSchema = createResponseSchema(\n GetContextStatsResultSchema\n);\nexport type GetContextStatsResponse = z.infer<\n typeof GetContextStatsResponseSchema\n>;\n\nexport const RenameSessionResponseSchema = createResponseSchema(\n RenameSessionResultSchema\n);\nexport type RenameSessionResponse = z.infer<typeof RenameSessionResponseSchema>;\n","import { z } from 'zod';\n\nimport {\n McpServerStatus,\n McpServerType,\n SettingsLevel,\n ToolConfirmationOutcome,\n} from './enums.js';\nimport { JsonObjectSchema } from './shared.js';\n\nexport const McpStdioServerConfigFieldsSchema = z.object({\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n});\n\nexport type McpStdioServerConfigFields = z.infer<\n typeof McpStdioServerConfigFieldsSchema\n>;\n\nexport const McpHttpServerConfigFieldsSchema = z.object({\n url: z.string().optional(),\n});\n\nexport type McpHttpServerConfigFields = z.infer<\n typeof McpHttpServerConfigFieldsSchema\n>;\n\nexport const McpSseServerConfigFieldsSchema = z.object({\n url: z.string(),\n headers: z.record(z.string()).optional(),\n});\n\nexport type McpSseServerConfigFields = z.infer<\n typeof McpSseServerConfigFieldsSchema\n>;\n\nexport const McpServerStatusInfoSchema = z\n .object({\n name: z.string(),\n status: z.nativeEnum(McpServerStatus),\n source: z.nativeEnum(SettingsLevel),\n isManaged: z.boolean(),\n error: z.string().optional(),\n toolCount: z.number().optional(),\n serverType: z.nativeEnum(McpServerType).optional(),\n hasAuthTokens: z.boolean().optional(),\n })\n .passthrough();\n\nexport type McpServerStatusInfo = z.infer<typeof McpServerStatusInfoSchema>;\n\nexport const McpStatusSummarySchema = z\n .object({\n total: z.number(),\n connected: z.number(),\n connecting: z.number(),\n failed: z.number(),\n disabled: z.number().optional(),\n })\n .passthrough();\n\nexport type McpStatusSummary = z.infer<typeof McpStatusSummarySchema>;\n\nexport const McpRegistryServerSchema = z\n .object({\n name: z.string(),\n description: z.string(),\n type: z.nativeEnum(McpServerType),\n // Stdio config fields\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n // HTTP config fields\n url: z.string().optional(),\n // Additional metadata\n note: z.string().optional(),\n logoUrl: z.string().optional(),\n })\n .passthrough();\n\nexport type McpRegistryServer = z.infer<typeof McpRegistryServerSchema>;\n\n/** JSON Schema subset for MCP tool input parameters. */\nexport const McpToolInputSchemaSchema = z\n .object({\n type: z.string().optional(),\n properties: JsonObjectSchema.optional(),\n required: z.array(z.string()).optional(),\n })\n .passthrough();\n\nexport type McpToolInputSchema = z.infer<typeof McpToolInputSchemaSchema>;\n\nexport const McpToolInfoSchema = z\n .object({\n serverName: z.string(),\n name: z.string(),\n description: z.string().optional(),\n isEnabled: z.boolean(),\n isReadOnly: z.boolean().optional(),\n inputSchema: McpToolInputSchemaSchema.optional(),\n })\n .passthrough();\n\nexport type McpToolInfo = z.infer<typeof McpToolInfoSchema>;\n\nexport const ToolConfirmationListItemSchema = z\n .object({\n label: z.string(),\n value: z.nativeEnum(ToolConfirmationOutcome),\n })\n .passthrough();\n\nexport type ToolConfirmationListItem = z.infer<\n typeof ToolConfirmationListItemSchema\n>;\n","import { z } from 'zod';\n\nimport { JsonObjectSchema, JsonValueSchema } from './shared.js';\n\n/** Text content block. */\nexport const TextBlockSchema = z\n .object({\n type: z.literal('text'),\n text: z.string(),\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type TextBlock = z.infer<typeof TextBlockSchema>;\n\n/** Base64-encoded image source. */\nexport const Base64ImageSourceSchema = z\n .object({\n type: z.literal('base64'),\n data: z.string(),\n mediaType: z.enum(['image/jpeg', 'image/png', 'image/gif', 'image/webp']),\n })\n .passthrough();\n\nexport type Base64ImageSource = z.infer<typeof Base64ImageSourceSchema>;\n\n/** Image content block. */\nexport const ImageBlockSchema = z\n .object({\n type: z.literal('image'),\n source: Base64ImageSourceSchema,\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type ImageBlock = z.infer<typeof ImageBlockSchema>;\n\n/** Thinking content block. */\nexport const ThinkingBlockSchema = z\n .object({\n type: z.literal('thinking'),\n signature: z.string(),\n thinking: z.string(),\n id: z.string().optional(),\n signatureProvider: z.string().optional(),\n })\n .passthrough();\n\nexport type ThinkingBlock = z.infer<typeof ThinkingBlockSchema>;\n\n/** Redacted thinking content block. */\nexport const RedactedThinkingBlockSchema = z\n .object({\n type: z.literal('redacted_thinking'),\n data: z.string(),\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type RedactedThinkingBlock = z.infer<typeof RedactedThinkingBlockSchema>;\n\n/** Tool use content block. */\nexport const ToolUseBlockSchema = z\n .object({\n type: z.literal('tool_use'),\n id: z.string(),\n input: JsonObjectSchema,\n name: z.string(),\n thoughtSignature: z.string().optional(),\n })\n .passthrough();\n\nexport type ToolUseBlock = z.infer<typeof ToolUseBlockSchema>;\n\n/** Tool result content block. */\nexport const ToolResultBlockSchema = z\n .object({\n type: z.literal('tool_result'),\n toolUseId: z.string(),\n content: z.union([z.string(), z.array(JsonValueSchema)]).optional(),\n isError: z.boolean().optional(),\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type ToolResultBlock = z.infer<typeof ToolResultBlockSchema>;\n\n/** Document content block. */\nexport const DocumentBlockSchema = z\n .object({\n type: z.literal('document'),\n source: JsonObjectSchema,\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type DocumentBlock = z.infer<typeof DocumentBlockSchema>;\n\n/** Discriminated union over all content block types. */\nexport const ContentBlockSchema = z.discriminatedUnion('type', [\n TextBlockSchema,\n ImageBlockSchema,\n ThinkingBlockSchema,\n RedactedThinkingBlockSchema,\n ToolUseBlockSchema,\n ToolResultBlockSchema,\n DocumentBlockSchema,\n]);\n\nexport type ContentBlock = z.infer<typeof ContentBlockSchema>;\n\nexport const FactoryDroidMessageRole = {\n User: 'user',\n Assistant: 'assistant',\n Tool: 'tool',\n System: 'system',\n} as const;\n\nexport type FactoryDroidMessageRole =\n (typeof FactoryDroidMessageRole)[keyof typeof FactoryDroidMessageRole];\n\n/** Factory Droid message schema (used in CreateMessageNotification and session data). */\nexport const FactoryDroidMessageSchema = z\n .object({\n id: z.string(),\n role: z.enum([\n FactoryDroidMessageRole.User,\n FactoryDroidMessageRole.Assistant,\n FactoryDroidMessageRole.Tool,\n FactoryDroidMessageRole.System,\n ]),\n content: z.array(ContentBlockSchema),\n createdAt: z.number(),\n updatedAt: z.number(),\n parentId: z.string().optional(),\n visibility: z.enum(['both', 'llm_only', 'user_only']).optional(),\n isError: z.boolean().optional(),\n })\n .passthrough();\n\nexport type FactoryDroidMessage = z.infer<typeof FactoryDroidMessageSchema>;\n\n/** Document source for user messages (PDF or plain text). */\nexport const DocumentSourceSchema = z\n .object({\n type: z.string(),\n mediaType: z.string(),\n data: z.string(),\n name: z.string().optional(),\n mime: z.string().optional(),\n })\n .passthrough();\n\nexport type DocumentSource = z.infer<typeof DocumentSourceSchema>;\n","import { z } from 'zod';\n\nimport {\n DismissalType,\n FeatureStatus,\n FeatureSuccessState,\n IssueSeverity,\n ProgressLogEntryType,\n} from './enums.js';\n\n/** Mission feature schema. */\nexport const MissionFeatureSchema = z\n .object({\n id: z.string(),\n description: z.string(),\n status: z.nativeEnum(FeatureStatus),\n skillName: z.string(),\n preconditions: z.array(z.string()),\n expectedBehavior: z.array(z.string()),\n verificationSteps: z.array(z.string()),\n fulfills: z.array(z.string()).optional(),\n milestone: z.string().optional(),\n workerSessionIds: z.array(z.string()).optional(),\n currentWorkerSessionId: z.string().nullable().optional(),\n completedWorkerSessionId: z.string().nullable().optional(),\n })\n .passthrough();\n\nexport type MissionFeature = z.infer<typeof MissionFeatureSchema>;\n\nexport const FeatureSuccessStateSchema = z.nativeEnum(FeatureSuccessState);\n\n/** Discovered issue during feature implementation. */\nexport const DiscoveredIssueSchema = z\n .object({\n severity: z.nativeEnum(IssueSeverity),\n description: z.string(),\n suggestedFix: z.string().optional(),\n })\n .passthrough();\n\nexport type DiscoveredIssue = z.infer<typeof DiscoveredIssueSchema>;\n\n/** A command run during verification. */\nexport const VerificationCommandSchema = z\n .object({\n command: z.string(),\n exitCode: z.number(),\n observation: z.string(),\n })\n .passthrough();\n\nexport type VerificationCommand = z.infer<typeof VerificationCommandSchema>;\n\n/** An interactive check performed during verification. */\nexport const InteractiveCheckSchema = z\n .object({\n action: z.string(),\n observed: z.string(),\n })\n .passthrough();\n\nexport type InteractiveCheck = z.infer<typeof InteractiveCheckSchema>;\n\n/** Verification performed during feature implementation. */\nexport const VerificationSchema = z\n .object({\n commandsRun: z.array(VerificationCommandSchema),\n interactiveChecks: z.array(InteractiveCheckSchema).optional(),\n })\n .passthrough();\n\nexport type Verification = z.infer<typeof VerificationSchema>;\n\n/** A single test case. */\nexport const TestCaseSchema = z\n .object({\n name: z.string(),\n verifies: z.string(),\n })\n .passthrough();\n\nexport type TestCase = z.infer<typeof TestCaseSchema>;\n\n/** A test file with its test cases. */\nexport const TestFileSchema = z\n .object({\n file: z.string(),\n cases: z.array(TestCaseSchema),\n })\n .passthrough();\n\nexport type TestFile = z.infer<typeof TestFileSchema>;\n\n/** Test information for a feature implementation. */\nexport const TestsSchema = z\n .object({\n added: z.array(TestFileSchema),\n updated: z.array(z.string()).optional(),\n coverage: z.string(),\n })\n .passthrough();\n\nexport type Tests = z.infer<typeof TestsSchema>;\n\n/** A deviation from the skill procedure. */\nexport const SkillDeviationSchema = z\n .object({\n step: z.string(),\n whatIDidInstead: z.string(),\n why: z.string(),\n })\n .passthrough();\n\nexport type SkillDeviation = z.infer<typeof SkillDeviationSchema>;\n\n/** Feedback on the skill procedure. */\nexport const SkillFeedbackSchema = z\n .object({\n followedProcedure: z.boolean(),\n deviations: z.array(SkillDeviationSchema),\n suggestedChanges: z.array(z.string()).optional(),\n })\n .passthrough();\n\nexport type SkillFeedback = z.infer<typeof SkillFeedbackSchema>;\n\n/** Worker handoff information. */\nexport const HandoffSchema = z\n .object({\n salientSummary: z.string().optional(),\n whatWasImplemented: z.string(),\n whatWasLeftUndone: z.string(),\n verification: VerificationSchema,\n tests: TestsSchema,\n discoveredIssues: z.array(DiscoveredIssueSchema),\n skillFeedback: SkillFeedbackSchema.optional(),\n })\n .passthrough();\n\nexport type Handoff = z.infer<typeof HandoffSchema>;\n\n/** A record of a dismissed handoff item. */\nexport const DismissalRecordSchema = z\n .object({\n type: z.nativeEnum(DismissalType),\n sourceFeatureId: z.string(),\n summary: z.string(),\n justification: z.string(),\n })\n .passthrough();\n\nexport type DismissalRecord = z.infer<typeof DismissalRecordSchema>;\n\nconst BaseProgressLogEntrySchema = z.object({\n timestamp: z.string(),\n});\n\nexport const MissionAcceptedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionAccepted),\n title: z.string(),\n}).passthrough();\n\nexport type MissionAcceptedEntry = z.infer<typeof MissionAcceptedEntrySchema>;\n\nexport const MissionPausedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionPaused),\n}).passthrough();\n\nexport type MissionPausedEntry = z.infer<typeof MissionPausedEntrySchema>;\n\nexport const MissionResumedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionResumed),\n}).passthrough();\n\nexport type MissionResumedEntry = z.infer<typeof MissionResumedEntrySchema>;\n\nexport const MissionRunStartedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionRunStarted),\n message: z.string().optional(),\n}).passthrough();\n\nexport type MissionRunStartedEntry = z.infer<\n typeof MissionRunStartedEntrySchema\n>;\n\nexport const WorkerStartedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerStarted),\n workerSessionId: z.string(),\n spawnId: z.string(),\n featureId: z.string().optional(),\n}).passthrough();\n\nexport type WorkerStartedEntry = z.infer<typeof WorkerStartedEntrySchema>;\n\nexport const WorkerSelectedFeatureEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerSelectedFeature),\n workerSessionId: z.string(),\n featureId: z.string(),\n }).passthrough();\n\nexport type WorkerSelectedFeatureEntry = z.infer<\n typeof WorkerSelectedFeatureEntrySchema\n>;\n\nexport const WorkerCompletedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerCompleted),\n workerSessionId: z.string(),\n featureId: z.string(),\n successState: FeatureSuccessStateSchema,\n returnToOrchestrator: z.boolean(),\n commitId: z.string().optional(),\n exitCode: z.number(),\n validatorsPassed: z.boolean().optional(),\n handoff: HandoffSchema.optional(),\n}).passthrough();\n\nexport type WorkerCompletedEntry = z.infer<typeof WorkerCompletedEntrySchema>;\n\nexport const WorkerFailedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerFailed),\n workerSessionId: z.string().optional(),\n spawnId: z.string(),\n exitCode: z.number().optional(),\n reason: z.string(),\n}).passthrough();\n\nexport type WorkerFailedEntry = z.infer<typeof WorkerFailedEntrySchema>;\n\nexport const WorkerPausedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerPaused),\n workerSessionId: z.string(),\n featureId: z.string().optional(),\n}).passthrough();\n\nexport type WorkerPausedEntry = z.infer<typeof WorkerPausedEntrySchema>;\n\nexport const HandoffItemsDismissedEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.HandoffItemsDismissed),\n dismissals: z.array(DismissalRecordSchema).optional(),\n }).passthrough();\n\nexport type HandoffItemsDismissedEntry = z.infer<\n typeof HandoffItemsDismissedEntrySchema\n>;\n\nexport const MilestoneValidationTriggeredEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MilestoneValidationTriggered),\n milestone: z.string(),\n featureId: z.string(),\n }).passthrough();\n\nexport type MilestoneValidationTriggeredEntry = z.infer<\n typeof MilestoneValidationTriggeredEntrySchema\n>;\n\n/** Discriminated union over all 11 progress log entry types. */\nexport const ProgressLogEntrySchema = z.discriminatedUnion('type', [\n MissionAcceptedEntrySchema,\n MissionPausedEntrySchema,\n MissionResumedEntrySchema,\n MissionRunStartedEntrySchema,\n WorkerStartedEntrySchema,\n WorkerSelectedFeatureEntrySchema,\n WorkerCompletedEntrySchema,\n WorkerFailedEntrySchema,\n WorkerPausedEntrySchema,\n HandoffItemsDismissedEntrySchema,\n MilestoneValidationTriggeredEntrySchema,\n]);\n\nexport type ProgressLogEntry = z.infer<typeof ProgressLogEntrySchema>;\n","import { z } from 'zod';\n\nexport const DroidHookEventSchema = z.enum([\n 'PreToolUse',\n 'PostToolUse',\n 'Notification',\n 'UserPromptSubmit',\n 'Stop',\n 'SubagentStop',\n 'PreCompact',\n 'SessionStart',\n 'SessionEnd',\n]);\n\nexport type DroidHookEvent = z.infer<typeof DroidHookEventSchema>;\n\nexport const DroidHookSpecificOutputSchema = z\n .object({\n hookEventName: DroidHookEventSchema.optional(),\n permissionDecision: z.enum(['allow', 'deny', 'ask']).optional(),\n permissionDecisionReason: z.string().optional(),\n additionalContext: z.string().optional(),\n updatedInput: z.record(z.unknown()).optional(),\n })\n .passthrough();\n\nexport const DroidHookOutputSchema = z\n .object({\n continue: z.boolean().optional(),\n stopReason: z.string().optional(),\n suppressOutput: z.boolean().optional(),\n systemMessage: z.string().optional(),\n decision: z.enum(['block', 'approve']).optional(),\n reason: z.string().optional(),\n hookSpecificOutput: DroidHookSpecificOutputSchema.optional(),\n })\n .passthrough();\n\nexport type DroidHookOutput = z.infer<typeof DroidHookOutputSchema>;\n\nexport const DroidHookExecutionResultSchema = DroidHookOutputSchema.extend({\n exitCode: z.number(),\n stdout: z.string(),\n stderr: z.string(),\n});\n\nexport type DroidHookExecutionResult = z.infer<\n typeof DroidHookExecutionResultSchema\n>;\n","import { z } from 'zod';\n\nimport { TokenUsageSchema } from './client.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n DroidClientMethod,\n DroidErrorType,\n DroidInteractionMode,\n DroidWorkingState,\n McpAuthOutcome,\n MissionState,\n ReasoningEffort,\n SessionNotificationType,\n ToolConfirmationOutcome,\n ToolConfirmationType,\n} from './enums.js';\nimport { DroidHookEventSchema } from './hooks.js';\nimport {\n McpServerStatusInfoSchema,\n McpStatusSummarySchema,\n ToolConfirmationListItemSchema,\n} from './mcp.js';\nimport {\n FactoryDroidMessageSchema,\n ToolUseBlockSchema as MessageToolUseBlockSchema,\n} from './messages.js';\nimport { MissionFeatureSchema, ProgressLogEntrySchema } from './mission.js';\nimport {\n createResponseSchema,\n JsonObjectSchema,\n JsonRpcNotificationSchema,\n JsonRpcRequestSchema,\n JsonValueSchema,\n ToolSelectionOverridesSchema,\n} from './shared.js';\n\nexport const ToolUseBlockSchema = MessageToolUseBlockSchema;\n\nexport type ToolUseBlock = z.infer<typeof ToolUseBlockSchema>;\n\n/** @deprecated Use ToolUseBlockSchema/ToolUseBlock for the message block shape. */\nexport const ToolUseSchema = ToolUseBlockSchema;\n\n/** @deprecated Use ToolUseBlock for the message block shape. */\nexport type ToolUse = ToolUseBlock;\n\nexport const ErrorDetailSchema = z\n .object({\n name: z.string(),\n message: z.string(),\n })\n .passthrough();\n\nexport type ErrorDetail = z.infer<typeof ErrorDetailSchema>;\n\nexport const ToolProgressUpdateSchema = z\n .object({\n type: z.enum(['tool_call', 'tool_result', 'error', 'status', 'message']),\n toolName: z.string().optional(),\n status: z.string().optional(),\n details: z.string().optional(),\n text: z.string().optional(),\n error: z.string().optional(),\n timestamp: z.number().optional(),\n parameters: JsonObjectSchema.optional(),\n valueSnippet: z.string().optional(),\n subagentSessionId: z.string().optional(),\n })\n .passthrough();\n\nexport type ToolProgressUpdate = z.infer<typeof ToolProgressUpdateSchema>;\n\nexport const SettingsUpdatedPayloadSchema = z\n .object({\n autonomyMode: z.nativeEnum(AutonomyMode).optional(),\n interactionMode: z\n .nativeEnum(DroidInteractionMode)\n .optional()\n .catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n ...ToolSelectionOverridesSchema.shape,\n })\n .passthrough();\n\nexport type SettingsUpdatedPayload = z.infer<\n typeof SettingsUpdatedPayloadSchema\n>;\n\nexport const ToolResultNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.TOOL_RESULT),\n messageId: z.string(),\n toolUseId: z.string(),\n content: JsonValueSchema.optional(),\n isError: z.boolean().optional(),\n id: z.string().optional(),\n })\n .passthrough();\n\nexport type ToolResultNotification = z.infer<\n typeof ToolResultNotificationSchema\n>;\n\nexport const ToolProgressUpdateNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.TOOL_PROGRESS_UPDATE),\n toolUseId: z.string(),\n toolName: z.string(),\n update: ToolProgressUpdateSchema,\n })\n .passthrough();\n\nexport type ToolProgressUpdateNotification = z.infer<\n typeof ToolProgressUpdateNotificationSchema\n>;\n\nexport const CreateMessageNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.CREATE_MESSAGE),\n message: FactoryDroidMessageSchema,\n parentId: z.string().optional(),\n requestId: z.string().optional(),\n })\n .passthrough();\n\nexport type CreateMessageNotification = z.infer<\n typeof CreateMessageNotificationSchema\n>;\n\nexport const ErrorNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.ERROR),\n message: z.string(),\n errorType: z.nativeEnum(DroidErrorType),\n timestamp: z.string(),\n error: ErrorDetailSchema.optional(),\n })\n .passthrough();\n\nexport type ErrorNotification = z.infer<typeof ErrorNotificationSchema>;\n\nexport const DroidWorkingStateChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.DROID_WORKING_STATE_CHANGED),\n newState: z.nativeEnum(DroidWorkingState),\n })\n .passthrough();\n\nexport type DroidWorkingStateChangedNotification = z.infer<\n typeof DroidWorkingStateChangedNotificationSchema\n>;\n\nexport const PermissionResolvedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.PERMISSION_RESOLVED),\n requestId: z.string(),\n toolUseIds: z.array(z.string()),\n selectedOption: z.nativeEnum(ToolConfirmationOutcome),\n })\n .passthrough();\n\nexport type PermissionResolvedNotification = z.infer<\n typeof PermissionResolvedNotificationSchema\n>;\n\nexport const SettingsUpdatedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.SETTINGS_UPDATED),\n settings: SettingsUpdatedPayloadSchema,\n })\n .passthrough();\n\nexport type SettingsUpdatedNotification = z.infer<\n typeof SettingsUpdatedNotificationSchema\n>;\n\nexport const SessionTitleUpdatedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.SESSION_TITLE_UPDATED),\n title: z.string(),\n })\n .passthrough();\n\nexport type SessionTitleUpdatedNotification = z.infer<\n typeof SessionTitleUpdatedNotificationSchema\n>;\n\nexport const McpStatusChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MCP_STATUS_CHANGED),\n servers: z.array(McpServerStatusInfoSchema),\n summary: McpStatusSummarySchema,\n })\n .passthrough();\n\nexport type McpStatusChangedNotification = z.infer<\n typeof McpStatusChangedNotificationSchema\n>;\n\n/** Assistant text delta notification (streaming token). */\nexport const AssistantTextDeltaNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.ASSISTANT_TEXT_DELTA),\n messageId: z.string(),\n blockIndex: z.number(),\n textDelta: z.string(),\n })\n .passthrough();\n\nexport type AssistantTextDeltaNotification = z.infer<\n typeof AssistantTextDeltaNotificationSchema\n>;\n\n/** Assistant text complete notification (streaming block finished). */\nexport const AssistantTextCompleteNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.ASSISTANT_TEXT_COMPLETE),\n messageId: z.string(),\n blockIndex: z.number(),\n })\n .passthrough();\n\nexport type AssistantTextCompleteNotification = z.infer<\n typeof AssistantTextCompleteNotificationSchema\n>;\n\nexport const ThinkingTextDeltaNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.THINKING_TEXT_DELTA),\n messageId: z.string(),\n blockIndex: z.number(),\n textDelta: z.string(),\n })\n .passthrough();\n\nexport type ThinkingTextDeltaNotification = z.infer<\n typeof ThinkingTextDeltaNotificationSchema\n>;\n\nexport const ThinkingTextCompleteNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.THINKING_TEXT_COMPLETE),\n messageId: z.string(),\n blockIndex: z.number(),\n durationMs: z.number().optional(),\n })\n .passthrough();\n\nexport type ThinkingTextCompleteNotification = z.infer<\n typeof ThinkingTextCompleteNotificationSchema\n>;\n\nexport const ToolCallNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.TOOL_CALL),\n toolUse: ToolUseBlockSchema,\n })\n .passthrough();\n\nexport type ToolCallNotification = z.infer<typeof ToolCallNotificationSchema>;\n\nexport const SessionTokenUsageChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.SESSION_TOKEN_USAGE_CHANGED),\n sessionId: z.string(),\n tokenUsage: TokenUsageSchema,\n })\n .passthrough();\n\nexport type SessionTokenUsageChangedNotification = z.infer<\n typeof SessionTokenUsageChangedNotificationSchema\n>;\n\nexport const MissionStateChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_STATE_CHANGED),\n state: z.nativeEnum(MissionState),\n })\n .passthrough();\n\nexport type MissionStateChangedNotification = z.infer<\n typeof MissionStateChangedNotificationSchema\n>;\n\nexport const MissionFeaturesChangedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_FEATURES_CHANGED),\n features: z.array(MissionFeatureSchema),\n })\n .passthrough();\n\nexport type MissionFeaturesChangedNotification = z.infer<\n typeof MissionFeaturesChangedNotificationSchema\n>;\n\nexport const MissionProgressEntryNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_PROGRESS_ENTRY),\n progressLog: z.array(ProgressLogEntrySchema),\n })\n .passthrough();\n\nexport type MissionProgressEntryNotification = z.infer<\n typeof MissionProgressEntryNotificationSchema\n>;\n\nexport const MissionHeartbeatNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_HEARTBEAT),\n timestamp: z.string(),\n })\n .passthrough();\n\nexport type MissionHeartbeatNotification = z.infer<\n typeof MissionHeartbeatNotificationSchema\n>;\n\nexport const MissionWorkerStartedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_WORKER_STARTED),\n workerSessionId: z.string(),\n })\n .passthrough();\n\nexport type MissionWorkerStartedNotification = z.infer<\n typeof MissionWorkerStartedNotificationSchema\n>;\n\nexport const MissionWorkerCompletedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MISSION_WORKER_COMPLETED),\n workerSessionId: z.string(),\n exitCode: z.number(),\n })\n .passthrough();\n\nexport type MissionWorkerCompletedNotification = z.infer<\n typeof MissionWorkerCompletedNotificationSchema\n>;\n\nexport const McpAuthRequiredNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MCP_AUTH_REQUIRED),\n serverName: z.string(),\n authUrl: z.string(),\n message: z.string(),\n state: z.string(),\n })\n .passthrough();\n\nexport type McpAuthRequiredNotification = z.infer<\n typeof McpAuthRequiredNotificationSchema\n>;\n\nexport const McpAuthCompletedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.MCP_AUTH_COMPLETED),\n serverName: z.string(),\n outcome: z.nativeEnum(McpAuthOutcome),\n message: z.string(),\n })\n .passthrough();\n\nexport type McpAuthCompletedNotification = z.infer<\n typeof McpAuthCompletedNotificationSchema\n>;\n\nexport const HookCommandSchema = z\n .object({\n command: z.string(),\n timeout: z.number().optional(),\n })\n .passthrough();\n\nexport type HookCommand = z.infer<typeof HookCommandSchema>;\n\nexport const HookResultSchema = z\n .object({\n exitCode: z.number(),\n stdout: z.string(),\n stderr: z.string(),\n command: z.string().optional(),\n timeout: z.number().optional(),\n })\n .passthrough();\n\nexport type HookResult = z.infer<typeof HookResultSchema>;\n\nexport const HookExecutionStartedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.HOOK_EXECUTION_STARTED),\n hookId: z.string(),\n hookEventName: DroidHookEventSchema,\n hookMatcher: z.string().optional(),\n hookCommands: z.array(HookCommandSchema),\n hookToolCallId: z.string().optional(),\n isParallelExecution: z.boolean().optional(),\n parallelGroupId: z.string().optional(),\n })\n .passthrough();\n\nexport type HookExecutionStartedNotification = z.infer<\n typeof HookExecutionStartedNotificationSchema\n>;\n\nexport const HookExecutionCompletedNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.HOOK_EXECUTION_COMPLETED),\n hookId: z.string(),\n hookEventName: DroidHookEventSchema.optional(),\n hookMatcher: z.string().optional(),\n hookToolCallId: z.string().optional(),\n hookStatus: z.enum(['completed', 'error']),\n hookResults: z.array(HookResultSchema).optional(),\n })\n .passthrough();\n\nexport type HookExecutionCompletedNotification = z.infer<\n typeof HookExecutionCompletedNotificationSchema\n>;\n\n/** Structured output validation error emitted by Droid. */\nexport const StructuredOutputErrorSchema = z\n .object({\n code: z.string(),\n message: z.string(),\n details: z.unknown().optional(),\n })\n .passthrough();\n\nexport type StructuredOutputError = z.infer<typeof StructuredOutputErrorSchema>;\n\n/** Backend-validated structured output for the completed turn. */\nexport const StructuredOutputNotificationSchema = z\n .object({\n type: z.literal(SessionNotificationType.STRUCTURED_OUTPUT),\n messageId: z.string(),\n structuredOutput: JsonObjectSchema.nullable(),\n structuredOutputError: StructuredOutputErrorSchema.nullable(),\n })\n .passthrough();\n\nexport type StructuredOutputNotification = z.infer<\n typeof StructuredOutputNotificationSchema\n>;\n\n/** List of all session notification schemas (for discriminatedUnion). */\nexport const SessionNotificationSchemaList = [\n ToolResultNotificationSchema,\n ToolProgressUpdateNotificationSchema,\n CreateMessageNotificationSchema,\n ErrorNotificationSchema,\n DroidWorkingStateChangedNotificationSchema,\n PermissionResolvedNotificationSchema,\n SettingsUpdatedNotificationSchema,\n SessionTitleUpdatedNotificationSchema,\n McpStatusChangedNotificationSchema,\n AssistantTextDeltaNotificationSchema,\n AssistantTextCompleteNotificationSchema,\n ThinkingTextDeltaNotificationSchema,\n ThinkingTextCompleteNotificationSchema,\n ToolCallNotificationSchema,\n SessionTokenUsageChangedNotificationSchema,\n MissionStateChangedNotificationSchema,\n MissionFeaturesChangedNotificationSchema,\n MissionProgressEntryNotificationSchema,\n MissionHeartbeatNotificationSchema,\n MissionWorkerStartedNotificationSchema,\n MissionWorkerCompletedNotificationSchema,\n McpAuthRequiredNotificationSchema,\n McpAuthCompletedNotificationSchema,\n HookExecutionStartedNotificationSchema,\n HookExecutionCompletedNotificationSchema,\n StructuredOutputNotificationSchema,\n] as const;\n\n/** Discriminated union over all session notification types. */\nexport const SessionNotificationPayloadSchema = z.discriminatedUnion(\n 'type',\n SessionNotificationSchemaList\n);\n\nexport type SessionNotificationPayload = z.infer<\n typeof SessionNotificationPayloadSchema\n>;\n\n/** Parameters for session notification (wraps the discriminated union). */\nconst _SessionNotificationParamsSchema = z\n .object({\n notification: SessionNotificationPayloadSchema,\n })\n .passthrough();\n\n/* eslint-disable @typescript-eslint/consistent-type-assertions -- Zod workaround for deep type inference */\nexport const SessionNotificationParamsSchema: z.ZodType<\n SessionNotificationParams,\n z.ZodTypeDef,\n unknown\n> = _SessionNotificationParamsSchema as z.ZodType<\n SessionNotificationParams,\n z.ZodTypeDef,\n unknown\n>;\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n\nexport type SessionNotificationParams = {\n notification: SessionNotificationPayload;\n [key: string]: unknown;\n};\n\n/** Full session notification with JSON-RPC envelope. */\nconst _SessionNotificationSchema = JsonRpcNotificationSchema.extend({\n method: z.literal(DroidClientMethod.SESSION_NOTIFICATION),\n params: SessionNotificationParamsSchema,\n});\n\n/* eslint-disable @typescript-eslint/consistent-type-assertions -- Zod workaround for deep type inference */\nexport const SessionNotificationSchema: z.ZodType<\n SessionNotification,\n z.ZodTypeDef,\n unknown\n> = _SessionNotificationSchema as z.ZodType<\n SessionNotification,\n z.ZodTypeDef,\n unknown\n>;\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n\nexport type SessionNotification = z.output<typeof JsonRpcNotificationSchema> & {\n method: 'droid.session_notification';\n params: SessionNotificationParams;\n};\n\nexport const EditToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.Edit),\n filePath: z.string(),\n fileName: z.string(),\n oldContent: z.string().optional(),\n newContent: z.string().optional(),\n })\n .passthrough();\n\nexport type EditToolConfirmationDetails = z.infer<\n typeof EditToolConfirmationDetailsSchema\n>;\n\nexport const ExecuteToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.Execute),\n fullCommand: z.string(),\n command: z.string(),\n extractedCommands: z.array(z.string()).optional(),\n impactLevel: z.string().optional(),\n })\n .passthrough();\n\nexport type ExecuteToolConfirmationDetails = z.infer<\n typeof ExecuteToolConfirmationDetailsSchema\n>;\n\nexport const CreateToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.Create),\n filePath: z.string(),\n fileName: z.string(),\n content: z.string(),\n })\n .passthrough();\n\nexport type CreateToolConfirmationDetails = z.infer<\n typeof CreateToolConfirmationDetailsSchema\n>;\n\nexport const AskUserQuestionSchema = z\n .object({\n index: z.number(),\n topic: z.string(),\n question: z.string(),\n options: z.array(z.string()),\n })\n .passthrough();\n\nexport type AskUserQuestion = z.infer<typeof AskUserQuestionSchema>;\n\nexport const AskUserConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.AskUser),\n questionnaire: z.string(),\n parsed: z\n .object({\n questions: z.array(AskUserQuestionSchema),\n })\n .optional(),\n parseError: z\n .object({\n message: z.string(),\n line: z.number().optional(),\n })\n .optional(),\n })\n .passthrough();\n\nexport type AskUserConfirmationDetails = z.infer<\n typeof AskUserConfirmationDetailsSchema\n>;\n\nexport const ExitSpecModeConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.ExitSpecMode),\n plan: z.string(),\n title: z.string().optional(),\n optionNames: z.array(z.string()).optional(),\n })\n .passthrough();\n\nexport type ExitSpecModeConfirmationDetails = z.infer<\n typeof ExitSpecModeConfirmationDetailsSchema\n>;\n\nexport const ProposeMissionConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.ProposeMission),\n proposal: z.string(),\n title: z.string().optional(),\n })\n .passthrough();\n\nexport type ProposeMissionConfirmationDetails = z.infer<\n typeof ProposeMissionConfirmationDetailsSchema\n>;\n\nexport const StartMissionRunConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.StartMissionRun),\n runningMissionCount: z.number(),\n runningMissionSessionIds: z.array(z.string()),\n })\n .passthrough();\n\nexport type StartMissionRunConfirmationDetails = z.infer<\n typeof StartMissionRunConfirmationDetailsSchema\n>;\n\nexport const ApplyPatchToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.ApplyPatch),\n filePath: z.string(),\n fileName: z.string(),\n patchContent: z.string(),\n oldContent: z.string().optional(),\n newContent: z.string().optional(),\n })\n .passthrough();\n\nexport type ApplyPatchToolConfirmationDetails = z.infer<\n typeof ApplyPatchToolConfirmationDetailsSchema\n>;\n\nexport const McpToolConfirmationDetailsSchema = z\n .object({\n type: z.literal(ToolConfirmationType.McpTool),\n toolName: z.string(),\n impactLevel: z.string(),\n })\n .passthrough();\n\nexport type McpToolConfirmationDetails = z.infer<\n typeof McpToolConfirmationDetailsSchema\n>;\n\n/** Discriminated union over tool confirmation detail types. */\nexport const ToolConfirmationDetailsSchema = z.discriminatedUnion('type', [\n EditToolConfirmationDetailsSchema,\n ExecuteToolConfirmationDetailsSchema,\n CreateToolConfirmationDetailsSchema,\n AskUserConfirmationDetailsSchema,\n ExitSpecModeConfirmationDetailsSchema,\n ProposeMissionConfirmationDetailsSchema,\n StartMissionRunConfirmationDetailsSchema,\n ApplyPatchToolConfirmationDetailsSchema,\n McpToolConfirmationDetailsSchema,\n]);\n\nexport type ToolConfirmationDetails = z.infer<\n typeof ToolConfirmationDetailsSchema\n>;\n\n/** Tool confirmation information (toolUse + confirmationType + details). */\nexport const ToolConfirmationInfoSchema = z\n .object({\n toolUse: ToolUseSchema,\n confirmationType: z.nativeEnum(ToolConfirmationType),\n details: ToolConfirmationDetailsSchema,\n })\n .passthrough();\n\nexport type ToolConfirmationInfo = z.infer<typeof ToolConfirmationInfoSchema>;\n\n/** Parameters for droid.request_permission request. */\nexport const RequestPermissionRequestParamsSchema = z\n .object({\n toolUses: z.array(ToolConfirmationInfoSchema),\n options: z.array(ToolConfirmationListItemSchema),\n })\n .passthrough();\n\nexport type RequestPermissionRequestParams = z.infer<\n typeof RequestPermissionRequestParamsSchema\n>;\n\n/** Request for permission from the server (server → client). */\nexport const RequestPermissionRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidClientMethod.REQUEST_PERMISSION),\n params: RequestPermissionRequestParamsSchema,\n});\n\nexport type RequestPermissionRequest = z.infer<\n typeof RequestPermissionRequestSchema\n>;\n\nexport type RequestPermissionSelection =\n | ToolConfirmationOutcome\n | `${ToolConfirmationOutcome}`;\n\nexport type RequestPermissionHandlerResult =\n | RequestPermissionSelection\n | {\n selectedOption: RequestPermissionSelection;\n comment?: string;\n };\n\n/** Result for droid.request_permission response. */\nexport const RequestPermissionResultSchema = z\n .object({\n selectedOption: z.nativeEnum(ToolConfirmationOutcome),\n comment: z.string().optional(),\n })\n .strict();\n\nexport type RequestPermissionResult = z.infer<\n typeof RequestPermissionResultSchema\n>;\n\n/** Response to droid.request_permission. */\nexport const RequestPermissionResponseSchema = createResponseSchema(\n RequestPermissionResultSchema\n);\nexport type RequestPermissionResponse = z.infer<\n typeof RequestPermissionResponseSchema\n>;\n\n/** Parameters for droid.ask_user request. */\nexport const AskUserRequestParamsSchema = z\n .object({\n toolCallId: z.string(),\n questions: z.array(AskUserQuestionSchema),\n })\n .passthrough();\n\nexport type AskUserRequestParams = z.infer<typeof AskUserRequestParamsSchema>;\n\n/** Ask user request from the server (server → client). */\nexport const AskUserRequestSchema = JsonRpcRequestSchema.extend({\n method: z.literal(DroidClientMethod.ASK_USER),\n params: AskUserRequestParamsSchema,\n});\n\nexport type AskUserRequest = z.infer<typeof AskUserRequestSchema>;\n\n/** A collected answer from the user. */\nexport const AskUserCollectedAnswerSchema = z\n .object({\n index: z.number(),\n question: z.string(),\n answer: z.string(),\n })\n .strict();\n\nexport type AskUserCollectedAnswer = z.infer<\n typeof AskUserCollectedAnswerSchema\n>;\n\n/** Result for droid.ask_user response. */\nexport const AskUserResultSchema = z\n .object({\n cancelled: z.boolean().optional(),\n answers: z.array(AskUserCollectedAnswerSchema),\n })\n .strict();\n\nexport type AskUserResult = z.infer<typeof AskUserResultSchema>;\n\n/** Response to droid.ask_user. */\nexport const AskUserResponseSchema = createResponseSchema(AskUserResultSchema);\nexport type AskUserResponse = z.infer<typeof AskUserResponseSchema>;\n\n/** Union over all server → client methods. */\nconst _CliRequestOrNotificationSchema = z.union([\n SessionNotificationSchema,\n RequestPermissionRequestSchema,\n AskUserRequestSchema,\n]);\n\n/* eslint-disable @typescript-eslint/consistent-type-assertions -- Zod workaround for deep type inference */\nexport const CliRequestOrNotificationSchema: z.ZodType<\n CliRequestOrNotification,\n z.ZodTypeDef,\n unknown\n> = _CliRequestOrNotificationSchema as z.ZodType<\n CliRequestOrNotification,\n z.ZodTypeDef,\n unknown\n>;\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n\nexport type CliRequestOrNotification =\n | SessionNotification\n | RequestPermissionRequest\n | AskUserRequest;\n","/** Re-exported for convenience. */\nexport {\n DEFAULT_REQUEST_TIMEOUT,\n SESSION_INIT_TIMEOUT,\n MCP_AUTH_TIMEOUT,\n} from './schemas/constants.js';\n\n/** Injected at build time via tsup's `define` option. */\nexport const SDK_VERSION: string = process.env.SDK_VERSION || 'unknown';\n\n/** Injected into every `initializeSession` call for backend tracking. */\nexport const SDK_TAG = {\n name: 'sdk' as const,\n metadata: { language: 'typescript' as const, version: SDK_VERSION },\n};\n","export class ConnectionError extends Error {\n readonly cwd: string;\n\n readonly execPath: string;\n\n constructor(message: string, options?: { cwd?: string; execPath?: string }) {\n super(message);\n this.name = 'ConnectionError';\n this.cwd = options?.cwd ?? '';\n this.execPath = options?.execPath ?? '';\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\n\nexport class ProtocolError extends Error {\n readonly code: number | undefined;\n\n readonly data: unknown;\n\n constructor(message: string, options?: { code?: number; data?: unknown }) {\n super(message);\n this.name = 'ProtocolError';\n this.code = options?.code;\n this.data = options?.data;\n Object.setPrototypeOf(this, ProtocolError.prototype);\n }\n}\n\nexport class SessionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'SessionError';\n Object.setPrototypeOf(this, SessionError.prototype);\n }\n}\n\nexport class SessionNotFoundError extends SessionError {\n readonly sessionId: string;\n\n constructor(sessionId: string) {\n super(`Session not found: ${sessionId}`);\n this.name = 'SessionNotFoundError';\n this.sessionId = sessionId;\n Object.setPrototypeOf(this, SessionNotFoundError.prototype);\n }\n}\n\nexport class TimeoutError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'TimeoutError';\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\nexport class ProcessExitError extends Error {\n readonly exitCode: number | null;\n\n readonly signal: string | null;\n\n constructor(\n message: string,\n options?: { exitCode?: number | null; signal?: string | null }\n ) {\n super(message);\n this.name = 'ProcessExitError';\n this.exitCode = options?.exitCode ?? null;\n this.signal = options?.signal ?? null;\n Object.setPrototypeOf(this, ProcessExitError.prototype);\n }\n}\n","import { type ChildProcess, spawn } from 'node:child_process';\nimport * as readline from 'node:readline';\n\nimport { ConnectionError, ProcessExitError } from './errors.js';\nimport type {\n DroidClientTransport,\n ErrorCallback,\n MessageCallback,\n ProcessTransportOptions,\n} from './types.js';\nimport { isRecord } from './utils.js';\n\nconst DEFAULT_EXEC_ARGS = [\n 'exec',\n '--input-format',\n 'stream-jsonrpc',\n '--output-format',\n 'stream-jsonrpc',\n];\n\nconst DEFAULT_GRACE_PERIOD_MS = 5_000;\n\nexport class ProcessTransport implements DroidClientTransport {\n private readonly execPath: string;\n private readonly execArgs: string[];\n private readonly cwd: string | undefined;\n private readonly env: Record<string, string> | undefined;\n private readonly gracePeriodMs: number;\n\n private childProcess: ChildProcess | null = null;\n private readlineInterface: readline.Interface | null = null;\n private messageHandler: MessageCallback | null = null;\n private errorHandler: ErrorCallback | null = null;\n\n /** Once set, all subsequent `send()` calls throw immediately. */\n private processError: Error | null = null;\n\n /** Serializes stdin writes to prevent interleaving. */\n private writeChain: Promise<void> = Promise.resolve();\n\n private _isConnected = false;\n private isClosing = false;\n\n constructor(options: ProcessTransportOptions = {}) {\n this.execPath = options.execPath ?? 'droid';\n this.execArgs = options.execArgs\n ? [...options.execArgs]\n : [...DEFAULT_EXEC_ARGS];\n this.cwd = options.cwd;\n this.env = options.env;\n this.gracePeriodMs =\n (options.gracePeriod ?? DEFAULT_GRACE_PERIOD_MS / 1_000) * 1_000;\n }\n\n get isConnected(): boolean {\n return this._isConnected;\n }\n\n async connect(): Promise<void> {\n if (this._isConnected) {\n throw new ConnectionError('Transport already connected', {\n execPath: this.execPath,\n });\n }\n\n this.processError = null;\n this.isClosing = false;\n this.writeChain = Promise.resolve();\n\n const mergedEnv = this.env ? { ...process.env, ...this.env } : undefined;\n\n try {\n this.childProcess = spawn(this.execPath, this.execArgs, {\n stdio: ['pipe', 'pipe', 'pipe'],\n cwd: this.cwd,\n env: mergedEnv,\n });\n } catch (err: unknown) {\n const message =\n err instanceof Error\n ? `Failed to start droid process: ${err.message}`\n : 'Failed to start droid process';\n throw new ConnectionError(message, {\n execPath: this.execPath,\n cwd: this.cwd,\n });\n }\n\n this._isConnected = true;\n this.setupHandlers();\n }\n\n send(message: Record<string, unknown>): void {\n if (this.processError) {\n throw this.processError;\n }\n if (!this._isConnected || !this.childProcess || !this.childProcess.stdin) {\n throw new ConnectionError('Transport not connected', {\n execPath: this.execPath,\n });\n }\n\n const line = JSON.stringify(message) + '\\n';\n\n // Chain writes to prevent interleaving on concurrent calls.\n const previousChain = this.writeChain;\n\n this.writeChain = (async () => {\n // Wait for the previous write to finish (ignore its error — it's\n // already been reported to the caller of the previous send()).\n await previousChain.catch(() => {});\n\n if (\n !this.childProcess ||\n !this.childProcess.stdin ||\n this.childProcess.killed ||\n this.isClosing\n ) {\n throw new ConnectionError('Process disconnected before write', {\n execPath: this.execPath,\n });\n }\n\n if (this.processError) {\n throw this.processError;\n }\n\n await new Promise<void>((resolve, reject) => {\n if (!this.childProcess || !this.childProcess.stdin) {\n reject(\n new ConnectionError('Process stdin unavailable', {\n execPath: this.execPath,\n })\n );\n return;\n }\n\n const stdin = this.childProcess.stdin;\n if ('writable' in stdin && !stdin.writable) {\n reject(\n new ConnectionError('Process stdin is not writable', {\n execPath: this.execPath,\n })\n );\n return;\n }\n\n stdin.write(line, (error) => {\n if (error) {\n const msg = error.message || String(error);\n if (msg.includes('EPIPE') || msg.includes('ECONNRESET')) {\n reject(\n new ConnectionError('Process stdin closed during write', {\n execPath: this.execPath,\n })\n );\n } else {\n reject(\n new ConnectionError(\n `Failed to write to process stdin: ${msg}`,\n { execPath: this.execPath }\n )\n );\n }\n } else {\n resolve();\n }\n });\n });\n })();\n }\n\n onMessage(callback: MessageCallback): void {\n this.messageHandler = callback;\n }\n\n onError(callback: ErrorCallback): void {\n this.errorHandler = callback;\n }\n\n async close(): Promise<void> {\n if (this.isClosing) {\n return;\n }\n\n this.isClosing = true;\n this._isConnected = false;\n\n const proc = this.childProcess;\n this.childProcess = null;\n\n if (this.readlineInterface) {\n this.readlineInterface.close();\n this.readlineInterface = null;\n }\n\n if (proc && proc.exitCode === null && !proc.killed) {\n await new Promise<void>((resolve) => {\n const timeout = setTimeout(() => {\n // Escalate to SIGKILL\n if (proc.exitCode === null && !proc.killed) {\n try {\n proc.kill('SIGKILL');\n } catch {\n // Process may already be gone\n }\n }\n }, this.gracePeriodMs);\n\n proc.once('exit', () => {\n clearTimeout(timeout);\n resolve();\n });\n\n // Close stdin first, then SIGTERM\n if (proc.stdin) {\n try {\n proc.stdin.end();\n } catch {\n // Ignore\n }\n }\n\n try {\n proc.kill('SIGTERM');\n } catch {\n // Process may already be gone — resolve immediately\n clearTimeout(timeout);\n resolve();\n }\n });\n }\n\n this.isClosing = false;\n }\n\n private setupHandlers(): void {\n const proc = this.childProcess;\n if (!proc || !proc.stdout) {\n return;\n }\n\n this.readlineInterface = readline.createInterface({\n input: proc.stdout,\n crlfDelay: Infinity,\n });\n\n this.readlineInterface.on('line', (line) => {\n const trimmed = line.trim();\n if (!trimmed) {\n return;\n }\n\n // Protocol messages are JSON objects, not JSON-RPC batch arrays.\n if (trimmed.startsWith('{')) {\n try {\n const parsed: unknown = JSON.parse(trimmed);\n if (this.messageHandler && isRecord(parsed)) {\n this.messageHandler(parsed);\n }\n } catch {\n // Malformed JSON — skip silently\n }\n }\n });\n\n proc.on('error', (error) => {\n this.processError = new ConnectionError(\n `Failed to start droid process: ${error.message}`,\n {\n execPath: this.execPath,\n cwd: this.cwd,\n }\n );\n this._isConnected = false;\n if (!this.isClosing && this.errorHandler) {\n this.errorHandler(this.processError);\n }\n });\n\n proc.on('exit', (code, signal) => {\n if (this.readlineInterface) {\n this.readlineInterface.close();\n this.readlineInterface = null;\n }\n\n this._isConnected = false;\n\n if (!this.isClosing) {\n const exitCode = code ?? null;\n const exitSignal = signal ?? null;\n\n let message: string;\n if (exitSignal) {\n message = `Droid process was killed (${exitSignal})`;\n } else if (exitCode !== null && exitCode !== 0) {\n message = `Droid process exited unexpectedly (exit code ${exitCode})`;\n } else if (exitCode === 0) {\n message = 'Droid process exited normally';\n } else {\n message = 'Droid process exited unexpectedly';\n }\n\n this.processError = new ProcessExitError(message, {\n exitCode,\n signal: exitSignal,\n });\n\n if (this.errorHandler) {\n this.errorHandler(this.processError);\n }\n }\n });\n }\n}\n","/** Shared low-level utilities with no other module dependencies. */\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { v4 as uuidv4 } from 'uuid';\n\nimport {\n ConnectionError,\n ProtocolError,\n SessionNotFoundError,\n TimeoutError,\n} from './errors.js';\nimport {\n DEFAULT_REQUEST_TIMEOUT,\n FACTORY_PROTOCOL_VERSION,\n JSONRPC_VERSION,\n LEGACY_FACTORY_API_VERSION,\n} from './schemas/constants.js';\nimport {\n DroidClientMethod,\n JsonRpcMessageType,\n JsonRpcErrorCode,\n ServerRequestHandlerType,\n ToolConfirmationOutcome,\n} from './schemas/enums.js';\nimport {\n AskUserRequestParamsSchema,\n AskUserResultSchema,\n RequestPermissionRequestParamsSchema,\n RequestPermissionResultSchema,\n SessionNotificationParamsSchema,\n} from './schemas/server.js';\nimport type {\n AskUserRequestParams,\n AskUserResult,\n RequestPermissionHandlerResult,\n RequestPermissionRequestParams,\n RequestPermissionResult,\n} from './schemas/server.js';\nimport { JsonRpcMessageSchema, type JsonRpcError } from './schemas/shared.js';\nimport type { DroidClientTransport } from './types.js';\n\nexport type PermissionHandler = (\n params: RequestPermissionRequestParams\n) => RequestPermissionHandlerResult | Promise<RequestPermissionHandlerResult>;\n\nexport type AskUserHandler = (\n params: AskUserRequestParams\n) => AskUserResult | Promise<AskUserResult>;\n\nexport type NotificationCallback = (\n notification: Record<string, unknown>\n) => void;\n\nexport interface NotificationFilter {\n type?: string;\n}\n\ninterface PendingRequest {\n readonly method: string;\n readonly requestId: string;\n readonly params: Record<string, unknown>;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: Error) => void;\n readonly timer: ReturnType<typeof setTimeout>;\n}\n\nexport interface NotificationListener {\n readonly callback: NotificationCallback;\n readonly filter?: NotificationFilter;\n}\n\n/** Dispatch a notification to matching listeners, swallowing listener errors. */\nexport function dispatchNotification(\n notification: Record<string, unknown>,\n listeners: Iterable<NotificationListener>\n): void {\n let notificationType: string | undefined;\n const parsed = SessionNotificationParamsSchema.safeParse(\n notification['params']\n );\n if (parsed.success) {\n notificationType = parsed.data.notification.type;\n }\n\n for (const listener of listeners) {\n if (\n listener.filter?.type != null &&\n listener.filter.type !== notificationType\n ) {\n continue;\n }\n\n try {\n listener.callback(notification);\n } catch {\n // Notification listener raised — don't crash the dispatch loop\n }\n }\n}\n\n/** Default method map for exec-mode (droid.*) server-to-client requests. */\nconst DEFAULT_SERVER_REQUEST_METHOD_MAP: Record<\n string,\n ServerRequestHandlerType\n> = {\n [DroidClientMethod.REQUEST_PERMISSION]: ServerRequestHandlerType.Permission,\n [DroidClientMethod.ASK_USER]: ServerRequestHandlerType.AskUser,\n};\n\nexport class ProtocolEngine {\n private readonly _transport: DroidClientTransport;\n private readonly _defaultTimeout: number;\n private readonly _serverRequestMethodMap: Record<\n string,\n ServerRequestHandlerType\n >;\n\n private readonly _pendingRequests = new Map<string, PendingRequest>();\n private readonly _notificationListeners = new Set<NotificationListener>();\n private _permissionHandler: PermissionHandler | null = null;\n private _askUserHandler: AskUserHandler | null = null;\n private _transportError: Error | null = null;\n private _closed = false;\n\n constructor(options: {\n transport: DroidClientTransport;\n defaultTimeout?: number;\n /**\n * Maps incoming server-to-client request method strings to handler types.\n * Defaults to `{ 'droid.request_permission': 'permission', 'droid.ask_user': 'askUser' }`.\n * Override for daemon mode: `{ 'daemon.request_permission': 'permission', ... }`.\n */\n serverRequestMethodMap?: Record<string, ServerRequestHandlerType>;\n }) {\n this._transport = options.transport;\n this._defaultTimeout = options.defaultTimeout ?? DEFAULT_REQUEST_TIMEOUT;\n this._serverRequestMethodMap =\n options.serverRequestMethodMap ?? DEFAULT_SERVER_REQUEST_METHOD_MAP;\n\n this._transport.onMessage((message: Record<string, unknown>) => {\n this._handleMessage(message);\n });\n this._transport.onError((error: Error) => {\n this._handleTransportError(error);\n });\n }\n\n async sendRequest(\n method: string,\n params: Record<string, unknown>,\n timeout?: number\n ): Promise<unknown> {\n if (this._closed) {\n throw new ConnectionError('Protocol engine is closed');\n }\n\n if (this._transportError !== null) {\n throw new ConnectionError(\n `Transport error: ${this._transportError.message}`\n );\n }\n\n const effectiveTimeout = timeout ?? this._defaultTimeout;\n const requestId = uuidv4();\n\n const envelope = {\n jsonrpc: JSONRPC_VERSION,\n factoryApiVersion: LEGACY_FACTORY_API_VERSION,\n factoryProtocolVersion: FACTORY_PROTOCOL_VERSION,\n type: JsonRpcMessageType.Request,\n id: requestId,\n method,\n params,\n };\n\n // Create a promise that will be resolved when we get a matching response\n return new Promise<unknown>((resolve, reject) => {\n const timer = setTimeout(() => {\n this._pendingRequests.delete(requestId);\n reject(\n new TimeoutError(\n `Request ${method} timed out after ${effectiveTimeout}ms`\n )\n );\n }, effectiveTimeout);\n\n const pending: PendingRequest = {\n method,\n requestId,\n params,\n resolve,\n reject,\n timer,\n };\n this._pendingRequests.set(requestId, pending);\n\n try {\n this._transport.send(envelope);\n } catch (sendError) {\n clearTimeout(timer);\n this._pendingRequests.delete(requestId);\n if (sendError instanceof Error) {\n reject(\n new ConnectionError(`Failed to send request: ${sendError.message}`)\n );\n } else {\n reject(new ConnectionError('Failed to send request'));\n }\n }\n });\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n const listener: NotificationListener = { callback, filter };\n this._notificationListeners.add(listener);\n\n let unsubscribed = false;\n return () => {\n if (!unsubscribed) {\n unsubscribed = true;\n this._notificationListeners.delete(listener);\n }\n };\n }\n\n setPermissionHandler(handler: PermissionHandler): void {\n this._permissionHandler = handler;\n }\n\n clearPermissionHandler(): void {\n this._permissionHandler = null;\n }\n\n /**\n * Register a handler for server→client ask-user requests.\n *\n * The handler receives the request params and should return\n * a result object with `cancelled` and `answers` keys.\n *\n * Replaces any previously registered handler.\n */\n setAskUserHandler(handler: AskUserHandler): void {\n this._askUserHandler = handler;\n }\n\n clearAskUserHandler(): void {\n this._askUserHandler = null;\n }\n\n get isHealthy(): boolean {\n return !this._closed && this._transportError === null;\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n const error = new ConnectionError(\n 'Protocol engine closed: pending requests cancelled'\n );\n this._rejectAllPending(error);\n\n this._permissionHandler = null;\n this._askUserHandler = null;\n this._notificationListeners.clear();\n\n await this._transport.close();\n }\n\n private _handleMessage(raw: Record<string, unknown>): void {\n const parsed = JsonRpcMessageSchema.safeParse(raw);\n\n if (!parsed.success) {\n // Malformed message — silently ignore\n return;\n }\n\n const msg = parsed.data;\n switch (msg.type) {\n case JsonRpcMessageType.Response:\n this._handleResponse(msg.id, msg.result, msg.error);\n break;\n case JsonRpcMessageType.Notification:\n this._handleNotification(msg);\n break;\n case JsonRpcMessageType.Request:\n void this._handleServerRequest(msg.method, msg.id, msg.params);\n break;\n }\n }\n\n private _handleResponse(\n responseId: string | null,\n result: unknown,\n error: JsonRpcError | undefined\n ): void {\n if (responseId == null) {\n return;\n }\n\n const pending = this._pendingRequests.get(responseId);\n\n if (pending == null) {\n return;\n }\n\n this._pendingRequests.delete(responseId);\n clearTimeout(pending.timer);\n\n if (error != null) {\n if (error.code === JsonRpcErrorCode.ENTITY_NOT_FOUND) {\n const sessionId = String(\n pending.params['sessionId'] ?? pending.requestId\n );\n pending.reject(new SessionNotFoundError(sessionId));\n return;\n }\n\n pending.reject(\n new ProtocolError(error.message, { code: error.code, data: error.data })\n );\n return;\n }\n\n pending.resolve(result);\n }\n\n private _handleNotification(notification: Record<string, unknown>): void {\n dispatchNotification(notification, this._notificationListeners);\n }\n\n private async _handleServerRequest(\n method: string,\n requestId: string,\n params: unknown\n ): Promise<void> {\n const handlerType = this._serverRequestMethodMap[method];\n if (handlerType === ServerRequestHandlerType.Permission) {\n await this._handlePermissionRequest(requestId, params);\n } else if (handlerType === ServerRequestHandlerType.AskUser) {\n await this._handleAskUserRequest(requestId, params);\n }\n }\n\n private async _handlePermissionRequest(\n requestId: string,\n params: unknown\n ): Promise<void> {\n const handler = this._permissionHandler;\n\n if (handler == null) {\n // Default: Cancel\n this._sendResponse(\n requestId,\n RequestPermissionResultSchema.parse({\n selectedOption: ToolConfirmationOutcome.Cancel,\n })\n );\n return;\n }\n\n try {\n const parsedParams = RequestPermissionRequestParamsSchema.parse(params);\n const selection = await Promise.resolve(handler(parsedParams));\n const result =\n typeof selection === 'string'\n ? { selectedOption: selection }\n : selection;\n this._sendResponse(\n requestId,\n RequestPermissionResultSchema.parse(result)\n );\n } catch (exc) {\n const errorMessage = exc instanceof Error ? exc.message : String(exc);\n this._sendErrorResponse(\n requestId,\n JsonRpcErrorCode.INTERNAL_ERROR,\n 'Failed to handle permission request',\n errorMessage\n );\n }\n }\n\n private async _handleAskUserRequest(\n requestId: string,\n params: unknown\n ): Promise<void> {\n const handler = this._askUserHandler;\n\n if (handler == null) {\n // Default: cancelled=true\n this._sendResponse(\n requestId,\n AskUserResultSchema.parse({ cancelled: true, answers: [] })\n );\n return;\n }\n\n try {\n const parsedParams = AskUserRequestParamsSchema.parse(params);\n const result = await Promise.resolve(handler(parsedParams));\n this._sendResponse(requestId, AskUserResultSchema.parse(result));\n } catch (exc) {\n const errorMessage = exc instanceof Error ? exc.message : String(exc);\n this._sendErrorResponse(\n requestId,\n JsonRpcErrorCode.INTERNAL_ERROR,\n 'Failed to handle ask-user request',\n errorMessage\n );\n }\n }\n\n /**\n * Handle a transport error.\n * Sets the sticky transport error and rejects all pending requests.\n * The original error is preserved as `cause` on the ConnectionError.\n */\n private _handleTransportError(error: Error): void {\n this._transportError = error;\n const connectionError = new ConnectionError(\n `Transport error: ${error.message}`\n );\n connectionError.cause = error;\n this._rejectAllPending(connectionError);\n }\n\n private _sendResponse(\n requestId: string,\n result: RequestPermissionResult | AskUserResult\n ): void {\n const response: Record<string, unknown> = {\n jsonrpc: JSONRPC_VERSION,\n factoryApiVersion: LEGACY_FACTORY_API_VERSION,\n factoryProtocolVersion: FACTORY_PROTOCOL_VERSION,\n type: JsonRpcMessageType.Response,\n id: requestId,\n result,\n };\n this._sendBestEffort(response);\n }\n\n private _sendErrorResponse(\n requestId: string,\n code: number,\n message: string,\n data?: unknown\n ): void {\n const errorObj: Record<string, unknown> = { code, message };\n if (data !== undefined) {\n errorObj['data'] = data;\n }\n\n const response: Record<string, unknown> = {\n jsonrpc: JSONRPC_VERSION,\n factoryApiVersion: LEGACY_FACTORY_API_VERSION,\n factoryProtocolVersion: FACTORY_PROTOCOL_VERSION,\n type: JsonRpcMessageType.Response,\n id: requestId,\n error: errorObj,\n };\n this._sendBestEffort(response);\n }\n\n private _sendBestEffort(message: Record<string, unknown>): void {\n try {\n this._transport.send(message);\n } catch {\n // The transport is already failing; dropping the reply is safer than\n // throwing from a server→client callback path.\n }\n }\n\n private _rejectAllPending(error: Error): void {\n const pending = new Map(this._pendingRequests);\n this._pendingRequests.clear();\n\n for (const req of pending.values()) {\n clearTimeout(req.timer);\n req.reject(error);\n }\n }\n}\n","// Barrel for the protocol source-of-truth modules.\n\nexport * from './constants.js';\nexport * from './enums.js';\nexport * from './json-rpc.js';\nexport * from './host.js';\nexport * from './session.js';\nexport * from './session-source.js';\nexport * from './messages.js';\nexport * from './model-settings.js';\nexport * from './settings.js';\nexport * from './general-settings.js';\nexport * from './loop.js';\nexport * from './selectable-list-item.js';\nexport * from './custom-models.js';\nexport * from './mcp.js';\nexport * from './mission-decomposition.js';\nexport * from './cli.js';\nexport * from './client.js';\n\n// TIER-4d aux leaves\nexport * from './automations-enums.js';\nexport * from './automations.js';\nexport * from './crons.js';\nexport * from './session-summary.js';\nexport * from './session-tools.js';\nexport * from './session-settings-schema.js';\nexport * from './session-settings-types.js';\nexport * from './policy.js';\nexport * from './tools-enums.js';\nexport * from './tools.js';\nexport * from './updater.js';\n\n// `./usage.js` defines its own `TokenUsageSchema` whose shape (snake-cased\n// integer fields) differs from the one in `./session.js`. To keep both\n// symbols distinct on the public barrel, `./usage.js` is re-exported under a\n// namespace alias rather than as a top-level wildcard.\nexport * as usage from './usage.js';\n\nexport * as daemon from './daemon/index.js';\n","// Protocol enums (shared, droid, session, llm, settings, sources).\n\nexport enum JsonRpcMessageType {\n Request = 'request',\n Response = 'response',\n Notification = 'notification',\n}\n\n/**\n * Standard JSON-RPC 2.0 error codes\n * @see https://www.jsonrpc.org/specification#error_object\n */\nexport enum JsonRpcErrorCode {\n PARSE_ERROR = -32700,\n INVALID_REQUEST = -32600,\n METHOD_NOT_FOUND = -32601,\n INVALID_PARAMS = -32602,\n INTERNAL_ERROR = -32603,\n AUTHENTICATION_ERROR = -32001,\n ENTITY_NOT_FOUND = -32004,\n /** Session's CLI process has disconnected or died */\n SESSION_DISCONNECTED = -32005,\n}\n\n/**\n * The interaction mode determines how Droid operates.\n * - Auto: Droid can execute actions based on autonomy level\n * - Spec: Droid is in planning/research mode only (read-only operations)\n * - Mission: Droid orchestrates missions with read-only tools and orchestrator controls\n */\nexport enum DroidInteractionMode {\n Auto = 'auto',\n Spec = 'spec',\n /** @deprecated Use Mission instead. Kept for protocol compatibility. */\n AGI = 'agi',\n Mission = 'mission',\n}\n\n/**\n * Supported operating system platforms\n */\nexport enum Platform {\n Darwin = 'darwin',\n Windows = 'win32',\n Linux = 'linux',\n}\n\n/**\n * Autonomy level determines what actions Droid can perform without user confirmation.\n * - Off: User controls all actions (confirmation required for everything)\n * - Low: Allow file edits and read-only commands\n * - Medium: Allow reversible commands\n * - High: Allow all commands without prompts\n */\nexport enum AutonomyLevel {\n Off = 'off',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n}\n\n/**\n * Combined autonomy mode for backward compatibility.\n * This is derived from DroidInteractionMode + AutonomyLevel:\n * - Normal = Auto + Off\n * - Spec = Spec mode (autonomy level ignored)\n * - AutoLow = Auto + Low\n * - AutoMedium = Auto + Medium\n * - AutoHigh = Auto + High\n * @deprecated Use DroidInteractionMode + AutonomyLevel instead\n */\nexport enum AutonomyMode {\n Normal = 'normal',\n Spec = 'spec',\n AutoLow = 'auto-low',\n AutoMedium = 'auto-medium',\n AutoHigh = 'auto-high',\n}\n\n// ---------------------------------------------------------------------------\n// droid/enums.ts (leaf — zero imports)\n// ---------------------------------------------------------------------------\n\n// Tool confirmation outcome options (possible user responses to permission requests)\nexport enum ToolConfirmationOutcome {\n ProceedOnce = 'proceed_once',\n ProceedAlways = 'proceed_always',\n /** Like ProceedAlways, but persists the exact file path instead of its parent directory. */\n ProceedAlwaysForExactPath = 'proceed_always_file',\n ProceedAutoRun = 'proceed_auto_run',\n ProceedAutoRunLow = 'proceed_auto_run_low',\n ProceedAutoRunMedium = 'proceed_auto_run_medium',\n ProceedAutoRunHigh = 'proceed_auto_run_high',\n ProceedNewSession = 'proceed_new_session',\n ProceedNewSessionLow = 'proceed_new_session_low',\n ProceedNewSessionMedium = 'proceed_new_session_medium',\n ProceedNewSessionHigh = 'proceed_new_session_high',\n ProceedEdit = 'proceed_edit',\n /** MCP: Persist approval for specific tool(s) across sessions */\n ProceedAlwaysTools = 'proceed_always_tools',\n /** MCP: Persist approval for all tools from a server across sessions */\n ProceedAlwaysServer = 'proceed_always_server',\n Cancel = 'cancel',\n}\n\n// Tool confirmation type (which tool is requesting permission)\nexport enum ToolConfirmationType {\n Edit = 'edit',\n Execute = 'exec',\n Create = 'create',\n AskUser = 'ask_user',\n ExitSpecMode = 'exit_spec_mode',\n ProposeMission = 'propose_mission',\n StartMissionRun = 'start_mission_run',\n ApplyPatch = 'apply_patch',\n McpTool = 'mcp_tool',\n SandboxViolation = 'sandbox_violation',\n}\n\n// Sandbox violation type (filesystem read, filesystem write, or network)\nexport enum SandboxViolationType {\n FilesystemRead = 'filesystem-read',\n FilesystemWrite = 'filesystem-write',\n Network = 'network',\n}\n\n// Sandbox violation reason (why the access was denied)\nexport enum SandboxViolationReason {\n DenyList = 'deny-list',\n NotAllowed = 'not-allowed',\n}\n\n// Sandbox operation type (the type of operation that was blocked)\nexport enum SandboxOperationType {\n Read = 'read',\n Write = 'write',\n Network = 'network',\n}\n\n// Droid server methods (client to server communication)\nexport enum DroidServerMethod {\n INITIALIZE_SESSION = 'droid.initialize_session',\n LOAD_SESSION = 'droid.load_session',\n ADD_USER_MESSAGE = 'droid.add_user_message',\n RESOLVE_QUEUED_USER_MESSAGE = 'droid.resolve_queued_user_message',\n CLOSE_SESSION = 'droid.close_session',\n INTERRUPT_SESSION = 'droid.interrupt_session',\n KILL_WORKER_SESSION = 'droid.kill_worker_session',\n UPDATE_SESSION_SETTINGS = 'droid.update_session_settings',\n // MCP server management\n TOGGLE_MCP_SERVER = 'droid.toggle_mcp_server',\n AUTHENTICATE_MCP_SERVER = 'droid.authenticate_mcp_server',\n CANCEL_MCP_AUTH = 'droid.cancel_mcp_auth',\n CLEAR_MCP_AUTH = 'droid.clear_mcp_auth',\n ADD_MCP_SERVER = 'droid.add_mcp_server',\n REMOVE_MCP_SERVER = 'droid.remove_mcp_server',\n LIST_MCP_REGISTRY = 'droid.list_mcp_registry',\n LIST_MCP_TOOLS = 'droid.list_mcp_tools',\n LIST_TOOLS = 'droid.list_tools',\n LIST_MCP_SERVERS = 'droid.list_mcp_servers',\n TOGGLE_MCP_TOOL = 'droid.toggle_mcp_tool',\n SUBMIT_MCP_AUTH_CODE = 'droid.submit_mcp_auth_code',\n // Skills\n LIST_SKILLS = 'droid.list_skills',\n // Custom slash commands\n LIST_COMMANDS = 'droid.list_commands',\n // Bug reports\n SUBMIT_BUG_REPORT = 'droid.submit_bug_report',\n // Rewind\n GET_REWIND_INFO = 'droid.get_rewind_info',\n EXECUTE_REWIND = 'droid.execute_rewind',\n // Compaction\n COMPACT_SESSION = 'droid.compact_session',\n // Fork\n FORK_SESSION = 'droid.fork_session',\n // Rename\n RENAME_SESSION = 'droid.rename_session',\n // Context stats\n GET_CONTEXT_STATS = 'droid.get_context_stats',\n // Detailed context breakdown for the /context modal\n GET_CONTEXT_BREAKDOWN = 'droid.get_context_breakdown',\n // Cache warmup\n WARMUP_CACHE = 'droid.warmup_cache',\n}\n\nexport enum QueuePlacement {\n EndOfTurn = 'end_of_turn',\n EndOfLoop = 'end_of_loop',\n}\n\nexport enum ResolveQueuedUserMessageAction {\n UpdateQueue = 'update_queue',\n Delete = 'delete',\n}\n\n// Droid client methods (server to client communication)\nexport enum DroidClientMethod {\n SESSION_NOTIFICATION = 'droid.session_notification',\n REQUEST_PERMISSION = 'droid.request_permission',\n ASK_USER = 'droid.ask_user',\n}\n\n// Session notification types\nexport enum SessionNotificationType {\n TOOL_RESULT = 'tool_result',\n TOOL_PROGRESS_UPDATE = 'tool_progress_update',\n CREATE_MESSAGE = 'create_message',\n ERROR = 'error',\n DROID_WORKING_STATE_CHANGED = 'droid_working_state_changed',\n SESSION_COMPACTED = 'session_compacted',\n LOOP_STATE_CHANGED = 'loop_state_changed',\n PERMISSION_RESOLVED = 'permission_resolved',\n SETTINGS_UPDATED = 'settings_updated',\n SESSION_TITLE_UPDATED = 'session_title_updated',\n MCP_STATUS_CHANGED = 'mcp_status_changed',\n ASSISTANT_TEXT_DELTA = 'assistant_text_delta',\n ASSISTANT_TEXT_COMPLETE = 'assistant_text_complete',\n STRUCTURED_OUTPUT = 'structured_output',\n THINKING_TEXT_DELTA = 'thinking_text_delta',\n THINKING_TEXT_COMPLETE = 'thinking_text_complete',\n SESSION_TOKEN_USAGE_CHANGED = 'session_token_usage_changed',\n MISSION_STATE_CHANGED = 'mission_state_changed',\n MISSION_FEATURES_CHANGED = 'mission_features_changed',\n MISSION_PROGRESS_ENTRY = 'mission_progress_entry',\n MISSION_HEARTBEAT = 'mission_heartbeat',\n MISSION_WORKER_STARTED = 'mission_worker_started',\n MISSION_WORKER_COMPLETED = 'mission_worker_completed',\n MCP_AUTH_REQUIRED = 'mcp_auth_required',\n MCP_AUTH_COMPLETED = 'mcp_auth_completed',\n HOOK_EXECUTION_STARTED = 'hook_execution_started',\n HOOK_EXECUTION_COMPLETED = 'hook_execution_completed',\n TOOL_CALL = 'tool_call',\n QUEUED_MESSAGES_DISCARDED = 'queued_messages_discarded',\n /**\n * Internal daemon keep-alive signal emitted while a long-running tool\n * (e.g. Execute) is actively executing but not streaming output. Used by\n * the daemon to refresh session inactivity timeouts. Not forwarded to\n * external clients.\n */\n TOOL_EXECUTION_HEARTBEAT = 'tool_execution_heartbeat',\n}\n\nexport enum StructuredOutputErrorCode {\n MissingStructuredOutput = 'missing_structured_output',\n InvalidStructuredOutput = 'invalid_structured_output',\n InvalidSchema = 'invalid_schema',\n SchemaValidationFailed = 'schema_validation_failed',\n}\n\nexport enum McpAuthOutcome {\n Success = 'success',\n Cancelled = 'cancelled',\n Failed = 'failed',\n}\n\n// MCP server connection status\nexport enum McpServerStatus {\n Connecting = 'connecting',\n Connected = 'connected',\n Disconnected = 'disconnected',\n Failed = 'failed',\n Disabled = 'disabled',\n}\n\n// MCP server transport type\nexport enum McpServerType {\n Stdio = 'stdio',\n Http = 'http',\n Sse = 'sse',\n}\n\n// Overall MCP initialization status\nexport enum McpStatus {\n NotInitialized = 'not-initialized',\n Initializing = 'initializing',\n Ready = 'ready',\n NoServers = 'no-servers',\n Failed = 'failed',\n}\n\n// Error types for error notifications\nexport enum DroidErrorType {\n CONNECTION_ERROR = 'ConnectionError',\n PROTOCOL_ERROR = 'ProtocolError',\n SESSION_ERROR = 'SessionError',\n TIMEOUT_ERROR = 'TimeoutError',\n DROID_CLIENT_ERROR = 'DroidClientError',\n PROCESS_EXIT_ERROR = 'ProcessExitError',\n ERROR = 'Error',\n}\n\n// Droid working state (represents what the agent is currently doing)\nexport enum DroidWorkingState {\n Idle = 'idle',\n Thinking = 'thinking',\n StreamingAssistantMessage = 'streaming_assistant_message',\n WaitingForToolConfirmation = 'waiting_for_tool_confirmation',\n ExecutingTool = 'executing_tool',\n CompactingConversation = 'compacting_conversation',\n}\n\nexport enum DroidLoopStatus {\n Waiting = 'waiting',\n Running = 'running',\n Due = 'due',\n Stopped = 'stopped',\n Error = 'error',\n}\n\nexport enum DroidLoopStopReason {\n UserStopped = 'user_stopped',\n ManualMessage = 'manual_message',\n Interrupted = 'interrupted',\n SessionClosed = 'session_closed',\n ProcessExited = 'process_exited',\n Error = 'error',\n}\n\nexport enum ContextStatsAccuracy {\n Exact = 'exact',\n Estimated = 'estimated',\n}\n\nexport enum ToolExecutionRenderStatus {\n Streaming = 'streaming',\n Pending = 'pending',\n Executing = 'executing',\n Completed = 'completed',\n Error = 'error',\n}\n\n// Session type for mission decomposition (orchestrator manages workers)\nexport enum DecompSessionType {\n Orchestrator = 'orchestrator',\n Worker = 'worker',\n}\n\n/** Mission state enum (used by orchestrator mission runner). */\nexport enum MissionState {\n /** Idle. Waiting for user to send a message. */\n AwaitingInput = 'awaiting_input',\n /** Orchestrator is creating mission artifacts after user accepted proposal. */\n Initializing = 'initializing',\n /** Runner is active, spawning/monitoring workers. User input disabled. */\n Running = 'running',\n /** User paused execution. Resumable. */\n Paused = 'paused',\n /** Worker returned control or failed. Orchestrator acts next. */\n OrchestratorTurn = 'orchestrator_turn',\n /** All features done. Terminal state. */\n Completed = 'completed',\n}\n\n/** Feature status enum (mirrors orchestrator feature lifecycle). */\nexport enum FeatureStatus {\n Pending = 'pending',\n InProgress = 'in_progress',\n Completed = 'completed',\n Cancelled = 'cancelled',\n}\n\n/** Success state for feature completion. */\nexport enum FeatureSuccessState {\n Success = 'success',\n Partial = 'partial',\n Failure = 'failure',\n}\n\n/** Issue severity for discovered issues. */\nexport enum IssueSeverity {\n Blocking = 'blocking',\n NonBlocking = 'non_blocking',\n Suggestion = 'suggestion',\n}\n\n/** Dismissal item type. */\nexport enum DismissalType {\n DiscoveredIssue = 'discovered_issue',\n CriticalContext = 'critical_context',\n IncompleteWork = 'incomplete_work',\n}\n\n/** Progress log entry type. */\nexport enum ProgressLogEntryType {\n MissionAccepted = 'mission_accepted',\n MissionPaused = 'mission_paused',\n MissionResumed = 'mission_resumed',\n MissionRunStarted = 'mission_run_started',\n WorkerStarted = 'worker_started',\n WorkerSelectedFeature = 'worker_selected_feature',\n WorkerCompleted = 'worker_completed',\n WorkerFailed = 'worker_failed',\n WorkerPaused = 'worker_paused',\n HandoffItemsDismissed = 'handoff_items_dismissed',\n MilestoneValidationTriggered = 'milestone_validation_triggered',\n}\n\n/** Structured failure cause used by orchestrators to branch on auto-pause vs requeue. */\nexport enum WorkerFailureReason {\n UnrecoverableUsage402 = 'unrecoverable_usage_402',\n}\n\n/** Structured cause for automatically-triggered mission pauses. */\nexport enum MissionPauseReason {\n UnrecoverableUsage402 = 'unrecoverable_usage_402',\n}\n\n/**\n * Color-key discriminators for the `/context` window usage breakdown. Each key\n * maps to a CSS variable in the rendering surface (CLI chalk colors or web\n * design tokens), so adding a new category requires updating both ends.\n */\nexport enum ContextCategoryColorKey {\n SystemPrompt = 'systemPrompt',\n SystemTools = 'systemTools',\n McpTools = 'mcpTools',\n UserInfo = 'userInfo',\n AgentsMd = 'agentsMd',\n CustomAgents = 'customAgents',\n Skills = 'skills',\n Messages = 'messages',\n}\n\n// ---------------------------------------------------------------------------\n// sessionV2/messages/enums.ts\n// ---------------------------------------------------------------------------\n\nexport enum MessageVisibility {\n Both = 'both',\n LLMOnly = 'llm_only',\n UserOnly = 'user_only',\n}\n\nexport enum MessageRoleNoSystem {\n User = 'user',\n Assistant = 'assistant',\n Tool = 'tool',\n}\n\nexport enum MessageRole {\n User = 'user',\n Assistant = 'assistant',\n Tool = 'tool',\n System = 'system',\n}\n\nexport enum MessageContentBlockType {\n Text = 'text',\n Image = 'image',\n Thinking = 'thinking',\n RedactedThinking = 'redacted_thinking',\n ToolUse = 'tool_use',\n ToolResult = 'tool_result',\n Document = 'document',\n}\n\nexport enum DocumentSourceType {\n Base64 = 'base64',\n Text = 'text',\n}\n\n// ---------------------------------------------------------------------------\n// session/sources/enums.ts\n// ---------------------------------------------------------------------------\n\nexport enum SessionPlatform {\n Slack = 'slack',\n Web = 'web',\n Api = 'api',\n SessionsApi = 'sessions_api',\n Linear = 'linear',\n ReadinessRemediation = 'readiness-remediation',\n ReadinessEvaluation = 'readiness-evaluation',\n Automation = 'automation',\n WikiGeneration = 'wiki-generation',\n WikiCISetup = 'wiki-ci-setup',\n}\n\nexport enum SessionOrigin {\n Web = 'web',\n Desktop = 'desktop',\n CliTui = 'cli_tui',\n CliExec = 'cli_exec',\n CliAcp = 'cli_acp',\n Slack = 'slack',\n Linear = 'linear',\n SessionsApi = 'sessions_api',\n Api = 'api',\n Automation = 'automation',\n ReadinessRemediation = 'readiness-remediation',\n ReadinessEvaluation = 'readiness-evaluation',\n WikiGeneration = 'wiki-generation',\n WikiCiSetup = 'wiki-ci-setup',\n}\n\n// ---------------------------------------------------------------------------\n// llm/enums.ts (leaf subset)\n// ---------------------------------------------------------------------------\n\n/**\n * ModelID enum defines unique identifiers for language models.\n *\n * These IDs are independent of provider (Anthropic, OpenAI, etc.) and reasoning effort (Low, Medium, High).\n * They represent the core model identity that remains consistent regardless of how the model is accessed.\n */\nexport enum ModelID {\n // Claude models\n CLAUDE_SONNET_3_5 = 'claude-3-5-sonnet-20241022',\n CLAUDE_SONNET_3_7 = 'claude-3-7-sonnet-20250219',\n CLAUDE_SONNET_4 = 'claude-sonnet-4-20250514',\n CLAUDE_OPUS_4 = 'claude-opus-4-1-20250805',\n CLAUDE_HAIKU_3_5 = 'claude-3-5-haiku-20241022',\n CLAUDE_SONNET_4_5 = 'claude-sonnet-4-5-20250929',\n CLAUDE_OPUS_4_5 = 'claude-opus-4-5-20251101',\n CLAUDE_HAIKU_4_5 = 'claude-haiku-4-5-20251001',\n CLAUDE_SONNET_4_6 = 'claude-sonnet-4-6',\n CLAUDE_OPUS_4_6 = 'claude-opus-4-6',\n CLAUDE_OPUS_4_6_FAST = 'claude-opus-4-6-fast',\n CLAUDE_OPUS_4_7 = 'claude-opus-4-7',\n CLAUDE_OPUS_4_7_FAST = 'claude-opus-4-7-fast',\n CLAUDE_OPUS_4_8 = 'claude-opus-4-8',\n CLAUDE_OPUS_4_8_FAST = 'claude-opus-4-8-fast',\n ASPEN_0515 = 'aspen-05-15',\n ALMOND_0527 = 'almond-05-27',\n\n // OpenAI models\n GPT_5 = 'gpt-5-2025-08-07',\n GPT_5_MINI = 'gpt-5-mini-2025-08-07',\n GPT_5_NANO = 'gpt-5-nano-2025-08-07',\n GPT_5_CODEX = 'gpt-5-codex',\n GPT_5_1 = 'gpt-5.1',\n GPT_5_1_CODEX = 'gpt-5.1-codex',\n GPT_5_1_CODEX_MAX = 'gpt-5.1-codex-max',\n GPT_5_2 = 'gpt-5.2',\n GPT_5_2_CODEX = 'gpt-5.2-codex',\n GPT_5_3_CODEX = 'gpt-5.3-codex',\n GPT_5_3_CODEX_FAST = 'gpt-5.3-codex-fast',\n GPT_5_4 = 'gpt-5.4',\n GPT_5_4_FAST = 'gpt-5.4-fast',\n GPT_5_4_MINI = 'gpt-5.4-mini',\n GPT_5_5 = 'gpt-5.5',\n GPT_5_5_FAST = 'gpt-5.5-fast',\n GPT_5_5_PRO = 'gpt-5.5-pro',\n OLM_0305 = 'olm-03-05',\n ORBIT_0409 = 'orbit-04-09',\n OLIVE_0522 = 'olive-05-22',\n ORIEL_0601 = 'oriel-06-01',\n OXIDE_0601 = 'oxide-06-01',\n OXBOW_0601 = 'oxbow-06-01',\n OCELOT_0601 = 'ocelot-06-01',\n\n // Google models\n GEMINI_2_5_FLASH = 'gemini-2.5-flash',\n GEMINI_2_5_PRO = 'gemini-2.5-pro',\n GEMINI_3_PRO = 'gemini-3-pro-preview',\n GEMINI_3_FLASH = 'gemini-3-flash-preview',\n GEMINI_3_1_PRO = 'gemini-3.1-pro-preview',\n GEMINI_3_5_FLASH = 'gemini-3.5-flash',\n GANTRY_0507 = 'gantry-05-07',\n\n // XAI models\n TITAN_0212 = 'titan-02-12',\n\n // Open source models\n GLM_4_6 = 'glm-4.6',\n GLM_4_7 = 'glm-4.7',\n KIMI_K2_5 = 'kimi-k2.5',\n KIMI_K2_6 = 'kimi-k2.6',\n DEEPSEEK_V4_PRO = 'deepseek-v4-pro',\n MINIMAX_M2_5 = 'minimax-m2.5',\n MINIMAX_M2_7 = 'minimax-m2.7',\n GLM_5 = 'glm-5',\n GLM_5_1 = 'glm-5.1',\n\n // Routers\n FACTORY_ROUTER = 'factory-router',\n}\n\nexport enum OpenAIPhase {\n Commentary = 'commentary',\n FinalAnswer = 'final_answer',\n}\n\n/**\n * Wire-format field name for assistant-message reasoning on the OpenAI\n * Chat Completions endpoint. OpenAI / XAI capture reasoning in `reasoning`;\n * vLLM / SGLang / Fireworks' Kimi deployments use `reasoning_content`.\n */\nexport enum ChatCompletionReasoningField {\n Reasoning = 'reasoning',\n ReasoningContent = 'reasoning_content',\n}\n\n/**\n * Enum defining the reasoning effort levels for LLMs.\n * This determines how much \"thinking\" the model does before responding.\n */\nexport enum ReasoningEffort {\n None = 'none',\n Dynamic = 'dynamic',\n Off = 'off',\n Minimal = 'minimal',\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n ExtraHigh = 'xhigh',\n Max = 'max',\n}\n\nexport enum ModelProvider {\n ANTHROPIC = 'anthropic',\n OPENAI = 'openai',\n GENERIC_CHAT_COMPLETION_API = 'generic-chat-completion-api',\n FACTORY = 'factory',\n GOOGLE = 'google',\n XAI = 'xai',\n VOYAGE = 'voyage',\n /**\n * BYOK custom models served over the AWS Bedrock Converse API\n * (`ConverseStream`). Distinct from {@link ModelProvider.ANTHROPIC}\n * Bedrock routing (which speaks the Anthropic Messages dialect over the\n * Bedrock SDK): this provider speaks the native Converse schema and is\n * never used for first-party / proxy-routed models.\n */\n BEDROCK_CONVERSE = 'bedrock-converse',\n}\n\nexport enum ApiProvider {\n BEDROCK = 'bedrock',\n ANTHROPIC = 'anthropic',\n VERTEX_ANTHROPIC = 'vertex_anthropic',\n BEDROCK_ANTHROPIC = 'bedrock_anthropic',\n BEDROCK_CONVERSE = 'bedrock_converse',\n OPENAI = 'openai',\n AZURE_OPENAI = 'azure_openai',\n GOOGLE = 'google',\n XAI = 'xai',\n FIREWORKS = 'fireworks',\n BASETEN = 'baseten',\n SNOWFLAKE = 'snowflake',\n}\n\nexport enum ModelKind {\n Concrete = 'concrete',\n Router = 'router',\n}\n\nexport enum LLMModelTier {\n Standard = 'standard',\n Premium = 'premium',\n Overage = 'overage',\n}\n\n// ---------------------------------------------------------------------------\n// settings/enums.ts (leaf subset)\n// ---------------------------------------------------------------------------\n\n/**\n * Settings hierarchy level enum.\n * Precedence order (highest to lowest): Org -> Runtime -> Folder -> Project -> User\n */\nexport enum SettingsLevel {\n Org = 'org',\n Runtime = 'runtime',\n User = 'user',\n Project = 'project',\n Folder = 'folder',\n Dynamic = 'dynamic',\n BuiltIn = 'builtin',\n}\n\nexport enum DroidLocation {\n Project = 'project',\n Personal = 'personal',\n}\n\nexport enum SkillLocation {\n Project = 'project',\n Personal = 'personal',\n Builtin = 'builtin',\n}\n\nexport enum SandboxMode {\n PerCommand = 'per-command',\n WholeProcess = 'whole-process',\n}\n\n// ---------------------------------------------------------------------------\n// settings/enums.ts (additional leaf enums for GeneralSettingsSchema)\n// ---------------------------------------------------------------------------\n\nexport enum DiffMode {\n Github = 'github',\n Unified = 'unified',\n}\n\nexport enum SoundFocusMode {\n Always = 'always',\n Focused = 'focused',\n Unfocused = 'unfocused',\n}\n\nexport enum TodoDisplayMode {\n Inline = 'inline',\n Pinned = 'pinned',\n}\n\nexport enum SubagentSoundMode {\n Off = 'off',\n Quiet = 'quiet',\n Inherit = 'inherit',\n}\n\n// ---------------------------------------------------------------------------\n// cli/enums.ts (leaf enums for GeneralSettingsSchema)\n// ---------------------------------------------------------------------------\n\nexport enum LogoAnimationMode {\n Once = 'once',\n Always = 'always',\n Off = 'off',\n}\n\nexport enum ToolResultDisplay {\n Expanded = 'expanded',\n Compact = 'compact',\n}\n","import { DroidWorkingState } from './enums.js';\n\nexport const FACTORY_CLIENT_HEADER = 'X-Factory-Client';\nexport const FACTORY_CLIENT_VERSION = 'X-Client-Version';\nexport const ACTIVE_ORGANIZATION_HEADER = 'X-Factory-Org-Id';\n\n/**\n * Legacy envelope field for old JSON-RPC peers - `factoryApiVersion` must be set to this value.\n *\n * @deprecated Do not change this value; use `factoryProtocolVersion` for runtime compatibility.\n */\nexport const LEGACY_FACTORY_API_VERSION = '1.0.0' as const;\n\nexport const FACTORY_PROTOCOL_VERSION = '1.66.0' as const;\n\nexport const JSONRPC_VERSION = '2.0' as const;\n\n/**\n * Sentinel ModelID value for the Factory routing model.\n */\nexport const FACTORY_ROUTER_MODEL_ID = 'factory-router' as const;\n\n/**\n * Sentinel value used by CompactionModelSchema to mean \"use the session's\n * current model for compaction\".\n */\nexport const CURRENT_COMPACTION_MODEL = 'current-model';\n\n/** Sized comparably to a trimmed user message in the classifier context budget. */\nexport const FACTORY_ROUTER_GUIDANCE_MAX_LENGTH = 2000;\nexport const FACTORY_ROUTER_RULES_MAX_COUNT = 20;\nexport const FACTORY_ROUTER_RULE_WHEN_MAX_LENGTH = 300;\nexport const FACTORY_ROUTER_RULE_GUIDANCE_MAX_LENGTH = 600;\n\n/**\n * System reminder tag constants used for marking content as hidden from users.\n */\nexport const SYSTEM_REMINDER_START = '<system-reminder>';\nexport const SYSTEM_REMINDER_END = '</system-reminder>';\n\n/**\n * System notification tag constants used for marking notifications as hidden from users.\n */\nexport const SYSTEM_NOTIFICATION_START = '<system-notification>';\nexport const SYSTEM_NOTIFICATION_END = '</system-notification>';\n\nexport const EXIT_SPEC_MODE_REJECTED_MESSAGE =\n 'Plan not approved - remaining in Spec Mode. Provide feedback to refine the spec.';\n\nconst seconds = (value: number) => value * 1_000;\nconst minutes = (value: number) => seconds(value * 60);\nconst hours = (value: number) => minutes(value * 60);\n\nexport const LOOP_INTERVAL_POLICY = {\n minMs: minutes(1),\n maxMs: hours(24),\n displayRange: '1m–24h',\n examples: '5m, 30m, 2h',\n} as const;\n\nconst DROID_RUNNING_STATES = [\n DroidWorkingState.Thinking,\n DroidWorkingState.StreamingAssistantMessage,\n DroidWorkingState.ExecutingTool,\n DroidWorkingState.CompactingConversation,\n];\nexport const DROID_IN_PROGRESS_STATES = [\n ...DROID_RUNNING_STATES,\n DroidWorkingState.WaitingForToolConfirmation,\n];\n","// JSON-RPC envelope/base protocol schemas.\n// Note: params/result/data use z.unknown() intentionally so envelopes carry\n// arbitrary payloads without typing the inner shape at this layer.\n\nimport { z } from 'zod';\n\nimport { JSONRPC_VERSION, LEGACY_FACTORY_API_VERSION } from './constants.js';\nimport {\n DroidInteractionMode,\n JsonRpcErrorCode,\n JsonRpcMessageType,\n} from './enums.js';\n\nconst JsonRpcMessageTypeSchema = z.nativeEnum(JsonRpcMessageType);\n\nexport const DroidInteractionModeSchema = z.nativeEnum(DroidInteractionMode);\n\n/**\n * Trace context metadata for distributed tracing propagation.\n * Follows W3C Trace Context standard for cross-service trace correlation.\n * @see https://www.w3.org/TR/trace-context/\n */\nexport const TraceContextMetaSchema = z.object({\n /** W3C traceparent header value (e.g., \"00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01\") */\n traceparent: z.string().optional(),\n /** W3C tracestate header value for vendor-specific trace data */\n tracestate: z.string().optional(),\n});\n\nexport const JsonRpcEnvelopeSchema = z.object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n // Legacy metadata only. Do not repurpose for compatibility checks.\n factoryApiVersion: z\n .literal(LEGACY_FACTORY_API_VERSION)\n .describe('DEPRECATED - use factoryProtocolVersion for versioning instead'),\n /** Optional runtime compatibility signal; tolerate absence while old peers roll forward. */\n factoryProtocolVersion: z.string().optional(),\n /** Optional metadata for trace context propagation (MCP-style) */\n _meta: TraceContextMetaSchema.optional(),\n});\n\nexport const JsonRpcProtocolVersionMismatchErrorDataSchema = z.object({\n localFactoryProtocolVersion: z.string(),\n peerFactoryProtocolVersion: z.string(),\n messageType: JsonRpcMessageTypeSchema.optional(),\n method: z.string().optional(),\n requestId: z.string().nullable().optional(),\n});\n\nexport const JsonRpcErrorSchema = z.object({\n code: z.nativeEnum(JsonRpcErrorCode),\n message: z.string(),\n data: z.unknown().optional(),\n});\n\nexport const BaseRequestSchema = z.object({\n type: z.literal('request'),\n id: z.string(),\n method: z.string(),\n params: z.unknown().optional(),\n});\n\nconst BaseResponseGenericSchema = z.object({\n type: z.literal('response'),\n id: z.string().nullable(),\n result: z.unknown().optional(),\n error: JsonRpcErrorSchema.optional(),\n});\n\n// id and result are required\nexport const BaseResponseSuccessSchema = BaseResponseGenericSchema.extend({\n id: z.string(),\n result: z.unknown(),\n});\n// error is required\nexport const BaseResponseFailureSchema = BaseResponseGenericSchema.extend({\n error: JsonRpcErrorSchema,\n});\n\nexport const BaseNotificationSchema = z.object({\n type: z.literal('notification'),\n method: z.string(),\n params: z.unknown().optional(),\n});\n\nexport const JsonRpcBaseRequestSchema = JsonRpcEnvelopeSchema.extend(\n BaseRequestSchema.shape\n);\nexport const JsonRpcBaseResponseSuccessSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseSuccessSchema.shape\n);\nexport const JsonRpcBaseResponseFailureSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseFailureSchema.shape\n);\nconst JsonRpcBaseResponseGenericSchema = JsonRpcEnvelopeSchema.extend(\n BaseResponseGenericSchema.shape\n);\n\nexport const JsonRpcBaseResponseSchema = z.union([\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n]);\n\nexport const JsonRpcBaseNotificationSchema = JsonRpcEnvelopeSchema.extend(\n BaseNotificationSchema.shape\n);\n\n/**\n * Generic acknowledgement payload for command-style RPCs.\n */\nexport const CommandAckSchema = z.object({\n accepted: z.literal(true),\n});\n\n// Discriminated union for initial message type routing\n// After parsing, use JsonRpcBaseResponseSchema for strict success/failure typing\nexport const JsonRpcMessageSchema = z.discriminatedUnion('type', [\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseGenericSchema,\n JsonRpcBaseNotificationSchema,\n]);\n\nexport type TraceContextMeta = z.infer<typeof TraceContextMetaSchema>;\nexport type JsonRpcEnvelope = z.infer<typeof JsonRpcEnvelopeSchema>;\nexport type JsonRpcError = z.infer<typeof JsonRpcErrorSchema>;\nexport type JsonRpcProtocolVersionMismatchErrorData = z.infer<\n typeof JsonRpcProtocolVersionMismatchErrorDataSchema\n>;\nexport type JsonRpcBaseRequest = z.infer<typeof JsonRpcBaseRequestSchema>;\nexport type JsonRpcBaseResponseSuccess = z.infer<\n typeof JsonRpcBaseResponseSuccessSchema\n>;\nexport type JsonRpcBaseResponseFailure = z.infer<\n typeof JsonRpcBaseResponseFailureSchema\n>;\nexport type JsonRpcBaseResponse = z.infer<typeof JsonRpcBaseResponseSchema>;\nexport type JsonRpcBaseNotification = z.infer<\n typeof JsonRpcBaseNotificationSchema\n>;\nexport type CommandAck = z.infer<typeof CommandAckSchema>;\nexport type JsonRpcMessage = z.infer<typeof JsonRpcMessageSchema>;\n","import { z } from 'zod';\n\nexport const HostIdSchema = z.string().uuid();\n\nconst ComputerRegistrationSchema = z.object({\n computerId: z.string().uuid(),\n firestoreOrgId: z.string().min(1),\n userId: z.string().min(1),\n registeredAt: z.number(),\n});\n\nexport const HostConfigSchema = z.object({\n schemaVersion: z.literal(1), // when we need to bump the version, make this a discriminated union of v1 vs v2 schemas\n hostId: HostIdSchema,\n createdAt: z.number(),\n computerRegistration: ComputerRegistrationSchema.optional(),\n});\n\nexport const LegacyComputerConfigSchema = z.object({\n computerId: z.string().uuid(),\n registeredAt: z.number(),\n});\n\nexport type ComputerRegistration = z.infer<typeof ComputerRegistrationSchema>;\nexport type HostConfig = z.infer<typeof HostConfigSchema>;\nexport type LegacyComputerConfig = z.infer<typeof LegacyComputerConfigSchema>;\nexport type ResolvedComputerRegistration = Omit<\n ComputerRegistration,\n 'registeredAt'\n>;\n\nexport type ResolvedHostIdentity = {\n hostId: string;\n computerRegistration?: ResolvedComputerRegistration;\n};\n","// Leaf session schemas (tags, token usage).\n\nimport { z } from 'zod';\n\nimport type { DecompSessionType } from './enums.js';\n\nexport const SessionTagSchema = z.object({\n name: z.string().min(1),\n metadata: z.record(z.string()).optional(),\n});\n\nexport type SessionTag = z.infer<typeof SessionTagSchema>;\n\nexport interface MissionSessionTagMetadata {\n role: DecompSessionType;\n missionId: string;\n}\n\n/**\n * Token usage schema for session settings.\n * Tracks LLM token consumption for a session.\n */\nexport const TokenUsageSchema = z\n .object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n cacheCreationTokens: z.number(),\n cacheReadTokens: z.number(),\n thinkingTokens: z.number(),\n factoryCredits: z.number().optional(),\n })\n .strip();\n\nexport type TokenUsage = z.infer<typeof TokenUsageSchema>;\n","import { z } from 'zod';\n\nimport { SessionPlatform } from './enums.js';\n\n// -------------------------------------------------------------\n// Platform source schemas (used for messages and sessions)\n// -------------------------------------------------------------\n\nconst SlackSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Slack),\n teamId: z.string().nullish(),\n channel: z.string().nullish(),\n threadTs: z.string().nullish(),\n userId: z.string().nullish(),\n});\n\nconst WebSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Web),\n});\n\nconst ApiSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Api),\n});\n\nconst SessionsApiSourceSchema = z.object({\n platform: z.literal(SessionPlatform.SessionsApi),\n});\n\nconst LinearSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Linear),\n agentSessionId: z.string(),\n issueId: z.string().nullish(),\n issueUrl: z.string().nullish(),\n issueIdentifier: z.string().nullish(),\n organizationId: z.string().nullish(),\n userId: z.string().nullish(),\n});\n\nconst ReadinessRemediationSourceSchema = z.object({\n platform: z.literal(SessionPlatform.ReadinessRemediation),\n reportId: z.string(),\n repoUrl: z.string(),\n criterionId: z.string(),\n});\n\nconst ReadinessEvaluationSourceSchema = z.object({\n platform: z.literal(SessionPlatform.ReadinessEvaluation),\n repoUrl: z.string(),\n});\n\nconst AutomationSourceSchema = z.object({\n platform: z.literal(SessionPlatform.Automation),\n automationId: z.string(),\n computerId: z.string(),\n});\n\nconst WikiGenerationSourceSchema = z.object({\n platform: z.literal(SessionPlatform.WikiGeneration),\n repoUrl: z.string(),\n});\n\nconst WikiCISetupSourceSchema = z.object({\n platform: z.literal(SessionPlatform.WikiCISetup),\n repoUrl: z.string(),\n});\n\n// -------------------------------------------------------------\n// Session-specific source schemas (adds delegationSessionId)\n// -------------------------------------------------------------\n\nconst SlackSessionSourceSchema = SlackSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nconst WebSessionSourceSchema = WebSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nconst ApiSessionSourceSchema = ApiSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nconst SessionsApiSessionSourceSchema = SessionsApiSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nconst LinearSessionSourceSchema = LinearSourceSchema.extend({\n delegationSessionId: z.string(),\n});\n\nexport const SessionSourceSchema = z.discriminatedUnion('platform', [\n SlackSessionSourceSchema,\n WebSessionSourceSchema,\n ApiSessionSourceSchema,\n SessionsApiSessionSourceSchema,\n LinearSessionSourceSchema,\n ReadinessRemediationSourceSchema, // No delegationSessionId needed\n ReadinessEvaluationSourceSchema, // No delegationSessionId needed\n AutomationSourceSchema, // No delegationSessionId needed\n WikiGenerationSourceSchema, // No delegationSessionId needed\n WikiCISetupSourceSchema, // No delegationSessionId needed\n]);\n\n// -------------------------------------------------------------\n// Inferred types (single source of truth)\n// -------------------------------------------------------------\n\nexport type SlackSource = z.infer<typeof SlackSourceSchema>;\nexport type WebSource = z.infer<typeof WebSourceSchema>;\nexport type ApiSource = z.infer<typeof ApiSourceSchema>;\nexport type SessionsApiSource = z.infer<typeof SessionsApiSourceSchema>;\nexport type LinearSource = z.infer<typeof LinearSourceSchema>;\nexport type ReadinessRemediationSource = z.infer<\n typeof ReadinessRemediationSourceSchema\n>;\nexport type ReadinessEvaluationSource = z.infer<\n typeof ReadinessEvaluationSourceSchema\n>;\nexport type AutomationSource = z.infer<typeof AutomationSourceSchema>;\nexport type WikiGenerationSource = z.infer<typeof WikiGenerationSourceSchema>;\nexport type WikiCISetupSource = z.infer<typeof WikiCISetupSourceSchema>;\nexport type PlatformSource =\n | SlackSource\n | WebSource\n | ApiSource\n | SessionsApiSource\n | LinearSource\n | ReadinessRemediationSource\n | ReadinessEvaluationSource\n | AutomationSource\n | WikiGenerationSource\n | WikiCISetupSource;\nexport type SessionSource = z.infer<typeof SessionSourceSchema>;\n","import { z } from 'zod';\n\nimport {\n ChatCompletionReasoningField,\n DocumentSourceType,\n MessageContentBlockType,\n MessageRole,\n MessageVisibility,\n ModelProvider,\n OpenAIPhase,\n SessionOrigin,\n} from './enums.js';\n\n// Base content block with optional id field\nexport const BaseContentBlockSchema = z.object({\n id: z.string().optional(),\n});\n\n// Text block\nexport const TextBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.Text),\n text: z.string(),\n});\n\n// Image source and block\nexport const Base64ImageSourceSchema = z.object({\n type: z.literal('base64'),\n data: z.string(),\n mediaType: z.enum(['image/jpeg', 'image/png', 'image/gif', 'image/webp']),\n});\n\nexport const ImageBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.Image),\n source: Base64ImageSourceSchema,\n});\n\n// Thinking blocks\nexport const ThinkingBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.Thinking),\n signature: z.string(), // required but can be empty string for Gemini\n signatureProvider: z\n .union([z.nativeEnum(ModelProvider), z.literal('unknown')])\n .optional(),\n thinking: z.string(),\n durationMs: z.number().nonnegative().optional(),\n});\n\nexport const RedactedThinkingBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.RedactedThinking),\n data: z.string(),\n});\n\n// Tool use block (id is required, not optional)\nexport const ToolUseSchema = z.object({\n type: z.literal(MessageContentBlockType.ToolUse),\n id: z.string(),\n input: z.record(z.unknown()),\n name: z.string(),\n thoughtSignature: z.string().optional(), // Gemini thought signature\n});\n\n// Used to send initial PDF content from the client to the daemon.\nexport const Base64PDFSourceSchema = z.object({\n type: z.literal(DocumentSourceType.Base64),\n mediaType: z.literal('application/pdf'),\n data: z.string(),\n parsedData: z.string().optional(),\n name: z.string().optional(),\n path: z.string().optional(),\n});\n\nexport const PlainTextSourceSchema = z.object({\n type: z.literal(DocumentSourceType.Text),\n mediaType: z.literal('text/plain'),\n data: z.string(),\n name: z.string().optional(),\n mime: z.string().optional(),\n});\n\nexport const DocumentSourceSchema = z.union([\n Base64PDFSourceSchema,\n PlainTextSourceSchema,\n]);\n\nexport const DocumentBlockSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.Document),\n source: DocumentSourceSchema,\n});\n\n// Tool result block\nexport const ToolResultSchema = BaseContentBlockSchema.extend({\n type: z.literal(MessageContentBlockType.ToolResult),\n toolUseId: z.string(),\n content: z\n .union([\n z.string(),\n z.array(\n z.union([TextBlockSchema, ImageBlockSchema, DocumentBlockSchema])\n ),\n ])\n .optional(),\n isError: z.boolean().optional(),\n});\n\n// Content block discriminated union\nexport const ContentBlockSchema = z.discriminatedUnion('type', [\n TextBlockSchema,\n ImageBlockSchema,\n ThinkingBlockSchema,\n RedactedThinkingBlockSchema,\n ToolUseSchema,\n ToolResultSchema,\n DocumentBlockSchema,\n]);\n\n// Cache label for caching support\nexport const CacheLabelSchema = z.object({\n cache_control: z\n .object({\n type: z.literal('ephemeral'),\n })\n .optional(),\n});\n\n// FactoryDroidMessage schema (used in JSON-RPC protocol and application)\nexport const FactoryDroidMessageSchema = z.object({\n id: z.string(),\n role: z.nativeEnum(MessageRole),\n content: z.array(ContentBlockSchema),\n createdAt: z.number(),\n updatedAt: z.number(),\n parentId: z.string().optional(),\n userMessageSource: z.nativeEnum(SessionOrigin).optional(),\n visibility: z.nativeEnum(MessageVisibility).optional(),\n openaiMessageId: z.string().optional(),\n openaiPhase: z\n .enum([OpenAIPhase.Commentary, OpenAIPhase.FinalAnswer])\n .nullable()\n .optional(),\n openaiEncryptedContent: z.string().optional(),\n openaiReasoningId: z.string().optional(),\n openaiReasoningSummary: z.string().optional(),\n geminiThoughtSignature: z\n .string()\n .optional()\n .describe(\n '@deprecated Use thinking block `signature` fields with `signatureProvider: \"google\"` instead. Do not use in new code.'\n ),\n chatCompletionReasoningField: z\n .nativeEnum(ChatCompletionReasoningField)\n .optional(),\n chatCompletionReasoningContent: z.string().optional(),\n isUserVisible: z.boolean().optional(), // deprecated\n isError: z.boolean().optional(),\n});\n\n// FactoryDroidMessageWithCaching schema\nexport const FactoryDroidMessageWithCachingSchema =\n FactoryDroidMessageSchema.extend({\n content: z.array(ContentBlockSchema.and(CacheLabelSchema)),\n });\n\nexport type TextBlock = z.infer<typeof TextBlockSchema>;\nexport type Base64ImageSource = z.infer<typeof Base64ImageSourceSchema>;\nexport type ImageBlock = z.infer<typeof ImageBlockSchema>;\nexport type ThinkingBlock = z.infer<typeof ThinkingBlockSchema>;\nexport type RedactedThinkingBlock = z.infer<typeof RedactedThinkingBlockSchema>;\nexport type ToolUse = z.infer<typeof ToolUseSchema>;\nexport type Base64PDFSource = z.infer<typeof Base64PDFSourceSchema>;\nexport type PlainTextSource = z.infer<typeof PlainTextSourceSchema>;\nexport type DocumentSource = z.infer<typeof DocumentSourceSchema>;\nexport type DocumentBlock = z.infer<typeof DocumentBlockSchema>;\nexport type ToolResult = z.infer<typeof ToolResultSchema>;\nexport type ContentBlock = z.infer<typeof ContentBlockSchema>;\nexport type CacheLabel = z.infer<typeof CacheLabelSchema>;\nexport type FactoryDroidMessage = z.infer<typeof FactoryDroidMessageSchema>;\nexport type FactoryDroidMessageWithCaching = z.infer<\n typeof FactoryDroidMessageWithCachingSchema\n>;\n","// Mission and subagent model-settings schemas.\n\nimport { z } from 'zod';\n\nimport { ReasoningEffort } from './enums.js';\n\nconst ReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\nexport const MissionModelSettingsSchema = z.object({\n workerModel: z.string().optional(),\n workerReasoningEffort: ReasoningEffortSchema.optional(),\n validationWorkerModel: z.string().optional(),\n validationWorkerReasoningEffort: ReasoningEffortSchema.optional(),\n skipScrutiny: z.boolean().optional(),\n skipUserTesting: z.boolean().optional(),\n});\n\nexport const SubagentModelSettingsSchema = z.object({\n lightModel: z.string().optional(),\n lightReasoningEffort: ReasoningEffortSchema.optional(),\n mediumModel: z.string().optional(),\n mediumReasoningEffort: ReasoningEffortSchema.optional(),\n heavyModel: z.string().optional(),\n heavyReasoningEffort: ReasoningEffortSchema.optional(),\n});\n\nexport type MissionModelSettings = z.infer<typeof MissionModelSettingsSchema>;\nexport type SubagentModelSettings = z.infer<typeof SubagentModelSettingsSchema>;\n","// Leaf settings schemas: MarketplaceSourceSchema (+ inner discriminated-union\n// variants), SessionDefaultSettingsSchema, CompactionModelSchema,\n// AutonomyModeSchema, and the settings-resolution event family.\n//\n// MissionModelSettingsSchema and SubagentModelSettingsSchema live in\n// ./model-settings.js. GeneralSettingsSchema and ManagedSettingsBaseSchema\n// (plus their helper schemas) live in ./general-settings.js.\n\nimport { z } from 'zod';\n\nimport {\n CURRENT_COMPACTION_MODEL,\n FACTORY_ROUTER_MODEL_ID,\n} from './constants.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n ModelID,\n ReasoningEffort,\n} from './enums.js';\nimport { DroidInteractionModeSchema } from './json-rpc.js';\n\n// =============================================================================\n// Session Default Settings Schema\n// =============================================================================\n\nconst ReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\nexport const AutonomyModeSchema = z.nativeEnum(AutonomyMode);\n\nconst FIRST_COMPACTION_MODEL_ID = 'claude-3-5-sonnet-20241022';\nconst CompactionModelIdValues: [string, ...string[]] = [\n FIRST_COMPACTION_MODEL_ID,\n ...Object.values(ModelID).filter(\n (modelId) =>\n modelId !== FACTORY_ROUTER_MODEL_ID &&\n modelId !== FIRST_COMPACTION_MODEL_ID\n ),\n];\n\nexport const CompactionModelSchema = z.union([\n z.literal(CURRENT_COMPACTION_MODEL),\n z.enum(CompactionModelIdValues),\n z.string().regex(/^custom:.+$/, 'Expected a custom model id'),\n]);\n\nexport const SessionDefaultSettingsSchema = z.object({\n model: z.string().optional(),\n reasoningEffort: ReasoningEffortSchema.optional(),\n interactionMode: DroidInteractionModeSchema.optional(),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional(),\n autonomyMode: AutonomyModeSchema.optional().describe(\n 'Deprecated: use interactionMode + autonomyLevel instead.'\n ),\n specModeModel: z.string().optional(),\n specModeReasoningEffort: ReasoningEffortSchema.optional(),\n /**\n * When true, new sessions started against a git repo are created in an\n * isolated worktree. Gated behind the `DesktopWorktrees` feature flag in\n * the desktop UI.\n */\n runInWorktree: z.boolean().optional(),\n});\n\n// =============================================================================\n// Marketplace Source Schema\n// =============================================================================\n\nconst GitHubMarketplaceSourceSchema = z.object({\n source: z.literal('github'),\n repo: z.string(),\n});\n\nconst UrlMarketplaceSourceSchema = z.object({\n source: z.literal('url'),\n url: z.string(),\n});\n\nconst LocalMarketplaceSourceSchema = z.object({\n source: z.literal('local'),\n path: z.string(),\n});\n\nconst GitSubdirMarketplaceSourceSchema = z.object({\n source: z.literal('git-subdir'),\n url: z.string(),\n path: z.string(),\n});\n\nexport const MarketplaceSourceSchema = z.discriminatedUnion('source', [\n GitHubMarketplaceSourceSchema,\n UrlMarketplaceSourceSchema,\n LocalMarketplaceSourceSchema,\n GitSubdirMarketplaceSourceSchema,\n]);\n\n// =============================================================================\n// Settings Resolution Chain Schemas\n// =============================================================================\n\nexport const SettingsSourceTypeEnum = z.enum([\n /** Factory's hardcoded defaults (lowest priority) */\n 'builtin-default',\n /** Remote dynamic config (e.g. Statsig dynamic configs) */\n 'dynamic-config',\n /** Organization-level settings pushed from the server */\n 'org',\n /** User-level settings from ~/.factory/settings.json */\n 'user',\n /** Project-level settings from <git-root>/.factory/settings.json */\n 'project',\n /** Folder-level settings from ancestor .factory/settings.json files */\n 'folder',\n /** Model availability determined by a feature flag gate */\n 'feature-flag',\n /** Value read from browser localStorage (CLOUD path only) */\n 'localstorage',\n /** Value provided via React Router navigation state (e.g. template launch, session continuation) */\n 'nav-state',\n /** Model/effort override enforced for orchestrator (mission) sessions */\n 'orchestrator-override',\n /** Last-resort fallback when no model was selected after all other sources */\n 'auto-select',\n /** Settings restored from the daemon's CLI process for this session — re-resolved from the settings hierarchy if the daemon restarts */\n 'session-state',\n]);\n\nexport const SettingsSourceSchema = z.object({\n type: SettingsSourceTypeEnum,\n filePath: z.string().optional(),\n flagName: z.string().optional(),\n key: z.string().optional(),\n orgId: z.string().optional(),\n});\n\nexport const SettingsActionEnum = z.enum([\n 'set',\n 'override',\n 'skip',\n 'fallback',\n]);\n\nconst SettingsResolutionLocationSchema = z.object({\n package: z.string(),\n file: z.string(),\n function: z.string().optional(),\n});\n\nexport const SettingsResolutionEventSchema = z.object({\n timestamp: z.string(),\n keys: z.array(z.string()),\n action: SettingsActionEnum,\n source: SettingsSourceSchema,\n value: z.record(z.unknown()).optional(),\n reason: z.string().optional(),\n location: SettingsResolutionLocationSchema.optional(),\n});\n\nexport type SessionDefaultSettings = z.infer<\n typeof SessionDefaultSettingsSchema\n>;\nexport type MarketplaceSource = z.infer<typeof MarketplaceSourceSchema>;\nexport type CompactionModel = z.infer<typeof CompactionModelSchema>;\nexport type SettingsResolutionEvent = z.infer<\n typeof SettingsResolutionEventSchema\n>;\nexport type SettingsSource = z.infer<typeof SettingsSourceSchema>;\n","import { z } from 'zod';\n\nimport {\n FACTORY_ROUTER_GUIDANCE_MAX_LENGTH,\n FACTORY_ROUTER_RULE_GUIDANCE_MAX_LENGTH,\n FACTORY_ROUTER_RULE_WHEN_MAX_LENGTH,\n FACTORY_ROUTER_RULES_MAX_COUNT,\n} from './constants.js';\nimport { CustomModelsSchema } from './custom-models.js';\nimport {\n AutonomyLevel,\n DiffMode,\n LogoAnimationMode,\n ModelID,\n ReasoningEffort,\n SandboxMode,\n SoundFocusMode,\n SubagentSoundMode,\n TodoDisplayMode,\n ToolResultDisplay,\n} from './enums.js';\nimport {\n MissionModelSettingsSchema,\n SubagentModelSettingsSchema,\n} from './model-settings.js';\nimport { UserModelPolicySchema } from './policy.js';\nimport {\n CompactionModelSchema,\n MarketplaceSourceSchema,\n SessionDefaultSettingsSchema,\n} from './settings.js';\n\nconst ReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\n// =============================================================================\n// Model Policy Schema (for org-level model access control)\n// =============================================================================\n\n/**\n * A lenient model ID array that silently drops unrecognized values instead of\n * failing validation. Ensures backward compatibility when ModelID enum values\n * are removed — persisted settings referencing old IDs filter them out rather\n * than failing to parse.\n */\nconst modelIdValues: ReadonlySet<string> = new Set(Object.values(ModelID));\nconst tolerantModelIdArray = z\n .array(z.string())\n .transform((ids) => ids.filter((id): id is ModelID => modelIdValues.has(id)));\n\nexport const ModelPolicySchema = z.object({\n allowedModelIds: tolerantModelIdArray.optional(),\n blockedModelIds: tolerantModelIdArray.optional(),\n allowCustomModels: z.boolean().optional(),\n allowedBaseUrls: z.array(z.string()).optional(),\n allowAllFactoryModels: z.boolean().optional(),\n isFastModelsAllowed: z.boolean().optional(),\n});\n\n// =============================================================================\n// MCP Policy Schema (for org-level MCP server access control)\n// =============================================================================\n\nexport const McpPolicySchema = z.object({\n enabled: z.boolean().default(false),\n allowlist: z.array(z.string()).optional(),\n});\n\n// =============================================================================\n// Mission Policy Schema (for org-level missions access control)\n// =============================================================================\n\nexport const MissionPolicySchema = z.object({\n restrictedAccess: z.boolean().default(false),\n allowedUserIds: z.array(z.string()).optional(),\n});\n\n// =============================================================================\n// Network Policy Schema (for org-level network access control)\n// IP format validation is handled by @factory/utils/ip (isValidIpOrCidr).\n// The schema only enforces shape: non-empty array of trimmed strings.\n// =============================================================================\n\nconst NetworkPolicySchema = z.object({\n allowedIps: z\n .array(z.string().trim())\n .min(1, 'IP allowlist must contain at least one entry when enabled'),\n});\n\n// =============================================================================\n// Sandbox Settings Schema\n// =============================================================================\n\nexport const SandboxFilesystemSettingsSchema = z.object({\n allowWrite: z.array(z.string()).optional(),\n allowRead: z.array(z.string()).optional(),\n denyWrite: z.array(z.string()).optional(),\n denyRead: z.array(z.string()).optional(),\n});\n\nexport const SandboxNetworkSettingsSchema = z.object({\n allowedDomains: z.array(z.string()).optional(),\n allowUnixSockets: z.array(z.string()).optional(),\n allowAllUnixSockets: z.boolean().optional(),\n allowLocalBinding: z.boolean().optional(),\n httpProxyPort: z.number().optional(),\n socksProxyPort: z.number().optional(),\n});\n\nconst SandboxModeSchema = z.nativeEnum(SandboxMode);\n\nexport const SandboxSettingsSchema = z.object({\n enabled: z.boolean().optional(),\n mode: SandboxModeSchema.optional(),\n filesystem: SandboxFilesystemSettingsSchema.optional(),\n network: SandboxNetworkSettingsSchema.optional(),\n});\n\n// =============================================================================\n// Session Retention Constants\n// =============================================================================\n\nexport const SESSION_RETENTION_MIN_DAYS = 14;\nexport const SESSION_RETENTION_MAX_DAYS = 365;\n\nconst ExtraMarketplaceEntrySchema = z.object({\n source: MarketplaceSourceSchema,\n});\n\nexport const FactoryRouterRuleSchema = z.object({\n when: z.string().max(FACTORY_ROUTER_RULE_WHEN_MAX_LENGTH).optional(),\n guidance: z.string().max(FACTORY_ROUTER_RULE_GUIDANCE_MAX_LENGTH),\n});\n\n// =============================================================================\n// Managed Settings Schema\n// =============================================================================\n\nconst McpAutonomyLevelSchema = z.enum([\n AutonomyLevel.Low,\n AutonomyLevel.Medium,\n AutonomyLevel.High,\n]);\n\nconst McpAutonomyUrlOverrideSchema = z.object({\n urlPattern: z.string().trim().min(1),\n defaultLevel: McpAutonomyLevelSchema,\n});\n\nconst StatusLineConfigSchema = z.object({\n type: z.literal('command').optional(),\n command: z.string(),\n padding: z.number().optional(),\n maxRows: z.number().int().min(1).max(3).optional(),\n});\n\n// Exported (not internal-only) to allow `.extend(...)` across module\n// boundaries and to surface it on the public protocol namespace.\nexport const ManagedSettingsBaseSchema = z.object({\n sessionDefaultSettings: SessionDefaultSettingsSchema.optional(),\n maxAutonomyLevel: z.nativeEnum(AutonomyLevel).optional(),\n mcpAutonomyOverrides: z\n .record(\n z.string(),\n z.object({\n defaultLevel: McpAutonomyLevelSchema.optional(),\n tools: z.record(z.string(), McpAutonomyLevelSchema).optional(),\n })\n )\n .optional(),\n mcpAutonomyUrlOverrides: z.array(McpAutonomyUrlOverrideSchema).optional(),\n cloudSessionSync: z.boolean().optional(),\n wikiCloudSync: z.boolean().optional(),\n includeCoAuthoredByDroid: z.boolean().optional(),\n enableDroidShield: z.boolean().optional(),\n ideAutoConnect: z.boolean().optional(),\n commandAllowlist: z.array(z.string()).optional(),\n commandDenylist: z.array(z.string()).optional(),\n customModels: CustomModelsSchema.optional(),\n modelPolicy: ModelPolicySchema.optional(),\n mcpPolicy: McpPolicySchema.optional(),\n missionPolicy: MissionPolicySchema.optional(),\n userModelPolicies: z.record(z.string(), UserModelPolicySchema).optional(),\n enabledPlugins: z.record(z.boolean()).optional(),\n extraKnownMarketplaces: z.record(ExtraMarketplaceEntrySchema).optional(),\n strictKnownMarketplaces: z.array(MarketplaceSourceSchema).optional(),\n networkPolicy: NetworkPolicySchema.optional(),\n sandbox: SandboxSettingsSchema.optional(),\n restrictMemberVisibility: z.boolean().optional(),\n restrictApiKeyCreationToManagers: z.boolean().optional(),\n managedComputersEnabled: z.boolean().optional(),\n managedComputersAllowedEmails: z.array(z.string().trim()).optional(),\n byomComputersEnabled: z.boolean().optional(),\n byomComputersAllowedEmails: z.array(z.string().trim()).optional(),\n sessionRetentionDays: z\n .number()\n .int()\n .min(SESSION_RETENTION_MIN_DAYS)\n .max(SESSION_RETENTION_MAX_DAYS)\n .optional(),\n factoryRouterGuidance: z\n .string()\n .max(FACTORY_ROUTER_GUIDANCE_MAX_LENGTH)\n .optional(),\n factoryRouterRules: z\n .array(FactoryRouterRuleSchema)\n .max(FACTORY_ROUTER_RULES_MAX_COUNT)\n .optional(),\n});\n\n// =============================================================================\n// General Settings Schema (CLI settings.json / settings.local.json)\n// =============================================================================\n\nexport const GeneralSettingsSchema = ManagedSettingsBaseSchema.extend({\n diffMode: z.nativeEnum(DiffMode).optional(),\n ideExtensionPromptedAt: z.record(z.number()).optional(),\n ideActivationNudgedForVersion: z.record(z.string()).optional(),\n enableCompletionBell: z.boolean().optional(),\n completionSound: z.string().optional(),\n awaitingInputSound: z.string().optional(),\n soundFocusMode: z.nativeEnum(SoundFocusMode).optional(),\n completionSoundFocusMode: z.nativeEnum(SoundFocusMode).optional(),\n awaitingInputSoundFocusMode: z.nativeEnum(SoundFocusMode).optional(),\n specSaveEnabled: z.boolean().optional(),\n specSaveDir: z.string().optional(),\n todoDisplayMode: z.nativeEnum(TodoDisplayMode).optional(),\n toolResultDisplay: z.nativeEnum(ToolResultDisplay).optional(),\n showThinkingInMainView: z.boolean().optional(),\n keepSystemAwakeDuringMissions: z.boolean().optional(),\n showTokenUsageIndicator: z.boolean().optional(),\n missionOrchestratorModel: z.string().optional(),\n missionOrchestratorReasoningEffort: ReasoningEffortSchema.optional(),\n modelFavorites: z.array(z.string()).optional(),\n dismissedNewModels: z.array(z.string()).optional(),\n logoAnimation: z.nativeEnum(LogoAnimationMode).optional(),\n missionModelSettings: MissionModelSettingsSchema.optional(),\n subagentModelSettings: SubagentModelSettingsSchema.optional(),\n statusLine: StatusLineConfigSchema.optional(),\n theme: z.string().optional(),\n overrideTerminalColors: z.boolean().optional(),\n hasSeenMissionOnboarding: z.boolean().optional(),\n worktreeDirectory: z.string().optional(),\n windowZoomLevel: z.number().finite().optional(),\n remoteAccessEnabled: z.boolean().optional(),\n llmRequestTimeout: z.number().min(1000).optional(),\n subagentInactivityTimeout: z.number().min(1000).optional(),\n subagentSounds: z.nativeEnum(SubagentSoundMode).optional(),\n nerdFont: z.boolean().optional(),\n compactionTokenLimit: z.number().optional(),\n compactionTokenLimitPerModel: z.record(z.number()).optional(),\n compactionModel: CompactionModelSchema.optional(),\n});\n\nexport type ManagedSettingsBase = z.infer<typeof ManagedSettingsBaseSchema>;\nexport type GeneralSettings = z.infer<typeof GeneralSettingsSchema>;\nexport type ModelPolicy = z.infer<typeof ModelPolicySchema>;\nexport type McpPolicy = z.infer<typeof McpPolicySchema>;\nexport type MissionPolicy = z.infer<typeof MissionPolicySchema>;\nexport type SandboxSettings = z.infer<typeof SandboxSettingsSchema>;\nexport type FactoryRouterRule = z.infer<typeof FactoryRouterRuleSchema>;\n","// Custom-model schemas (includes apiKey / aws credential fields).\n// SandboxModeSchema is colocated here.\n\nimport { z } from 'zod';\n\nimport { ModelProvider, ReasoningEffort, SandboxMode } from './enums.js';\n\nconst ReasoningEffortSchema = z.nativeEnum(ReasoningEffort);\n\nexport const SandboxModeSchema = z.nativeEnum(SandboxMode);\n\nconst CustomModelBedrockSchema = z.object({\n awsProfile: z.string().optional(),\n awsRegion: z.string().min(1).optional(),\n bedrockBaseUrl: z.string().url().optional(),\n awsAuthRefresh: z.string().optional(),\n awsCredentialExport: z.string().optional(),\n});\n\nexport const ManagedCustomModelSchema = z\n .object({\n model: z.string(),\n id: z.string().optional(),\n index: z.number().optional(),\n baseUrl: z.string().optional(),\n apiKey: z.string().optional(),\n provider: z.nativeEnum(ModelProvider),\n displayName: z.string().optional(),\n maxContextLimit: z.number().optional(),\n enableThinking: z.boolean().optional(),\n thinkingMaxTokens: z.number().optional(),\n maxOutputTokens: z.number().optional(),\n reasoningEffort: ReasoningEffortSchema.optional(),\n extraHeaders: z.record(z.string()).optional(),\n extraArgs: z.record(z.unknown()).optional(),\n noImageSupport: z.boolean().optional(),\n bedrock: CustomModelBedrockSchema.optional(),\n })\n .superRefine((model, ctx) => {\n if (model.provider === ModelProvider.BEDROCK_CONVERSE && !model.bedrock) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['bedrock'],\n message:\n 'bedrock-converse custom models require a bedrock configuration block',\n });\n return;\n }\n if (model.bedrock) {\n if (\n model.provider !== ModelProvider.ANTHROPIC &&\n model.provider !== ModelProvider.BEDROCK_CONVERSE\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['provider'],\n message:\n 'bedrock custom models require provider \"anthropic\" or \"bedrock-converse\"',\n });\n }\n return;\n }\n if (!model.baseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['baseUrl'],\n message: 'baseUrl is required unless bedrock is configured',\n });\n }\n if (!model.apiKey) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['apiKey'],\n message: 'apiKey is required unless bedrock is configured',\n });\n }\n });\n\nexport const CustomModelsSchema = z.array(ManagedCustomModelSchema);\n\nexport type ManagedCustomModel = z.infer<typeof ManagedCustomModelSchema>;\nexport type CustomModels = z.infer<typeof CustomModelsSchema>;\n","import { z } from 'zod';\n\nimport { ModelID } from './enums.js';\n\n/**\n * A lenient model ID array that silently drops unrecognized values instead of\n * failing validation. Ensures backward compatibility when ModelID enum values\n * are removed — persisted policies referencing old IDs filter them out rather\n * than failing to parse.\n */\nconst modelIdValues: ReadonlySet<string> = new Set(Object.values(ModelID));\nconst tolerantModelIdArray = z\n .array(z.string())\n .transform((ids) => ids.filter((id): id is ModelID => modelIdValues.has(id)));\n\nexport const UserModelPolicySchema = z.object({\n allowedModelIds: tolerantModelIdArray,\n blockedModelIds: tolerantModelIdArray,\n});\n","import { z } from 'zod';\n\nimport { DroidLoopStatus, DroidLoopStopReason } from './enums.js';\n\n// Bounds are frozen at the values shipped with the deprecated loop protocol\n// surface; they intentionally do not track the live LOOP_INTERVAL_POLICY.\nconst DEPRECATED_LOOP_INTERVAL_MIN_MS = 5_000;\nconst DEPRECATED_LOOP_INTERVAL_MAX_MS = 24 * 60 * 60 * 1_000;\n\n/** @deprecated Loop scheduling now uses daemon cron schemas. */\nconst LoopIntervalMsSchema = z\n .number()\n .int()\n .finite()\n .safe()\n .min(DEPRECATED_LOOP_INTERVAL_MIN_MS)\n .max(DEPRECATED_LOOP_INTERVAL_MAX_MS);\n\n/** @deprecated Loop scheduling now uses daemon cron schemas. */\nexport const LoopStateSchema = z.object({\n loopId: z.string(),\n status: z.nativeEnum(DroidLoopStatus),\n intervalMs: LoopIntervalMsSchema,\n iteration: z.number().int().nonnegative(),\n startedAt: z.number().int().nonnegative(),\n updatedAt: z.number().int().nonnegative(),\n nextRunAt: z.number().int().nonnegative().nullable(),\n isDue: z.boolean(),\n lastRunStartedAt: z.number().int().nonnegative().optional(),\n lastRunCompletedAt: z.number().int().nonnegative().optional(),\n stopReason: z.nativeEnum(DroidLoopStopReason).optional(),\n});\n\nexport type LoopState = z.infer<typeof LoopStateSchema>;\n","import { z } from 'zod';\n\nimport { ToolConfirmationOutcome } from './enums.js';\n\n/**\n * Schema for a selectable list item in CLI UI\n *\n * Used for tool confirmation prompts to provide structured options\n * that can be rendered with visual feedback (colors, prefixes, etc.)\n */\nexport const ToolConfirmationListItemSchema = z.object({\n label: z.string(),\n value: z.nativeEnum(ToolConfirmationOutcome),\n});\n\nexport type ToolConfirmationListItem = z.infer<\n typeof ToolConfirmationListItemSchema\n>;\n","import { z } from 'zod';\n\nimport { McpServerStatus, McpServerType, SettingsLevel } from './enums.js';\n\n// MCP primitives\nexport const McpServerNameSchema = z.string();\nexport const McpServerTypeSchema = z.enum(['stdio', 'http', 'sse']);\n\n// Server config field schemas (used by registry and add-server requests)\nexport const McpHttpServerConfigFieldsSchema = z.object({\n url: z.string().optional(),\n});\n\nexport const McpStdioServerConfigFieldsSchema = z.object({\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n});\n\n// MCP server status (shared between LIST_MCP_SERVERS result and MCP_STATUS_CHANGED notification)\nexport const McpServerStatusInfoSchema = z.object({\n name: z.string(),\n status: z.nativeEnum(McpServerStatus),\n source: z.nativeEnum(SettingsLevel),\n isManaged: z.boolean(),\n error: z.string().optional(),\n toolCount: z.number().optional(),\n serverType: z.nativeEnum(McpServerType),\n hasAuthTokens: z.boolean().optional(),\n requiresAuth: z.boolean().optional(),\n pendingAuthUrl: z.string().optional(),\n pendingAuthMessage: z.string().optional(),\n pendingAuthState: z.string().optional(),\n});\n\n// MCP status summary (shared between LIST_MCP_SERVERS result and MCP_STATUS_CHANGED notification)\nexport const McpStatusSummarySchema = z.object({\n total: z.number(),\n connected: z.number(),\n connecting: z.number(),\n failed: z.number(),\n disabled: z.number().optional(),\n});\n\n// MCP registry server entity\nconst McpRegistryServerBaseSchema = z.object({\n name: McpServerNameSchema,\n description: z.string(),\n type: McpServerTypeSchema,\n});\n\nexport const McpRegistryServerSchema = McpRegistryServerBaseSchema.merge(\n McpHttpServerConfigFieldsSchema\n)\n .merge(McpStdioServerConfigFieldsSchema)\n .extend({\n note: z.string().optional(),\n logoUrl: z.string().optional(),\n });\n\n// MCP tool entity\nexport const McpToolInfoSchema = z.object({\n serverName: McpServerNameSchema,\n name: z.string(),\n description: z.string().optional(),\n isEnabled: z.boolean(),\n isReadOnly: z.boolean().optional(),\n inputSchema: z\n .object({\n type: z.string().optional(),\n properties: z.record(z.unknown()).optional(),\n required: z.array(z.string()).optional(),\n })\n .optional(),\n});\n","import { z } from 'zod';\n\nimport { CustomModelsSchema } from './custom-models.js';\nimport {\n DismissalType,\n FeatureStatus,\n FeatureSuccessState,\n IssueSeverity,\n MissionPauseReason,\n MissionState,\n ProgressLogEntryType,\n WorkerFailureReason,\n} from './enums.js';\n\nexport const FeatureSuccessStateSchema = z.nativeEnum(FeatureSuccessState);\n\nconst OptionalNonBlankStringSchema = z.preprocess(\n (value) =>\n typeof value === 'string' && value.trim() === '' ? undefined : value,\n z.string().optional()\n);\n\n// -------------------------\n// Feature schema\n// -------------------------\n\n/**\n * Mission feature schema.\n *\n * NOTE: This is intentionally tolerant (passthrough + optional fields)\n * because the CLI/orchestrator owns the canonical on-disk feature shape and\n * may evolve it over time.\n */\nexport const MissionFeatureSchema = z.object({\n id: z.string(),\n description: z.string(),\n status: z.nativeEnum(FeatureStatus),\n skillName: z.string(),\n preconditions: z.array(z.string()),\n expectedBehavior: z.array(z.string()),\n fulfills: z.array(z.string()).optional(),\n\n // Optional orchestrator-authored fields\n milestone: z.string().optional(),\n\n // System-managed fields (present in CLI features.json)\n workerSessionIds: z.array(z.string()).optional(),\n // Deprecated compatibility fields kept for protocol stability.\n currentWorkerSessionId: z.string().nullable().optional(),\n completedWorkerSessionId: z.string().nullable().optional(),\n});\n\n// -------------------------\n// Progress log schemas\n// -------------------------\n\n// -------------------------\n// Handoff-related schemas\n// -------------------------\n\nconst IssueSeveritySchema = z.nativeEnum(IssueSeverity);\n\nconst DismissalTypeSchema = z.nativeEnum(DismissalType);\n\nexport const DiscoveredIssueSchema = z.object({\n severity: IssueSeveritySchema,\n description: z.string(),\n suggestedFix: z.string().optional(),\n});\n\nexport const VerificationCommandSchema = z.object({\n command: z.string(),\n exitCode: z.number(),\n observation: z.string(),\n});\n\nexport const InteractiveCheckSchema = z.object({\n action: z.string(),\n observed: z.string(),\n});\n\nexport const VerificationSchema = z.object({\n commandsRun: z.array(VerificationCommandSchema),\n interactiveChecks: z.array(InteractiveCheckSchema).optional(),\n});\n\nexport const TestCaseSchema = z.object({\n name: z.string(),\n verifies: z.string(),\n});\n\nexport const TestFileSchema = z.object({\n file: z.string(),\n cases: z.array(TestCaseSchema),\n});\n\nexport const TestsSchema = z.object({\n added: z.array(TestFileSchema),\n updated: z.array(z.string()).optional(),\n coverage: z.string(),\n});\n\nconst SkillDeviationSchema = z.object({\n step: z.string(),\n whatIDidInstead: z.string(),\n why: z.string(),\n});\n\nconst SkillFeedbackSchema = z.object({\n followedProcedure: z.boolean(),\n deviations: z.array(SkillDeviationSchema),\n suggestedChanges: z.array(z.string()).optional(),\n});\n\nexport const HandoffSchema = z.object({\n // Optional for backward compatibility with historical on-disk handoffs.\n salientSummary: z.string().optional(),\n whatWasImplemented: z.string(),\n whatWasLeftUndone: z.string(),\n verification: VerificationSchema,\n tests: TestsSchema,\n discoveredIssues: z.array(DiscoveredIssueSchema),\n skillFeedback: SkillFeedbackSchema.optional(),\n});\n\nexport const DismissalRecordSchema = z.object({\n type: DismissalTypeSchema,\n sourceFeatureId: z.string(),\n summary: z.string(),\n justification: z.string(),\n});\n\n// -------------------------\n// On-disk mission artifact schemas\n//\n// Describe the shape of files persisted under `{missionDir}/`. These are\n// intentionally stricter than the protocol-level MissionFeatureSchema above:\n// on-disk corruption (missing `status`, truncated state file, etc.) is the\n// failure class schema enforcement is designed to catch early.\n// -------------------------\n\n/**\n * On-disk feature schema. More permissive than `MissionFeatureSchema` for\n * list-typed fields (readers default them to `[]`). The required fields are\n * those the orchestrator always authors and whose silent regression would\n * lead to scheduler replay errors: `id`, `description`, `status`.\n */\nconst OnDiskMissionFeatureSchema = z\n .object({\n id: z.string(),\n description: z.string(),\n status: z.nativeEnum(FeatureStatus),\n skillName: z.string().optional(),\n preconditions: z.array(z.string()).optional(),\n expectedBehavior: z.union([z.array(z.string()), z.string()]).optional(),\n fulfills: z.array(z.string()).optional(),\n milestone: z.string().optional(),\n workerSessionIds: z.array(z.string()).optional(),\n currentWorkerSessionId: z.string().nullable().optional(),\n completedWorkerSessionId: z.string().nullable().optional(),\n })\n .passthrough();\n\n/**\n * Schema for handoff entries stored in `handoffs.jsonl`.\n */\nexport const HandoffEntrySchema = z.object({\n timestamp: z.string(),\n workerSessionId: z.string(),\n featureId: z.string(),\n milestone: z.string().optional(),\n commitId: OptionalNonBlankStringSchema,\n repoPath: OptionalNonBlankStringSchema,\n handoff: HandoffSchema,\n});\n\n/**\n * Schema for per-worker handoff JSON files written to\n * `{missionDir}/handoffs/{timestamp}__{featureId}__{workerSessionId}.json`.\n */\nexport const WorkerHandoffFileSchema = z.object({\n timestamp: z.string(),\n workerSessionId: z.string(),\n featureId: z.string(),\n milestone: z.string().optional(),\n commitId: z.string().optional(),\n successState: z.string().optional(),\n returnToOrchestrator: z.boolean().optional(),\n handoff: HandoffSchema,\n});\n\n/**\n * Schema for the mission state file (`state.json`). System-managed.\n *\n * Kept permissive on unknown top-level keys (`.passthrough`) to stay\n * forward-compatible with in-flight missions authored by older CLI versions,\n * but strict on required fields and enums so that genuine corruption (e.g.\n * truncated write) is caught.\n */\nexport const MissionStateFileSchema = z\n .object({\n missionId: z.string().min(1),\n state: z.nativeEnum(MissionState),\n workingDirectory: z.string().min(1),\n createdAt: z.string(),\n updatedAt: z.string(),\n lastReviewedHandoffCount: z.number().nonnegative().optional(),\n })\n .passthrough();\n\n/**\n * Schema for the features file (`features.json`).\n *\n * Accepts only the modern `{ \"features\": [...] }` wrapper shape; legacy bare\n * arrays are normalized into the wrapper shape by callers before validation.\n */\nexport const FeaturesFileSchema = z\n .object({\n features: z.array(OnDiskMissionFeatureSchema),\n })\n .passthrough();\n\n/**\n * Schema for `runtime-custom-models.json`.\n */\nexport const RuntimeCustomModelsFileSchema = z.object({\n customModels: CustomModelsSchema,\n});\n\n// -------------------------\n// Progress log entry schemas\n// -------------------------\n\nconst BaseProgressLogEntrySchema = z.object({\n timestamp: z.string(),\n});\n\nexport const MissionAcceptedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionAccepted),\n title: z.string(),\n});\n\nexport const MissionPausedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionPaused),\n /** Structured cause when the pause is automatic. Absent for user-initiated pauses. */\n pauseReason: z.nativeEnum(MissionPauseReason).optional(),\n});\n\nexport const MissionResumedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionResumed),\n resumeWorkerSessionId: z.string().optional(),\n});\n\nexport const MissionRunStartedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MissionRunStarted),\n message: z.string().optional(),\n});\n\nexport const WorkerStartedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerStarted),\n workerSessionId: z.string(),\n spawnId: z.string(),\n featureId: z.string().optional(),\n});\n\nexport const WorkerSelectedFeatureEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerSelectedFeature),\n workerSessionId: z.string(),\n featureId: z.string(),\n });\n\nexport const WorkerCompletedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerCompleted),\n workerSessionId: z.string(),\n featureId: z.string(),\n successState: FeatureSuccessStateSchema,\n returnToOrchestrator: z.boolean(),\n commitId: OptionalNonBlankStringSchema,\n repoPath: OptionalNonBlankStringSchema,\n exitCode: z.number(),\n validatorsPassed: z.boolean().optional(),\n handoff: HandoffSchema.optional(),\n});\n\nexport const WorkerFailedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerFailed),\n workerSessionId: z.string().optional(),\n spawnId: z.string(),\n exitCode: z.number().optional(),\n reason: z.string(),\n /** Structured failure cause used to branch on auto-pause vs requeue. Absent means a generic failure. */\n failureReason: z.nativeEnum(WorkerFailureReason).optional(),\n});\n\nexport const WorkerPausedEntrySchema = BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.WorkerPaused),\n workerSessionId: z.string(),\n featureId: z.string().optional(),\n});\n\nexport const HandoffItemsDismissedEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.HandoffItemsDismissed),\n dismissals: z.array(DismissalRecordSchema).optional(),\n });\n\nexport const MilestoneValidationTriggeredEntrySchema =\n BaseProgressLogEntrySchema.extend({\n type: z.literal(ProgressLogEntryType.MilestoneValidationTriggered),\n milestone: z.string(),\n featureId: z.string(),\n });\n\nexport const ProgressLogEntrySchema = z.discriminatedUnion('type', [\n MissionAcceptedEntrySchema,\n MissionPausedEntrySchema,\n MissionResumedEntrySchema,\n MissionRunStartedEntrySchema,\n WorkerStartedEntrySchema,\n WorkerSelectedFeatureEntrySchema,\n WorkerCompletedEntrySchema,\n WorkerFailedEntrySchema,\n WorkerPausedEntrySchema,\n HandoffItemsDismissedEntrySchema,\n MilestoneValidationTriggeredEntrySchema,\n]);\n","import { z } from 'zod';\n\nimport { SandboxModeSchema } from './custom-models.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n DroidClientMethod,\n DroidErrorType,\n DroidWorkingState,\n McpAuthOutcome,\n MissionState,\n ReasoningEffort,\n SandboxOperationType,\n SandboxViolationReason,\n SandboxViolationType,\n SessionNotificationType,\n ToolConfirmationOutcome,\n ToolConfirmationType,\n} from './enums.js';\nimport {\n DroidInteractionModeSchema,\n JsonRpcBaseNotificationSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n JsonRpcEnvelopeSchema,\n} from './json-rpc.js';\nimport { LoopStateSchema } from './loop.js';\nimport { McpServerStatusInfoSchema, McpStatusSummarySchema } from './mcp.js';\nimport {\n FactoryDroidMessageSchema,\n ToolResultSchema,\n ToolUseSchema,\n} from './messages.js';\nimport {\n MissionFeatureSchema,\n ProgressLogEntrySchema,\n} from './mission-decomposition.js';\nimport { MissionModelSettingsSchema } from './model-settings.js';\nimport { ToolConfirmationListItemSchema } from './selectable-list-item.js';\nimport { TokenUsageSchema } from './session.js';\n\nconst ToolResultNotificationSchema = ToolResultSchema.extend({\n type: z.literal(SessionNotificationType.TOOL_RESULT),\n messageId: z.string(),\n});\n\n// Schema for streaming updates from subagent tool calls\nexport const ToolProgressUpdateSchema = z.object({\n type: z.enum(['tool_call', 'tool_result', 'error', 'status', 'message']),\n toolName: z.string().optional(),\n status: z.string().optional(),\n details: z.string().optional(),\n text: z.string().optional(),\n error: z.string().optional(),\n timestamp: z.number().optional(),\n parameters: z.record(z.unknown()).optional(),\n valueSnippet: z.string().optional(),\n terminalId: z.string().optional(),\n fullOutput: z.string().optional(),\n /** The session ID of the spawned subagent, parsed from a system/init debug event */\n subagentSessionId: z.string().optional(),\n});\n\nconst ToolProgressUpdateNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.TOOL_PROGRESS_UPDATE),\n toolUseId: z.string(),\n toolName: z.string(),\n update: ToolProgressUpdateSchema,\n});\n\nconst CreateMessageNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.CREATE_MESSAGE),\n message: FactoryDroidMessageSchema,\n parentId: z.string().optional(),\n requestId: z.string().optional(),\n});\n\nconst ErrorNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.ERROR),\n message: z.string(),\n errorType: z.nativeEnum(DroidErrorType),\n timestamp: z.string(),\n error: z\n .object({\n name: z.string(),\n message: z.string(),\n })\n .optional(),\n});\n\nconst DroidWorkingStateChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.DROID_WORKING_STATE_CHANGED),\n newState: z.nativeEnum(DroidWorkingState),\n});\n\nexport const SessionCompactedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.SESSION_COMPACTED),\n summaryId: z.string(),\n removedCount: z.number().nonnegative(),\n visibleBoundaryMessageId: z.string().nullable(),\n});\n\nexport const LoopStateChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.LOOP_STATE_CHANGED),\n loopState: LoopStateSchema,\n});\n\nconst PermissionResolvedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.PERMISSION_RESOLVED),\n requestId: z.string(),\n toolUseIds: z.array(z.string()), // Array to match batched permission requests\n selectedOption: z.nativeEnum(ToolConfirmationOutcome),\n});\n\nconst SettingsUpdatedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.SETTINGS_UPDATED),\n requestId: z.string().optional(),\n settings: z.object({\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .optional()\n .describe('Deprecated: use interactionMode + autonomyLevel instead.'),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n enabledToolIds: z.array(z.string()).optional(),\n disabledToolIds: z.array(z.string()).optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n compactionThresholdCheckEnabled: z.boolean().optional(),\n }),\n});\n\nconst SessionTitleUpdatedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.SESSION_TITLE_UPDATED),\n requestId: z.string().optional(),\n title: z.string(),\n});\n\nconst McpStatusChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MCP_STATUS_CHANGED),\n servers: z.array(McpServerStatusInfoSchema),\n summary: McpStatusSummarySchema,\n});\n\nconst AssistantTextDeltaNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.ASSISTANT_TEXT_DELTA),\n messageId: z.string(),\n blockIndex: z.number(),\n textDelta: z.string(),\n});\n\nconst AssistantTextCompleteNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.ASSISTANT_TEXT_COMPLETE),\n messageId: z.string(),\n blockIndex: z.number(),\n});\n\nconst StructuredOutputNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.STRUCTURED_OUTPUT),\n messageId: z.string(),\n structuredOutput: z.record(z.unknown()).nullable(),\n});\n\nconst ThinkingTextDeltaNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.THINKING_TEXT_DELTA),\n messageId: z.string(),\n blockIndex: z.number(),\n textDelta: z.string(),\n});\n\nconst ThinkingTextCompleteNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.THINKING_TEXT_COMPLETE),\n messageId: z.string(),\n blockIndex: z.number(),\n durationMs: z.number().nonnegative().optional(),\n});\n\nexport const SessionTokenUsageChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.SESSION_TOKEN_USAGE_CHANGED),\n sessionId: z.string(),\n tokenUsage: TokenUsageSchema,\n inclusiveTokenUsage: TokenUsageSchema.optional(),\n // Latest provider-reported usage used by the compaction meter.\n lastCallTokenUsage: TokenUsageSchema.pick({\n inputTokens: true,\n cacheReadTokens: true,\n })\n .extend({\n outputTokens: TokenUsageSchema.shape.outputTokens.optional(),\n })\n .optional(),\n});\n\n// Mission notification schemas\nexport const MissionStateChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_STATE_CHANGED),\n state: z.nativeEnum(MissionState),\n updatedAt: z.string().optional(),\n});\n\nexport const MissionFeaturesChangedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_FEATURES_CHANGED),\n features: z.array(MissionFeatureSchema),\n});\n\nexport const MissionProgressEntryNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_PROGRESS_ENTRY),\n progressLog: z.array(ProgressLogEntrySchema),\n});\n\nexport const MissionHeartbeatNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_HEARTBEAT),\n timestamp: z.string(),\n});\n\nexport const MissionWorkerStartedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_WORKER_STARTED),\n workerSessionId: z.string(),\n});\n\nexport const MissionWorkerCompletedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MISSION_WORKER_COMPLETED),\n workerSessionId: z.string(),\n exitCode: z.number(),\n});\n\nconst McpAuthRequiredNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MCP_AUTH_REQUIRED),\n serverName: z.string(),\n authUrl: z.string(),\n message: z.string(),\n state: z.string(),\n});\n\nconst McpAuthCompletedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.MCP_AUTH_COMPLETED),\n serverName: z.string(),\n outcome: z.nativeEnum(McpAuthOutcome),\n message: z.string(),\n});\n\nconst HookCommandSchema = z.object({\n command: z.string(),\n timeout: z.number().optional(),\n});\n\nconst HookResultSchema = z.object({\n exitCode: z.number(),\n stdout: z.string(),\n stderr: z.string(),\n command: z.string().optional(),\n timeout: z.number().optional(),\n});\n\nexport const DroidHookEventSchema = z.enum([\n 'PreToolUse',\n 'PostToolUse',\n 'Notification',\n 'UserPromptSubmit',\n 'Stop',\n 'SubagentStop',\n 'PreCompact',\n 'SessionStart',\n 'SessionEnd',\n]);\n\nconst ToolCallNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.TOOL_CALL),\n toolUse: ToolUseSchema,\n});\n\nconst QueuedMessagesDiscardedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.QUEUED_MESSAGES_DISCARDED),\n text: z.string(),\n requestId: z.string().optional(),\n});\n\n/**\n * Internal keep-alive notification emitted while a long-running tool\n * (e.g. Execute/pytest) is actively running without producing new streaming\n * output. Consumed by the daemon to refresh the session inactivity timeout;\n * never forwarded to external clients.\n */\nconst ToolExecutionHeartbeatNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.TOOL_EXECUTION_HEARTBEAT),\n toolUseId: z.string(),\n toolName: z.string(),\n});\n\nconst HookExecutionStartedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.HOOK_EXECUTION_STARTED),\n hookId: z.string(),\n hookEventName: z.string(),\n hookMatcher: z.string().optional(),\n hookCommands: z.array(HookCommandSchema),\n hookToolCallId: z.string().optional(),\n isParallelExecution: z.boolean().optional(),\n parallelGroupId: z.string().optional(),\n});\n\nconst HookExecutionCompletedNotificationSchema = z.object({\n type: z.literal(SessionNotificationType.HOOK_EXECUTION_COMPLETED),\n hookId: z.string(),\n hookEventName: DroidHookEventSchema.optional(),\n hookMatcher: z.string().optional(),\n hookToolCallId: z.string().optional(),\n hookStatus: z.enum(['completed', 'error']),\n hookResults: z.array(HookResultSchema).optional(),\n});\n\nexport const SandboxStatusSchema = z.object({\n enabled: z.boolean(),\n mode: SandboxModeSchema.optional(),\n});\n\nexport const SessionNotificationSchemaList = [\n ToolResultNotificationSchema,\n ToolProgressUpdateNotificationSchema,\n CreateMessageNotificationSchema,\n ErrorNotificationSchema,\n DroidWorkingStateChangedNotificationSchema,\n SessionCompactedNotificationSchema,\n LoopStateChangedNotificationSchema,\n PermissionResolvedNotificationSchema,\n SettingsUpdatedNotificationSchema,\n SessionTitleUpdatedNotificationSchema,\n McpStatusChangedNotificationSchema,\n AssistantTextDeltaNotificationSchema,\n AssistantTextCompleteNotificationSchema,\n StructuredOutputNotificationSchema,\n ThinkingTextDeltaNotificationSchema,\n ThinkingTextCompleteNotificationSchema,\n SessionTokenUsageChangedNotificationSchema,\n // Mission notifications\n MissionStateChangedNotificationSchema,\n MissionFeaturesChangedNotificationSchema,\n MissionProgressEntryNotificationSchema,\n MissionHeartbeatNotificationSchema,\n MissionWorkerStartedNotificationSchema,\n MissionWorkerCompletedNotificationSchema,\n McpAuthRequiredNotificationSchema,\n McpAuthCompletedNotificationSchema,\n HookExecutionStartedNotificationSchema,\n HookExecutionCompletedNotificationSchema,\n ToolCallNotificationSchema,\n QueuedMessagesDiscardedNotificationSchema,\n ToolExecutionHeartbeatNotificationSchema,\n] as const;\n\nconst SessionNotificationParamsSchema = z.object({\n notification: z.discriminatedUnion('type', SessionNotificationSchemaList),\n});\n\nexport const SessionNotificationSchema = JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DroidClientMethod.SESSION_NOTIFICATION),\n params: SessionNotificationParamsSchema,\n});\n\n// Tool Confirmation Details schemas (matching TypeScript types in types.ts)\nconst EditToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.Edit),\n filePath: z.string(),\n fileName: z.string(),\n oldContent: z.string().optional(),\n newContent: z.string().optional(),\n});\n\nconst ExecuteToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.Execute),\n fullCommand: z.string(),\n command: z.string(),\n extractedCommands: z.array(z.string()).optional(),\n impactLevel: z.string().optional(),\n riskLevelReason: z.string().optional(),\n});\n\nconst CreateToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.Create),\n filePath: z.string(),\n fileName: z.string(),\n content: z.string(),\n});\n\nconst AskUserConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.AskUser),\n questionnaire: z.string(),\n parsed: z\n .object({\n questions: z.array(\n z.object({\n index: z.number(),\n topic: z.string(),\n question: z.string(),\n options: z.array(z.string()),\n })\n ),\n })\n .optional(),\n parseError: z\n .object({\n message: z.string(),\n line: z.number().optional(),\n })\n .optional(),\n});\n\nconst ExitSpecModeConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.ExitSpecMode),\n plan: z.string(),\n title: z.string().optional(),\n});\n\nconst ProposeMissionConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.ProposeMission),\n proposal: z.string(),\n title: z.string().optional(),\n});\n\nconst StartMissionRunConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.StartMissionRun),\n runningMissionCount: z.number(),\n runningMissionSessionIds: z.array(z.string()),\n});\n\nconst ApplyPatchToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.ApplyPatch),\n filePath: z.string(),\n fileName: z.string(),\n patchContent: z.string(),\n oldContent: z.string().optional(),\n newContent: z.string().optional(),\n});\n\nconst McpToolConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.McpTool),\n toolName: z.string(),\n impactLevel: z.string(),\n serverName: z.string().optional(),\n actualToolName: z.string().optional(),\n});\n\nconst SandboxViolationConfirmationDetailsSchema = z.object({\n type: z.literal(ToolConfirmationType.SandboxViolation),\n violatingToolName: z.string(),\n target: z.string(),\n operationType: z.nativeEnum(SandboxOperationType),\n violationType: z.nativeEnum(SandboxViolationType),\n reason: z.string(),\n violationReason: z.nativeEnum(SandboxViolationReason).optional(),\n isOrgDeny: z.boolean(),\n});\n\nexport const ToolConfirmationDetailsSchema = z.discriminatedUnion('type', [\n EditToolConfirmationDetailsSchema,\n ExecuteToolConfirmationDetailsSchema,\n CreateToolConfirmationDetailsSchema,\n AskUserConfirmationDetailsSchema,\n ExitSpecModeConfirmationDetailsSchema,\n ProposeMissionConfirmationDetailsSchema,\n StartMissionRunConfirmationDetailsSchema,\n ApplyPatchToolConfirmationDetailsSchema,\n McpToolConfirmationDetailsSchema,\n SandboxViolationConfirmationDetailsSchema,\n]);\n\nconst ToolConfirmationInfoSchema = z.object({\n toolUse: ToolUseSchema,\n confirmationType: z.nativeEnum(ToolConfirmationType),\n details: ToolConfirmationDetailsSchema,\n});\n\nexport const RequestPermissionRequestParamsSchema = z.object({\n toolUses: z.array(ToolConfirmationInfoSchema),\n options: z.array(ToolConfirmationListItemSchema),\n});\n\nexport const RequestPermissionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidClientMethod.REQUEST_PERMISSION),\n params: RequestPermissionRequestParamsSchema,\n});\n\n// ============================================================\n// Ask User (multi-question user input)\n// ============================================================\n\nexport const AskUserQuestionSchema = z.object({\n index: z.number(), // 1-based\n topic: z.string(),\n question: z.string(),\n options: z.array(z.string()),\n});\n\nexport const AskUserRequestParamsSchema = z.object({\n /** The tool call id that initiated this AskUser request */\n toolCallId: z.string(),\n questions: z.array(AskUserQuestionSchema),\n});\n\nexport const AskUserRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidClientMethod.ASK_USER),\n params: AskUserRequestParamsSchema,\n});\n\nexport const AskUserCollectedAnswerSchema = z.object({\n index: z.number(),\n question: z.string(),\n answer: z.string(),\n});\n\nexport const AskUserResultSchema = z.object({\n /** If true, the user cancelled the questionnaire */\n cancelled: z.boolean().optional(),\n answers: z.array(AskUserCollectedAnswerSchema),\n});\n\nexport const AskUserResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: AskUserResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const RequestPermissionResultSchema = z\n .object({\n selectedOption: z.nativeEnum(ToolConfirmationOutcome),\n comment: z.string().optional(),\n editedSpecContent: z.string().optional(),\n })\n .superRefine((value, ctx) => {\n if (\n value.selectedOption === ToolConfirmationOutcome.ProceedEdit &&\n typeof value.editedSpecContent !== 'string'\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'editedSpecContent is required when selectedOption is proceed_edit',\n path: ['editedSpecContent'],\n });\n }\n });\n\nexport const RequestPermissionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: RequestPermissionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const CliRequestOrNotificationSchema = JsonRpcEnvelopeSchema.and(\n z.discriminatedUnion('method', [\n SessionNotificationSchema,\n RequestPermissionRequestSchema,\n AskUserRequestSchema,\n ])\n);\n","import { z } from 'zod';\n\nimport {\n AskUserRequestParamsSchema,\n RequestPermissionRequestParamsSchema,\n SandboxStatusSchema,\n} from './cli.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n ContextCategoryColorKey,\n ContextStatsAccuracy,\n DecompSessionType,\n DroidLocation,\n DroidServerMethod,\n LLMModelTier,\n MessageRole,\n MessageVisibility,\n MissionState,\n ModelKind,\n ModelProvider,\n QueuePlacement,\n ReasoningEffort,\n ResolveQueuedUserMessageAction,\n SessionOrigin,\n SettingsLevel,\n SkillLocation,\n} from './enums.js';\nimport { HostIdSchema } from './host.js';\nimport {\n DroidInteractionModeSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n} from './json-rpc.js';\nimport { LoopStateSchema } from './loop.js';\nimport {\n McpHttpServerConfigFieldsSchema,\n McpRegistryServerSchema,\n McpServerNameSchema,\n McpServerStatusInfoSchema,\n McpServerTypeSchema,\n McpStatusSummarySchema,\n McpStdioServerConfigFieldsSchema,\n McpToolInfoSchema,\n} from './mcp.js';\nimport {\n Base64ImageSourceSchema,\n DocumentSourceSchema,\n FactoryDroidMessageSchema,\n} from './messages.js';\nimport {\n MissionFeatureSchema,\n ProgressLogEntrySchema,\n} from './mission-decomposition.js';\nimport { MissionModelSettingsSchema } from './model-settings.js';\nimport { SessionSourceSchema } from './session-source.js';\nimport { SessionTagSchema, TokenUsageSchema } from './session.js';\n\n/**\n * Schema for available model configuration returned in session init/load responses.\n * This represents both built-in models (feature-flag filtered) and custom BYOK models.\n */\nexport const AvailableModelConfigSchema = z.object({\n id: z.string(),\n displayName: z.string(),\n shortDisplayName: z.string(),\n modelProvider: z.nativeEnum(ModelProvider),\n supportedReasoningEfforts: z.array(z.nativeEnum(ReasoningEffort)),\n defaultReasoningEffort: z.nativeEnum(ReasoningEffort),\n isCustom: z.boolean().default(false),\n noImageSupport: z.boolean().optional(),\n tier: z.nativeEnum(LLMModelTier).optional(),\n tokenMultiplier: z.number().optional(),\n promoLabel: z.string().optional(),\n kind: z.nativeEnum(ModelKind).optional(),\n variantBadge: z.string().optional(),\n});\n\nexport const ContextStatsSchema = z.object({\n used: z.number(),\n remaining: z.number(),\n limit: z.number(),\n accuracy: z.nativeEnum(ContextStatsAccuracy),\n updatedAt: z.string(),\n});\n\nconst StdioMcpSchema = z.object({\n name: z.string(),\n command: z.string(),\n args: z.array(z.string()).default([]),\n env: z.record(z.string()).optional().default({}),\n});\n\nconst HttpHeaderSchema = z.object({\n name: z.string(),\n value: z.string(),\n});\n\nconst HttpMcpSchema = z.object({\n type: z.literal('http'),\n name: z.string(),\n url: z.string().url(),\n headers: HttpHeaderSchema.array().default([]),\n});\n\nconst SseMcpSchema = z.object({\n type: z.literal('sse'),\n name: z.string(),\n url: z.string().url(),\n headers: HttpHeaderSchema.array().default([]),\n});\n\nconst McpServersSchema = z\n .union([StdioMcpSchema, HttpMcpSchema, SseMcpSchema])\n .array();\n\nconst SessionSchema = z.object({\n messages: FactoryDroidMessageSchema.array(),\n title: z.string().optional(),\n});\n\n// Session type for mission decomposition (orchestrator manages workers)\nconst DecompSessionTypeSchema = z.nativeEnum(DecompSessionType);\n\nconst ToolOverrideParamsSchema = z.object({\n enabledToolIds: z.array(z.string()).optional(),\n disabledToolIds: z.array(z.string()).optional(),\n});\n\nexport const OutputFormatSchema = z.object({\n type: z.literal('json_schema'),\n schema: z.record(z.unknown()),\n});\n\nexport const InitializeSessionRequestParamsSchema = z\n .object({\n machineId: z.string(),\n cwd: z.string(),\n // Optional if we want to attach a session to a specific workspace\n workspaceId: z.string().optional(),\n // Optional if we want to create a session with a specific ID\n sessionId: z.string().optional(),\n mcpServers: McpServersSchema.optional(),\n // Session settings (optional - uses defaults from settings.json if not provided)\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .optional()\n .describe('Deprecated: use interactionMode + autonomyLevel instead.'),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n compactionThresholdCheckEnabled: z.boolean().optional(),\n /**\n * @deprecated use session tags instead: mission decomposition session\n * type (orchestrator or worker). undefined = standard session (not part of decomposition)\n */\n decompSessionType: DecompSessionTypeSchema.optional(),\n /**\n * @deprecated use session tags instead: mission id for worker sessions\n * (links worker back to its orchestrator's mission)\n */\n decompMissionId: z.string().optional(),\n // Skip permission checks (used by worker sessions running autonomously)\n skipPermissionsUnsafe: z.boolean().optional(),\n // Session metadata for delegations (Linear, Slack, etc.)\n sessionLocation: z.string().optional(),\n sessionSource: SessionSourceSchema.optional(),\n sessionOriginHint: z.nativeEnum(SessionOrigin).optional(),\n tags: z.array(SessionTagSchema).optional(),\n // OAuth callback URI for MCP auth relay (set by frontend based on web vs desktop client)\n mcpOAuthCallbackUri: z.string().optional(),\n /**\n * When true, the daemon should create or reuse a git worktree rooted\n * at `cwd` and run the session there. The original `cwd` is used to\n * locate the git repo; the actual session cwd becomes the worktree\n * path. No-op when `cwd` is not inside a git repository.\n */\n worktree: z.boolean().optional(),\n /**\n * Optional override for where the worktree directory is created.\n * Falls back to the user's `worktreeDirectory` setting (or the\n * sibling-of-repo default) when omitted.\n */\n worktreeDir: z.string().optional(),\n })\n .merge(ToolOverrideParamsSchema);\n\nexport const LoadSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n mcpServers: McpServersSchema.optional(),\n loadAllMessages: z.boolean().optional(),\n // OAuth callback URI for MCP auth relay (set by frontend based on web vs desktop client)\n mcpOAuthCallbackUri: z.string().optional(),\n});\n\nexport const AddUserMessageRequestParamsSchema = z.object({\n messageId: z.string().optional(),\n text: z.string(),\n images: Base64ImageSourceSchema.array().optional(),\n files: DocumentSourceSchema.array().optional(),\n outputFormat: OutputFormatSchema.optional(),\n skipAgentLoop: z.boolean().optional(),\n queuePlacement: z.nativeEnum(QueuePlacement).optional(),\n role: z.nativeEnum(MessageRole).optional(),\n visibility: z.nativeEnum(MessageVisibility).optional(),\n userMessageSource: z.nativeEnum(SessionOrigin).optional(),\n});\n\nconst QueuePlacementSchema = z.nativeEnum(QueuePlacement);\n\nexport const ResolveQueuedUserMessageRequestParamsSchema = z.discriminatedUnion(\n 'action',\n [\n z.object({\n requestId: z.string(),\n action: z.literal(ResolveQueuedUserMessageAction.UpdateQueue),\n queuePlacement: QueuePlacementSchema,\n }),\n z.object({\n requestId: z.string(),\n action: z.literal(ResolveQueuedUserMessageAction.Delete),\n }),\n ]\n);\n\nexport const InterruptSessionRequestParamsSchema = z.object({});\n\nconst CloseSessionRequestParamsSchema = z.object({\n reason: z.enum(['clear', 'logout', 'prompt_input_exit', 'other']).optional(),\n});\n\nexport const CloseSessionResultSchema = z.object({});\n\nexport const KillWorkerSessionRequestParamsSchema = z.object({\n workerSessionId: z.string(),\n});\n\nexport const KillWorkerSessionResultSchema = z.object({});\n\nexport const UpdateSessionSettingsRequestParamsSchema = z\n .object({\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .optional()\n .describe('Deprecated: use interactionMode + autonomyLevel instead.'),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n specModeModelId: z.string().nullable().optional(),\n specModeReasoningEffort: z\n .nativeEnum(ReasoningEffort)\n .nullable()\n .optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n tags: z.array(SessionTagSchema).optional(),\n compactionTokenLimit: z.number().optional(),\n compactionThresholdCheckEnabled: z.boolean().optional(),\n })\n .merge(ToolOverrideParamsSchema);\n\nconst SessionSettingsSchema = z\n .object({\n modelId: z.string(),\n reasoningEffort: z.nativeEnum(ReasoningEffort),\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .optional()\n .describe('Deprecated: use interactionMode + autonomyLevel instead.'),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n tags: z.array(SessionTagSchema).optional(),\n sandbox: SandboxStatusSchema.optional(),\n compactionThresholdCheckEnabled: z.boolean().optional(),\n })\n .merge(ToolOverrideParamsSchema);\n\nconst GitRepoInfoSchema = z.object({\n owner: z.string().optional(),\n repoName: z.string(),\n});\n\n/**\n * Worktree metadata returned to the client when a session is created in\n * an isolated git worktree. Surfaces the branch + path so the UI can\n * display badges and the user can locate the worktree on disk.\n */\nconst SessionWorktreeInfoSchema = z.object({\n branch: z.string(),\n path: z.string(),\n repoRoot: z.string().optional(),\n isNewlyCreated: z.boolean(),\n});\n\nexport const InitializeSessionResultSchema = z.object({\n sessionId: z.string(),\n hostId: HostIdSchema.optional(),\n session: SessionSchema,\n mcpServers: McpServersSchema.optional(),\n settings: SessionSettingsSchema,\n gitRepo: GitRepoInfoSchema.optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n worktree: SessionWorktreeInfoSchema.optional(),\n});\n\nexport const WorkerStateInfoSchema = z.object({\n startedAt: z.string(),\n completedAt: z.string().optional(),\n exitCode: z.number().optional(),\n});\n\n// Mission snapshot schema (optional, only for orchestrator sessions)\nexport const MissionStateSchema = z.object({\n state: z.nativeEnum(MissionState),\n updatedAt: z.string().optional(),\n title: z.string().optional(),\n workingDirectory: z.string().optional(),\n features: z.array(MissionFeatureSchema),\n progressLog: z.array(ProgressLogEntrySchema),\n workerSessionIds: z.array(z.string()),\n workerStates: z.record(WorkerStateInfoSchema).optional(),\n tokenUsage: TokenUsageSchema.optional(),\n tokenUsageBySessionId: z.record(TokenUsageSchema).optional(),\n});\n\nexport const LoadSessionResultSchema = z.object({\n session: SessionSchema,\n hostId: HostIdSchema.optional(),\n mcpServers: McpServersSchema.optional(),\n pendingPermissions: z\n .array(\n RequestPermissionRequestParamsSchema.extend({\n requestId: z.string(),\n })\n )\n .optional(),\n pendingAskUserRequests: z\n .array(\n AskUserRequestParamsSchema.extend({\n requestId: z.string(),\n })\n )\n .optional(),\n settings: SessionSettingsSchema,\n isAgentLoopInProgress: z.boolean().optional(),\n queuedMessages: z\n .array(\n AddUserMessageRequestParamsSchema.extend({\n requestId: z.string(),\n })\n )\n .optional(),\n gitRepo: GitRepoInfoSchema.optional(),\n cwd: z.string().optional(),\n callingSessionId: z.string().optional(),\n callingToolUseId: z.string().optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n // Token usage for the session (input, output, cache tokens)\n tokenUsage: TokenUsageSchema.optional(),\n // Mission state (only for orchestrator sessions with active missions)\n mission: MissionStateSchema.optional(),\n // Session type for mission decomposition (orchestrator or worker)\n decompSessionType: DecompSessionTypeSchema.optional(),\n loopState: LoopStateSchema.nullable().optional(),\n});\n\nexport const AddUserMessageResultSchema = z.object({});\n\nexport const ResolveQueuedUserMessageResultSchema = z.object({});\n\nexport const InterruptSessionResultSchema = z.object({});\n\nexport const UpdateSessionSettingsResultSchema = z.object({});\n\nexport const GetUserInfoResultSchema = z.object({\n userId: z.string(),\n orgId: z.string(),\n});\n\nexport const ValidateWorkingDirectoryResultSchema = z.object({\n isValid: z.boolean(),\n error: z.string().optional(),\n /**\n * The fully-resolved absolute path (tilde expanded, `..`/`.` normalized,\n * symlinks canonicalized). Set by daemons that support it when\n * `isValid === true`. Optional for backwards compatibility with daemons\n * that predate the field — callers should fall back to the original\n * user input when absent.\n */\n resolvedPath: z.string().optional(),\n});\n\nexport const InitializeSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.INITIALIZE_SESSION),\n params: InitializeSessionRequestParamsSchema,\n});\n\nexport const LoadSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LOAD_SESSION),\n params: LoadSessionRequestParamsSchema,\n});\n\nexport const AddUserMessageRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.ADD_USER_MESSAGE),\n params: AddUserMessageRequestParamsSchema,\n});\n\nexport const ResolveQueuedUserMessageRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.RESOLVE_QUEUED_USER_MESSAGE),\n params: ResolveQueuedUserMessageRequestParamsSchema,\n });\n\nexport const InterruptSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.INTERRUPT_SESSION),\n params: InterruptSessionRequestParamsSchema,\n});\n\nexport const CloseSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.CLOSE_SESSION),\n params: CloseSessionRequestParamsSchema,\n});\n\nexport const KillWorkerSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.KILL_WORKER_SESSION),\n params: KillWorkerSessionRequestParamsSchema,\n});\n\nexport const UpdateSessionSettingsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.UPDATE_SESSION_SETTINGS),\n params: UpdateSessionSettingsRequestParamsSchema,\n });\n\n// MCP server management requests\nconst McpServerNameParamsSchema = z.object({\n serverName: McpServerNameSchema,\n});\n\n// MCP config mutations are applied via user-level overrides only.\nconst McpSettingsLevelSchema = z.literal(SettingsLevel.User);\n\nconst McpHttpServerAddFieldsSchema = McpHttpServerConfigFieldsSchema.extend({\n headers: z.record(z.string()).optional(),\n});\n\nconst McpStdioServerAddFieldsSchema = McpStdioServerConfigFieldsSchema.extend({\n env: z.record(z.string()).optional(),\n});\n\nexport const ToggleMcpServerRequestParamsSchema =\n McpServerNameParamsSchema.extend({\n enabled: z.boolean(),\n settingsLevel: McpSettingsLevelSchema,\n });\n\nconst ToggleMcpServerResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const ToggleMcpServerRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.TOGGLE_MCP_SERVER),\n params: ToggleMcpServerRequestParamsSchema,\n});\n\nexport const AuthenticateMcpServerRequestParamsSchema =\n McpServerNameParamsSchema.extend({});\n\nconst AuthenticateMcpServerResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const AuthenticateMcpServerRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.AUTHENTICATE_MCP_SERVER),\n params: AuthenticateMcpServerRequestParamsSchema,\n });\n\nexport const CancelMcpAuthRequestParamsSchema =\n McpServerNameParamsSchema.extend({});\n\nconst CancelMcpAuthResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const CancelMcpAuthRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.CANCEL_MCP_AUTH),\n params: CancelMcpAuthRequestParamsSchema,\n});\n\nexport const ClearMcpAuthRequestParamsSchema = McpServerNameParamsSchema.extend(\n {}\n);\n\nconst ClearMcpAuthResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const ClearMcpAuthRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.CLEAR_MCP_AUTH),\n params: ClearMcpAuthRequestParamsSchema,\n});\n\n// Submit MCP auth code (for remote sessions)\nexport const SubmitMcpAuthCodeRequestParamsSchema = z.object({\n serverName: McpServerNameSchema,\n code: z.string(),\n state: z.string(),\n});\n\nconst SubmitMcpAuthCodeResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const SubmitMcpAuthCodeRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.SUBMIT_MCP_AUTH_CODE),\n params: SubmitMcpAuthCodeRequestParamsSchema,\n});\n\nexport const SubmitMcpAuthCodeResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: SubmitMcpAuthCodeResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Add MCP server request\nexport const AddMcpServerRequestParamsSchema = z\n .object({\n name: McpServerNameSchema,\n type: McpServerTypeSchema,\n })\n .merge(McpHttpServerAddFieldsSchema)\n .merge(McpStdioServerAddFieldsSchema);\n\nconst AddMcpServerResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const AddMcpServerRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.ADD_MCP_SERVER),\n params: AddMcpServerRequestParamsSchema,\n});\n\n// Remove MCP server request\nexport const RemoveMcpServerRequestParamsSchema =\n McpServerNameParamsSchema.extend({\n settingsLevel: McpSettingsLevelSchema,\n });\n\nconst RemoveMcpServerResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const RemoveMcpServerRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.REMOVE_MCP_SERVER),\n params: RemoveMcpServerRequestParamsSchema,\n});\n\n// List MCP registry request (returns available servers from hardcoded registry)\nexport const ListMcpRegistryRequestParamsSchema = z.object({});\n\nexport const ListMcpRegistryResultSchema = z.object({\n servers: z.array(McpRegistryServerSchema),\n});\n\nexport const ListMcpRegistryRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_REGISTRY),\n params: ListMcpRegistryRequestParamsSchema,\n});\n\n// List MCP tools request (returns all tools with enabled/disabled state)\nexport const ListMcpToolsRequestParamsSchema = z.object({});\n\nexport const ListMcpToolsResultSchema = z.object({\n tools: z.array(McpToolInfoSchema),\n});\n\nexport const ListMcpToolsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_TOOLS),\n params: ListMcpToolsRequestParamsSchema,\n});\n\nconst ToolCatalogCategorySchema = z.enum(['read', 'edit', 'execute', 'other']);\n\nconst ExecToolInfoSchema = z.object({\n id: z.string(),\n llmId: z.string(),\n displayName: z.string(),\n description: z.string(),\n category: ToolCatalogCategorySchema,\n defaultAllowed: z.boolean(),\n currentlyAllowed: z.boolean(),\n});\n\nexport const ListToolsRequestParamsSchema =\n UpdateSessionSettingsRequestParamsSchema.pick({\n modelId: true,\n autonomyMode: true,\n interactionMode: true,\n autonomyLevel: true,\n specModeModelId: true,\n enabledToolIds: true,\n disabledToolIds: true,\n }).extend({\n skipPermissionsUnsafe: z.boolean().optional(),\n depth: z.number().int().min(0).optional(),\n });\n\nexport const ListToolsResultSchema = z.object({\n tools: z.array(ExecToolInfoSchema),\n});\n\nexport const ListToolsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_TOOLS),\n params: ListToolsRequestParamsSchema,\n});\n\n// List MCP servers request (returns current server status, same shape as MCP_STATUS_CHANGED notification)\nexport const ListMcpServersRequestParamsSchema = z.object({});\n\nexport const ListMcpServersResultSchema = z.object({\n servers: z.array(McpServerStatusInfoSchema),\n summary: McpStatusSummarySchema,\n});\n\nexport const ListMcpServersRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_MCP_SERVERS),\n params: ListMcpServersRequestParamsSchema,\n});\n\n// Toggle MCP tool request (enable/disable a specific tool)\nexport const ToggleMcpToolRequestParamsSchema =\n McpServerNameParamsSchema.extend({\n toolName: z.string(),\n enabled: z.boolean(),\n });\n\nconst ToggleMcpToolResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const ToggleMcpToolRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.TOGGLE_MCP_TOOL),\n params: ToggleMcpToolRequestParamsSchema,\n});\n\n// List skills request (returns all available skills)\nconst ListSkillsRequestParamsSchema = z.object({});\n\n// Resource file in a skill folder (anything except SKILL.md)\nconst SkillResourceSchema = z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['reference', 'asset']), // reference = .md files, asset = other files\n});\n\nexport const SkillInfoSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n location: z.nativeEnum(SkillLocation),\n filePath: z.string(),\n enabled: z.boolean().optional(),\n userInvocable: z.boolean().optional(),\n version: z.string().optional(),\n // Full SKILL.md content (markdown)\n content: z.string().optional(),\n // Other files in the skill folder\n resources: z.array(SkillResourceSchema).optional(),\n});\n\nconst ListSkillsResultSchema = z.object({\n skills: z.array(SkillInfoSchema),\n});\n\nexport const ListSkillsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_SKILLS),\n params: ListSkillsRequestParamsSchema,\n});\n\n// List commands request (returns all custom slash commands)\nconst ListCommandsRequestParamsSchema = z.object({});\n\nexport const CustomCommandInfoSchema = z.object({\n name: z.string(),\n description: z.string(),\n argumentHint: z.string().optional(),\n // Whether the command is backed by an executable script (resolution runs it)\n isExecutable: z.boolean().optional(),\n});\n\nconst ListCommandsResultSchema = z.object({\n commands: z.array(CustomCommandInfoSchema),\n});\n\nexport const ListCommandsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.LIST_COMMANDS),\n params: ListCommandsRequestParamsSchema,\n});\n\nconst GetContextStatsRequestParamsSchema = z.object({});\n\nexport { ContextStatsSchema as GetContextStatsResultSchema };\n\nexport const GetContextStatsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.GET_CONTEXT_STATS),\n params: GetContextStatsRequestParamsSchema,\n});\n\nconst ContextBreakdownCategorySchema = z.object({\n name: z.string(),\n tokens: z.number(),\n colorKey: z.nativeEnum(ContextCategoryColorKey),\n});\n\nconst ContextBreakdownSkillEntrySchema = z.object({\n name: z.string(),\n location: z.nativeEnum(SkillLocation),\n tokens: z.number(),\n});\n\nconst ContextBreakdownMcpServerEntrySchema = z.object({\n name: z.string(),\n toolCount: z.number(),\n tokens: z.number(),\n});\n\nconst ContextBreakdownDroidEntrySchema = z.object({\n name: z.string(),\n location: z.nativeEnum(DroidLocation),\n tokens: z.number(),\n});\n\nconst GetContextBreakdownRequestParamsSchema = z.object({});\n\nexport const GetContextBreakdownResultSchema = z.object({\n modelId: z.string(),\n modelDisplayName: z.string(),\n contextBudget: z.number(),\n lastCallCompactionTokens: z.number().optional(),\n usedTokens: z.number(),\n freeTokens: z.number(),\n categories: z.array(ContextBreakdownCategorySchema),\n skills: z.array(ContextBreakdownSkillEntrySchema),\n mcpServers: z.array(ContextBreakdownMcpServerEntrySchema),\n droids: z.array(ContextBreakdownDroidEntrySchema),\n});\n\nexport const GetContextBreakdownRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DroidServerMethod.GET_CONTEXT_BREAKDOWN),\n params: GetContextBreakdownRequestParamsSchema,\n }\n);\n\n// Submit bug report request (creates and uploads bug report with session data)\nconst SubmitBugReportRequestParamsSchema = z.object({\n userComment: z.string(),\n clientLogs: z.string().optional(),\n});\n\nexport const SubmitBugReportResultSchema = z.object({\n bugReportId: z.string(),\n});\n\nexport const SubmitBugReportRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.SUBMIT_BUG_REPORT),\n params: SubmitBugReportRequestParamsSchema,\n});\n\n// Rewind schemas\n\nconst GetRewindInfoRequestParamsSchema = z.object({\n sessionId: z.string(),\n messageId: z.string(),\n});\n\nconst RewindFileSnapshotSchema = z.object({\n filePath: z.string(),\n contentHash: z.string(),\n size: z.number(),\n});\n\nconst RewindFileCreationSchema = z.object({\n filePath: z.string(),\n});\n\nconst RewindEvictedFileSchema = z.object({\n filePath: z.string(),\n reason: z.string(),\n});\n\nexport const GetRewindInfoResultSchema = z.object({\n availableFiles: z.array(RewindFileSnapshotSchema),\n createdFiles: z.array(RewindFileCreationSchema),\n evictedFiles: z.array(RewindEvictedFileSchema),\n});\n\nexport const GetRewindInfoRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.GET_REWIND_INFO),\n params: GetRewindInfoRequestParamsSchema,\n});\n\nconst ExecuteRewindRequestParamsSchema = z.object({\n sessionId: z.string(),\n messageId: z.string(),\n filesToRestore: z.array(RewindFileSnapshotSchema),\n filesToDelete: z.array(RewindFileCreationSchema),\n forkTitle: z.string(),\n});\n\nexport const ExecuteRewindResultSchema = z.object({\n newSessionId: z.string(),\n restoredCount: z.number(),\n deletedCount: z.number(),\n failedRestoreCount: z.number(),\n failedDeleteCount: z.number(),\n});\n\nexport const ExecuteRewindRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.EXECUTE_REWIND),\n params: ExecuteRewindRequestParamsSchema,\n});\n\n// Compact session schemas\n\nconst CompactSessionRequestParamsSchema = z.object({\n customInstructions: z.string().optional(),\n});\n\nexport const CompactSessionResultSchema = z.object({\n newSessionId: z.string(),\n removedCount: z.number(),\n});\n\nexport const CompactSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.COMPACT_SESSION),\n params: CompactSessionRequestParamsSchema,\n});\n\nexport const CompactSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CompactSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ForkSessionResultSchema = z.object({\n newSessionId: z.string(),\n});\n\nexport const ForkSessionRequestParamsSchema = z.object({\n title: z.string().optional(),\n tags: z\n .array(\n z.object({ name: z.string(), metadata: z.record(z.string()).optional() })\n )\n .optional(),\n});\n\nexport const ForkSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.FORK_SESSION),\n params: ForkSessionRequestParamsSchema,\n});\n\nexport const ForkSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ForkSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Rename Session\nexport const RenameSessionRequestParamsSchema = z.object({\n title: z.string(),\n});\n\nexport const RenameSessionResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const RenameSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.RENAME_SESSION),\n params: RenameSessionRequestParamsSchema,\n});\n\nexport const RenameSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: RenameSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Cache warmup\nexport const WarmupCacheRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DroidServerMethod.WARMUP_CACHE),\n params: z.object({}),\n});\n\nexport const WarmupCacheResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: z.object({}),\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ClientRequestSchema = z.discriminatedUnion('method', [\n InitializeSessionRequestSchema,\n LoadSessionRequestSchema,\n InterruptSessionRequestSchema,\n CloseSessionRequestSchema,\n KillWorkerSessionRequestSchema,\n AddUserMessageRequestSchema,\n ResolveQueuedUserMessageRequestSchema,\n UpdateSessionSettingsRequestSchema,\n ToggleMcpServerRequestSchema,\n AuthenticateMcpServerRequestSchema,\n CancelMcpAuthRequestSchema,\n ClearMcpAuthRequestSchema,\n AddMcpServerRequestSchema,\n RemoveMcpServerRequestSchema,\n ListMcpRegistryRequestSchema,\n ListMcpToolsRequestSchema,\n ListToolsRequestSchema,\n ListMcpServersRequestSchema,\n ToggleMcpToolRequestSchema,\n SubmitMcpAuthCodeRequestSchema,\n ListSkillsRequestSchema,\n ListCommandsRequestSchema,\n GetContextStatsRequestSchema,\n GetContextBreakdownRequestSchema,\n SubmitBugReportRequestSchema,\n GetRewindInfoRequestSchema,\n ExecuteRewindRequestSchema,\n CompactSessionRequestSchema,\n ForkSessionRequestSchema,\n RenameSessionRequestSchema,\n WarmupCacheRequestSchema,\n]);\n\nexport const InitializeSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: InitializeSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const LoadSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: LoadSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const AddUserMessageResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: AddUserMessageResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ResolveQueuedUserMessageResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ResolveQueuedUserMessageResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const InterruptSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: InterruptSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const CloseSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CloseSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const KillWorkerSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: KillWorkerSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const UpdateSessionSettingsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: UpdateSessionSettingsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ToggleMcpServerResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ToggleMcpServerResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const AuthenticateMcpServerResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: AuthenticateMcpServerResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const CancelMcpAuthResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CancelMcpAuthResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ClearMcpAuthResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ClearMcpAuthResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const AddMcpServerResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: AddMcpServerResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const RemoveMcpServerResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: RemoveMcpServerResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListMcpRegistryResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListMcpRegistryResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListMcpToolsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListMcpToolsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListToolsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListToolsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListMcpServersResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListMcpServersResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ToggleMcpToolResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ToggleMcpToolResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListSkillsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListSkillsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListCommandsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListCommandsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const GetContextStatsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ContextStatsSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const GetContextBreakdownResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: GetContextBreakdownResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const SubmitBugReportResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: SubmitBugReportResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const GetRewindInfoResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: GetRewindInfoResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ExecuteRewindResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ExecuteRewindResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n","/** Named schedule cadences */\nexport enum AutomationScheduleCadence {\n Daily = 'daily',\n Weekly = 'weekly',\n Monthly = 'monthly',\n}\n\n/** Types of validation issues */\nexport enum AutomationValidationIssueType {\n MissingFile = 'missing_file',\n InvalidFrontmatter = 'invalid_frontmatter',\n InvalidSchedule = 'invalid_schedule',\n ParseError = 'parse_error',\n}\n\n// =============================================================================\n// Control-plane enums\n// =============================================================================\n\n/**\n * Control-plane error codes.\n *\n * These codes enable deterministic error handling across CLI/desktop surfaces.\n */\nexport enum AutomationErrorCode {\n /** Automation with the given ID was not found */\n NotFound = 'AUTOMATION_NOT_FOUND',\n /** Automation already exists with the given ID */\n AlreadyExists = 'AUTOMATION_ALREADY_EXISTS',\n /** Invalid automation ID format */\n InvalidId = 'INVALID_AUTOMATION_ID',\n /** Invalid configuration (e.g., invalid schedule) */\n InvalidConfig = 'INVALID_AUTOMATION_CONFIG',\n /** Automation is already in the requested state */\n AlreadyInState = 'ALREADY_IN_STATE',\n /** A run is already in progress for this automation */\n RunInProgress = 'RUN_IN_PROGRESS',\n /** Heartbeat execution failed */\n ExecutionFailed = 'EXECUTION_FAILED',\n /** General internal error */\n InternalError = 'INTERNAL_ERROR',\n}\n\n/** Privacy level for an automation */\nexport enum AutomationPrivacyLevel {\n /** Only visible to the creator */\n Private = 'private',\n /** Visible to all members of the organization */\n Organization = 'organization',\n}\n","import { z } from 'zod';\n\nimport { AutomationPrivacyLevel } from './automations-enums.js';\n\nexport const AutomationCreatedBySchema = z.object({\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n});\n\nexport type AutomationCreatedBy = z.infer<typeof AutomationCreatedBySchema>;\n\n/**\n * Schema for the on-disk YAML metadata in HEARTBEAT.md frontmatter.\n *\n * This is the flat representation stored between `---` delimiters.\n * Differs from AutomationConfig in that `schedule` is a plain string\n * (e.g. \"daily\", \"0 9 * * 1-5\") rather than the runtime\n * `{ cadence: string }` shape.\n */\nexport const AutomationsHeartbeatSchema = z.object({\n id: z.string().uuid().optional(),\n name: z.string(),\n description: z.string().optional(),\n schedule: z.string(),\n model: z.string().optional(),\n tags: z.array(z.string()).optional(),\n paused: z.boolean().optional(),\n privacyLevel: z.nativeEnum(AutomationPrivacyLevel).optional(),\n createdBy: AutomationCreatedBySchema.optional(),\n forkedFrom: z.string().optional(),\n});\n\nexport type AutomationsHeartbeat = z.infer<typeof AutomationsHeartbeatSchema>;\n","import { z } from 'zod';\n\nconst CronExpressionSchema = z\n .string()\n .trim()\n .regex(/^(\\S+\\s+){4}\\S+$/, 'Expected a standard 5-field cron expression');\n\nexport const CronCreateToolInputSchema = z.object({\n expression: CronExpressionSchema.describe(\n 'Standard 5-field cron expression in local time.'\n ),\n job: z.object({\n type: z.literal('prompt'),\n prompt: z.string().trim().min(1),\n }),\n target: z\n .object({\n type: z.literal('same_session'),\n })\n .optional(),\n recurring: z.boolean().describe('true for recurring tasks, false for once'),\n});\n\nexport const CronDeleteToolInputSchema = z.object({\n cronId: z.string().length(8),\n});\n\nexport const CronListToolInputSchema = z.object({});\n","import { z } from 'zod';\n\nimport { DecompSessionType } from './enums.js';\nimport { HostIdSchema } from './host.js';\n\n/**\n * Auto-stage for session title generation.\n * Tracks whether the title was generated from the first message or first file edit.\n */\nexport enum SessionTitleAutoStage {\n FirstMessage = 'first_message',\n FirstFileEdit = 'first_file_edit',\n}\n\n/**\n * Schema for the first line (session_start event) of a session .jsonl file.\n * This is the canonical definition of the session summary format on disk.\n */\nexport const SessionSummaryEventSchema = z.object({\n type: z.literal('session_start'),\n id: z.string(),\n title: z.string(),\n sessionTitle: z.string().optional(),\n isSessionTitleManuallySet: z.boolean().optional(),\n sessionTitleAutoStage: z.nativeEnum(SessionTitleAutoStage).optional(),\n owner: z.string(),\n parent: z.string().nullable().optional(),\n version: z.number().optional(),\n cwd: z.string().optional(),\n lastCwd: z.string().optional(),\n decompSessionType: z.nativeEnum(DecompSessionType).optional(),\n decompMissionId: z.string().optional(),\n callingSessionId: z.string().optional(),\n callingToolUseId: z.string().optional(),\n // Durable execution-store identity for this local session file.\n hostId: HostIdSchema.optional(),\n});\n\nexport type SessionSummaryEvent = z.infer<typeof SessionSummaryEventSchema>;\n","import { z } from 'zod';\n\nexport const GenericToolExecutionOutputSchema = z.union([\n z.record(z.string(), z.any()),\n z.string(),\n z.array(z.union([z.string(), z.record(z.string(), z.any())])),\n]);\n\nexport type GenericToolExecutionOutput = z.infer<\n typeof GenericToolExecutionOutputSchema\n>;\n","// `TokenUsageSchema` is imported from `./session.js` rather than redeclared\n// here, to avoid duplicate barrel exports for the same shape.\n\nimport { z } from 'zod';\n\nimport { ApiProvider, ModelProvider, ReasoningEffort } from './enums.js';\nimport { TokenUsageSchema } from './session.js';\nimport { SessionTagSchema } from './session.js';\nimport {\n CompactionModelSchema,\n SessionDefaultSettingsSchema,\n} from './settings.js';\n\n/**\n * Cached pick written once per Factory Router session (or overridden by the\n * upgrade tool). Resumes + sub-agents read it instead of re-routing.\n */\nexport const EffectiveFactoryRouterModelSchema = z\n .object({\n modelId: z.string(),\n apiProvider: z.nativeEnum(ApiProvider),\n reasoningEffort: z.nativeEnum(ReasoningEffort),\n })\n .strict();\n\n/**\n * Session settings schema.\n * Settings persisted to .settings.json for each session.\n */\nexport const SessionSettingsSchema = SessionDefaultSettingsSchema.extend({\n providerLock: z.nativeEnum(ModelProvider).optional(),\n providerLockTimestamp: z.string().optional(),\n apiProviderLock: z.nativeEnum(ApiProvider).optional(),\n assistantActiveTimeMs: z.number().optional(),\n tokenUsage: TokenUsageSchema.optional(),\n inclusiveTokenUsage: TokenUsageSchema.optional(),\n childInclusiveTokenUsageBySessionId: z.record(TokenUsageSchema).optional(),\n\n /**\n * ISO timestamp when the session was archived.\n * Presence indicates archived status (omit to unarchive).\n */\n archivedAt: z.string().optional(),\n\n /** Session tags for categorization */\n tags: z.array(SessionTagSchema).optional(),\n\n /** Additional tool IDs enabled for this session */\n enabledToolIds: z.array(z.string()).optional(),\n\n /** Tool IDs explicitly disabled for this session */\n disabledToolIds: z.array(z.string()).optional(),\n\n /** Model to use for compaction; \"current-model\" follows the session/spec model. */\n compactionModel: CompactionModelSchema.optional(),\n /** Whether threshold-based automatic compaction is enabled for this session */\n compactionThresholdCheckEnabled: z.boolean().optional(),\n\n effectiveFactoryRouterModel: EffectiveFactoryRouterModelSchema.optional(),\n});\n","/**\n * The execution location for an tool:\n * - Client: The tool is executed in the UI context (e.g. change the page).\n * - Server: The tool is executed server-side (e.g. a code search).\n * - Both: The tool can be executed in either environment depending on runtime logic.\n */\nexport enum ToolExecutionLocation {\n Client = 'client',\n Server = 'server',\n Both = 'both',\n}\n\n/**\n * Common status values for tool execution.\n * Used for tracking the progress and final outcome of an tool's execution.\n */\nexport enum ToolStatus {\n Pending = 'pending',\n Running = 'running',\n Completed = 'completed',\n Failed = 'failed',\n}\nexport enum RiskLevel {\n LOW = 'low',\n MEDIUM = 'medium',\n HIGH = 'high',\n}\n","import { z } from 'zod';\n\nimport { RiskLevel } from './tools-enums.js';\n\n// ============================================================\n// Common Tool Input Schemas\n// These schemas define the input parameters for tools and are\n// shared between droid-core (execution) and component-library (rendering)\n// ============================================================\n\n/**\n * Edit tool input (Anthropic-style find/replace)\n */\nexport const EditToolInputSchema = z.object({\n file_path: z.string(),\n old_str: z.string(),\n new_str: z.string(),\n change_all: z.boolean().optional(),\n});\n\n/**\n * Create tool input\n */\nexport const CreateToolInputSchema = z.object({\n file_path: z.string(),\n content: z.string(),\n});\n\n/**\n * Read tool input\n */\nexport const ReadToolInputSchema = z.object({\n file_path: z.string(),\n offset: z.number().optional(),\n limit: z.number().optional(),\n image_quality: z.enum(['default', 'high']).optional(),\n});\n\n/**\n * Execute tool input\n */\nexport const ExecuteToolInputSchema = z.object({\n summary: z.string().optional(),\n command: z.string(),\n timeout: z.number().optional(),\n riskLevel: z.nativeEnum(RiskLevel).optional(),\n riskLevelReason: z.string().optional(),\n fireAndForget: z.boolean().optional(),\n});\n\n/**\n * Glob tool input\n */\nexport const GlobToolInputSchema = z.object({\n patterns: z.array(z.string()).optional(),\n folder: z.string().optional(),\n excludePatterns: z.array(z.string()).optional(),\n});\n\n/**\n * Grep tool input\n */\nexport const GrepToolInputSchema = z.object({\n pattern: z.string(),\n path: z.string().optional(),\n glob_pattern: z.string().optional(),\n case_insensitive: z.boolean().optional(),\n output_mode: z.enum(['file_paths', 'content']).optional(),\n context: z.number().optional(),\n context_before: z.number().optional(),\n context_after: z.number().optional(),\n line_numbers: z.boolean().optional(),\n head_limit: z.number().optional(),\n});\n\n/**\n * LS tool input\n */\nexport const LSToolInputSchema = z.object({\n directory_path: z.string().optional(),\n ignorePatterns: z.array(z.string()).optional(),\n});\n\n/**\n * WebSearch tool input\n */\nexport const WebSearchToolInputSchema = z.object({\n query: z.string(),\n numResults: z.number().optional(),\n includeDomains: z.array(z.string()).optional(),\n excludeDomains: z.array(z.string()).optional(),\n category: z.string().optional(),\n});\n\n/**\n * FetchUrl tool input\n */\nexport const FetchUrlToolInputSchema = z.object({\n url: z.string(),\n});\n\n/**\n * Task (subagent) tool input\n */\nexport const TaskToolInputSchema = z.object({\n subagent_type: z\n .string()\n .describe(\n 'The custom droid name/identifier to run (must match an available droid; do not guess)'\n ),\n description: z\n .string()\n .describe('A short (3-5 word) description of the task (used in UI)'),\n prompt: z\n .string()\n .describe('The full task prompt for the subagent to execute'),\n});\n\n/**\n * TodoWrite tool input\n */\nexport const TodoWriteToolInputSchema = z.object({\n todos: z.string(),\n});\n\n/**\n * ExitSpecMode tool input\n */\nexport const ExitSpecModeToolInputSchema = z.object({\n plan: z.string(),\n title: z.string().optional(),\n});\n\n/**\n * Skill tool input\n */\nexport const SkillToolInputSchema = z.object({\n skill: z.string(),\n});\n\n/**\n * ApplyPatch tool input\n */\nexport const ApplyPatchToolInputSchema = z.object({\n file_path: z.string(),\n patch: z.string(),\n});\n\n/**\n * ProposeMission tool input\n */\nexport const ProposeMissionToolInputSchema = z.object({\n proposal: z.string(),\n title: z.string().optional(),\n});\n\n// ============================================================\n// Common Tool Result Schemas\n// These define the shape of data returned by tools\n// ============================================================\n\n/**\n * Diff line for Edit/Create tool results\n */\nexport const DiffLineSchema = z.object({\n type: z.enum(['added', 'removed', 'unchanged', 'context']),\n content: z.string(),\n lineNumber: z\n .object({\n old: z.number().optional(),\n new: z.number().optional(),\n })\n .optional(),\n});\n\n/**\n * Common result payload for file operation tools (Edit, Create, ApplyPatch)\n */\nexport const FileOperationResultSchema = z.object({\n success: z.boolean().optional(),\n diff: z.string().optional(),\n diffLines: z.array(DiffLineSchema).optional(),\n content: z.string().optional(),\n message: z.string().optional(),\n file_path: z.string().optional(),\n filePath: z.string().optional(),\n});\n","import { z } from 'zod';\n\n/**\n * Schema for a resolved binary download plan.\n * Contains a version and fully-qualified URLs for the binary and its checksum.\n * Used by both the backend API response and internal provisioning.\n */\nexport const BinaryDownloadPlanSchema = z.object({\n version: z.string(),\n binaryUrl: z.string(),\n checksumUrl: z.string(),\n});\n","import { z } from 'zod';\n\n/**\n * Token usage schema for tracking LLM token consumption.\n */\nexport const TokenUsageSchema = z.object({\n inputTokens: z.number().int(),\n outputTokens: z.number().int(),\n cacheCreationInputTokens: z.number().int(),\n cacheReadInputTokens: z.number().int(),\n thinkingTokens: z.number().int(),\n factoryCredits: z.number().optional(),\n});\n","// Internal barrel for the daemon protocol source-of-truth modules.\n// NOT yet wired into the public package API (src/index.ts).\n\nexport * from './enums.js';\nexport * from './bug-report.js';\nexport * from './management.js';\nexport * from './skills.js';\nexport * from './commands.js';\nexport * from './relay.js';\nexport * from './terminal.js';\nexport * from './connection.js';\nexport * from './mcp.js';\nexport * from './automations-enums.js';\nexport * from './automations.js';\nexport * from './crons.js';\nexport * from './plugins.js';\nexport * from './settings.js';\nexport * from './droid.js';\n","// Connection-level methods (shared across all daemon connections)\nexport enum DaemonConnectionMethod {\n AUTHENTICATE = 'daemon.authenticate',\n LOGOUT = 'daemon.logout',\n}\n\n// Connection-level events (notifications from server to client)\nexport enum DaemonConnectionEvent {\n CONNECTION_STATUS = 'daemon.connection_status',\n}\n\n/**\n * Connection state for daemon WebSocket connections.\n *\n * This enum contains two categories of states:\n *\n * **WebSocket connection states** (actual transport-level states):\n * - `Disconnected` - No active WebSocket connection\n * - `Connecting` - WebSocket handshake in progress\n * - `Connected` - WebSocket is open and ready\n * - `Closing` - WebSocket is closing\n *\n * **UI/UX display states** (for user feedback, not actual WS state):\n * - `LookingUpMachine` - Checking if session exists locally or in backend\n * - `StartingMachine` - Waiting for remote sandbox/machine to start before connecting\n * - `LoadingSession` - WebSocket connected, but loading session state from daemon\n * - `AuthenticationFailed` - Connection succeeded but authentication was rejected\n */\nexport enum ConnectionState {\n // WebSocket transport states\n Disconnected = 'disconnected',\n Connecting = 'connecting',\n Connected = 'connected',\n Closing = 'closing',\n\n // UI/UX display states (WebSocket may be connected)\n LookingUpMachine = 'looking_up_machine',\n StartingMachine = 'starting_machine',\n LoadingSession = 'loading_session',\n /** @deprecated Use ConnectionStatus.lastFailure instead. Will be removed in a future version. */\n AuthenticationFailed = 'authentication_failed',\n}\n\n// Terminal-specific methods\nexport enum DaemonTerminalMethod {\n CREATE = 'daemon.create_terminal',\n WRITE_DATA = 'daemon.write_terminal_data',\n RESIZE = 'daemon.resize_terminal',\n CLOSE = 'daemon.close_terminal',\n LIST = 'daemon.list_terminals',\n}\n\n// Terminal-specific events (notifications from server to client)\nexport enum DaemonTerminalEvent {\n DATA = 'daemon.terminal_data',\n EXIT = 'daemon.terminal_exit',\n ERROR = 'daemon.terminal_error',\n}\n\n// Droid-specific methods (for daemon-managed droid sessions)\nexport enum DaemonDroidMethod {\n INITIALIZE_SESSION = 'daemon.initialize_session',\n LOAD_SESSION = 'daemon.load_session',\n ADD_USER_MESSAGE = 'daemon.add_user_message',\n RESOLVE_QUEUED_USER_MESSAGE = 'daemon.resolve_queued_user_message',\n INTERRUPT_SESSION = 'daemon.interrupt_session',\n CLOSE_SESSION = 'daemon.close_session',\n KILL_WORKER_SESSION = 'daemon.kill_worker_session',\n LIST_OPENED_SESSIONS = 'daemon.list_opened_sessions',\n LIST_AVAILABLE_SESSIONS = 'daemon.list_available_sessions',\n GET_SESSION_MESSAGES = 'daemon.get_session_messages',\n UPDATE_SESSION_SETTINGS = 'daemon.update_session_settings',\n VALIDATE_WORKING_DIRECTORY = 'daemon.validate_working_directory',\n GET_MCP_CONFIG = 'daemon.get_mcp_config',\n UPDATE_MCP_CONFIG = 'daemon.update_mcp_config',\n TOGGLE_MCP_SERVER = 'daemon.toggle_mcp_server',\n AUTHENTICATE_MCP_SERVER = 'daemon.authenticate_mcp_server',\n CANCEL_MCP_AUTH = 'daemon.cancel_mcp_auth',\n CLEAR_MCP_AUTH = 'daemon.clear_mcp_auth',\n SUBMIT_MCP_AUTH_CODE = 'daemon.submit_mcp_auth_code',\n LIST_FILES = 'daemon.list_files',\n SEARCH_FILES = 'daemon.search_files',\n ADD_MCP_SERVER = 'daemon.add_mcp_server',\n REMOVE_MCP_SERVER = 'daemon.remove_mcp_server',\n LIST_MCP_REGISTRY = 'daemon.list_mcp_registry',\n LIST_MCP_TOOLS = 'daemon.list_mcp_tools',\n LIST_MCP_SERVERS = 'daemon.list_mcp_servers',\n TOGGLE_MCP_TOOL = 'daemon.toggle_mcp_tool',\n SEARCH_SESSIONS = 'daemon.search_sessions',\n ARCHIVE_SESSION = 'daemon.archive_session',\n UNARCHIVE_SESSION = 'daemon.unarchive_session',\n RENAME_SESSION = 'daemon.rename_session',\n LIST_SKILLS = 'daemon.list_skills',\n LIST_COMMANDS = 'daemon.list_commands',\n LIST_AVAILABLE_PLUGINS = 'daemon.list_available_plugins',\n LIST_INSTALLED_PLUGINS = 'daemon.list_installed_plugins',\n INSTALL_PLUGIN = 'daemon.install_plugin',\n UNINSTALL_PLUGIN = 'daemon.uninstall_plugin',\n UPDATE_PLUGIN = 'daemon.update_plugin',\n LIST_MARKETPLACES = 'daemon.list_marketplaces',\n ADD_MARKETPLACE = 'daemon.add_marketplace',\n REMOVE_MARKETPLACE = 'daemon.remove_marketplace',\n UPDATE_MARKETPLACE = 'daemon.update_marketplace',\n LIST_AUTOMATIONS = 'daemon.list_automations',\n RUN_AUTOMATION = 'daemon.run_automation',\n PAUSE_AUTOMATION = 'daemon.pause_automation',\n RESUME_AUTOMATION = 'daemon.resume_automation',\n GET_AUTOMATION_HISTORY = 'daemon.get_automation_history',\n GET_AUTOMATION_VISUAL = 'daemon.get_automation_visual',\n CREATE_AUTOMATION = 'daemon.create_automation',\n UPDATE_AUTOMATION_MODEL = 'daemon.update_automation_model',\n UPDATE_AUTOMATION_PRIVACY = 'daemon.update_automation_privacy',\n RENAME_AUTOMATION = 'daemon.rename_automation',\n DELETE_AUTOMATION = 'daemon.delete_automation',\n FORK_AUTOMATION = 'daemon.fork_automation',\n LIST_CRONS = 'daemon.list_crons',\n CREATE_CRON = 'daemon.create_cron',\n UPDATE_CRON = 'daemon.update_cron',\n DELETE_CRON = 'daemon.delete_cron',\n HOLD_SESSION_CRONS = 'daemon.hold_session_crons',\n RESUME_SESSION_CRONS = 'daemon.resume_session_crons',\n GET_GIT_DIFF = 'daemon.get_git_diff',\n GIT_PUSH = 'daemon.git_push',\n GIT_COMMIT = 'daemon.git_commit',\n CREATE_PR = 'daemon.create_pr',\n GET_SEMANTIC_DIFF_CACHE = 'daemon.get_semantic_diff_cache',\n SAVE_SEMANTIC_DIFF_CACHE = 'daemon.save_semantic_diff_cache',\n GENERATE_SEMANTIC_DIFF = 'daemon.generate_semantic_diff',\n GET_PROXY_TOKEN = 'daemon.get_proxy_token',\n GET_WORKSPACE_FILE_CONTENT = 'daemon.get_workspace_file_content',\n SUBMIT_BUG_REPORT = 'daemon.submit_bug_report',\n GET_REWIND_INFO = 'daemon.get_rewind_info',\n EXECUTE_REWIND = 'daemon.execute_rewind',\n COMPACT_SESSION = 'daemon.compact_session',\n FORK_SESSION = 'daemon.fork_session',\n WARMUP_CACHE = 'daemon.warmup_cache',\n GET_CONTEXT_BREAKDOWN = 'daemon.get_context_breakdown',\n}\n\nexport enum DaemonGetGitDiffUnavailableReason {\n MissingSessionCwd = 'missing_session_cwd',\n NotGitRepository = 'not_git_repository',\n GitNotAvailable = 'git_not_available',\n Unknown = 'unknown',\n}\n\n// Daemon-only settings methods (handled by daemon, not forwarded to CLI)\nexport enum DaemonSettingsMethod {\n GET_DEFAULT_SETTINGS = 'daemon.get_default_settings',\n UPDATE_SESSION_DEFAULTS = 'daemon.update_session_defaults',\n}\n\n// Daemon management methods (lifecycle operations like updates, restarts)\nexport enum DaemonManagementMethod {\n TRIGGER_UPDATE = 'daemon.trigger_update',\n INSTALL_SSH_KEY = 'daemon.install_ssh_key',\n}\n\n// Daemon relay methods (request/response RPCs for relay lifecycle)\nexport enum DaemonRelayMethod {\n START = 'daemon.relay.start',\n STOP = 'daemon.relay.stop',\n GET_STATUS = 'daemon.relay.get_status',\n}\n\n// Daemon relay events (notifications from server to client, e.g. external disconnects)\nexport enum DaemonRelayEvent {\n STATUS_CHANGED = 'daemon.relay.status_changed',\n}\n\nexport enum DaemonCronEvent {\n STATE_CHANGED = 'daemon.cron.state_changed',\n}\n\n// Session notification types defined at the daemon level\nexport enum DaemonSpecificNotificationType {\n SESSION_INACTIVITY = 'session_inactivity',\n SESSION_PROCESS_EXITED = 'session_process_exited',\n SESSION_CLOSED = 'session_closed',\n SESSION_UNSUBSCRIBED = 'session_unsubscribed',\n CHILD_SESSION_AVAILABLE = 'child_session_available',\n}\n\n// Droid-specific events (notifications and requests from server to client)\nexport enum DaemonDroidEvent {\n SESSION_NOTIFICATION = 'daemon.session_notification',\n REQUEST_PERMISSION = 'daemon.request_permission',\n ASK_USER = 'daemon.ask_user',\n}\n\n// Terminal creation errors\nexport enum CreateTerminalError {\n TerminalIdExists = 'TerminalIdExists',\n}\n\n// MCP Config Source\nexport enum McpConfigSource {\n User = 'user',\n Project = 'project',\n}\n\n// Tunnel message methods (for WebSocket tunnel protocol)\n\n/**\n * Tracks the loading state of a session in the daemon.\n *\n * State Transitions (Event-Driven, Non-Linear):\n * - New session: NotLoaded → Loading → Loaded\n * - Existing session (direct URL): NotLoaded → Loading → Loaded\n * - Reconnection: Loaded → NotLoaded → Loading → Loaded\n * - After inactivity: Loaded → NotLoaded → Loading → Loaded\n *\n * Entry Points:\n * - NotLoaded: Default state, or via disconnect/inactivity/unsubscribed\n * - Loading: Via markSessionLoading() for new sessions, existing sessions, reloads, or reconnections\n * - Loaded: Via initializeSession() (new) or loadSession() (existing/reload)\n */\nexport enum SessionLoadState {\n /**\n * Session doesn't exist in daemon state yet, or became inactive.\n *\n * Effect: Default state for sessions not yet created or loaded.\n * Next State:\n * - Call markSessionLoading() → Loading (for all sessions)\n */\n NotLoaded = 'NOT_LOADED',\n\n /**\n * Session is fully loaded and ready for use in daemon state.\n *\n * Effect: Normal operation, all features available, UI fully interactive.\n * Next State:\n * - Via WebSocket disconnect → NotLoaded (connection lost, then reconnect flow starts)\n * - Via daemon notification → NotLoaded (inactivity timeout or unsubscribed)\n * - Via markSessionLoading() → Loading (manual reload without disconnect)\n */\n Loaded = 'LOADED',\n\n /**\n * Session is being loaded, initialized, or reloaded.\n *\n * Effect: Shows loading UI. Session may be new or existing.\n * Next State: When initializeSession() or loadSession() completes → Loaded\n * Usage: New session creation, initial load of existing session, reconnection, manual reload, or reload after inactive.\n */\n Loading = 'LOADING',\n}\n\nexport enum SessionSearchDocKind {\n MessageText = 'message_text',\n Document = 'document',\n ToolUse = 'tool_use',\n ToolResult = 'tool_result',\n}\n","import z from 'zod';\n\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { DaemonDroidMethod } from './enums.js';\n\n// SUBMIT_BUG_REPORT - create and upload a bug report\nconst DaemonSubmitBugReportRequestParamsSchema = z.object({\n sessionId: z.string(),\n userComment: z.string(),\n clientLogs: z.string().optional(),\n});\n\nexport const DaemonSubmitBugReportRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SUBMIT_BUG_REPORT),\n params: DaemonSubmitBugReportRequestParamsSchema,\n });\n\nexport const DaemonSubmitBugReportResultSchema = z.object({\n bugReportId: z.string(),\n});\n","/**\n * Daemon management schemas.\n * These cover daemon lifecycle operations (updates, restarts, etc.)\n * that are not tied to specific droid sessions or settings.\n */\nimport z from 'zod';\n\nimport {\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n} from '../json-rpc.js';\nimport { DaemonManagementMethod } from './enums.js';\n\n// Trigger update schemas\nconst DaemonTriggerUpdateRequestParamsSchema = z.object({});\n\nexport const DaemonTriggerUpdateRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonManagementMethod.TRIGGER_UPDATE),\n params: DaemonTriggerUpdateRequestParamsSchema,\n }\n);\n\nexport const DaemonTriggerUpdateResultSchema = z.object({\n triggered: z.boolean(),\n message: z.string().optional(),\n});\n\nexport const DaemonTriggerUpdateResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonTriggerUpdateResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Install SSH key schemas\nconst DaemonInstallSshKeyRequestParamsSchema = z.object({\n publicKey: z.string().min(1),\n});\n\nexport const DaemonInstallSshKeyRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonManagementMethod.INSTALL_SSH_KEY),\n params: DaemonInstallSshKeyRequestParamsSchema,\n }\n);\n\nexport const DaemonInstallSshKeyResultSchema = z.object({\n installed: z.boolean(),\n});\n","import z from 'zod';\n\nimport { SkillInfoSchema } from '../client.js';\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { DaemonDroidMethod } from './enums.js';\n\n// LIST_SKILLS - get all available skills for a session\nconst DaemonListSkillsRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonListSkillsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_SKILLS),\n params: DaemonListSkillsRequestParamsSchema,\n});\n\nexport const DaemonListSkillsResultSchema = z.object({\n skills: z.array(SkillInfoSchema),\n});\n","import { z } from 'zod';\n\nimport { CustomCommandInfoSchema } from '../client.js';\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { DaemonDroidMethod } from './enums.js';\n\n// LIST_COMMANDS - get all custom slash commands for a session\nconst DaemonListCommandsRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonListCommandsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_COMMANDS),\n params: DaemonListCommandsRequestParamsSchema,\n});\n\nexport const DaemonListCommandsResultSchema = z.object({\n commands: z.array(CustomCommandInfoSchema),\n});\n","/**\n * Daemon relay schemas.\n * These cover relay connection lifecycle operations for BYOM computers.\n */\nimport z from 'zod';\n\nimport {\n JsonRpcBaseNotificationSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n} from '../json-rpc.js';\nimport { DaemonRelayEvent, DaemonRelayMethod } from './enums.js';\n\n// daemon.relay.start\nexport const DaemonRelayStartRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonRelayMethod.START),\n params: z.object({}),\n});\n\nexport const DaemonRelayStartResultSchema = z.object({\n relayUrl: z.string(),\n computerId: z.string(),\n});\n\nexport const DaemonRelayStartResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonRelayStartResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// daemon.relay.stop\nexport const DaemonRelayStopRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonRelayMethod.STOP),\n params: z.object({}),\n});\n\nexport const DaemonRelayStopResultSchema = z.object({}).strict();\n\nexport const DaemonRelayStopResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonRelayStopResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// daemon.relay.get_status\nexport const DaemonRelayGetStatusRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonRelayMethod.GET_STATUS),\n params: z.object({}),\n });\n\nexport const DaemonRelayGetStatusResultSchema = z.object({\n connected: z.boolean(),\n url: z.string().optional(),\n clientCount: z.number().optional(),\n computerId: z.string().optional(),\n});\n\nexport const DaemonRelayGetStatusResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonRelayGetStatusResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// daemon.relay.status_changed (push notification for external state changes, e.g. unexpected disconnects)\nexport const DaemonRelayStatusChangedNotificationParamsSchema = z.object({\n connected: z.boolean(),\n url: z.string().optional(),\n clientCount: z.number().optional(),\n computerId: z.string().optional(),\n});\n\nexport const DaemonRelayStatusChangedNotificationSchema =\n JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DaemonRelayEvent.STATUS_CHANGED),\n params: DaemonRelayStatusChangedNotificationParamsSchema,\n });\n","import z from 'zod';\n\nimport {\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseSuccessSchema,\n JsonRpcBaseResponseFailureSchema,\n} from '../json-rpc.js';\nimport {\n DaemonTerminalMethod,\n DaemonTerminalEvent,\n CreateTerminalError,\n} from './enums.js';\n\n// Terminal request params schemas\nexport const CreateTerminalRequestParamsSchema = z.object({\n terminalId: z.string(),\n cols: z.number().optional(),\n rows: z.number().optional(),\n cwd: z.string().optional(),\n env: z.record(z.string()).optional(),\n});\n\nexport const WriteDataRequestParamsSchema = z.object({\n terminalId: z.string(),\n data: z.string(),\n});\n\nexport const ResizeRequestParamsSchema = z.object({\n terminalId: z.string(),\n cols: z.number(),\n rows: z.number(),\n});\n\nexport const CloseTerminalRequestParamsSchema = z.object({\n terminalId: z.string(),\n});\n\nexport const ListTerminalsRequestParamsSchema = z.object({});\n\n// Terminal result schemas\nexport const CreateTerminalResultSchema = z.discriminatedUnion('success', [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.nativeEnum(CreateTerminalError),\n }),\n]);\n\nexport const WriteDataResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const ResizeResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const CloseTerminalResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const TerminalInfoSchema = z.object({\n id: z.string(),\n pid: z.number().nullable(),\n cols: z.number(),\n rows: z.number(),\n createdAt: z.coerce.date(),\n state: z\n .object({\n serialized: z.string(),\n plainText: z.string(),\n cols: z.number(),\n rows: z.number(),\n timestamp: z.coerce.date(),\n cursorHidden: z.boolean().optional(),\n })\n .optional(),\n});\n\nexport const ListTerminalsResultSchema = z.object({\n terminals: z.array(TerminalInfoSchema),\n});\n\n// Terminal request schemas - use TerminalMethod enum\nexport const CreateTerminalRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.CREATE),\n params: CreateTerminalRequestParamsSchema,\n});\n\nexport const WriteDataRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.WRITE_DATA),\n params: WriteDataRequestParamsSchema,\n});\n\nexport const ResizeRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.RESIZE),\n params: ResizeRequestParamsSchema,\n});\n\nexport const CloseTerminalRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.CLOSE),\n params: CloseTerminalRequestParamsSchema,\n});\n\nexport const ListTerminalsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.LIST),\n params: ListTerminalsRequestParamsSchema,\n});\n\n// Terminal response schemas\nexport const CreateTerminalResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CreateTerminalResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const WriteDataResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: WriteDataResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ResizeResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ResizeResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const CloseTerminalResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: CloseTerminalResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const ListTerminalsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: ListTerminalsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Union of all terminal request types (discriminated by method)\nexport const TerminalRequestSchema = z.discriminatedUnion('method', [\n CreateTerminalRequestSchema,\n WriteDataRequestSchema,\n ResizeRequestSchema,\n CloseTerminalRequestSchema,\n ListTerminalsRequestSchema,\n]);\n\n// Terminal notification schemas - match session notification pattern (no params wrapper, no sessionId)\nexport const TerminalDataNotificationSchema = z.object({\n type: z.literal(DaemonTerminalEvent.DATA),\n terminalId: z.string(),\n data: z.string(),\n});\n\nexport const TerminalExitNotificationSchema = z.object({\n type: z.literal(DaemonTerminalEvent.EXIT),\n terminalId: z.string(),\n exitCode: z.number(),\n signal: z.string(),\n});\n\n// Union of all terminal notification types\nexport const TerminalNotificationSchema = z.discriminatedUnion('type', [\n TerminalDataNotificationSchema,\n TerminalExitNotificationSchema,\n]);\n\n// ============ DAEMON Terminal Request Params (with sessionId) ============\n\nexport const DaemonCreateTerminalRequestParamsSchema =\n CreateTerminalRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonWriteDataRequestParamsSchema =\n WriteDataRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonResizeRequestParamsSchema = ResizeRequestParamsSchema.extend(\n {\n sessionId: z.string(),\n }\n);\n\nexport const DaemonCloseTerminalRequestParamsSchema =\n CloseTerminalRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonListTerminalsRequestParamsSchema =\n ListTerminalsRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\n// ============ DAEMON Terminal Request Schemas ============\n\nexport const DaemonCreateTerminalRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.CREATE),\n params: DaemonCreateTerminalRequestParamsSchema,\n });\n\nexport const DaemonWriteDataRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.WRITE_DATA),\n params: DaemonWriteDataRequestParamsSchema,\n});\n\nexport const DaemonResizeRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonTerminalMethod.RESIZE),\n params: DaemonResizeRequestParamsSchema,\n});\n\nexport const DaemonCloseTerminalRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonTerminalMethod.CLOSE),\n params: DaemonCloseTerminalRequestParamsSchema,\n }\n);\n\nexport const DaemonListTerminalsRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonTerminalMethod.LIST),\n params: DaemonListTerminalsRequestParamsSchema,\n }\n);\n","import z from 'zod';\n\nimport { Platform } from '../enums.js';\nimport {\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseSuccessSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseNotificationSchema,\n} from '../json-rpc.js';\nimport { DaemonConnectionMethod, DaemonConnectionEvent } from './enums.js';\n\n/**\n * Client-supplied metadata attached to the authenticate handshake.\n * Extensible: new fields can be added here without changing the\n * transport protocol. The daemon stores these on the connection\n * context and uses them for span attribution.\n */\nexport const DaemonConnectionMetadataSchema = z.object({\n tracing: z\n .object({\n /** Human interaction surface (e.g., 'web', 'desktop', 'cli_tui'). Absent for infrastructure callers. */\n app: z.string().optional(),\n /** Client-relative machine classification: local | ephemeral | computer. */\n machineType: z.string().optional(),\n /** Computer provider: byom | e2b. */\n machineProvider: z.string().optional(),\n /** Transport kind: ws_localhost | ws_direct | ws_relay. */\n daemonTransport: z.string().optional(),\n })\n .optional(),\n});\n\n// Connection-level authentication schemas\nexport const DaemonAuthenticateRequestParamsSchema = z\n .object({\n /** WorkOS JWT access token */\n token: z.string().optional(),\n /** Factory API key (fk-*) */\n apiKey: z.string().optional(),\n /** Frontend-generated connection ID for trace correlation */\n connectionId: z.string().optional(),\n /** Caller identifier for debugging (e.g., 'frontend', 'cli'). */\n caller: z.string(),\n /** Client-supplied metadata for tracing and diagnostics. */\n metadata: DaemonConnectionMetadataSchema.optional(),\n })\n .refine((data) => data.token || data.apiKey, {\n message: 'Either token or apiKey must be provided',\n });\n\nexport const DaemonAuthenticateRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonConnectionMethod.AUTHENTICATE),\n params: DaemonAuthenticateRequestParamsSchema,\n});\n\nexport const DaemonAuthenticateResultSchema = z.object({\n userId: z.string(),\n orgId: z.string(),\n});\n\nexport const DaemonAuthenticateResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonAuthenticateResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonLogoutRequestParamsSchema = z.object({}).strict();\n\nexport const DaemonLogoutRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonConnectionMethod.LOGOUT),\n params: DaemonLogoutRequestParamsSchema,\n});\n\nexport const DaemonLogoutResultSchema = z.object({\n accepted: z.literal(true),\n});\n\nexport const DaemonLogoutResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonLogoutResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Connection status notification schemas\nexport const DaemonConnectionStatusNotificationParamsSchema = z.object({\n isDroidCLIInPath: z.boolean(),\n droidCLIVersion: z.string().optional(),\n homedir: z.string(),\n platform: z.nativeEnum(Platform),\n});\n\nexport const DaemonConnectionStatusNotificationSchema =\n JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DaemonConnectionEvent.CONNECTION_STATUS),\n params: DaemonConnectionStatusNotificationParamsSchema,\n });\n\n// Inferred types\nexport type DaemonConnectionMetadata = z.infer<\n typeof DaemonConnectionMetadataSchema\n>;\nexport type DaemonAuthenticateRequestParams = z.infer<\n typeof DaemonAuthenticateRequestParamsSchema\n>;\nexport type DaemonAuthenticateRequest = z.infer<\n typeof DaemonAuthenticateRequestSchema\n>;\nexport type DaemonAuthenticateResult = z.infer<\n typeof DaemonAuthenticateResultSchema\n>;\nexport type DaemonAuthenticateResponse = z.infer<\n typeof DaemonAuthenticateResponseSchema\n>;\nexport type DaemonLogoutRequestParams = z.infer<\n typeof DaemonLogoutRequestParamsSchema\n>;\nexport type DaemonLogoutRequest = z.infer<typeof DaemonLogoutRequestSchema>;\nexport type DaemonLogoutResult = z.infer<typeof DaemonLogoutResultSchema>;\nexport type DaemonLogoutResponse = z.infer<typeof DaemonLogoutResponseSchema>;\nexport type DaemonConnectionStatusNotificationParams = z.infer<\n typeof DaemonConnectionStatusNotificationParamsSchema\n>;\nexport type DaemonConnectionStatusNotification = z.infer<\n typeof DaemonConnectionStatusNotificationSchema\n>;\n","import z from 'zod';\n\nimport {\n AddMcpServerRequestParamsSchema,\n AuthenticateMcpServerRequestParamsSchema,\n CancelMcpAuthRequestParamsSchema,\n ClearMcpAuthRequestParamsSchema,\n ListMcpRegistryRequestParamsSchema,\n ListMcpRegistryResultSchema,\n ListMcpServersRequestParamsSchema,\n ListMcpServersResultSchema,\n ListMcpToolsRequestParamsSchema,\n ListMcpToolsResultSchema,\n RemoveMcpServerRequestParamsSchema,\n ToggleMcpServerRequestParamsSchema,\n ToggleMcpToolRequestParamsSchema,\n} from '../client.js';\nimport { McpServerStatus } from '../enums.js';\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { McpRegistryServerSchema, McpToolInfoSchema } from '../mcp.js';\nimport { DaemonDroidMethod, McpConfigSource } from './enums.js';\n\n// MCP Server Config Schema (matches @factory/mcp)\nconst McpStdioServerConfigSchema = z.object({\n type: z.literal('stdio').optional().default('stdio'),\n command: z.string(),\n args: z.array(z.string()),\n env: z.record(z.string(), z.string()).optional(),\n disabled: z.boolean().optional().default(false),\n});\n\nexport const McpOAuthConfigSchema = z.object({\n scopes: z.array(z.string().trim().min(1)).optional(),\n clientId: z.string().trim().min(1).optional(),\n clientSecret: z\n .string()\n .min(1)\n .refine((secret) => secret.trim().length > 0, {\n message: 'clientSecret cannot be blank',\n })\n .optional(),\n callbackPort: z.number().int().min(1).max(65535).optional(),\n});\n\nexport const McpHttpServerConfigSchema = z.object({\n type: z.literal('http'),\n url: z.string(),\n headers: z.record(z.string(), z.string()).optional(),\n oauth: McpOAuthConfigSchema.optional(),\n disabled: z.boolean().optional().default(false),\n});\n\nconst McpSseServerConfigSchema = z.object({\n type: z.literal('sse'),\n url: z.string(),\n headers: z.record(z.string(), z.string()).optional(),\n oauth: McpOAuthConfigSchema.optional(),\n disabled: z.boolean().optional().default(false),\n});\n\nexport const McpServerConfigSchema = z.union([\n McpStdioServerConfigSchema,\n McpHttpServerConfigSchema,\n McpSseServerConfigSchema,\n]);\n\n// Server info with source and status\nexport const McpServerInfoSchema = z.object({\n name: z.string(),\n config: McpServerConfigSchema,\n source: z.nativeEnum(McpConfigSource),\n status: z.nativeEnum(McpServerStatus).optional(),\n error: z.string().optional(),\n});\n\n// Simple success result used by multiple MCP operations\nexport const McpSuccessResultSchema = z.object({\n success: z.boolean(),\n});\n\n// GET_MCP_CONFIG\nexport const DaemonGetMcpConfigRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_MCP_CONFIG),\n params: z.object({}),\n});\n\nexport const DaemonGetMcpConfigResultSchema = z.object({\n servers: z.array(McpServerInfoSchema),\n});\n\n// UPDATE_MCP_CONFIG\nexport const DaemonUpdateMcpConfigRequestParamsSchema = z.object({\n action: z.enum(['add', 'remove', 'enable', 'disable']),\n serverNames: z.array(z.string()),\n serverConfig: McpServerConfigSchema.optional(),\n});\n\nexport const DaemonUpdateMcpConfigRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_MCP_CONFIG),\n params: DaemonUpdateMcpConfigRequestParamsSchema,\n });\n\nexport const DaemonUpdateMcpConfigResultSchema = z.object({\n success: z.boolean(),\n servers: z.array(McpServerInfoSchema),\n error: z.string().optional(),\n});\n\n// TOGGLE_MCP_SERVER - proxied to CLI session\nexport const DaemonToggleMcpServerRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.TOGGLE_MCP_SERVER),\n params: ToggleMcpServerRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\n// AUTHENTICATE_MCP_SERVER - proxied to CLI session for OAuth flow\nexport const DaemonAuthenticateMcpServerRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.AUTHENTICATE_MCP_SERVER),\n params: AuthenticateMcpServerRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\n// CANCEL_MCP_AUTH - proxied to CLI session to cancel pending OAuth flow\nexport const DaemonCancelMcpAuthRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.CANCEL_MCP_AUTH),\n params: CancelMcpAuthRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n }\n);\n\n// CLEAR_MCP_AUTH - proxied to CLI session to clear OAuth tokens\nexport const DaemonClearMcpAuthRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CLEAR_MCP_AUTH),\n params: ClearMcpAuthRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n});\n\n// ADD_MCP_SERVER - proxied to CLI session to add MCP server to config\nexport const DaemonAddMcpServerRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.ADD_MCP_SERVER),\n params: AddMcpServerRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n});\n\n// REMOVE_MCP_SERVER - proxied to CLI session to remove MCP server from config\nexport const DaemonRemoveMcpServerRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.REMOVE_MCP_SERVER),\n params: RemoveMcpServerRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\n// LIST_MCP_REGISTRY - proxied to CLI session to list available MCP servers\nexport const DaemonListMcpRegistryRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_MCP_REGISTRY),\n params: ListMcpRegistryRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\nexport const DaemonMcpRegistryServerSchema = McpRegistryServerSchema.extend({});\n\nexport const DaemonListMcpRegistryResultSchema =\n ListMcpRegistryResultSchema.extend({});\n\n// LIST_MCP_TOOLS - get all tools with enabled/disabled state\nexport const DaemonListMcpToolsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_MCP_TOOLS),\n params: ListMcpToolsRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n});\n\nexport const DaemonMcpToolInfoSchema = McpToolInfoSchema.extend({});\n\nexport const DaemonListMcpToolsResultSchema = ListMcpToolsResultSchema.extend(\n {}\n);\n\n// TOGGLE_MCP_TOOL - enable/disable a specific tool\nexport const DaemonToggleMcpToolRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.TOGGLE_MCP_TOOL),\n params: ToggleMcpToolRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n }\n);\n\n// LIST_MCP_SERVERS - get current MCP server statuses for a session\nexport const DaemonListMcpServersRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_MCP_SERVERS),\n params: ListMcpServersRequestParamsSchema.extend({\n sessionId: z.string(),\n }),\n });\n\nexport const DaemonListMcpServersResultSchema =\n ListMcpServersResultSchema.extend({});\n\n// SUBMIT_MCP_AUTH_CODE - relay OAuth auth code from frontend to CLI for remote sessions\nconst DaemonSubmitMcpAuthCodeRequestParamsSchema = z.object({\n sessionId: z.string(),\n serverName: z.string(),\n code: z.string(),\n state: z.string(),\n});\n\nexport const DaemonSubmitMcpAuthCodeRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SUBMIT_MCP_AUTH_CODE),\n params: DaemonSubmitMcpAuthCodeRequestParamsSchema,\n });\n","import z from 'zod';\n\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { AutomationPrivacyLevel } from './automations-enums.js';\nimport { DaemonDroidMethod } from './enums.js';\n\n// LIST_AUTOMATIONS - discover automations from the filesystem\nconst DaemonListAutomationsRequestParamsSchema = z.object({\n basePath: z.string().optional(),\n});\n\nexport const DaemonListAutomationsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_AUTOMATIONS),\n params: DaemonListAutomationsRequestParamsSchema,\n });\n\nexport const AutomationEntrySchema = z.object({\n /** Directory name slug (e.g. \"health-check\"). */\n id: z.string(),\n /** Stable UUID for backend sync. */\n uuid: z.string().optional(),\n name: z.string(),\n description: z.string().optional(),\n status: z.string(),\n schedule: z.string().optional(),\n model: z.string().optional(),\n tags: z.array(z.string()).optional(),\n nextRunAt: z.string().optional(),\n lastRunAt: z.string().optional(),\n isValid: z.boolean(),\n path: z.string(),\n privacyLevel: z.string().optional(),\n createdBy: z\n .object({\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n })\n .optional(),\n forkedFrom: z.string().optional(),\n /** Present when the automation targets a remote computer. */\n computerId: z.string().optional(),\n});\n\nexport const DaemonListAutomationsResultSchema = z.object({\n automations: z.array(AutomationEntrySchema),\n});\n\n// RUN_AUTOMATION - resolve automation metadata so frontend can create a session.\n// For local automations: reads HEARTBEAT.md from filesystem.\n// For computer automations: fetches from backend API when computerId is present.\nconst DaemonRunAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n /** Directory name of the automation (e.g. \"health-check\"). Preferred over automationId. */\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n /** When set, fetches the automation from the backend API instead of local filesystem. */\n computerId: z.string().optional(),\n});\n\nexport const DaemonRunAutomationRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.RUN_AUTOMATION),\n params: DaemonRunAutomationRequestParamsSchema,\n }\n);\n\nexport const DaemonRunAutomationResultSchema = z.object({\n prompt: z.string(),\n automationName: z.string(),\n /** UUID from HEARTBEAT.md frontmatter (falls back to directory name if no UUID) */\n automationId: z.string(),\n cwd: z.string(),\n model: z.string().optional(),\n /** Present when the automation targets a remote computer. */\n computerId: z.string().optional(),\n});\n\n// PAUSE_AUTOMATION\nconst DaemonPauseAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonPauseAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.PAUSE_AUTOMATION),\n params: DaemonPauseAutomationRequestParamsSchema,\n });\n\nexport const DaemonPauseAutomationResultSchema = z.object({\n success: z.boolean(),\n automationId: z.string(),\n status: z.string(),\n error: z.string().optional(),\n});\n\n// RESUME_AUTOMATION\nconst DaemonResumeAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonResumeAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.RESUME_AUTOMATION),\n params: DaemonResumeAutomationRequestParamsSchema,\n });\n\nexport const DaemonResumeAutomationResultSchema = z.object({\n success: z.boolean(),\n automationId: z.string(),\n status: z.string(),\n error: z.string().optional(),\n});\n\n// GET_AUTOMATION_HISTORY\nconst DaemonGetAutomationHistoryRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonGetAutomationHistoryRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_AUTOMATION_HISTORY),\n params: DaemonGetAutomationHistoryRequestParamsSchema,\n });\n\nconst AutomationRunRecordSchema = z.object({\n runId: z.string(),\n automationId: z.string(),\n status: z.string(),\n startedAt: z.string(),\n completedAt: z.string().optional(),\n durationMs: z.number().optional(),\n errorMessage: z.string().optional(),\n isRetry: z.boolean().optional(),\n originalRunId: z.string().optional(),\n});\n\nexport const DaemonGetAutomationHistoryResultSchema = z.object({\n automationId: z.string(),\n runs: z.array(AutomationRunRecordSchema),\n totalCount: z.number(),\n});\n\n// GET_AUTOMATION_VISUAL\nconst DaemonGetAutomationVisualRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n sessionId: z.string().optional(),\n});\n\nexport const DaemonGetAutomationVisualRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_AUTOMATION_VISUAL),\n params: DaemonGetAutomationVisualRequestParamsSchema,\n });\n\nexport const DaemonGetAutomationVisualResultSchema = z.object({\n automationId: z.string(),\n exists: z.boolean(),\n content: z.string().optional(),\n isStale: z.boolean().optional(),\n s3Url: z.string().optional(),\n});\n\n// CREATE_AUTOMATION\nconst DaemonCreateAutomationRequestParamsSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n schedule: z.string(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonCreateAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CREATE_AUTOMATION),\n params: DaemonCreateAutomationRequestParamsSchema,\n });\n\nexport const DaemonCreateAutomationResultSchema = z.object({\n success: z.boolean(),\n automationId: z.string().optional(),\n error: z.string().optional(),\n});\n\n// UPDATE_AUTOMATION_MODEL - update the model field in HEARTBEAT.md frontmatter\nconst DaemonUpdateAutomationModelRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n model: z.string().nullable(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonUpdateAutomationModelRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_AUTOMATION_MODEL),\n params: DaemonUpdateAutomationModelRequestParamsSchema,\n });\n\nexport const DaemonUpdateAutomationModelResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// UPDATE_AUTOMATION_PRIVACY - update the privacyLevel field in HEARTBEAT.md frontmatter\nconst DaemonUpdateAutomationPrivacyRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n privacyLevel: z.nativeEnum(AutomationPrivacyLevel),\n createdBy: z\n .object({\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n })\n .optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonUpdateAutomationPrivacyRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_AUTOMATION_PRIVACY),\n params: DaemonUpdateAutomationPrivacyRequestParamsSchema,\n });\n\nexport const DaemonUpdateAutomationPrivacyResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// RENAME_AUTOMATION - update the name field in HEARTBEAT.md frontmatter\nconst DaemonRenameAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n newName: z.string(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonRenameAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.RENAME_AUTOMATION),\n params: DaemonRenameAutomationRequestParamsSchema,\n });\n\nexport const DaemonRenameAutomationResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// DELETE_AUTOMATION - remove an automation directory\nconst DaemonDeleteAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n automationDirName: z.string().optional(),\n basePath: z.string().optional(),\n});\n\nexport const DaemonDeleteAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.DELETE_AUTOMATION),\n params: DaemonDeleteAutomationRequestParamsSchema,\n });\n\nexport const DaemonDeleteAutomationResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// FORK_AUTOMATION - fork a shared automation into the local filesystem\nconst DaemonForkAutomationRequestParamsSchema = z.object({\n automationId: z.string(),\n name: z.string(),\n description: z.string().optional(),\n schedule: z.string(),\n tags: z.array(z.string()).optional(),\n model: z.string().optional(),\n prompt: z.string(),\n forkedFrom: z.string(),\n localDirName: z.string(),\n});\n\nexport const DaemonForkAutomationRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.FORK_AUTOMATION),\n params: DaemonForkAutomationRequestParamsSchema,\n });\n\nexport const DaemonForkAutomationResultSchema = z.object({\n success: z.boolean(),\n automationId: z.string().optional(),\n error: z.string().optional(),\n});\n","import { z } from 'zod';\n\nimport {\n JsonRpcBaseNotificationSchema,\n JsonRpcBaseRequestSchema,\n} from '../json-rpc.js';\nimport { DaemonDroidMethod, DaemonCronEvent } from './enums.js';\n\nexport const CronStatusSchema = z.enum([\n 'active',\n 'held',\n 'paused',\n 'running',\n 'error',\n 'expired',\n 'cancelled',\n]);\n\nexport const CronKindSchema = z.literal('session_prompt');\n\nconst CronSourceSchema = z.enum(['loop_command', 'cron_tool']);\n\nconst UserUpdatableCronStatusSchema = z.enum(['active', 'paused']);\n\nexport const CronScopeSchema = z.object({\n type: z.literal('session'),\n sessionId: z.string(),\n sessionCwd: z.string(),\n storageDir: z.string(),\n});\n\nexport const CronCreateScopeSchema = z.object({\n type: z.literal('session'),\n sessionId: z.string(),\n sessionCwd: z.string(),\n});\n\nexport const CronPayloadSchema = z.object({\n type: z.literal('prompt'),\n prompt: z.string().trim().min(1),\n target: z.object({\n type: z.literal('same_session'),\n }),\n});\n\nexport const CronRecordSchema = z.object({\n version: z.literal(1),\n id: z.string(),\n kind: CronKindSchema,\n status: CronStatusSchema,\n source: CronSourceSchema,\n scope: CronScopeSchema,\n schedule: z.object({\n expression: z.string().trim().min(1),\n recurring: z.boolean(),\n nextRunAt: z.string().optional(),\n firstFireGuardUntil: z.string().optional(),\n timezone: z.literal('UTC'),\n }),\n runPolicy: z.object({\n whenSessionInactive: z.literal('hold'),\n }),\n payload: CronPayloadSchema,\n stats: z.object({\n fireCount: z.number().int().nonnegative(),\n lastRunAt: z.string().optional(),\n lastCompletedAt: z.string().optional(),\n lastError: z.string().optional(),\n }),\n createdAt: z.string(),\n updatedAt: z.string(),\n heldAt: z.string().optional(),\n holdReason: z.string().optional(),\n});\n\nexport const DaemonListCronsRequestParamsSchema = z.object({\n sessionId: z.string().optional(),\n includeInactive: z.boolean().optional(),\n});\n\nexport const DaemonListCronsRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_CRONS),\n params: DaemonListCronsRequestParamsSchema,\n});\n\nexport const DaemonListCronsResultSchema = z.object({\n crons: z.array(CronRecordSchema),\n});\n\nexport const DaemonCreateCronRequestParamsSchema = z.object({\n kind: CronKindSchema,\n source: CronSourceSchema,\n scope: CronCreateScopeSchema,\n schedule: z.object({\n expression: z.string().trim().min(1),\n recurring: z.boolean(),\n }),\n runImmediately: z.boolean().optional(),\n runPolicy: z\n .object({\n whenSessionInactive: z.literal('hold'),\n })\n .optional(),\n payload: CronPayloadSchema,\n});\n\nexport const DaemonCreateCronRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CREATE_CRON),\n params: DaemonCreateCronRequestParamsSchema,\n});\n\nexport const DaemonCreateCronResultSchema = z.object({\n cron: CronRecordSchema,\n});\n\nexport const DaemonDeleteCronRequestParamsSchema = z.object({\n cronId: z.string(),\n sessionId: z.string().optional(),\n});\n\nexport const DaemonDeleteCronRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.DELETE_CRON),\n params: DaemonDeleteCronRequestParamsSchema,\n});\n\nexport const DaemonDeleteCronResultSchema = z.object({\n deleted: z.boolean(),\n});\n\nconst CronUpdatePayloadPatchSchema = z\n .object({\n prompt: z.string().trim().min(1).optional(),\n })\n .strict();\n\nexport const DaemonUpdateCronRequestParamsSchema = z.object({\n cronId: z.string(),\n status: UserUpdatableCronStatusSchema.optional(),\n schedule: z\n .object({\n expression: z.string().trim().min(1),\n recurring: z.boolean(),\n })\n .optional(),\n payload: CronUpdatePayloadPatchSchema.optional(),\n});\n\nexport const DaemonUpdateCronRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_CRON),\n params: DaemonUpdateCronRequestParamsSchema,\n});\n\nexport const DaemonUpdateCronResultSchema = z.object({\n cron: CronRecordSchema.nullable(),\n});\n\nexport const DaemonHoldSessionCronsRequestParamsSchema = z.object({\n sessionId: z.string(),\n reason: z.string(),\n});\n\nexport const DaemonHoldSessionCronsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.HOLD_SESSION_CRONS),\n params: DaemonHoldSessionCronsRequestParamsSchema,\n });\n\nexport const DaemonHoldSessionCronsResultSchema = z.object({\n heldCount: z.number().int().nonnegative(),\n});\n\nexport const DaemonResumeSessionCronsRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonResumeSessionCronsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.RESUME_SESSION_CRONS),\n params: DaemonResumeSessionCronsRequestParamsSchema,\n });\n\nexport const DaemonResumeSessionCronsResultSchema = z.object({\n resumedCount: z.number().int().nonnegative(),\n});\n\nexport const DaemonCronStateChangedNotificationParamsSchema = z.object({\n reason: z.enum(['created', 'updated', 'deleted']),\n cronIds: z.array(z.string()),\n crons: z.array(CronRecordSchema).optional(),\n});\n\nexport const DaemonCronStateChangedNotificationSchema =\n JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DaemonCronEvent.STATE_CHANGED),\n params: DaemonCronStateChangedNotificationParamsSchema,\n });\n","import z from 'zod';\n\nimport { JsonRpcBaseRequestSchema } from '../json-rpc.js';\nimport { MarketplaceSourceSchema } from '../settings.js';\nimport { DaemonDroidMethod } from './enums.js';\n\nexport { MarketplaceSourceSchema };\n\n// CRITICAL: `RedactedMarketplaceSourceSchema` below stays intentionally\n// distinct from `MarketplaceSourceSchema`. The redacted variant omits\n// filesystem paths and userinfo for RPC responses; collapsing the two would\n// risk credential / local-layout leakage.\n\n// ── LIST_AVAILABLE_PLUGINS ───────────────────────────────────────────\n\nconst DaemonListAvailablePluginsRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonListAvailablePluginsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_AVAILABLE_PLUGINS),\n params: DaemonListAvailablePluginsRequestParamsSchema,\n });\n\nexport const DaemonListAvailablePluginsResultSchema = z.object({\n plugins: z.array(\n z.object({\n name: z.string(),\n marketplace: z.string(),\n description: z.string().optional(),\n })\n ),\n});\n\n// ── LIST_INSTALLED_PLUGINS ───────────────────────────────────────────\n\nconst DaemonListInstalledPluginsRequestParamsSchema = z.object({\n sessionId: z.string(),\n scope: z.string().optional(),\n});\n\nexport const DaemonListInstalledPluginsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_INSTALLED_PLUGINS),\n params: DaemonListInstalledPluginsRequestParamsSchema,\n });\n\nexport const DaemonListInstalledPluginsResultSchema = z.object({\n plugins: z.array(\n z.object({\n id: z.string(),\n scope: z.string(),\n version: z.string(),\n installPath: z.string(),\n installedAt: z.string(),\n lastUpdated: z.string(),\n source: z.string(),\n })\n ),\n});\n\n// ── INSTALL_PLUGIN ───────────────────────────────────────────────────\n\nconst DaemonInstallPluginRequestParamsSchema = z.object({\n sessionId: z.string(),\n marketplace: z.string(),\n pluginName: z.string(),\n scope: z.string(),\n});\n\nexport const DaemonInstallPluginRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.INSTALL_PLUGIN),\n params: DaemonInstallPluginRequestParamsSchema,\n }\n);\n\nexport const DaemonInstallPluginResultSchema = z.object({\n success: z.boolean(),\n pluginId: z.string().optional(),\n error: z.string().optional(),\n});\n\n// ── UNINSTALL_PLUGIN ─────────────────────────────────────────────────\n\nconst DaemonUninstallPluginRequestParamsSchema = z.object({\n sessionId: z.string(),\n pluginId: z.string(),\n scope: z.string(),\n});\n\nexport const DaemonUninstallPluginRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UNINSTALL_PLUGIN),\n params: DaemonUninstallPluginRequestParamsSchema,\n });\n\nexport const DaemonUninstallPluginResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// ── UPDATE_PLUGIN ────────────────────────────────────────────────────\n\nconst DaemonUpdatePluginRequestParamsSchema = z.object({\n sessionId: z.string(),\n pluginId: z.string().optional(),\n scope: z.string().optional(),\n});\n\nexport const DaemonUpdatePluginRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_PLUGIN),\n params: DaemonUpdatePluginRequestParamsSchema,\n});\n\nexport const DaemonUpdatePluginResultSchema = z.object({\n results: z.array(\n z.object({\n pluginId: z.string(),\n success: z.boolean(),\n error: z.string().optional(),\n })\n ),\n});\n\n// ── LIST_MARKETPLACES ────────────────────────────────────────────────\n\nconst DaemonListMarketplacesRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonListMarketplacesRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_MARKETPLACES),\n params: DaemonListMarketplacesRequestParamsSchema,\n });\n\n// Redacted marketplace source shape for RPC responses. Unlike\n// `MarketplaceSourceSchema`, this intentionally omits filesystem paths for\n// `local` sources and expects URLs for `url` / `git-subdir` sources to be\n// scrubbed of credential userinfo before crossing the RPC boundary.\nexport const RedactedMarketplaceSourceSchema = z.discriminatedUnion('source', [\n z.object({\n source: z.literal('github'),\n repo: z.string(),\n }),\n z.object({\n source: z.literal('url'),\n url: z.string(),\n }),\n z.object({\n source: z.literal('local'),\n }),\n z.object({\n source: z.literal('git-subdir'),\n url: z.string(),\n path: z.string(),\n }),\n]);\n\nexport const DaemonListMarketplacesResultSchema = z.object({\n marketplaces: z.array(\n z.object({\n name: z.string(),\n source: RedactedMarketplaceSourceSchema,\n pluginCount: z.number(),\n autoUpdate: z.boolean(),\n })\n ),\n});\n\n// ── ADD_MARKETPLACE ──────────────────────────────────────────────────\n\nconst DaemonAddMarketplaceRequestParamsSchema = z.object({\n sessionId: z.string(),\n source: MarketplaceSourceSchema,\n});\n\nexport const DaemonAddMarketplaceRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.ADD_MARKETPLACE),\n params: DaemonAddMarketplaceRequestParamsSchema,\n });\n\nexport const DaemonAddMarketplaceResultSchema = z.object({\n success: z.boolean(),\n name: z.string().optional(),\n error: z.string().optional(),\n});\n\n// ── REMOVE_MARKETPLACE ───────────────────────────────────────────────\n\nconst DaemonRemoveMarketplaceRequestParamsSchema = z.object({\n sessionId: z.string(),\n name: z.string(),\n});\n\nexport const DaemonRemoveMarketplaceRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.REMOVE_MARKETPLACE),\n params: DaemonRemoveMarketplaceRequestParamsSchema,\n });\n\nexport const DaemonRemoveMarketplaceResultSchema = z.object({\n success: z.boolean(),\n error: z.string().optional(),\n});\n\n// ── UPDATE_MARKETPLACE ───────────────────────────────────────────────\n\nconst DaemonUpdateMarketplaceRequestParamsSchema = z.object({\n sessionId: z.string(),\n name: z.string().optional(),\n});\n\nexport const DaemonUpdateMarketplaceRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_MARKETPLACE),\n params: DaemonUpdateMarketplaceRequestParamsSchema,\n });\n\nexport const DaemonUpdateMarketplaceResultSchema = z.object({\n results: z.array(\n z.object({\n name: z.string(),\n success: z.boolean(),\n error: z.string().optional(),\n })\n ),\n});\n","/**\n * Daemon-only settings schemas.\n * These are for settings that are stored/retrieved directly by the daemon\n * without forwarding to the CLI process.\n */\nimport z from 'zod';\n\nimport { AvailableModelConfigSchema } from '../client.js';\nimport {\n AutonomyLevel,\n AutonomyMode,\n ReasoningEffort,\n SettingsLevel,\n} from '../enums.js';\nimport { GeneralSettingsSchema } from '../general-settings.js';\nimport {\n DroidInteractionModeSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseFailureSchema,\n JsonRpcBaseResponseSuccessSchema,\n} from '../json-rpc.js';\nimport {\n MissionModelSettingsSchema,\n SubagentModelSettingsSchema,\n} from '../model-settings.js';\nimport {\n SessionDefaultSettingsSchema,\n SettingsResolutionEventSchema,\n} from '../settings.js';\nimport { DaemonSettingsMethod } from './enums.js';\n\n// ---------------------------------------------------------------------------\n// Daemon settings RPC schemas\n// ---------------------------------------------------------------------------\n\n// Request params schemas\nexport const DaemonGetDefaultSettingsRequestParamsSchema = z.object({});\nconst DaemonSettingsManagementInfoSchema = z.object({\n disabled: z.boolean(),\n source: z.nativeEnum(SettingsLevel).nullable(),\n folderPath: z.string().optional(),\n});\nconst DaemonSettingsManagementInfoFieldSchema =\n DaemonSettingsManagementInfoSchema.optional().catch(undefined);\nconst LegacyCompactionModelModeWireSchema = z.enum([\n 'current-model',\n 'factory-default',\n]);\nconst DaemonSubagentDefaultsManagementMapSchema = z\n .object({\n lightModel: DaemonSettingsManagementInfoFieldSchema,\n lightReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n mediumModel: DaemonSettingsManagementInfoFieldSchema,\n mediumReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n heavyModel: DaemonSettingsManagementInfoFieldSchema,\n heavyReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n })\n .catch({});\nconst DaemonMissionDefaultsManagementMapSchema = z\n .object({\n orchestratorModel: DaemonSettingsManagementInfoFieldSchema,\n orchestratorReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n workerModel: DaemonSettingsManagementInfoFieldSchema,\n workerReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n validationWorkerModel: DaemonSettingsManagementInfoFieldSchema,\n validationWorkerReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n skipScrutiny: DaemonSettingsManagementInfoFieldSchema,\n skipUserTesting: DaemonSettingsManagementInfoFieldSchema,\n })\n .catch({});\nexport const DaemonSessionDefaultsManagementMapSchema = z\n .object({\n modelId: DaemonSettingsManagementInfoFieldSchema,\n reasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n interactionMode: DaemonSettingsManagementInfoFieldSchema,\n autonomyLevel: DaemonSettingsManagementInfoFieldSchema,\n autonomyMode: DaemonSettingsManagementInfoFieldSchema,\n specModeModelId: DaemonSettingsManagementInfoFieldSchema,\n specModeReasoningEffort: DaemonSettingsManagementInfoFieldSchema,\n specSaveDir: DaemonSettingsManagementInfoFieldSchema,\n compactionTokenLimit: DaemonSettingsManagementInfoFieldSchema,\n compactionTokenLimitPerModel: DaemonSettingsManagementInfoFieldSchema,\n compactionModel: DaemonSettingsManagementInfoFieldSchema,\n compactionModelMode: DaemonSettingsManagementInfoFieldSchema,\n runInWorktree: DaemonSettingsManagementInfoFieldSchema,\n worktreeDirectory: DaemonSettingsManagementInfoFieldSchema,\n subagent:\n DaemonSubagentDefaultsManagementMapSchema.optional().catch(undefined),\n mission:\n DaemonMissionDefaultsManagementMapSchema.optional().catch(undefined),\n })\n .catch({});\nexport const DaemonUpdateSessionDefaultsRequestParamsSchema = z.object({\n modelId: SessionDefaultSettingsSchema.shape.model,\n reasoningEffort: SessionDefaultSettingsSchema.shape.reasoningEffort,\n interactionMode: SessionDefaultSettingsSchema.shape.interactionMode,\n autonomyLevel: SessionDefaultSettingsSchema.shape.autonomyLevel,\n specModeModelId: SessionDefaultSettingsSchema.shape.specModeModel.nullable(),\n specModeReasoningEffort:\n SessionDefaultSettingsSchema.shape.specModeReasoningEffort.nullable(),\n compactionTokenLimit: GeneralSettingsSchema.shape.compactionTokenLimit,\n compactionTokenLimitPerModel:\n GeneralSettingsSchema.shape.compactionTokenLimitPerModel,\n compactionModel: GeneralSettingsSchema.shape.compactionModel,\n compactionModelMode: LegacyCompactionModelModeWireSchema.optional().describe(\n 'Deprecated wire input retained for existing daemon clients; use compactionModel instead.'\n ),\n subagentModelSettings: SubagentModelSettingsSchema.partial().optional(),\n specSaveDir: GeneralSettingsSchema.shape.specSaveDir.nullable().optional(),\n missionOrchestratorModel: GeneralSettingsSchema.shape.missionOrchestratorModel\n .nullable()\n .optional(),\n missionOrchestratorReasoningEffort:\n GeneralSettingsSchema.shape.missionOrchestratorReasoningEffort\n .nullable()\n .optional(),\n missionModelSettings: MissionModelSettingsSchema.partial().optional(),\n runInWorktree: SessionDefaultSettingsSchema.shape.runInWorktree\n .nullable()\n .optional(),\n worktreeDirectory: GeneralSettingsSchema.shape.worktreeDirectory\n .nullable()\n .optional(),\n});\n\nconst DaemonSpecSavePresetsSchema = z\n .object({\n projectFactoryDir: z.string().optional(),\n userFactoryDir: z.string(),\n })\n .optional();\n\n// Request schemas\nexport const DaemonGetDefaultSettingsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonSettingsMethod.GET_DEFAULT_SETTINGS),\n params: DaemonGetDefaultSettingsRequestParamsSchema,\n });\n\nexport const DaemonUpdateSessionDefaultsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonSettingsMethod.UPDATE_SESSION_DEFAULTS),\n params: DaemonUpdateSessionDefaultsRequestParamsSchema,\n });\n\n// Result schemas\nexport const DaemonGetDefaultSettingsResultSchema = z.object({\n autonomyMode: z\n .nativeEnum(AutonomyMode)\n .describe('Deprecated: use interactionMode + autonomyLevel instead.')\n .optional(),\n interactionMode: DroidInteractionModeSchema.optional().catch(undefined),\n autonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n maxAutonomyLevel: z.nativeEnum(AutonomyLevel).optional().catch(undefined),\n modelId: z.string().optional(),\n reasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n specSaveDir: z.string().optional(),\n specModeModelId: z.string().optional(),\n specModeReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n compactionTokenLimit: z.number().optional(),\n compactionTokenLimitPerModel: z.record(z.number()).optional(),\n compactionModel: GeneralSettingsSchema.shape.compactionModel,\n compactionModelMode: LegacyCompactionModelModeWireSchema.optional().describe(\n 'Deprecated wire view retained for existing daemon clients; use compactionModel instead.'\n ),\n runInWorktree: z.boolean().optional(),\n worktreeDirectory: z.string().optional(),\n management: DaemonSessionDefaultsManagementMapSchema.optional(),\n missionOrchestratorModel: z.string().optional(),\n missionOrchestratorReasoningEffort: z.nativeEnum(ReasoningEffort).optional(),\n missionSettings: MissionModelSettingsSchema.optional(),\n subagentModelSettings: SubagentModelSettingsSchema.optional(),\n availableModels: z.array(AvailableModelConfigSchema).optional(),\n specSavePresets: DaemonSpecSavePresetsSchema,\n resolutionChain: z\n .array(SettingsResolutionEventSchema)\n .optional()\n .catch(undefined),\n});\n\nexport const DaemonUpdateSessionDefaultsResultSchema = z.object({\n success: z.boolean(),\n defaults: DaemonGetDefaultSettingsResultSchema,\n});\n\n// Response schemas\nexport const DaemonGetDefaultSettingsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetDefaultSettingsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonUpdateSessionDefaultsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonUpdateSessionDefaultsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n","import z from 'zod';\n\nimport {\n AskUserRequestParamsSchema,\n AskUserResultSchema,\n RequestPermissionRequestParamsSchema,\n RequestPermissionResultSchema,\n SessionNotificationSchemaList,\n} from '../cli.js';\nimport {\n AddUserMessageRequestParamsSchema,\n AddUserMessageResultSchema,\n GetContextBreakdownResultSchema,\n InitializeSessionRequestParamsSchema,\n InitializeSessionResultSchema,\n InterruptSessionRequestParamsSchema,\n InterruptSessionResultSchema,\n KillWorkerSessionRequestParamsSchema,\n KillWorkerSessionResultSchema,\n LoadSessionRequestParamsSchema,\n LoadSessionResultSchema,\n ResolveQueuedUserMessageRequestParamsSchema,\n ResolveQueuedUserMessageResultSchema,\n UpdateSessionSettingsRequestParamsSchema,\n UpdateSessionSettingsResultSchema,\n ValidateWorkingDirectoryResultSchema,\n} from '../client.js';\nimport { DroidWorkingState, MissionState } from '../enums.js';\nimport { MessageRoleNoSystem } from '../enums.js';\nimport { HostIdSchema } from '../host.js';\nimport {\n CommandAckSchema,\n JsonRpcBaseNotificationSchema,\n JsonRpcBaseRequestSchema,\n JsonRpcBaseResponseSuccessSchema,\n JsonRpcBaseResponseFailureSchema,\n} from '../json-rpc.js';\nimport { FactoryDroidMessageSchema } from '../messages.js';\nimport { SessionTagSchema } from '../session.js';\nimport {\n DaemonListAutomationsRequestSchema,\n DaemonRunAutomationRequestSchema,\n DaemonPauseAutomationRequestSchema,\n DaemonResumeAutomationRequestSchema,\n DaemonGetAutomationHistoryRequestSchema,\n DaemonGetAutomationVisualRequestSchema,\n DaemonCreateAutomationRequestSchema,\n DaemonUpdateAutomationModelRequestSchema,\n DaemonUpdateAutomationPrivacyRequestSchema,\n DaemonRenameAutomationRequestSchema,\n DaemonDeleteAutomationRequestSchema,\n DaemonForkAutomationRequestSchema,\n} from './automations.js';\nimport { DaemonSubmitBugReportRequestSchema } from './bug-report.js';\nimport { DaemonListCommandsRequestSchema } from './commands.js';\nimport {\n DaemonListCronsRequestSchema,\n DaemonCreateCronRequestSchema,\n DaemonUpdateCronRequestSchema,\n DaemonDeleteCronRequestSchema,\n DaemonHoldSessionCronsRequestSchema,\n DaemonResumeSessionCronsRequestSchema,\n} from './crons.js';\nimport {\n DaemonDroidEvent,\n DaemonDroidMethod,\n DaemonGetGitDiffUnavailableReason,\n DaemonSpecificNotificationType,\n SessionSearchDocKind,\n} from './enums.js';\nimport {\n DaemonInstallSshKeyRequestSchema,\n DaemonTriggerUpdateRequestSchema,\n} from './management.js';\nimport {\n DaemonGetMcpConfigRequestSchema,\n DaemonUpdateMcpConfigRequestSchema,\n DaemonToggleMcpServerRequestSchema,\n DaemonAuthenticateMcpServerRequestSchema,\n DaemonCancelMcpAuthRequestSchema,\n DaemonClearMcpAuthRequestSchema,\n DaemonAddMcpServerRequestSchema,\n DaemonRemoveMcpServerRequestSchema,\n DaemonListMcpRegistryRequestSchema,\n DaemonListMcpToolsRequestSchema,\n DaemonListMcpServersRequestSchema,\n DaemonToggleMcpToolRequestSchema,\n DaemonSubmitMcpAuthCodeRequestSchema,\n} from './mcp.js';\nimport {\n DaemonListAvailablePluginsRequestSchema,\n DaemonListInstalledPluginsRequestSchema,\n DaemonInstallPluginRequestSchema,\n DaemonUninstallPluginRequestSchema,\n DaemonUpdatePluginRequestSchema,\n DaemonListMarketplacesRequestSchema,\n DaemonAddMarketplaceRequestSchema,\n DaemonRemoveMarketplaceRequestSchema,\n DaemonUpdateMarketplaceRequestSchema,\n} from './plugins.js';\nimport {\n DaemonGetDefaultSettingsRequestSchema,\n DaemonUpdateSessionDefaultsRequestSchema,\n} from './settings.js';\nimport { DaemonListSkillsRequestSchema } from './skills.js';\nimport {\n TerminalDataNotificationSchema,\n TerminalExitNotificationSchema,\n} from './terminal.js';\n\n// Daemon request params schemas - extend client schemas with sessionId and token where needed\n\nexport const DaemonCommandAckResultSchema = CommandAckSchema;\n\nconst createResponseSchema = <T extends z.ZodTypeAny>(resultSchema: T) =>\n z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: resultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n ]);\n\nconst createAckCompatibleResponseSchema = <T extends z.ZodTypeAny>(\n resultSchema: T\n) =>\n z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: z.union([DaemonCommandAckResultSchema, resultSchema]),\n }),\n JsonRpcBaseResponseFailureSchema,\n ]);\n\nexport const DaemonInitializeSessionRequestParamsSchema =\n InitializeSessionRequestParamsSchema.extend({\n token: z.string(),\n inactivityTimeoutMs: z.number().int().positive().optional(),\n disableInactivityTimeout: z.boolean().optional(),\n runtimeSettingsPath: z.string().optional(),\n });\n\n/** Session spawn options captured for loadSession replay. */\nexport const DaemonLoadSessionSpawnOptionsSchema = z.object({\n disableInactivityTimeout: z.boolean().optional(),\n skipPermissionsUnsafe: z.boolean().optional(),\n runtimeSettingsPath: z.string().optional(),\n});\n\nexport const DaemonLoadSessionRequestParamsSchema =\n LoadSessionRequestParamsSchema.merge(\n DaemonLoadSessionSpawnOptionsSchema\n ).extend({\n token: z.string(),\n });\n\nexport const DaemonAddUserMessageRequestParamsSchema =\n AddUserMessageRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonResolveQueuedUserMessageRequestParamsSchema =\n ResolveQueuedUserMessageRequestParamsSchema.and(\n z.object({\n sessionId: z.string(),\n })\n );\n\nexport const DaemonInterruptSessionRequestParamsSchema =\n InterruptSessionRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonCloseSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonSessionListFilterSchema = z.object({\n missionSessions: z.boolean().optional(),\n includeBtwForks: z.boolean().optional(),\n});\n\nexport const DaemonListOpenedSessionsRequestParamsSchema = z.object({\n filter: DaemonSessionListFilterSchema.optional(),\n});\n\nexport const DaemonListAvailableSessionsFilterSchema =\n DaemonSessionListFilterSchema.extend({\n missionStates: z.array(z.nativeEnum(MissionState)).optional(),\n });\n\nexport const DaemonListAvailableSessionsRequestParamsSchema = z.object({\n limit: z.number().min(1).max(100).default(50), // Default 50\n endBefore: z.number().optional(), // Unix epoch seconds cursor\n includeMissionMetadata: z.boolean().optional(),\n filter: DaemonListAvailableSessionsFilterSchema.optional(),\n});\n\nexport const DaemonGetSessionMessagesRequestParamsSchema = z.object({\n sessionId: z.string(),\n limit: z.number().min(1).max(100).default(20),\n cursor: z.string().optional(),\n role: z.nativeEnum(MessageRoleNoSystem).optional(),\n});\n\nexport const DaemonUpdateSessionSettingsRequestParamsSchema =\n UpdateSessionSettingsRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonGetUserInfoRequestParamsSchema = z.object({});\n\nexport const DaemonValidateWorkingDirectoryRequestParamsSchema = z.object({\n workingDirectory: z.string(),\n});\n\nexport const DaemonInitializeSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.INITIALIZE_SESSION),\n params: DaemonInitializeSessionRequestParamsSchema,\n });\n\nexport const DaemonLoadSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LOAD_SESSION),\n params: DaemonLoadSessionRequestParamsSchema,\n});\n\nexport const DaemonAddUserMessageRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.ADD_USER_MESSAGE),\n params: DaemonAddUserMessageRequestParamsSchema,\n });\n\nexport const DaemonResolveQueuedUserMessageRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.RESOLVE_QUEUED_USER_MESSAGE),\n params: DaemonResolveQueuedUserMessageRequestParamsSchema,\n });\n\nexport const DaemonInterruptSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.INTERRUPT_SESSION),\n params: DaemonInterruptSessionRequestParamsSchema,\n });\n\nexport const DaemonCloseSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CLOSE_SESSION),\n params: DaemonCloseSessionRequestParamsSchema,\n});\n\nexport const DaemonCloseSessionResultSchema = z.object({});\n\nexport const DaemonKillWorkerSessionRequestParamsSchema = z\n .object({\n /** The orchestrator session ID (where the mission is running) */\n sessionId: z.string(),\n })\n .extend(KillWorkerSessionRequestParamsSchema.shape);\n\nexport const DaemonKillWorkerSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.KILL_WORKER_SESSION),\n params: DaemonKillWorkerSessionRequestParamsSchema,\n });\n\nexport const DaemonKillWorkerSessionResultSchema =\n KillWorkerSessionResultSchema;\n\nexport const DaemonListOpenedSessionsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_OPENED_SESSIONS),\n params: DaemonListOpenedSessionsRequestParamsSchema,\n });\n\nexport const DaemonListAvailableSessionsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_AVAILABLE_SESSIONS),\n params: DaemonListAvailableSessionsRequestParamsSchema,\n });\n\nexport const DaemonGetSessionMessagesRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_SESSION_MESSAGES),\n params: DaemonGetSessionMessagesRequestParamsSchema,\n });\n\nexport const DaemonUpdateSessionSettingsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UPDATE_SESSION_SETTINGS),\n params: DaemonUpdateSessionSettingsRequestParamsSchema,\n });\n\nexport const DaemonValidateWorkingDirectoryRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.VALIDATE_WORKING_DIRECTORY),\n params: DaemonValidateWorkingDirectoryRequestParamsSchema,\n });\n\nexport const DaemonInitializeSessionResultSchema =\n InitializeSessionResultSchema;\n\nexport const DaemonLoadSessionResultSchema = LoadSessionResultSchema;\n\nexport const DaemonAddUserMessageResultSchema = AddUserMessageResultSchema;\n\nexport const DaemonResolveQueuedUserMessageResultSchema =\n ResolveQueuedUserMessageResultSchema;\n\nexport const DaemonInterruptSessionResultSchema = InterruptSessionResultSchema;\n\nexport const DaemonOpenedSessionInfoSchema = z.object({\n sessionId: z.string(),\n hostId: HostIdSchema.optional(),\n updatedAt: z.number(), // Unix epoch seconds (in-memory updatedAt timestamp)\n workingState: z.nativeEnum(DroidWorkingState),\n cwd: z.string().optional(), // Working directory for the session (may be missing for older sessions)\n repoRoot: z.string().optional(), // Git repo root for `cwd`; for worktree cwds this points at the main repo path. Used to group worktree sessions under their parent project in the sidebar.\n messagesCount: z.number().optional(), // Number of messages in session\n callingSessionId: z.string().optional(), // Parent session ID for child/worker sessions\n callingToolUseId: z.string().optional(), // Parent tool use ID that spawned this child session\n tags: z.array(SessionTagSchema).optional(), // Session tags for categorization\n});\n\nexport const DaemonAvailableSessionInfoSchema = z.object({\n sessionId: z.string(),\n hostId: HostIdSchema.optional(),\n updatedAt: z.number(), // Unix epoch seconds (file mtime)\n title: z.string().optional(), // May be missing on parse errors\n cwd: z.string().optional(), // Working directory for the session (may be missing for older sessions)\n repoRoot: z.string().optional(), // See DaemonOpenedSessionInfoSchema.repoRoot.\n messagesCount: z.number().optional(), // Number of messages in session\n archivedAt: z.string().optional(), // ISO timestamp when archived - presence indicates archived status\n callingSessionId: z.string().optional(), // Parent session ID for child/worker sessions (from JSONL summary `callingSessionId` field)\n callingToolUseId: z.string().optional(), // Parent tool use ID that spawned this child session (from JSONL summary)\n tags: z.array(SessionTagSchema).optional(), // Session tags for categorization\n mission: z\n .object({\n state: z.nativeEnum(MissionState).nullable(),\n title: z.string().nullable(),\n workingDirectory: z.string().nullable(),\n createdAt: z.string().nullable(),\n elapsedMs: z.number().nullable(),\n completedFeatures: z.number().nullable(),\n totalFeatures: z.number().nullable(),\n })\n .optional(),\n});\n\nexport const DaemonListOpenedSessionsResultSchema = z.object({\n sessions: z.array(DaemonOpenedSessionInfoSchema),\n});\n\nexport const DaemonListAvailableSessionsResultSchema = z.object({\n sessions: z.array(DaemonAvailableSessionInfoSchema),\n hasMore: z.boolean(),\n nextCursor: z.number().optional(),\n});\n\nexport const DaemonGetSessionMessagesResultSchema = z.object({\n messages: z.array(FactoryDroidMessageSchema),\n hasMore: z.boolean(),\n nextCursor: z.string().optional(),\n});\n\nexport const DaemonUpdateSessionSettingsResultSchema =\n UpdateSessionSettingsResultSchema;\n\nexport const DaemonGetUserInfoResultSchema = z.object({\n userId: z.string(),\n orgId: z.string(),\n});\n\nexport const DaemonValidateWorkingDirectoryResultSchema =\n ValidateWorkingDirectoryResultSchema;\n\n// Permission request schemas - extend client schemas with sessionId\nexport const DaemonRequestPermissionParamsSchema =\n RequestPermissionRequestParamsSchema.extend({\n sessionId: z.string(),\n });\n\nexport const DaemonRequestPermissionResultSchema =\n RequestPermissionResultSchema.and(z.object({ sessionId: z.string() }));\n\n// AskUser request schemas - extend droid schemas with sessionId\nexport const DaemonAskUserParamsSchema = AskUserRequestParamsSchema.extend({\n sessionId: z.string(),\n});\n\nexport const DaemonAskUserResultSchema = AskUserResultSchema.extend({\n sessionId: z.string(),\n});\n\n// ============================================================\n// List Files\n// ============================================================\n\nexport const DaemonListFilesRequestParamsSchema = z.object({\n sessionId: z.string(),\n showHidden: z.boolean().optional().default(false),\n});\n\nexport const DaemonListFilesResultSchema = z.object({\n files: z.array(z.string()),\n});\n\nexport const DaemonListFilesRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.LIST_FILES),\n params: DaemonListFilesRequestParamsSchema,\n});\n\nexport const DaemonListFilesResponseSchema =\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonListFilesResultSchema,\n });\n\n// ============================================================\n// Search Files (Fuzzy Search)\n// ============================================================\n\nexport const DaemonSearchFilesRequestParamsSchema = z.object({\n sessionId: z.string(),\n query: z.string(),\n maxResults: z.number().optional().default(60),\n showHidden: z.boolean().optional().default(false),\n});\n\nexport const DaemonSearchFilesResultSchema = z.object({\n files: z.array(z.string()),\n totalFiles: z.number(),\n});\n\nexport const DaemonSearchFilesRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SEARCH_FILES),\n params: DaemonSearchFilesRequestParamsSchema,\n});\n\nexport const DaemonSearchFilesResponseSchema =\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonSearchFilesResultSchema,\n });\n\n// ============================================================\n// Search Sessions (Full-text search across session history)\n// ============================================================\n\nconst SessionSearchDocKindSchema = z.nativeEnum(SessionSearchDocKind);\n\nexport const DaemonSearchSessionsRequestParamsSchema = z.object({\n query: z.string(),\n kind: z.union([SessionSearchDocKindSchema, z.literal('all')]).optional(),\n limitSessions: z.number().optional(),\n limitHitsPerSession: z.number().optional(),\n contextChars: z.number().optional(),\n});\n\nexport const DaemonSearchSessionsHitSchema = z.object({\n docId: z.string(),\n kind: SessionSearchDocKindSchema,\n score: z.number().optional(),\n toolName: z.string().optional(),\n messageRole: z.enum(['user', 'assistant']).optional(),\n snippets: z.array(z.string()),\n});\n\nexport const DaemonSearchSessionsSessionResultSchema = z.object({\n sessionId: z.string(),\n title: z.string().optional(),\n updatedAt: z.number().optional(), // Unix timestamp in milliseconds for sorting\n hits: z.array(DaemonSearchSessionsHitSchema),\n totals: z\n .object({\n byKind: z.record(z.number()).optional(),\n toolUse: z.record(z.number()).optional(),\n toolResult: z.record(z.number()).optional(),\n })\n .optional(),\n});\n\nexport const DaemonSearchSessionsResultSchema = z.object({\n query: z.string(),\n sessions: z.array(DaemonSearchSessionsSessionResultSchema),\n});\n\nexport const DaemonSearchSessionsRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SEARCH_SESSIONS),\n params: DaemonSearchSessionsRequestParamsSchema,\n });\n\nexport const DaemonSearchSessionsResponseSchema =\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonSearchSessionsResultSchema,\n });\n\n// ============================================================\n// Archive Session\n// ============================================================\n\nexport const DaemonArchiveSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonArchiveSessionResultSchema = z.object({\n success: z.boolean(),\n archivedAt: z.string(), // ISO timestamp\n});\n\nexport const DaemonArchiveSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.ARCHIVE_SESSION),\n params: DaemonArchiveSessionRequestParamsSchema,\n });\n\nexport const DaemonArchiveSessionResponseSchema = createResponseSchema(\n DaemonArchiveSessionResultSchema\n);\n\n// ============================================================\n// Unarchive Session\n// ============================================================\n\nexport const DaemonUnarchiveSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonUnarchiveSessionResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonUnarchiveSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.UNARCHIVE_SESSION),\n params: DaemonUnarchiveSessionRequestParamsSchema,\n });\n\nexport const DaemonUnarchiveSessionResponseSchema = createResponseSchema(\n DaemonUnarchiveSessionResultSchema\n);\n\n// ============================================================\n// Rename Session\n// ============================================================\n\nexport const DaemonRenameSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n title: z.string(),\n});\n\nexport const DaemonRenameSessionResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonRenameSessionRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.RENAME_SESSION),\n params: DaemonRenameSessionRequestParamsSchema,\n }\n);\n\nexport const DaemonRenameSessionResponseSchema =\n createAckCompatibleResponseSchema(DaemonRenameSessionResultSchema);\n\n// ============================================================\n// Get Git Diff\n// ============================================================\n\nexport const DaemonGetGitDiffRequestParamsSchema = z.object({\n sessionId: z.string(),\n baseBranch: z.string().optional(),\n statsOnly: z.boolean().optional(),\n});\n\nexport const DaemonGetGitDiffFileSchema = z.object({\n path: z.string(),\n additions: z.number(),\n deletions: z.number(),\n status: z.string(),\n});\n\nexport const DaemonGetGitDiffCommitSchema = z.object({\n hash: z.string(),\n message: z.string(),\n});\n\nconst DaemonGetGitDiffUnavailableReasonSchema = z\n .nativeEnum(DaemonGetGitDiffUnavailableReason)\n .catch(DaemonGetGitDiffUnavailableReason.Unknown);\n\nexport const DaemonGetGitDiffDataSchema = z.object({\n diff: z.string(),\n branch: z.string(),\n baseBranch: z.string(),\n files: z.array(DaemonGetGitDiffFileSchema),\n totalAdditions: z.number(),\n totalDeletions: z.number(),\n remoteUrl: z.string().nullable(),\n commits: z.array(DaemonGetGitDiffCommitSchema),\n committedDiff: z.string().default(''),\n committedFiles: z.array(DaemonGetGitDiffFileSchema).default([]),\n committedTotalAdditions: z.number().default(0),\n committedTotalDeletions: z.number().default(0),\n unstagedDiff: z.string().default(''),\n unstagedFiles: z.array(DaemonGetGitDiffFileSchema).default([]),\n unstagedTotalAdditions: z.number().default(0),\n unstagedTotalDeletions: z.number().default(0),\n});\n\nexport const DaemonGetGitDiffSuccessResultSchema = z.object({\n success: z.literal(true),\n data: DaemonGetGitDiffDataSchema,\n});\n\nexport const DaemonGetGitDiffUnavailableResultSchema = z.object({\n success: z.literal(false),\n unavailableReason: DaemonGetGitDiffUnavailableReasonSchema,\n unavailableMessage: z.string(),\n});\n\nexport const DaemonGetGitDiffResultSchema = z.preprocess(\n (value) => {\n if (\n value &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n !('success' in value)\n ) {\n const legacyResult = DaemonGetGitDiffDataSchema.safeParse(value);\n if (legacyResult.success) {\n return { success: true, data: legacyResult.data };\n }\n }\n\n return value;\n },\n z.discriminatedUnion('success', [\n DaemonGetGitDiffSuccessResultSchema,\n DaemonGetGitDiffUnavailableResultSchema,\n ])\n);\n\nexport const DaemonGetGitDiffRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_GIT_DIFF),\n params: DaemonGetGitDiffRequestParamsSchema,\n});\n\nexport const DaemonGetGitDiffResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetGitDiffResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// ============================================================\n// Git Push\n// ============================================================\n\nexport const DaemonGitPushRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonGitPushResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonGitPushRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GIT_PUSH),\n params: DaemonGitPushRequestParamsSchema,\n});\n\nexport const DaemonGitPushResponseSchema = createResponseSchema(\n DaemonGitPushResultSchema\n);\n\n// ============================================================\n// Git Commit\n// ============================================================\n\nexport const DaemonGitCommitRequestParamsSchema = z.object({\n sessionId: z.string(),\n message: z.string(),\n});\n\nexport const DaemonGitCommitResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonGitCommitRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GIT_COMMIT),\n params: DaemonGitCommitRequestParamsSchema,\n});\n\nexport const DaemonGitCommitResponseSchema = createResponseSchema(\n DaemonGitCommitResultSchema\n);\n\n// ============================================================\n// Create PR\n// ============================================================\n\nexport const DaemonCreatePRRequestParamsSchema = z.object({\n sessionId: z.string(),\n title: z.string(),\n body: z.string().optional(),\n baseBranch: z.string(),\n draft: z.boolean().optional(),\n linkedTicketIds: z.array(z.string()).optional(),\n linkedTicketUrls: z.array(z.string()).optional(),\n jiraIssueKeys: z.array(z.string()).optional(),\n linearIssueIds: z.array(z.string()).optional(),\n});\n\nexport const DaemonCreatePRResultSchema = z.object({\n number: z.number(),\n title: z.string(),\n url: z.string(),\n state: z.string(),\n draft: z.boolean(),\n});\n\nexport const DaemonCreatePRRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.CREATE_PR),\n params: DaemonCreatePRRequestParamsSchema,\n});\n\nexport const DaemonCreatePRResponseSchema = createResponseSchema(\n DaemonCreatePRResultSchema\n);\n\n// ============================================================\n// Semantic Diff Cache\n// ============================================================\n\nexport const DaemonGetSemanticDiffCacheRequestParamsSchema = z.object({\n currentBranch: z.string(),\n baseBranch: z.string(),\n});\n\nexport const DaemonGetSemanticDiffCacheResultSchema = z.object({\n content: z.string().nullable(),\n commitHash: z.string().nullable(),\n truncated: z.boolean(),\n});\n\nexport const DaemonGetSemanticDiffCacheRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_SEMANTIC_DIFF_CACHE),\n params: DaemonGetSemanticDiffCacheRequestParamsSchema,\n });\n\nexport const DaemonGetSemanticDiffCacheResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetSemanticDiffCacheResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonSaveSemanticDiffCacheRequestParamsSchema = z.object({\n currentBranch: z.string(),\n baseBranch: z.string(),\n commitHash: z.string(),\n content: z.string(),\n truncated: z.boolean(),\n});\n\nexport const DaemonSaveSemanticDiffCacheResultSchema = z.object({\n success: z.boolean(),\n});\n\nexport const DaemonSaveSemanticDiffCacheRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.SAVE_SEMANTIC_DIFF_CACHE),\n params: DaemonSaveSemanticDiffCacheRequestParamsSchema,\n });\n\nexport const DaemonSaveSemanticDiffCacheResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonSaveSemanticDiffCacheResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// ============================================================\n// Generate Semantic Diff (Agent Flow)\n// ============================================================\n\nexport const DaemonGenerateSemanticDiffRequestParamsSchema = z.object({\n sessionId: z.string(),\n diff: z.string(),\n baseBranch: z.string(),\n currentBranch: z.string(),\n commitHash: z.string().optional(),\n modelId: z.string().optional(),\n unstagedDiff: z.string().optional(),\n});\n\nexport const DaemonGenerateSemanticDiffResultSchema = z.object({\n content: z.string(),\n truncated: z.boolean(),\n sessionId: z.string(),\n});\n\nexport const DaemonGenerateSemanticDiffRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GENERATE_SEMANTIC_DIFF),\n params: DaemonGenerateSemanticDiffRequestParamsSchema,\n });\n\nexport const DaemonGenerateSemanticDiffResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGenerateSemanticDiffResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Get Proxy Token\n// ============================================================\n\nexport const DaemonGetProxyTokenResultSchema = z.object({\n token: z.string(),\n});\n\nexport const DaemonGetProxyTokenRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.GET_PROXY_TOKEN),\n }\n);\n\nexport const DaemonGetProxyTokenResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetProxyTokenResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Get Workspace File Content\n// ============================================================\n\nconst DaemonGetWorkspaceFileContentRequestParamsSchema = z.object({\n sessionId: z.string(),\n filePath: z.string(),\n /**\n * How the file bytes should be encoded in the response. `utf8` (default)\n * returns decoded text for source/markdown previews; `base64` returns the\n * raw bytes for binary previews (PDF, images) that the client turns into a\n * blob URL.\n */\n encoding: z.enum(['utf8', 'base64']).optional(),\n});\n\nexport const DaemonGetWorkspaceFileContentResultSchema = z.object({\n content: z.string(),\n byteLength: z.number(),\n /**\n * Encoding of `content`: decoded text (`utf8`) or raw bytes (`base64`).\n * Optional for protocol back-compat; absent responses are treated as\n * `utf8` by the client.\n */\n encoding: z.enum(['utf8', 'base64']).optional(),\n /** Best-effort MIME type derived from the file extension, when known. */\n mimeType: z.string().optional(),\n /**\n * Set when a `utf8` request targeted a file whose bytes are not valid text\n * (e.g. a binary file opened by the generic code renderer). The client\n * shows a \"binary file\" guard instead of rendering garbage.\n */\n isBinary: z.boolean().optional(),\n});\n\nexport const DaemonGetWorkspaceFileContentRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_WORKSPACE_FILE_CONTENT),\n params: DaemonGetWorkspaceFileContentRequestParamsSchema,\n });\n\nexport const DaemonGetWorkspaceFileContentResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetWorkspaceFileContentResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Rewind schemas\n\nconst DaemonGetRewindInfoRequestParamsSchema = z.object({\n sessionId: z.string(),\n messageId: z.string(),\n});\n\nconst DaemonRewindFileSnapshotSchema = z.object({\n filePath: z.string(),\n contentHash: z.string(),\n size: z.number(),\n});\n\nconst DaemonRewindFileCreationSchema = z.object({\n filePath: z.string(),\n});\n\nconst DaemonRewindEvictedFileSchema = z.object({\n filePath: z.string(),\n reason: z.string(),\n});\n\nexport const DaemonGetRewindInfoResultSchema = z.object({\n availableFiles: z.array(DaemonRewindFileSnapshotSchema),\n createdFiles: z.array(DaemonRewindFileCreationSchema),\n evictedFiles: z.array(DaemonRewindEvictedFileSchema),\n});\n\nexport const DaemonGetRewindInfoRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.GET_REWIND_INFO),\n params: DaemonGetRewindInfoRequestParamsSchema,\n }\n);\n\nexport const DaemonGetRewindInfoResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetRewindInfoResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nconst DaemonExecuteRewindRequestParamsSchema = z.object({\n sessionId: z.string(),\n messageId: z.string(),\n filesToRestore: z.array(DaemonRewindFileSnapshotSchema),\n filesToDelete: z.array(DaemonRewindFileCreationSchema),\n forkTitle: z.string(),\n});\n\nexport const DaemonExecuteRewindResultSchema = z.object({\n newSessionId: z.string(),\n restoredCount: z.number(),\n deletedCount: z.number(),\n failedRestoreCount: z.number(),\n failedDeleteCount: z.number(),\n});\n\nexport const DaemonExecuteRewindRequestSchema = JsonRpcBaseRequestSchema.extend(\n {\n method: z.literal(DaemonDroidMethod.EXECUTE_REWIND),\n params: DaemonExecuteRewindRequestParamsSchema,\n }\n);\n\nexport const DaemonExecuteRewindResponseSchema = createResponseSchema(\n DaemonExecuteRewindResultSchema\n);\n\n// ============================================================\n// Compact Session\n// ============================================================\n\nexport const DaemonCompactSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n customInstructions: z.string().optional(),\n});\n\nexport const DaemonCompactSessionResultSchema = z.object({\n newSessionId: z.string(),\n removedCount: z.number(),\n});\n\nexport const DaemonCompactSessionRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.COMPACT_SESSION),\n params: DaemonCompactSessionRequestParamsSchema,\n });\n\nexport const DaemonCompactSessionResponseSchema = createResponseSchema(\n DaemonCompactSessionResultSchema\n);\n\n// Fork Session\n// ============================================================\n\nexport const DaemonForkSessionRequestParamsSchema = z.object({\n sessionId: z.string(),\n title: z.string().optional(),\n tags: z\n .array(\n z.object({ name: z.string(), metadata: z.record(z.string()).optional() })\n )\n .optional(),\n});\n\nexport const DaemonForkSessionResultSchema = z.object({\n newSessionId: z.string(),\n});\n\nexport const DaemonForkSessionRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.FORK_SESSION),\n params: DaemonForkSessionRequestParamsSchema,\n});\n\nexport const DaemonForkSessionResponseSchema = createResponseSchema(\n DaemonForkSessionResultSchema\n);\n\n// Warmup Cache\n// ============================================================\n\nexport const DaemonWarmupCacheRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonWarmupCacheRequestSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.WARMUP_CACHE),\n params: DaemonWarmupCacheRequestParamsSchema,\n});\n\nconst DaemonWarmupCacheResultSchema = z.object({});\n\nexport const DaemonWarmupCacheResponseSchema = createResponseSchema(\n DaemonWarmupCacheResultSchema\n);\n\n// ============================================================\n// Get Context Breakdown\n// ============================================================\n\n// The daemon RPC is a passthrough — reuse the droid SDK result shape directly.\nexport const DaemonGetContextBreakdownResultSchema =\n GetContextBreakdownResultSchema;\n\nconst DaemonGetContextBreakdownRequestParamsSchema = z.object({\n sessionId: z.string(),\n});\n\nexport const DaemonGetContextBreakdownRequestSchema =\n JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidMethod.GET_CONTEXT_BREAKDOWN),\n params: DaemonGetContextBreakdownRequestParamsSchema,\n });\n\nexport const DaemonGetContextBreakdownResponseSchema = createResponseSchema(\n DaemonGetContextBreakdownResultSchema\n);\n\n// Union of all daemon request types (discriminated by method)\nexport const DaemonRequestSchema = z.discriminatedUnion('method', [\n DaemonInitializeSessionRequestSchema,\n DaemonLoadSessionRequestSchema,\n DaemonAddUserMessageRequestSchema,\n DaemonResolveQueuedUserMessageRequestSchema,\n DaemonInterruptSessionRequestSchema,\n DaemonCloseSessionRequestSchema,\n DaemonKillWorkerSessionRequestSchema,\n DaemonListOpenedSessionsRequestSchema,\n DaemonListAvailableSessionsRequestSchema,\n DaemonGetSessionMessagesRequestSchema,\n DaemonUpdateSessionSettingsRequestSchema,\n DaemonGetDefaultSettingsRequestSchema,\n DaemonUpdateSessionDefaultsRequestSchema,\n DaemonValidateWorkingDirectoryRequestSchema,\n DaemonListFilesRequestSchema,\n DaemonSearchFilesRequestSchema,\n DaemonGetMcpConfigRequestSchema,\n DaemonUpdateMcpConfigRequestSchema,\n DaemonToggleMcpServerRequestSchema,\n DaemonAuthenticateMcpServerRequestSchema,\n DaemonCancelMcpAuthRequestSchema,\n DaemonClearMcpAuthRequestSchema,\n DaemonAddMcpServerRequestSchema,\n DaemonRemoveMcpServerRequestSchema,\n DaemonListMcpRegistryRequestSchema,\n DaemonListMcpToolsRequestSchema,\n DaemonListMcpServersRequestSchema,\n DaemonToggleMcpToolRequestSchema,\n DaemonSubmitMcpAuthCodeRequestSchema,\n DaemonSearchSessionsRequestSchema,\n DaemonArchiveSessionRequestSchema,\n DaemonUnarchiveSessionRequestSchema,\n DaemonRenameSessionRequestSchema,\n DaemonListSkillsRequestSchema,\n DaemonListCommandsRequestSchema,\n DaemonListAvailablePluginsRequestSchema,\n DaemonListInstalledPluginsRequestSchema,\n DaemonInstallPluginRequestSchema,\n DaemonUninstallPluginRequestSchema,\n DaemonUpdatePluginRequestSchema,\n DaemonListMarketplacesRequestSchema,\n DaemonAddMarketplaceRequestSchema,\n DaemonRemoveMarketplaceRequestSchema,\n DaemonUpdateMarketplaceRequestSchema,\n DaemonSubmitBugReportRequestSchema,\n DaemonListAutomationsRequestSchema,\n DaemonRunAutomationRequestSchema,\n DaemonPauseAutomationRequestSchema,\n DaemonResumeAutomationRequestSchema,\n DaemonGetAutomationHistoryRequestSchema,\n DaemonGetAutomationVisualRequestSchema,\n DaemonCreateAutomationRequestSchema,\n DaemonUpdateAutomationModelRequestSchema,\n DaemonUpdateAutomationPrivacyRequestSchema,\n DaemonRenameAutomationRequestSchema,\n DaemonDeleteAutomationRequestSchema,\n DaemonForkAutomationRequestSchema,\n DaemonListCronsRequestSchema,\n DaemonCreateCronRequestSchema,\n DaemonUpdateCronRequestSchema,\n DaemonDeleteCronRequestSchema,\n DaemonHoldSessionCronsRequestSchema,\n DaemonResumeSessionCronsRequestSchema,\n DaemonGetGitDiffRequestSchema,\n DaemonGitPushRequestSchema,\n DaemonGitCommitRequestSchema,\n DaemonCreatePRRequestSchema,\n DaemonGetSemanticDiffCacheRequestSchema,\n DaemonSaveSemanticDiffCacheRequestSchema,\n DaemonGenerateSemanticDiffRequestSchema,\n DaemonGetProxyTokenRequestSchema,\n DaemonGetWorkspaceFileContentRequestSchema,\n DaemonTriggerUpdateRequestSchema,\n DaemonInstallSshKeyRequestSchema,\n DaemonGetRewindInfoRequestSchema,\n DaemonExecuteRewindRequestSchema,\n DaemonCompactSessionRequestSchema,\n DaemonForkSessionRequestSchema,\n DaemonWarmupCacheRequestSchema,\n DaemonGetContextBreakdownRequestSchema,\n]);\n\n// Daemon response schemas\nexport const DaemonInitializeSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonInitializeSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonLoadSessionResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonLoadSessionResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonAddUserMessageResponseSchema =\n createAckCompatibleResponseSchema(DaemonAddUserMessageResultSchema);\n\nexport const DaemonResolveQueuedUserMessageResponseSchema =\n createAckCompatibleResponseSchema(DaemonResolveQueuedUserMessageResultSchema);\n\nexport const DaemonInterruptSessionResponseSchema = createResponseSchema(\n DaemonInterruptSessionResultSchema\n);\n\nexport const DaemonCloseSessionResponseSchema = createResponseSchema(\n DaemonCloseSessionResultSchema\n);\n\nexport const DaemonListOpenedSessionsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonListOpenedSessionsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonListAvailableSessionsResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonListAvailableSessionsResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonGetSessionMessagesResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonGetSessionMessagesResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\nexport const DaemonUpdateSessionSettingsResponseSchema =\n createAckCompatibleResponseSchema(DaemonUpdateSessionSettingsResultSchema);\n\nexport const DaemonValidateWorkingDirectoryResponseSchema = z.union([\n JsonRpcBaseResponseSuccessSchema.extend({\n result: DaemonValidateWorkingDirectoryResultSchema,\n }),\n JsonRpcBaseResponseFailureSchema,\n]);\n\n// Session inactivity params - daemon-level lifecycle event\nexport const SessionInactivityNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.SESSION_INACTIVITY),\n message: z.string(),\n timestamp: z.number(),\n timeoutSeconds: z.number(),\n});\n\n// Session process exit params - daemon-level lifecycle event\nconst SessionProcessExitedNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.SESSION_PROCESS_EXITED),\n message: z.string(),\n timestamp: z.number(),\n});\n\nconst SessionClosedNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.SESSION_CLOSED),\n timestamp: z.number(),\n});\n\n// Session unsubscribed params - daemon-level notification when another client connects\nexport const SessionUnsubscribedNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.SESSION_UNSUBSCRIBED),\n message: z.string(),\n});\n\nexport const ChildSessionAvailableNotificationSchema = z.object({\n type: z.literal(DaemonSpecificNotificationType.CHILD_SESSION_AVAILABLE),\n childSessionId: z.string(),\n timestamp: z.number(),\n});\n\n// Daemon session notification schema - extends SDK schema with sessionId\nexport const DaemonSessionNotificationParamsSchema = z.object({\n sessionId: z.string(),\n notification: z.discriminatedUnion('type', [\n ...SessionNotificationSchemaList,\n SessionInactivityNotificationSchema,\n SessionProcessExitedNotificationSchema,\n SessionClosedNotificationSchema,\n SessionUnsubscribedNotificationSchema,\n ChildSessionAvailableNotificationSchema,\n TerminalDataNotificationSchema,\n TerminalExitNotificationSchema,\n ]),\n});\n\nexport const DaemonSessionNotificationSchema =\n JsonRpcBaseNotificationSchema.extend({\n method: z.literal(DaemonDroidEvent.SESSION_NOTIFICATION),\n params: DaemonSessionNotificationParamsSchema,\n });\n\n// Permission request schema - daemon-level request for tool permissions\nexport const DaemonRequestPermissionSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidEvent.REQUEST_PERMISSION),\n params: DaemonRequestPermissionParamsSchema,\n});\n\n// AskUser request schema - daemon-level request for user questionnaire answers\nexport const DaemonAskUserSchema = JsonRpcBaseRequestSchema.extend({\n method: z.literal(DaemonDroidEvent.ASK_USER),\n params: DaemonAskUserParamsSchema,\n});\n","import type { z } from 'zod';\n\nimport { ConnectionError, SessionError } from './errors.js';\nimport {\n dispatchNotification,\n ProtocolEngine,\n type AskUserHandler,\n type NotificationCallback,\n type NotificationFilter,\n type NotificationListener,\n type PermissionHandler,\n} from './protocol.js';\nimport type {\n AddMcpServerRequestParams,\n AddMcpServerResult,\n AddUserMessageRequestParams,\n AddUserMessageResult,\n AuthenticateMcpServerRequestParams,\n AuthenticateMcpServerResult,\n CancelMcpAuthRequestParams,\n CancelMcpAuthResult,\n ClearMcpAuthRequestParams,\n ClearMcpAuthResult,\n CloseSessionRequestParams,\n CloseSessionResult,\n CompactSessionRequestParams,\n CompactSessionResult,\n GetContextStatsResult,\n ExecuteRewindRequestParams,\n ExecuteRewindResult,\n ForkSessionResult,\n RenameSessionRequestParams,\n RenameSessionResult,\n GetRewindInfoRequestParams,\n GetRewindInfoResult,\n InitializeSessionRequestParams,\n InitializeSessionResult,\n InterruptSessionResult,\n KillWorkerSessionRequestParams,\n KillWorkerSessionResult,\n ListMcpRegistryResult,\n ListMcpServersResult,\n ListMcpToolsResult,\n ListToolsRequestParams,\n ListToolsResult,\n ListSkillsResult,\n LoadSessionRequestParams,\n LoadSessionResult,\n RemoveMcpServerRequestParams,\n RemoveMcpServerResult,\n SubmitBugReportRequestParams,\n SubmitBugReportResult,\n SubmitMcpAuthCodeRequestParams,\n SubmitMcpAuthCodeResult,\n ToggleMcpServerRequestParams,\n ToggleMcpServerResult,\n ToggleMcpToolRequestParams,\n ToggleMcpToolResult,\n UpdateSessionSettingsRequestParams,\n UpdateSessionSettingsResult,\n} from './schemas/client.js';\nimport {\n AddMcpServerResultSchema,\n AddUserMessageResultSchema,\n AuthenticateMcpServerResultSchema,\n CancelMcpAuthResultSchema,\n ClearMcpAuthResultSchema,\n CloseSessionResultSchema,\n CompactSessionResultSchema,\n GetContextStatsResultSchema,\n ExecuteRewindResultSchema,\n ForkSessionResultSchema,\n RenameSessionResultSchema,\n GetRewindInfoResultSchema,\n InitializeSessionResultSchema,\n InterruptSessionResultSchema,\n KillWorkerSessionResultSchema,\n ListMcpRegistryResultSchema,\n ListMcpServersResultSchema,\n ListMcpToolsResultSchema,\n ListToolsResultSchema,\n ListSkillsResultSchema,\n LoadSessionResultSchema,\n RemoveMcpServerResultSchema,\n SubmitBugReportResultSchema,\n SubmitMcpAuthCodeResultSchema,\n ToggleMcpServerResultSchema,\n ToggleMcpToolResultSchema,\n UpdateSessionSettingsResultSchema,\n} from './schemas/client.js';\nimport {\n COMPACTION_TIMEOUT,\n MCP_AUTH_TIMEOUT,\n REWIND_TIMEOUT,\n SESSION_INIT_TIMEOUT,\n} from './schemas/constants.js';\nimport { DroidServerMethod, ToolConfirmationOutcome } from './schemas/enums.js';\nimport type {\n AskUserRequestParams,\n AskUserResult,\n RequestPermissionHandlerResult,\n RequestPermissionRequestParams,\n} from './schemas/server.js';\nimport type { DroidClientTransport } from './types.js';\n\nexport type ClientPermissionHandler = PermissionHandler;\n\nexport type ClientAskUserHandler = AskUserHandler;\n\nexport interface DroidClientOptions {\n /** A connected DroidClientTransport implementation. */\n transport: DroidClientTransport;\n\n /** Default request timeout in ms. Defaults to 30 000. */\n defaultTimeout?: number;\n}\n\nexport class DroidClient {\n private readonly _engine: ProtocolEngine;\n private _sessionId: string | null = null;\n private _closed = false;\n\n private readonly _notificationListeners: NotificationListener[] = [];\n\n /** Client-level permission handler. */\n private _permissionHandler: ClientPermissionHandler | null = null;\n\n /** Client-level ask-user handler. */\n private _askUserHandler: ClientAskUserHandler | null = null;\n\n constructor(options: DroidClientOptions) {\n this._engine = new ProtocolEngine({\n transport: options.transport,\n defaultTimeout: options.defaultTimeout,\n });\n\n this._engine.onNotification((notification) => {\n this._dispatchNotification(notification);\n });\n\n this._engine.setPermissionHandler((params) =>\n this._dispatchPermissionRequest(params)\n );\n this._engine.setAskUserHandler((params) =>\n this._dispatchAskUserRequest(params)\n );\n }\n\n private async _rpc<T extends z.ZodTypeAny>(\n method: string,\n params: Record<string, unknown>,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n const raw = await this._engine.sendRequest(method, params, timeout);\n return schema.parse(raw);\n }\n\n private async _sessionRpc<T extends z.ZodTypeAny>(\n method: string,\n params: Record<string, unknown>,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n this._ensureNotClosed();\n this._ensureSession();\n return this._rpc(method, params, schema, timeout);\n }\n\n private async _sessionRpcWithoutParams<T extends z.ZodTypeAny>(\n method: string,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n return this._sessionRpc(method, {}, schema, timeout);\n }\n\n get sessionId(): string | null {\n return this._sessionId;\n }\n\n get isConnected(): boolean {\n return !this._closed && this._engine.isHealthy;\n }\n\n async initializeSession(\n params: InitializeSessionRequestParams\n ): Promise<InitializeSessionResult> {\n this._ensureNotClosed();\n\n const result = await this._rpc(\n DroidServerMethod.INITIALIZE_SESSION,\n params,\n InitializeSessionResultSchema,\n SESSION_INIT_TIMEOUT\n );\n this._sessionId = result.sessionId;\n return result;\n }\n\n async loadSession(\n params: LoadSessionRequestParams\n ): Promise<LoadSessionResult> {\n this._ensureNotClosed();\n\n const result = await this._rpc(\n DroidServerMethod.LOAD_SESSION,\n params,\n LoadSessionResultSchema,\n SESSION_INIT_TIMEOUT\n );\n this._sessionId = params.sessionId;\n return result;\n }\n\n async addUserMessage(\n params: Pick<AddUserMessageRequestParams, 'text'> &\n Partial<\n Pick<\n AddUserMessageRequestParams,\n 'images' | 'files' | 'messageId' | 'outputFormat'\n >\n >\n ): Promise<AddUserMessageResult> {\n return this._sessionRpc(\n DroidServerMethod.ADD_USER_MESSAGE,\n params,\n AddUserMessageResultSchema\n );\n }\n\n async interruptSession(): Promise<InterruptSessionResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.INTERRUPT_SESSION,\n InterruptSessionResultSchema\n );\n }\n\n async closeSession(\n params: CloseSessionRequestParams = {}\n ): Promise<CloseSessionResult> {\n return this._sessionRpc(\n DroidServerMethod.CLOSE_SESSION,\n params,\n CloseSessionResultSchema\n );\n }\n\n async killWorkerSession(\n params: KillWorkerSessionRequestParams\n ): Promise<KillWorkerSessionResult> {\n return this._sessionRpc(\n DroidServerMethod.KILL_WORKER_SESSION,\n params,\n KillWorkerSessionResultSchema\n );\n }\n\n async updateSessionSettings(\n params: Partial<UpdateSessionSettingsRequestParams>\n ): Promise<UpdateSessionSettingsResult> {\n return this._sessionRpc(\n DroidServerMethod.UPDATE_SESSION_SETTINGS,\n params,\n UpdateSessionSettingsResultSchema\n );\n }\n\n async toggleMcpServer(\n params: ToggleMcpServerRequestParams\n ): Promise<ToggleMcpServerResult> {\n return this._sessionRpc(\n DroidServerMethod.TOGGLE_MCP_SERVER,\n params,\n ToggleMcpServerResultSchema\n );\n }\n\n async authenticateMcpServer(\n params: AuthenticateMcpServerRequestParams\n ): Promise<AuthenticateMcpServerResult> {\n return this._sessionRpc(\n DroidServerMethod.AUTHENTICATE_MCP_SERVER,\n params,\n AuthenticateMcpServerResultSchema,\n MCP_AUTH_TIMEOUT\n );\n }\n\n async cancelMcpAuth(\n params: CancelMcpAuthRequestParams\n ): Promise<CancelMcpAuthResult> {\n return this._sessionRpc(\n DroidServerMethod.CANCEL_MCP_AUTH,\n params,\n CancelMcpAuthResultSchema\n );\n }\n\n async clearMcpAuth(\n params: ClearMcpAuthRequestParams\n ): Promise<ClearMcpAuthResult> {\n return this._sessionRpc(\n DroidServerMethod.CLEAR_MCP_AUTH,\n params,\n ClearMcpAuthResultSchema\n );\n }\n\n async submitMcpAuthCode(\n params: SubmitMcpAuthCodeRequestParams\n ): Promise<SubmitMcpAuthCodeResult> {\n return this._sessionRpc(\n DroidServerMethod.SUBMIT_MCP_AUTH_CODE,\n params,\n SubmitMcpAuthCodeResultSchema\n );\n }\n\n async addMcpServer(\n params: AddMcpServerRequestParams\n ): Promise<AddMcpServerResult> {\n return this._sessionRpc(\n DroidServerMethod.ADD_MCP_SERVER,\n params,\n AddMcpServerResultSchema\n );\n }\n\n async removeMcpServer(\n params: RemoveMcpServerRequestParams\n ): Promise<RemoveMcpServerResult> {\n return this._sessionRpc(\n DroidServerMethod.REMOVE_MCP_SERVER,\n params,\n RemoveMcpServerResultSchema\n );\n }\n\n async listMcpRegistry(): Promise<ListMcpRegistryResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.LIST_MCP_REGISTRY,\n ListMcpRegistryResultSchema\n );\n }\n\n async listMcpTools(): Promise<ListMcpToolsResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.LIST_MCP_TOOLS,\n ListMcpToolsResultSchema\n );\n }\n\n async listTools(\n params: ListToolsRequestParams = {}\n ): Promise<ListToolsResult> {\n return this._sessionRpc(\n DroidServerMethod.LIST_TOOLS,\n params,\n ListToolsResultSchema\n );\n }\n\n async listMcpServers(): Promise<ListMcpServersResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.LIST_MCP_SERVERS,\n ListMcpServersResultSchema\n );\n }\n\n async toggleMcpTool(\n params: ToggleMcpToolRequestParams\n ): Promise<ToggleMcpToolResult> {\n return this._sessionRpc(\n DroidServerMethod.TOGGLE_MCP_TOOL,\n params,\n ToggleMcpToolResultSchema\n );\n }\n\n async listSkills(): Promise<ListSkillsResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.LIST_SKILLS,\n ListSkillsResultSchema\n );\n }\n\n async submitBugReport(\n params: SubmitBugReportRequestParams\n ): Promise<SubmitBugReportResult> {\n return this._sessionRpc(\n DroidServerMethod.SUBMIT_BUG_REPORT,\n params,\n SubmitBugReportResultSchema\n );\n }\n\n async getRewindInfo(\n params: GetRewindInfoRequestParams\n ): Promise<GetRewindInfoResult> {\n return this._sessionRpc(\n DroidServerMethod.GET_REWIND_INFO,\n params,\n GetRewindInfoResultSchema\n );\n }\n\n async executeRewind(\n params: ExecuteRewindRequestParams\n ): Promise<ExecuteRewindResult> {\n return this._sessionRpc(\n DroidServerMethod.EXECUTE_REWIND,\n params,\n ExecuteRewindResultSchema,\n REWIND_TIMEOUT\n );\n }\n\n async compactSession(\n params: CompactSessionRequestParams\n ): Promise<CompactSessionResult> {\n return this._sessionRpc(\n DroidServerMethod.COMPACT_SESSION,\n params,\n CompactSessionResultSchema,\n COMPACTION_TIMEOUT\n );\n }\n\n async forkSession(): Promise<ForkSessionResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.FORK_SESSION,\n ForkSessionResultSchema\n );\n }\n\n async getContextStats(): Promise<GetContextStatsResult> {\n return this._sessionRpcWithoutParams(\n DroidServerMethod.GET_CONTEXT_STATS,\n GetContextStatsResultSchema\n );\n }\n\n async renameSession(\n params: RenameSessionRequestParams\n ): Promise<RenameSessionResult> {\n return this._sessionRpc(\n DroidServerMethod.RENAME_SESSION,\n params,\n RenameSessionResultSchema\n );\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n const entry: NotificationListener = { callback, filter };\n this._notificationListeners.push(entry);\n\n let unsubscribed = false;\n return () => {\n if (!unsubscribed) {\n unsubscribed = true;\n const idx = this._notificationListeners.indexOf(entry);\n if (idx !== -1) {\n this._notificationListeners.splice(idx, 1);\n }\n }\n };\n }\n\n setPermissionHandler(handler: ClientPermissionHandler): void {\n this._permissionHandler = handler;\n }\n\n clearPermissionHandler(): void {\n this._permissionHandler = null;\n }\n\n setAskUserHandler(handler: ClientAskUserHandler): void {\n this._askUserHandler = handler;\n }\n\n clearAskUserHandler(): void {\n this._askUserHandler = null;\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n this._notificationListeners.length = 0;\n this._permissionHandler = null;\n this._askUserHandler = null;\n\n await this._engine.close();\n }\n\n private _dispatchNotification(notification: Record<string, unknown>): void {\n dispatchNotification(notification, [...this._notificationListeners]);\n }\n\n private _dispatchPermissionRequest(\n params: RequestPermissionRequestParams\n ): RequestPermissionHandlerResult | Promise<RequestPermissionHandlerResult> {\n const handler = this._permissionHandler;\n if (handler == null) {\n return ToolConfirmationOutcome.Cancel;\n }\n return handler(params);\n }\n\n private _dispatchAskUserRequest(\n params: AskUserRequestParams\n ): AskUserResult | Promise<AskUserResult> {\n const handler = this._askUserHandler;\n if (handler == null) {\n return { cancelled: true, answers: [] };\n }\n return handler(params);\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Client has been closed. Create a new DroidClient instance to reconnect.'\n );\n }\n }\n\n private _ensureSession(): void {\n if (this._sessionId == null) {\n throw new SessionError(\n 'No active session. Call initializeSession or loadSession first.'\n );\n }\n }\n}\n","import type { TokenUsage } from './schemas/client.js';\nimport {\n DroidWorkingState,\n McpAuthOutcome,\n MissionState,\n SessionNotificationType,\n ToolConfirmationOutcome,\n} from './schemas/enums.js';\nimport type { DroidHookEvent } from './schemas/hooks.js';\nimport type { McpServerStatusInfo, McpStatusSummary } from './schemas/mcp.js';\nimport {\n FactoryDroidMessageRole,\n type FactoryDroidMessage,\n type ToolUseBlock,\n} from './schemas/messages.js';\nimport type { MissionFeature, ProgressLogEntry } from './schemas/mission.js';\nimport {\n SessionNotificationPayloadSchema,\n type CreateMessageNotification,\n type ErrorNotification,\n type SessionNotificationPayload,\n type SettingsUpdatedPayload,\n type StructuredOutputError as ServerStructuredOutputError,\n type ToolProgressUpdate,\n} from './schemas/server.js';\nimport {\n JsonObjectSchema,\n type JsonObject,\n type JsonValue,\n} from './schemas/shared.js';\n\nexport const DroidMessageType = {\n Assistant: 'assistant',\n User: 'user',\n ToolCall: 'tool_call',\n AssistantTextDelta: 'assistant_text_delta',\n AssistantTextComplete: 'assistant_text_complete',\n ThinkingTextDelta: 'thinking_text_delta',\n ThinkingTextComplete: 'thinking_text_complete',\n ToolCallDelta: 'tool_call_delta',\n ToolResult: 'tool_result',\n ToolProgress: 'tool_progress',\n WorkingStateChanged: 'working_state_changed',\n TokenUsageUpdate: 'token_usage_update',\n PermissionResolved: 'permission_resolved',\n SettingsUpdated: 'settings_updated',\n SessionTitleUpdated: 'session_title_updated',\n McpStatusChanged: 'mcp_status_changed',\n MissionStateChanged: 'mission_state_changed',\n MissionFeaturesChanged: 'mission_features_changed',\n MissionProgressEntry: 'mission_progress_entry',\n MissionHeartbeat: 'mission_heartbeat',\n MissionWorkerStarted: 'mission_worker_started',\n MissionWorkerCompleted: 'mission_worker_completed',\n McpAuthRequired: 'mcp_auth_required',\n McpAuthCompleted: 'mcp_auth_completed',\n Hook: 'hook',\n Error: 'error',\n Result: 'result',\n} as const;\n\nexport interface AssistantTextDelta {\n readonly type: 'assistant_text_delta';\n readonly messageId: string;\n readonly blockIndex: number;\n readonly text: string;\n}\n\nexport interface AssistantTextComplete {\n readonly type: 'assistant_text_complete';\n readonly messageId: string;\n readonly blockIndex: number;\n}\n\nexport interface ThinkingTextDelta {\n readonly type: 'thinking_text_delta';\n readonly messageId: string;\n readonly blockIndex: number;\n readonly text: string;\n}\n\nexport interface ThinkingTextComplete {\n readonly type: 'thinking_text_complete';\n readonly messageId: string;\n readonly blockIndex: number;\n readonly durationMs?: number;\n}\n\nexport interface ToolCallDelta {\n readonly type: 'tool_call_delta';\n readonly toolUse: ToolUseBlock;\n}\n\nexport interface ToolUse {\n readonly type: 'tool_use';\n readonly toolName: string;\n readonly toolInput: JsonObject;\n readonly toolUseId: string;\n}\n\nexport interface DroidToolCallMessage {\n readonly type: 'tool_call';\n readonly toolUse: ToolUseBlock;\n}\n\nexport interface DroidAssistantMessage {\n readonly type: 'assistant';\n readonly message: FactoryDroidMessage;\n readonly text: string;\n}\n\nexport interface DroidUserMessage {\n readonly type: 'user';\n readonly message: FactoryDroidMessage;\n}\n\nexport interface ToolResult {\n readonly type: 'tool_result';\n readonly toolUseId: string;\n readonly toolName: string;\n readonly content: string | JsonValue[];\n readonly isError: boolean;\n}\n\nexport interface ToolProgress {\n readonly type: 'tool_progress';\n readonly toolUseId: string;\n readonly toolName: string;\n readonly content: string;\n readonly update: ToolProgressUpdate;\n}\n\nexport interface WorkingStateChanged {\n readonly type: 'working_state_changed';\n readonly state: DroidWorkingState;\n}\n\nexport type TokenUsageUpdate = Readonly<\n {\n type: 'token_usage_update';\n } & TokenUsage\n>;\n\nexport interface CreateMessage {\n readonly type: 'create_message';\n readonly messageId: CreateMessageNotification['message']['id'];\n readonly role: CreateMessageNotification['message']['role'];\n readonly content: CreateMessageNotification['message']['content'];\n readonly parentId?: CreateMessageNotification['parentId'];\n}\n\nexport interface PermissionResolved {\n readonly type: 'permission_resolved';\n readonly requestId: string;\n readonly toolUseIds: string[];\n readonly selectedOption: ToolConfirmationOutcome;\n}\n\nexport interface SettingsUpdated {\n readonly type: 'settings_updated';\n readonly settings: SettingsUpdatedPayload;\n}\n\nexport interface SessionTitleUpdated {\n readonly type: 'session_title_updated';\n readonly title: string;\n}\n\nexport interface McpStatusChanged {\n readonly type: 'mcp_status_changed';\n readonly servers: McpServerStatusInfo[];\n readonly summary: McpStatusSummary;\n}\n\nexport interface MissionStateChanged {\n readonly type: 'mission_state_changed';\n readonly state: MissionState;\n}\n\nexport interface MissionFeaturesChanged {\n readonly type: 'mission_features_changed';\n readonly features: MissionFeature[];\n}\n\nexport interface MissionProgressEntry {\n readonly type: 'mission_progress_entry';\n readonly progressLog: ProgressLogEntry[];\n}\n\nexport interface MissionHeartbeat {\n readonly type: 'mission_heartbeat';\n readonly timestamp: string;\n}\n\nexport interface MissionWorkerStarted {\n readonly type: 'mission_worker_started';\n readonly workerSessionId: string;\n}\n\nexport interface MissionWorkerCompleted {\n readonly type: 'mission_worker_completed';\n readonly workerSessionId: string;\n readonly exitCode: number;\n}\n\nexport interface McpAuthRequired {\n readonly type: 'mcp_auth_required';\n readonly serverName: string;\n readonly authUrl: string;\n readonly message: string;\n readonly state: string;\n}\n\nexport interface McpAuthCompleted {\n readonly type: 'mcp_auth_completed';\n readonly serverName: string;\n readonly outcome: McpAuthOutcome;\n readonly message: string;\n}\n\nexport interface HookExecution {\n readonly type: 'hook';\n readonly hookId: string;\n readonly eventName?: DroidHookEvent;\n readonly matcher?: string;\n readonly toolCallId?: string;\n readonly command?: string;\n readonly timeout?: number;\n readonly status: 'started' | 'completed' | 'error';\n readonly exitCode?: number;\n readonly stdout?: string;\n readonly stderr?: string;\n}\n\nexport interface StructuredOutputFields {\n readonly structuredOutput: JsonObject | null;\n readonly structuredOutputError: ServerStructuredOutputError | null;\n}\n\nexport interface StructuredOutput extends StructuredOutputFields {\n readonly type: 'structured_output';\n readonly messageId: string;\n}\n\nexport interface ErrorEvent {\n readonly type: 'error';\n readonly message: string;\n readonly errorType: ErrorNotification['errorType'];\n readonly timestamp: string;\n}\n\nexport type DroidErrorMessage = ErrorEvent;\n\nexport type DroidToolResultMessage = ToolResult;\n\nexport type DroidResultSubtype =\n | 'success'\n | 'error_during_execution'\n | 'error_structured_output';\n\ninterface DroidResultBase {\n readonly type: 'result';\n readonly sessionId: string;\n readonly durationMs: number;\n readonly numTurns: number;\n readonly result: string;\n readonly tokenUsage: TokenUsage | null;\n /** Stream messages emitted before this result. */\n readonly messages: DroidStreamEvent[];\n readonly text: string;\n readonly turnCount: number;\n readonly success: boolean;\n}\n\nexport interface DroidResultSuccessMessage extends DroidResultBase {\n readonly subtype: 'success';\n readonly isError: false;\n readonly structuredOutput?: unknown;\n readonly structuredOutputError?: null;\n readonly error: null;\n}\n\nexport interface DroidResultErrorMessage extends DroidResultBase {\n readonly subtype: 'error_during_execution' | 'error_structured_output';\n readonly isError: true;\n readonly errors: string[];\n readonly structuredOutput?: unknown;\n readonly structuredOutputError?: ServerStructuredOutputError | null;\n readonly error: ErrorEvent | null;\n}\n\nexport type DroidResultMessage =\n | DroidResultSuccessMessage\n | DroidResultErrorMessage;\n\nexport type DroidStreamMessage =\n | DroidAssistantMessage\n | DroidUserMessage\n | DroidToolCallMessage\n | ToolResult\n | HookExecution\n | ErrorEvent\n | DroidResultMessage;\n\nexport type DroidStreamEvent =\n | DroidStreamMessage\n | AssistantTextDelta\n | AssistantTextComplete\n | ThinkingTextDelta\n | ThinkingTextComplete\n | ToolCallDelta\n | ToolProgress\n | WorkingStateChanged\n | TokenUsageUpdate\n | PermissionResolved\n | SettingsUpdated\n | SessionTitleUpdated\n | McpStatusChanged\n | MissionStateChanged\n | MissionFeaturesChanged\n | MissionProgressEntry\n | MissionHeartbeat\n | MissionWorkerStarted\n | MissionWorkerCompleted\n | McpAuthRequired\n | McpAuthCompleted\n | HookExecution;\n\nexport type InternalDroidMessage =\n | DroidStreamEvent\n | ToolUse\n | CreateMessage\n | StructuredOutput;\n\nexport type DroidMessage = DroidStreamEvent;\n\nexport type DroidMessageType =\n (typeof DroidMessageType)[keyof typeof DroidMessageType];\n\nexport function convertNotificationToStreamMessage(\n raw: unknown\n): InternalDroidMessage | InternalDroidMessage[] | null {\n const parsed = SessionNotificationPayloadSchema.safeParse(raw);\n if (!parsed.success) {\n return null;\n }\n\n const notification: SessionNotificationPayload = parsed.data;\n\n switch (notification.type) {\n case SessionNotificationType.ASSISTANT_TEXT_DELTA:\n return {\n type: DroidMessageType.AssistantTextDelta,\n messageId: notification.messageId,\n blockIndex: notification.blockIndex,\n text: notification.textDelta,\n };\n\n case SessionNotificationType.ASSISTANT_TEXT_COMPLETE:\n return {\n type: DroidMessageType.AssistantTextComplete,\n messageId: notification.messageId,\n blockIndex: notification.blockIndex,\n };\n\n case SessionNotificationType.THINKING_TEXT_DELTA:\n return {\n type: DroidMessageType.ThinkingTextDelta,\n messageId: notification.messageId,\n blockIndex: notification.blockIndex,\n text: notification.textDelta,\n };\n\n case SessionNotificationType.THINKING_TEXT_COMPLETE:\n return {\n type: DroidMessageType.ThinkingTextComplete,\n messageId: notification.messageId,\n blockIndex: notification.blockIndex,\n durationMs: notification.durationMs,\n };\n\n case SessionNotificationType.TOOL_CALL:\n return {\n type: DroidMessageType.ToolCallDelta,\n toolUse: notification.toolUse,\n };\n\n case SessionNotificationType.TOOL_RESULT:\n return {\n type: DroidMessageType.ToolResult,\n toolUseId: notification.toolUseId,\n toolName: '',\n content: normalizeToolResultContent(notification.content),\n isError: Boolean(notification.isError),\n };\n\n case SessionNotificationType.TOOL_PROGRESS_UPDATE: {\n const update: ToolProgressUpdate = notification.update;\n const text = update?.text ?? update?.status ?? update?.details ?? '';\n return {\n type: DroidMessageType.ToolProgress,\n toolUseId: notification.toolUseId,\n toolName: notification.toolName,\n content: text,\n update,\n };\n }\n\n case SessionNotificationType.DROID_WORKING_STATE_CHANGED:\n return {\n type: DroidMessageType.WorkingStateChanged,\n state: notification.newState,\n };\n\n case SessionNotificationType.SESSION_TOKEN_USAGE_CHANGED: {\n const tu: TokenUsage = notification.tokenUsage;\n return {\n type: DroidMessageType.TokenUsageUpdate,\n inputTokens: tu.inputTokens,\n outputTokens: tu.outputTokens,\n cacheReadTokens: tu.cacheReadTokens,\n cacheCreationTokens: tu.cacheCreationTokens,\n thinkingTokens: tu.thinkingTokens,\n };\n }\n\n case SessionNotificationType.CREATE_MESSAGE: {\n const msg = notification.message;\n const messages: InternalDroidMessage[] = [];\n\n for (const block of msg.content) {\n if (block.type === 'tool_use') {\n messages.push({\n type: DroidMessageType.ToolCall,\n toolUse: block,\n });\n }\n }\n\n if (msg.role === FactoryDroidMessageRole.Assistant) {\n messages.push({\n type: DroidMessageType.Assistant,\n message: msg,\n text: extractTextFromMessage(msg),\n });\n } else if (msg.role === FactoryDroidMessageRole.User) {\n messages.push({\n type: DroidMessageType.User,\n message: msg,\n });\n } else {\n messages.push({\n type: 'create_message',\n messageId: msg.id,\n role: msg.role,\n content: msg.content,\n parentId: notification.parentId,\n });\n }\n\n return messages;\n }\n\n case SessionNotificationType.ERROR:\n return {\n type: DroidMessageType.Error,\n message: notification.message,\n errorType: notification.errorType,\n timestamp: notification.timestamp,\n };\n\n case SessionNotificationType.PERMISSION_RESOLVED:\n return {\n type: DroidMessageType.PermissionResolved,\n requestId: notification.requestId,\n toolUseIds: notification.toolUseIds,\n selectedOption: notification.selectedOption,\n };\n\n case SessionNotificationType.SETTINGS_UPDATED:\n return {\n type: DroidMessageType.SettingsUpdated,\n settings: notification.settings,\n };\n\n case SessionNotificationType.SESSION_TITLE_UPDATED:\n return {\n type: DroidMessageType.SessionTitleUpdated,\n title: notification.title,\n };\n\n case SessionNotificationType.MCP_STATUS_CHANGED:\n return {\n type: DroidMessageType.McpStatusChanged,\n servers: notification.servers,\n summary: notification.summary,\n };\n\n case SessionNotificationType.MISSION_STATE_CHANGED:\n return {\n type: DroidMessageType.MissionStateChanged,\n state: notification.state,\n };\n\n case SessionNotificationType.MISSION_FEATURES_CHANGED:\n return {\n type: DroidMessageType.MissionFeaturesChanged,\n features: notification.features,\n };\n\n case SessionNotificationType.MISSION_PROGRESS_ENTRY:\n return {\n type: DroidMessageType.MissionProgressEntry,\n progressLog: notification.progressLog,\n };\n\n case SessionNotificationType.MISSION_HEARTBEAT:\n return {\n type: DroidMessageType.MissionHeartbeat,\n timestamp: notification.timestamp,\n };\n\n case SessionNotificationType.MISSION_WORKER_STARTED:\n return {\n type: DroidMessageType.MissionWorkerStarted,\n workerSessionId: notification.workerSessionId,\n };\n\n case SessionNotificationType.MISSION_WORKER_COMPLETED:\n return {\n type: DroidMessageType.MissionWorkerCompleted,\n workerSessionId: notification.workerSessionId,\n exitCode: notification.exitCode,\n };\n\n case SessionNotificationType.MCP_AUTH_REQUIRED:\n return {\n type: DroidMessageType.McpAuthRequired,\n serverName: notification.serverName,\n authUrl: notification.authUrl,\n message: notification.message,\n state: notification.state,\n };\n\n case SessionNotificationType.MCP_AUTH_COMPLETED:\n return {\n type: DroidMessageType.McpAuthCompleted,\n serverName: notification.serverName,\n outcome: notification.outcome,\n message: notification.message,\n };\n\n case SessionNotificationType.HOOK_EXECUTION_STARTED:\n return notification.hookCommands.map((hookCommand) => ({\n type: DroidMessageType.Hook,\n hookId: notification.hookId,\n eventName: notification.hookEventName,\n matcher: notification.hookMatcher,\n toolCallId: notification.hookToolCallId,\n command: hookCommand.command,\n timeout: hookCommand.timeout,\n status: 'started',\n }));\n\n case SessionNotificationType.HOOK_EXECUTION_COMPLETED:\n return (notification.hookResults ?? []).map((hookResult) => ({\n type: DroidMessageType.Hook,\n hookId: notification.hookId,\n eventName: notification.hookEventName,\n matcher: notification.hookMatcher,\n toolCallId: notification.hookToolCallId,\n command: hookResult.command,\n timeout: hookResult.timeout,\n status: notification.hookStatus,\n exitCode: hookResult.exitCode,\n stdout: hookResult.stdout,\n stderr: hookResult.stderr,\n }));\n\n case SessionNotificationType.STRUCTURED_OUTPUT:\n return {\n type: 'structured_output',\n messageId: notification.messageId,\n structuredOutput: notification.structuredOutput,\n structuredOutputError: notification.structuredOutputError,\n };\n\n default:\n return null;\n }\n}\n\n/**\n * Tracks working state to detect turn completion (non-idle → idle transition).\n * Create a fresh instance per `stream()` call.\n */\nexport class StreamStateTracker {\n private hasBeenNonIdle = false;\n\n private lastTokenUsage: TokenUsageUpdate | null = null;\n\n private fullText = '';\n\n private finalAssistantText = '';\n\n private structuredOutput: JsonObject | null = null;\n\n private structuredOutputError: ServerStructuredOutputError | null = null;\n\n private errors: ErrorEvent[] = [];\n\n private numTurns = 0;\n\n private emittedMessages: DroidStreamEvent[] = [];\n\n private toolNameMap = new Map<string, string>();\n\n constructor(\n private readonly options: {\n sessionId?: string;\n startedAt?: number;\n hasOutputFormat?: boolean;\n } = {}\n ) {}\n\n private getToolName(toolUseId: string): string {\n return this.toolNameMap.get(toolUseId) ?? '';\n }\n\n processMessage(message: InternalDroidMessage): {\n message: InternalDroidMessage | null;\n additional: InternalDroidMessage[];\n } {\n const additional: InternalDroidMessage[] = [];\n\n if (message.type === 'tool_use') {\n this.toolNameMap.set(message.toolUseId, message.toolName);\n }\n\n if (message.type === DroidMessageType.ToolCall) {\n this.toolNameMap.set(message.toolUse.id, message.toolUse.name);\n }\n\n if (message.type === DroidMessageType.ToolCallDelta) {\n this.toolNameMap.set(message.toolUse.id, message.toolUse.name);\n }\n\n // Enrich tool_result with toolName from prior tool_use\n if (message.type === DroidMessageType.ToolResult) {\n message = { ...message, toolName: this.getToolName(message.toolUseId) };\n }\n\n if (message.type === DroidMessageType.AssistantTextDelta) {\n this.fullText += message.text;\n }\n\n if (message.type === DroidMessageType.Assistant) {\n this.finalAssistantText = message.text;\n if (this.fullText.length === 0) {\n this.fullText = message.text;\n }\n }\n\n if (message.type === DroidMessageType.TokenUsageUpdate) {\n this.lastTokenUsage = message;\n }\n\n if (message.type === DroidMessageType.Error) {\n this.errors.push(message);\n }\n\n if (message.type === 'structured_output') {\n this.structuredOutput = message.structuredOutput;\n this.structuredOutputError = message.structuredOutputError;\n return { message: null, additional };\n }\n\n if (message.type === DroidMessageType.WorkingStateChanged) {\n if (message.state !== DroidWorkingState.Idle) {\n this.hasBeenNonIdle = true;\n } else if (this.hasBeenNonIdle) {\n this.numTurns++;\n additional.push(this.createResultMessage());\n this.hasBeenNonIdle = false;\n this.resetTurnState();\n }\n }\n\n if (message.type !== DroidMessageType.WorkingStateChanged) {\n this.trackEmittedMessage(message);\n }\n\n return { message, additional };\n }\n\n private createResultMessage(): DroidResultMessage {\n if (\n this.options.hasOutputFormat &&\n this.structuredOutput === null &&\n this.structuredOutputError === null\n ) {\n this.structuredOutput =\n parseJsonObject(this.finalAssistantText || this.fullText) ?? null;\n }\n\n const tokenUsage = this.lastTokenUsage\n ? stripTokenUsageType(this.lastTokenUsage)\n : null;\n const result = this.finalAssistantText || this.fullText;\n const base = {\n type: DroidMessageType.Result,\n sessionId: this.options.sessionId ?? '',\n durationMs: Date.now() - (this.options.startedAt ?? Date.now()),\n numTurns: this.numTurns,\n result,\n tokenUsage,\n messages: [...this.emittedMessages],\n text: result,\n turnCount: this.numTurns,\n };\n\n if (this.structuredOutputError) {\n return {\n ...base,\n subtype: 'error_structured_output',\n isError: true,\n success: false,\n errors: [this.structuredOutputError.message],\n structuredOutput: this.structuredOutput,\n structuredOutputError: this.structuredOutputError,\n error: null,\n };\n }\n\n if (this.errors.length > 0) {\n return {\n ...base,\n subtype: 'error_during_execution',\n isError: true,\n success: false,\n errors: this.errors.map((error) => error.message),\n structuredOutput: this.structuredOutput,\n structuredOutputError: null,\n error: this.errors[0] ?? null,\n };\n }\n\n return {\n ...base,\n subtype: 'success',\n isError: false,\n success: true,\n structuredOutput: this.structuredOutput,\n structuredOutputError: null,\n error: null,\n };\n }\n\n private trackEmittedMessage(message: InternalDroidMessage): void {\n if (isDefaultStreamMessage(message)) {\n this.emittedMessages.push(message);\n }\n }\n\n private resetTurnState(): void {\n this.lastTokenUsage = null;\n this.fullText = '';\n this.finalAssistantText = '';\n this.structuredOutput = null;\n this.structuredOutputError = null;\n this.errors = [];\n this.emittedMessages = [];\n }\n}\n\nexport function isInternalMessage(message: InternalDroidMessage): boolean {\n return (\n message.type === 'structured_output' ||\n message.type === 'tool_use' ||\n message.type === 'create_message'\n );\n}\n\nexport function isDefaultStreamMessage(\n message: InternalDroidMessage\n): message is DroidStreamMessage {\n return (\n message.type === DroidMessageType.Assistant ||\n message.type === DroidMessageType.User ||\n message.type === DroidMessageType.ToolCall ||\n message.type === DroidMessageType.ToolResult ||\n message.type === DroidMessageType.Hook ||\n message.type === DroidMessageType.Error ||\n message.type === DroidMessageType.Result\n );\n}\n\nfunction stripTokenUsageType(message: TokenUsageUpdate): TokenUsage {\n const {\n inputTokens,\n outputTokens,\n cacheCreationTokens,\n cacheReadTokens,\n thinkingTokens,\n } = message;\n return {\n inputTokens,\n outputTokens,\n cacheCreationTokens,\n cacheReadTokens,\n thinkingTokens,\n };\n}\n\nfunction parseJsonObject(text: string): JsonObject | null {\n try {\n const parsed: unknown = JSON.parse(text);\n const result = JsonObjectSchema.safeParse(parsed);\n return result.success ? result.data : null;\n } catch {\n return null;\n }\n}\n\nfunction normalizeToolResultContent(\n content: JsonValue | undefined\n): string | JsonValue[] {\n if (content == null) {\n return '';\n }\n if (typeof content === 'string') {\n return content;\n }\n if (Array.isArray(content)) {\n return content;\n }\n return String(content);\n}\n\nfunction extractTextFromMessage(message: FactoryDroidMessage): string {\n return message.content\n .filter((block) => block.type === 'text')\n .map((block) => block.text)\n .join('');\n}\n","import { DroidClient } from './client.js';\nimport type {\n ClientAskUserHandler,\n ClientPermissionHandler,\n} from './client.js';\nimport { SDK_TAG } from './constants.js';\nimport type { DroidMcpServerConfig } from './mcp.js';\nimport type {\n InitializeSessionRequestParams,\n McpServerConfig,\n OutputFormat,\n SessionSource,\n SessionTag,\n} from './schemas/client.js';\nimport type {\n AutonomyLevel,\n DroidInteractionMode,\n ReasoningEffort,\n} from './schemas/enums.js';\nimport type { Base64ImageSource, DocumentSource } from './schemas/messages.js';\nimport {\n SessionNotificationSchema,\n type SessionNotificationPayload,\n} from './schemas/server.js';\nimport type { ToolSelectionOverrides } from './schemas/shared.js';\nimport {\n convertNotificationToStreamMessage,\n DroidMessageType,\n isDefaultStreamMessage,\n isInternalMessage,\n StreamStateTracker,\n} from './stream.js';\nimport type { DroidStreamEvent, InternalDroidMessage } from './stream.js';\nimport { ProcessTransport } from './transport.js';\nimport type { DroidClientTransport, ProcessTransportOptions } from './types.js';\n\nexport function wireAbortSignal(\n signal: AbortSignal | undefined,\n onAbort: () => void\n): () => void {\n if (!signal) return () => {};\n if (signal.aborted) {\n onAbort();\n return () => {};\n } else {\n const listener = () => onAbort();\n signal.addEventListener('abort', listener, { once: true });\n return () => signal.removeEventListener('abort', listener);\n }\n}\n\nfunction getAbortError(signal: AbortSignal): Error {\n if (signal.reason instanceof Error) {\n return signal.reason;\n }\n\n return new Error(\n typeof signal.reason === 'string' ? signal.reason : 'Operation aborted'\n );\n}\n\nexport function throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted) {\n throw getAbortError(signal);\n }\n}\n\nexport interface MessageOptions {\n images?: Base64ImageSource[];\n files?: DocumentSource[];\n outputFormat?: OutputFormat;\n includePartialMessages?: boolean;\n abortSignal?: AbortSignal;\n}\n\ninterface StreamableClient {\n onNotification(handler: (n: Record<string, unknown>) => void): () => void;\n addUserMessage(params: {\n text: string;\n images?: Base64ImageSource[];\n files?: DocumentSource[];\n outputFormat?: OutputFormat;\n }): Promise<unknown>;\n interruptSession(): Promise<unknown>;\n}\n\nexport async function* streamFromClient(\n client: StreamableClient,\n sessionId: string,\n activeBridges: Set<MessageBridge>,\n prompt: string,\n options?: MessageOptions\n): AsyncGenerator<DroidStreamEvent, void, undefined> {\n throwIfAborted(options?.abortSignal);\n\n const startedAt = Date.now();\n let resolveDone: () => void = () => {};\n const donePromise = new Promise<void>((resolve) => {\n resolveDone = resolve;\n });\n const bridge = new MessageBridge(resolveDone, {\n includePartialMessages: options?.includePartialMessages,\n sessionId,\n startedAt,\n outputFormat: options?.outputFormat,\n });\n activeBridges.add(bridge);\n const unsubscribe = client.onNotification(bridge.notificationHandler);\n let resolveAbort: () => void = () => {};\n const abortPromise = new Promise<void>((resolve) => {\n resolveAbort = resolve;\n });\n const cleanupAbortSignal = wireAbortSignal(options?.abortSignal, () => {\n bridge.signalDone();\n resolveAbort();\n void client.interruptSession().catch(() => {});\n });\n\n try {\n await Promise.race([\n client.addUserMessage({\n text: prompt,\n images: options?.images,\n files: options?.files,\n outputFormat: options?.outputFormat,\n }),\n donePromise,\n abortPromise,\n ]);\n throwIfAborted(options?.abortSignal);\n\n for await (const msg of bridge.messages()) {\n throwIfAborted(options?.abortSignal);\n yield msg;\n }\n throwIfAborted(options?.abortSignal);\n } finally {\n cleanupAbortSignal();\n unsubscribe();\n activeBridges.delete(bridge);\n }\n}\n\nexport function extractInnerNotification(\n notification: unknown\n): SessionNotificationPayload | null {\n const parsed = SessionNotificationSchema.safeParse(notification);\n return parsed.success ? parsed.data.params.notification : null;\n}\n\nexport class MessageBridge {\n private readonly _queue: DroidStreamEvent[] = [];\n private readonly _onDone: (() => void) | undefined;\n private _resolveWaiting: (() => void) | null = null;\n private _done = false;\n private readonly _stateTracker: StreamStateTracker;\n\n constructor(\n onDone?: () => void,\n private readonly _options: {\n includePartialMessages?: boolean;\n sessionId?: string;\n startedAt?: number;\n outputFormat?: OutputFormat;\n } = {}\n ) {\n this._onDone = onDone;\n this._stateTracker = new StreamStateTracker({\n sessionId: _options.sessionId,\n startedAt: _options.startedAt,\n hasOutputFormat: _options.outputFormat !== undefined,\n });\n }\n\n readonly notificationHandler = (\n notification: Record<string, unknown>\n ): void => {\n const inner = extractInnerNotification(notification);\n if (!inner) return;\n\n const converted = convertNotificationToStreamMessage(inner);\n if (converted === null) return;\n\n const messages = Array.isArray(converted) ? converted : [converted];\n\n for (const msg of messages) {\n const { message, additional } = this._stateTracker.processMessage(msg);\n if (message && this._shouldYield(message)) {\n this._enqueue(message);\n }\n\n for (const extra of additional) {\n if (this._shouldYield(extra)) {\n this._enqueue(extra);\n }\n if (extra.type === DroidMessageType.Result) {\n this._signalDone();\n }\n }\n }\n };\n\n signalDone(): void {\n this._signalDone();\n }\n\n async *messages(): AsyncGenerator<DroidStreamEvent, void, undefined> {\n while (true) {\n while (this._queue.length > 0) {\n const msg = this._queue.shift()!;\n yield msg;\n\n if (msg.type === DroidMessageType.Result) {\n return;\n }\n }\n\n if (this._done && this._queue.length === 0) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n this._resolveWaiting = resolve;\n });\n }\n }\n\n private _shouldYield(\n message: InternalDroidMessage\n ): message is DroidStreamEvent {\n if (isInternalMessage(message)) {\n return false;\n }\n return this._options.includePartialMessages\n ? true\n : isDefaultStreamMessage(message);\n }\n\n private _enqueue(msg: DroidStreamEvent): void {\n this._queue.push(msg);\n if (this._resolveWaiting) {\n const resolve = this._resolveWaiting;\n this._resolveWaiting = null;\n resolve();\n }\n }\n\n private _signalDone(): void {\n const wasDone = this._done;\n this._done = true;\n if (!wasDone) {\n this._onDone?.();\n }\n if (this._resolveWaiting) {\n const resolve = this._resolveWaiting;\n this._resolveWaiting = null;\n resolve();\n }\n }\n}\n\nexport interface TransportCreationOptions extends Pick<\n ProcessTransportOptions,\n 'execPath' | 'execArgs' | 'cwd' | 'env'\n> {\n apiKey: string;\n transport?: DroidClientTransport;\n}\n\nexport async function createTransport(\n options: TransportCreationOptions\n): Promise<DroidClientTransport> {\n if (options.transport) {\n return options.transport;\n }\n\n const transportOptions: ProcessTransportOptions = {\n execPath: options.execPath,\n execArgs: options.execArgs,\n cwd: options.cwd,\n env: { ...options.env, FACTORY_API_KEY: options.apiKey },\n };\n const processTransport = new ProcessTransport(transportOptions);\n await processTransport.connect();\n return processTransport;\n}\n\nexport interface HandlerOptions {\n permissionHandler?: ClientPermissionHandler;\n askUserHandler?: ClientAskUserHandler;\n}\n\nexport function setupClientHandlers(\n client: DroidClient,\n options: HandlerOptions\n): void {\n if (options.permissionHandler) {\n client.setPermissionHandler(options.permissionHandler);\n }\n if (options.askUserHandler) {\n client.setAskUserHandler(options.askUserHandler);\n }\n}\n\ninterface ClientCreationOptions\n extends TransportCreationOptions, HandlerOptions {}\n\nexport async function createConfiguredClient(\n options: ClientCreationOptions\n): Promise<{\n transport: DroidClientTransport;\n client: DroidClient;\n}> {\n const transport = await createTransport(options);\n const client = new DroidClient({ transport });\n setupClientHandlers(client, options);\n return { transport, client };\n}\n\ntype Closable = {\n close(): Promise<void>;\n};\n\nexport async function closeQuietly(\n resource: Closable | null | undefined\n): Promise<void> {\n if (!resource) {\n return;\n }\n\n try {\n await resource.close();\n } catch {\n // Best-effort cleanup\n }\n}\n\nexport interface SessionInitOptions extends ToolSelectionOverrides {\n apiKey: string;\n cwd?: string;\n machineId?: string;\n modelId?: string;\n autonomyLevel?: AutonomyLevel;\n interactionMode?: DroidInteractionMode;\n reasoningEffort?: ReasoningEffort;\n specModeModelId?: string;\n specModeReasoningEffort?: ReasoningEffort;\n mcpServers?: DroidMcpServerConfig[];\n sessionSource?: SessionSource;\n tags?: SessionTag[];\n}\n\ntype ResolvedSessionInitOptions = Omit<\n SessionInitOptions,\n 'apiKey' | 'mcpServers'\n> & {\n mcpServers?: McpServerConfig[];\n};\n\nexport function buildInitParams(\n options: ResolvedSessionInitOptions\n): InitializeSessionRequestParams {\n return {\n machineId: options.machineId ?? 'default',\n cwd: options.cwd ?? '.',\n ...(options.modelId !== undefined && { modelId: options.modelId }),\n ...(options.autonomyLevel !== undefined && {\n autonomyLevel: options.autonomyLevel,\n }),\n ...(options.interactionMode !== undefined && {\n interactionMode: options.interactionMode,\n }),\n ...(options.reasoningEffort !== undefined && {\n reasoningEffort: options.reasoningEffort,\n }),\n ...(options.specModeModelId !== undefined && {\n specModeModelId: options.specModeModelId,\n }),\n ...(options.specModeReasoningEffort !== undefined && {\n specModeReasoningEffort: options.specModeReasoningEffort,\n }),\n ...(options.mcpServers !== undefined && {\n mcpServers: options.mcpServers,\n }),\n ...(options.enabledToolIds !== undefined && {\n enabledToolIds: options.enabledToolIds,\n }),\n ...(options.disabledToolIds !== undefined && {\n disabledToolIds: options.disabledToolIds,\n }),\n ...(options.sessionSource !== undefined && {\n sessionSource: options.sessionSource,\n }),\n tags: [...(options.tags ?? []), SDK_TAG],\n };\n}\n","import { once } from 'node:events';\nimport http, { type IncomingMessage, type ServerResponse } from 'node:http';\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\n\nimport type { McpServerConfig } from './schemas/client.js';\nimport { JSONRPC_VERSION } from './schemas/constants.js';\nimport { JsonRpcErrorCode, McpServerType } from './schemas/enums.js';\n\ntype ToolInputShape = Record<string, z.ZodTypeAny>;\n\nexport type DroidToolResult = string | CallToolResult;\n\nexport interface DroidTool {\n name: string;\n description?: string;\n inputSchema?: ToolInputShape;\n handler: (\n input: Record<string, unknown>\n ) => DroidToolResult | Promise<DroidToolResult>;\n}\n\nexport interface SdkMcpServerOptions {\n name: string;\n version?: string;\n tools: DroidTool[];\n}\n\nexport type DroidMcpServerConfig = McpServerConfig | SdkMcpServer;\n\nexport function tool<InputShape extends ToolInputShape>(\n name: string,\n description: string,\n inputSchema: InputShape,\n handler: (\n input: z.infer<z.ZodObject<InputShape>>\n ) => DroidToolResult | Promise<DroidToolResult>\n): DroidTool;\nexport function tool(\n name: string,\n description: string,\n handler: DroidTool['handler']\n): DroidTool;\nexport function tool<InputShape extends ToolInputShape>(\n name: string,\n description: string,\n inputSchemaOrHandler:\n | InputShape\n | ((\n input: Record<string, unknown>\n ) => DroidToolResult | Promise<DroidToolResult>),\n handler?: (\n input: z.infer<z.ZodObject<InputShape>>\n ) => DroidToolResult | Promise<DroidToolResult>\n): DroidTool {\n if (typeof inputSchemaOrHandler === 'function') {\n const actualHandler = inputSchemaOrHandler;\n return {\n name,\n description,\n handler: (input) => actualHandler(input),\n };\n }\n\n if (!handler) {\n throw new Error(`Missing handler for SDK MCP tool \"${name}\"`);\n }\n\n const inputObjectSchema = z.object(inputSchemaOrHandler);\n\n return {\n name,\n description,\n inputSchema: inputSchemaOrHandler,\n handler: (input) => handler(inputObjectSchema.parse(input)),\n };\n}\n\nfunction isSdkMcpServer(server: DroidMcpServerConfig): server is SdkMcpServer {\n return server instanceof SdkMcpServer;\n}\n\nfunction toCallToolResult(result: DroidToolResult): CallToolResult {\n if (typeof result === 'string') {\n return {\n content: [{ type: 'text', text: result }],\n };\n }\n\n return result;\n}\n\nasync function readJsonBody(req: IncomingMessage): Promise<unknown> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n\n if (chunks.length === 0) {\n return undefined;\n }\n\n return JSON.parse(Buffer.concat(chunks).toString('utf8'));\n}\n\nfunction writeJsonError(\n res: ServerResponse,\n statusCode: number,\n message: string\n): void {\n if (res.headersSent) {\n return;\n }\n\n res.writeHead(statusCode, { 'content-type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: JSONRPC_VERSION,\n error: { code: JsonRpcErrorCode.INTERNAL_ERROR, message },\n id: null,\n })\n );\n}\n\nexport class SdkMcpServer {\n readonly name: string;\n readonly version: string;\n readonly tools: DroidTool[];\n\n private _httpServer: http.Server | null = null;\n private _url: string | null = null;\n\n constructor(options: SdkMcpServerOptions) {\n this.name = options.name;\n this.version = options.version ?? '1.0.0';\n this.tools = options.tools;\n }\n\n get config(): McpServerConfig | null {\n if (!this._url) {\n return null;\n }\n\n return {\n type: McpServerType.Http,\n name: this.name,\n url: this._url,\n headers: [],\n };\n }\n\n async start(): Promise<McpServerConfig> {\n if (this.config) {\n return this.config;\n }\n\n this._httpServer = http.createServer((req, res) => {\n void this.handleRequest(req, res);\n });\n this._httpServer.listen(0, '127.0.0.1');\n await once(this._httpServer, 'listening');\n\n const address = this._httpServer.address();\n if (!address || typeof address === 'string') {\n throw new Error('Unable to determine SDK MCP server address');\n }\n\n this._url = `http://127.0.0.1:${address.port}/mcp`;\n const config = this.config;\n if (!config) {\n throw new Error('Unable to start SDK MCP server');\n }\n return config;\n }\n\n async close(): Promise<void> {\n const server = this._httpServer;\n this._httpServer = null;\n this._url = null;\n\n if (!server) {\n return;\n }\n\n server.closeAllConnections?.();\n server.close();\n await once(server, 'close');\n }\n\n private createMcpServer(): McpServer {\n const server = new McpServer({\n name: this.name,\n version: this.version,\n });\n\n for (const sdkTool of this.tools) {\n server.registerTool(\n sdkTool.name,\n {\n description: sdkTool.description,\n ...(sdkTool.inputSchema && {\n inputSchema: sdkTool.inputSchema,\n }),\n },\n async (input: Record<string, unknown>) =>\n toCallToolResult(await sdkTool.handler(input))\n );\n }\n\n return server;\n }\n\n private async handleRequest(\n req: IncomingMessage,\n res: ServerResponse\n ): Promise<void> {\n if (req.url !== '/mcp') {\n res.writeHead(404).end();\n return;\n }\n\n if (req.method !== 'POST') {\n res.writeHead(405).end();\n return;\n }\n\n const server = this.createMcpServer();\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: undefined,\n });\n\n res.on('close', () => {\n void transport.close();\n void server.close();\n });\n\n try {\n const body = await readJsonBody(req);\n await server.connect(transport);\n await transport.handleRequest(req, res, body);\n } catch (error) {\n writeJsonError(\n res,\n 500,\n error instanceof Error ? error.message : 'Internal server error'\n );\n await transport.close();\n await server.close();\n }\n }\n}\n\nexport function createSdkMcpServer(options: SdkMcpServerOptions): SdkMcpServer {\n return new SdkMcpServer(options);\n}\n\nexport async function startSdkMcpServers(\n servers: DroidMcpServerConfig[] | undefined\n): Promise<{ mcpServers?: McpServerConfig[]; cleanup: () => Promise<void> }> {\n if (!servers) {\n return { cleanup: async () => {} };\n }\n\n const startedServers: SdkMcpServer[] = [];\n const mcpServers: McpServerConfig[] = [];\n\n try {\n for (const server of servers) {\n if (isSdkMcpServer(server)) {\n mcpServers.push(await server.start());\n startedServers.push(server);\n } else {\n mcpServers.push(server);\n }\n }\n } catch (error) {\n await Promise.all(startedServers.map((server) => server.close()));\n throw error;\n }\n\n return {\n mcpServers,\n cleanup: async () => {\n await Promise.all(startedServers.map((server) => server.close()));\n },\n };\n}\n","import { DroidClient } from './client.js';\nimport { ConnectionError } from './errors.js';\nimport {\n buildInitParams,\n closeQuietly,\n createConfiguredClient,\n streamFromClient,\n wireAbortSignal,\n} from './helpers.js';\nimport type {\n HandlerOptions,\n MessageBridge,\n MessageOptions,\n SessionInitOptions,\n TransportCreationOptions,\n} from './helpers.js';\nimport { startSdkMcpServers } from './mcp.js';\nimport type { DroidMcpServerConfig } from './mcp.js';\nimport type { NotificationCallback, NotificationFilter } from './protocol.js';\nimport type {\n AddMcpServerRequestParams,\n AddMcpServerResult,\n AuthenticateMcpServerRequestParams,\n AuthenticateMcpServerResult,\n CompactSessionRequestParams,\n CompactSessionResult,\n GetContextStatsResult,\n ExecuteRewindRequestParams,\n ExecuteRewindResult,\n ForkSessionResult,\n RenameSessionRequestParams,\n RenameSessionResult,\n GetRewindInfoRequestParams,\n GetRewindInfoResult,\n InitializeSessionResult,\n ListMcpServersResult,\n ListMcpToolsResult,\n ListToolsRequestParams,\n ListToolsResult,\n ListSkillsResult,\n LoadSessionRequestParams,\n LoadSessionResult,\n RemoveMcpServerRequestParams,\n RemoveMcpServerResult,\n ToggleMcpServerRequestParams,\n ToggleMcpServerResult,\n UpdateSessionSettingsRequestParams,\n UpdateSessionSettingsResult,\n} from './schemas/client.js';\nimport { DroidInteractionMode } from './schemas/enums.js';\nimport type {\n DroidResultMessage,\n DroidStreamEvent,\n DroidStreamMessage,\n} from './stream.js';\n\n/** Aggregated result from a one-shot {@link run} call. */\nexport type DroidResult = DroidResultMessage;\n\nexport interface CreateSessionOptions\n extends SessionInitOptions, HandlerOptions, TransportCreationOptions {\n abortSignal?: AbortSignal;\n}\n\nexport interface ResumeSessionOptions extends Pick<\n CreateSessionOptions,\n | 'apiKey'\n | 'execPath'\n | 'execArgs'\n | 'env'\n | 'permissionHandler'\n | 'askUserHandler'\n | 'transport'\n | 'abortSignal'\n> {\n mcpServers?: DroidMcpServerConfig[];\n}\n\nexport type { MessageOptions } from './helpers.js';\n\n/** Create instances via {@link createSession} or {@link resumeSession}. */\nexport class DroidSession {\n private _client: DroidClient;\n private _sessionId: string;\n private _initResult: InitializeSessionResult | LoadSessionResult;\n private _closed = false;\n private _cleanupAbortSignal: (() => void) | null = null;\n private _cleanupCallbacks: Array<() => Promise<void> | void> = [];\n private readonly _activeBridges = new Set<MessageBridge>();\n\n /** @internal */\n constructor(\n client: DroidClient,\n sessionId: string,\n initResult: InitializeSessionResult | LoadSessionResult\n ) {\n this._client = client;\n this._sessionId = sessionId;\n this._initResult = initResult;\n }\n\n get sessionId(): string {\n return this._sessionId;\n }\n\n get initResult(): InitializeSessionResult | LoadSessionResult {\n return this._initResult;\n }\n\n /** @internal */\n setAbortSignalCleanup(cleanup: () => void): void {\n this._cleanupAbortSignal = cleanup;\n }\n\n /** @internal */\n addCleanup(cleanup: () => Promise<void> | void): void {\n this._cleanupCallbacks.push(cleanup);\n }\n\n /** Yields message-level events until the final `result` message. */\n stream(\n prompt: string,\n options?: MessageOptions & { includePartialMessages?: false }\n ): AsyncGenerator<DroidStreamMessage, void, undefined>;\n /** Yields message-level events plus partial chunks until the final `result` message. */\n stream(\n prompt: string,\n options: MessageOptions & { includePartialMessages: true }\n ): AsyncGenerator<DroidStreamEvent, void, undefined>;\n async *stream(\n prompt: string,\n options?: MessageOptions\n ): AsyncGenerator<DroidStreamEvent, void, undefined> {\n this._ensureNotClosed();\n yield* streamFromClient(\n this._client,\n this._sessionId,\n this._activeBridges,\n prompt,\n options\n );\n }\n\n async interrupt(): Promise<void> {\n this._ensureNotClosed();\n await this._client.interruptSession();\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this._cleanupAbortSignal?.();\n this._cleanupAbortSignal = null;\n for (const bridge of this._activeBridges) {\n bridge.signalDone();\n }\n\n try {\n await this._client.closeSession({ reason: 'other' }).catch(() => {});\n await this._client.close();\n } finally {\n const cleanups = this._cleanupCallbacks.splice(0);\n await Promise.all(cleanups.map((cleanup) => cleanup()));\n }\n }\n\n async updateSettings(\n params: Partial<UpdateSessionSettingsRequestParams>\n ): Promise<UpdateSessionSettingsResult> {\n this._ensureNotClosed();\n return this._client.updateSessionSettings(params);\n }\n\n async enterSpecMode(\n params: Pick<\n UpdateSessionSettingsRequestParams,\n 'specModeModelId' | 'specModeReasoningEffort'\n > = {}\n ): Promise<UpdateSessionSettingsResult> {\n this._ensureNotClosed();\n return this._client.updateSessionSettings({\n interactionMode: DroidInteractionMode.Spec,\n ...params,\n });\n }\n\n async addMcpServer(\n params: AddMcpServerRequestParams\n ): Promise<AddMcpServerResult> {\n this._ensureNotClosed();\n return this._client.addMcpServer(params);\n }\n\n async removeMcpServer(\n params: RemoveMcpServerRequestParams\n ): Promise<RemoveMcpServerResult> {\n this._ensureNotClosed();\n return this._client.removeMcpServer(params);\n }\n\n async toggleMcpServer(\n params: ToggleMcpServerRequestParams\n ): Promise<ToggleMcpServerResult> {\n this._ensureNotClosed();\n return this._client.toggleMcpServer(params);\n }\n\n async listMcpServers(): Promise<ListMcpServersResult> {\n this._ensureNotClosed();\n return this._client.listMcpServers();\n }\n\n async listMcpTools(): Promise<ListMcpToolsResult> {\n this._ensureNotClosed();\n return this._client.listMcpTools();\n }\n\n async listTools(\n params: ListToolsRequestParams = {}\n ): Promise<ListToolsResult> {\n this._ensureNotClosed();\n return this._client.listTools(params);\n }\n\n async authenticateMcpServer(\n params: AuthenticateMcpServerRequestParams\n ): Promise<AuthenticateMcpServerResult> {\n this._ensureNotClosed();\n return this._client.authenticateMcpServer(params);\n }\n\n async listSkills(): Promise<ListSkillsResult> {\n this._ensureNotClosed();\n return this._client.listSkills();\n }\n\n async getRewindInfo(\n params: GetRewindInfoRequestParams\n ): Promise<GetRewindInfoResult> {\n this._ensureNotClosed();\n return this._client.getRewindInfo(params);\n }\n\n async executeRewind(\n params: ExecuteRewindRequestParams\n ): Promise<ExecuteRewindResult> {\n this._ensureNotClosed();\n return this._client.executeRewind(params);\n }\n\n async compactSession(\n params?: CompactSessionRequestParams\n ): Promise<CompactSessionResult> {\n this._ensureNotClosed();\n return this._client.compactSession(params ?? {});\n }\n\n async forkSession(): Promise<ForkSessionResult> {\n this._ensureNotClosed();\n return this._client.forkSession();\n }\n\n async getContextStats(): Promise<GetContextStatsResult> {\n this._ensureNotClosed();\n return this._client.getContextStats();\n }\n\n async renameSession(\n params: RenameSessionRequestParams\n ): Promise<RenameSessionResult> {\n this._ensureNotClosed();\n return this._client.renameSession(params);\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n return this._client.onNotification(callback, filter);\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Session has been closed. Create a new session to continue.'\n );\n }\n }\n}\n\nexport async function createSession(\n options: CreateSessionOptions\n): Promise<DroidSession> {\n const { client } = await createConfiguredClient(options);\n let cleanupInitAbortSignal = options.abortSignal?.aborted\n ? () => {}\n : wireAbortSignal(options.abortSignal, () => {\n void closeQuietly(client);\n });\n let sdkMcpServers: Awaited<ReturnType<typeof startSdkMcpServers>> | undefined;\n\n try {\n sdkMcpServers = await startSdkMcpServers(options.mcpServers);\n const initParams = buildInitParams({\n ...options,\n mcpServers: sdkMcpServers.mcpServers,\n });\n const initResult = await client.initializeSession(initParams);\n const session = new DroidSession(client, initResult.sessionId, initResult);\n session.addCleanup(sdkMcpServers.cleanup);\n cleanupInitAbortSignal();\n cleanupInitAbortSignal = () => {};\n session.setAbortSignalCleanup(\n wireAbortSignal(options.abortSignal, () => void session.close())\n );\n\n return session;\n } catch (error) {\n cleanupInitAbortSignal();\n await sdkMcpServers?.cleanup();\n await closeQuietly(client);\n throw error;\n }\n}\n\n/**\n * Resumes an existing Droid session.\n *\n * The resumed session always runs in the working directory that was persisted\n * with the session at creation time. `resumeSession()` intentionally does not\n * accept a `cwd` option: the persisted session cwd is authoritative. The\n * underlying subprocess is launched in the host process's `process.cwd()`, but\n * this does not affect the session's working directory as far as the Droid is\n * concerned. To run in a different directory, create a new session or fork the\n * existing one.\n *\n * @throws {SessionNotFoundError} If the session ID does not exist.\n */\nexport async function resumeSession(\n sessionId: string,\n options: ResumeSessionOptions\n): Promise<DroidSession> {\n const { client } = await createConfiguredClient(options);\n let sdkMcpServers: Awaited<ReturnType<typeof startSdkMcpServers>> | undefined;\n\n try {\n sdkMcpServers = await startSdkMcpServers(options.mcpServers);\n const loadParams: LoadSessionRequestParams = {\n sessionId,\n mcpServers: sdkMcpServers.mcpServers,\n };\n const loadResult = await client.loadSession(loadParams);\n const session = new DroidSession(client, sessionId, loadResult);\n session.addCleanup(sdkMcpServers.cleanup);\n session.setAbortSignalCleanup(\n wireAbortSignal(options.abortSignal, () => void session.close())\n );\n\n return session;\n } catch (error) {\n await sdkMcpServers?.cleanup();\n await closeQuietly(client);\n throw error;\n }\n}\n","import {\n createSession,\n type CreateSessionOptions,\n type DroidResult,\n type MessageOptions,\n} from './session.js';\nimport { DroidMessageType } from './stream.js';\n\nexport interface RunOptions\n extends\n CreateSessionOptions,\n Omit<MessageOptions, 'includePartialMessages'> {}\n\nexport async function run(\n prompt: string,\n options: RunOptions\n): Promise<DroidResult> {\n const session = await createSession(options);\n\n try {\n for await (const msg of session.stream(prompt, {\n ...options,\n includePartialMessages: false,\n })) {\n if (msg.type === DroidMessageType.Result) {\n return msg;\n }\n }\n\n throw new Error('Stream completed without a result message');\n } finally {\n await session.close();\n }\n}\n","import * as fs from 'node:fs';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\n\nimport {\n SessionSettingsFileSchema,\n SessionStartEventSchema,\n type SessionMetadata,\n type SessionSettingsFile,\n type SessionStartEvent,\n type ListSessionsOptions,\n} from './schemas/session-metadata.js';\n\nconst FAVORITES_FILE = '.favorites';\nconst SESSION_EXTENSION = '.jsonl';\nconst SETTINGS_SUFFIX = '.settings.json';\nconst MISSION_TAG_PREFIX = 'mission:';\nconst MISSION_ID_METADATA_KEY = 'missionId';\nconst DECOMP_SESSION_TYPE_TAG = 'decompSessionType';\nconst DECOMP_SESSION_TYPE_METADATA_KEY = 'value';\n\n// Byte constants for the byte-level scanner.\nconst LF = 0x0a;\nconst CR = 0x0d;\nconst SPACE = 0x20;\nconst TAB = 0x09;\n\n// When `numSessions` is set, stat every candidate then parse only the top\n// N. Parse failures force us to drop further down the stat-sorted list —\n// oversample so we rarely have to re-dip.\nconst PARSE_OVERSAMPLE = 20;\n\n/**\n * Read a file into a Buffer, returning `null` if it doesn't exist or can't\n * be read. Avoids a TOCTOU `existsSync` pre-check.\n */\nfunction readFileBuffer(filePath: string): Buffer | null {\n try {\n return fs.readFileSync(filePath);\n } catch {\n return null;\n }\n}\n\n/** Parse a Buffer as JSON, returning `null` on failure. */\nfunction parseJsonBuffer(buf: Buffer): unknown {\n try {\n return JSON.parse(buf.toString('utf-8'));\n } catch {\n return null;\n }\n}\n\n/**\n * Walk a Buffer byte-by-byte to extract the first line and count non-empty\n * lines. Avoids allocating a full UTF-8 string for potentially large\n * session files.\n */\nfunction scanBufferForLines(buf: Buffer): {\n firstLine: Buffer;\n nonEmptyLineCount: number;\n} {\n let nonEmptyLineCount = 0;\n let firstLineEnd = -1;\n let currentLineHasContent = false;\n\n for (let i = 0; i < buf.length; i++) {\n const ch = buf[i];\n if (ch === LF) {\n if (currentLineHasContent) nonEmptyLineCount++;\n if (firstLineEnd === -1) firstLineEnd = i;\n currentLineHasContent = false;\n } else if (ch !== CR && ch !== SPACE && ch !== TAB) {\n currentLineHasContent = true;\n }\n }\n if (currentLineHasContent) nonEmptyLineCount++;\n\n // Trim trailing CR from the first line if the file uses CRLF.\n const end =\n firstLineEnd === -1\n ? buf.length\n : firstLineEnd > 0 && buf[firstLineEnd - 1] === CR\n ? firstLineEnd - 1\n : firstLineEnd;\n\n return {\n firstLine: buf.subarray(0, end),\n nonEmptyLineCount,\n };\n}\n\nfunction loadFavorites(sessionsDir: string): Set<string> {\n const buf = readFileBuffer(path.join(sessionsDir, FAVORITES_FILE));\n if (!buf) return new Set();\n const parsed = parseJsonBuffer(buf);\n if (!Array.isArray(parsed)) return new Set();\n return new Set(parsed.filter((id): id is string => typeof id === 'string'));\n}\n\nfunction loadSettingsFile(\n directory: string,\n sessionId: string\n): SessionSettingsFile | null {\n const buf = readFileBuffer(\n path.join(directory, `${sessionId}${SETTINGS_SUFFIX}`)\n );\n if (!buf) return null;\n const parsed = parseJsonBuffer(buf);\n if (parsed === null) return null;\n const result = SessionSettingsFileSchema.safeParse(parsed);\n return result.success ? result.data : null;\n}\n\nfunction getMissionMetadataFromTags(settings: SessionSettingsFile | null): {\n decompMissionId?: string;\n decompSessionType?: string;\n} {\n if (!settings?.tags) return {};\n\n const missionTag = settings.tags.find((tag) =>\n tag.name.startsWith(MISSION_TAG_PREFIX)\n );\n const roleTag = settings.tags.find(\n (tag) => tag.name === DECOMP_SESSION_TYPE_TAG\n );\n\n return {\n decompMissionId: missionTag?.metadata?.[MISSION_ID_METADATA_KEY],\n decompSessionType: roleTag?.metadata?.[DECOMP_SESSION_TYPE_METADATA_KEY],\n };\n}\n\ninterface SessionCandidate {\n sessionId: string;\n sessionPath: string;\n directory: string;\n /** Names of sibling files in `directory` — used to skip settings probe. */\n siblingNames: Set<string>;\n /** Cached stat, populated eagerly in the stat-first pre-pass. */\n stats: fs.Stats;\n}\n\ninterface ParseContext {\n favorites: Set<string>;\n /**\n * When set, candidates whose embedded `cwd` doesn't match (after\n * resolution) are rejected early. Used to filter legacy-global files.\n */\n requiredCwd?: string;\n}\n\n/**\n * Parse a single session `.jsonl` file into a {@link SessionMetadata}.\n * Returns `null` if the file can't be read, isn't a valid session_start\n * event, is archived, or (when `requiredCwd` is set) doesn't match.\n */\nfunction parseSessionFile(\n candidate: SessionCandidate,\n ctx: ParseContext\n): SessionMetadata | null {\n const buf = readFileBuffer(candidate.sessionPath);\n if (!buf) return null;\n\n const scanned = scanBufferForLines(buf);\n\n const firstParsed = parseJsonBuffer(scanned.firstLine);\n if (firstParsed === null) return null;\n\n const firstResult = SessionStartEventSchema.safeParse(firstParsed);\n if (!firstResult.success) return null;\n const summary: SessionStartEvent = firstResult.data;\n\n // Early reject legacy-global sessions that don't belong to the cwd we\n // want, before touching the settings file.\n if (\n ctx.requiredCwd !== undefined &&\n (summary.cwd === undefined || path.resolve(summary.cwd) !== ctx.requiredCwd)\n ) {\n return null;\n }\n\n // Only read <sessionId>.settings.json if it actually exists — we already\n // have the directory listing and can tell.\n const settingsName = `${candidate.sessionId}${SETTINGS_SUFFIX}`;\n const settings = candidate.siblingNames.has(settingsName)\n ? loadSettingsFile(candidate.directory, candidate.sessionId)\n : null;\n if (settings?.archivedAt) return null;\n\n const tagMeta = getMissionMetadataFromTags(settings);\n const decompSessionType =\n summary.decompSessionType ??\n SessionStartEventSchema.shape.decompSessionType.safeParse(\n tagMeta.decompSessionType\n ).data;\n\n // messageCount = non-empty lines minus the session_start line.\n const messageCount = Math.max(0, scanned.nonEmptyLineCount - 1);\n\n return {\n id: candidate.sessionId,\n title: summary.title ?? '',\n sessionTitle: summary.sessionTitle,\n owner: summary.owner ?? '',\n messageCount,\n modifiedTime: candidate.stats.mtime,\n createdTime: candidate.stats.birthtime || candidate.stats.ctime,\n isFavorite: ctx.favorites.has(candidate.sessionId),\n cwd: summary.cwd,\n decompSessionType,\n decompMissionId: tagMeta.decompMissionId ?? summary.decompMissionId,\n };\n}\n\nfunction readDirEntries(directory: string): fs.Dirent[] {\n try {\n return fs.readdirSync(directory, { withFileTypes: true });\n } catch {\n return [];\n }\n}\n\n/**\n * Stat every `.jsonl` in `directory` (from its already-listed `entries`)\n * and return candidate records. No file contents are read yet — this is\n * the cheap pre-pass that lets `numSessions` avoid parsing every file on\n * disk.\n */\nfunction collectCandidates(\n directory: string,\n entries: fs.Dirent[]\n): SessionCandidate[] {\n const siblingNames = new Set(entries.map((e) => e.name));\n const candidates: SessionCandidate[] = [];\n\n for (const entry of entries) {\n if (entry.isDirectory()) continue;\n if (!entry.name.endsWith(SESSION_EXTENSION)) continue;\n\n const sessionPath = path.join(directory, entry.name);\n let stats: fs.Stats;\n try {\n stats = fs.statSync(sessionPath);\n } catch {\n continue;\n }\n candidates.push({\n sessionId: entry.name.slice(0, -SESSION_EXTENSION.length),\n sessionPath,\n directory,\n siblingNames,\n stats,\n });\n }\n\n return candidates;\n}\n\n/**\n * Parse `candidates` in order until we have `limit` valid sessions (or run\n * out). When `limit` is undefined, parse everything.\n */\nfunction parseUpTo(\n candidates: SessionCandidate[],\n ctx: ParseContext,\n limit?: number\n): SessionMetadata[] {\n const out: SessionMetadata[] = [];\n for (const candidate of candidates) {\n if (limit !== undefined && out.length >= limit) break;\n const metadata = parseSessionFile(candidate, ctx);\n if (metadata) out.push(metadata);\n }\n return out;\n}\n\n/**\n * Convert a working directory path to the sanitized directory name used by\n * the droid CLI for project-specific session storage.\n *\n * Mirrors the CLI's `sanitizePathToDirectoryName` helper.\n *\n * @internal Exported primarily for testing — typical callers should use\n * {@link listSessions} with the `cwd` option instead.\n */\nexport function sanitizePathToDirectoryName(cwd: string): string {\n let expandedPath = cwd;\n if (cwd.startsWith('~/') || cwd === '~') {\n expandedPath = path.join(os.homedir(), cwd.slice(1));\n }\n\n const absolutePath = path.resolve(expandedPath);\n let canonicalPath = absolutePath;\n try {\n canonicalPath = fs.realpathSync(absolutePath);\n } catch {\n canonicalPath = absolutePath;\n }\n const normalized = canonicalPath.replace(/[\\\\/]+$/, '');\n\n if (process.platform === 'win32') {\n return `-${normalized.replace(/^([A-Z]):/i, '$1').replace(/[\\\\/]+/g, '-')}`;\n }\n return `-${normalized.replace(/^\\/+/, '').replace(/\\/+/g, '-')}`;\n}\n\n/**\n * Resolve the default sessions root directory.\n *\n * @internal Exported primarily for testing — typical callers should use\n * {@link listSessions} without a `sessionsDir` option instead.\n */\nexport function getDefaultSessionsDir(): string {\n return path.join(os.homedir(), '.factory', 'sessions');\n}\n\n/**\n * List droid sessions stored on disk.\n *\n * Sessions are read from `~/.factory/sessions/` (or the `sessionsDir`\n * override) by scanning `.jsonl` files, mirroring the logic used by the\n * `droid` CLI's `SessionService`. No JSON-RPC server calls are made.\n *\n * By default, returns sessions for `process.cwd()`. Pass a specific `cwd`\n * to scope to a different project, or `fetchOutsideCWD: true` to return\n * every session on disk regardless of working directory. Results are\n * sorted by `modifiedTime` descending and can be capped with `numSessions`.\n *\n * @example\n * ```ts\n * // Sessions for the current project\n * const sessions = await listSessions();\n *\n * // 10 most recent sessions across every project\n * const recent = await listSessions({\n * fetchOutsideCWD: true,\n * numSessions: 10,\n * });\n * ```\n */\nexport async function listSessions(\n options: ListSessionsOptions = {}\n): Promise<SessionMetadata[]> {\n const sessionsDir = options.sessionsDir ?? getDefaultSessionsDir();\n const favorites = loadFavorites(sessionsDir);\n\n const rootEntries = readDirEntries(sessionsDir);\n\n // Legacy-global candidates (pre-subdir sessions) always live directly\n // under sessionsDir; collect them regardless of mode. Project-specific\n // candidates come from either one subdir (single-project mode) or all\n // of them (fetchOutsideCWD mode).\n const legacyCandidates = collectCandidates(sessionsDir, rootEntries);\n const projectCandidates: SessionCandidate[] = [];\n\n let requiredCwd: string | undefined;\n\n if (options.fetchOutsideCWD) {\n for (const entry of rootEntries) {\n if (!entry.isDirectory()) continue;\n if (!entry.name.startsWith('-')) continue;\n const dir = path.join(sessionsDir, entry.name);\n projectCandidates.push(...collectCandidates(dir, readDirEntries(dir)));\n }\n } else {\n const normalizedCwd = path.resolve(options.cwd ?? process.cwd());\n requiredCwd = normalizedCwd;\n const projectDir = path.join(\n sessionsDir,\n sanitizePathToDirectoryName(normalizedCwd)\n );\n projectCandidates.push(\n ...collectCandidates(projectDir, readDirEntries(projectDir))\n );\n }\n\n // Sort candidates mtime-descending so the first parses hit the newest\n // sessions — required for `numSessions` to skip the tail.\n const byMtimeDesc = (a: SessionCandidate, b: SessionCandidate): number =>\n b.stats.mtime.getTime() - a.stats.mtime.getTime();\n projectCandidates.sort(byMtimeDesc);\n legacyCandidates.sort(byMtimeDesc);\n\n // When numSessions is set, parse only as many files as we need (with a\n // small oversample to cover parse failures / archived / cwd-mismatch).\n const parseLimit =\n options.numSessions !== undefined && options.numSessions >= 0\n ? options.numSessions + PARSE_OVERSAMPLE\n : undefined;\n\n const ctx: ParseContext = { favorites };\n const legacyCtx: ParseContext =\n requiredCwd !== undefined ? { favorites, requiredCwd } : ctx;\n\n const projectSessions = parseUpTo(projectCandidates, ctx, parseLimit);\n const legacySessions = parseUpTo(legacyCandidates, legacyCtx, parseLimit);\n\n // Dedupe by id (migration edge case where the same session appears in\n // both a legacy global file and a project subdir).\n const byId = new Map<string, SessionMetadata>();\n for (const session of [...projectSessions, ...legacySessions]) {\n const existing = byId.get(session.id);\n if (\n !existing ||\n session.modifiedTime.getTime() > existing.modifiedTime.getTime()\n ) {\n byId.set(session.id, session);\n }\n }\n\n const sorted = Array.from(byId.values()).sort(\n (a, b) => b.modifiedTime.getTime() - a.modifiedTime.getTime()\n );\n\n if (options.numSessions !== undefined && options.numSessions >= 0) {\n return sorted.slice(0, options.numSessions);\n }\n\n return sorted;\n}\n","import { z } from 'zod';\n\nconst EnvironmentVariableSchema = z.object({\n key: z.string(),\n value: z.string(),\n});\n\nexport const MachineTemplateBuildStatusSchema = z.object({\n status: z.enum(['building', 'success', 'failed']),\n failureReason: z.enum(['setup_script_error', 'system_error']).optional(),\n buildStartedAt: z.number().int().optional(),\n builtAt: z.number().int().optional(),\n logs: z.string().optional(),\n});\n\nexport type MachineTemplateBuildStatus = z.infer<\n typeof MachineTemplateBuildStatusSchema\n>;\n\nexport const MachineTemplateSchema = z.object({\n templateId: z.string(),\n repoUrl: z.string(),\n templateName: z.string(),\n defaultBranch: z.string(),\n createdBy: z.string(),\n createdAt: z.number().int().optional(),\n buildStatus: MachineTemplateBuildStatusSchema.optional(),\n lastUpdatedAt: z.number().int().nullable().optional(),\n environmentVariables: z.array(EnvironmentVariableSchema).optional(),\n userEnvironmentVariablesByUser: z.array(EnvironmentVariableSchema).optional(),\n setupScript: z.string().optional(),\n});\n\nexport type MachineTemplate = z.infer<typeof MachineTemplateSchema>;\n\nexport const MachineTemplateListResponseSchema = z.object({\n templates: z.array(MachineTemplateSchema),\n pagination: z.object({\n hasMore: z.boolean(),\n nextCursor: z.string().nullable(),\n }),\n});\n\nexport type MachineTemplateListResponse = z.infer<\n typeof MachineTemplateListResponseSchema\n>;\n\nexport interface FactoryApiOptions {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport interface ComputerApiOptions extends FactoryApiOptions {\n computerId: string;\n}\n\nexport interface ListMachineTemplatesOptions extends FactoryApiOptions {\n limit?: number;\n cursor?: string;\n}\n\nexport interface GetMachineTemplateOptions extends FactoryApiOptions {\n templateId: string;\n}\n\nexport const ComputerSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n hostname: z.string().optional(),\n providerType: z.enum(['byom', 'e2b']),\n status: z.enum(['provisioning', 'active', 'error']).optional(),\n createdAt: z.number().int(),\n relayClientUrl: z.string().optional(),\n remoteUser: z.string().optional(),\n })\n .passthrough();\n\nexport type Computer = z.infer<typeof ComputerSchema>;\n\nexport const ComputerListResponseSchema = z.object({\n computers: z.array(ComputerSchema),\n});\n\nexport type ComputerListResponse = z.infer<typeof ComputerListResponseSchema>;\n\nexport interface ListComputersOptions extends FactoryApiOptions {}\n\nexport interface GetComputerOptions extends ComputerApiOptions {}\n\nexport interface CreateComputerOptions extends FactoryApiOptions {\n name: string;\n remoteUser: string;\n provider?: 'byom' | 'e2b';\n hostId?: string;\n repos?: string[];\n autoInstallDeps?: boolean;\n serviceAccountId?: string;\n}\n\nexport interface GetComputerByNameOptions extends FactoryApiOptions {\n name: string;\n}\n\nexport interface UpdateComputerOptions extends ComputerApiOptions {\n name?: string;\n remoteUser?: string;\n hostId?: string;\n}\n\nexport interface DeleteComputerOptions extends ComputerApiOptions {}\n\nexport interface RestartComputerOptions extends ComputerApiOptions {}\n\nexport interface RefreshComputerOptions extends ComputerApiOptions {}\n\nexport const RefreshComputerResponseSchema = z.object({\n configured: z.number().int(),\n});\n\nexport type RefreshComputerResponse = z.infer<\n typeof RefreshComputerResponseSchema\n>;\n\nexport const ComputerMetricSchema = z.object({\n timestamp: z.string(),\n cpuUsedPct: z.number(),\n cpuCount: z.number(),\n memUsed: z.number(),\n memTotal: z.number(),\n diskUsed: z.number(),\n diskTotal: z.number(),\n});\n\nexport type ComputerMetric = z.infer<typeof ComputerMetricSchema>;\n\nexport const ComputerMetricsResponseSchema = z.array(ComputerMetricSchema);\n\nexport type ComputerMetricsResponse = z.infer<\n typeof ComputerMetricsResponseSchema\n>;\n\nexport interface GetComputerMetricsOptions extends ComputerApiOptions {\n start?: string;\n}\n\nexport interface RetryInstallDepsOptions extends ComputerApiOptions {}\n\nexport const RemoteSessionSchema = z.object({\n sessionId: z.string(),\n title: z.string().optional(),\n status: z.enum(['idle', 'pending', 'running']),\n messageCount: z.number().int(),\n createdAt: z.number().int(),\n updatedAt: z.number().int(),\n completedAt: z.number().int().optional(),\n computerId: z.string().optional(),\n});\n\nexport type RemoteSession = z.infer<typeof RemoteSessionSchema>;\n\nexport const RemoteSessionListResponseSchema = z.object({\n sessions: z.array(RemoteSessionSchema),\n pagination: z.object({\n hasMore: z.boolean(),\n nextCursor: z.string().nullable(),\n }),\n});\n\nexport type RemoteSessionListResponse = z.infer<\n typeof RemoteSessionListResponseSchema\n>;\n\nexport interface ListRemoteSessionsOptions extends FactoryApiOptions {\n computerId?: string;\n limit?: number;\n cursor?: string;\n}\n","import type { z } from 'zod';\n\nimport {\n ComputerListResponseSchema,\n ComputerMetricsResponseSchema,\n ComputerSchema,\n MachineTemplateListResponseSchema,\n MachineTemplateSchema,\n RefreshComputerResponseSchema,\n RemoteSessionListResponseSchema,\n} from './api-types.js';\nimport type {\n Computer,\n ComputerListResponse,\n ComputerMetricsResponse,\n CreateComputerOptions,\n DeleteComputerOptions,\n GetComputerByNameOptions,\n GetComputerMetricsOptions,\n GetComputerOptions,\n GetMachineTemplateOptions,\n ListComputersOptions,\n ListMachineTemplatesOptions,\n ListRemoteSessionsOptions,\n MachineTemplate,\n MachineTemplateListResponse,\n RefreshComputerOptions,\n RefreshComputerResponse,\n RemoteSessionListResponse,\n RestartComputerOptions,\n RetryInstallDepsOptions,\n UpdateComputerOptions,\n} from './api-types.js';\nimport { ConnectionError, ProtocolError } from './errors.js';\nimport { isRecord } from './utils.js';\n\nconst DEFAULT_BASE_URL = 'https://api.factory.ai';\n\ninterface FetchOptions {\n method?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n body?: Record<string, unknown>;\n}\n\nfunction extractErrorMessage(body: unknown, status: number): string {\n if (isRecord(body) && typeof body['error'] === 'string') {\n return body['error'];\n }\n return `Factory API error (status ${status})`;\n}\n\nasync function factoryFetch(\n path: string,\n apiKey: string,\n baseUrl?: string,\n options?: FetchOptions\n): Promise<unknown> {\n const url = `${baseUrl ?? DEFAULT_BASE_URL}${path}`;\n const method = options?.method ?? 'GET';\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n Accept: 'application/json',\n };\n if (options?.body) {\n headers['Content-Type'] = 'application/json';\n }\n\n let response: Response;\n\n try {\n response = await fetch(url, {\n method,\n headers,\n ...(options?.body ? { body: JSON.stringify(options.body) } : {}),\n });\n } catch (error) {\n throw new ConnectionError(\n `Failed to reach Factory API: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n if (response.status === 204) {\n return undefined;\n }\n\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n throw new ProtocolError(\n `Factory API returned non-JSON response (status ${response.status})`\n );\n }\n\n if (!response.ok) {\n const message = extractErrorMessage(body, response.status);\n\n if (response.status === 401 || response.status === 403) {\n throw new ProtocolError(`Invalid or expired API key: ${message}`, {\n code: response.status,\n });\n }\n\n throw new ProtocolError(message, { code: response.status });\n }\n\n return body;\n}\n\nfunction parseResponse<T extends z.ZodTypeAny>(\n body: unknown,\n schema: T\n): z.output<T> {\n const parsed = schema.safeParse(body);\n if (!parsed.success) {\n throw new ProtocolError(\n `Unexpected response format from Factory API: ${parsed.error.message}`\n );\n }\n return parsed.data;\n}\n\nexport async function listMachineTemplates(\n options: ListMachineTemplatesOptions\n): Promise<MachineTemplateListResponse> {\n const params = new URLSearchParams();\n if (options.limit != null) {\n params.set('limit', String(options.limit));\n }\n if (options.cursor != null) {\n params.set('cursor', options.cursor);\n }\n const query = params.toString();\n const path = `/api/v0/machines/templates${query ? `?${query}` : ''}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, MachineTemplateListResponseSchema);\n}\n\nexport async function getMachineTemplate(\n options: GetMachineTemplateOptions\n): Promise<MachineTemplate> {\n const path = `/api/v0/machines/templates/${encodeURIComponent(options.templateId)}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, MachineTemplateSchema);\n}\n\nexport async function listComputers(\n options: ListComputersOptions\n): Promise<ComputerListResponse> {\n const path = '/api/v0/computers';\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, ComputerListResponseSchema);\n}\n\nexport async function getComputer(\n options: GetComputerOptions\n): Promise<Computer> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function createComputer(\n options: CreateComputerOptions\n): Promise<Computer> {\n const path = '/api/v0/computers';\n const reqBody: Record<string, unknown> = {\n name: options.name,\n remoteUser: options.remoteUser,\n };\n if (options.provider != null) reqBody['provider'] = options.provider;\n if (options.hostId != null) reqBody['hostId'] = options.hostId;\n if (options.repos != null) reqBody['repos'] = options.repos;\n if (options.autoInstallDeps != null)\n reqBody['autoInstallDeps'] = options.autoInstallDeps;\n if (options.serviceAccountId != null)\n reqBody['serviceAccountId'] = options.serviceAccountId;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'POST',\n body: reqBody,\n });\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function getComputerByName(\n options: GetComputerByNameOptions\n): Promise<Computer> {\n const path = `/api/v0/computers/name/${encodeURIComponent(options.name)}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function updateComputer(\n options: UpdateComputerOptions\n): Promise<Computer> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}`;\n const reqBody: Record<string, unknown> = {};\n if (options.name != null) reqBody['name'] = options.name;\n if (options.remoteUser != null) reqBody['remoteUser'] = options.remoteUser;\n if (options.hostId != null) reqBody['hostId'] = options.hostId;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'PATCH',\n body: reqBody,\n });\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function deleteComputer(\n options: DeleteComputerOptions\n): Promise<void> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}`;\n\n await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'DELETE',\n });\n}\n\nexport async function restartComputer(\n options: RestartComputerOptions\n): Promise<void> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}/restart`;\n\n await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'POST',\n });\n}\n\nexport async function refreshComputer(\n options: RefreshComputerOptions\n): Promise<RefreshComputerResponse> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}/refresh`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'POST',\n });\n return parseResponse(body, RefreshComputerResponseSchema);\n}\n\nexport async function getComputerMetrics(\n options: GetComputerMetricsOptions\n): Promise<ComputerMetricsResponse> {\n const params = new URLSearchParams();\n if (options.start != null) {\n params.set('start', options.start);\n }\n const query = params.toString();\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}/metrics${query ? `?${query}` : ''}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, ComputerMetricsResponseSchema);\n}\n\nexport async function retryInstallDeps(\n options: RetryInstallDepsOptions\n): Promise<Computer> {\n const path = `/api/v0/computers/${encodeURIComponent(options.computerId)}/install-deps`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl, {\n method: 'POST',\n });\n return parseResponse(body, ComputerSchema);\n}\n\nexport async function listRemoteSessions(\n options: ListRemoteSessionsOptions\n): Promise<RemoteSessionListResponse> {\n const params = new URLSearchParams();\n if (options.computerId != null) {\n params.set('computerId', options.computerId);\n }\n if (options.limit != null) {\n params.set('limit', String(options.limit));\n }\n if (options.cursor != null) {\n params.set('cursor', options.cursor);\n }\n const query = params.toString();\n const path = `/api/v0/sessions${query ? `?${query}` : ''}`;\n\n const body = await factoryFetch(path, options.apiKey, options.baseUrl);\n return parseResponse(body, RemoteSessionListResponseSchema);\n}\n","import type { z } from 'zod';\n\nimport { ConnectionError, SessionError } from '../errors.js';\nimport {\n dispatchNotification,\n ProtocolEngine,\n type AskUserHandler,\n type NotificationCallback,\n type NotificationFilter,\n type NotificationListener,\n type PermissionHandler,\n} from '../protocol.js';\nimport type {\n AddMcpServerRequestParams,\n AddMcpServerResult,\n AddUserMessageRequestParams,\n AddUserMessageResult,\n AuthenticateMcpServerRequestParams,\n AuthenticateMcpServerResult,\n CloseSessionRequestParams,\n CloseSessionResult,\n CompactSessionRequestParams,\n CompactSessionResult,\n ExecuteRewindRequestParams,\n ExecuteRewindResult,\n ContextBreakdownResult,\n ForkSessionResult,\n GetRewindInfoRequestParams,\n GetRewindInfoResult,\n InitializeSessionRequestParams,\n InitializeSessionResult,\n InterruptSessionResult,\n ListMcpServersResult,\n ListMcpToolsResult,\n ListSkillsResult,\n LoadSessionRequestParams,\n LoadSessionResult,\n RemoveMcpServerRequestParams,\n RemoveMcpServerResult,\n RenameSessionRequestParams,\n RenameSessionResult,\n ToggleMcpServerRequestParams,\n ToggleMcpServerResult,\n UpdateSessionSettingsRequestParams,\n UpdateSessionSettingsResult,\n} from '../schemas/client.js';\nimport {\n AddMcpServerResultSchema,\n AddUserMessageResultSchema,\n AuthenticateMcpServerResultSchema,\n CloseSessionResultSchema,\n CompactSessionResultSchema,\n ExecuteRewindResultSchema,\n ContextBreakdownResultSchema,\n ForkSessionResultSchema,\n GetRewindInfoResultSchema,\n InitializeSessionResultSchema,\n InterruptSessionResultSchema,\n ListMcpServersResultSchema,\n ListMcpToolsResultSchema,\n ListSkillsResultSchema,\n LoadSessionResultSchema,\n RemoveMcpServerResultSchema,\n RenameSessionResultSchema,\n ToggleMcpServerResultSchema,\n UpdateSessionSettingsResultSchema,\n} from '../schemas/client.js';\nimport {\n COMPACTION_TIMEOUT,\n REWIND_TIMEOUT,\n SESSION_INIT_TIMEOUT,\n} from '../schemas/constants.js';\nimport {\n ServerRequestHandlerType,\n ToolConfirmationOutcome,\n} from '../schemas/enums.js';\nimport type {\n AskUserRequestParams,\n AskUserResult,\n RequestPermissionHandlerResult,\n RequestPermissionRequestParams,\n} from '../schemas/server.js';\nimport type { DroidClientTransport } from '../types.js';\n\n/** Daemon wire methods (client -> server). */\nenum DaemonMethod {\n INITIALIZE_SESSION = 'daemon.initialize_session',\n LOAD_SESSION = 'daemon.load_session',\n ADD_USER_MESSAGE = 'daemon.add_user_message',\n CLOSE_SESSION = 'daemon.close_session',\n INTERRUPT_SESSION = 'daemon.interrupt_session',\n UPDATE_SESSION_SETTINGS = 'daemon.update_session_settings',\n COMPACT_SESSION = 'daemon.compact_session',\n FORK_SESSION = 'daemon.fork_session',\n GET_CONTEXT_STATS = 'daemon.get_context_breakdown',\n RENAME_SESSION = 'daemon.rename_session',\n GET_REWIND_INFO = 'daemon.get_rewind_info',\n EXECUTE_REWIND = 'daemon.execute_rewind',\n ADD_MCP_SERVER = 'daemon.add_mcp_server',\n REMOVE_MCP_SERVER = 'daemon.remove_mcp_server',\n TOGGLE_MCP_SERVER = 'daemon.toggle_mcp_server',\n LIST_MCP_SERVERS = 'daemon.list_mcp_servers',\n LIST_MCP_TOOLS = 'daemon.list_mcp_tools',\n AUTHENTICATE_MCP_SERVER = 'daemon.authenticate_mcp_server',\n LIST_SKILLS = 'daemon.list_skills',\n}\n\n/** Maps daemon server-to-client request methods to handler types. */\nconst DAEMON_SERVER_REQUEST_METHODS: Record<string, ServerRequestHandlerType> =\n {\n 'daemon.request_permission': ServerRequestHandlerType.Permission,\n 'daemon.ask_user': ServerRequestHandlerType.AskUser,\n };\n\nexport type DaemonClientPermissionHandler = PermissionHandler;\nexport type DaemonClientAskUserHandler = AskUserHandler;\n\nexport interface DaemonClientOptions {\n transport: DroidClientTransport;\n apiKey: string;\n}\n\nexport class DaemonClient {\n private readonly _engine: ProtocolEngine;\n private readonly _apiKey: string;\n private _sessionId: string | null = null;\n private _closed = false;\n\n private readonly _notificationListeners: NotificationListener[] = [];\n private _permissionHandler: DaemonClientPermissionHandler | null = null;\n private _askUserHandler: DaemonClientAskUserHandler | null = null;\n\n constructor(options: DaemonClientOptions) {\n this._apiKey = options.apiKey;\n this._engine = new ProtocolEngine({\n transport: options.transport,\n serverRequestMethodMap: DAEMON_SERVER_REQUEST_METHODS,\n });\n\n this._engine.onNotification((notification) => {\n // Remap daemon.session_notification → droid.session_notification so\n // MessageBridge/StreamStateTracker (which validate against the exec-mode\n // SessionNotificationSchema) can parse the inner notification payload.\n const normalized =\n notification['method'] === 'daemon.session_notification'\n ? { ...notification, method: 'droid.session_notification' }\n : notification;\n dispatchNotification(normalized, [...this._notificationListeners]);\n });\n\n this._engine.setPermissionHandler((params) =>\n this._dispatchPermissionRequest(params)\n );\n this._engine.setAskUserHandler((params) =>\n this._dispatchAskUserRequest(params)\n );\n }\n\n get sessionId(): string | null {\n return this._sessionId;\n }\n\n get isConnected(): boolean {\n return !this._closed && this._engine.isHealthy;\n }\n\n async initializeSession(\n params: InitializeSessionRequestParams\n ): Promise<InitializeSessionResult> {\n this._ensureNotClosed();\n\n const result = await this._rpc(\n DaemonMethod.INITIALIZE_SESSION,\n { ...params, token: this._apiKey },\n InitializeSessionResultSchema,\n SESSION_INIT_TIMEOUT\n );\n this._sessionId = result.sessionId;\n return result;\n }\n\n async loadSession(\n params: LoadSessionRequestParams\n ): Promise<LoadSessionResult> {\n this._ensureNotClosed();\n\n const result = await this._rpc(\n DaemonMethod.LOAD_SESSION,\n { ...params, token: this._apiKey },\n LoadSessionResultSchema,\n SESSION_INIT_TIMEOUT\n );\n this._sessionId = params.sessionId;\n return result;\n }\n\n async addUserMessage(\n params: Pick<AddUserMessageRequestParams, 'text'> &\n Partial<\n Pick<\n AddUserMessageRequestParams,\n 'images' | 'files' | 'messageId' | 'outputFormat'\n >\n >\n ): Promise<AddUserMessageResult> {\n return this._sessionRpc(\n DaemonMethod.ADD_USER_MESSAGE,\n params,\n AddUserMessageResultSchema\n );\n }\n\n async interruptSession(): Promise<InterruptSessionResult> {\n return this._sessionRpc(\n DaemonMethod.INTERRUPT_SESSION,\n {},\n InterruptSessionResultSchema\n );\n }\n\n async closeSession(\n params: CloseSessionRequestParams = {}\n ): Promise<CloseSessionResult> {\n return this._sessionRpc(\n DaemonMethod.CLOSE_SESSION,\n params,\n CloseSessionResultSchema\n );\n }\n\n async updateSessionSettings(\n params: Partial<UpdateSessionSettingsRequestParams>\n ): Promise<UpdateSessionSettingsResult> {\n return this._sessionRpc(\n DaemonMethod.UPDATE_SESSION_SETTINGS,\n params,\n UpdateSessionSettingsResultSchema\n );\n }\n\n async compactSession(\n params: CompactSessionRequestParams = {}\n ): Promise<CompactSessionResult> {\n return this._sessionRpc(\n DaemonMethod.COMPACT_SESSION,\n params,\n CompactSessionResultSchema,\n COMPACTION_TIMEOUT\n );\n }\n\n async forkSession(): Promise<ForkSessionResult> {\n return this._sessionRpc(\n DaemonMethod.FORK_SESSION,\n {},\n ForkSessionResultSchema\n );\n }\n\n async getContextBreakdown(): Promise<ContextBreakdownResult> {\n return this._sessionRpc(\n DaemonMethod.GET_CONTEXT_STATS,\n {},\n ContextBreakdownResultSchema\n );\n }\n\n async renameSession(\n params: RenameSessionRequestParams\n ): Promise<RenameSessionResult> {\n return this._sessionRpc(\n DaemonMethod.RENAME_SESSION,\n params,\n RenameSessionResultSchema\n );\n }\n\n async getRewindInfo(\n params: GetRewindInfoRequestParams\n ): Promise<GetRewindInfoResult> {\n return this._sessionRpc(\n DaemonMethod.GET_REWIND_INFO,\n params,\n GetRewindInfoResultSchema,\n REWIND_TIMEOUT\n );\n }\n\n async executeRewind(\n params: ExecuteRewindRequestParams\n ): Promise<ExecuteRewindResult> {\n return this._sessionRpc(\n DaemonMethod.EXECUTE_REWIND,\n params,\n ExecuteRewindResultSchema,\n REWIND_TIMEOUT\n );\n }\n\n async addMcpServer(\n params: AddMcpServerRequestParams\n ): Promise<AddMcpServerResult> {\n return this._sessionRpc(\n DaemonMethod.ADD_MCP_SERVER,\n params,\n AddMcpServerResultSchema\n );\n }\n\n async removeMcpServer(\n params: RemoveMcpServerRequestParams\n ): Promise<RemoveMcpServerResult> {\n return this._sessionRpc(\n DaemonMethod.REMOVE_MCP_SERVER,\n params,\n RemoveMcpServerResultSchema\n );\n }\n\n async toggleMcpServer(\n params: ToggleMcpServerRequestParams\n ): Promise<ToggleMcpServerResult> {\n return this._sessionRpc(\n DaemonMethod.TOGGLE_MCP_SERVER,\n params,\n ToggleMcpServerResultSchema\n );\n }\n\n async listMcpServers(): Promise<ListMcpServersResult> {\n return this._sessionRpc(\n DaemonMethod.LIST_MCP_SERVERS,\n {},\n ListMcpServersResultSchema\n );\n }\n\n async listMcpTools(): Promise<ListMcpToolsResult> {\n return this._sessionRpc(\n DaemonMethod.LIST_MCP_TOOLS,\n {},\n ListMcpToolsResultSchema\n );\n }\n\n async authenticateMcpServer(\n params: AuthenticateMcpServerRequestParams\n ): Promise<AuthenticateMcpServerResult> {\n return this._sessionRpc(\n DaemonMethod.AUTHENTICATE_MCP_SERVER,\n params,\n AuthenticateMcpServerResultSchema\n );\n }\n\n async listSkills(): Promise<ListSkillsResult> {\n return this._sessionRpc(\n DaemonMethod.LIST_SKILLS,\n {},\n ListSkillsResultSchema\n );\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n const entry: NotificationListener = { callback, filter };\n this._notificationListeners.push(entry);\n\n let unsubscribed = false;\n return () => {\n if (!unsubscribed) {\n unsubscribed = true;\n const idx = this._notificationListeners.indexOf(entry);\n if (idx !== -1) {\n this._notificationListeners.splice(idx, 1);\n }\n }\n };\n }\n\n setPermissionHandler(handler: DaemonClientPermissionHandler): void {\n this._permissionHandler = handler;\n }\n\n setAskUserHandler(handler: DaemonClientAskUserHandler): void {\n this._askUserHandler = handler;\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this._notificationListeners.length = 0;\n this._permissionHandler = null;\n this._askUserHandler = null;\n await this._engine.close();\n }\n\n private async _rpc<T extends z.ZodTypeAny>(\n method: string,\n params: Record<string, unknown>,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n const raw = await this._engine.sendRequest(method, params, timeout);\n return schema.parse(raw);\n }\n\n private async _sessionRpc<T extends z.ZodTypeAny>(\n method: string,\n params: Record<string, unknown>,\n schema: T,\n timeout?: number\n ): Promise<z.output<T>> {\n this._ensureNotClosed();\n this._ensureSession();\n return this._rpc(\n method,\n { sessionId: this._sessionId, ...params },\n schema,\n timeout\n );\n }\n\n private _dispatchPermissionRequest(\n params: RequestPermissionRequestParams\n ): RequestPermissionHandlerResult | Promise<RequestPermissionHandlerResult> {\n const handler = this._permissionHandler;\n if (handler == null) {\n return ToolConfirmationOutcome.Cancel;\n }\n return handler(params);\n }\n\n private _dispatchAskUserRequest(\n params: AskUserRequestParams\n ): AskUserResult | Promise<AskUserResult> {\n const handler = this._askUserHandler;\n if (handler == null) {\n return { cancelled: true, answers: [] };\n }\n return handler(params);\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Daemon client has been closed. Create a new DaemonClient instance.'\n );\n }\n }\n\n private _ensureSession(): void {\n if (this._sessionId == null) {\n throw new SessionError(\n 'No active session. Call initializeSession or loadSession first.'\n );\n }\n }\n}\n","import { type ChildProcess, spawn } from 'node:child_process';\nimport * as fs from 'node:fs';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\n\nimport { ConnectionError } from '../errors.js';\n\nconst SOCKET_TIMEOUT_MS = 2_000;\nconst STARTUP_POLL_INTERVAL_MS = 250;\nconst STARTUP_TIMEOUT_MS = 30_000;\nconst MAX_STARTUP_ATTEMPTS = 3;\n\nconst FACTORY_DIR = '.factory';\n\nconst DEFAULT_PORT = 37643;\nconst DAEMON_PORT_FILE = 'daemon.port';\nconst DEFAULT_HOST = '127.0.0.1';\n\ntype DaemonStartupResult = 'ready' | 'timeout' | 'exited';\n\nlet spawnedDaemonProcess: ChildProcess | null = null;\nlet daemonTarget: { host: string; port: number } | null = null;\nlet daemonEnsureInflight: Promise<{ port: number }> | null = null;\n\nfunction getFactoryHome(): string {\n return process.env.FACTORY_HOME_OVERRIDE || os.homedir();\n}\n\nfunction getFactoryDirName(): string {\n return FACTORY_DIR;\n}\n\nfunction getFactoryDir(): string {\n return path.join(getFactoryHome(), getFactoryDirName());\n}\n\nfunction getSdkDir(): string {\n return path.join(getFactoryDir(), 'sdk');\n}\n\nfunction getDefaultDaemonPort(): number {\n return DEFAULT_PORT;\n}\n\nfunction resolveExecPath(): string {\n const override = process.env.FACTORY_DROID_BINARY?.trim();\n if (override && override.length > 0) {\n if (override.includes('/') || override.includes('\\\\')) {\n // Absolute or relative path — validate it exists before using\n try {\n fs.accessSync(override, fs.constants.X_OK);\n return override;\n } catch {\n // Fall through to default\n }\n } else {\n // Bare command name — return as-is and let spawn() resolve via PATH\n return override;\n }\n }\n return 'droid';\n}\n\nasync function allocatePort(): Promise<number> {\n return new Promise((resolve, reject) => {\n const server = net.createServer();\n server.once('error', reject);\n server.listen(0, DEFAULT_HOST, () => {\n const address = server.address();\n if (!address || typeof address === 'string') {\n server.close();\n reject(new Error('Failed to determine dynamic port'));\n return;\n }\n const port = address.port;\n server.close((err) => {\n if (err) reject(err);\n else resolve(port);\n });\n });\n });\n}\n\nasync function isDaemonReachable(port: number): Promise<boolean> {\n return new Promise((resolve) => {\n const socket = net.createConnection({ host: DEFAULT_HOST, port });\n const cleanup = () => {\n socket.removeAllListeners();\n socket.destroy();\n };\n const fail = () => {\n cleanup();\n resolve(false);\n };\n socket.setTimeout(SOCKET_TIMEOUT_MS, fail);\n socket.once('error', fail);\n socket.once('connect', () => {\n cleanup();\n resolve(true);\n });\n });\n}\n\nasync function waitForDaemonReady(\n child: ChildProcess,\n port: number,\n timeoutMs: number = STARTUP_TIMEOUT_MS\n): Promise<DaemonStartupResult> {\n return new Promise((resolve) => {\n let settled = false;\n let exited = false;\n const deadline = Date.now() + timeoutMs;\n\n const settle = (result: DaemonStartupResult) => {\n if (settled) return;\n settled = true;\n child.removeListener('exit', onExit);\n child.removeListener('error', onExit);\n resolve(result);\n };\n\n const onExit = () => {\n exited = true;\n settle('exited');\n };\n\n child.once('exit', onExit);\n child.once('error', onExit);\n\n const poll = async () => {\n while (!exited && !settled) {\n if (await isDaemonReachable(port)) {\n settle('ready');\n return;\n }\n if (Date.now() >= deadline) {\n settle('timeout');\n return;\n }\n await new Promise<void>((r) => setTimeout(r, STARTUP_POLL_INTERVAL_MS));\n }\n };\n\n void poll();\n });\n}\n\nfunction readPortFile(): number | null {\n try {\n const portPath = path.join(getSdkDir(), DAEMON_PORT_FILE);\n const content = fs.readFileSync(portPath, 'utf-8').trim();\n const port = parseInt(content, 10);\n if (Number.isFinite(port) && port > 0 && port < 65536) {\n return port;\n }\n return null;\n } catch {\n return null;\n }\n}\n\nfunction writePortFile(port: number): void {\n try {\n const sdkDir = getSdkDir();\n fs.mkdirSync(sdkDir, { recursive: true });\n fs.writeFileSync(path.join(sdkDir, DAEMON_PORT_FILE), String(port), {\n mode: 0o600,\n });\n } catch {\n // Non-fatal\n }\n}\n\nfunction cacheTarget(port: number): { port: number } {\n daemonTarget = { host: DEFAULT_HOST, port };\n return { port };\n}\n\nfunction clearSpawnedDaemonProcess(child: ChildProcess): void {\n if (spawnedDaemonProcess === child) {\n spawnedDaemonProcess = null;\n }\n}\n\nasync function spawnDaemon(\n execPath: string,\n port: number\n): Promise<DaemonStartupResult> {\n const args = ['daemon', '--host', DEFAULT_HOST, '--port', String(port)];\n\n let stderrFd: number | undefined;\n try {\n const logsDir = path.join(getSdkDir(), 'logs');\n fs.mkdirSync(logsDir, { recursive: true });\n stderrFd = fs.openSync(path.join(logsDir, 'daemon-stderr.log'), 'a');\n } catch {\n // Non-fatal\n }\n\n const child = spawn(execPath, args, {\n detached: true,\n stdio: ['ignore', 'ignore', stderrFd ?? 'ignore'],\n cwd: os.homedir(),\n env: { ...process.env },\n });\n\n if (stderrFd !== undefined) {\n try {\n fs.closeSync(stderrFd);\n } catch {\n // Ignore\n }\n }\n\n spawnedDaemonProcess = child;\n\n // Allow the Node process to exit without waiting for the daemon.\n // The daemon is a long-lived server that should outlive the SDK.\n child.unref();\n\n child.once('exit', () => {\n clearSpawnedDaemonProcess(child);\n });\n\n child.on('error', () => {\n clearSpawnedDaemonProcess(child);\n });\n\n const result = await waitForDaemonReady(child, port);\n\n if (result !== 'ready') {\n clearSpawnedDaemonProcess(child);\n if (result === 'timeout') {\n try {\n child.kill('SIGTERM');\n } catch {\n // Best effort\n }\n }\n }\n\n return result;\n}\n\n/**\n * Core implementation — called at most once per inflight window.\n *\n * Discovery order:\n * 1. Well-known port (37643)\n * 2. Port file (~/.factory/sdk/daemon.port)\n * 3. Spawn new daemon (prefer well-known port, fallback to random)\n */\nasync function _ensureLocalDaemon(): Promise<{ port: number }> {\n const execPath = resolveExecPath();\n\n // 1. Probe well-known port\n const wellKnownPort = getDefaultDaemonPort();\n if (await isDaemonReachable(wellKnownPort)) {\n return cacheTarget(wellKnownPort);\n }\n\n // 2. Probe port file\n const portFilePort = readPortFile();\n if (portFilePort !== null && portFilePort !== wellKnownPort) {\n if (await isDaemonReachable(portFilePort)) {\n return cacheTarget(portFilePort);\n }\n }\n\n // 3. Spawn — first attempt on the well-known port\n const firstResult = await spawnDaemon(execPath, wellKnownPort);\n if (firstResult === 'ready') {\n writePortFile(wellKnownPort);\n return cacheTarget(wellKnownPort);\n }\n\n // Retry on random ports\n for (let attempt = 2; attempt <= MAX_STARTUP_ATTEMPTS; attempt++) {\n const port = await allocatePort();\n const result = await spawnDaemon(execPath, port);\n if (result === 'ready') {\n writePortFile(port);\n return cacheTarget(port);\n }\n }\n\n throw new ConnectionError(\n `Failed to start local droid daemon after ${MAX_STARTUP_ATTEMPTS} attempts. ` +\n 'Ensure the `droid` CLI is installed and `droid auth login` has been run.'\n );\n}\n\n/**\n * Ensure a local `droid daemon` process is running and reachable.\n *\n * Discovery order:\n * 1. Cached target from a previous call in this process\n * 2. Well-known port (37643)\n * 3. Port file (`~/.factory/sdk/daemon.port`)\n * 4. Spawn new daemon (prefer well-known port, fallback to random)\n *\n * Concurrent calls are deduplicated — all callers join the same\n * spawn attempt.\n */\nexport async function ensureLocalDaemon(): Promise<{ port: number }> {\n // Fast path: cached target still reachable\n if (daemonTarget) {\n if (await isDaemonReachable(daemonTarget.port)) {\n return { port: daemonTarget.port };\n }\n daemonTarget = null;\n }\n\n // Deduplicate concurrent calls\n if (!daemonEnsureInflight) {\n daemonEnsureInflight = _ensureLocalDaemon().finally(() => {\n daemonEnsureInflight = null;\n });\n }\n\n return daemonEnsureInflight;\n}\n\n/** Resets module-level state between tests. Not intended for production use. */\nexport function _resetDaemonStateForTesting(): void {\n daemonEnsureInflight = null;\n daemonTarget = null;\n spawnedDaemonProcess = null;\n}\n","import { ConnectionError } from '../errors.js';\nimport { streamFromClient } from '../helpers.js';\nimport type { MessageBridge, MessageOptions } from '../helpers.js';\nimport type { NotificationCallback, NotificationFilter } from '../protocol.js';\nimport type {\n AddMcpServerRequestParams,\n AddMcpServerResult,\n AuthenticateMcpServerRequestParams,\n AuthenticateMcpServerResult,\n CompactSessionRequestParams,\n CompactSessionResult,\n ExecuteRewindRequestParams,\n ExecuteRewindResult,\n ContextBreakdownResult,\n ForkSessionResult,\n GetRewindInfoRequestParams,\n GetRewindInfoResult,\n ListMcpServersResult,\n ListMcpToolsResult,\n ListSkillsResult,\n RemoveMcpServerRequestParams,\n RemoveMcpServerResult,\n RenameSessionRequestParams,\n RenameSessionResult,\n ToggleMcpServerRequestParams,\n ToggleMcpServerResult,\n UpdateSessionSettingsRequestParams,\n UpdateSessionSettingsResult,\n} from '../schemas/client.js';\nimport { DroidInteractionMode } from '../schemas/enums.js';\nimport type { DroidStreamEvent, DroidStreamMessage } from '../stream.js';\nimport type { DaemonClient } from './client.js';\nimport type { SendOptions } from './types.js';\n\nexport class DaemonSession {\n private _client: DaemonClient;\n private _sessionId: string;\n private _closed = false;\n private readonly _activeBridges = new Set<MessageBridge>();\n private readonly _cleanupCallbacks: Array<() => Promise<void> | void> = [];\n\n /** @internal */\n constructor(client: DaemonClient, sessionId: string) {\n this._client = client;\n this._sessionId = sessionId;\n }\n\n /** @internal */\n addCleanup(cleanup: () => Promise<void> | void): void {\n this._cleanupCallbacks.push(cleanup);\n }\n\n get sessionId(): string {\n return this._sessionId;\n }\n\n stream(\n prompt: string,\n options?: MessageOptions & { includePartialMessages?: false }\n ): AsyncGenerator<DroidStreamMessage, void, undefined>;\n stream(\n prompt: string,\n options: MessageOptions & { includePartialMessages: true }\n ): AsyncGenerator<DroidStreamEvent, void, undefined>;\n async *stream(\n prompt: string,\n options?: MessageOptions\n ): AsyncGenerator<DroidStreamEvent, void, undefined> {\n this._ensureNotClosed();\n yield* streamFromClient(\n this._client,\n this._sessionId,\n this._activeBridges,\n prompt,\n options\n );\n }\n\n async send(prompt: string, options?: SendOptions): Promise<void> {\n this._ensureNotClosed();\n\n await this._client.addUserMessage({\n text: prompt,\n images: options?.images,\n files: options?.files,\n outputFormat: options?.outputFormat,\n });\n }\n\n async interrupt(): Promise<void> {\n this._ensureNotClosed();\n await this._client.interruptSession();\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n for (const bridge of this._activeBridges) {\n bridge.signalDone();\n }\n\n try {\n await this._client.closeSession({ reason: 'other' }).catch(() => {});\n } finally {\n await this._client.close();\n for (const cleanup of this._cleanupCallbacks) {\n try {\n await cleanup();\n } catch {\n // Best-effort cleanup\n }\n }\n this._cleanupCallbacks.length = 0;\n }\n }\n\n async updateSettings(\n params: Partial<UpdateSessionSettingsRequestParams>\n ): Promise<UpdateSessionSettingsResult> {\n this._ensureNotClosed();\n return this._client.updateSessionSettings(params);\n }\n\n async enterSpecMode(\n params: Pick<\n UpdateSessionSettingsRequestParams,\n 'specModeModelId' | 'specModeReasoningEffort'\n > = {}\n ): Promise<UpdateSessionSettingsResult> {\n this._ensureNotClosed();\n return this._client.updateSessionSettings({\n interactionMode: DroidInteractionMode.Spec,\n ...params,\n });\n }\n\n async compactSession(\n params?: CompactSessionRequestParams\n ): Promise<CompactSessionResult> {\n this._ensureNotClosed();\n return this._client.compactSession(params ?? {});\n }\n\n async forkSession(): Promise<ForkSessionResult> {\n this._ensureNotClosed();\n return this._client.forkSession();\n }\n\n async getContextBreakdown(): Promise<ContextBreakdownResult> {\n this._ensureNotClosed();\n return this._client.getContextBreakdown();\n }\n\n async renameSession(\n params: RenameSessionRequestParams\n ): Promise<RenameSessionResult> {\n this._ensureNotClosed();\n return this._client.renameSession(params);\n }\n\n async getRewindInfo(\n params: GetRewindInfoRequestParams\n ): Promise<GetRewindInfoResult> {\n this._ensureNotClosed();\n return this._client.getRewindInfo(params);\n }\n\n async executeRewind(\n params: ExecuteRewindRequestParams\n ): Promise<ExecuteRewindResult> {\n this._ensureNotClosed();\n return this._client.executeRewind(params);\n }\n\n async addMcpServer(\n params: AddMcpServerRequestParams\n ): Promise<AddMcpServerResult> {\n this._ensureNotClosed();\n return this._client.addMcpServer(params);\n }\n\n async removeMcpServer(\n params: RemoveMcpServerRequestParams\n ): Promise<RemoveMcpServerResult> {\n this._ensureNotClosed();\n return this._client.removeMcpServer(params);\n }\n\n async toggleMcpServer(\n params: ToggleMcpServerRequestParams\n ): Promise<ToggleMcpServerResult> {\n this._ensureNotClosed();\n return this._client.toggleMcpServer(params);\n }\n\n async listMcpServers(): Promise<ListMcpServersResult> {\n this._ensureNotClosed();\n return this._client.listMcpServers();\n }\n\n async listMcpTools(): Promise<ListMcpToolsResult> {\n this._ensureNotClosed();\n return this._client.listMcpTools();\n }\n\n async authenticateMcpServer(\n params: AuthenticateMcpServerRequestParams\n ): Promise<AuthenticateMcpServerResult> {\n this._ensureNotClosed();\n return this._client.authenticateMcpServer(params);\n }\n\n async listSkills(): Promise<ListSkillsResult> {\n this._ensureNotClosed();\n return this._client.listSkills();\n }\n\n onNotification(\n callback: NotificationCallback,\n filter?: NotificationFilter\n ): () => void {\n return this._client.onNotification(callback, filter);\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Daemon session has been closed. Create a new session to continue.'\n );\n }\n }\n}\n","import WebSocket from 'ws';\n\nimport { ConnectionError } from '../errors.js';\nimport type {\n DroidClientTransport,\n ErrorCallback,\n MessageCallback,\n} from '../types.js';\nimport { isRecord } from '../utils.js';\nimport { DEFAULT_WS_CONFIG } from './types.js';\nimport type { WebSocketTransportOptions } from './types.js';\n\nexport class WebSocketTransport implements DroidClientTransport {\n private readonly maxConnectRetries: number;\n private readonly initialRetryDelayMs: number;\n private readonly maxRetryDelayMs: number;\n private readonly connectionTimeoutMs: number;\n\n private ws: WebSocket | null = null;\n private messageHandler: MessageCallback | null = null;\n private errorHandler: ErrorCallback | null = null;\n private _isConnected = false;\n private isClosing = false;\n\n constructor(options: WebSocketTransportOptions = {}) {\n this.maxConnectRetries =\n options.maxConnectRetries ?? DEFAULT_WS_CONFIG.maxConnectRetries;\n this.initialRetryDelayMs =\n options.initialRetryDelayMs ?? DEFAULT_WS_CONFIG.initialRetryDelayMs;\n this.maxRetryDelayMs =\n options.maxRetryDelayMs ?? DEFAULT_WS_CONFIG.maxRetryDelayMs;\n this.connectionTimeoutMs =\n options.connectionTimeoutMs ?? DEFAULT_WS_CONFIG.connectionTimeoutMs;\n }\n\n get isConnected(): boolean {\n return this._isConnected;\n }\n\n async connect(url?: string): Promise<void> {\n if (!url) {\n throw new ConnectionError('WebSocket URL is required');\n }\n\n if (this._isConnected) {\n throw new ConnectionError('Transport already connected');\n }\n\n this.isClosing = false;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= this.maxConnectRetries; attempt++) {\n try {\n await this._doConnect(url);\n return;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt < this.maxConnectRetries) {\n const delay = Math.min(\n this.initialRetryDelayMs * 2 ** attempt,\n this.maxRetryDelayMs\n );\n await new Promise<void>((resolve) => setTimeout(resolve, delay));\n }\n }\n }\n\n throw lastError;\n }\n\n send(message: Record<string, unknown>): void {\n if (!this._isConnected || !this.ws) {\n throw new ConnectionError('WebSocket transport not connected');\n }\n\n try {\n this.ws.send(JSON.stringify(message));\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n throw new ConnectionError(`Failed to send WebSocket message: ${msg}`);\n }\n }\n\n onMessage(callback: MessageCallback): void {\n this.messageHandler = callback;\n }\n\n onError(callback: ErrorCallback): void {\n this.errorHandler = callback;\n }\n\n async close(): Promise<void> {\n if (this.isClosing) {\n return;\n }\n\n this.isClosing = true;\n this._isConnected = false;\n\n const ws = this.ws;\n this.ws = null;\n\n if (ws && ws.readyState === WebSocket.OPEN) {\n await new Promise<void>((resolve) => {\n ws.once('close', () => resolve());\n ws.close(1000, 'Client disconnect');\n\n // Safety timeout — don't hang forever waiting for close\n setTimeout(() => resolve(), 5_000);\n });\n }\n\n this.isClosing = false;\n }\n\n private async _doConnect(url: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n let settled = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const cleanup = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n const ws = new WebSocket(url);\n\n const handleOpen = () => {\n if (settled) return;\n settled = true;\n cleanup();\n\n this.ws = ws;\n this._isConnected = true;\n this._setupOngoingHandlers(ws);\n resolve();\n };\n\n const handleError = (error: Error) => {\n if (settled) return;\n settled = true;\n cleanup();\n\n try {\n ws.close();\n } catch {\n // Best-effort cleanup\n }\n\n reject(\n new ConnectionError(`WebSocket connection failed: ${error.message}`)\n );\n };\n\n const handleClose = (code: number, reason: Buffer) => {\n if (settled) return;\n settled = true;\n cleanup();\n\n reject(\n new ConnectionError(\n `WebSocket closed before opening (code: ${code}, reason: ${reason.toString()})`\n )\n );\n };\n\n ws.once('open', handleOpen);\n ws.once('error', handleError);\n ws.once('close', handleClose);\n\n timeoutId = setTimeout(() => {\n if (settled) return;\n settled = true;\n\n try {\n ws.close();\n } catch {\n // Best-effort cleanup\n }\n\n reject(\n new ConnectionError(\n `WebSocket connection timeout after ${this.connectionTimeoutMs}ms: ${url}`\n )\n );\n }, this.connectionTimeoutMs);\n });\n }\n\n private _setupOngoingHandlers(ws: WebSocket): void {\n ws.on('message', (data: WebSocket.Data) => {\n if (!this.messageHandler) return;\n\n const text = typeof data === 'string' ? data : data.toString();\n try {\n const parsed: unknown = JSON.parse(text);\n if (isRecord(parsed)) {\n this.messageHandler(parsed);\n }\n } catch {\n // Malformed JSON — skip silently\n }\n });\n\n ws.on('error', (error: Error) => {\n if (!this.isClosing && this.errorHandler) {\n this.errorHandler(\n new ConnectionError(`WebSocket error: ${error.message}`)\n );\n }\n });\n\n ws.on('close', (code: number, reason: Buffer) => {\n this._isConnected = false;\n this.ws = null;\n\n if (!this.isClosing && this.errorHandler) {\n this.errorHandler(\n new ConnectionError(\n `WebSocket closed (code: ${code}, reason: ${reason.toString()})`\n )\n );\n }\n });\n }\n}\n","import type {\n ClientAskUserHandler,\n ClientPermissionHandler,\n} from '../client.js';\nimport type { DroidMcpServerConfig } from '../mcp.js';\nimport type {\n OutputFormat,\n SessionSource,\n SessionTag,\n} from '../schemas/client.js';\nimport type {\n AutonomyLevel,\n DroidInteractionMode,\n ReasoningEffort,\n} from '../schemas/enums.js';\nimport type { Base64ImageSource, DocumentSource } from '../schemas/messages.js';\nimport type { ToolSelectionOverrides } from '../schemas/shared.js';\n\nexport enum MachineType {\n Local = 'local',\n Computer = 'computer',\n}\n\nexport type SDKMachineConfig =\n | { type: MachineType.Local }\n | { type: MachineType.Computer; computerId: string };\n\nexport interface ConnectDaemonOptions {\n /** Factory API key for authentication. */\n apiKey: string;\n\n /** Machine to connect to. Defaults to local daemon if omitted. */\n machine?: SDKMachineConfig;\n\n /** Direct WebSocket URL. Overrides machine-based URL resolution. */\n url?: string;\n\n /** Connection retry budget for the connect+authenticate cycle. */\n maxRetries?: number;\n\n /** Local daemon WebSocket port. Default: 37643. */\n daemonPort?: number;\n\n /** Factory relay base URL for computer connections. Default: wss://relay.factory.ai */\n relayBaseUrl?: string;\n\n /** Factory API base URL. Default: https://api.factory.ai */\n baseUrl?: string;\n}\n\nexport interface DaemonSessionOptions extends ToolSelectionOverrides {\n cwd?: string;\n modelId?: string;\n autonomyLevel?: AutonomyLevel;\n interactionMode?: DroidInteractionMode;\n reasoningEffort?: ReasoningEffort;\n specModeModelId?: string;\n specModeReasoningEffort?: ReasoningEffort;\n mcpServers?: DroidMcpServerConfig[];\n tags?: SessionTag[];\n\n /** Permission handler for tool confirmations. */\n permissionHandler?: ClientPermissionHandler;\n\n /** Handler for ask-user requests from the agent. */\n askUserHandler?: ClientAskUserHandler;\n\n /** Where this session was created from. Used for attribution. */\n sessionSource?: SessionSource;\n}\n\nexport interface DaemonResumeOptions {\n /** Permission handler for tool confirmations. */\n permissionHandler?: ClientPermissionHandler;\n\n /** Handler for ask-user requests from the agent. */\n askUserHandler?: ClientAskUserHandler;\n\n /** MCP servers to attach to the resumed session. */\n mcpServers?: DroidMcpServerConfig[];\n}\n\nexport interface SendOptions {\n /** Base64-encoded image attachments. */\n images?: Base64ImageSource[];\n\n /** Document/file attachments. */\n files?: DocumentSource[];\n\n /** Structured output request. */\n outputFormat?: OutputFormat;\n}\n\nexport interface WebSocketTransportOptions {\n /** Max connection retries. Default: 5. */\n maxConnectRetries?: number;\n\n /** Initial retry delay in ms. Default: 500. */\n initialRetryDelayMs?: number;\n\n /** Max retry delay in ms. Default: 5000. */\n maxRetryDelayMs?: number;\n\n /** Connection timeout in ms. Default: 5000. */\n connectionTimeoutMs?: number;\n}\n\n/** Default daemon WebSocket port. */\nexport const DEFAULT_DAEMON_PORT = 37643;\n\n/** Default Factory relay base URL. */\nexport const DEFAULT_RELAY_BASE_URL = 'wss://relay.factory.ai';\n\n/** Default WebSocket connection config. */\nexport const DEFAULT_WS_CONFIG: Required<WebSocketTransportOptions> = {\n maxConnectRetries: 5,\n initialRetryDelayMs: 500,\n maxRetryDelayMs: 5000,\n connectionTimeoutMs: 5000,\n};\n\n/** WebSocket config overrides for computer connections (longer timeouts). */\nexport const COMPUTER_WS_CONFIG: Partial<WebSocketTransportOptions> = {\n connectionTimeoutMs: 45_000,\n maxConnectRetries: 10,\n initialRetryDelayMs: 2_000,\n maxRetryDelayMs: 10_000,\n};\n","import { ConnectionError } from '../errors.js';\nimport { buildInitParams } from '../helpers.js';\nimport { startSdkMcpServers } from '../mcp.js';\nimport {\n FACTORY_PROTOCOL_VERSION,\n JSONRPC_VERSION,\n LEGACY_FACTORY_API_VERSION,\n} from '../schemas/constants.js';\nimport { JsonRpcMessageType } from '../schemas/enums.js';\nimport type { JsonRpcRequest } from '../schemas/shared.js';\nimport type {\n DroidClientTransport,\n ErrorCallback,\n MessageCallback,\n} from '../types.js';\nimport { isRecord } from '../utils.js';\nimport { DaemonClient } from './client.js';\nimport { ensureLocalDaemon } from './local.js';\nimport { DaemonSession } from './session.js';\nimport { WebSocketTransport } from './transport.js';\nimport {\n COMPUTER_WS_CONFIG,\n DEFAULT_DAEMON_PORT,\n DEFAULT_RELAY_BASE_URL,\n DEFAULT_WS_CONFIG,\n MachineType,\n} from './types.js';\nimport type {\n ConnectDaemonOptions,\n DaemonResumeOptions,\n DaemonSessionOptions,\n SDKMachineConfig,\n} from './types.js';\n\nconst DAEMON_AUTHENTICATE_METHOD = 'daemon.authenticate';\nconst DAEMON_AUTHENTICATE_TIMEOUT = 30_000;\nconst SDK_CALLER = 'droid-sdk';\n\ninterface ResolvedConnectOptions extends ConnectDaemonOptions {\n _localPort?: number;\n}\n\nexport function resolveWebSocketUrl(\n options: ConnectDaemonOptions & { _localPort?: number }\n): string {\n if (options.url) {\n return options.url;\n }\n\n const machine = options.machine;\n\n if (!machine || machine.type === MachineType.Local) {\n const port =\n options._localPort ?? options.daemonPort ?? DEFAULT_DAEMON_PORT;\n return `ws://127.0.0.1:${port}`;\n }\n\n if (machine.type === MachineType.Computer) {\n const relayBase = options.relayBaseUrl ?? DEFAULT_RELAY_BASE_URL;\n return `${relayBase}/v0/computer/${machine.computerId}/client`;\n }\n\n // Exhaustive check — should never be reached\n const _exhaustive: never = machine;\n throw new ConnectionError(`Unsupported machine type: ${String(_exhaustive)}`);\n}\n\nfunction getWebSocketConfig(\n machine?: SDKMachineConfig\n): Required<import('./types.js').WebSocketTransportOptions> {\n if (machine?.type === MachineType.Computer) {\n return { ...DEFAULT_WS_CONFIG, ...COMPUTER_WS_CONFIG };\n }\n if (!machine || machine.type === MachineType.Local) {\n return { ...DEFAULT_WS_CONFIG, connectionTimeoutMs: 10_000 };\n }\n return { ...DEFAULT_WS_CONFIG };\n}\n\ninterface MultiplexedView {\n messageCallback: MessageCallback | null;\n errorCallback: ErrorCallback | null;\n pendingRequestIds: Set<string>;\n sessionId: string | null;\n}\n\n/**\n * Multiplexes a single WebSocketTransport across multiple DroidClient\n * instances. Each client gets its own \"view\" of the transport:\n * - Responses are routed to the view that sent the matching request\n * - Notifications are routed by `params.sessionId` to the matching view\n * - Errors are broadcast to all registered views\n * - send() writes to the shared transport and tracks request IDs\n * - close() is a no-op (only DaemonConnection closes the real transport)\n */\nclass SharedTransportMultiplexer {\n private readonly _views = new Set<MultiplexedView>();\n\n constructor(private readonly _inner: WebSocketTransport) {\n this._inner.onMessage((message) => {\n this._routeMessage(message);\n });\n\n this._inner.onError((error) => {\n for (const view of this._views) {\n if (view.errorCallback) {\n try {\n view.errorCallback(error);\n } catch {\n // Don't let one handler crash others\n }\n }\n }\n });\n }\n\n createView(): DroidClientTransport {\n const inner = this._inner;\n const viewState: MultiplexedView = {\n messageCallback: null,\n errorCallback: null,\n pendingRequestIds: new Set(),\n sessionId: null,\n };\n this._views.add(viewState);\n\n const view: DroidClientTransport = {\n send: (message: Record<string, unknown>) => {\n // Track request IDs for response routing\n if (\n message['type'] === 'request' &&\n typeof message['id'] === 'string'\n ) {\n viewState.pendingRequestIds.add(message['id']);\n }\n // Track sessionId from init/load responses\n inner.send(message);\n },\n\n onMessage: (callback: MessageCallback) => {\n viewState.messageCallback = callback;\n },\n\n onError: (callback: ErrorCallback) => {\n viewState.errorCallback = callback;\n },\n\n close: async () => {\n viewState.messageCallback = null;\n viewState.errorCallback = null;\n viewState.pendingRequestIds.clear();\n this._views.delete(viewState);\n },\n\n get isConnected(): boolean {\n return inner.isConnected;\n },\n };\n\n return view;\n }\n\n private _routeMessage(message: Record<string, unknown>): void {\n const messageType = message['type'];\n const messageId = message['id'];\n\n // Responses: route to the view that sent the matching request\n if (messageType === 'response' && typeof messageId === 'string') {\n for (const view of this._views) {\n if (view.pendingRequestIds.has(messageId)) {\n view.pendingRequestIds.delete(messageId);\n\n // Learn sessionId from init/load response results\n const result = message['result'];\n if (isRecord(result) && typeof result['sessionId'] === 'string') {\n view.sessionId = result['sessionId'];\n }\n\n if (view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n }\n return;\n }\n }\n // No matching view — drop silently\n return;\n }\n\n // Notifications: route by params.sessionId\n if (messageType === 'notification') {\n const params = message['params'];\n const sessionId =\n isRecord(params) && typeof params['sessionId'] === 'string'\n ? params['sessionId']\n : null;\n\n if (sessionId) {\n for (const view of this._views) {\n if (view.sessionId === sessionId && view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n return;\n }\n }\n }\n\n // No sessionId or no matching view — broadcast to all\n for (const view of this._views) {\n if (view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n }\n }\n return;\n }\n\n // Server requests (daemon.request_permission, daemon.ask_user):\n // route by params.sessionId\n if (messageType === 'request') {\n const params = message['params'];\n const sessionId =\n isRecord(params) && typeof params['sessionId'] === 'string'\n ? params['sessionId']\n : null;\n\n if (sessionId) {\n for (const view of this._views) {\n if (view.sessionId === sessionId && view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n return;\n }\n }\n }\n\n // Broadcast if no matching session (shouldn't happen in practice)\n for (const view of this._views) {\n if (view.messageCallback) {\n try {\n view.messageCallback(message);\n } catch {\n // Don't crash the router\n }\n }\n }\n }\n }\n}\n\n/**\n * Authenticate with the daemon over a freshly connected transport.\n *\n * This runs before any DroidClient/ProtocolEngine is attached, so we\n * do the JSON-RPC handshake manually. We temporarily install a message\n * handler, send the authenticate request, wait for the matching\n * response, then clear the handler so the ProtocolEngine can take over.\n */\nasync function authenticate(\n transport: WebSocketTransport,\n options: ConnectDaemonOptions\n): Promise<void> {\n const requestId = crypto.randomUUID();\n\n const envelope: JsonRpcRequest = {\n jsonrpc: JSONRPC_VERSION,\n factoryApiVersion: LEGACY_FACTORY_API_VERSION,\n factoryProtocolVersion: FACTORY_PROTOCOL_VERSION,\n type: JsonRpcMessageType.Request,\n id: requestId,\n method: DAEMON_AUTHENTICATE_METHOD,\n params: {\n apiKey: options.apiKey,\n caller: SDK_CALLER,\n },\n };\n\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n // Clear handler so ProtocolEngine can install its own\n transport.onMessage(() => {});\n reject(\n new ConnectionError(\n `Daemon authentication timed out after ${DAEMON_AUTHENTICATE_TIMEOUT}ms`\n )\n );\n }, DAEMON_AUTHENTICATE_TIMEOUT);\n\n transport.onMessage((message: Record<string, unknown>) => {\n // Only handle the auth response\n if (message['id'] !== requestId) {\n return;\n }\n\n clearTimeout(timer);\n // Clear handler so ProtocolEngine can install its own\n transport.onMessage(() => {});\n\n if (message['error']) {\n const error = message['error'];\n const errorMessage =\n error && typeof error === 'object' && 'message' in error\n ? String(error.message)\n : 'unknown error';\n reject(\n new ConnectionError(`Daemon authentication failed: ${errorMessage}`)\n );\n return;\n }\n\n resolve();\n });\n\n transport.send(envelope);\n });\n}\n\nexport class DaemonConnection {\n private readonly _transport: WebSocketTransport;\n private readonly _multiplexer: SharedTransportMultiplexer;\n private readonly _apiKey: string;\n private _closed = false;\n\n /** @internal */\n constructor(transport: WebSocketTransport, apiKey: string) {\n this._transport = transport;\n this._multiplexer = new SharedTransportMultiplexer(transport);\n this._apiKey = apiKey;\n }\n\n async createSession(\n options: DaemonSessionOptions = {}\n ): Promise<DaemonSession> {\n this._ensureNotClosed();\n\n const view = this._multiplexer.createView();\n const client = new DaemonClient({\n transport: view,\n apiKey: this._apiKey,\n });\n if (options.permissionHandler) {\n client.setPermissionHandler(options.permissionHandler);\n }\n if (options.askUserHandler) {\n client.setAskUserHandler(options.askUserHandler);\n }\n\n let sdkMcpServers:\n | Awaited<ReturnType<typeof startSdkMcpServers>>\n | undefined;\n\n try {\n sdkMcpServers = await startSdkMcpServers(options.mcpServers);\n const initParams = buildInitParams({\n ...options,\n mcpServers: sdkMcpServers.mcpServers,\n });\n\n const initResult = await client.initializeSession(initParams);\n const session = new DaemonSession(client, initResult.sessionId);\n if (sdkMcpServers) {\n session.addCleanup(sdkMcpServers.cleanup);\n }\n return session;\n } catch (error) {\n await sdkMcpServers?.cleanup();\n await client.close();\n throw error;\n }\n }\n\n async resumeSession(\n sessionId: string,\n options: DaemonResumeOptions = {}\n ): Promise<DaemonSession> {\n this._ensureNotClosed();\n\n const view = this._multiplexer.createView();\n const client = new DaemonClient({\n transport: view,\n apiKey: this._apiKey,\n });\n if (options.permissionHandler) {\n client.setPermissionHandler(options.permissionHandler);\n }\n if (options.askUserHandler) {\n client.setAskUserHandler(options.askUserHandler);\n }\n\n let sdkMcpServers:\n | Awaited<ReturnType<typeof startSdkMcpServers>>\n | undefined;\n\n try {\n sdkMcpServers = await startSdkMcpServers(options.mcpServers);\n await client.loadSession({\n sessionId,\n mcpServers: sdkMcpServers.mcpServers,\n });\n const session = new DaemonSession(client, sessionId);\n if (sdkMcpServers) {\n session.addCleanup(sdkMcpServers.cleanup);\n }\n return session;\n } catch (error) {\n await sdkMcpServers?.cleanup();\n await client.close();\n throw error;\n }\n }\n\n async interruptSession(sessionId: string): Promise<void> {\n this._ensureNotClosed();\n\n const view = this._multiplexer.createView();\n const client = new DaemonClient({\n transport: view,\n apiKey: this._apiKey,\n });\n try {\n await client.loadSession({ sessionId });\n await client.interruptSession();\n } finally {\n await client.close();\n }\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n await this._transport.close();\n }\n\n private _ensureNotClosed(): void {\n if (this._closed) {\n throw new ConnectionError(\n 'Daemon connection has been closed. Call connectDaemon() to create a new connection.'\n );\n }\n }\n}\n\nexport async function connectDaemon(\n options: ConnectDaemonOptions\n): Promise<DaemonConnection> {\n const isLocal =\n !options.url &&\n (!options.machine || options.machine.type === MachineType.Local);\n\n // For local connections, spawn/discover the daemon\n let resolvedOptions: ResolvedConnectOptions = options;\n if (isLocal) {\n const { port } = await ensureLocalDaemon();\n resolvedOptions = { ...options, _localPort: port };\n }\n\n const url = resolveWebSocketUrl(resolvedOptions);\n const wsConfig = getWebSocketConfig(resolvedOptions.machine);\n\n const transport = new WebSocketTransport(wsConfig);\n\n const apiKey = resolvedOptions.apiKey;\n\n const maxRetries = resolvedOptions.maxRetries ?? 0;\n\n try {\n // Connect with optional retry budget\n if (maxRetries > 0) {\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n await transport.connect(url);\n await authenticate(transport, resolvedOptions);\n return new DaemonConnection(transport, apiKey);\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n try {\n await transport.close();\n } catch {\n // Best-effort cleanup between retries\n }\n if (attempt < maxRetries) {\n await new Promise<void>((resolve) => setTimeout(resolve, 2_000));\n }\n }\n }\n\n throw lastError;\n }\n\n // Single attempt\n await transport.connect(url);\n await authenticate(transport, resolvedOptions);\n return new DaemonConnection(transport, apiKey);\n } catch (error) {\n try {\n await transport.close();\n } catch {\n // Best-effort cleanup\n }\n throw error;\n }\n}\n"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCO,IAAK,yBAAL,kBAAKC,4BAAL;AACL,EAAAA,wBAAA,kBAAe;AACf,EAAAA,wBAAA,YAAS;AAFC,SAAAA;AAAA,GAAA;AAML,IAAK,wBAAL,kBAAKC,2BAAL;AACL,EAAAA,uBAAA,uBAAoB;AADV,SAAAA;AAAA,GAAA;AAqBL,IAAK,kBAAL,kBAAKC,qBAAL;AAEL,EAAAA,iBAAA,kBAAe;AACf,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,aAAU;AAGV,EAAAA,iBAAA,sBAAmB;AACnB,EAAAA,iBAAA,qBAAkB;AAClB,EAAAA,iBAAA,oBAAiB;AAEjB,EAAAA,iBAAA,0BAAuB;AAZb,SAAAA;AAAA,GAAA;AAgBL,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,YAAS;AACT,EAAAA,sBAAA,gBAAa;AACb,EAAAA,sBAAA,YAAS;AACT,EAAAA,sBAAA,WAAQ;AACR,EAAAA,sBAAA,UAAO;AALG,SAAAA;AAAA,GAAA;AASL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,UAAO;AACP,EAAAA,qBAAA,UAAO;AACP,EAAAA,qBAAA,WAAQ;AAHE,SAAAA;AAAA,GAAA;AAOL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,iCAA8B;AAC9B,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,mBAAgB;AAChB,EAAAA,mBAAA,yBAAsB;AACtB,EAAAA,mBAAA,0BAAuB;AACvB,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,0BAAuB;AACvB,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,gCAA6B;AAC7B,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,0BAAuB;AACvB,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,mBAAgB;AAChB,EAAAA,mBAAA,4BAAyB;AACzB,EAAAA,mBAAA,4BAAyB;AACzB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,mBAAgB;AAChB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,sBAAmB;AACnB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,4BAAyB;AACzB,EAAAA,mBAAA,2BAAwB;AACxB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,+BAA4B;AAC5B,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,wBAAqB;AACrB,EAAAA,mBAAA,0BAAuB;AACvB,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,8BAA2B;AAC3B,EAAAA,mBAAA,4BAAyB;AACzB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,gCAA6B;AAC7B,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,oBAAiB;AACjB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,2BAAwB;AA5Ed,SAAAA;AAAA,GAAA;AA+EL,IAAK,oCAAL,kBAAKC,uCAAL;AACL,EAAAA,mCAAA,uBAAoB;AACpB,EAAAA,mCAAA,sBAAmB;AACnB,EAAAA,mCAAA,qBAAkB;AAClB,EAAAA,mCAAA,aAAU;AAJA,SAAAA;AAAA,GAAA;AAQL,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,0BAAuB;AACvB,EAAAA,sBAAA,6BAA0B;AAFhB,SAAAA;AAAA,GAAA;AAML,IAAK,yBAAL,kBAAKC,4BAAL;AACL,EAAAA,wBAAA,oBAAiB;AACjB,EAAAA,wBAAA,qBAAkB;AAFR,SAAAA;AAAA,GAAA;AAML,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,WAAQ;AACR,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,gBAAa;AAHH,SAAAA;AAAA,GAAA;AAOL,IAAK,mBAAL,kBAAKC,sBAAL;AACL,EAAAA,kBAAA,oBAAiB;AADP,SAAAA;AAAA,GAAA;AAIL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,mBAAgB;AADN,SAAAA;AAAA,GAAA;AAKL,IAAK,iCAAL,kBAAKC,oCAAL;AACL,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,6BAA0B;AALhB,SAAAA;AAAA,GAAA;AASL,IAAK,mBAAL,kBAAKC,sBAAL;AACL,EAAAA,kBAAA,0BAAuB;AACvB,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,cAAW;AAHD,SAAAA;AAAA,GAAA;AAOL,IAAK,sBAAL,kBAAKC,yBAAL;AACL,EAAAA,qBAAA,sBAAmB;AADT,SAAAA;AAAA,GAAA;AAKL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,aAAU;AAFA,SAAAA;AAAA,GAAA;AAqBL,IAAK,mBAAL,kBAAKC,sBAAL;AAQL,EAAAA,kBAAA,eAAY;AAWZ,EAAAA,kBAAA,YAAS;AAST,EAAAA,kBAAA,aAAU;AA5BA,SAAAA;AAAA,GAAA;AA+BL,IAAK,uBAAL,kBAAKC,0BAAL;AACL,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,cAAW;AACX,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,gBAAa;AAJH,SAAAA;AAAA,GAAA;;;ACxPZ,OAAOC,SAAO;AAMd,IAAM,2CAA2CC,IAAE,OAAO;AAAA,EACxD,WAAWA,IAAE,OAAO;AAAA,EACpB,aAAaA,IAAE,OAAO;AAAA,EACtB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,qCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEI,IAAM,oCAAoCA,IAAE,OAAO;AAAA,EACxD,aAAaA,IAAE,OAAO;AACxB,CAAC;;;ACfD,OAAOC,SAAO;AAUd,IAAM,yCAAyCC,IAAE,OAAO,CAAC,CAAC;AAEnD,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,oDAA6C;AAAA,IACvD,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,WAAWA,IAAE,QAAQ;AAAA,EACrB,SAASA,IAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAEM,IAAM,oCAAoCA,IAAE,MAAM;AAAA,EACvD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGD,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EACtD,WAAWA,IAAE,OAAO,EAAE,IAAI,CAAC;AAC7B,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,sDAA8C;AAAA,IACxD,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,WAAWA,IAAE,QAAQ;AACvB,CAAC;;;AClDD,OAAOC,SAAO;AAOd,IAAM,sCAAsCC,IAAE,OAAO;AAAA,EACnD,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,gCAAgC,yBAAyB,OAAO;AAAA,EAC3E,QAAQA,IAAE,8CAAqC;AAAA,EAC/C,QAAQ;AACV,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,QAAQA,IAAE,MAAMC,gBAAe;AACjC,CAAC;;;AClBD,SAAS,KAAAC,WAAS;AAOlB,IAAM,wCAAwCC,IAAE,OAAO;AAAA,EACrD,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,kCAAkC,yBAAyB,OAAO;AAAA,EAC7E,QAAQA,IAAE,kDAAuC;AAAA,EACjD,QAAQ;AACV,CAAC;AAEM,IAAM,iCAAiCA,IAAE,OAAO;AAAA,EACrD,UAAUA,IAAE,MAAM,uBAAuB;AAC3C,CAAC;;;ACdD,OAAOC,SAAO;AAWP,IAAM,gCAAgC,yBAAyB,OAAO;AAAA,EAC3E,QAAQC,IAAE,wCAA+B;AAAA,EACzC,QAAQA,IAAE,OAAO,CAAC,CAAC;AACrB,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,UAAUA,IAAE,OAAO;AAAA,EACnB,YAAYA,IAAE,OAAO;AACvB,CAAC;AAEM,IAAM,iCAAiCA,IAAE,MAAM;AAAA,EACpD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAM,+BAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQA,IAAE,sCAA8B;AAAA,EACxC,QAAQA,IAAE,OAAO,CAAC,CAAC;AACrB,CAAC;AAEM,IAAM,8BAA8BA,IAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAExD,IAAM,gCAAgCA,IAAE,MAAM;AAAA,EACnD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,kDAAoC;AAAA,EAC9C,QAAQA,IAAE,OAAO,CAAC,CAAC;AACrB,CAAC;AAEI,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,WAAWA,IAAE,QAAQ;AAAA,EACrB,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,qCAAqCA,IAAE,MAAM;AAAA,EACxD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAM,mDAAmDA,IAAE,OAAO;AAAA,EACvE,WAAWA,IAAE,QAAQ;AAAA,EACrB,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,6CACX,8BAA8B,OAAO;AAAA,EACnC,QAAQA,IAAE,0DAAuC;AAAA,EACjD,QAAQ;AACV,CAAC;;;AChFH,OAAOC,SAAO;AAcP,IAAM,oCAAoCC,IAAE,OAAO;AAAA,EACxD,YAAYA,IAAE,OAAO;AAAA,EACrB,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,KAAKA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AACrC,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,YAAYA,IAAE,OAAO;AAAA,EACrB,MAAMA,IAAE,OAAO;AACjB,CAAC;AAEM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,YAAYA,IAAE,OAAO;AAAA,EACrB,MAAMA,IAAE,OAAO;AAAA,EACf,MAAMA,IAAE,OAAO;AACjB,CAAC;AAEM,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,YAAYA,IAAE,OAAO;AACvB,CAAC;AAEM,IAAM,mCAAmCA,IAAE,OAAO,CAAC,CAAC;AAGpD,IAAM,6BAA6BA,IAAE,mBAAmB,WAAW;AAAA,EACxEA,IAAE,OAAO;AAAA,IACP,SAASA,IAAE,QAAQ,IAAI;AAAA,EACzB,CAAC;AAAA,EACDA,IAAE,OAAO;AAAA,IACP,SAASA,IAAE,QAAQ,KAAK;AAAA,IACxB,OAAOA,IAAE,WAAW,mBAAmB;AAAA,EACzC,CAAC;AACH,CAAC;AAEM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACzC,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACzC,IAAIA,IAAE,OAAO;AAAA,EACb,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,MAAMA,IAAE,OAAO;AAAA,EACf,MAAMA,IAAE,OAAO;AAAA,EACf,WAAWA,IAAE,OAAO,KAAK;AAAA,EACzB,OAAOA,IACJ,OAAO;AAAA,IACN,YAAYA,IAAE,OAAO;AAAA,IACrB,WAAWA,IAAE,OAAO;AAAA,IACpB,MAAMA,IAAE,OAAO;AAAA,IACf,MAAMA,IAAE,OAAO;AAAA,IACf,WAAWA,IAAE,OAAO,KAAK;AAAA,IACzB,cAAcA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,CAAC,EACA,SAAS;AACd,CAAC;AAEM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,WAAWA,IAAE,MAAM,kBAAkB;AACvC,CAAC;AAGM,IAAM,8BAA8B,yBAAyB,OAAO;AAAA,EACzE,QAAQA,IAAE,6CAAmC;AAAA,EAC7C,QAAQ;AACV,CAAC;AAEM,IAAM,yBAAyB,yBAAyB,OAAO;AAAA,EACpE,QAAQA,IAAE,qDAAuC;AAAA,EACjD,QAAQ;AACV,CAAC;AAEM,IAAM,sBAAsB,yBAAyB,OAAO;AAAA,EACjE,QAAQA,IAAE,6CAAmC;AAAA,EAC7C,QAAQ;AACV,CAAC;AAEM,IAAM,6BAA6B,yBAAyB,OAAO;AAAA,EACxE,QAAQA,IAAE,2CAAkC;AAAA,EAC5C,QAAQ;AACV,CAAC;AAEM,IAAM,6BAA6B,yBAAyB,OAAO;AAAA,EACxE,QAAQA,IAAE,0CAAiC;AAAA,EAC3C,QAAQ;AACV,CAAC;AAGM,IAAM,+BAA+BA,IAAE,MAAM;AAAA,EAClD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,0BAA0BA,IAAE,MAAM;AAAA,EAC7C,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,uBAAuBA,IAAE,MAAM;AAAA,EAC1C,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,8BAA8BA,IAAE,MAAM;AAAA,EACjD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,8BAA8BA,IAAE,MAAM;AAAA,EACjD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAM,wBAAwBA,IAAE,mBAAmB,UAAU;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,iCAAiCA,IAAE,OAAO;AAAA,EACrD,MAAMA,IAAE,yCAAgC;AAAA,EACxC,YAAYA,IAAE,OAAO;AAAA,EACrB,MAAMA,IAAE,OAAO;AACjB,CAAC;AAEM,IAAM,iCAAiCA,IAAE,OAAO;AAAA,EACrD,MAAMA,IAAE,yCAAgC;AAAA,EACxC,YAAYA,IAAE,OAAO;AAAA,EACrB,UAAUA,IAAE,OAAO;AAAA,EACnB,QAAQA,IAAE,OAAO;AACnB,CAAC;AAGM,IAAM,6BAA6BA,IAAE,mBAAmB,QAAQ;AAAA,EACrE;AAAA,EACA;AACF,CAAC;AAIM,IAAM,0CACX,kCAAkC,OAAO;AAAA,EACvC,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEI,IAAM,qCACX,6BAA6B,OAAO;AAAA,EAClC,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEI,IAAM,kCAAkC,0BAA0B;AAAA,EACvE;AAAA,IACE,WAAWA,IAAE,OAAO;AAAA,EACtB;AACF;AAEO,IAAM,yCACX,iCAAiC,OAAO;AAAA,EACtC,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEI,IAAM,yCACX,iCAAiC,OAAO;AAAA,EACtC,WAAWA,IAAE,OAAO;AACtB,CAAC;AAII,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,6CAAmC;AAAA,EAC7C,QAAQ;AACV,CAAC;AAEI,IAAM,+BAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQA,IAAE,qDAAuC;AAAA,EACjD,QAAQ;AACV,CAAC;AAEM,IAAM,4BAA4B,yBAAyB,OAAO;AAAA,EACvE,QAAQA,IAAE,6CAAmC;AAAA,EAC7C,QAAQ;AACV,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,2CAAkC;AAAA,IAC5C,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,0CAAiC;AAAA,IAC3C,QAAQ;AAAA,EACV;AACF;;;ACzOA,OAAOC,SAAO;AAiBP,IAAM,iCAAiCC,IAAE,OAAO;AAAA,EACrD,SAASA,IACN,OAAO;AAAA;AAAA,IAEN,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAEzB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAEjC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAErC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,CAAC,EACA,SAAS;AACd,CAAC;AAGM,IAAM,wCAAwCA,IAClD,OAAO;AAAA;AAAA,EAEN,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE3B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE5B,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAElC,QAAQA,IAAE,OAAO;AAAA;AAAA,EAEjB,UAAU,+BAA+B,SAAS;AACpD,CAAC,EACA,OAAO,CAAC,SAAS,KAAK,SAAS,KAAK,QAAQ;AAAA,EAC3C,SAAS;AACX,CAAC;AAEI,IAAM,kCAAkC,yBAAyB,OAAO;AAAA,EAC7E,QAAQA,IAAE,gDAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEM,IAAM,iCAAiCA,IAAE,OAAO;AAAA,EACrD,QAAQA,IAAE,OAAO;AAAA,EACjB,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,mCAAmCA,IAAE,MAAM;AAAA,EACtD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,kCAAkCA,IAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAE5D,IAAM,4BAA4B,yBAAyB,OAAO;AAAA,EACvE,QAAQA,IAAE,oCAAqC;AAAA,EAC/C,QAAQ;AACV,CAAC;AAEM,IAAM,2BAA2BA,IAAE,OAAO;AAAA,EAC/C,UAAUA,IAAE,QAAQ,IAAI;AAC1B,CAAC;AAEM,IAAM,6BAA6BA,IAAE,MAAM;AAAA,EAChD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAM,iDAAiDA,IAAE,OAAO;AAAA,EACrE,kBAAkBA,IAAE,QAAQ;AAAA,EAC5B,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,SAASA,IAAE,OAAO;AAAA,EAClB,UAAUA,IAAE,WAAW,QAAQ;AACjC,CAAC;AAEM,IAAM,2CACX,8BAA8B,OAAO;AAAA,EACnC,QAAQA,IAAE,0DAA+C;AAAA,EACzD,QAAQ;AACV,CAAC;;;ACjGH,OAAOC,SAAO;AAuBd,IAAM,6BAA6BC,IAAE,OAAO;AAAA,EAC1C,MAAMA,IAAE,QAAQ,OAAO,EAAE,SAAS,EAAE,QAAQ,OAAO;AAAA,EACnD,SAASA,IAAE,OAAO;AAAA,EAClB,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EACxB,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAChD,CAAC;AAEM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EAC3C,QAAQA,IAAE,MAAMA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS;AAAA,EACnD,UAAUA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC5C,cAAcA,IACX,OAAO,EACP,IAAI,CAAC,EACL,OAAO,CAAC,WAAW,OAAO,KAAK,EAAE,SAAS,GAAG;AAAA,IAC5C,SAAS;AAAA,EACX,CAAC,EACA,SAAS;AAAA,EACZ,cAAcA,IAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,SAAS;AAC5D,CAAC;AAEM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,MAAMA,IAAE,QAAQ,MAAM;AAAA,EACtB,KAAKA,IAAE,OAAO;AAAA,EACd,SAASA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACnD,OAAO,qBAAqB,SAAS;AAAA,EACrC,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAChD,CAAC;AAED,IAAM,2BAA2BA,IAAE,OAAO;AAAA,EACxC,MAAMA,IAAE,QAAQ,KAAK;AAAA,EACrB,KAAKA,IAAE,OAAO;AAAA,EACd,SAASA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACnD,OAAO,qBAAqB,SAAS;AAAA,EACrC,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAChD,CAAC;AAEM,IAAMC,yBAAwBD,IAAE,MAAM;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EAC1C,MAAMA,IAAE,OAAO;AAAA,EACf,QAAQC;AAAA,EACR,QAAQD,IAAE,WAAW,eAAe;AAAA,EACpC,QAAQA,IAAE,WAAWE,gBAAe,EAAE,SAAS;AAAA,EAC/C,OAAOF,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGM,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EAC7C,SAASA,IAAE,QAAQ;AACrB,CAAC;AAGM,IAAM,kCAAkC,yBAAyB,OAAO;AAAA,EAC7E,QAAQA,IAAE,oDAAwC;AAAA,EAClD,QAAQA,IAAE,OAAO,CAAC,CAAC;AACrB,CAAC;AAEM,IAAM,iCAAiCA,IAAE,OAAO;AAAA,EACrD,SAASA,IAAE,MAAM,mBAAmB;AACtC,CAAC;AAGM,IAAM,2CAA2CA,IAAE,OAAO;AAAA,EAC/D,QAAQA,IAAE,KAAK,CAAC,OAAO,UAAU,UAAU,SAAS,CAAC;AAAA,EACrD,aAAaA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EAC/B,cAAcC,uBAAsB,SAAS;AAC/C,CAAC;AAEM,IAAM,qCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQD,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEI,IAAM,oCAAoCA,IAAE,OAAO;AAAA,EACxD,SAASA,IAAE,QAAQ;AAAA,EACnB,SAASA,IAAE,MAAM,mBAAmB;AAAA,EACpC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGM,IAAM,qCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQG,oCAAmC,OAAO;AAAA,IAChD,WAAWH,IAAE,OAAO;AAAA,EACtB,CAAC;AACH,CAAC;AAGI,IAAM,2CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sEAAiD;AAAA,EAC3D,QAAQI,0CAAyC,OAAO;AAAA,IACtD,WAAWJ,IAAE,OAAO;AAAA,EACtB,CAAC;AACH,CAAC;AAGI,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,sDAAyC;AAAA,IACnD,QAAQK,kCAAiC,OAAO;AAAA,MAC9C,WAAWL,IAAE,OAAO;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAGO,IAAM,kCAAkC,yBAAyB,OAAO;AAAA,EAC7E,QAAQA,IAAE,oDAAwC;AAAA,EAClD,QAAQM,iCAAgC,OAAO;AAAA,IAC7C,WAAWN,IAAE,OAAO;AAAA,EACtB,CAAC;AACH,CAAC;AAGM,IAAM,kCAAkC,yBAAyB,OAAO;AAAA,EAC7E,QAAQA,IAAE,oDAAwC;AAAA,EAClD,QAAQO,iCAAgC,OAAO;AAAA,IAC7C,WAAWP,IAAE,OAAO;AAAA,EACtB,CAAC;AACH,CAAC;AAGM,IAAM,qCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQQ,oCAAmC,OAAO;AAAA,IAChD,WAAWR,IAAE,OAAO;AAAA,EACtB,CAAC;AACH,CAAC;AAGI,IAAM,qCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQS,oCAAmC,OAAO;AAAA,IAChD,WAAWT,IAAE,OAAO;AAAA,EACtB,CAAC;AACH,CAAC;AAEI,IAAM,gCAAgCU,yBAAwB,OAAO,CAAC,CAAC;AAEvE,IAAM,oCACXC,6BAA4B,OAAO,CAAC,CAAC;AAGhC,IAAM,kCAAkC,yBAAyB,OAAO;AAAA,EAC7E,QAAQX,IAAE,oDAAwC;AAAA,EAClD,QAAQY,iCAAgC,OAAO;AAAA,IAC7C,WAAWZ,IAAE,OAAO;AAAA,EACtB,CAAC;AACH,CAAC;AAEM,IAAM,0BAA0Ba,mBAAkB,OAAO,CAAC,CAAC;AAE3D,IAAM,iCAAiCC,0BAAyB;AAAA,EACrE,CAAC;AACH;AAGO,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQd,IAAE,sDAAyC;AAAA,IACnD,QAAQe,kCAAiC,OAAO;AAAA,MAC9C,WAAWf,IAAE,OAAO;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAGO,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,wDAA0C;AAAA,EACpD,QAAQgB,mCAAkC,OAAO;AAAA,IAC/C,WAAWhB,IAAE,OAAO;AAAA,EACtB,CAAC;AACH,CAAC;AAEI,IAAM,mCACXiB,4BAA2B,OAAO,CAAC,CAAC;AAGtC,IAAM,6CAA6CjB,IAAE,OAAO;AAAA,EAC1D,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AAAA,EACrB,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,uCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,gEAA8C;AAAA,EACxD,QAAQ;AACV,CAAC;;;AChOH,OAAOkB,SAAO;AAOd,IAAM,2CAA2CC,IAAE,OAAO;AAAA,EACxD,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,qCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,wDAA0C;AAAA,EACpD,QAAQ;AACV,CAAC;AAEI,IAAM,wBAAwBA,IAAE,OAAO;AAAA;AAAA,EAE5C,IAAIA,IAAE,OAAO;AAAA;AAAA,EAEb,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,QAAQA,IAAE,OAAO;AAAA,EACjB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACnC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,SAASA,IAAE,QAAQ;AAAA,EACnB,MAAMA,IAAE,OAAO;AAAA,EACf,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,WAAWA,IACR,OAAO;AAAA,IACN,MAAMA,IAAE,OAAO;AAAA,IACf,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC3B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC,EACA,SAAS;AAAA,EACZ,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEhC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,oCAAoCA,IAAE,OAAO;AAAA,EACxD,aAAaA,IAAE,MAAM,qBAAqB;AAC5C,CAAC;AAKD,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EACtD,cAAcA,IAAE,OAAO;AAAA;AAAA,EAEvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE9B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,oDAAwC;AAAA,IAClD,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,QAAQA,IAAE,OAAO;AAAA,EACjB,gBAAgBA,IAAE,OAAO;AAAA;AAAA,EAEzB,cAAcA,IAAE,OAAO;AAAA,EACvB,KAAKA,IAAE,OAAO;AAAA,EACd,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE3B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAGD,IAAM,2CAA2CA,IAAE,OAAO;AAAA,EACxD,cAAcA,IAAE,OAAO;AAAA,EACvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,qCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,wDAA0C;AAAA,EACpD,QAAQ;AACV,CAAC;AAEI,IAAM,oCAAoCA,IAAE,OAAO;AAAA,EACxD,SAASA,IAAE,QAAQ;AAAA,EACnB,cAAcA,IAAE,OAAO;AAAA,EACvB,QAAQA,IAAE,OAAO;AAAA,EACjB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EACzD,cAAcA,IAAE,OAAO;AAAA,EACvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEI,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,SAASA,IAAE,QAAQ;AAAA,EACnB,cAAcA,IAAE,OAAO;AAAA,EACvB,QAAQA,IAAE,OAAO;AAAA,EACjB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,gDAAgDA,IAAE,OAAO;AAAA,EAC7D,cAAcA,IAAE,OAAO;AAAA,EACvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,0CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,oEAAgD;AAAA,EAC1D,QAAQ;AACV,CAAC;AAEH,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EACzC,OAAOA,IAAE,OAAO;AAAA,EAChB,cAAcA,IAAE,OAAO;AAAA,EACvB,QAAQA,IAAE,OAAO;AAAA,EACjB,WAAWA,IAAE,OAAO;AAAA,EACpB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAEM,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EAC7D,cAAcA,IAAE,OAAO;AAAA,EACvB,MAAMA,IAAE,MAAM,yBAAyB;AAAA,EACvC,YAAYA,IAAE,OAAO;AACvB,CAAC;AAGD,IAAM,+CAA+CA,IAAE,OAAO;AAAA,EAC5D,cAAcA,IAAE,OAAO;AAAA,EACvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,WAAWA,IAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,yCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,kEAA+C;AAAA,EACzD,QAAQ;AACV,CAAC;AAEI,IAAM,wCAAwCA,IAAE,OAAO;AAAA,EAC5D,cAAcA,IAAE,OAAO;AAAA,EACvB,QAAQA,IAAE,QAAQ;AAAA,EAClB,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EACzD,IAAIA,IAAE,OAAO;AAAA,EACb,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAUA,IAAE,OAAO;AAAA,EACnB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEI,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,SAASA,IAAE,QAAQ;AAAA,EACnB,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,iDAAiDA,IAAE,OAAO;AAAA,EAC9D,cAAcA,IAAE,OAAO;AAAA,EACvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,2CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sEAAiD;AAAA,EAC3D,QAAQ;AACV,CAAC;AAEI,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,SAASA,IAAE,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,mDAAmDA,IAAE,OAAO;AAAA,EAChE,cAAcA,IAAE,OAAO;AAAA,EACvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,cAAcA,IAAE,WAAW,sBAAsB;AAAA,EACjD,WAAWA,IACR,OAAO;AAAA,IACN,MAAMA,IAAE,OAAO;AAAA,IACf,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC3B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC,EACA,SAAS;AAAA,EACZ,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,6CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0EAAmD;AAAA,EAC7D,QAAQ;AACV,CAAC;AAEI,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EAChE,SAASA,IAAE,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EACzD,cAAcA,IAAE,OAAO;AAAA,EACvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,SAASA,IAAE,OAAO;AAAA,EAClB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEI,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,SAASA,IAAE,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EACzD,cAAcA,IAAE,OAAO;AAAA,EACvB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,IAAM,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEI,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,SAASA,IAAE,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGD,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EACvD,cAAcA,IAAE,OAAO;AAAA,EACvB,MAAMA,IAAE,OAAO;AAAA,EACf,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAUA,IAAE,OAAO;AAAA,EACnB,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACnC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQA,IAAE,OAAO;AAAA,EACjB,YAAYA,IAAE,OAAO;AAAA,EACrB,cAAcA,IAAE,OAAO;AACzB,CAAC;AAEM,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAEI,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,SAASA,IAAE,QAAQ;AAAA,EACnB,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;;;AC5SD,SAAS,KAAAC,WAAS;AAQX,IAAM,mBAAmBC,IAAE,KAAK;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,iBAAiBA,IAAE,QAAQ,gBAAgB;AAExD,IAAM,mBAAmBA,IAAE,KAAK,CAAC,gBAAgB,WAAW,CAAC;AAE7D,IAAM,gCAAgCA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAE1D,IAAM,kBAAkBA,IAAE,OAAO;AAAA,EACtC,MAAMA,IAAE,QAAQ,SAAS;AAAA,EACzB,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AAAA,EACrB,YAAYA,IAAE,OAAO;AACvB,CAAC;AAEM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,MAAMA,IAAE,QAAQ,SAAS;AAAA,EACzB,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AACvB,CAAC;AAEM,IAAM,oBAAoBA,IAAE,OAAO;AAAA,EACxC,MAAMA,IAAE,QAAQ,QAAQ;AAAA,EACxB,QAAQA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,EAC/B,QAAQA,IAAE,OAAO;AAAA,IACf,MAAMA,IAAE,QAAQ,cAAc;AAAA,EAChC,CAAC;AACH,CAAC;AAEM,IAAM,mBAAmBA,IAAE,OAAO;AAAA,EACvC,SAASA,IAAE,QAAQ,CAAC;AAAA,EACpB,IAAIA,IAAE,OAAO;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAUA,IAAE,OAAO;AAAA,IACjB,YAAYA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,IACnC,WAAWA,IAAE,QAAQ;AAAA,IACrB,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAAA,IACzC,UAAUA,IAAE,QAAQ,KAAK;AAAA,EAC3B,CAAC;AAAA,EACD,WAAWA,IAAE,OAAO;AAAA,IAClB,qBAAqBA,IAAE,QAAQ,MAAM;AAAA,EACvC,CAAC;AAAA,EACD,SAAS;AAAA,EACT,OAAOA,IAAE,OAAO;AAAA,IACd,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IACxC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,IACrC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC;AAAA,EACD,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAEM,IAAM,+BAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQA,IAAE,4CAAoC;AAAA,EAC9C,QAAQ;AACV,CAAC;AAEM,IAAM,8BAA8BA,IAAE,OAAO;AAAA,EAClD,OAAOA,IAAE,MAAM,gBAAgB;AACjC,CAAC;AAEM,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAUA,IAAE,OAAO;AAAA,IACjB,YAAYA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,IACnC,WAAWA,IAAE,QAAQ;AAAA,EACvB,CAAC;AAAA,EACD,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,WAAWA,IACR,OAAO;AAAA,IACN,qBAAqBA,IAAE,QAAQ,MAAM;AAAA,EACvC,CAAC,EACA,SAAS;AAAA,EACZ,SAAS;AACX,CAAC;AAEM,IAAM,gCAAgC,yBAAyB,OAAO;AAAA,EAC3E,QAAQA,IAAE,8CAAqC;AAAA,EAC/C,QAAQ;AACV,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,MAAM;AACR,CAAC;AAEM,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,QAAQA,IAAE,OAAO;AAAA,EACjB,WAAWA,IAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,gCAAgC,yBAAyB,OAAO;AAAA,EAC3E,QAAQA,IAAE,8CAAqC;AAAA,EAC/C,QAAQ;AACV,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,SAASA,IAAE,QAAQ;AACrB,CAAC;AAED,IAAM,+BAA+BA,IAClC,OAAO;AAAA,EACN,QAAQA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS;AAC5C,CAAC,EACA,OAAO;AAEH,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,QAAQA,IAAE,OAAO;AAAA,EACjB,QAAQ,8BAA8B,SAAS;AAAA,EAC/C,UAAUA,IACP,OAAO;AAAA,IACN,YAAYA,IAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,IACnC,WAAWA,IAAE,QAAQ;AAAA,EACvB,CAAC,EACA,SAAS;AAAA,EACZ,SAAS,6BAA6B,SAAS;AACjD,CAAC;AAEM,IAAM,gCAAgC,yBAAyB,OAAO;AAAA,EAC3E,QAAQA,IAAE,8CAAqC;AAAA,EAC/C,QAAQ;AACV,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,MAAM,iBAAiB,SAAS;AAClC,CAAC;AAEM,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EAChE,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQA,IAAE,OAAO;AACnB,CAAC;AAEM,IAAM,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,4DAA4C;AAAA,EACtD,QAAQ;AACV,CAAC;AAEI,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAC1C,CAAC;AAEM,IAAM,8CAA8CA,IAAE,OAAO;AAAA,EAClE,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,wCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,gEAA8C;AAAA,EACxD,QAAQ;AACV,CAAC;AAEI,IAAM,uCAAuCA,IAAE,OAAO;AAAA,EAC3D,cAAcA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAC7C,CAAC;AAEM,IAAM,iDAAiDA,IAAE,OAAO;AAAA,EACrE,QAAQA,IAAE,KAAK,CAAC,WAAW,WAAW,SAAS,CAAC;AAAA,EAChD,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EAC3B,OAAOA,IAAE,MAAM,gBAAgB,EAAE,SAAS;AAC5C,CAAC;AAEM,IAAM,2CACX,8BAA8B,OAAO;AAAA,EACnC,QAAQA,IAAE,uDAAqC;AAAA,EAC/C,QAAQ;AACV,CAAC;;;ACnMH,OAAOC,SAAO;AAed,IAAM,gDAAgDC,IAAE,OAAO;AAAA,EAC7D,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,0CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,oEAAgD;AAAA,EAC1D,QAAQ;AACV,CAAC;AAEI,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EAC7D,SAASA,IAAE;AAAA,IACTA,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,OAAO;AAAA,MACf,aAAaA,IAAE,OAAO;AAAA,MACtB,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,IACnC,CAAC;AAAA,EACH;AACF,CAAC;AAID,IAAM,gDAAgDA,IAAE,OAAO;AAAA,EAC7D,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAEM,IAAM,0CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,oEAAgD;AAAA,EAC1D,QAAQ;AACV,CAAC;AAEI,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EAC7D,SAASA,IAAE;AAAA,IACTA,IAAE,OAAO;AAAA,MACP,IAAIA,IAAE,OAAO;AAAA,MACb,OAAOA,IAAE,OAAO;AAAA,MAChB,SAASA,IAAE,OAAO;AAAA,MAClB,aAAaA,IAAE,OAAO;AAAA,MACtB,aAAaA,IAAE,OAAO;AAAA,MACtB,aAAaA,IAAE,OAAO;AAAA,MACtB,QAAQA,IAAE,OAAO;AAAA,IACnB,CAAC;AAAA,EACH;AACF,CAAC;AAID,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EACtD,WAAWA,IAAE,OAAO;AAAA,EACpB,aAAaA,IAAE,OAAO;AAAA,EACtB,YAAYA,IAAE,OAAO;AAAA,EACrB,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,oDAAwC;AAAA,IAClD,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,SAASA,IAAE,QAAQ;AAAA,EACnB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAID,IAAM,2CAA2CA,IAAE,OAAO;AAAA,EACxD,WAAWA,IAAE,OAAO;AAAA,EACpB,UAAUA,IAAE,OAAO;AAAA,EACnB,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,qCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,wDAA0C;AAAA,EACpD,QAAQ;AACV,CAAC;AAEI,IAAM,oCAAoCA,IAAE,OAAO;AAAA,EACxD,SAASA,IAAE,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAID,IAAM,wCAAwCA,IAAE,OAAO;AAAA,EACrD,WAAWA,IAAE,OAAO;AAAA,EACpB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAEM,IAAM,kCAAkC,yBAAyB,OAAO;AAAA,EAC7E,QAAQA,IAAE,kDAAuC;AAAA,EACjD,QAAQ;AACV,CAAC;AAEM,IAAM,iCAAiCA,IAAE,OAAO;AAAA,EACrD,SAASA,IAAE;AAAA,IACTA,IAAE,OAAO;AAAA,MACP,UAAUA,IAAE,OAAO;AAAA,MACnB,SAASA,IAAE,QAAQ;AAAA,MACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,EACH;AACF,CAAC;AAID,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EACzD,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAMI,IAAM,kCAAkCA,IAAE,mBAAmB,UAAU;AAAA,EAC5EA,IAAE,OAAO;AAAA,IACP,QAAQA,IAAE,QAAQ,QAAQ;AAAA,IAC1B,MAAMA,IAAE,OAAO;AAAA,EACjB,CAAC;AAAA,EACDA,IAAE,OAAO;AAAA,IACP,QAAQA,IAAE,QAAQ,KAAK;AAAA,IACvB,KAAKA,IAAE,OAAO;AAAA,EAChB,CAAC;AAAA,EACDA,IAAE,OAAO;AAAA,IACP,QAAQA,IAAE,QAAQ,OAAO;AAAA,EAC3B,CAAC;AAAA,EACDA,IAAE,OAAO;AAAA,IACP,QAAQA,IAAE,QAAQ,YAAY;AAAA,IAC9B,KAAKA,IAAE,OAAO;AAAA,IACd,MAAMA,IAAE,OAAO;AAAA,EACjB,CAAC;AACH,CAAC;AAEM,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,cAAcA,IAAE;AAAA,IACdA,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,OAAO;AAAA,MACf,QAAQ;AAAA,MACR,aAAaA,IAAE,OAAO;AAAA,MACtB,YAAYA,IAAE,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACF,CAAC;AAID,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EACvD,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQ;AACV,CAAC;AAEM,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAEI,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,SAASA,IAAE,QAAQ;AAAA,EACnB,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAID,IAAM,6CAA6CA,IAAE,OAAO;AAAA,EAC1D,WAAWA,IAAE,OAAO;AAAA,EACpB,MAAMA,IAAE,OAAO;AACjB,CAAC;AAEM,IAAM,uCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,4DAA4C;AAAA,EACtD,QAAQ;AACV,CAAC;AAEI,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,SAASA,IAAE,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAID,IAAM,6CAA6CA,IAAE,OAAO;AAAA,EAC1D,WAAWA,IAAE,OAAO;AAAA,EACpB,MAAMA,IAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAEM,IAAM,uCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,4DAA4C;AAAA,EACtD,QAAQ;AACV,CAAC;AAEI,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,SAASA,IAAE;AAAA,IACTA,IAAE,OAAO;AAAA,MACP,MAAMA,IAAE,OAAO;AAAA,MACf,SAASA,IAAE,QAAQ;AAAA,MACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,EACH;AACF,CAAC;;;ACjOD,OAAOC,SAAO;AA+BP,IAAM,8CAA8CC,IAAE,OAAO,CAAC,CAAC;AACtE,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EAClD,UAAUA,IAAE,QAAQ;AAAA,EACpB,QAAQA,IAAE,WAAWC,cAAa,EAAE,SAAS;AAAA,EAC7C,YAAYD,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AACD,IAAM,0CACJ,mCAAmC,SAAS,EAAE,MAAM,MAAS;AAC/D,IAAM,sCAAsCA,IAAE,KAAK;AAAA,EACjD;AAAA,EACA;AACF,CAAC;AACD,IAAM,4CAA4CA,IAC/C,OAAO;AAAA,EACN,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,YAAY;AAAA,EACZ,sBAAsB;AACxB,CAAC,EACA,MAAM,CAAC,CAAC;AACX,IAAM,2CAA2CA,IAC9C,OAAO;AAAA,EACN,mBAAmB;AAAA,EACnB,6BAA6B;AAAA,EAC7B,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,iCAAiC;AAAA,EACjC,cAAc;AAAA,EACd,iBAAiB;AACnB,CAAC,EACA,MAAM,CAAC,CAAC;AACJ,IAAM,2CAA2CA,IACrD,OAAO;AAAA,EACN,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,8BAA8B;AAAA,EAC9B,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,UACE,0CAA0C,SAAS,EAAE,MAAM,MAAS;AAAA,EACtE,SACE,yCAAyC,SAAS,EAAE,MAAM,MAAS;AACvE,CAAC,EACA,MAAM,CAAC,CAAC;AACJ,IAAM,iDAAiDA,IAAE,OAAO;AAAA,EACrE,SAAS,6BAA6B,MAAM;AAAA,EAC5C,iBAAiB,6BAA6B,MAAM;AAAA,EACpD,iBAAiB,6BAA6B,MAAM;AAAA,EACpD,eAAe,6BAA6B,MAAM;AAAA,EAClD,iBAAiB,6BAA6B,MAAM,cAAc,SAAS;AAAA,EAC3E,yBACE,6BAA6B,MAAM,wBAAwB,SAAS;AAAA,EACtE,sBAAsB,sBAAsB,MAAM;AAAA,EAClD,8BACE,sBAAsB,MAAM;AAAA,EAC9B,iBAAiB,sBAAsB,MAAM;AAAA,EAC7C,qBAAqB,oCAAoC,SAAS,EAAE;AAAA,IAClE;AAAA,EACF;AAAA,EACA,uBAAuB,4BAA4B,QAAQ,EAAE,SAAS;AAAA,EACtE,aAAa,sBAAsB,MAAM,YAAY,SAAS,EAAE,SAAS;AAAA,EACzE,0BAA0B,sBAAsB,MAAM,yBACnD,SAAS,EACT,SAAS;AAAA,EACZ,oCACE,sBAAsB,MAAM,mCACzB,SAAS,EACT,SAAS;AAAA,EACd,sBAAsB,2BAA2B,QAAQ,EAAE,SAAS;AAAA,EACpE,eAAe,6BAA6B,MAAM,cAC/C,SAAS,EACT,SAAS;AAAA,EACZ,mBAAmB,sBAAsB,MAAM,kBAC5C,SAAS,EACT,SAAS;AACd,CAAC;AAED,IAAM,8BAA8BA,IACjC,OAAO;AAAA,EACN,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,gBAAgBA,IAAE,OAAO;AAC3B,CAAC,EACA,SAAS;AAGL,IAAM,wCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,gEAAiD;AAAA,EAC3D,QAAQ;AACV,CAAC;AAEI,IAAM,2CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sEAAoD;AAAA,EAC9D,QAAQ;AACV,CAAC;AAGI,IAAM,uCAAuCA,IAAE,OAAO;AAAA,EAC3D,cAAcA,IACX,WAAWE,aAAY,EACvB,SAAS,0DAA0D,EACnE,SAAS;AAAA,EACZ,iBAAiB,2BAA2B,SAAS,EAAE,MAAM,MAAS;AAAA,EACtE,eAAeF,IAAE,WAAWG,cAAa,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACrE,kBAAkBH,IAAE,WAAWG,cAAa,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACxE,SAASH,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,iBAAiBA,IAAE,WAAWI,gBAAe,EAAE,SAAS;AAAA,EACxD,aAAaJ,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,yBAAyBA,IAAE,WAAWI,gBAAe,EAAE,SAAS;AAAA,EAChE,sBAAsBJ,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1C,8BAA8BA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC5D,iBAAiB,sBAAsB,MAAM;AAAA,EAC7C,qBAAqB,oCAAoC,SAAS,EAAE;AAAA,IAClE;AAAA,EACF;AAAA,EACA,eAAeA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,YAAY,yCAAyC,SAAS;AAAA,EAC9D,0BAA0BA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,oCAAoCA,IAAE,WAAWI,gBAAe,EAAE,SAAS;AAAA,EAC3E,iBAAiB,2BAA2B,SAAS;AAAA,EACrD,uBAAuB,4BAA4B,SAAS;AAAA,EAC5D,iBAAiBJ,IAAE,MAAMK,2BAA0B,EAAE,SAAS;AAAA,EAC9D,iBAAiB;AAAA,EACjB,iBAAiBL,IACd,MAAM,6BAA6B,EACnC,SAAS,EACT,MAAM,MAAS;AACpB,CAAC;AAEM,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,SAASA,IAAE,QAAQ;AAAA,EACnB,UAAU;AACZ,CAAC;AAGM,IAAM,yCAAyCA,IAAE,MAAM;AAAA,EAC5D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,4CAA4CA,IAAE,MAAM;AAAA,EAC/D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;;;ACtMD,OAAOM,SAAO;AAgHP,IAAM,+BAA+B;AAE5C,IAAMC,wBAAuB,CAAyB,iBACpDC,IAAE,MAAM;AAAA,EACN,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEH,IAAM,oCAAoC,CACxC,iBAEAA,IAAE,MAAM;AAAA,EACN,iCAAiC,OAAO;AAAA,IACtC,QAAQA,IAAE,MAAM,CAAC,8BAA8B,YAAY,CAAC;AAAA,EAC9D,CAAC;AAAA,EACD;AACF,CAAC;AAEI,IAAM,6CACXC,sCAAqC,OAAO;AAAA,EAC1C,OAAOD,IAAE,OAAO;AAAA,EAChB,qBAAqBA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1D,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/C,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAC3C,CAAC;AAGI,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/C,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAC3C,CAAC;AAEM,IAAM,uCACXE,gCAA+B;AAAA,EAC7B;AACF,EAAE,OAAO;AAAA,EACP,OAAOF,IAAE,OAAO;AAClB,CAAC;AAEI,IAAM,0CACXG,mCAAkC,OAAO;AAAA,EACvC,WAAWH,IAAE,OAAO;AACtB,CAAC;AAEI,IAAM,oDACX,4CAA4C;AAAA,EAC1CA,IAAE,OAAO;AAAA,IACP,WAAWA,IAAE,OAAO;AAAA,EACtB,CAAC;AACH;AAEK,IAAM,4CACXI,qCAAoC,OAAO;AAAA,EACzC,WAAWJ,IAAE,OAAO;AACtB,CAAC;AAEI,IAAM,wCAAwCA,IAAE,OAAO;AAAA,EAC5D,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EACpD,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAEM,IAAM,8CAA8CA,IAAE,OAAO;AAAA,EAClE,QAAQ,8BAA8B,SAAS;AACjD,CAAC;AAEM,IAAM,0CACX,8BAA8B,OAAO;AAAA,EACnC,eAAeA,IAAE,MAAMA,IAAE,WAAWK,aAAY,CAAC,EAAE,SAAS;AAC9D,CAAC;AAEI,IAAM,iDAAiDL,IAAE,OAAO;AAAA,EACrE,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA;AAAA,EAC5C,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAC/B,wBAAwBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC7C,QAAQ,wCAAwC,SAAS;AAC3D,CAAC;AAEM,IAAM,8CAA8CA,IAAE,OAAO;AAAA,EAClE,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EAC5C,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,MAAMA,IAAE,WAAW,mBAAmB,EAAE,SAAS;AACnD,CAAC;AAEM,IAAM,iDACXM,0CAAyC,OAAO;AAAA,EAC9C,WAAWN,IAAE,OAAO;AACtB,CAAC;AAEI,IAAM,uCAAuCA,IAAE,OAAO,CAAC,CAAC;AAExD,IAAM,oDAAoDA,IAAE,OAAO;AAAA,EACxE,kBAAkBA,IAAE,OAAO;AAC7B,CAAC;AAEM,IAAM,uCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,4DAA4C;AAAA,EACtD,QAAQ;AACV,CAAC;AAEI,IAAM,iCAAiC,yBAAyB,OAAO;AAAA,EAC5E,QAAQA,IAAE,gDAAsC;AAAA,EAChD,QAAQ;AACV,CAAC;AAEM,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,wDAA0C;AAAA,EACpD,QAAQ;AACV,CAAC;AAEI,IAAM,8CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,8EAAqD;AAAA,EAC/D,QAAQ;AACV,CAAC;AAEI,IAAM,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEI,IAAM,kCAAkC,yBAAyB,OAAO;AAAA,EAC7E,QAAQA,IAAE,kDAAuC;AAAA,EACjD,QAAQ;AACV,CAAC;AAEM,IAAM,iCAAiCA,IAAE,OAAO,CAAC,CAAC;AAElD,IAAM,6CAA6CA,IACvD,OAAO;AAAA;AAAA,EAEN,WAAWA,IAAE,OAAO;AACtB,CAAC,EACA,OAAOO,sCAAqC,KAAK;AAE7C,IAAM,uCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQP,IAAE,8DAA6C;AAAA,EACvD,QAAQ;AACV,CAAC;AAEI,IAAM,sCACXQ;AAEK,IAAM,wCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQR,IAAE,gEAA8C;AAAA,EACxD,QAAQ;AACV,CAAC;AAEI,IAAM,2CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sEAAiD;AAAA,EAC3D,QAAQ;AACV,CAAC;AAEI,IAAM,wCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,gEAA8C;AAAA,EACxD,QAAQ;AACV,CAAC;AAEI,IAAM,2CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sEAAiD;AAAA,EAC3D,QAAQ;AACV,CAAC;AAEI,IAAM,8CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,4EAAoD;AAAA,EAC9D,QAAQ;AACV,CAAC;AAEI,IAAM,sCACXS;AAEK,IAAM,gCAAgCC;AAEtC,IAAM,mCAAmCC;AAEzC,IAAM,6CACX;AAEK,IAAM,qCAAqCC;AAE3C,IAAM,gCAAgCZ,IAAE,OAAO;AAAA,EACpD,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQ,aAAa,SAAS;AAAA,EAC9B,WAAWA,IAAE,OAAO;AAAA;AAAA,EACpB,cAAcA,IAAE,WAAWa,kBAAiB;AAAA,EAC5C,KAAKb,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACzB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAC9B,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACnC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACtC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACtC,MAAMA,IAAE,MAAMc,iBAAgB,EAAE,SAAS;AAAA;AAC3C,CAAC;AAEM,IAAM,mCAAmCd,IAAE,OAAO;AAAA,EACvD,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQ,aAAa,SAAS;AAAA,EAC9B,WAAWA,IAAE,OAAO;AAAA;AAAA,EACpB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAC3B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACzB,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAC9B,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACnC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAChC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACtC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EACtC,MAAMA,IAAE,MAAMc,iBAAgB,EAAE,SAAS;AAAA;AAAA,EACzC,SAASd,IACN,OAAO;AAAA,IACN,OAAOA,IAAE,WAAWK,aAAY,EAAE,SAAS;AAAA,IAC3C,OAAOL,IAAE,OAAO,EAAE,SAAS;AAAA,IAC3B,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,IACtC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,IACvC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,CAAC,EACA,SAAS;AACd,CAAC;AAEM,IAAM,uCAAuCA,IAAE,OAAO;AAAA,EAC3D,UAAUA,IAAE,MAAM,6BAA6B;AACjD,CAAC;AAEM,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,UAAUA,IAAE,MAAM,gCAAgC;AAAA,EAClD,SAASA,IAAE,QAAQ;AAAA,EACnB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,uCAAuCA,IAAE,OAAO;AAAA,EAC3D,UAAUA,IAAE,MAAMe,0BAAyB;AAAA,EAC3C,SAASf,IAAE,QAAQ;AAAA,EACnB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,0CACXgB;AAEK,IAAM,gCAAgChB,IAAE,OAAO;AAAA,EACpD,QAAQA,IAAE,OAAO;AAAA,EACjB,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,6CACX;AAGK,IAAM,sCACXiB,sCAAqC,OAAO;AAAA,EAC1C,WAAWjB,IAAE,OAAO;AACtB,CAAC;AAEI,IAAM,sCACXkB,+BAA8B,IAAIlB,IAAE,OAAO,EAAE,WAAWA,IAAE,OAAO,EAAE,CAAC,CAAC;AAGhE,IAAM,4BAA4BmB,4BAA2B,OAAO;AAAA,EACzE,WAAWnB,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,4BAA4BoB,qBAAoB,OAAO;AAAA,EAClE,WAAWpB,IAAE,OAAO;AACtB,CAAC;AAMM,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAClD,CAAC;AAEM,IAAM,8BAA8BA,IAAE,OAAO;AAAA,EAClD,OAAOA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAC3B,CAAC;AAEM,IAAM,+BAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQA,IAAE,4CAAoC;AAAA,EAC9C,QAAQ;AACV,CAAC;AAEM,IAAM,gCACX,iCAAiC,OAAO;AAAA,EACtC,QAAQ;AACV,CAAC;AAMI,IAAM,uCAAuCA,IAAE,OAAO;AAAA,EAC3D,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO;AAAA,EAChB,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AAAA,EAC5C,YAAYA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAClD,CAAC;AAEM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EACpD,OAAOA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,EACzB,YAAYA,IAAE,OAAO;AACvB,CAAC;AAEM,IAAM,iCAAiC,yBAAyB,OAAO;AAAA,EAC5E,QAAQA,IAAE,gDAAsC;AAAA,EAChD,QAAQ;AACV,CAAC;AAEM,IAAM,kCACX,iCAAiC,OAAO;AAAA,EACtC,QAAQ;AACV,CAAC;AAMH,IAAM,6BAA6BA,IAAE,WAAW,oBAAoB;AAE7D,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,OAAOA,IAAE,OAAO;AAAA,EAChB,MAAMA,IAAE,MAAM,CAAC,4BAA4BA,IAAE,QAAQ,KAAK,CAAC,CAAC,EAAE,SAAS;AAAA,EACvE,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzC,cAAcA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAEM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EACpD,OAAOA,IAAE,OAAO;AAAA,EAChB,MAAM;AAAA,EACN,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,aAAaA,IAAE,KAAK,CAAC,QAAQ,WAAW,CAAC,EAAE,SAAS;AAAA,EACpD,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAC9B,CAAC;AAEM,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAC/B,MAAMA,IAAE,MAAM,6BAA6B;AAAA,EAC3C,QAAQA,IACL,OAAO;AAAA,IACN,QAAQA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IACtC,SAASA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,IACvC,YAAYA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC5C,CAAC,EACA,SAAS;AACd,CAAC;AAEM,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,OAAOA,IAAE,OAAO;AAAA,EAChB,UAAUA,IAAE,MAAM,uCAAuC;AAC3D,CAAC;AAEM,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAEI,IAAM,qCACX,iCAAiC,OAAO;AAAA,EACtC,QAAQ;AACV,CAAC;AAMI,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,SAASA,IAAE,QAAQ;AAAA,EACnB,YAAYA,IAAE,OAAO;AAAA;AACvB,CAAC;AAEM,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAEI,IAAM,qCAAqCD;AAAA,EAChD;AACF;AAMO,IAAM,4CAA4CC,IAAE,OAAO;AAAA,EAChE,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,qCAAqCA,IAAE,OAAO;AAAA,EACzD,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM,sCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,0DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAEI,IAAM,uCAAuCD;AAAA,EAClD;AACF;AAMO,IAAM,yCAAyCC,IAAE,OAAO;AAAA,EAC7D,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,oDAAwC;AAAA,IAClD,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,oCACX,kCAAkC,+BAA+B;AAM5D,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAClC,CAAC;AAEM,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EACjD,MAAMA,IAAE,OAAO;AAAA,EACf,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AAAA,EACpB,QAAQA,IAAE,OAAO;AACnB,CAAC;AAEM,IAAM,+BAA+BA,IAAE,OAAO;AAAA,EACnD,MAAMA,IAAE,OAAO;AAAA,EACf,SAASA,IAAE,OAAO;AACpB,CAAC;AAED,IAAM,0CAA0CA,IAC7C,WAAW,iCAAiC,EAC5C,6BAA+C;AAE3C,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EACjD,MAAMA,IAAE,OAAO;AAAA,EACf,QAAQA,IAAE,OAAO;AAAA,EACjB,YAAYA,IAAE,OAAO;AAAA,EACrB,OAAOA,IAAE,MAAM,0BAA0B;AAAA,EACzC,gBAAgBA,IAAE,OAAO;AAAA,EACzB,gBAAgBA,IAAE,OAAO;AAAA,EACzB,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,SAASA,IAAE,MAAM,4BAA4B;AAAA,EAC7C,eAAeA,IAAE,OAAO,EAAE,QAAQ,EAAE;AAAA,EACpC,gBAAgBA,IAAE,MAAM,0BAA0B,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC9D,yBAAyBA,IAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,EAC7C,yBAAyBA,IAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,EAC7C,cAAcA,IAAE,OAAO,EAAE,QAAQ,EAAE;AAAA,EACnC,eAAeA,IAAE,MAAM,0BAA0B,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC7D,wBAAwBA,IAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,EAC5C,wBAAwBA,IAAE,OAAO,EAAE,QAAQ,CAAC;AAC9C,CAAC;AAEM,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,SAASA,IAAE,QAAQ,IAAI;AAAA,EACvB,MAAM;AACR,CAAC;AAEM,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,SAASA,IAAE,QAAQ,KAAK;AAAA,EACxB,mBAAmB;AAAA,EACnB,oBAAoBA,IAAE,OAAO;AAC/B,CAAC;AAEM,IAAM,+BAA+BA,IAAE;AAAA,EAC5C,CAAC,UAAU;AACT,QACE,SACA,OAAO,UAAU,YACjB,CAAC,MAAM,QAAQ,KAAK,KACpB,EAAE,aAAa,QACf;AACA,YAAM,eAAe,2BAA2B,UAAU,KAAK;AAC/D,UAAI,aAAa,SAAS;AACxB,eAAO,EAAE,SAAS,MAAM,MAAM,aAAa,KAAK;AAAA,MAClD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EACAA,IAAE,mBAAmB,WAAW;AAAA,IAC9B;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEO,IAAM,gCAAgC,yBAAyB,OAAO;AAAA,EAC3E,QAAQA,IAAE,gDAAsC;AAAA,EAChD,QAAQ;AACV,CAAC;AAEM,IAAM,iCAAiCA,IAAE,MAAM;AAAA,EACpD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAMM,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EAChD,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM,6BAA6B,yBAAyB,OAAO;AAAA,EACxE,QAAQA,IAAE,wCAAkC;AAAA,EAC5C,QAAQ;AACV,CAAC;AAEM,IAAM,8BAA8BD;AAAA,EACzC;AACF;AAMO,IAAM,qCAAqCC,IAAE,OAAO;AAAA,EACzD,WAAWA,IAAE,OAAO;AAAA,EACpB,SAASA,IAAE,OAAO;AACpB,CAAC;AAEM,IAAM,8BAA8BA,IAAE,OAAO;AAAA,EAClD,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM,+BAA+B,yBAAyB,OAAO;AAAA,EAC1E,QAAQA,IAAE,4CAAoC;AAAA,EAC9C,QAAQ;AACV,CAAC;AAEM,IAAM,gCAAgCD;AAAA,EAC3C;AACF;AAMO,IAAM,oCAAoCC,IAAE,OAAO;AAAA,EACxD,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO;AAAA,EAChB,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,YAAYA,IAAE,OAAO;AAAA,EACrB,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5B,iBAAiBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC9C,kBAAkBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,eAAeA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC5C,gBAAgBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAC/C,CAAC;AAEM,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EACjD,QAAQA,IAAE,OAAO;AAAA,EACjB,OAAOA,IAAE,OAAO;AAAA,EAChB,KAAKA,IAAE,OAAO;AAAA,EACd,OAAOA,IAAE,OAAO;AAAA,EAChB,OAAOA,IAAE,QAAQ;AACnB,CAAC;AAEM,IAAM,8BAA8B,yBAAyB,OAAO;AAAA,EACzE,QAAQA,IAAE,0CAAmC;AAAA,EAC7C,QAAQ;AACV,CAAC;AAEM,IAAM,+BAA+BD;AAAA,EAC1C;AACF;AAMO,IAAM,gDAAgDC,IAAE,OAAO;AAAA,EACpE,eAAeA,IAAE,OAAO;AAAA,EACxB,YAAYA,IAAE,OAAO;AACvB,CAAC;AAEM,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EAC7D,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,WAAWA,IAAE,QAAQ;AACvB,CAAC;AAEM,IAAM,0CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sEAAiD;AAAA,EAC3D,QAAQ;AACV,CAAC;AAEI,IAAM,2CAA2CA,IAAE,MAAM;AAAA,EAC9D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,iDAAiDA,IAAE,OAAO;AAAA,EACrE,eAAeA,IAAE,OAAO;AAAA,EACxB,YAAYA,IAAE,OAAO;AAAA,EACrB,YAAYA,IAAE,OAAO;AAAA,EACrB,SAASA,IAAE,OAAO;AAAA,EAClB,WAAWA,IAAE,QAAQ;AACvB,CAAC;AAEM,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,SAASA,IAAE,QAAQ;AACrB,CAAC;AAEM,IAAM,2CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,wEAAkD;AAAA,EAC5D,QAAQ;AACV,CAAC;AAEI,IAAM,4CAA4CA,IAAE,MAAM;AAAA,EAC/D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAMM,IAAM,gDAAgDA,IAAE,OAAO;AAAA,EACpE,WAAWA,IAAE,OAAO;AAAA,EACpB,MAAMA,IAAE,OAAO;AAAA,EACf,YAAYA,IAAE,OAAO;AAAA,EACrB,eAAeA,IAAE,OAAO;AAAA,EACxB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,cAAcA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAEM,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EAC7D,SAASA,IAAE,OAAO;AAAA,EAClB,WAAWA,IAAE,QAAQ;AAAA,EACrB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,0CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,oEAAgD;AAAA,EAC1D,QAAQ;AACV,CAAC;AAEI,IAAM,2CAA2CA,IAAE,MAAM;AAAA,EAC9D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAKM,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,sDAAyC;AAAA,EACrD;AACF;AAEO,IAAM,oCAAoCA,IAAE,MAAM;AAAA,EACvD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAKD,IAAM,mDAAmDA,IAAE,OAAO;AAAA,EAChE,WAAWA,IAAE,OAAO;AAAA,EACpB,UAAUA,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnB,UAAUA,IAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE,SAAS;AAChD,CAAC;AAEM,IAAM,4CAA4CA,IAAE,OAAO;AAAA,EAChE,SAASA,IAAE,OAAO;AAAA,EAClB,YAAYA,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrB,UAAUA,IAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA,EAE9C,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9B,UAAUA,IAAE,QAAQ,EAAE,SAAS;AACjC,CAAC;AAEM,IAAM,6CACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,4EAAoD;AAAA,EAC9D,QAAQ;AACV,CAAC;AAEI,IAAM,8CAA8CA,IAAE,MAAM;AAAA,EACjE,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAID,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EACtD,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAED,IAAM,iCAAiCA,IAAE,OAAO;AAAA,EAC9C,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IAAE,OAAO;AAAA,EACtB,MAAMA,IAAE,OAAO;AACjB,CAAC;AAED,IAAM,iCAAiCA,IAAE,OAAO;AAAA,EAC9C,UAAUA,IAAE,OAAO;AACrB,CAAC;AAED,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EAC7C,UAAUA,IAAE,OAAO;AAAA,EACnB,QAAQA,IAAE,OAAO;AACnB,CAAC;AAEM,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,gBAAgBA,IAAE,MAAM,8BAA8B;AAAA,EACtD,cAAcA,IAAE,MAAM,8BAA8B;AAAA,EACpD,cAAcA,IAAE,MAAM,6BAA6B;AACrD,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,sDAAyC;AAAA,IACnD,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,oCAAoCA,IAAE,MAAM;AAAA,EACvD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAED,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EACtD,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO;AAAA,EACpB,gBAAgBA,IAAE,MAAM,8BAA8B;AAAA,EACtD,eAAeA,IAAE,MAAM,8BAA8B;AAAA,EACrD,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,cAAcA,IAAE,OAAO;AAAA,EACvB,eAAeA,IAAE,OAAO;AAAA,EACxB,cAAcA,IAAE,OAAO;AAAA,EACvB,oBAAoBA,IAAE,OAAO;AAAA,EAC7B,mBAAmBA,IAAE,OAAO;AAC9B,CAAC;AAEM,IAAM,mCAAmC,yBAAyB;AAAA,EACvE;AAAA,IACE,QAAQA,IAAE,oDAAwC;AAAA,IAClD,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,oCAAoCD;AAAA,EAC/C;AACF;AAMO,IAAM,0CAA0CC,IAAE,OAAO;AAAA,EAC9D,WAAWA,IAAE,OAAO;AAAA,EACpB,oBAAoBA,IAAE,OAAO,EAAE,SAAS;AAC1C,CAAC;AAEM,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,cAAcA,IAAE,OAAO;AAAA,EACvB,cAAcA,IAAE,OAAO;AACzB,CAAC;AAEM,IAAM,oCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,sDAAyC;AAAA,EACnD,QAAQ;AACV,CAAC;AAEI,IAAM,qCAAqCD;AAAA,EAChD;AACF;AAKO,IAAM,uCAAuCC,IAAE,OAAO;AAAA,EAC3D,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,MAAMA,IACH;AAAA,IACCA,IAAE,OAAO,EAAE,MAAMA,IAAE,OAAO,GAAG,UAAUA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;AAAA,EAC1E,EACC,SAAS;AACd,CAAC;AAEM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EACpD,cAAcA,IAAE,OAAO;AACzB,CAAC;AAEM,IAAM,iCAAiC,yBAAyB,OAAO;AAAA,EAC5E,QAAQA,IAAE,gDAAsC;AAAA,EAChD,QAAQ;AACV,CAAC;AAEM,IAAM,kCAAkCD;AAAA,EAC7C;AACF;AAKO,IAAM,uCAAuCC,IAAE,OAAO;AAAA,EAC3D,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,iCAAiC,yBAAyB,OAAO;AAAA,EAC5E,QAAQA,IAAE,gDAAsC;AAAA,EAChD,QAAQ;AACV,CAAC;AAED,IAAM,gCAAgCA,IAAE,OAAO,CAAC,CAAC;AAE1C,IAAM,kCAAkCD;AAAA,EAC7C;AACF;AAOO,IAAM,wCACX;AAEF,IAAM,+CAA+CC,IAAE,OAAO;AAAA,EAC5D,WAAWA,IAAE,OAAO;AACtB,CAAC;AAEM,IAAM,yCACX,yBAAyB,OAAO;AAAA,EAC9B,QAAQA,IAAE,kEAA+C;AAAA,EACzD,QAAQ;AACV,CAAC;AAEI,IAAM,0CAA0CD;AAAA,EACrD;AACF;AAGO,IAAM,sBAAsBC,IAAE,mBAAmB,UAAU;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,wCAAwCA,IAAE,MAAM;AAAA,EAC3D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,kCAAkCA,IAAE,MAAM;AAAA,EACrD,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,qCACX,kCAAkC,gCAAgC;AAE7D,IAAM,+CACX,kCAAkC,0CAA0C;AAEvE,IAAM,uCAAuCD;AAAA,EAClD;AACF;AAEO,IAAM,mCAAmCA;AAAA,EAC9C;AACF;AAEO,IAAM,yCAAyCC,IAAE,MAAM;AAAA,EAC5D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,4CAA4CA,IAAE,MAAM;AAAA,EAC/D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,yCAAyCA,IAAE,MAAM;AAAA,EAC5D,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAEM,IAAM,4CACX,kCAAkC,uCAAuC;AAEpE,IAAM,+CAA+CA,IAAE,MAAM;AAAA,EAClE,iCAAiC,OAAO;AAAA,IACtC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD;AACF,CAAC;AAGM,IAAM,sCAAsCA,IAAE,OAAO;AAAA,EAC1D,MAAMA,IAAE,qDAAyD;AAAA,EACjE,SAASA,IAAE,OAAO;AAAA,EAClB,WAAWA,IAAE,OAAO;AAAA,EACpB,gBAAgBA,IAAE,OAAO;AAC3B,CAAC;AAGD,IAAM,yCAAyCA,IAAE,OAAO;AAAA,EACtD,MAAMA,IAAE,6DAA6D;AAAA,EACrE,SAASA,IAAE,OAAO;AAAA,EAClB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAED,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EAC/C,MAAMA,IAAE,6CAAqD;AAAA,EAC7D,WAAWA,IAAE,OAAO;AACtB,CAAC;AAGM,IAAM,wCAAwCA,IAAE,OAAO;AAAA,EAC5D,MAAMA,IAAE,yDAA2D;AAAA,EACnE,SAASA,IAAE,OAAO;AACpB,CAAC;AAEM,IAAM,0CAA0CA,IAAE,OAAO;AAAA,EAC9D,MAAMA,IAAE,+DAA8D;AAAA,EACtE,gBAAgBA,IAAE,OAAO;AAAA,EACzB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAGM,IAAM,wCAAwCA,IAAE,OAAO;AAAA,EAC5D,WAAWA,IAAE,OAAO;AAAA,EACpB,cAAcA,IAAE,mBAAmB,QAAQ;AAAA,IACzC,GAAGqB;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH,CAAC;AAEM,IAAM,kCACX,8BAA8B,OAAO;AAAA,EACnC,QAAQrB,IAAE,gEAA6C;AAAA,EACvD,QAAQ;AACV,CAAC;AAGI,IAAM,gCAAgC,yBAAyB,OAAO;AAAA,EAC3E,QAAQA,IAAE,4DAA2C;AAAA,EACrD,QAAQ;AACV,CAAC;AAGM,IAAM,sBAAsB,yBAAyB,OAAO;AAAA,EACjE,QAAQA,IAAE,wCAAiC;AAAA,EAC3C,QAAQ;AACV,CAAC;;;ACzmCM,IAAM,cAAN,MAAkB;AAAA,EACN;AAAA,EACT,aAA4B;AAAA,EAC5B,UAAU;AAAA,EAED,yBAAiD,CAAC;AAAA;AAAA,EAG3D,qBAAqD;AAAA;AAAA,EAGrD,kBAA+C;AAAA,EAEvD,YAAY,SAA6B;AACvC,SAAK,UAAU,IAAI,eAAe;AAAA,MAChC,WAAW,QAAQ;AAAA,MACnB,gBAAgB,QAAQ;AAAA,IAC1B,CAAC;AAED,SAAK,QAAQ,eAAe,CAAC,iBAAiB;AAC5C,WAAK,sBAAsB,YAAY;AAAA,IACzC,CAAC;AAED,SAAK,QAAQ;AAAA,MAAqB,CAAC,WACjC,KAAK,2BAA2B,MAAM;AAAA,IACxC;AACA,SAAK,QAAQ;AAAA,MAAkB,CAAC,WAC9B,KAAK,wBAAwB,MAAM;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,MAAc,KACZ,QACA,QACA,QACA,SACsB;AACtB,UAAM,MAAM,MAAM,KAAK,QAAQ,YAAY,QAAQ,QAAQ,OAAO;AAClE,WAAO,OAAO,MAAM,GAAG;AAAA,EACzB;AAAA,EAEA,MAAc,YACZ,QACA,QACA,QACA,SACsB;AACtB,SAAK,iBAAiB;AACtB,SAAK,eAAe;AACpB,WAAO,KAAK,KAAK,QAAQ,QAAQ,QAAQ,OAAO;AAAA,EAClD;AAAA,EAEA,MAAc,yBACZ,QACA,QACA,SACsB;AACtB,WAAO,KAAK,YAAY,QAAQ,CAAC,GAAG,QAAQ,OAAO;AAAA,EACrD;AAAA,EAEA,IAAI,YAA2B;AAC7B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,cAAuB;AACzB,WAAO,CAAC,KAAK,WAAW,KAAK,QAAQ;AAAA,EACvC;AAAA,EAEA,MAAM,kBACJ,QACkC;AAClC,SAAK,iBAAiB;AAEtB,UAAM,SAAS,MAAM,KAAK;AAAA;AAAA,MAExB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,SAAK,aAAa,OAAO;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,YACJ,QAC4B;AAC5B,SAAK,iBAAiB;AAEtB,UAAM,SAAS,MAAM,KAAK;AAAA;AAAA,MAExB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,SAAK,aAAa,OAAO;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,eACJ,QAO+B;AAC/B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,mBAAoD;AACxD,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,SAAoC,CAAC,GACR;AAC7B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBACJ,QACkC;AAClC,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,sBACJ,QACsC;AACtC,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,sBACJ,QACsC;AACtC,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,QAC6B;AAC7B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBACJ,QACkC;AAClC,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,QAC6B;AAC7B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkD;AACtD,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eAA4C;AAChD,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,UACJ,SAAiC,CAAC,GACR;AAC1B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBAAgD;AACpD,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aAAwC;AAC5C,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eACJ,QAC+B;AAC/B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cAA0C;AAC9C,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkD;AACtD,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,WAAO,KAAK;AAAA;AAAA,MAEV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eACE,UACA,QACY;AACZ,UAAM,QAA8B,EAAE,UAAU,OAAO;AACvD,SAAK,uBAAuB,KAAK,KAAK;AAEtC,QAAI,eAAe;AACnB,WAAO,MAAM;AACX,UAAI,CAAC,cAAc;AACjB,uBAAe;AACf,cAAM,MAAM,KAAK,uBAAuB,QAAQ,KAAK;AACrD,YAAI,QAAQ,IAAI;AACd,eAAK,uBAAuB,OAAO,KAAK,CAAC;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,qBAAqB,SAAwC;AAC3D,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EAEA,yBAA+B;AAC7B,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EAEA,kBAAkB,SAAqC;AACrD,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,sBAA4B;AAC1B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,SAAS;AAChB;AAAA,IACF;AACA,SAAK,UAAU;AAEf,SAAK,uBAAuB,SAAS;AACrC,SAAK,qBAAqB;AAC1B,SAAK,kBAAkB;AAEvB,UAAM,KAAK,QAAQ,MAAM;AAAA,EAC3B;AAAA,EAEQ,sBAAsB,cAA6C;AACzE,yBAAqB,cAAc,CAAC,GAAG,KAAK,sBAAsB,CAAC;AAAA,EACrE;AAAA,EAEQ,2BACN,QAC0E;AAC1E,UAAM,UAAU,KAAK;AACrB,QAAI,WAAW,MAAM;AACnB;AAAA,IACF;AACA,WAAO,QAAQ,MAAM;AAAA,EACvB;AAAA,EAEQ,wBACN,QACwC;AACxC,UAAM,UAAU,KAAK;AACrB,QAAI,WAAW,MAAM;AACnB,aAAO,EAAE,WAAW,MAAM,SAAS,CAAC,EAAE;AAAA,IACxC;AACA,WAAO,QAAQ,MAAM;AAAA,EACvB;AAAA,EAEQ,mBAAyB;AAC/B,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,iBAAuB;AAC7B,QAAI,KAAK,cAAc,MAAM;AAC3B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC7fO,IAAM,mBAAmB;AAAA,EAC9B,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,wBAAwB;AAAA,EACxB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV;AAwRO,SAAS,mCACd,KACsD;AACtD,QAAM,SAAS,iCAAiC,UAAU,GAAG;AAC7D,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO;AAAA,EACT;AAEA,QAAM,eAA2C,OAAO;AAExD,UAAQ,aAAa,MAAM;AAAA,IACzB;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,WAAW,aAAa;AAAA,QACxB,YAAY,aAAa;AAAA,QACzB,MAAM,aAAa;AAAA,MACrB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,WAAW,aAAa;AAAA,QACxB,YAAY,aAAa;AAAA,MAC3B;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,WAAW,aAAa;AAAA,QACxB,YAAY,aAAa;AAAA,QACzB,MAAM,aAAa;AAAA,MACrB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,WAAW,aAAa;AAAA,QACxB,YAAY,aAAa;AAAA,QACzB,YAAY,aAAa;AAAA,MAC3B;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,SAAS,aAAa;AAAA,MACxB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,WAAW,aAAa;AAAA,QACxB,UAAU;AAAA,QACV,SAAS,2BAA2B,aAAa,OAAO;AAAA,QACxD,SAAS,QAAQ,aAAa,OAAO;AAAA,MACvC;AAAA,IAEF,wDAAmD;AACjD,YAAM,SAA6B,aAAa;AAChD,YAAM,OAAO,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,WAAW;AAClE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,WAAW,aAAa;AAAA,QACxB,UAAU,aAAa;AAAA,QACvB,SAAS;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IAEA;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,OAAO,aAAa;AAAA,MACtB;AAAA,IAEF,sEAA0D;AACxD,YAAM,KAAiB,aAAa;AACpC,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,aAAa,GAAG;AAAA,QAChB,cAAc,GAAG;AAAA,QACjB,iBAAiB,GAAG;AAAA,QACpB,qBAAqB,GAAG;AAAA,QACxB,gBAAgB,GAAG;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,4CAA6C;AAC3C,YAAM,MAAM,aAAa;AACzB,YAAM,WAAmC,CAAC;AAE1C,iBAAW,SAAS,IAAI,SAAS;AAC/B,YAAI,MAAM,SAAS,YAAY;AAC7B,mBAAS,KAAK;AAAA,YACZ,MAAM,iBAAiB;AAAA,YACvB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAEA,UAAI,IAAI,SAAS,wBAAwB,WAAW;AAClD,iBAAS,KAAK;AAAA,UACZ,MAAM,iBAAiB;AAAA,UACvB,SAAS;AAAA,UACT,MAAM,uBAAuB,GAAG;AAAA,QAClC,CAAC;AAAA,MACH,WAAW,IAAI,SAAS,wBAAwB,MAAM;AACpD,iBAAS,KAAK;AAAA,UACZ,MAAM,iBAAiB;AAAA,UACvB,SAAS;AAAA,QACX,CAAC;AAAA,MACH,OAAO;AACL,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,WAAW,IAAI;AAAA,UACf,MAAM,IAAI;AAAA,UACV,SAAS,IAAI;AAAA,UACb,UAAU,aAAa;AAAA,QACzB,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAAA,IAEA;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,SAAS,aAAa;AAAA,QACtB,WAAW,aAAa;AAAA,QACxB,WAAW,aAAa;AAAA,MAC1B;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,WAAW,aAAa;AAAA,QACxB,YAAY,aAAa;AAAA,QACzB,gBAAgB,aAAa;AAAA,MAC/B;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,UAAU,aAAa;AAAA,MACzB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,OAAO,aAAa;AAAA,MACtB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,SAAS,aAAa;AAAA,QACtB,SAAS,aAAa;AAAA,MACxB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,OAAO,aAAa;AAAA,MACtB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,UAAU,aAAa;AAAA,MACzB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,aAAa,aAAa;AAAA,MAC5B;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,WAAW,aAAa;AAAA,MAC1B;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,iBAAiB,aAAa;AAAA,MAChC;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,iBAAiB,aAAa;AAAA,QAC9B,UAAU,aAAa;AAAA,MACzB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,YAAY,aAAa;AAAA,QACzB,SAAS,aAAa;AAAA,QACtB,SAAS,aAAa;AAAA,QACtB,OAAO,aAAa;AAAA,MACtB;AAAA,IAEF;AACE,aAAO;AAAA,QACL,MAAM,iBAAiB;AAAA,QACvB,YAAY,aAAa;AAAA,QACzB,SAAS,aAAa;AAAA,QACtB,SAAS,aAAa;AAAA,MACxB;AAAA,IAEF;AACE,aAAO,aAAa,aAAa,IAAI,CAAC,iBAAiB;AAAA,QACrD,MAAM,iBAAiB;AAAA,QACvB,QAAQ,aAAa;AAAA,QACrB,WAAW,aAAa;AAAA,QACxB,SAAS,aAAa;AAAA,QACtB,YAAY,aAAa;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,SAAS,YAAY;AAAA,QACrB,QAAQ;AAAA,MACV,EAAE;AAAA,IAEJ;AACE,cAAQ,aAAa,eAAe,CAAC,GAAG,IAAI,CAAC,gBAAgB;AAAA,QAC3D,MAAM,iBAAiB;AAAA,QACvB,QAAQ,aAAa;AAAA,QACrB,WAAW,aAAa;AAAA,QACxB,SAAS,aAAa;AAAA,QACtB,YAAY,aAAa;AAAA,QACzB,SAAS,WAAW;AAAA,QACpB,SAAS,WAAW;AAAA,QACpB,QAAQ,aAAa;AAAA,QACrB,UAAU,WAAW;AAAA,QACrB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,MACrB,EAAE;AAAA,IAEJ;AACE,aAAO;AAAA,QACL,MAAM;AAAA,QACN,WAAW,aAAa;AAAA,QACxB,kBAAkB,aAAa;AAAA,QAC/B,uBAAuB,aAAa;AAAA,MACtC;AAAA,IAEF;AACE,aAAO;AAAA,EACX;AACF;AAMO,IAAM,qBAAN,MAAyB;AAAA,EAqB9B,YACmB,UAIb,CAAC,GACL;AALiB;AAAA,EAKhB;AAAA,EA1BK,iBAAiB;AAAA,EAEjB,iBAA0C;AAAA,EAE1C,WAAW;AAAA,EAEX,qBAAqB;AAAA,EAErB,mBAAsC;AAAA,EAEtC,wBAA4D;AAAA,EAE5D,SAAuB,CAAC;AAAA,EAExB,WAAW;AAAA,EAEX,kBAAsC,CAAC;AAAA,EAEvC,cAAc,oBAAI,IAAoB;AAAA,EAUtC,YAAY,WAA2B;AAC7C,WAAO,KAAK,YAAY,IAAI,SAAS,KAAK;AAAA,EAC5C;AAAA,EAEA,eAAe,SAGb;AACA,UAAM,aAAqC,CAAC;AAE5C,QAAI,QAAQ,SAAS,YAAY;AAC/B,WAAK,YAAY,IAAI,QAAQ,WAAW,QAAQ,QAAQ;AAAA,IAC1D;AAEA,QAAI,QAAQ,SAAS,iBAAiB,UAAU;AAC9C,WAAK,YAAY,IAAI,QAAQ,QAAQ,IAAI,QAAQ,QAAQ,IAAI;AAAA,IAC/D;AAEA,QAAI,QAAQ,SAAS,iBAAiB,eAAe;AACnD,WAAK,YAAY,IAAI,QAAQ,QAAQ,IAAI,QAAQ,QAAQ,IAAI;AAAA,IAC/D;AAGA,QAAI,QAAQ,SAAS,iBAAiB,YAAY;AAChD,gBAAU,EAAE,GAAG,SAAS,UAAU,KAAK,YAAY,QAAQ,SAAS,EAAE;AAAA,IACxE;AAEA,QAAI,QAAQ,SAAS,iBAAiB,oBAAoB;AACxD,WAAK,YAAY,QAAQ;AAAA,IAC3B;AAEA,QAAI,QAAQ,SAAS,iBAAiB,WAAW;AAC/C,WAAK,qBAAqB,QAAQ;AAClC,UAAI,KAAK,SAAS,WAAW,GAAG;AAC9B,aAAK,WAAW,QAAQ;AAAA,MAC1B;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,iBAAiB,kBAAkB;AACtD,WAAK,iBAAiB;AAAA,IACxB;AAEA,QAAI,QAAQ,SAAS,iBAAiB,OAAO;AAC3C,WAAK,OAAO,KAAK,OAAO;AAAA,IAC1B;AAEA,QAAI,QAAQ,SAAS,qBAAqB;AACxC,WAAK,mBAAmB,QAAQ;AAChC,WAAK,wBAAwB,QAAQ;AACrC,aAAO,EAAE,SAAS,MAAM,WAAW;AAAA,IACrC;AAEA,QAAI,QAAQ,SAAS,iBAAiB,qBAAqB;AACzD,UAAI,QAAQ,6BAAkC;AAC5C,aAAK,iBAAiB;AAAA,MACxB,WAAW,KAAK,gBAAgB;AAC9B,aAAK;AACL,mBAAW,KAAK,KAAK,oBAAoB,CAAC;AAC1C,aAAK,iBAAiB;AACtB,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,iBAAiB,qBAAqB;AACzD,WAAK,oBAAoB,OAAO;AAAA,IAClC;AAEA,WAAO,EAAE,SAAS,WAAW;AAAA,EAC/B;AAAA,EAEQ,sBAA0C;AAChD,QACE,KAAK,QAAQ,mBACb,KAAK,qBAAqB,QAC1B,KAAK,0BAA0B,MAC/B;AACA,WAAK,mBACH,gBAAgB,KAAK,sBAAsB,KAAK,QAAQ,KAAK;AAAA,IACjE;AAEA,UAAM,aAAa,KAAK,iBACpB,oBAAoB,KAAK,cAAc,IACvC;AACJ,UAAM,SAAS,KAAK,sBAAsB,KAAK;AAC/C,UAAM,OAAO;AAAA,MACX,MAAM,iBAAiB;AAAA,MACvB,WAAW,KAAK,QAAQ,aAAa;AAAA,MACrC,YAAY,KAAK,IAAI,KAAK,KAAK,QAAQ,aAAa,KAAK,IAAI;AAAA,MAC7D,UAAU,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA,UAAU,CAAC,GAAG,KAAK,eAAe;AAAA,MAClC,MAAM;AAAA,MACN,WAAW,KAAK;AAAA,IAClB;AAEA,QAAI,KAAK,uBAAuB;AAC9B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ,CAAC,KAAK,sBAAsB,OAAO;AAAA,QAC3C,kBAAkB,KAAK;AAAA,QACvB,uBAAuB,KAAK;AAAA,QAC5B,OAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,KAAK,OAAO,SAAS,GAAG;AAC1B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO;AAAA,QAChD,kBAAkB,KAAK;AAAA,QACvB,uBAAuB;AAAA,QACvB,OAAO,KAAK,OAAO,CAAC,KAAK;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,kBAAkB,KAAK;AAAA,MACvB,uBAAuB;AAAA,MACvB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,oBAAoB,SAAqC;AAC/D,QAAI,uBAAuB,OAAO,GAAG;AACnC,WAAK,gBAAgB,KAAK,OAAO;AAAA,IACnC;AAAA,EACF;AAAA,EAEQ,iBAAuB;AAC7B,SAAK,iBAAiB;AACtB,SAAK,WAAW;AAChB,SAAK,qBAAqB;AAC1B,SAAK,mBAAmB;AACxB,SAAK,wBAAwB;AAC7B,SAAK,SAAS,CAAC;AACf,SAAK,kBAAkB,CAAC;AAAA,EAC1B;AACF;AAEO,SAAS,kBAAkB,SAAwC;AACxE,SACE,QAAQ,SAAS,uBACjB,QAAQ,SAAS,cACjB,QAAQ,SAAS;AAErB;AAEO,SAAS,uBACd,SAC+B;AAC/B,SACE,QAAQ,SAAS,iBAAiB,aAClC,QAAQ,SAAS,iBAAiB,QAClC,QAAQ,SAAS,iBAAiB,YAClC,QAAQ,SAAS,iBAAiB,cAClC,QAAQ,SAAS,iBAAiB,QAClC,QAAQ,SAAS,iBAAiB,SAClC,QAAQ,SAAS,iBAAiB;AAEtC;AAEA,SAAS,oBAAoB,SAAuC;AAClE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,MAAiC;AACxD,MAAI;AACF,UAAM,SAAkB,KAAK,MAAM,IAAI;AACvC,UAAM,SAAS,iBAAiB,UAAU,MAAM;AAChD,WAAO,OAAO,UAAU,OAAO,OAAO;AAAA,EACxC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,2BACP,SACsB;AACtB,MAAI,WAAW,MAAM;AACnB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,YAAY,UAAU;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,WAAO;AAAA,EACT;AACA,SAAO,OAAO,OAAO;AACvB;AAEA,SAAS,uBAAuB,SAAsC;AACpE,SAAO,QAAQ,QACZ,OAAO,CAAC,UAAU,MAAM,SAAS,MAAM,EACvC,IAAI,CAAC,UAAU,MAAM,IAAI,EACzB,KAAK,EAAE;AACZ;;;ACxyBO,SAAS,gBACd,QACA,SACY;AACZ,MAAI,CAAC,OAAQ,QAAO,MAAM;AAAA,EAAC;AAC3B,MAAI,OAAO,SAAS;AAClB,YAAQ;AACR,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB,OAAO;AACL,UAAM,WAAW,MAAM,QAAQ;AAC/B,WAAO,iBAAiB,SAAS,UAAU,EAAE,MAAM,KAAK,CAAC;AACzD,WAAO,MAAM,OAAO,oBAAoB,SAAS,QAAQ;AAAA,EAC3D;AACF;AAEA,SAAS,cAAc,QAA4B;AACjD,MAAI,OAAO,kBAAkB,OAAO;AAClC,WAAO,OAAO;AAAA,EAChB;AAEA,SAAO,IAAI;AAAA,IACT,OAAO,OAAO,WAAW,WAAW,OAAO,SAAS;AAAA,EACtD;AACF;AAEO,SAAS,eAAe,QAAuC;AACpE,MAAI,QAAQ,SAAS;AACnB,UAAM,cAAc,MAAM;AAAA,EAC5B;AACF;AAqBA,gBAAuB,iBACrB,QACA,WACA,eACA,QACA,SACmD;AACnD,iBAAe,SAAS,WAAW;AAEnC,QAAM,YAAY,KAAK,IAAI;AAC3B,MAAI,cAA0B,MAAM;AAAA,EAAC;AACrC,QAAM,cAAc,IAAI,QAAc,CAACsB,aAAY;AACjD,kBAAcA;AAAA,EAChB,CAAC;AACD,QAAM,SAAS,IAAI,cAAc,aAAa;AAAA,IAC5C,wBAAwB,SAAS;AAAA,IACjC;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,EACzB,CAAC;AACD,gBAAc,IAAI,MAAM;AACxB,QAAM,cAAc,OAAO,eAAe,OAAO,mBAAmB;AACpE,MAAI,eAA2B,MAAM;AAAA,EAAC;AACtC,QAAM,eAAe,IAAI,QAAc,CAACA,aAAY;AAClD,mBAAeA;AAAA,EACjB,CAAC;AACD,QAAM,qBAAqB,gBAAgB,SAAS,aAAa,MAAM;AACrE,WAAO,WAAW;AAClB,iBAAa;AACb,SAAK,OAAO,iBAAiB,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EAC/C,CAAC;AAED,MAAI;AACF,UAAM,QAAQ,KAAK;AAAA,MACjB,OAAO,eAAe;AAAA,QACpB,MAAM;AAAA,QACN,QAAQ,SAAS;AAAA,QACjB,OAAO,SAAS;AAAA,QAChB,cAAc,SAAS;AAAA,MACzB,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACF,CAAC;AACD,mBAAe,SAAS,WAAW;AAEnC,qBAAiB,OAAO,OAAO,SAAS,GAAG;AACzC,qBAAe,SAAS,WAAW;AACnC,YAAM;AAAA,IACR;AACA,mBAAe,SAAS,WAAW;AAAA,EACrC,UAAE;AACA,uBAAmB;AACnB,gBAAY;AACZ,kBAAc,OAAO,MAAM;AAAA,EAC7B;AACF;AAEO,SAAS,yBACd,cACmC;AACnC,QAAM,SAAS,0BAA0B,UAAU,YAAY;AAC/D,SAAO,OAAO,UAAU,OAAO,KAAK,OAAO,eAAe;AAC5D;AAEO,IAAM,gBAAN,MAAoB;AAAA,EAOzB,YACE,QACiB,WAKb,CAAC,GACL;AANiB;AAOjB,SAAK,UAAU;AACf,SAAK,gBAAgB,IAAI,mBAAmB;AAAA,MAC1C,WAAW,SAAS;AAAA,MACpB,WAAW,SAAS;AAAA,MACpB,iBAAiB,SAAS,iBAAiB;AAAA,IAC7C,CAAC;AAAA,EACH;AAAA,EArBiB,SAA6B,CAAC;AAAA,EAC9B;AAAA,EACT,kBAAuC;AAAA,EACvC,QAAQ;AAAA,EACC;AAAA,EAmBR,sBAAsB,CAC7B,iBACS;AACT,UAAM,QAAQ,yBAAyB,YAAY;AACnD,QAAI,CAAC,MAAO;AAEZ,UAAM,YAAY,mCAAmC,KAAK;AAC1D,QAAI,cAAc,KAAM;AAExB,UAAM,WAAW,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;AAElE,eAAW,OAAO,UAAU;AAC1B,YAAM,EAAE,SAAS,WAAW,IAAI,KAAK,cAAc,eAAe,GAAG;AACrE,UAAI,WAAW,KAAK,aAAa,OAAO,GAAG;AACzC,aAAK,SAAS,OAAO;AAAA,MACvB;AAEA,iBAAW,SAAS,YAAY;AAC9B,YAAI,KAAK,aAAa,KAAK,GAAG;AAC5B,eAAK,SAAS,KAAK;AAAA,QACrB;AACA,YAAI,MAAM,SAAS,iBAAiB,QAAQ;AAC1C,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAmB;AACjB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,OAAO,WAA8D;AACnE,WAAO,MAAM;AACX,aAAO,KAAK,OAAO,SAAS,GAAG;AAC7B,cAAM,MAAM,KAAK,OAAO,MAAM;AAC9B,cAAM;AAEN,YAAI,IAAI,SAAS,iBAAiB,QAAQ;AACxC;AAAA,QACF;AAAA,MACF;AAEA,UAAI,KAAK,SAAS,KAAK,OAAO,WAAW,GAAG;AAC1C;AAAA,MACF;AAEA,YAAM,IAAI,QAAc,CAACA,aAAY;AACnC,aAAK,kBAAkBA;AAAA,MACzB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,aACN,SAC6B;AAC7B,QAAI,kBAAkB,OAAO,GAAG;AAC9B,aAAO;AAAA,IACT;AACA,WAAO,KAAK,SAAS,yBACjB,OACA,uBAAuB,OAAO;AAAA,EACpC;AAAA,EAEQ,SAAS,KAA6B;AAC5C,SAAK,OAAO,KAAK,GAAG;AACpB,QAAI,KAAK,iBAAiB;AACxB,YAAMA,WAAU,KAAK;AACrB,WAAK,kBAAkB;AACvB,MAAAA,SAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEQ,cAAoB;AAC1B,UAAM,UAAU,KAAK;AACrB,SAAK,QAAQ;AACb,QAAI,CAAC,SAAS;AACZ,WAAK,UAAU;AAAA,IACjB;AACA,QAAI,KAAK,iBAAiB;AACxB,YAAMA,WAAU,KAAK;AACrB,WAAK,kBAAkB;AACvB,MAAAA,SAAQ;AAAA,IACV;AAAA,EACF;AACF;AAUA,eAAsB,gBACpB,SAC+B;AAC/B,MAAI,QAAQ,WAAW;AACrB,WAAO,QAAQ;AAAA,EACjB;AAEA,QAAM,mBAA4C;AAAA,IAChD,UAAU,QAAQ;AAAA,IAClB,UAAU,QAAQ;AAAA,IAClB,KAAK,QAAQ;AAAA,IACb,KAAK,EAAE,GAAG,QAAQ,KAAK,iBAAiB,QAAQ,OAAO;AAAA,EACzD;AACA,QAAM,mBAAmB,IAAI,iBAAiB,gBAAgB;AAC9D,QAAM,iBAAiB,QAAQ;AAC/B,SAAO;AACT;AAOO,SAAS,oBACd,QACA,SACM;AACN,MAAI,QAAQ,mBAAmB;AAC7B,WAAO,qBAAqB,QAAQ,iBAAiB;AAAA,EACvD;AACA,MAAI,QAAQ,gBAAgB;AAC1B,WAAO,kBAAkB,QAAQ,cAAc;AAAA,EACjD;AACF;AAKA,eAAsB,uBACpB,SAIC;AACD,QAAM,YAAY,MAAM,gBAAgB,OAAO;AAC/C,QAAM,SAAS,IAAI,YAAY,EAAE,UAAU,CAAC;AAC5C,sBAAoB,QAAQ,OAAO;AACnC,SAAO,EAAE,WAAW,OAAO;AAC7B;AAMA,eAAsB,aACpB,UACe;AACf,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,MAAI;AACF,UAAM,SAAS,MAAM;AAAA,EACvB,QAAQ;AAAA,EAER;AACF;AAwBO,SAAS,gBACd,SACgC;AAChC,SAAO;AAAA,IACL,WAAW,QAAQ,aAAa;AAAA,IAChC,KAAK,QAAQ,OAAO;AAAA,IACpB,GAAI,QAAQ,YAAY,UAAa,EAAE,SAAS,QAAQ,QAAQ;AAAA,IAChE,GAAI,QAAQ,kBAAkB,UAAa;AAAA,MACzC,eAAe,QAAQ;AAAA,IACzB;AAAA,IACA,GAAI,QAAQ,oBAAoB,UAAa;AAAA,MAC3C,iBAAiB,QAAQ;AAAA,IAC3B;AAAA,IACA,GAAI,QAAQ,oBAAoB,UAAa;AAAA,MAC3C,iBAAiB,QAAQ;AAAA,IAC3B;AAAA,IACA,GAAI,QAAQ,oBAAoB,UAAa;AAAA,MAC3C,iBAAiB,QAAQ;AAAA,IAC3B;AAAA,IACA,GAAI,QAAQ,4BAA4B,UAAa;AAAA,MACnD,yBAAyB,QAAQ;AAAA,IACnC;AAAA,IACA,GAAI,QAAQ,eAAe,UAAa;AAAA,MACtC,YAAY,QAAQ;AAAA,IACtB;AAAA,IACA,GAAI,QAAQ,mBAAmB,UAAa;AAAA,MAC1C,gBAAgB,QAAQ;AAAA,IAC1B;AAAA,IACA,GAAI,QAAQ,oBAAoB,UAAa;AAAA,MAC3C,iBAAiB,QAAQ;AAAA,IAC3B;AAAA,IACA,GAAI,QAAQ,kBAAkB,UAAa;AAAA,MACzC,eAAe,QAAQ;AAAA,IACzB;AAAA,IACA,MAAM,CAAC,GAAI,QAAQ,QAAQ,CAAC,GAAI,OAAO;AAAA,EACzC;AACF;;;AC3YA,SAAS,YAAY;AACrB,OAAO,UAAyD;AAEhE,SAAS,iBAAiB;AAC1B,SAAS,qCAAqC;AAE9C,SAAS,KAAAC,WAAS;AAwCX,SAAS,KACd,MACA,aACA,sBAKA,SAGW;AACX,MAAI,OAAO,yBAAyB,YAAY;AAC9C,UAAM,gBAAgB;AACtB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS,CAAC,UAAU,cAAc,KAAK;AAAA,IACzC;AAAA,EACF;AAEA,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,qCAAqC,IAAI,GAAG;AAAA,EAC9D;AAEA,QAAM,oBAAoBC,IAAE,OAAO,oBAAoB;AAEvD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,SAAS,CAAC,UAAU,QAAQ,kBAAkB,MAAM,KAAK,CAAC;AAAA,EAC5D;AACF;AAEA,SAAS,eAAe,QAAsD;AAC5E,SAAO,kBAAkB;AAC3B;AAEA,SAAS,iBAAiB,QAAyC;AACjE,MAAI,OAAO,WAAW,UAAU;AAC9B,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,IAC1C;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,aAAa,KAAwC;AAClE,QAAM,SAAmB,CAAC;AAC1B,mBAAiB,SAAS,KAAK;AAC7B,WAAO,KAAK,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,KAAK,KAAK,CAAC;AAAA,EACjE;AAEA,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,OAAO,OAAO,MAAM,EAAE,SAAS,MAAM,CAAC;AAC1D;AAEA,SAAS,eACP,KACA,YACA,SACM;AACN,MAAI,IAAI,aAAa;AACnB;AAAA,EACF;AAEA,MAAI,UAAU,YAAY,EAAE,gBAAgB,mBAAmB,CAAC;AAChE,MAAI;AAAA,IACF,KAAK,UAAU;AAAA,MACb,SAAS;AAAA,MACT,OAAO,EAAE,mCAAuC,QAAQ;AAAA,MACxD,IAAI;AAAA,IACN,CAAC;AAAA,EACH;AACF;AAEO,IAAM,eAAN,MAAmB;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EAED,cAAkC;AAAA,EAClC,OAAsB;AAAA,EAE9B,YAAY,SAA8B;AACxC,SAAK,OAAO,QAAQ;AACpB,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,QAAQ,QAAQ;AAAA,EACvB;AAAA,EAEA,IAAI,SAAiC;AACnC,QAAI,CAAC,KAAK,MAAM;AACd,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL;AAAA,MACA,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,MACV,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,MAAM,QAAkC;AACtC,QAAI,KAAK,QAAQ;AACf,aAAO,KAAK;AAAA,IACd;AAEA,SAAK,cAAc,KAAK,aAAa,CAAC,KAAK,QAAQ;AACjD,WAAK,KAAK,cAAc,KAAK,GAAG;AAAA,IAClC,CAAC;AACD,SAAK,YAAY,OAAO,GAAG,WAAW;AACtC,UAAM,KAAK,KAAK,aAAa,WAAW;AAExC,UAAM,UAAU,KAAK,YAAY,QAAQ;AACzC,QAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC3C,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAEA,SAAK,OAAO,oBAAoB,QAAQ,IAAI;AAC5C,UAAM,SAAS,KAAK;AACpB,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,gCAAgC;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAuB;AAC3B,UAAM,SAAS,KAAK;AACpB,SAAK,cAAc;AACnB,SAAK,OAAO;AAEZ,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,WAAO,sBAAsB;AAC7B,WAAO,MAAM;AACb,UAAM,KAAK,QAAQ,OAAO;AAAA,EAC5B;AAAA,EAEQ,kBAA6B;AACnC,UAAM,SAAS,IAAI,UAAU;AAAA,MAC3B,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,IAChB,CAAC;AAED,eAAW,WAAW,KAAK,OAAO;AAChC,aAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,UACE,aAAa,QAAQ;AAAA,UACrB,GAAI,QAAQ,eAAe;AAAA,YACzB,aAAa,QAAQ;AAAA,UACvB;AAAA,QACF;AAAA,QACA,OAAO,UACL,iBAAiB,MAAM,QAAQ,QAAQ,KAAK,CAAC;AAAA,MACjD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,cACZ,KACA,KACe;AACf,QAAI,IAAI,QAAQ,QAAQ;AACtB,UAAI,UAAU,GAAG,EAAE,IAAI;AACvB;AAAA,IACF;AAEA,QAAI,IAAI,WAAW,QAAQ;AACzB,UAAI,UAAU,GAAG,EAAE,IAAI;AACvB;AAAA,IACF;AAEA,UAAM,SAAS,KAAK,gBAAgB;AACpC,UAAM,YAAY,IAAI,8BAA8B;AAAA,MAClD,oBAAoB;AAAA,IACtB,CAAC;AAED,QAAI,GAAG,SAAS,MAAM;AACpB,WAAK,UAAU,MAAM;AACrB,WAAK,OAAO,MAAM;AAAA,IACpB,CAAC;AAED,QAAI;AACF,YAAM,OAAO,MAAM,aAAa,GAAG;AACnC,YAAM,OAAO,QAAQ,SAAS;AAC9B,YAAM,UAAU,cAAc,KAAK,KAAK,IAAI;AAAA,IAC9C,SAAS,OAAO;AACd;AAAA,QACE;AAAA,QACA;AAAA,QACA,iBAAiB,QAAQ,MAAM,UAAU;AAAA,MAC3C;AACA,YAAM,UAAU,MAAM;AACtB,YAAM,OAAO,MAAM;AAAA,IACrB;AAAA,EACF;AACF;AAEO,SAAS,mBAAmB,SAA4C;AAC7E,SAAO,IAAI,aAAa,OAAO;AACjC;AAEA,eAAsB,mBACpB,SAC2E;AAC3E,MAAI,CAAC,SAAS;AACZ,WAAO,EAAE,SAAS,YAAY;AAAA,IAAC,EAAE;AAAA,EACnC;AAEA,QAAM,iBAAiC,CAAC;AACxC,QAAM,aAAgC,CAAC;AAEvC,MAAI;AACF,eAAW,UAAU,SAAS;AAC5B,UAAI,eAAe,MAAM,GAAG;AAC1B,mBAAW,KAAK,MAAM,OAAO,MAAM,CAAC;AACpC,uBAAe,KAAK,MAAM;AAAA,MAC5B,OAAO;AACL,mBAAW,KAAK,MAAM;AAAA,MACxB;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,UAAM,QAAQ,IAAI,eAAe,IAAI,CAAC,WAAW,OAAO,MAAM,CAAC,CAAC;AAChE,UAAM;AAAA,EACR;AAEA,SAAO;AAAA,IACL;AAAA,IACA,SAAS,YAAY;AACnB,YAAM,QAAQ,IAAI,eAAe,IAAI,CAAC,WAAW,OAAO,MAAM,CAAC,CAAC;AAAA,IAClE;AAAA,EACF;AACF;;;AChNO,IAAM,eAAN,MAAmB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,sBAA2C;AAAA,EAC3C,oBAAuD,CAAC;AAAA,EAC/C,iBAAiB,oBAAI,IAAmB;AAAA;AAAA,EAGzD,YACE,QACA,WACA,YACA;AACA,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,IAAI,YAAoB;AACtB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,aAA0D;AAC5D,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGA,sBAAsB,SAA2B;AAC/C,SAAK,sBAAsB;AAAA,EAC7B;AAAA;AAAA,EAGA,WAAW,SAA2C;AACpD,SAAK,kBAAkB,KAAK,OAAO;AAAA,EACrC;AAAA,EAYA,OAAO,OACL,QACA,SACmD;AACnD,SAAK,iBAAiB;AACtB,WAAO;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,YAA2B;AAC/B,SAAK,iBAAiB;AACtB,UAAM,KAAK,QAAQ,iBAAiB;AAAA,EACtC;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,SAAS;AAChB;AAAA,IACF;AACA,SAAK,UAAU;AACf,SAAK,sBAAsB;AAC3B,SAAK,sBAAsB;AAC3B,eAAW,UAAU,KAAK,gBAAgB;AACxC,aAAO,WAAW;AAAA,IACpB;AAEA,QAAI;AACF,YAAM,KAAK,QAAQ,aAAa,EAAE,QAAQ,QAAQ,CAAC,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AACnE,YAAM,KAAK,QAAQ,MAAM;AAAA,IAC3B,UAAE;AACA,YAAM,WAAW,KAAK,kBAAkB,OAAO,CAAC;AAChD,YAAM,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY,QAAQ,CAAC,CAAC;AAAA,IACxD;AAAA,EACF;AAAA,EAEA,MAAM,eACJ,QACsC;AACtC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,sBAAsB,MAAM;AAAA,EAClD;AAAA,EAEA,MAAM,cACJ,SAGI,CAAC,GACiC;AACtC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,sBAAsB;AAAA,MACxC;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,aACJ,QAC6B;AAC7B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,aAAa,MAAM;AAAA,EACzC;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,gBAAgB,MAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,gBAAgB,MAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,iBAAgD;AACpD,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,eAAe;AAAA,EACrC;AAAA,EAEA,MAAM,eAA4C;AAChD,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,aAAa;AAAA,EACnC;AAAA,EAEA,MAAM,UACJ,SAAiC,CAAC,GACR;AAC1B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,UAAU,MAAM;AAAA,EACtC;AAAA,EAEA,MAAM,sBACJ,QACsC;AACtC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,sBAAsB,MAAM;AAAA,EAClD;AAAA,EAEA,MAAM,aAAwC;AAC5C,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,WAAW;AAAA,EACjC;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,cAAc,MAAM;AAAA,EAC1C;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,cAAc,MAAM;AAAA,EAC1C;AAAA,EAEA,MAAM,eACJ,QAC+B;AAC/B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,eAAe,UAAU,CAAC,CAAC;AAAA,EACjD;AAAA,EAEA,MAAM,cAA0C;AAC9C,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,YAAY;AAAA,EAClC;AAAA,EAEA,MAAM,kBAAkD;AACtD,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,gBAAgB;AAAA,EACtC;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,cAAc,MAAM;AAAA,EAC1C;AAAA,EAEA,eACE,UACA,QACY;AACZ,WAAO,KAAK,QAAQ,eAAe,UAAU,MAAM;AAAA,EACrD;AAAA,EAEQ,mBAAyB;AAC/B,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAsB,cACpB,SACuB;AACvB,QAAM,EAAE,OAAO,IAAI,MAAM,uBAAuB,OAAO;AACvD,MAAI,yBAAyB,QAAQ,aAAa,UAC9C,MAAM;AAAA,EAAC,IACP,gBAAgB,QAAQ,aAAa,MAAM;AACzC,SAAK,aAAa,MAAM;AAAA,EAC1B,CAAC;AACL,MAAI;AAEJ,MAAI;AACF,oBAAgB,MAAM,mBAAmB,QAAQ,UAAU;AAC3D,UAAM,aAAa,gBAAgB;AAAA,MACjC,GAAG;AAAA,MACH,YAAY,cAAc;AAAA,IAC5B,CAAC;AACD,UAAM,aAAa,MAAM,OAAO,kBAAkB,UAAU;AAC5D,UAAM,UAAU,IAAI,aAAa,QAAQ,WAAW,WAAW,UAAU;AACzE,YAAQ,WAAW,cAAc,OAAO;AACxC,2BAAuB;AACvB,6BAAyB,MAAM;AAAA,IAAC;AAChC,YAAQ;AAAA,MACN,gBAAgB,QAAQ,aAAa,MAAM,KAAK,QAAQ,MAAM,CAAC;AAAA,IACjE;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,2BAAuB;AACvB,UAAM,eAAe,QAAQ;AAC7B,UAAM,aAAa,MAAM;AACzB,UAAM;AAAA,EACR;AACF;AAeA,eAAsB,cACpB,WACA,SACuB;AACvB,QAAM,EAAE,OAAO,IAAI,MAAM,uBAAuB,OAAO;AACvD,MAAI;AAEJ,MAAI;AACF,oBAAgB,MAAM,mBAAmB,QAAQ,UAAU;AAC3D,UAAM,aAAuC;AAAA,MAC3C;AAAA,MACA,YAAY,cAAc;AAAA,IAC5B;AACA,UAAM,aAAa,MAAM,OAAO,YAAY,UAAU;AACtD,UAAM,UAAU,IAAI,aAAa,QAAQ,WAAW,UAAU;AAC9D,YAAQ,WAAW,cAAc,OAAO;AACxC,YAAQ;AAAA,MACN,gBAAgB,QAAQ,aAAa,MAAM,KAAK,QAAQ,MAAM,CAAC;AAAA,IACjE;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,eAAe,QAAQ;AAC7B,UAAM,aAAa,MAAM;AACzB,UAAM;AAAA,EACR;AACF;;;ACjWA,eAAsB,IACpB,QACA,SACsB;AACtB,QAAM,UAAU,MAAM,cAAc,OAAO;AAE3C,MAAI;AACF,qBAAiB,OAAO,QAAQ,OAAO,QAAQ;AAAA,MAC7C,GAAG;AAAA,MACH,wBAAwB;AAAA,IAC1B,CAAC,GAAG;AACF,UAAI,IAAI,SAAS,iBAAiB,QAAQ;AACxC,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D,UAAE;AACA,UAAM,QAAQ,MAAM;AAAA,EACtB;AACF;;;ACjCA,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,UAAU;AAWtB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AACxB,IAAM,qBAAqB;AAC3B,IAAM,0BAA0B;AAChC,IAAM,0BAA0B;AAChC,IAAM,mCAAmC;AAGzC,IAAM,KAAK;AACX,IAAM,KAAK;AACX,IAAM,QAAQ;AACd,IAAM,MAAM;AAKZ,IAAM,mBAAmB;AAMzB,SAAS,eAAe,UAAiC;AACvD,MAAI;AACF,WAAU,gBAAa,QAAQ;AAAA,EACjC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,SAAS,gBAAgB,KAAsB;AAC7C,MAAI;AACF,WAAO,KAAK,MAAM,IAAI,SAAS,OAAO,CAAC;AAAA,EACzC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAOA,SAAS,mBAAmB,KAG1B;AACA,MAAI,oBAAoB;AACxB,MAAI,eAAe;AACnB,MAAI,wBAAwB;AAE5B,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAM,KAAK,IAAI,CAAC;AAChB,QAAI,OAAO,IAAI;AACb,UAAI,sBAAuB;AAC3B,UAAI,iBAAiB,GAAI,gBAAe;AACxC,8BAAwB;AAAA,IAC1B,WAAW,OAAO,MAAM,OAAO,SAAS,OAAO,KAAK;AAClD,8BAAwB;AAAA,IAC1B;AAAA,EACF;AACA,MAAI,sBAAuB;AAG3B,QAAM,MACJ,iBAAiB,KACb,IAAI,SACJ,eAAe,KAAK,IAAI,eAAe,CAAC,MAAM,KAC5C,eAAe,IACf;AAER,SAAO;AAAA,IACL,WAAW,IAAI,SAAS,GAAG,GAAG;AAAA,IAC9B;AAAA,EACF;AACF;AAEA,SAAS,cAAc,aAAkC;AACvD,QAAM,MAAM,eAAoB,UAAK,aAAa,cAAc,CAAC;AACjE,MAAI,CAAC,IAAK,QAAO,oBAAI,IAAI;AACzB,QAAM,SAAS,gBAAgB,GAAG;AAClC,MAAI,CAAC,MAAM,QAAQ,MAAM,EAAG,QAAO,oBAAI,IAAI;AAC3C,SAAO,IAAI,IAAI,OAAO,OAAO,CAAC,OAAqB,OAAO,OAAO,QAAQ,CAAC;AAC5E;AAEA,SAAS,iBACP,WACA,WAC4B;AAC5B,QAAM,MAAM;AAAA,IACL,UAAK,WAAW,GAAG,SAAS,GAAG,eAAe,EAAE;AAAA,EACvD;AACA,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,SAAS,gBAAgB,GAAG;AAClC,MAAI,WAAW,KAAM,QAAO;AAC5B,QAAM,SAAS,0BAA0B,UAAU,MAAM;AACzD,SAAO,OAAO,UAAU,OAAO,OAAO;AACxC;AAEA,SAAS,2BAA2B,UAGlC;AACA,MAAI,CAAC,UAAU,KAAM,QAAO,CAAC;AAE7B,QAAM,aAAa,SAAS,KAAK;AAAA,IAAK,CAAC,QACrC,IAAI,KAAK,WAAW,kBAAkB;AAAA,EACxC;AACA,QAAM,UAAU,SAAS,KAAK;AAAA,IAC5B,CAAC,QAAQ,IAAI,SAAS;AAAA,EACxB;AAEA,SAAO;AAAA,IACL,iBAAiB,YAAY,WAAW,uBAAuB;AAAA,IAC/D,mBAAmB,SAAS,WAAW,gCAAgC;AAAA,EACzE;AACF;AA0BA,SAAS,iBACP,WACA,KACwB;AACxB,QAAM,MAAM,eAAe,UAAU,WAAW;AAChD,MAAI,CAAC,IAAK,QAAO;AAEjB,QAAM,UAAU,mBAAmB,GAAG;AAEtC,QAAM,cAAc,gBAAgB,QAAQ,SAAS;AACrD,MAAI,gBAAgB,KAAM,QAAO;AAEjC,QAAM,cAAc,wBAAwB,UAAU,WAAW;AACjE,MAAI,CAAC,YAAY,QAAS,QAAO;AACjC,QAAM,UAA6B,YAAY;AAI/C,MACE,IAAI,gBAAgB,WACnB,QAAQ,QAAQ,UAAkB,aAAQ,QAAQ,GAAG,MAAM,IAAI,cAChE;AACA,WAAO;AAAA,EACT;AAIA,QAAM,eAAe,GAAG,UAAU,SAAS,GAAG,eAAe;AAC7D,QAAM,WAAW,UAAU,aAAa,IAAI,YAAY,IACpD,iBAAiB,UAAU,WAAW,UAAU,SAAS,IACzD;AACJ,MAAI,UAAU,WAAY,QAAO;AAEjC,QAAM,UAAU,2BAA2B,QAAQ;AACnD,QAAM,oBACJ,QAAQ,qBACR,wBAAwB,MAAM,kBAAkB;AAAA,IAC9C,QAAQ;AAAA,EACV,EAAE;AAGJ,QAAM,eAAe,KAAK,IAAI,GAAG,QAAQ,oBAAoB,CAAC;AAE9D,SAAO;AAAA,IACL,IAAI,UAAU;AAAA,IACd,OAAO,QAAQ,SAAS;AAAA,IACxB,cAAc,QAAQ;AAAA,IACtB,OAAO,QAAQ,SAAS;AAAA,IACxB;AAAA,IACA,cAAc,UAAU,MAAM;AAAA,IAC9B,aAAa,UAAU,MAAM,aAAa,UAAU,MAAM;AAAA,IAC1D,YAAY,IAAI,UAAU,IAAI,UAAU,SAAS;AAAA,IACjD,KAAK,QAAQ;AAAA,IACb;AAAA,IACA,iBAAiB,QAAQ,mBAAmB,QAAQ;AAAA,EACtD;AACF;AAEA,SAAS,eAAe,WAAgC;AACtD,MAAI;AACF,WAAU,eAAY,WAAW,EAAE,eAAe,KAAK,CAAC;AAAA,EAC1D,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAQA,SAAS,kBACP,WACA,SACoB;AACpB,QAAM,eAAe,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACvD,QAAM,aAAiC,CAAC;AAExC,aAAW,SAAS,SAAS;AAC3B,QAAI,MAAM,YAAY,EAAG;AACzB,QAAI,CAAC,MAAM,KAAK,SAAS,iBAAiB,EAAG;AAE7C,UAAM,cAAmB,UAAK,WAAW,MAAM,IAAI;AACnD,QAAI;AACJ,QAAI;AACF,cAAW,YAAS,WAAW;AAAA,IACjC,QAAQ;AACN;AAAA,IACF;AACA,eAAW,KAAK;AAAA,MACd,WAAW,MAAM,KAAK,MAAM,GAAG,CAAC,kBAAkB,MAAM;AAAA,MACxD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAMA,SAAS,UACP,YACA,KACA,OACmB;AACnB,QAAM,MAAyB,CAAC;AAChC,aAAW,aAAa,YAAY;AAClC,QAAI,UAAU,UAAa,IAAI,UAAU,MAAO;AAChD,UAAM,WAAW,iBAAiB,WAAW,GAAG;AAChD,QAAI,SAAU,KAAI,KAAK,QAAQ;AAAA,EACjC;AACA,SAAO;AACT;AAWO,SAAS,4BAA4B,KAAqB;AAC/D,MAAI,eAAe;AACnB,MAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AACvC,mBAAoB,UAAQ,WAAQ,GAAG,IAAI,MAAM,CAAC,CAAC;AAAA,EACrD;AAEA,QAAM,eAAoB,aAAQ,YAAY;AAC9C,MAAI,gBAAgB;AACpB,MAAI;AACF,oBAAmB,gBAAa,YAAY;AAAA,EAC9C,QAAQ;AACN,oBAAgB;AAAA,EAClB;AACA,QAAM,aAAa,cAAc,QAAQ,WAAW,EAAE;AAEtD,MAAI,QAAQ,aAAa,SAAS;AAChC,WAAO,IAAI,WAAW,QAAQ,cAAc,IAAI,EAAE,QAAQ,WAAW,GAAG,CAAC;AAAA,EAC3E;AACA,SAAO,IAAI,WAAW,QAAQ,QAAQ,EAAE,EAAE,QAAQ,QAAQ,GAAG,CAAC;AAChE;AAQO,SAAS,wBAAgC;AAC9C,SAAY,UAAQ,WAAQ,GAAG,YAAY,UAAU;AACvD;AA0BA,eAAsB,aACpB,UAA+B,CAAC,GACJ;AAC5B,QAAM,cAAc,QAAQ,eAAe,sBAAsB;AACjE,QAAM,YAAY,cAAc,WAAW;AAE3C,QAAM,cAAc,eAAe,WAAW;AAM9C,QAAM,mBAAmB,kBAAkB,aAAa,WAAW;AACnE,QAAM,oBAAwC,CAAC;AAE/C,MAAI;AAEJ,MAAI,QAAQ,iBAAiB;AAC3B,eAAW,SAAS,aAAa;AAC/B,UAAI,CAAC,MAAM,YAAY,EAAG;AAC1B,UAAI,CAAC,MAAM,KAAK,WAAW,GAAG,EAAG;AACjC,YAAM,MAAW,UAAK,aAAa,MAAM,IAAI;AAC7C,wBAAkB,KAAK,GAAG,kBAAkB,KAAK,eAAe,GAAG,CAAC,CAAC;AAAA,IACvE;AAAA,EACF,OAAO;AACL,UAAM,gBAAqB,aAAQ,QAAQ,OAAO,QAAQ,IAAI,CAAC;AAC/D,kBAAc;AACd,UAAM,aAAkB;AAAA,MACtB;AAAA,MACA,4BAA4B,aAAa;AAAA,IAC3C;AACA,sBAAkB;AAAA,MAChB,GAAG,kBAAkB,YAAY,eAAe,UAAU,CAAC;AAAA,IAC7D;AAAA,EACF;AAIA,QAAM,cAAc,CAAC,GAAqB,MACxC,EAAE,MAAM,MAAM,QAAQ,IAAI,EAAE,MAAM,MAAM,QAAQ;AAClD,oBAAkB,KAAK,WAAW;AAClC,mBAAiB,KAAK,WAAW;AAIjC,QAAM,aACJ,QAAQ,gBAAgB,UAAa,QAAQ,eAAe,IACxD,QAAQ,cAAc,mBACtB;AAEN,QAAM,MAAoB,EAAE,UAAU;AACtC,QAAM,YACJ,gBAAgB,SAAY,EAAE,WAAW,YAAY,IAAI;AAE3D,QAAM,kBAAkB,UAAU,mBAAmB,KAAK,UAAU;AACpE,QAAM,iBAAiB,UAAU,kBAAkB,WAAW,UAAU;AAIxE,QAAM,OAAO,oBAAI,IAA6B;AAC9C,aAAW,WAAW,CAAC,GAAG,iBAAiB,GAAG,cAAc,GAAG;AAC7D,UAAM,WAAW,KAAK,IAAI,QAAQ,EAAE;AACpC,QACE,CAAC,YACD,QAAQ,aAAa,QAAQ,IAAI,SAAS,aAAa,QAAQ,GAC/D;AACA,WAAK,IAAI,QAAQ,IAAI,OAAO;AAAA,IAC9B;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,KAAK,KAAK,OAAO,CAAC,EAAE;AAAA,IACvC,CAAC,GAAG,MAAM,EAAE,aAAa,QAAQ,IAAI,EAAE,aAAa,QAAQ;AAAA,EAC9D;AAEA,MAAI,QAAQ,gBAAgB,UAAa,QAAQ,eAAe,GAAG;AACjE,WAAO,OAAO,MAAM,GAAG,QAAQ,WAAW;AAAA,EAC5C;AAEA,SAAO;AACT;;;ACpaA,SAAS,KAAAC,WAAS;AAElB,IAAM,4BAA4BA,IAAE,OAAO;AAAA,EACzC,KAAKA,IAAE,OAAO;AAAA,EACd,OAAOA,IAAE,OAAO;AAClB,CAAC;AAEM,IAAM,mCAAmCA,IAAE,OAAO;AAAA,EACvD,QAAQA,IAAE,KAAK,CAAC,YAAY,WAAW,QAAQ,CAAC;AAAA,EAChD,eAAeA,IAAE,KAAK,CAAC,sBAAsB,cAAc,CAAC,EAAE,SAAS;AAAA,EACvE,gBAAgBA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAC1C,SAASA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACnC,MAAMA,IAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAMM,IAAM,wBAAwBA,IAAE,OAAO;AAAA,EAC5C,YAAYA,IAAE,OAAO;AAAA,EACrB,SAASA,IAAE,OAAO;AAAA,EAClB,cAAcA,IAAE,OAAO;AAAA,EACvB,eAAeA,IAAE,OAAO;AAAA,EACxB,WAAWA,IAAE,OAAO;AAAA,EACpB,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACrC,aAAa,iCAAiC,SAAS;AAAA,EACvD,eAAeA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EACpD,sBAAsBA,IAAE,MAAM,yBAAyB,EAAE,SAAS;AAAA,EAClE,gCAAgCA,IAAE,MAAM,yBAAyB,EAAE,SAAS;AAAA,EAC5E,aAAaA,IAAE,OAAO,EAAE,SAAS;AACnC,CAAC;AAIM,IAAM,oCAAoCA,IAAE,OAAO;AAAA,EACxD,WAAWA,IAAE,MAAM,qBAAqB;AAAA,EACxC,YAAYA,IAAE,OAAO;AAAA,IACnB,SAASA,IAAE,QAAQ;AAAA,IACnB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,CAAC;AACH,CAAC;AAwBM,IAAM,iBAAiBA,IAC3B,OAAO;AAAA,EACN,IAAIA,IAAE,OAAO;AAAA,EACb,MAAMA,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,cAAcA,IAAE,KAAK,CAAC,QAAQ,KAAK,CAAC;AAAA,EACpC,QAAQA,IAAE,KAAK,CAAC,gBAAgB,UAAU,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7D,WAAWA,IAAE,OAAO,EAAE,IAAI;AAAA,EAC1B,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC,EACA,YAAY;AAIR,IAAM,6BAA6BA,IAAE,OAAO;AAAA,EACjD,WAAWA,IAAE,MAAM,cAAc;AACnC,CAAC;AAkCM,IAAM,gCAAgCA,IAAE,OAAO;AAAA,EACpD,YAAYA,IAAE,OAAO,EAAE,IAAI;AAC7B,CAAC;AAMM,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EAC3C,WAAWA,IAAE,OAAO;AAAA,EACpB,YAAYA,IAAE,OAAO;AAAA,EACrB,UAAUA,IAAE,OAAO;AAAA,EACnB,SAASA,IAAE,OAAO;AAAA,EAClB,UAAUA,IAAE,OAAO;AAAA,EACnB,UAAUA,IAAE,OAAO;AAAA,EACnB,WAAWA,IAAE,OAAO;AACtB,CAAC;AAIM,IAAM,gCAAgCA,IAAE,MAAM,oBAAoB;AAYlE,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EAC1C,WAAWA,IAAE,OAAO;AAAA,EACpB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQA,IAAE,KAAK,CAAC,QAAQ,WAAW,SAAS,CAAC;AAAA,EAC7C,cAAcA,IAAE,OAAO,EAAE,IAAI;AAAA,EAC7B,WAAWA,IAAE,OAAO,EAAE,IAAI;AAAA,EAC1B,WAAWA,IAAE,OAAO,EAAE,IAAI;AAAA,EAC1B,aAAaA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACvC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAIM,IAAM,kCAAkCA,IAAE,OAAO;AAAA,EACtD,UAAUA,IAAE,MAAM,mBAAmB;AAAA,EACrC,YAAYA,IAAE,OAAO;AAAA,IACnB,SAASA,IAAE,QAAQ;AAAA,IACnB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,CAAC;AACH,CAAC;;;ACnID,IAAM,mBAAmB;AAOzB,SAAS,oBAAoB,MAAe,QAAwB;AAClE,MAAI,SAAS,IAAI,KAAK,OAAO,KAAK,OAAO,MAAM,UAAU;AACvD,WAAO,KAAK,OAAO;AAAA,EACrB;AACA,SAAO,6BAA6B,MAAM;AAC5C;AAEA,eAAe,aACbC,OACA,QACA,SACA,SACkB;AAClB,QAAM,MAAM,GAAG,WAAW,gBAAgB,GAAGA,KAAI;AACjD,QAAM,SAAS,SAAS,UAAU;AAClC,QAAM,UAAkC;AAAA,IACtC,eAAe,UAAU,MAAM;AAAA,IAC/B,QAAQ;AAAA,EACV;AACA,MAAI,SAAS,MAAM;AACjB,YAAQ,cAAc,IAAI;AAAA,EAC5B;AAEA,MAAI;AAEJ,MAAI;AACF,eAAW,MAAM,MAAM,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,GAAI,SAAS,OAAO,EAAE,MAAM,KAAK,UAAU,QAAQ,IAAI,EAAE,IAAI,CAAC;AAAA,IAChE,CAAC;AAAA,EACH,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,gCAAgC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IACxF;AAAA,EACF;AAEA,MAAI,SAAS,WAAW,KAAK;AAC3B,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,MAAI;AACF,WAAO,MAAM,SAAS,KAAK;AAAA,EAC7B,QAAQ;AACN,UAAM,IAAI;AAAA,MACR,kDAAkD,SAAS,MAAM;AAAA,IACnE;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,UAAU,oBAAoB,MAAM,SAAS,MAAM;AAEzD,QAAI,SAAS,WAAW,OAAO,SAAS,WAAW,KAAK;AACtD,YAAM,IAAI,cAAc,+BAA+B,OAAO,IAAI;AAAA,QAChE,MAAM,SAAS;AAAA,MACjB,CAAC;AAAA,IACH;AAEA,UAAM,IAAI,cAAc,SAAS,EAAE,MAAM,SAAS,OAAO,CAAC;AAAA,EAC5D;AAEA,SAAO;AACT;AAEA,SAAS,cACP,MACA,QACa;AACb,QAAM,SAAS,OAAO,UAAU,IAAI;AACpC,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,IAAI;AAAA,MACR,gDAAgD,OAAO,MAAM,OAAO;AAAA,IACtE;AAAA,EACF;AACA,SAAO,OAAO;AAChB;AAEA,eAAsB,qBACpB,SACsC;AACtC,QAAM,SAAS,IAAI,gBAAgB;AACnC,MAAI,QAAQ,SAAS,MAAM;AACzB,WAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AAAA,EAC3C;AACA,MAAI,QAAQ,UAAU,MAAM;AAC1B,WAAO,IAAI,UAAU,QAAQ,MAAM;AAAA,EACrC;AACA,QAAM,QAAQ,OAAO,SAAS;AAC9B,QAAMA,QAAO,6BAA6B,QAAQ,IAAI,KAAK,KAAK,EAAE;AAElE,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,OAAO;AACrE,SAAO,cAAc,MAAM,iCAAiC;AAC9D;AAEA,eAAsB,mBACpB,SAC0B;AAC1B,QAAMA,QAAO,8BAA8B,mBAAmB,QAAQ,UAAU,CAAC;AAEjF,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,OAAO;AACrE,SAAO,cAAc,MAAM,qBAAqB;AAClD;AAEA,eAAsB,cACpB,SAC+B;AAC/B,QAAMA,QAAO;AAEb,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,OAAO;AACrE,SAAO,cAAc,MAAM,0BAA0B;AACvD;AAEA,eAAsB,YACpB,SACmB;AACnB,QAAMA,QAAO,qBAAqB,mBAAmB,QAAQ,UAAU,CAAC;AAExE,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,OAAO;AACrE,SAAO,cAAc,MAAM,cAAc;AAC3C;AAEA,eAAsB,eACpB,SACmB;AACnB,QAAMA,QAAO;AACb,QAAM,UAAmC;AAAA,IACvC,MAAM,QAAQ;AAAA,IACd,YAAY,QAAQ;AAAA,EACtB;AACA,MAAI,QAAQ,YAAY,KAAM,SAAQ,UAAU,IAAI,QAAQ;AAC5D,MAAI,QAAQ,UAAU,KAAM,SAAQ,QAAQ,IAAI,QAAQ;AACxD,MAAI,QAAQ,SAAS,KAAM,SAAQ,OAAO,IAAI,QAAQ;AACtD,MAAI,QAAQ,mBAAmB;AAC7B,YAAQ,iBAAiB,IAAI,QAAQ;AACvC,MAAI,QAAQ,oBAAoB;AAC9B,YAAQ,kBAAkB,IAAI,QAAQ;AAExC,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IACrE,QAAQ;AAAA,IACR,MAAM;AAAA,EACR,CAAC;AACD,SAAO,cAAc,MAAM,cAAc;AAC3C;AAEA,eAAsB,kBACpB,SACmB;AACnB,QAAMA,QAAO,0BAA0B,mBAAmB,QAAQ,IAAI,CAAC;AAEvE,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,OAAO;AACrE,SAAO,cAAc,MAAM,cAAc;AAC3C;AAEA,eAAsB,eACpB,SACmB;AACnB,QAAMA,QAAO,qBAAqB,mBAAmB,QAAQ,UAAU,CAAC;AACxE,QAAM,UAAmC,CAAC;AAC1C,MAAI,QAAQ,QAAQ,KAAM,SAAQ,MAAM,IAAI,QAAQ;AACpD,MAAI,QAAQ,cAAc,KAAM,SAAQ,YAAY,IAAI,QAAQ;AAChE,MAAI,QAAQ,UAAU,KAAM,SAAQ,QAAQ,IAAI,QAAQ;AAExD,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IACrE,QAAQ;AAAA,IACR,MAAM;AAAA,EACR,CAAC;AACD,SAAO,cAAc,MAAM,cAAc;AAC3C;AAEA,eAAsB,eACpB,SACe;AACf,QAAMA,QAAO,qBAAqB,mBAAmB,QAAQ,UAAU,CAAC;AAExE,QAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IACxD,QAAQ;AAAA,EACV,CAAC;AACH;AAEA,eAAsB,gBACpB,SACe;AACf,QAAMA,QAAO,qBAAqB,mBAAmB,QAAQ,UAAU,CAAC;AAExE,QAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IACxD,QAAQ;AAAA,EACV,CAAC;AACH;AAEA,eAAsB,gBACpB,SACkC;AAClC,QAAMA,QAAO,qBAAqB,mBAAmB,QAAQ,UAAU,CAAC;AAExE,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IACrE,QAAQ;AAAA,EACV,CAAC;AACD,SAAO,cAAc,MAAM,6BAA6B;AAC1D;AAEA,eAAsB,mBACpB,SACkC;AAClC,QAAM,SAAS,IAAI,gBAAgB;AACnC,MAAI,QAAQ,SAAS,MAAM;AACzB,WAAO,IAAI,SAAS,QAAQ,KAAK;AAAA,EACnC;AACA,QAAM,QAAQ,OAAO,SAAS;AAC9B,QAAMA,QAAO,qBAAqB,mBAAmB,QAAQ,UAAU,CAAC,WAAW,QAAQ,IAAI,KAAK,KAAK,EAAE;AAE3G,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,OAAO;AACrE,SAAO,cAAc,MAAM,6BAA6B;AAC1D;AAEA,eAAsB,iBACpB,SACmB;AACnB,QAAMA,QAAO,qBAAqB,mBAAmB,QAAQ,UAAU,CAAC;AAExE,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IACrE,QAAQ;AAAA,EACV,CAAC;AACD,SAAO,cAAc,MAAM,cAAc;AAC3C;AAEA,eAAsB,mBACpB,SACoC;AACpC,QAAM,SAAS,IAAI,gBAAgB;AACnC,MAAI,QAAQ,cAAc,MAAM;AAC9B,WAAO,IAAI,cAAc,QAAQ,UAAU;AAAA,EAC7C;AACA,MAAI,QAAQ,SAAS,MAAM;AACzB,WAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AAAA,EAC3C;AACA,MAAI,QAAQ,UAAU,MAAM;AAC1B,WAAO,IAAI,UAAU,QAAQ,MAAM;AAAA,EACrC;AACA,QAAM,QAAQ,OAAO,SAAS;AAC9B,QAAMA,QAAO,mBAAmB,QAAQ,IAAI,KAAK,KAAK,EAAE;AAExD,QAAM,OAAO,MAAM,aAAaA,OAAM,QAAQ,QAAQ,QAAQ,OAAO;AACrE,SAAO,cAAc,MAAM,+BAA+B;AAC5D;;;ACnLA,IAAM,gCACJ;AAAA,EACE;AAAA,EACA;AACF;AAUK,IAAM,eAAN,MAAmB;AAAA,EACP;AAAA,EACA;AAAA,EACT,aAA4B;AAAA,EAC5B,UAAU;AAAA,EAED,yBAAiD,CAAC;AAAA,EAC3D,qBAA2D;AAAA,EAC3D,kBAAqD;AAAA,EAE7D,YAAY,SAA8B;AACxC,SAAK,UAAU,QAAQ;AACvB,SAAK,UAAU,IAAI,eAAe;AAAA,MAChC,WAAW,QAAQ;AAAA,MACnB,wBAAwB;AAAA,IAC1B,CAAC;AAED,SAAK,QAAQ,eAAe,CAAC,iBAAiB;AAI5C,YAAM,aACJ,aAAa,QAAQ,MAAM,gCACvB,EAAE,GAAG,cAAc,QAAQ,6BAA6B,IACxD;AACN,2BAAqB,YAAY,CAAC,GAAG,KAAK,sBAAsB,CAAC;AAAA,IACnE,CAAC;AAED,SAAK,QAAQ;AAAA,MAAqB,CAAC,WACjC,KAAK,2BAA2B,MAAM;AAAA,IACxC;AACA,SAAK,QAAQ;AAAA,MAAkB,CAAC,WAC9B,KAAK,wBAAwB,MAAM;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,IAAI,YAA2B;AAC7B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,cAAuB;AACzB,WAAO,CAAC,KAAK,WAAW,KAAK,QAAQ;AAAA,EACvC;AAAA,EAEA,MAAM,kBACJ,QACkC;AAClC,SAAK,iBAAiB;AAEtB,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,EAAE,GAAG,QAAQ,OAAO,KAAK,QAAQ;AAAA,MACjC;AAAA,MACA;AAAA,IACF;AACA,SAAK,aAAa,OAAO;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,YACJ,QAC4B;AAC5B,SAAK,iBAAiB;AAEtB,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,EAAE,GAAG,QAAQ,OAAO,KAAK,QAAQ;AAAA,MACjC;AAAA,MACA;AAAA,IACF;AACA,SAAK,aAAa,OAAO;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,eACJ,QAO+B;AAC/B,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,mBAAoD;AACxD,WAAO,KAAK;AAAA,MACV;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,SAAoC,CAAC,GACR;AAC7B,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,sBACJ,QACsC;AACtC,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eACJ,SAAsC,CAAC,GACR;AAC/B,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cAA0C;AAC9C,WAAO,KAAK;AAAA,MACV;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,sBAAuD;AAC3D,WAAO,KAAK;AAAA,MACV;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,QAC6B;AAC7B,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBAAgD;AACpD,WAAO,KAAK;AAAA,MACV;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eAA4C;AAChD,WAAO,KAAK;AAAA,MACV;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,sBACJ,QACsC;AACtC,WAAO,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aAAwC;AAC5C,WAAO,KAAK;AAAA,MACV;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eACE,UACA,QACY;AACZ,UAAM,QAA8B,EAAE,UAAU,OAAO;AACvD,SAAK,uBAAuB,KAAK,KAAK;AAEtC,QAAI,eAAe;AACnB,WAAO,MAAM;AACX,UAAI,CAAC,cAAc;AACjB,uBAAe;AACf,cAAM,MAAM,KAAK,uBAAuB,QAAQ,KAAK;AACrD,YAAI,QAAQ,IAAI;AACd,eAAK,uBAAuB,OAAO,KAAK,CAAC;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,qBAAqB,SAA8C;AACjE,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EAEA,kBAAkB,SAA2C;AAC3D,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,SAAS;AAChB;AAAA,IACF;AACA,SAAK,UAAU;AACf,SAAK,uBAAuB,SAAS;AACrC,SAAK,qBAAqB;AAC1B,SAAK,kBAAkB;AACvB,UAAM,KAAK,QAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,MAAc,KACZ,QACA,QACA,QACA,SACsB;AACtB,UAAM,MAAM,MAAM,KAAK,QAAQ,YAAY,QAAQ,QAAQ,OAAO;AAClE,WAAO,OAAO,MAAM,GAAG;AAAA,EACzB;AAAA,EAEA,MAAc,YACZ,QACA,QACA,QACA,SACsB;AACtB,SAAK,iBAAiB;AACtB,SAAK,eAAe;AACpB,WAAO,KAAK;AAAA,MACV;AAAA,MACA,EAAE,WAAW,KAAK,YAAY,GAAG,OAAO;AAAA,MACxC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,2BACN,QAC0E;AAC1E,UAAM,UAAU,KAAK;AACrB,QAAI,WAAW,MAAM;AACnB;AAAA,IACF;AACA,WAAO,QAAQ,MAAM;AAAA,EACvB;AAAA,EAEQ,wBACN,QACwC;AACxC,UAAM,UAAU,KAAK;AACrB,QAAI,WAAW,MAAM;AACnB,aAAO,EAAE,WAAW,MAAM,SAAS,CAAC,EAAE;AAAA,IACxC;AACA,WAAO,QAAQ,MAAM;AAAA,EACvB;AAAA,EAEQ,mBAAyB;AAC/B,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,iBAAuB;AAC7B,QAAI,KAAK,cAAc,MAAM;AAC3B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC9cA,SAA4B,SAAAC,cAAa;AACzC,YAAYC,SAAQ;AACpB,YAAY,SAAS;AACrB,YAAYC,SAAQ;AACpB,YAAYC,WAAU;AAItB,IAAM,oBAAoB;AAC1B,IAAM,2BAA2B;AACjC,IAAM,qBAAqB;AAC3B,IAAM,uBAAuB;AAE7B,IAAM,cAAc;AAEpB,IAAM,eAAe;AACrB,IAAM,mBAAmB;AACzB,IAAM,eAAe;AAIrB,IAAI,uBAA4C;AAChD,IAAI,eAAsD;AAC1D,IAAI,uBAAyD;AAE7D,SAAS,iBAAyB;AAChC,SAAO,QAAQ,IAAI,yBAA4B,YAAQ;AACzD;AAEA,SAAS,oBAA4B;AACnC,SAAO;AACT;AAEA,SAAS,gBAAwB;AAC/B,SAAY,WAAK,eAAe,GAAG,kBAAkB,CAAC;AACxD;AAEA,SAAS,YAAoB;AAC3B,SAAY,WAAK,cAAc,GAAG,KAAK;AACzC;AAEA,SAAS,uBAA+B;AACtC,SAAO;AACT;AAEA,SAAS,kBAA0B;AACjC,QAAM,WAAW,QAAQ,IAAI,sBAAsB,KAAK;AACxD,MAAI,YAAY,SAAS,SAAS,GAAG;AACnC,QAAI,SAAS,SAAS,GAAG,KAAK,SAAS,SAAS,IAAI,GAAG;AAErD,UAAI;AACF,QAAG,eAAW,UAAa,cAAU,IAAI;AACzC,eAAO;AAAA,MACT,QAAQ;AAAA,MAER;AAAA,IACF,OAAO;AAEL,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAe,eAAgC;AAC7C,SAAO,IAAI,QAAQ,CAACC,UAAS,WAAW;AACtC,UAAM,SAAa,iBAAa;AAChC,WAAO,KAAK,SAAS,MAAM;AAC3B,WAAO,OAAO,GAAG,cAAc,MAAM;AACnC,YAAM,UAAU,OAAO,QAAQ;AAC/B,UAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC3C,eAAO,MAAM;AACb,eAAO,IAAI,MAAM,kCAAkC,CAAC;AACpD;AAAA,MACF;AACA,YAAM,OAAO,QAAQ;AACrB,aAAO,MAAM,CAAC,QAAQ;AACpB,YAAI,IAAK,QAAO,GAAG;AAAA,YACd,CAAAA,SAAQ,IAAI;AAAA,MACnB,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAe,kBAAkB,MAAgC;AAC/D,SAAO,IAAI,QAAQ,CAACA,aAAY;AAC9B,UAAM,SAAa,qBAAiB,EAAE,MAAM,cAAc,KAAK,CAAC;AAChE,UAAM,UAAU,MAAM;AACpB,aAAO,mBAAmB;AAC1B,aAAO,QAAQ;AAAA,IACjB;AACA,UAAM,OAAO,MAAM;AACjB,cAAQ;AACR,MAAAA,SAAQ,KAAK;AAAA,IACf;AACA,WAAO,WAAW,mBAAmB,IAAI;AACzC,WAAO,KAAK,SAAS,IAAI;AACzB,WAAO,KAAK,WAAW,MAAM;AAC3B,cAAQ;AACR,MAAAA,SAAQ,IAAI;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAe,mBACb,OACA,MACA,YAAoB,oBACU;AAC9B,SAAO,IAAI,QAAQ,CAACA,aAAY;AAC9B,QAAI,UAAU;AACd,QAAI,SAAS;AACb,UAAM,WAAW,KAAK,IAAI,IAAI;AAE9B,UAAM,SAAS,CAAC,WAAgC;AAC9C,UAAI,QAAS;AACb,gBAAU;AACV,YAAM,eAAe,QAAQ,MAAM;AACnC,YAAM,eAAe,SAAS,MAAM;AACpC,MAAAA,SAAQ,MAAM;AAAA,IAChB;AAEA,UAAM,SAAS,MAAM;AACnB,eAAS;AACT,aAAO,QAAQ;AAAA,IACjB;AAEA,UAAM,KAAK,QAAQ,MAAM;AACzB,UAAM,KAAK,SAAS,MAAM;AAE1B,UAAM,OAAO,YAAY;AACvB,aAAO,CAAC,UAAU,CAAC,SAAS;AAC1B,YAAI,MAAM,kBAAkB,IAAI,GAAG;AACjC,iBAAO,OAAO;AACd;AAAA,QACF;AACA,YAAI,KAAK,IAAI,KAAK,UAAU;AAC1B,iBAAO,SAAS;AAChB;AAAA,QACF;AACA,cAAM,IAAI,QAAc,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAAA,MACxE;AAAA,IACF;AAEA,SAAK,KAAK;AAAA,EACZ,CAAC;AACH;AAEA,SAAS,eAA8B;AACrC,MAAI;AACF,UAAM,WAAgB,WAAK,UAAU,GAAG,gBAAgB;AACxD,UAAM,UAAa,iBAAa,UAAU,OAAO,EAAE,KAAK;AACxD,UAAM,OAAO,SAAS,SAAS,EAAE;AACjC,QAAI,OAAO,SAAS,IAAI,KAAK,OAAO,KAAK,OAAO,OAAO;AACrD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,cAAc,MAAoB;AACzC,MAAI;AACF,UAAM,SAAS,UAAU;AACzB,IAAG,cAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AACxC,IAAG,kBAAmB,WAAK,QAAQ,gBAAgB,GAAG,OAAO,IAAI,GAAG;AAAA,MAClE,MAAM;AAAA,IACR,CAAC;AAAA,EACH,QAAQ;AAAA,EAER;AACF;AAEA,SAAS,YAAY,MAAgC;AACnD,iBAAe,EAAE,MAAM,cAAc,KAAK;AAC1C,SAAO,EAAE,KAAK;AAChB;AAEA,SAAS,0BAA0B,OAA2B;AAC5D,MAAI,yBAAyB,OAAO;AAClC,2BAAuB;AAAA,EACzB;AACF;AAEA,eAAe,YACb,UACA,MAC8B;AAC9B,QAAM,OAAO,CAAC,UAAU,UAAU,cAAc,UAAU,OAAO,IAAI,CAAC;AAEtE,MAAI;AACJ,MAAI;AACF,UAAM,UAAe,WAAK,UAAU,GAAG,MAAM;AAC7C,IAAG,cAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AACzC,eAAc,aAAc,WAAK,SAAS,mBAAmB,GAAG,GAAG;AAAA,EACrE,QAAQ;AAAA,EAER;AAEA,QAAM,QAAQC,OAAM,UAAU,MAAM;AAAA,IAClC,UAAU;AAAA,IACV,OAAO,CAAC,UAAU,UAAU,YAAY,QAAQ;AAAA,IAChD,KAAQ,YAAQ;AAAA,IAChB,KAAK,EAAE,GAAG,QAAQ,IAAI;AAAA,EACxB,CAAC;AAED,MAAI,aAAa,QAAW;AAC1B,QAAI;AACF,MAAG,cAAU,QAAQ;AAAA,IACvB,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,yBAAuB;AAIvB,QAAM,MAAM;AAEZ,QAAM,KAAK,QAAQ,MAAM;AACvB,8BAA0B,KAAK;AAAA,EACjC,CAAC;AAED,QAAM,GAAG,SAAS,MAAM;AACtB,8BAA0B,KAAK;AAAA,EACjC,CAAC;AAED,QAAM,SAAS,MAAM,mBAAmB,OAAO,IAAI;AAEnD,MAAI,WAAW,SAAS;AACtB,8BAA0B,KAAK;AAC/B,QAAI,WAAW,WAAW;AACxB,UAAI;AACF,cAAM,KAAK,SAAS;AAAA,MACtB,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAUA,eAAe,qBAAgD;AAC7D,QAAM,WAAW,gBAAgB;AAGjC,QAAM,gBAAgB,qBAAqB;AAC3C,MAAI,MAAM,kBAAkB,aAAa,GAAG;AAC1C,WAAO,YAAY,aAAa;AAAA,EAClC;AAGA,QAAM,eAAe,aAAa;AAClC,MAAI,iBAAiB,QAAQ,iBAAiB,eAAe;AAC3D,QAAI,MAAM,kBAAkB,YAAY,GAAG;AACzC,aAAO,YAAY,YAAY;AAAA,IACjC;AAAA,EACF;AAGA,QAAM,cAAc,MAAM,YAAY,UAAU,aAAa;AAC7D,MAAI,gBAAgB,SAAS;AAC3B,kBAAc,aAAa;AAC3B,WAAO,YAAY,aAAa;AAAA,EAClC;AAGA,WAAS,UAAU,GAAG,WAAW,sBAAsB,WAAW;AAChE,UAAM,OAAO,MAAM,aAAa;AAChC,UAAM,SAAS,MAAM,YAAY,UAAU,IAAI;AAC/C,QAAI,WAAW,SAAS;AACtB,oBAAc,IAAI;AAClB,aAAO,YAAY,IAAI;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR,4CAA4C,oBAAoB;AAAA,EAElE;AACF;AAcA,eAAsB,oBAA+C;AAEnE,MAAI,cAAc;AAChB,QAAI,MAAM,kBAAkB,aAAa,IAAI,GAAG;AAC9C,aAAO,EAAE,MAAM,aAAa,KAAK;AAAA,IACnC;AACA,mBAAe;AAAA,EACjB;AAGA,MAAI,CAAC,sBAAsB;AACzB,2BAAuB,mBAAmB,EAAE,QAAQ,MAAM;AACxD,6BAAuB;AAAA,IACzB,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AChSO,IAAM,gBAAN,MAAoB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACD,iBAAiB,oBAAI,IAAmB;AAAA,EACxC,oBAAuD,CAAC;AAAA;AAAA,EAGzE,YAAY,QAAsB,WAAmB;AACnD,SAAK,UAAU;AACf,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA,EAGA,WAAW,SAA2C;AACpD,SAAK,kBAAkB,KAAK,OAAO;AAAA,EACrC;AAAA,EAEA,IAAI,YAAoB;AACtB,WAAO,KAAK;AAAA,EACd;AAAA,EAUA,OAAO,OACL,QACA,SACmD;AACnD,SAAK,iBAAiB;AACtB,WAAO;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,KAAK,QAAgB,SAAsC;AAC/D,SAAK,iBAAiB;AAEtB,UAAM,KAAK,QAAQ,eAAe;AAAA,MAChC,MAAM;AAAA,MACN,QAAQ,SAAS;AAAA,MACjB,OAAO,SAAS;AAAA,MAChB,cAAc,SAAS;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,YAA2B;AAC/B,SAAK,iBAAiB;AACtB,UAAM,KAAK,QAAQ,iBAAiB;AAAA,EACtC;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,SAAS;AAChB;AAAA,IACF;AACA,SAAK,UAAU;AAEf,eAAW,UAAU,KAAK,gBAAgB;AACxC,aAAO,WAAW;AAAA,IACpB;AAEA,QAAI;AACF,YAAM,KAAK,QAAQ,aAAa,EAAE,QAAQ,QAAQ,CAAC,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACrE,UAAE;AACA,YAAM,KAAK,QAAQ,MAAM;AACzB,iBAAW,WAAW,KAAK,mBAAmB;AAC5C,YAAI;AACF,gBAAM,QAAQ;AAAA,QAChB,QAAQ;AAAA,QAER;AAAA,MACF;AACA,WAAK,kBAAkB,SAAS;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,MAAM,eACJ,QACsC;AACtC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,sBAAsB,MAAM;AAAA,EAClD;AAAA,EAEA,MAAM,cACJ,SAGI,CAAC,GACiC;AACtC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,sBAAsB;AAAA,MACxC;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,eACJ,QAC+B;AAC/B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,eAAe,UAAU,CAAC,CAAC;AAAA,EACjD;AAAA,EAEA,MAAM,cAA0C;AAC9C,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,YAAY;AAAA,EAClC;AAAA,EAEA,MAAM,sBAAuD;AAC3D,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,oBAAoB;AAAA,EAC1C;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,cAAc,MAAM;AAAA,EAC1C;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,cAAc,MAAM;AAAA,EAC1C;AAAA,EAEA,MAAM,cACJ,QAC8B;AAC9B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,cAAc,MAAM;AAAA,EAC1C;AAAA,EAEA,MAAM,aACJ,QAC6B;AAC7B,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,aAAa,MAAM;AAAA,EACzC;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,gBAAgB,MAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,gBACJ,QACgC;AAChC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,gBAAgB,MAAM;AAAA,EAC5C;AAAA,EAEA,MAAM,iBAAgD;AACpD,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,eAAe;AAAA,EACrC;AAAA,EAEA,MAAM,eAA4C;AAChD,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,aAAa;AAAA,EACnC;AAAA,EAEA,MAAM,sBACJ,QACsC;AACtC,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,sBAAsB,MAAM;AAAA,EAClD;AAAA,EAEA,MAAM,aAAwC;AAC5C,SAAK,iBAAiB;AACtB,WAAO,KAAK,QAAQ,WAAW;AAAA,EACjC;AAAA,EAEA,eACE,UACA,QACY;AACZ,WAAO,KAAK,QAAQ,eAAe,UAAU,MAAM;AAAA,EACrD;AAAA,EAEQ,mBAAyB;AAC/B,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC1OA,OAAO,eAAe;;;ACkBf,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,WAAQ;AACR,EAAAA,aAAA,cAAW;AAFD,SAAAA;AAAA,GAAA;AA0FL,IAAM,sBAAsB;AAG5B,IAAM,yBAAyB;AAG/B,IAAM,oBAAyD;AAAA,EACpE,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,qBAAqB;AACvB;AAGO,IAAM,qBAAyD;AAAA,EACpE,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,iBAAiB;AACnB;;;ADnHO,IAAM,qBAAN,MAAyD;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,KAAuB;AAAA,EACvB,iBAAyC;AAAA,EACzC,eAAqC;AAAA,EACrC,eAAe;AAAA,EACf,YAAY;AAAA,EAEpB,YAAY,UAAqC,CAAC,GAAG;AACnD,SAAK,oBACH,QAAQ,qBAAqB,kBAAkB;AACjD,SAAK,sBACH,QAAQ,uBAAuB,kBAAkB;AACnD,SAAK,kBACH,QAAQ,mBAAmB,kBAAkB;AAC/C,SAAK,sBACH,QAAQ,uBAAuB,kBAAkB;AAAA,EACrD;AAAA,EAEA,IAAI,cAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,QAAQ,KAA6B;AACzC,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,gBAAgB,2BAA2B;AAAA,IACvD;AAEA,QAAI,KAAK,cAAc;AACrB,YAAM,IAAI,gBAAgB,6BAA6B;AAAA,IACzD;AAEA,SAAK,YAAY;AACjB,QAAI;AAEJ,aAAS,UAAU,GAAG,WAAW,KAAK,mBAAmB,WAAW;AAClE,UAAI;AACF,cAAM,KAAK,WAAW,GAAG;AACzB;AAAA,MACF,SAAS,OAAO;AACd,oBAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AACpE,YAAI,UAAU,KAAK,mBAAmB;AACpC,gBAAM,QAAQ,KAAK;AAAA,YACjB,KAAK,sBAAsB,KAAK;AAAA,YAChC,KAAK;AAAA,UACP;AACA,gBAAM,IAAI,QAAc,CAACC,aAAY,WAAWA,UAAS,KAAK,CAAC;AAAA,QACjE;AAAA,MACF;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AAAA,EAEA,KAAK,SAAwC;AAC3C,QAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,IAAI;AAClC,YAAM,IAAI,gBAAgB,mCAAmC;AAAA,IAC/D;AAEA,QAAI;AACF,WAAK,GAAG,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,IACtC,SAAS,OAAO;AACd,YAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACjE,YAAM,IAAI,gBAAgB,qCAAqC,GAAG,EAAE;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,UAAU,UAAiC;AACzC,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEA,QAAQ,UAA+B;AACrC,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,WAAW;AAClB;AAAA,IACF;AAEA,SAAK,YAAY;AACjB,SAAK,eAAe;AAEpB,UAAM,KAAK,KAAK;AAChB,SAAK,KAAK;AAEV,QAAI,MAAM,GAAG,eAAe,UAAU,MAAM;AAC1C,YAAM,IAAI,QAAc,CAACA,aAAY;AACnC,WAAG,KAAK,SAAS,MAAMA,SAAQ,CAAC;AAChC,WAAG,MAAM,KAAM,mBAAmB;AAGlC,mBAAW,MAAMA,SAAQ,GAAG,GAAK;AAAA,MACnC,CAAC;AAAA,IACH;AAEA,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,MAAc,WAAW,KAA4B;AACnD,WAAO,IAAI,QAAc,CAACA,UAAS,WAAW;AAC5C,UAAI,UAAU;AACd,UAAI,YAAkD;AAEtD,YAAM,UAAU,MAAM;AACpB,YAAI,WAAW;AACb,uBAAa,SAAS;AACtB,sBAAY;AAAA,QACd;AAAA,MACF;AAEA,YAAM,KAAK,IAAI,UAAU,GAAG;AAE5B,YAAM,aAAa,MAAM;AACvB,YAAI,QAAS;AACb,kBAAU;AACV,gBAAQ;AAER,aAAK,KAAK;AACV,aAAK,eAAe;AACpB,aAAK,sBAAsB,EAAE;AAC7B,QAAAA,SAAQ;AAAA,MACV;AAEA,YAAM,cAAc,CAAC,UAAiB;AACpC,YAAI,QAAS;AACb,kBAAU;AACV,gBAAQ;AAER,YAAI;AACF,aAAG,MAAM;AAAA,QACX,QAAQ;AAAA,QAER;AAEA;AAAA,UACE,IAAI,gBAAgB,gCAAgC,MAAM,OAAO,EAAE;AAAA,QACrE;AAAA,MACF;AAEA,YAAM,cAAc,CAAC,MAAc,WAAmB;AACpD,YAAI,QAAS;AACb,kBAAU;AACV,gBAAQ;AAER;AAAA,UACE,IAAI;AAAA,YACF,0CAA0C,IAAI,aAAa,OAAO,SAAS,CAAC;AAAA,UAC9E;AAAA,QACF;AAAA,MACF;AAEA,SAAG,KAAK,QAAQ,UAAU;AAC1B,SAAG,KAAK,SAAS,WAAW;AAC5B,SAAG,KAAK,SAAS,WAAW;AAE5B,kBAAY,WAAW,MAAM;AAC3B,YAAI,QAAS;AACb,kBAAU;AAEV,YAAI;AACF,aAAG,MAAM;AAAA,QACX,QAAQ;AAAA,QAER;AAEA;AAAA,UACE,IAAI;AAAA,YACF,sCAAsC,KAAK,mBAAmB,OAAO,GAAG;AAAA,UAC1E;AAAA,QACF;AAAA,MACF,GAAG,KAAK,mBAAmB;AAAA,IAC7B,CAAC;AAAA,EACH;AAAA,EAEQ,sBAAsB,IAAqB;AACjD,OAAG,GAAG,WAAW,CAAC,SAAyB;AACzC,UAAI,CAAC,KAAK,eAAgB;AAE1B,YAAM,OAAO,OAAO,SAAS,WAAW,OAAO,KAAK,SAAS;AAC7D,UAAI;AACF,cAAM,SAAkB,KAAK,MAAM,IAAI;AACvC,YAAI,SAAS,MAAM,GAAG;AACpB,eAAK,eAAe,MAAM;AAAA,QAC5B;AAAA,MACF,QAAQ;AAAA,MAER;AAAA,IACF,CAAC;AAED,OAAG,GAAG,SAAS,CAAC,UAAiB;AAC/B,UAAI,CAAC,KAAK,aAAa,KAAK,cAAc;AACxC,aAAK;AAAA,UACH,IAAI,gBAAgB,oBAAoB,MAAM,OAAO,EAAE;AAAA,QACzD;AAAA,MACF;AAAA,IACF,CAAC;AAED,OAAG,GAAG,SAAS,CAAC,MAAc,WAAmB;AAC/C,WAAK,eAAe;AACpB,WAAK,KAAK;AAEV,UAAI,CAAC,KAAK,aAAa,KAAK,cAAc;AACxC,aAAK;AAAA,UACH,IAAI;AAAA,YACF,2BAA2B,IAAI,aAAa,OAAO,SAAS,CAAC;AAAA,UAC/D;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AEjMA,IAAM,6BAA6B;AACnC,IAAM,8BAA8B;AACpC,IAAM,aAAa;AAMZ,SAAS,oBACd,SACQ;AACR,MAAI,QAAQ,KAAK;AACf,WAAO,QAAQ;AAAA,EACjB;AAEA,QAAM,UAAU,QAAQ;AAExB,MAAI,CAAC,WAAW,QAAQ,8BAA4B;AAClD,UAAM,OACJ,QAAQ,cAAc,QAAQ,cAAc;AAC9C,WAAO,kBAAkB,IAAI;AAAA,EAC/B;AAEA,MAAI,QAAQ,oCAA+B;AACzC,UAAM,YAAY,QAAQ,gBAAgB;AAC1C,WAAO,GAAG,SAAS,gBAAgB,QAAQ,UAAU;AAAA,EACvD;AAGA,QAAM,cAAqB;AAC3B,QAAM,IAAI,gBAAgB,6BAA6B,OAAO,WAAW,CAAC,EAAE;AAC9E;AAEA,SAAS,mBACP,SAC0D;AAC1D,MAAI,SAAS,oCAA+B;AAC1C,WAAO,EAAE,GAAG,mBAAmB,GAAG,mBAAmB;AAAA,EACvD;AACA,MAAI,CAAC,WAAW,QAAQ,8BAA4B;AAClD,WAAO,EAAE,GAAG,mBAAmB,qBAAqB,IAAO;AAAA,EAC7D;AACA,SAAO,EAAE,GAAG,kBAAkB;AAChC;AAkBA,IAAM,6BAAN,MAAiC;AAAA,EAG/B,YAA6B,QAA4B;AAA5B;AAC3B,SAAK,OAAO,UAAU,CAAC,YAAY;AACjC,WAAK,cAAc,OAAO;AAAA,IAC5B,CAAC;AAED,SAAK,OAAO,QAAQ,CAAC,UAAU;AAC7B,iBAAW,QAAQ,KAAK,QAAQ;AAC9B,YAAI,KAAK,eAAe;AACtB,cAAI;AACF,iBAAK,cAAc,KAAK;AAAA,UAC1B,QAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAlBiB,SAAS,oBAAI,IAAqB;AAAA,EAoBnD,aAAmC;AACjC,UAAM,QAAQ,KAAK;AACnB,UAAM,YAA6B;AAAA,MACjC,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,mBAAmB,oBAAI,IAAI;AAAA,MAC3B,WAAW;AAAA,IACb;AACA,SAAK,OAAO,IAAI,SAAS;AAEzB,UAAM,OAA6B;AAAA,MACjC,MAAM,CAAC,YAAqC;AAE1C,YACE,QAAQ,MAAM,MAAM,aACpB,OAAO,QAAQ,IAAI,MAAM,UACzB;AACA,oBAAU,kBAAkB,IAAI,QAAQ,IAAI,CAAC;AAAA,QAC/C;AAEA,cAAM,KAAK,OAAO;AAAA,MACpB;AAAA,MAEA,WAAW,CAAC,aAA8B;AACxC,kBAAU,kBAAkB;AAAA,MAC9B;AAAA,MAEA,SAAS,CAAC,aAA4B;AACpC,kBAAU,gBAAgB;AAAA,MAC5B;AAAA,MAEA,OAAO,YAAY;AACjB,kBAAU,kBAAkB;AAC5B,kBAAU,gBAAgB;AAC1B,kBAAU,kBAAkB,MAAM;AAClC,aAAK,OAAO,OAAO,SAAS;AAAA,MAC9B;AAAA,MAEA,IAAI,cAAuB;AACzB,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,cAAc,SAAwC;AAC5D,UAAM,cAAc,QAAQ,MAAM;AAClC,UAAM,YAAY,QAAQ,IAAI;AAG9B,QAAI,gBAAgB,cAAc,OAAO,cAAc,UAAU;AAC/D,iBAAW,QAAQ,KAAK,QAAQ;AAC9B,YAAI,KAAK,kBAAkB,IAAI,SAAS,GAAG;AACzC,eAAK,kBAAkB,OAAO,SAAS;AAGvC,gBAAM,SAAS,QAAQ,QAAQ;AAC/B,cAAI,SAAS,MAAM,KAAK,OAAO,OAAO,WAAW,MAAM,UAAU;AAC/D,iBAAK,YAAY,OAAO,WAAW;AAAA,UACrC;AAEA,cAAI,KAAK,iBAAiB;AACxB,gBAAI;AACF,mBAAK,gBAAgB,OAAO;AAAA,YAC9B,QAAQ;AAAA,YAER;AAAA,UACF;AACA;AAAA,QACF;AAAA,MACF;AAEA;AAAA,IACF;AAGA,QAAI,gBAAgB,gBAAgB;AAClC,YAAM,SAAS,QAAQ,QAAQ;AAC/B,YAAM,YACJ,SAAS,MAAM,KAAK,OAAO,OAAO,WAAW,MAAM,WAC/C,OAAO,WAAW,IAClB;AAEN,UAAI,WAAW;AACb,mBAAW,QAAQ,KAAK,QAAQ;AAC9B,cAAI,KAAK,cAAc,aAAa,KAAK,iBAAiB;AACxD,gBAAI;AACF,mBAAK,gBAAgB,OAAO;AAAA,YAC9B,QAAQ;AAAA,YAER;AACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA,iBAAW,QAAQ,KAAK,QAAQ;AAC9B,YAAI,KAAK,iBAAiB;AACxB,cAAI;AACF,iBAAK,gBAAgB,OAAO;AAAA,UAC9B,QAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAIA,QAAI,gBAAgB,WAAW;AAC7B,YAAM,SAAS,QAAQ,QAAQ;AAC/B,YAAM,YACJ,SAAS,MAAM,KAAK,OAAO,OAAO,WAAW,MAAM,WAC/C,OAAO,WAAW,IAClB;AAEN,UAAI,WAAW;AACb,mBAAW,QAAQ,KAAK,QAAQ;AAC9B,cAAI,KAAK,cAAc,aAAa,KAAK,iBAAiB;AACxD,gBAAI;AACF,mBAAK,gBAAgB,OAAO;AAAA,YAC9B,QAAQ;AAAA,YAER;AACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA,iBAAW,QAAQ,KAAK,QAAQ;AAC9B,YAAI,KAAK,iBAAiB;AACxB,cAAI;AACF,iBAAK,gBAAgB,OAAO;AAAA,UAC9B,QAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAUA,eAAe,aACb,WACA,SACe;AACf,QAAM,YAAY,OAAO,WAAW;AAEpC,QAAM,WAA2B;AAAA,IAC/B,SAAS;AAAA,IACT,mBAAmB;AAAA,IACnB,wBAAwB;AAAA,IACxB;AAAA,IACA,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ,QAAQ;AAAA,MAChB,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,SAAO,IAAI,QAAc,CAACC,UAAS,WAAW;AAC5C,UAAM,QAAQ,WAAW,MAAM;AAE7B,gBAAU,UAAU,MAAM;AAAA,MAAC,CAAC;AAC5B;AAAA,QACE,IAAI;AAAA,UACF,yCAAyC,2BAA2B;AAAA,QACtE;AAAA,MACF;AAAA,IACF,GAAG,2BAA2B;AAE9B,cAAU,UAAU,CAAC,YAAqC;AAExD,UAAI,QAAQ,IAAI,MAAM,WAAW;AAC/B;AAAA,MACF;AAEA,mBAAa,KAAK;AAElB,gBAAU,UAAU,MAAM;AAAA,MAAC,CAAC;AAE5B,UAAI,QAAQ,OAAO,GAAG;AACpB,cAAM,QAAQ,QAAQ,OAAO;AAC7B,cAAM,eACJ,SAAS,OAAO,UAAU,YAAY,aAAa,QAC/C,OAAO,MAAM,OAAO,IACpB;AACN;AAAA,UACE,IAAI,gBAAgB,iCAAiC,YAAY,EAAE;AAAA,QACrE;AACA;AAAA,MACF;AAEA,MAAAA,SAAQ;AAAA,IACV,CAAC;AAED,cAAU,KAAK,QAAQ;AAAA,EACzB,CAAC;AACH;AAEO,IAAM,mBAAN,MAAuB;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACT,UAAU;AAAA;AAAA,EAGlB,YAAY,WAA+B,QAAgB;AACzD,SAAK,aAAa;AAClB,SAAK,eAAe,IAAI,2BAA2B,SAAS;AAC5D,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAM,cACJ,UAAgC,CAAC,GACT;AACxB,SAAK,iBAAiB;AAEtB,UAAM,OAAO,KAAK,aAAa,WAAW;AAC1C,UAAM,SAAS,IAAI,aAAa;AAAA,MAC9B,WAAW;AAAA,MACX,QAAQ,KAAK;AAAA,IACf,CAAC;AACD,QAAI,QAAQ,mBAAmB;AAC7B,aAAO,qBAAqB,QAAQ,iBAAiB;AAAA,IACvD;AACA,QAAI,QAAQ,gBAAgB;AAC1B,aAAO,kBAAkB,QAAQ,cAAc;AAAA,IACjD;AAEA,QAAI;AAIJ,QAAI;AACF,sBAAgB,MAAM,mBAAmB,QAAQ,UAAU;AAC3D,YAAM,aAAa,gBAAgB;AAAA,QACjC,GAAG;AAAA,QACH,YAAY,cAAc;AAAA,MAC5B,CAAC;AAED,YAAM,aAAa,MAAM,OAAO,kBAAkB,UAAU;AAC5D,YAAM,UAAU,IAAI,cAAc,QAAQ,WAAW,SAAS;AAC9D,UAAI,eAAe;AACjB,gBAAQ,WAAW,cAAc,OAAO;AAAA,MAC1C;AACA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,eAAe,QAAQ;AAC7B,YAAM,OAAO,MAAM;AACnB,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,cACJ,WACA,UAA+B,CAAC,GACR;AACxB,SAAK,iBAAiB;AAEtB,UAAM,OAAO,KAAK,aAAa,WAAW;AAC1C,UAAM,SAAS,IAAI,aAAa;AAAA,MAC9B,WAAW;AAAA,MACX,QAAQ,KAAK;AAAA,IACf,CAAC;AACD,QAAI,QAAQ,mBAAmB;AAC7B,aAAO,qBAAqB,QAAQ,iBAAiB;AAAA,IACvD;AACA,QAAI,QAAQ,gBAAgB;AAC1B,aAAO,kBAAkB,QAAQ,cAAc;AAAA,IACjD;AAEA,QAAI;AAIJ,QAAI;AACF,sBAAgB,MAAM,mBAAmB,QAAQ,UAAU;AAC3D,YAAM,OAAO,YAAY;AAAA,QACvB;AAAA,QACA,YAAY,cAAc;AAAA,MAC5B,CAAC;AACD,YAAM,UAAU,IAAI,cAAc,QAAQ,SAAS;AACnD,UAAI,eAAe;AACjB,gBAAQ,WAAW,cAAc,OAAO;AAAA,MAC1C;AACA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,eAAe,QAAQ;AAC7B,YAAM,OAAO,MAAM;AACnB,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,iBAAiB,WAAkC;AACvD,SAAK,iBAAiB;AAEtB,UAAM,OAAO,KAAK,aAAa,WAAW;AAC1C,UAAM,SAAS,IAAI,aAAa;AAAA,MAC9B,WAAW;AAAA,MACX,QAAQ,KAAK;AAAA,IACf,CAAC;AACD,QAAI;AACF,YAAM,OAAO,YAAY,EAAE,UAAU,CAAC;AACtC,YAAM,OAAO,iBAAiB;AAAA,IAChC,UAAE;AACA,YAAM,OAAO,MAAM;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,SAAS;AAChB;AAAA,IACF;AACA,SAAK,UAAU;AACf,UAAM,KAAK,WAAW,MAAM;AAAA,EAC9B;AAAA,EAEQ,mBAAyB;AAC/B,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAsB,cACpB,SAC2B;AAC3B,QAAM,UACJ,CAAC,QAAQ,QACR,CAAC,QAAQ,WAAW,QAAQ,QAAQ;AAGvC,MAAI,kBAA0C;AAC9C,MAAI,SAAS;AACX,UAAM,EAAE,KAAK,IAAI,MAAM,kBAAkB;AACzC,sBAAkB,EAAE,GAAG,SAAS,YAAY,KAAK;AAAA,EACnD;AAEA,QAAM,MAAM,oBAAoB,eAAe;AAC/C,QAAM,WAAW,mBAAmB,gBAAgB,OAAO;AAE3D,QAAM,YAAY,IAAI,mBAAmB,QAAQ;AAEjD,QAAM,SAAS,gBAAgB;AAE/B,QAAM,aAAa,gBAAgB,cAAc;AAEjD,MAAI;AAEF,QAAI,aAAa,GAAG;AAClB,UAAI;AAEJ,eAAS,UAAU,GAAG,WAAW,YAAY,WAAW;AACtD,YAAI;AACF,gBAAM,UAAU,QAAQ,GAAG;AAC3B,gBAAM,aAAa,WAAW,eAAe;AAC7C,iBAAO,IAAI,iBAAiB,WAAW,MAAM;AAAA,QAC/C,SAAS,OAAO;AACd,sBAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AACpE,cAAI;AACF,kBAAM,UAAU,MAAM;AAAA,UACxB,QAAQ;AAAA,UAER;AACA,cAAI,UAAU,YAAY;AACxB,kBAAM,IAAI,QAAc,CAACA,aAAY,WAAWA,UAAS,GAAK,CAAC;AAAA,UACjE;AAAA,QACF;AAAA,MACF;AAEA,YAAM;AAAA,IACR;AAGA,UAAM,UAAU,QAAQ,GAAG;AAC3B,UAAM,aAAa,WAAW,eAAe;AAC7C,WAAO,IAAI,iBAAiB,WAAW,MAAM;AAAA,EAC/C,SAAS,OAAO;AACd,QAAI;AACF,YAAM,UAAU,MAAM;AAAA,IACxB,QAAQ;AAAA,IAER;AACA,UAAM;AAAA,EACR;AACF;","names":["DroidServerMethod","DroidClientMethod","SessionNotificationType","ToolConfirmationOutcome","ToolConfirmationType","DroidWorkingState","ContextStatsAccuracy","DroidErrorType","McpServerStatus","McpServerType","McpStatus","McpAuthOutcome","DecompSessionType","MissionState","FeatureStatus","FeatureSuccessState","IssueSeverity","DismissalType","ProgressLogEntryType","DroidInteractionMode","AutonomyLevel","AutonomyMode","ReasoningEffort","ModelProvider","JsonRpcErrorCode","JsonRpcMessageType","ServerRequestHandlerType","SettingsLevel","SkillLocation","z","z","z","z","z","z","z","z","z","z","z","z","ToolUseBlockSchema","z","resolve","resolve","AddMcpServerRequestParamsSchema","AddMcpServerRequestSchema","AddMcpServerResponseSchema","AddUserMessageRequestParamsSchema","AddUserMessageRequestSchema","AddUserMessageResponseSchema","AddUserMessageResultSchema","AskUserCollectedAnswerSchema","AskUserQuestionSchema","AskUserRequestParamsSchema","AskUserRequestSchema","AskUserResponseSchema","AskUserResultSchema","AuthenticateMcpServerRequestParamsSchema","AuthenticateMcpServerRequestSchema","AuthenticateMcpServerResponseSchema","AutonomyLevel","AutonomyMode","AvailableModelConfigSchema","Base64ImageSourceSchema","BaseNotificationSchema","BaseRequestSchema","BaseResponseFailureSchema","BaseResponseSuccessSchema","CancelMcpAuthRequestParamsSchema","CancelMcpAuthRequestSchema","CancelMcpAuthResponseSchema","ClearMcpAuthRequestParamsSchema","ClearMcpAuthRequestSchema","ClearMcpAuthResponseSchema","CliRequestOrNotificationSchema","ClientRequestSchema","CloseSessionRequestSchema","CloseSessionResponseSchema","CloseSessionResultSchema","CompactSessionRequestSchema","CompactSessionResponseSchema","CompactSessionResultSchema","ContentBlockSchema","ContextStatsAccuracy","ContextStatsSchema","DecompSessionType","DiscoveredIssueSchema","DismissalRecordSchema","DismissalType","DocumentBlockSchema","DocumentSourceSchema","DroidClientMethod","DroidErrorType","DroidHookEventSchema","DroidInteractionMode","DroidServerMethod","DroidWorkingState","ExecuteRewindRequestSchema","ExecuteRewindResponseSchema","ExecuteRewindResultSchema","FACTORY_CLIENT_HEADER","FACTORY_CLIENT_VERSION","FACTORY_PROTOCOL_VERSION","FactoryDroidMessageSchema","FeatureStatus","FeatureSuccessState","FeatureSuccessStateSchema","ForkSessionRequestParamsSchema","ForkSessionRequestSchema","ForkSessionResponseSchema","ForkSessionResultSchema","GetContextStatsRequestSchema","GetContextStatsResponseSchema","GetRewindInfoRequestSchema","GetRewindInfoResponseSchema","GetRewindInfoResultSchema","HandoffItemsDismissedEntrySchema","HandoffSchema","ImageBlockSchema","InitializeSessionRequestParamsSchema","InitializeSessionRequestSchema","InitializeSessionResponseSchema","InitializeSessionResultSchema","InteractiveCheckSchema","InterruptSessionRequestParamsSchema","InterruptSessionRequestSchema","InterruptSessionResponseSchema","InterruptSessionResultSchema","IssueSeverity","JSONRPC_VERSION","JsonRpcEnvelopeSchema","JsonRpcErrorCode","JsonRpcErrorSchema","JsonRpcMessageSchema","JsonRpcMessageType","KillWorkerSessionRequestParamsSchema","KillWorkerSessionRequestSchema","KillWorkerSessionResponseSchema","KillWorkerSessionResultSchema","LEGACY_FACTORY_API_VERSION","ListMcpRegistryRequestParamsSchema","ListMcpRegistryRequestSchema","ListMcpRegistryResponseSchema","ListMcpRegistryResultSchema","ListMcpServersRequestParamsSchema","ListMcpServersRequestSchema","ListMcpServersResponseSchema","ListMcpServersResultSchema","ListMcpToolsRequestParamsSchema","ListMcpToolsRequestSchema","ListMcpToolsResponseSchema","ListMcpToolsResultSchema","ListSkillsRequestSchema","ListSkillsResponseSchema","ListToolsRequestParamsSchema","ListToolsRequestSchema","ListToolsResponseSchema","ListToolsResultSchema","LoadSessionRequestParamsSchema","LoadSessionRequestSchema","LoadSessionResponseSchema","LoadSessionResultSchema","McpAuthOutcome","McpHttpServerConfigFieldsSchema","McpRegistryServerSchema","McpServerStatus","McpServerStatusInfoSchema","McpServerType","McpStatus","McpStatusSummarySchema","McpStdioServerConfigFieldsSchema","McpToolInfoSchema","MilestoneValidationTriggeredEntrySchema","MissionAcceptedEntrySchema","MissionFeatureSchema","MissionFeaturesChangedNotificationSchema","MissionHeartbeatNotificationSchema","MissionPausedEntrySchema","MissionProgressEntryNotificationSchema","MissionResumedEntrySchema","MissionRunStartedEntrySchema","MissionState","MissionStateChangedNotificationSchema","MissionWorkerCompletedNotificationSchema","MissionWorkerStartedNotificationSchema","ModelProvider","OutputFormatSchema","ProgressLogEntrySchema","ProgressLogEntryType","ReasoningEffort","RedactedThinkingBlockSchema","RemoveMcpServerRequestParamsSchema","RemoveMcpServerRequestSchema","RemoveMcpServerResponseSchema","RenameSessionRequestParamsSchema","RenameSessionRequestSchema","RenameSessionResponseSchema","RenameSessionResultSchema","RequestPermissionRequestParamsSchema","RequestPermissionRequestSchema","RequestPermissionResponseSchema","RequestPermissionResultSchema","SessionNotificationSchema","SessionNotificationSchemaList","SessionNotificationType","SessionSettingsSchema","SessionSourceSchema","SessionTagSchema","SessionTokenUsageChangedNotificationSchema","SettingsLevel","SkillInfoSchema","SkillLocation","SubmitBugReportRequestSchema","SubmitBugReportResponseSchema","SubmitBugReportResultSchema","SubmitMcpAuthCodeRequestParamsSchema","SubmitMcpAuthCodeRequestSchema","SubmitMcpAuthCodeResponseSchema","TestCaseSchema","TestFileSchema","TestsSchema","TextBlockSchema","ThinkingBlockSchema","ToggleMcpServerRequestParamsSchema","ToggleMcpServerRequestSchema","ToggleMcpServerResponseSchema","ToggleMcpToolRequestParamsSchema","ToggleMcpToolRequestSchema","ToggleMcpToolResponseSchema","TokenUsageSchema","ToolConfirmationDetailsSchema","ToolConfirmationListItemSchema","ToolConfirmationOutcome","ToolConfirmationType","ToolProgressUpdateSchema","ToolUseSchema","TraceContextMetaSchema","UpdateSessionSettingsRequestParamsSchema","UpdateSessionSettingsRequestSchema","UpdateSessionSettingsResponseSchema","UpdateSessionSettingsResultSchema","VerificationCommandSchema","VerificationSchema","WorkerCompletedEntrySchema","WorkerFailedEntrySchema","WorkerPausedEntrySchema","WorkerSelectedFeatureEntrySchema","WorkerStartedEntrySchema","WorkerStateInfoSchema","JsonRpcMessageType","JsonRpcErrorCode","DroidInteractionMode","Platform","AutonomyLevel","AutonomyMode","ToolConfirmationOutcome","ToolConfirmationType","SandboxViolationType","SandboxViolationReason","SandboxOperationType","DroidServerMethod","QueuePlacement","ResolveQueuedUserMessageAction","DroidClientMethod","SessionNotificationType","StructuredOutputErrorCode","McpAuthOutcome","McpServerStatus","McpServerType","McpStatus","DroidErrorType","DroidWorkingState","DroidLoopStatus","DroidLoopStopReason","ContextStatsAccuracy","ToolExecutionRenderStatus","DecompSessionType","MissionState","FeatureStatus","FeatureSuccessState","IssueSeverity","DismissalType","ProgressLogEntryType","WorkerFailureReason","MissionPauseReason","ContextCategoryColorKey","MessageVisibility","MessageRoleNoSystem","MessageRole","MessageContentBlockType","DocumentSourceType","SessionPlatform","SessionOrigin","ModelID","OpenAIPhase","ChatCompletionReasoningField","ReasoningEffort","ModelProvider","ApiProvider","ModelKind","LLMModelTier","SettingsLevel","DroidLocation","SkillLocation","SandboxMode","DiffMode","SoundFocusMode","TodoDisplayMode","SubagentSoundMode","LogoAnimationMode","ToolResultDisplay","FACTORY_CLIENT_HEADER","FACTORY_CLIENT_VERSION","LEGACY_FACTORY_API_VERSION","FACTORY_PROTOCOL_VERSION","JSONRPC_VERSION","z","z","JsonRpcMessageType","DroidInteractionMode","TraceContextMetaSchema","JsonRpcEnvelopeSchema","JSONRPC_VERSION","LEGACY_FACTORY_API_VERSION","JsonRpcErrorSchema","JsonRpcErrorCode","BaseRequestSchema","BaseResponseSuccessSchema","BaseResponseFailureSchema","BaseNotificationSchema","JsonRpcMessageSchema","z","z","SessionTagSchema","TokenUsageSchema","z","z","SessionSourceSchema","z","z","TextBlockSchema","Base64ImageSourceSchema","ImageBlockSchema","ThinkingBlockSchema","ModelProvider","RedactedThinkingBlockSchema","ToolUseSchema","DocumentSourceSchema","DocumentBlockSchema","ContentBlockSchema","FactoryDroidMessageSchema","z","z","ReasoningEffort","z","ReasoningEffortSchema","z","ReasoningEffort","AutonomyMode","AutonomyLevel","z","z","ReasoningEffortSchema","z","ReasoningEffort","ModelProvider","z","z","ReasoningEffortSchema","z","ReasoningEffort","modelIdValues","tolerantModelIdArray","SandboxModeSchema","AutonomyLevel","z","z","z","ToolConfirmationListItemSchema","z","ToolConfirmationOutcome","z","z","McpHttpServerConfigFieldsSchema","McpStdioServerConfigFieldsSchema","McpServerStatusInfoSchema","McpServerStatus","SettingsLevel","McpServerType","McpStatusSummarySchema","McpRegistryServerSchema","McpToolInfoSchema","z","FeatureSuccessStateSchema","z","FeatureSuccessState","MissionFeatureSchema","FeatureStatus","IssueSeverity","DismissalType","DiscoveredIssueSchema","VerificationCommandSchema","InteractiveCheckSchema","VerificationSchema","TestCaseSchema","TestFileSchema","TestsSchema","SkillDeviationSchema","SkillFeedbackSchema","HandoffSchema","DismissalRecordSchema","MissionState","BaseProgressLogEntrySchema","MissionAcceptedEntrySchema","MissionPausedEntrySchema","MissionResumedEntrySchema","MissionRunStartedEntrySchema","WorkerStartedEntrySchema","WorkerSelectedFeatureEntrySchema","WorkerCompletedEntrySchema","WorkerFailedEntrySchema","WorkerPausedEntrySchema","HandoffItemsDismissedEntrySchema","MilestoneValidationTriggeredEntrySchema","ProgressLogEntrySchema","z","ToolResultNotificationSchema","z","ToolProgressUpdateSchema","ToolProgressUpdateNotificationSchema","CreateMessageNotificationSchema","FactoryDroidMessageSchema","ErrorNotificationSchema","DroidErrorType","DroidWorkingStateChangedNotificationSchema","DroidWorkingState","PermissionResolvedNotificationSchema","ToolConfirmationOutcome","SettingsUpdatedNotificationSchema","AutonomyMode","AutonomyLevel","ReasoningEffort","SessionTitleUpdatedNotificationSchema","McpStatusChangedNotificationSchema","McpServerStatusInfoSchema","McpStatusSummarySchema","AssistantTextDeltaNotificationSchema","AssistantTextCompleteNotificationSchema","StructuredOutputNotificationSchema","ThinkingTextDeltaNotificationSchema","ThinkingTextCompleteNotificationSchema","SessionTokenUsageChangedNotificationSchema","TokenUsageSchema","MissionStateChangedNotificationSchema","MissionState","MissionFeaturesChangedNotificationSchema","MissionFeatureSchema","MissionProgressEntryNotificationSchema","ProgressLogEntrySchema","MissionHeartbeatNotificationSchema","MissionWorkerStartedNotificationSchema","MissionWorkerCompletedNotificationSchema","McpAuthRequiredNotificationSchema","McpAuthCompletedNotificationSchema","McpAuthOutcome","HookCommandSchema","HookResultSchema","DroidHookEventSchema","ToolCallNotificationSchema","ToolUseSchema","HookExecutionStartedNotificationSchema","HookExecutionCompletedNotificationSchema","SessionNotificationSchemaList","SessionNotificationParamsSchema","SessionNotificationSchema","EditToolConfirmationDetailsSchema","ExecuteToolConfirmationDetailsSchema","CreateToolConfirmationDetailsSchema","AskUserConfirmationDetailsSchema","ExitSpecModeConfirmationDetailsSchema","ProposeMissionConfirmationDetailsSchema","StartMissionRunConfirmationDetailsSchema","ApplyPatchToolConfirmationDetailsSchema","McpToolConfirmationDetailsSchema","ToolConfirmationDetailsSchema","ToolConfirmationInfoSchema","ToolConfirmationType","RequestPermissionRequestParamsSchema","ToolConfirmationListItemSchema","RequestPermissionRequestSchema","AskUserQuestionSchema","AskUserRequestParamsSchema","AskUserRequestSchema","AskUserCollectedAnswerSchema","AskUserResultSchema","AskUserResponseSchema","RequestPermissionResultSchema","RequestPermissionResponseSchema","CliRequestOrNotificationSchema","JsonRpcEnvelopeSchema","z","AvailableModelConfigSchema","z","ModelProvider","ReasoningEffort","ContextStatsSchema","ContextStatsAccuracy","HttpHeaderSchema","FactoryDroidMessageSchema","DecompSessionType","OutputFormatSchema","InitializeSessionRequestParamsSchema","AutonomyMode","AutonomyLevel","SessionSourceSchema","SessionTagSchema","LoadSessionRequestParamsSchema","AddUserMessageRequestParamsSchema","Base64ImageSourceSchema","DocumentSourceSchema","InterruptSessionRequestParamsSchema","CloseSessionRequestParamsSchema","CloseSessionResultSchema","KillWorkerSessionRequestParamsSchema","KillWorkerSessionResultSchema","UpdateSessionSettingsRequestParamsSchema","SessionSettingsSchema","GitRepoInfoSchema","InitializeSessionResultSchema","WorkerStateInfoSchema","MissionState","MissionFeatureSchema","ProgressLogEntrySchema","TokenUsageSchema","LoadSessionResultSchema","RequestPermissionRequestParamsSchema","AskUserRequestParamsSchema","AddUserMessageResultSchema","InterruptSessionResultSchema","UpdateSessionSettingsResultSchema","InitializeSessionRequestSchema","LoadSessionRequestSchema","AddUserMessageRequestSchema","InterruptSessionRequestSchema","CloseSessionRequestSchema","KillWorkerSessionRequestSchema","UpdateSessionSettingsRequestSchema","McpHttpServerConfigFieldsSchema","McpStdioServerConfigFieldsSchema","ToggleMcpServerRequestParamsSchema","ToggleMcpServerResultSchema","ToggleMcpServerRequestSchema","AuthenticateMcpServerRequestParamsSchema","AuthenticateMcpServerResultSchema","AuthenticateMcpServerRequestSchema","CancelMcpAuthRequestParamsSchema","CancelMcpAuthResultSchema","CancelMcpAuthRequestSchema","ClearMcpAuthRequestParamsSchema","ClearMcpAuthResultSchema","ClearMcpAuthRequestSchema","SubmitMcpAuthCodeRequestParamsSchema","SubmitMcpAuthCodeResultSchema","SubmitMcpAuthCodeRequestSchema","SubmitMcpAuthCodeResponseSchema","AddMcpServerRequestParamsSchema","AddMcpServerResultSchema","AddMcpServerRequestSchema","RemoveMcpServerRequestParamsSchema","RemoveMcpServerResultSchema","RemoveMcpServerRequestSchema","ListMcpRegistryRequestParamsSchema","ListMcpRegistryResultSchema","McpRegistryServerSchema","ListMcpRegistryRequestSchema","ListMcpToolsRequestParamsSchema","ListMcpToolsResultSchema","McpToolInfoSchema","ListMcpToolsRequestSchema","ExecToolInfoSchema","ListToolsRequestParamsSchema","ListToolsResultSchema","ListToolsRequestSchema","ListMcpServersRequestParamsSchema","ListMcpServersResultSchema","McpServerStatusInfoSchema","McpStatusSummarySchema","ListMcpServersRequestSchema","ToggleMcpToolRequestParamsSchema","ToggleMcpToolResultSchema","ToggleMcpToolRequestSchema","ListSkillsRequestParamsSchema","SkillResourceSchema","SkillInfoSchema","SkillLocation","ListSkillsResultSchema","ListSkillsRequestSchema","GetContextStatsRequestParamsSchema","GetContextStatsRequestSchema","z","GetContextStatsRequestParamsSchema","ContextBreakdownCategorySchema","SkillLocation","SubmitBugReportRequestParamsSchema","SubmitBugReportResultSchema","SubmitBugReportRequestSchema","GetRewindInfoRequestParamsSchema","RewindFileSnapshotSchema","RewindFileCreationSchema","RewindEvictedFileSchema","GetRewindInfoResultSchema","GetRewindInfoRequestSchema","ExecuteRewindRequestParamsSchema","ExecuteRewindResultSchema","ExecuteRewindRequestSchema","CompactSessionRequestParamsSchema","CompactSessionResultSchema","CompactSessionRequestSchema","CompactSessionResponseSchema","ForkSessionResultSchema","ForkSessionRequestParamsSchema","ForkSessionRequestSchema","ForkSessionResponseSchema","RenameSessionRequestParamsSchema","RenameSessionResultSchema","RenameSessionRequestSchema","RenameSessionResponseSchema","ClientRequestSchema","InitializeSessionRequestSchema","LoadSessionRequestSchema","InterruptSessionRequestSchema","CloseSessionRequestSchema","KillWorkerSessionRequestSchema","AddUserMessageRequestSchema","UpdateSessionSettingsRequestSchema","ToggleMcpServerRequestSchema","AuthenticateMcpServerRequestSchema","CancelMcpAuthRequestSchema","ClearMcpAuthRequestSchema","AddMcpServerRequestSchema","RemoveMcpServerRequestSchema","ListMcpRegistryRequestSchema","ListMcpToolsRequestSchema","ListToolsRequestSchema","ListMcpServersRequestSchema","ToggleMcpToolRequestSchema","SubmitMcpAuthCodeRequestSchema","ListSkillsRequestSchema","InitializeSessionResponseSchema","InitializeSessionResultSchema","LoadSessionResponseSchema","LoadSessionResultSchema","AddUserMessageResponseSchema","AddUserMessageResultSchema","InterruptSessionResponseSchema","InterruptSessionResultSchema","CloseSessionResponseSchema","CloseSessionResultSchema","KillWorkerSessionResponseSchema","KillWorkerSessionResultSchema","UpdateSessionSettingsResponseSchema","UpdateSessionSettingsResultSchema","ToggleMcpServerResponseSchema","ToggleMcpServerResultSchema","AuthenticateMcpServerResponseSchema","AuthenticateMcpServerResultSchema","CancelMcpAuthResponseSchema","CancelMcpAuthResultSchema","ClearMcpAuthResponseSchema","ClearMcpAuthResultSchema","AddMcpServerResponseSchema","AddMcpServerResultSchema","RemoveMcpServerResponseSchema","RemoveMcpServerResultSchema","ListMcpRegistryResponseSchema","ListMcpRegistryResultSchema","ListMcpToolsResponseSchema","ListMcpToolsResultSchema","ListToolsResponseSchema","ListToolsResultSchema","ListMcpServersResponseSchema","ListMcpServersResultSchema","ToggleMcpToolResponseSchema","ToggleMcpToolResultSchema","ListSkillsResponseSchema","ListSkillsResultSchema","GetContextStatsResponseSchema","ContextStatsSchema","SubmitBugReportResponseSchema","GetRewindInfoResponseSchema","ExecuteRewindResponseSchema","AutomationScheduleCadence","AutomationValidationIssueType","AutomationErrorCode","AutomationPrivacyLevel","z","z","z","z","SessionTitleAutoStage","z","DecompSessionType","z","z","z","ReasoningEffort","SessionSettingsSchema","ModelProvider","TokenUsageSchema","SessionTagSchema","ToolExecutionLocation","ToolStatus","RiskLevel","z","z","z","TokenUsageSchema","z","McpServerConfigSchema","DaemonConnectionMethod","DaemonConnectionEvent","ConnectionState","DaemonTerminalMethod","DaemonTerminalEvent","DaemonDroidMethod","DaemonGetGitDiffUnavailableReason","DaemonSettingsMethod","DaemonManagementMethod","DaemonRelayMethod","DaemonRelayEvent","DaemonCronEvent","DaemonSpecificNotificationType","DaemonDroidEvent","CreateTerminalError","McpConfigSource","SessionLoadState","SessionSearchDocKind","z","z","z","z","z","z","SkillInfoSchema","z","z","z","z","z","z","z","z","z","z","McpServerConfigSchema","McpServerStatus","ToggleMcpServerRequestParamsSchema","AuthenticateMcpServerRequestParamsSchema","CancelMcpAuthRequestParamsSchema","ClearMcpAuthRequestParamsSchema","AddMcpServerRequestParamsSchema","RemoveMcpServerRequestParamsSchema","ListMcpRegistryRequestParamsSchema","McpRegistryServerSchema","ListMcpRegistryResultSchema","ListMcpToolsRequestParamsSchema","McpToolInfoSchema","ListMcpToolsResultSchema","ToggleMcpToolRequestParamsSchema","ListMcpServersRequestParamsSchema","ListMcpServersResultSchema","z","z","z","z","z","z","z","z","SettingsLevel","AutonomyMode","AutonomyLevel","ReasoningEffort","AvailableModelConfigSchema","z","createResponseSchema","z","InitializeSessionRequestParamsSchema","LoadSessionRequestParamsSchema","AddUserMessageRequestParamsSchema","InterruptSessionRequestParamsSchema","MissionState","UpdateSessionSettingsRequestParamsSchema","KillWorkerSessionRequestParamsSchema","KillWorkerSessionResultSchema","InitializeSessionResultSchema","LoadSessionResultSchema","AddUserMessageResultSchema","InterruptSessionResultSchema","DroidWorkingState","SessionTagSchema","FactoryDroidMessageSchema","UpdateSessionSettingsResultSchema","RequestPermissionRequestParamsSchema","RequestPermissionResultSchema","AskUserRequestParamsSchema","AskUserResultSchema","SessionNotificationSchemaList","resolve","z","z","z","path","spawn","fs","os","path","resolve","spawn","MachineType","resolve","resolve"]}