{"version":3,"sources":["../src/index.ts","../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":["export * from './schemas/index.js';\n\nexport { SDK_TAG, SDK_VERSION } from './constants.js';\n\nexport * from './errors.js';\n\nexport * from './types.js';\nexport { ProcessTransport } from './transport.js';\n\nexport { dispatchNotification, ProtocolEngine } from './protocol.js';\nexport type {\n  AskUserHandler,\n  NotificationCallback,\n  NotificationFilter,\n  NotificationListener,\n  PermissionHandler,\n} from './protocol.js';\n\n// Namespace export for the source-of-truth protocol schemas under src/protocol/.\n// Exposed as a namespace to avoid colliding with the flat exports above from\n// the legacy `./protocol.js` file. Consumers access these as\n// `protocol.DaemonRequestSchema`, `protocol.daemon.…`, `protocol.usage.…`, etc.\nexport * as protocol from './protocol/index.js';\n\nexport { DroidClient } from './client.js';\nexport type {\n  ClientAskUserHandler,\n  ClientPermissionHandler,\n  DroidClientOptions,\n} from './client.js';\n\nexport type {\n  BaseDroidHookInput,\n  DroidHookEvent,\n  DroidHookInput,\n  DroidHookOutput,\n  DroidPermissionMode,\n  NotificationHookInput,\n  PreCompactHookInput,\n  SessionEndHookInput,\n  SessionStartHookInput,\n  StopHookInput,\n  SubagentStopHookInput,\n  ToolHookInput,\n  UserPromptSubmitHookInput,\n} from './hooks.js';\n\nexport {\n  convertNotificationToStreamMessage,\n  DroidMessageType,\n  StreamStateTracker,\n} from './stream.js';\nexport type {\n  DroidAssistantMessage,\n  DroidUserMessage,\n  DroidToolCallMessage,\n  DroidToolResultMessage,\n  DroidErrorMessage,\n  DroidResultMessage,\n  DroidStreamMessage,\n  DroidStreamEvent,\n  AssistantTextDelta,\n  AssistantTextComplete,\n  ThinkingTextDelta,\n  ThinkingTextComplete,\n  ToolCallDelta,\n  ToolUse,\n  ToolResult,\n  ToolProgress,\n  WorkingStateChanged,\n  TokenUsageUpdate,\n  CreateMessage,\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  StructuredOutput,\n  StructuredOutputFields,\n  ErrorEvent,\n  DroidMessage,\n} from './stream.js';\n\nexport { run } from './run.js';\nexport type { RunOptions } from './run.js';\n\nexport { createSdkMcpServer, tool, SdkMcpServer } from './mcp.js';\nexport type {\n  DroidMcpServerConfig,\n  DroidTool,\n  DroidToolResult,\n  SdkMcpServerOptions,\n} from './mcp.js';\n\nexport { createSession, resumeSession, DroidSession } from './session.js';\nexport type {\n  CreateSessionOptions,\n  ResumeSessionOptions,\n  MessageOptions,\n  DroidResult,\n} from './session.js';\n\nexport { listSessions } from './session-discovery.js';\n\n// Factory REST API\nexport {\n  listMachineTemplates,\n  getMachineTemplate,\n  listComputers,\n  getComputer,\n  createComputer,\n  getComputerByName,\n  updateComputer,\n  deleteComputer,\n  restartComputer,\n  refreshComputer,\n  getComputerMetrics,\n  retryInstallDeps,\n  listRemoteSessions,\n} from './api.js';\nexport {\n  ComputerSchema,\n  ComputerListResponseSchema,\n  ComputerMetricSchema,\n  ComputerMetricsResponseSchema,\n  MachineTemplateBuildStatusSchema,\n  MachineTemplateSchema,\n  MachineTemplateListResponseSchema,\n  RefreshComputerResponseSchema,\n  RemoteSessionSchema,\n  RemoteSessionListResponseSchema,\n} from './api-types.js';\nexport type {\n  FactoryApiOptions,\n  ComputerApiOptions,\n  Computer,\n  ComputerListResponse,\n  ComputerMetric,\n  ComputerMetricsResponse,\n  CreateComputerOptions,\n  ListComputersOptions,\n  GetComputerOptions,\n  GetComputerByNameOptions,\n  GetComputerMetricsOptions,\n  UpdateComputerOptions,\n  DeleteComputerOptions,\n  RestartComputerOptions,\n  RefreshComputerOptions,\n  RefreshComputerResponse,\n  RetryInstallDepsOptions,\n  MachineTemplate,\n  MachineTemplateBuildStatus,\n  ListMachineTemplatesOptions,\n  GetMachineTemplateOptions,\n  MachineTemplateListResponse,\n  RemoteSession,\n  RemoteSessionListResponse,\n  ListRemoteSessionsOptions,\n} from './api-types.js';\n\n// Daemon mode\nexport {\n  DaemonClient,\n  connectDaemon,\n  DaemonConnection,\n  resolveWebSocketUrl,\n  ensureLocalDaemon,\n} from './daemon/index.js';\nexport type { DaemonClientOptions } from './daemon/index.js';\nexport { DaemonSession } from './daemon/index.js';\nexport { WebSocketTransport } from './daemon/index.js';\nexport { MachineType } from './daemon/index.js';\nexport type {\n  ConnectDaemonOptions,\n  SDKMachineConfig,\n  DaemonSessionOptions,\n  DaemonResumeOptions,\n  SendOptions,\n  WebSocketTransportOptions,\n} from './daemon/index.js';\n","/** 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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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","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","ToolUseBlockSchema","resolve","uuidv4","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","import_zod","JsonRpcMessageType","DroidInteractionMode","TraceContextMetaSchema","JsonRpcEnvelopeSchema","JSONRPC_VERSION","LEGACY_FACTORY_API_VERSION","JsonRpcErrorSchema","JsonRpcErrorCode","BaseRequestSchema","BaseResponseSuccessSchema","BaseResponseFailureSchema","BaseNotificationSchema","JsonRpcMessageSchema","import_zod","import_zod","SessionTagSchema","TokenUsageSchema","import_zod","SessionSourceSchema","import_zod","TextBlockSchema","Base64ImageSourceSchema","ImageBlockSchema","ThinkingBlockSchema","ModelProvider","RedactedThinkingBlockSchema","ToolUseSchema","DocumentSourceSchema","DocumentBlockSchema","ContentBlockSchema","FactoryDroidMessageSchema","import_zod","ReasoningEffort","import_zod","ReasoningEffortSchema","ReasoningEffort","AutonomyMode","AutonomyLevel","import_zod","import_zod","ReasoningEffortSchema","ReasoningEffort","ModelProvider","import_zod","ReasoningEffortSchema","ReasoningEffort","modelIdValues","tolerantModelIdArray","SandboxModeSchema","AutonomyLevel","import_zod","import_zod","ToolConfirmationListItemSchema","ToolConfirmationOutcome","import_zod","McpHttpServerConfigFieldsSchema","McpStdioServerConfigFieldsSchema","McpServerStatusInfoSchema","McpServerStatus","SettingsLevel","McpServerType","McpStatusSummarySchema","McpRegistryServerSchema","McpToolInfoSchema","import_zod","FeatureSuccessStateSchema","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","import_zod","ToolResultNotificationSchema","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","import_zod","AvailableModelConfigSchema","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","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","import_zod","import_zod","import_zod","SessionTitleAutoStage","DecompSessionType","import_zod","import_zod","ReasoningEffort","SessionSettingsSchema","ModelProvider","TokenUsageSchema","SessionTagSchema","ToolExecutionLocation","ToolStatus","RiskLevel","import_zod","import_zod","TokenUsageSchema","import_zod","McpServerConfigSchema","DaemonConnectionMethod","DaemonConnectionEvent","ConnectionState","DaemonTerminalMethod","DaemonTerminalEvent","DaemonDroidMethod","DaemonGetGitDiffUnavailableReason","DaemonSettingsMethod","DaemonManagementMethod","DaemonRelayMethod","DaemonRelayEvent","DaemonCronEvent","DaemonSpecificNotificationType","DaemonDroidEvent","CreateTerminalError","McpConfigSource","SessionLoadState","SessionSearchDocKind","import_zod","z","import_zod","z","import_zod","z","SkillInfoSchema","import_zod","import_zod","z","import_zod","z","import_zod","z","import_zod","z","McpServerConfigSchema","McpServerStatus","ToggleMcpServerRequestParamsSchema","AuthenticateMcpServerRequestParamsSchema","CancelMcpAuthRequestParamsSchema","ClearMcpAuthRequestParamsSchema","AddMcpServerRequestParamsSchema","RemoveMcpServerRequestParamsSchema","ListMcpRegistryRequestParamsSchema","McpRegistryServerSchema","ListMcpRegistryResultSchema","ListMcpToolsRequestParamsSchema","McpToolInfoSchema","ListMcpToolsResultSchema","ToggleMcpToolRequestParamsSchema","ListMcpServersRequestParamsSchema","ListMcpServersResultSchema","import_zod","z","import_zod","import_zod","z","import_zod","z","SettingsLevel","AutonomyMode","AutonomyLevel","ReasoningEffort","AvailableModelConfigSchema","import_zod","createResponseSchema","z","InitializeSessionRequestParamsSchema","LoadSessionRequestParamsSchema","AddUserMessageRequestParamsSchema","InterruptSessionRequestParamsSchema","MissionState","UpdateSessionSettingsRequestParamsSchema","KillWorkerSessionRequestParamsSchema","KillWorkerSessionResultSchema","InitializeSessionResultSchema","LoadSessionResultSchema","AddUserMessageResultSchema","InterruptSessionResultSchema","DroidWorkingState","SessionTagSchema","FactoryDroidMessageSchema","UpdateSessionSettingsResultSchema","RequestPermissionRequestParamsSchema","RequestPermissionResultSchema","AskUserRequestParamsSchema","AskUserResultSchema","SessionNotificationSchemaList","resolve","import_mcp","import_zod","http","import_zod","path","import_node_child_process","fs","os","path","resolve","MachineType","resolve","WebSocket","resolve"]}