@rzx/ohs 1.2.8 → 1.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,27 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../frontend/src/theme/builtinThemes.ts", "../../../../packages/protocol/src/session-model.ts", "../../../../packages/protocol/src/session.ts", "../../../../packages/protocol/src/serialization.ts", "../../../../packages/protocol/src/runtime-config.ts", "../../../../packages/protocol/src/session-input-items.ts", "../../../../packages/protocol/src/requests.ts", "../../../../packages/protocol/src/attachment.ts", "../../../../packages/protocol/src/capabilities.ts", "../../../../packages/protocol/src/session-goals.ts", "../../../../packages/protocol/src/mcp-oauth.ts", "../../../../packages/protocol/src/auto-review.ts", "../../../../packages/protocol/src/execution-observability.ts", "../../../../packages/protocol/src/plugin-ui.ts", "../../../../packages/protocol/src/plugin-ui-requests.ts", "../../../../packages/protocol/src/plugin-ui-bridge.ts", "../../../../packages/protocol/src/notes.ts", "../../../../packages/protocol/src/index.ts", "../../../../packages/client/src/protocol/protocol-client.ts", "../../../../packages/client/src/transport/http-transport.ts", "../../../../packages/client/src/transport/sse-transport.ts", "../../../../packages/client/src/protocol/index.ts", "../../../../packages/client/src/resources/system-resource.ts", "../../../../packages/client/src/resources/provider-resource.ts", "../../../../packages/client/src/resources/auth-resource.ts", "../../../../packages/client/src/resources/project-resource.ts", "../../../../packages/client/src/resources/plugin-resource.ts", "../../../../packages/client/src/resources/plugin-ui-resource.ts", "../../../../packages/client/src/resources/development-resource.ts", "../../../../packages/client/src/resources/session-resource.ts", "../../../../packages/client/src/resources/attachment-resource.ts", "../../../../packages/client/src/resources/permission-resource.ts", "../../../../packages/client/src/resources/schedule-resource.ts", "../../../../packages/client/src/resources/note-resource.ts", "../../../../packages/client/src/resources/job-resource.ts", "../../../../packages/client/src/resources/terminal-resource.ts", "../../../../packages/client/src/resources/channel-resource.ts", "../../../../packages/client/src/resources/event-resource.ts", "../../../../packages/client/src/resources/mcp-resource.ts", "../../../../packages/client/src/resources/index.ts", "../../../../packages/client/src/transport/http-client.ts", "../../../../packages/client/src/transport/index.ts", "../../../../packages/client/src/state/reducer.ts", "../../../../packages/client/src/state/selectors.ts", "../../../../packages/client/src/state/session-stream-state.ts", "../../../../packages/client/src/state/sync.ts", "../../../../packages/client/src/state/session-sync-controller.ts", "../../../../packages/client/src/state/index.ts", "../../../../packages/client/src/commands/diagnostic-commands.ts", "../../../../packages/client/src/commands/job-commands.ts", "../../../../packages/client/src/commands/knowledge-commands.ts", "../../../../packages/client/src/commands/settings-commands.ts", "../../../../packages/client/src/commands/plugin-presentation.ts", "../../../../packages/client/src/commands/session-commands.ts", "../../../../packages/client/src/commands/index.ts", "../../../../packages/client/src/index.ts", "../../../frontend/src/jobs/job-remote-state.ts", "../../../frontend/src/hooks/transcript.ts", "../../../frontend/src/hooks/sessionSlashCommands.ts", "../../../frontend/src/hooks/sync-submodules/connection.ts", "../../../frontend/src/hooks/sync-submodules/permissions.ts", "../../../frontend/src/hooks/sync-submodules/view-model.ts", "../../../frontend/src/hooks/sync-submodules/mcp.ts", "../../../frontend/src/hooks/sync-submodules/actions.ts", "../../../frontend/src/hooks/sync-submodules/index.ts", "../../../frontend/src/hooks/useServerSync.ts", "../../../frontend/src/ui/constants.ts", "../../../frontend/src/hooks/useEscToCancel.ts", "../../../frontend/src/theme/ThemeContext.tsx", "../../../frontend/src/ui/fuzzy.ts", "../../../frontend/src/hooks/useListNavigation.ts", "../../../frontend/src/ui/DialogSelect.tsx", "../../../frontend/src/ui/DialogText.tsx", "../../../frontend/src/components/dialogs/DiffView.tsx", "../../../frontend/src/components/dialogs/PermissionDialog.tsx", "../../../frontend/src/components/dialogs/QuestionDialog.tsx", "../../../frontend/src/hooks/useModalWiring.tsx", "../../../frontend/src/ui/DialogContext.tsx", "../../../frontend/src/ui/Toast.tsx", "../../../frontend/src/ui/ModelPickerDialog.tsx", "../../../frontend/src/keymap/commands.ts", "../../../frontend/src/keymap/permissionModes.ts", "../../../frontend/src/components/Logo.tsx", "../../../frontend/src/routes/Home.tsx", "../../../frontend/src/theme/syntax.ts", "../../../frontend/src/components/messages/ToolDiff.tsx", "../../../frontend/src/routes/session/reasoning-text.ts", "../../../frontend/src/routes/session/parts.tsx", "../../../frontend/src/routes/session/Session.tsx", "../../../frontend/src/routes/session/Sidebar.tsx", "../../../frontend/src/services/status.ts", "../../../frontend/src/routes/session/Footer.tsx", "../../../frontend/src/components/prompt/Autocomplete.tsx", "../../../frontend/src/services/frecency.ts", "../../../frontend/src/ui/commandRanking.ts", "../../../frontend/src/components/prompt/fileCompletion.ts", "../../../frontend/src/components/prompt/Prompt.tsx", "../../../frontend/src/routes/session/AppView.tsx", "../../../frontend/src/components/JobsPanel.tsx", "../../../frontend/src/utils/selection.ts", "../../../frontend/src/App.tsx", "../../../frontend/src/index.tsx", "../../../frontend/src/runtime.ts"],
3
+ "sources": ["../../../frontend/src/theme/builtinThemes.ts", "../../../../packages/protocol/src/session-model.ts", "../../../../packages/protocol/src/session.ts", "../../../../packages/protocol/src/serialization.ts", "../../../../packages/protocol/src/runtime-config.ts", "../../../../packages/protocol/src/session-input-items.ts", "../../../../packages/protocol/src/requests.ts", "../../../../packages/protocol/src/attachment.ts", "../../../../packages/protocol/src/capabilities.ts", "../../../../packages/protocol/src/session-goals.ts", "../../../../packages/protocol/src/mcp-oauth.ts", "../../../../packages/protocol/src/auto-review.ts", "../../../../packages/protocol/src/execution-observability.ts", "../../../../packages/protocol/src/plugin-ui.ts", "../../../../packages/protocol/src/plugin-ui-requests.ts", "../../../../packages/protocol/src/plugin-ui-appearance.ts", "../../../../packages/protocol/src/plugin-ui-conversation.ts", "../../../../packages/protocol/src/plugin-ui-bridge.ts", "../../../../packages/protocol/src/notes.ts", "../../../../packages/protocol/src/index.ts", "../../../../packages/client/src/protocol/protocol-client.ts", "../../../../packages/client/src/transport/http-transport.ts", "../../../../packages/client/src/transport/sse-transport.ts", "../../../../packages/client/src/protocol/index.ts", "../../../../packages/client/src/resources/system-resource.ts", "../../../../packages/client/src/resources/provider-resource.ts", "../../../../packages/client/src/resources/auth-resource.ts", "../../../../packages/client/src/resources/project-resource.ts", "../../../../packages/client/src/resources/plugin-resource.ts", "../../../../packages/client/src/resources/plugin-ui-resource.ts", "../../../../packages/client/src/resources/development-resource.ts", "../../../../packages/client/src/resources/session-resource.ts", "../../../../packages/client/src/resources/attachment-resource.ts", "../../../../packages/client/src/resources/permission-resource.ts", "../../../../packages/client/src/resources/schedule-resource.ts", "../../../../packages/client/src/resources/note-resource.ts", "../../../../packages/client/src/resources/job-resource.ts", "../../../../packages/client/src/resources/terminal-resource.ts", "../../../../packages/client/src/resources/channel-resource.ts", "../../../../packages/client/src/resources/event-resource.ts", "../../../../packages/client/src/resources/mcp-resource.ts", "../../../../packages/client/src/resources/index.ts", "../../../../packages/client/src/transport/http-client.ts", "../../../../packages/client/src/transport/index.ts", "../../../../packages/client/src/state/reducer.ts", "../../../../packages/client/src/state/selectors.ts", "../../../../packages/client/src/state/session-stream-state.ts", "../../../../packages/client/src/state/sync.ts", "../../../../packages/client/src/state/session-sync-controller.ts", "../../../../packages/client/src/state/index.ts", "../../../../packages/client/src/commands/diagnostic-commands.ts", "../../../../packages/client/src/commands/job-commands.ts", "../../../../packages/client/src/commands/knowledge-commands.ts", "../../../../packages/client/src/commands/settings-commands.ts", "../../../../packages/client/src/commands/plugin-presentation.ts", "../../../../packages/client/src/commands/session-commands.ts", "../../../../packages/client/src/commands/index.ts", "../../../../packages/client/src/index.ts", "../../../frontend/src/jobs/job-remote-state.ts", "../../../frontend/src/hooks/transcript.ts", "../../../frontend/src/hooks/sessionSlashCommands.ts", "../../../frontend/src/hooks/sync-submodules/connection.ts", "../../../frontend/src/hooks/sync-submodules/permissions.ts", "../../../frontend/src/hooks/sync-submodules/view-model.ts", "../../../frontend/src/hooks/sync-submodules/mcp.ts", "../../../frontend/src/hooks/sync-submodules/actions.ts", "../../../frontend/src/hooks/sync-submodules/index.ts", "../../../frontend/src/hooks/useServerSync.ts", "../../../frontend/src/ui/constants.ts", "../../../frontend/src/hooks/useEscToCancel.ts", "../../../frontend/src/theme/ThemeContext.tsx", "../../../frontend/src/ui/fuzzy.ts", "../../../frontend/src/hooks/useListNavigation.ts", "../../../frontend/src/ui/DialogSelect.tsx", "../../../frontend/src/ui/DialogText.tsx", "../../../frontend/src/components/dialogs/DiffView.tsx", "../../../frontend/src/components/dialogs/PermissionDialog.tsx", "../../../frontend/src/components/dialogs/QuestionDialog.tsx", "../../../frontend/src/hooks/useModalWiring.tsx", "../../../frontend/src/ui/DialogContext.tsx", "../../../frontend/src/ui/Toast.tsx", "../../../frontend/src/ui/ModelPickerDialog.tsx", "../../../frontend/src/keymap/commands.ts", "../../../frontend/src/keymap/permissionModes.ts", "../../../frontend/src/components/Logo.tsx", "../../../frontend/src/routes/Home.tsx", "../../../frontend/src/theme/syntax.ts", "../../../frontend/src/components/messages/ToolDiff.tsx", "../../../frontend/src/routes/session/reasoning-text.ts", "../../../frontend/src/routes/session/parts.tsx", "../../../frontend/src/routes/session/Session.tsx", "../../../frontend/src/routes/session/Sidebar.tsx", "../../../frontend/src/services/status.ts", "../../../frontend/src/routes/session/Footer.tsx", "../../../frontend/src/components/prompt/Autocomplete.tsx", "../../../frontend/src/services/frecency.ts", "../../../frontend/src/ui/commandRanking.ts", "../../../frontend/src/components/prompt/fileCompletion.ts", "../../../frontend/src/components/prompt/Prompt.tsx", "../../../frontend/src/routes/session/AppView.tsx", "../../../frontend/src/components/JobsPanel.tsx", "../../../frontend/src/utils/selection.ts", "../../../frontend/src/App.tsx", "../../../frontend/src/index.tsx", "../../../frontend/src/runtime.ts"],
4
4
  "sourcesContent": [
5
5
  "export type ThemeConfig = {\n name: string;\n colors: {\n primary: string;\n secondary: string;\n accent: string;\n foreground: string;\n background: string;\n backgroundPanel: string;\n backgroundPrompt: string;\n muted: string;\n success: string;\n warning: string;\n error: string;\n info: string;\n };\n icons: {\n spinner: string[];\n tool: string;\n assistant: string;\n user: string;\n system: string;\n success: string;\n error: string;\n };\n};\n\n/** One Dark — default dark theme */\nexport const defaultTheme: ThemeConfig = {\n name: \"default\",\n colors: {\n primary: \"#56b6c2\",\n secondary: \"#abb2bf\",\n accent: \"#61afef\",\n foreground: \"#abb2bf\",\n background: \"#000000\",\n backgroundPanel: \"#262a33\",\n backgroundPrompt: \"#262626\",\n muted: \"#5c6370\",\n success: \"#98c379\",\n warning: \"#e5c07b\",\n error: \"#e06c75\",\n info: \"#61afef\",\n },\n icons: {\n spinner: [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"],\n tool: \" ⏵ \",\n assistant: \"⏺ \",\n user: \"> \",\n system: \"ℹ \",\n success: \"✓ \",\n error: \"✗ \",\n },\n};\n\n/** GitHub Light — bright theme */\nexport const lightTheme: ThemeConfig = {\n name: \"light\",\n colors: {\n primary: \"#0550ae\",\n secondary: \"#24292f\",\n accent: \"#0969da\",\n foreground: \"#24292f\",\n background: \"#ffffff\",\n backgroundPanel: \"#f6f8fa\",\n backgroundPrompt: \"#f3f4f6\",\n muted: \"#6e7781\",\n success: \"#1a7f37\",\n warning: \"#9a6700\",\n error: \"#cf222e\",\n info: \"#0969da\",\n },\n icons: {\n spinner: [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"],\n tool: \" ⏵ \",\n assistant: \"⏺ \",\n user: \"> \",\n system: \"ℹ \",\n success: \"✓ \",\n error: \"✗ \",\n },\n};\n\n/** Dracula — high-contrast dark theme */\nexport const draculaTheme: ThemeConfig = {\n name: \"dracula\",\n colors: {\n primary: \"#bd93f9\",\n secondary: \"#f8f8f2\",\n accent: \"#8be9fd\",\n foreground: \"#f8f8f2\",\n background: \"#282a36\",\n backgroundPanel: \"#343746\",\n backgroundPrompt: \"#2f313d\",\n muted: \"#6272a4\",\n success: \"#50fa7b\",\n warning: \"#ffb86c\",\n error: \"#ff5555\",\n info: \"#8be9fd\",\n },\n icons: {\n spinner: [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"],\n tool: \" ⏵ \",\n assistant: \"⏺ \",\n user: \"> \",\n system: \"ℹ \",\n success: \"✓ \",\n error: \"✗ \",\n },\n};\n\nexport const BUILTIN_THEMES: Record<string, ThemeConfig> = {\n default: defaultTheme,\n light: lightTheme,\n dracula: draculaTheme,\n};\n\nexport function getTheme(name: string): ThemeConfig {\n return BUILTIN_THEMES[name] ?? defaultTheme;\n}\n",
6
6
  "import type { SessionMessagePartRecord } from \"./session.js\";\n\nexport type SessionModelFailureKind =\n | \"network\"\n | \"timeout\"\n | \"rate_limit\"\n | \"server\"\n | \"stream_incomplete\"\n | \"authentication\"\n | \"invalid_request\"\n | \"quota\"\n | \"protocol\"\n | \"unknown\";\n\nconst SESSION_MODEL_FAILURE_KINDS = new Set<string>([\n \"network\", \"timeout\", \"rate_limit\", \"server\", \"stream_incomplete\",\n \"authentication\", \"invalid_request\", \"quota\", \"protocol\", \"unknown\",\n]);\n\n/** Mirrors core `ModelRetryState` without creating a protocol -> core dependency. */\nexport interface SessionModelRetryState {\n generationId: string;\n attempt: number;\n retryNumber: number;\n maxRetries: number;\n reason: SessionModelFailureKind;\n nextRetryAt: number;\n recoveryDeadlineAt: number;\n}\n\n/** Stored on a message part to identify which model attempt produced it. */\nexport interface SessionModelGenerationMetadata {\n generationId: string;\n attempt: number;\n /** A newer attempt replaced this part; its content is diagnostic only. */\n superseded?: boolean;\n /** The generation completed successfully; only committed parts are valid history. */\n committed?: boolean;\n}\n\nexport type SessionModelAttemptUsageStatus = \"complete\" | \"partial\" | \"unknown\";\n\nexport interface SessionModelAttemptUsageSnapshot {\n inputTokens: number;\n outputTokens: number;\n cacheCreationTokens?: number;\n cacheReadTokens?: number;\n usageIncomplete?: boolean;\n}\n\nexport interface SessionModelAttemptUsage {\n generationId: string;\n attempt: number;\n status: \"completed\" | \"failed\" | \"interrupted\";\n usageStatus: SessionModelAttemptUsageStatus;\n usage?: SessionModelAttemptUsageSnapshot;\n}\n\nexport interface SessionModelUsageSummary {\n incomplete: boolean;\n unknownAttempts: number;\n partialAttempts: number;\n}\n\nfunction isRecordValue(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** Close delivery without replacing known tool execution facts with the Run's status. */\nexport function settleSessionToolMetadata(metadata: Record<string, unknown>): Record<string, unknown> {\n const progress = isRecordValue(metadata.toolProgress) ? metadata.toolProgress : undefined;\n const readState = (value: unknown) => value === \"not_started\" || value === \"completed\" || value === \"unknown\" ? value : undefined;\n const returnedState = readState(metadata.executionState)\n ?? ([\"completed\", \"failed\", \"unknown\"].includes(String(progress?.phase)) ? readState(progress?.executionState) : undefined);\n const executionState = returnedState\n ?? ([\"preparing\", \"waiting_permission\", \"queued\"].includes(String(progress?.phase)) ? \"not_started\" : \"unknown\");\n const knownOutcome = returnedState && [\"completed\", \"failed\", \"interrupted\", \"unknown\"].includes(String(metadata.outcome))\n ? metadata.outcome : returnedState && [\"completed\", \"failed\"].includes(String(progress?.phase)) ? progress?.phase : undefined;\n const outcome = executionState === \"unknown\" && knownOutcome === \"completed\" ? \"unknown\"\n : knownOutcome ?? (executionState === \"unknown\" ? \"unknown\" : \"interrupted\");\n const closed: Record<string, unknown> = { ...metadata, toolProgress: null, executionState, outcome };\n if (returnedState && typeof metadata.failureKind === \"string\"\n && !(executionState === \"not_started\" && metadata.failureKind === \"unknown_outcome\")) closed.failureKind = metadata.failureKind;\n else if (outcome !== \"completed\") closed.failureKind = executionState === \"unknown\" ? \"unknown_outcome\" : \"interrupted\";\n else delete closed.failureKind;\n if (executionState === \"unknown\") closed.outcomeWarning = \"Tool may already have executed; automatic retry is disabled\";\n else delete closed.outcomeWarning;\n return closed;\n}\n\nfunction readNonEmptyString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction readPositiveInteger(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 1 ? value : undefined;\n}\n\nfunction readNonNegativeInteger(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0 ? value : undefined;\n}\n\nfunction readFiniteNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\n/** 安全解析 Run metadata 中的重试状态;非法/未知数据返回 undefined。 */\nexport function readSessionModelRetryState(\n metadata: Record<string, unknown> | undefined,\n): SessionModelRetryState | undefined {\n if (!isRecordValue(metadata)) return undefined;\n const raw = metadata.modelRetry;\n if (!isRecordValue(raw)) return undefined;\n const generationId = readNonEmptyString(raw.generationId);\n const attempt = readPositiveInteger(raw.attempt);\n const retryNumber = readPositiveInteger(raw.retryNumber);\n const maxRetries = readNonNegativeInteger(raw.maxRetries);\n const reason = readNonEmptyString(raw.reason);\n const nextRetryAt = readFiniteNumber(raw.nextRetryAt);\n const recoveryDeadlineAt = readFiniteNumber(raw.recoveryDeadlineAt);\n if (\n !generationId ||\n attempt === undefined ||\n retryNumber === undefined ||\n maxRetries === undefined ||\n !reason ||\n !SESSION_MODEL_FAILURE_KINDS.has(reason) ||\n nextRetryAt === undefined ||\n recoveryDeadlineAt === undefined\n ) {\n return undefined;\n }\n return {\n generationId,\n attempt,\n retryNumber,\n maxRetries,\n reason: reason as SessionModelFailureKind,\n nextRetryAt,\n recoveryDeadlineAt,\n };\n}\n\n/** 安全解析 part metadata 中的生成归属;非法数据返回 undefined。 */\nexport function readModelGenerationMetadata(\n metadata: Record<string, unknown> | undefined,\n): SessionModelGenerationMetadata | undefined {\n if (!isRecordValue(metadata)) return undefined;\n const raw = metadata.modelGeneration;\n if (!isRecordValue(raw)) return undefined;\n const generationId = readNonEmptyString(raw.generationId);\n const attempt = readPositiveInteger(raw.attempt);\n if (!generationId || attempt === undefined) return undefined;\n return {\n generationId,\n attempt,\n ...(raw.superseded === true ? { superseded: true } : {}),\n ...(raw.committed === true ? { committed: true } : {}),\n };\n}\n\n/** 被新尝试替代的 part:界面和模型历史都不应把它当作有效内容。 */\nexport function isSupersededModelPart(part: SessionMessagePartRecord): boolean {\n return readModelGenerationMetadata(part.metadata)?.superseded === true;\n}\n\n/**\n * 可作为模型历史的已确认 part。旧格式(无 modelGeneration)保持原语义返回\n * true;新格式必须 committed=true 且未被替代。\n */\nexport function isCommittedModelPart(part: SessionMessagePartRecord): boolean {\n const generation = readModelGenerationMetadata(part.metadata);\n if (!generation) return true;\n return generation.committed === true && generation.superseded !== true;\n}\n\nexport function readSessionModelUsage(\n metadata: Record<string, unknown> | undefined,\n): SessionModelUsageSummary | undefined {\n if (!isRecordValue(metadata)) return undefined;\n const raw = metadata.modelUsage;\n if (!isRecordValue(raw)) return undefined;\n return {\n incomplete: raw.incomplete === true,\n unknownAttempts: readNonNegativeInteger(raw.unknownAttempts) ?? 0,\n partialAttempts: readNonNegativeInteger(raw.partialAttempts) ?? 0,\n };\n}\n\nexport function readSessionModelAttemptUsage(\n value: unknown,\n): SessionModelAttemptUsage | undefined {\n if (!isRecordValue(value)) return undefined;\n const generationId = readNonEmptyString(value.generationId);\n const attempt = readPositiveInteger(value.attempt);\n const status = value.status;\n const usageStatus = value.usageStatus;\n if (\n !generationId ||\n attempt === undefined ||\n (status !== \"completed\" && status !== \"failed\" && status !== \"interrupted\") ||\n (usageStatus !== \"complete\" && usageStatus !== \"partial\" && usageStatus !== \"unknown\")\n ) {\n return undefined;\n }\n let usage: SessionModelAttemptUsageSnapshot | undefined;\n if (isRecordValue(value.usage)) {\n const inputTokens = readNonNegativeInteger(value.usage.inputTokens);\n const outputTokens = readNonNegativeInteger(value.usage.outputTokens);\n if (inputTokens === undefined || outputTokens === undefined) return undefined;\n usage = {\n inputTokens,\n outputTokens,\n ...(readNonNegativeInteger(value.usage.cacheCreationTokens) !== undefined\n ? { cacheCreationTokens: readNonNegativeInteger(value.usage.cacheCreationTokens) } : {}),\n ...(readNonNegativeInteger(value.usage.cacheReadTokens) !== undefined\n ? { cacheReadTokens: readNonNegativeInteger(value.usage.cacheReadTokens) } : {}),\n ...(value.usage.usageIncomplete === true ? { usageIncomplete: true } : {}),\n };\n } else if (usageStatus === \"complete\") {\n // A complete settlement without a usage snapshot is invalid.\n return undefined;\n }\n return { generationId, attempt, status, usageStatus, ...(usage ? { usage } : {}) };\n}\n",
7
7
  "/**\n * `closing` 表示 Session 正在停止当前工作并等待资源释放,此时不再接收新工作。\n * 等待结束后,Session 会进入不可逆的 archived 状态。\n */\nexport type SessionStatus =\n \"idle\" | \"running\" | \"closing\" | \"archived\" | \"error\";\nexport type SessionStorage = \"sqlite\" | \"memory\";\nexport type InputDelivery = \"queue\" | \"steer\";\nexport type RunStatus =\n \"pending\" | \"running\" | \"completed\" | \"failed\" | \"interrupted\";\nexport type RunAttemptStatus = \"pending\" | \"running\" | \"completed\" | \"failed\" | \"cancelled\";\nexport type SessionTaskStatus =\n \"pending\" | \"running\" | \"completed\" | \"failed\" | \"stopped\" | \"interrupted\";\nexport type PermissionStatus = \"pending\" | \"approved\" | \"denied\" | \"expired\";\nexport type SessionMessageRole = \"system\" | \"user\" | \"assistant\";\nexport type SessionMessagePartType =\n | \"text\"\n | \"attachment\"\n | \"transformation\"\n | \"reasoning\"\n | \"tool\"\n | \"tool_result\"\n | \"error\"\n | \"log\";\nexport type SessionMessagePartStatus =\n \"pending\" | \"running\" | \"completed\" | \"failed\" | \"interrupted\";\nexport type ProjectionSettlementAction = \"retry-terminal-projection\" | \"compensate-child\";\nexport type ProjectionSettlementStatus = \"pending\" | \"retrying\" | \"resolved\" | \"abandoned\";\n\n/** Default durable session-event schema version for types without an override. */\nexport const SESSION_EVENT_SCHEMA_VERSION = 1;\n\n/**\n * Per-event payload schema versions written by the durable event registry.\n * Unlisted types use {@link SESSION_EVENT_SCHEMA_VERSION}.\n */\nexport const SESSION_EVENT_SCHEMA_VERSIONS: Readonly<Record<string, number>> = {\n \"session.input.admitted\": 2,\n};\n\nexport function sessionEventSchemaVersion(type: string): number {\n return SESSION_EVENT_SCHEMA_VERSIONS[type] ?? SESSION_EVENT_SCHEMA_VERSION;\n}\n\nexport interface SessionRecord {\n id: string;\n storage?: SessionStorage;\n parentId?: string;\n projectId?: string;\n cwd: string;\n cwdRelative?: string;\n title: string;\n model: string;\n agent?: string;\n status: SessionStatus;\n metadata: Record<string, unknown>;\n createdAt: number;\n updatedAt: number;\n archivedAt?: number;\n}\n\nexport interface SearchSessionsOptions {\n query: string;\n limit?: number;\n}\n\nexport interface SessionSearchResult {\n session: SessionRecord;\n messageId: string;\n snippet: string;\n}\n\nexport function getSessionStorage(session: Pick<SessionRecord, \"storage\"> | undefined): SessionStorage {\n return session?.storage ?? \"sqlite\";\n}\n\nexport interface ProjectRecord {\n id: string;\n name: string;\n path: string;\n pinnedAt?: number;\n defaultShell?: string;\n lastOpenedAt: number;\n archivedAt?: number;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface ProjectLocationRecord {\n id: string;\n projectId: string;\n path: string;\n normalizedPath: string;\n status: \"active\" | \"historical\";\n boundAt: number;\n lastVerifiedAt?: number;\n}\n\nexport interface SessionInputRecord {\n id: string;\n sessionId: string;\n seq: number;\n delivery: InputDelivery;\n items: SessionUserInputItem[];\n content: string;\n attachments: SessionInputAttachmentRecord[];\n promotedMessageId?: string;\n metadata: Record<string, unknown>;\n createdAt: number;\n}\n\nexport interface SessionMessageRecord {\n id: string;\n sessionId: string;\n seq: number;\n role: SessionMessageRole;\n runId?: string;\n inputId?: string;\n metadata: Record<string, unknown>;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface SessionMessagePartRecord {\n id: string;\n sessionId: string;\n messageId: string;\n seq: number;\n type: SessionMessagePartType;\n status: SessionMessagePartStatus;\n text?: string;\n toolUseId?: string;\n toolName?: string;\n input?: Record<string, unknown>;\n output?: unknown;\n /** Opt-in wire view only; preview bodies must be read from the scoped detail API. */\n bodyView?: {\n input: \"full\" | \"preview\" | \"unavailable\";\n output: \"full\" | \"preview\" | \"unavailable\";\n outputReferences?: string[];\n };\n isError?: boolean;\n assetId?: string;\n intent?: AttachmentIntent;\n displayName?: string;\n mediaType?: string;\n sizeBytes?: number;\n kind?: \"direct\" | \"document_extract\" | \"tool_mount\";\n representationId?: string;\n processor?: string;\n transformationError?: string;\n metadata: Record<string, unknown>;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface SessionEventRecord {\n id: string;\n seq: number;\n type: string;\n schemaVersion: number;\n sessionId?: string;\n payload: Record<string, unknown>;\n createdAt: number;\n}\n\nexport interface SessionAttachmentMessagePartRecord\n extends SessionMessagePartRecord {\n type: \"attachment\";\n assetId: string;\n intent: AttachmentIntent;\n displayName: string;\n mediaType: string;\n sizeBytes: number;\n}\n\nexport interface SessionTransformationMessagePartRecord\n extends SessionMessagePartRecord {\n type: \"transformation\";\n assetId: string;\n kind: \"direct\" | \"document_extract\" | \"tool_mount\";\n representationId?: string;\n processor?: string;\n transformationError?: string;\n}\n\nexport interface ProjectionSettlementRecord {\n id: string;\n projector: string;\n rootSessionId: string;\n eventSequence: number;\n action: ProjectionSettlementAction;\n payload: Record<string, unknown>;\n status: ProjectionSettlementStatus;\n attemptCount: number;\n lastError?: string;\n nextRetryAt?: number;\n createdAt: number;\n updatedAt: number;\n resolvedAt?: number;\n}\n\nexport interface SessionRunRecord {\n id: string;\n sessionId: string;\n inputId?: string;\n status: RunStatus;\n startedAt?: number;\n finishedAt?: number;\n error?: string;\n metadata: Record<string, unknown>;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface SessionRunAttemptRecord {\n id: string;\n runId: string;\n sequence: number;\n status: RunAttemptStatus;\n provider?: string;\n model?: string;\n retryReason?: string;\n errorKind?: string;\n error?: string;\n inputTokens?: number;\n outputTokens?: number;\n startedAt?: number;\n finishedAt?: number;\n createdAt: number;\n updatedAt: number;\n}\n\n// ---------------------------------------------------------------------------\n// Model network retry projection (see docs/model-network-retry-design.md)\n// ---------------------------------------------------------------------------\n\nexport interface SessionExecutionRecord {\n id: string;\n sessionId: string;\n /** Producer namespace plus requestId uniquely identify one logical admission. */\n requestNamespace?: string;\n requestId?: string;\n childSessionId?: string;\n runId?: string;\n type: string;\n status: SessionTaskStatus;\n description: string;\n cwd: string;\n output?: string;\n error?: string;\n metadata: Record<string, unknown>;\n createdAt: number;\n startedAt?: number;\n finishedAt?: number;\n updatedAt: number;\n}\n\nexport interface PermissionRequestRecord {\n id: string;\n sessionId: string;\n runId?: string;\n toolName: string;\n payload: Record<string, unknown>;\n status: PermissionStatus;\n decision?: string;\n decidedByClientId?: string;\n createdAt: number;\n updatedAt: number;\n}\n\n/** Atomic, server-owned state used when a client attaches to one session. */\nexport interface SessionStateSnapshot {\n cursor: number;\n session: SessionRecord;\n inputs: SessionInputRecord[];\n messages: SessionMessageRecord[];\n parts: SessionMessagePartRecord[];\n runs: SessionRunRecord[];\n attempts: SessionRunAttemptRecord[];\n tasks?: SessionExecutionRecord[];\n permissions: PermissionRequestRecord[];\n}\n\nimport type {\n AttachmentIntent,\n SessionInputAttachmentRecord,\n} from \"./attachment.js\";\nimport type { SessionUserInputItem } from \"./session-input-items.js\";\n\nexport * from \"./session-model.js\";\nexport * from \"./scheduled.js\";\nexport * from \"./session-requests.js\";\n",
8
8
  "import type {\n PermissionRequestRecord,\n SessionEventRecord,\n SessionExecutionRecord,\n SessionInputRecord,\n SessionMessagePartRecord,\n SessionMessageRecord,\n SessionRunAttemptRecord,\n SessionRunRecord,\n SessionStateSnapshot,\n SessionRecord,\n} from \"./session.js\";\nimport type { AttachmentIntent } from \"./attachment.js\";\nimport type { JobReadResult, JobSnapshot, JobWaitResult } from \"./job.js\";\nimport type {\n TerminalEvent,\n TerminalReadResult,\n TerminalSessionInfo,\n TerminalWaitResult,\n} from \"./terminal.js\";\nimport type { ProtocolError } from \"./requests.js\";\n\nexport class ProtocolDataError extends Error {\n readonly code = \"invalid_protocol_data\";\n readonly details?: Record<string, unknown>;\n\n constructor(message: string, path?: string) {\n super(message);\n this.name = \"ProtocolDataError\";\n this.details = path ? { path } : undefined;\n }\n\n toProtocolError(): ProtocolError {\n return {\n code: this.code,\n message: this.message,\n ...(this.details ? { details: this.details } : {}),\n };\n }\n}\n\ntype DataRecord = Record<string, unknown>;\ntype Validator<T> = (value: unknown, path: string) => T;\n\nfunction parseJson(text: string): unknown {\n try {\n return JSON.parse(text) as unknown;\n } catch {\n throw new ProtocolDataError(\"Protocol data must be valid JSON\");\n }\n}\n\nfunction object(value: unknown, path: string): DataRecord {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new ProtocolDataError(`${path} must be an object`, path);\n }\n return value as DataRecord;\n}\n\nfunction stringField(value: DataRecord, field: string, path: string): string {\n const fieldPath = `${path}.${field}`;\n if (typeof value[field] !== \"string\") {\n throw new ProtocolDataError(`${fieldPath} must be a string`, fieldPath);\n }\n return value[field] as string;\n}\n\nfunction optionalString(value: DataRecord, field: string, path: string): void {\n const fieldValue = value[field];\n if (fieldValue !== undefined && typeof fieldValue !== \"string\") {\n const fieldPath = `${path}.${field}`;\n throw new ProtocolDataError(`${fieldPath} must be a string`, fieldPath);\n }\n}\n\nfunction numberField(value: DataRecord, field: string, path: string): number {\n const fieldPath = `${path}.${field}`;\n const fieldValue = value[field];\n if (typeof fieldValue !== \"number\" || !Number.isFinite(fieldValue)) {\n throw new ProtocolDataError(`${fieldPath} must be a finite number`, fieldPath);\n }\n return fieldValue;\n}\n\nfunction optionalNumber(\n value: DataRecord,\n field: string,\n path: string,\n nullable = false,\n): void {\n const fieldValue = value[field];\n if (fieldValue === undefined || (nullable && fieldValue === null)) return;\n if (typeof fieldValue !== \"number\" || !Number.isFinite(fieldValue)) {\n const fieldPath = `${path}.${field}`;\n throw new ProtocolDataError(`${fieldPath} must be a finite number`, fieldPath);\n }\n}\n\nfunction booleanField(value: DataRecord, field: string, path: string): boolean {\n const fieldPath = `${path}.${field}`;\n if (typeof value[field] !== \"boolean\") {\n throw new ProtocolDataError(`${fieldPath} must be a boolean`, fieldPath);\n }\n return value[field] as boolean;\n}\n\nfunction recordField(value: DataRecord, field: string, path: string): DataRecord {\n return object(value[field], `${path}.${field}`);\n}\n\nfunction optionalRecord(value: DataRecord, field: string, path: string): void {\n if (value[field] !== undefined) object(value[field], `${path}.${field}`);\n}\n\nfunction enumField<const T extends readonly string[]>(\n value: DataRecord,\n field: string,\n path: string,\n allowed: T,\n): T[number] {\n const fieldPath = `${path}.${field}`;\n const fieldValue = value[field];\n if (typeof fieldValue !== \"string\" || !allowed.includes(fieldValue)) {\n throw new ProtocolDataError(\n `${fieldPath} must be one of: ${allowed.join(\", \")}`,\n fieldPath,\n );\n }\n return fieldValue as T[number];\n}\n\nfunction arrayField<T>(\n value: DataRecord,\n field: string,\n path: string,\n validate: Validator<T>,\n): T[] {\n const fieldPath = `${path}.${field}`;\n const items = value[field];\n if (!Array.isArray(items)) {\n throw new ProtocolDataError(`${fieldPath} must be an array`, fieldPath);\n }\n return items.map((item, index) => validate(item, `${fieldPath}[${index}]`));\n}\n\nfunction validateSession(value: unknown, path: string) {\n const item = object(value, path);\n stringField(item, \"id\", path);\n stringField(item, \"cwd\", path);\n stringField(item, \"title\", path);\n stringField(item, \"model\", path);\n enumField(item, \"status\", path, [\"idle\", \"running\", \"closing\", \"archived\", \"error\"] as const);\n if (item.storage !== undefined) enumField(item, \"storage\", path, [\"sqlite\", \"memory\"] as const);\n recordField(item, \"metadata\", path);\n numberField(item, \"createdAt\", path);\n numberField(item, \"updatedAt\", path);\n for (const field of [\"parentId\", \"projectId\", \"cwdRelative\", \"agent\"] as const) {\n optionalString(item, field, path);\n }\n optionalNumber(item, \"archivedAt\", path);\n return item;\n}\n\nfunction validateInput(value: unknown, path: string): SessionInputRecord {\n const item = object(value, path);\n stringField(item, \"id\", path);\n stringField(item, \"sessionId\", path);\n numberField(item, \"seq\", path);\n enumField(item, \"delivery\", path, [\"queue\", \"steer\"] as const);\n stringField(item, \"content\", path);\n const attachments = arrayField(item, \"attachments\", path, validateInputAttachment);\n const assetIds = new Set<string>();\n for (const [index, attachment] of attachments.entries()) {\n const attachmentPath = `${path}.attachments[${index}]`;\n if (attachment.sessionId !== item.sessionId) {\n throw new ProtocolDataError(\n `${attachmentPath}.sessionId must match ${path}.sessionId`,\n `${attachmentPath}.sessionId`,\n );\n }\n if (attachment.inputId !== item.id) {\n throw new ProtocolDataError(\n `${attachmentPath}.inputId must match ${path}.id`,\n `${attachmentPath}.inputId`,\n );\n }\n if (attachment.seq !== index) {\n throw new ProtocolDataError(\n `${attachmentPath}.seq must equal its array index`,\n `${attachmentPath}.seq`,\n );\n }\n if (assetIds.has(attachment.assetId)) {\n throw new ProtocolDataError(\n `${attachmentPath}.assetId must be unique within the input`,\n `${attachmentPath}.assetId`,\n );\n }\n assetIds.add(attachment.assetId);\n }\n optionalString(item, \"promotedMessageId\", path);\n recordField(item, \"metadata\", path);\n numberField(item, \"createdAt\", path);\n return item as unknown as SessionInputRecord;\n}\n\nfunction validateInputAttachment(value: unknown, path: string) {\n const item = object(value, path);\n for (const field of [\"id\", \"sessionId\", \"inputId\", \"assetId\", \"displayName\", \"mediaType\"] as const) {\n stringField(item, field, path);\n }\n numberField(item, \"seq\", path);\n enumField(item, \"intent\", path, [\n \"auto\",\n \"vision\",\n \"ocr\",\n \"document\",\n \"tool_resource\",\n \"workspace_reference\",\n ] as const satisfies readonly AttachmentIntent[]);\n numberField(item, \"sizeBytes\", path);\n recordField(item, \"metadata\", path);\n numberField(item, \"createdAt\", path);\n return item as unknown as SessionInputRecord[\"attachments\"][number];\n}\n\nfunction validateMessage(value: unknown, path: string): SessionMessageRecord {\n const item = object(value, path);\n stringField(item, \"id\", path);\n stringField(item, \"sessionId\", path);\n numberField(item, \"seq\", path);\n enumField(item, \"role\", path, [\"system\", \"user\", \"assistant\"] as const);\n optionalString(item, \"runId\", path);\n optionalString(item, \"inputId\", path);\n recordField(item, \"metadata\", path);\n numberField(item, \"createdAt\", path);\n numberField(item, \"updatedAt\", path);\n return item as unknown as SessionMessageRecord;\n}\n\nfunction validatePart(value: unknown, path: string): SessionMessagePartRecord {\n const item = object(value, path);\n stringField(item, \"id\", path);\n stringField(item, \"sessionId\", path);\n stringField(item, \"messageId\", path);\n numberField(item, \"seq\", path);\n const type = enumField(item, \"type\", path, [\n \"text\",\n \"attachment\",\n \"transformation\",\n \"reasoning\",\n \"tool\",\n \"tool_result\",\n \"error\",\n \"log\",\n ] as const);\n enumField(item, \"status\", path, [\"pending\", \"running\", \"completed\", \"failed\", \"interrupted\"] as const);\n for (const field of [\"text\", \"toolUseId\", \"toolName\"] as const) optionalString(item, field, path);\n optionalRecord(item, \"input\", path);\n if (item.bodyView !== undefined) {\n const view = object(item.bodyView, `${path}.bodyView`);\n for (const field of [\"input\", \"output\"] as const) enumField(view, field, `${path}.bodyView`, [\"full\", \"preview\", \"unavailable\"] as const);\n if (view.outputReferences !== undefined && (!Array.isArray(view.outputReferences) || !view.outputReferences.every(ref => typeof ref === \"string\")))\n throw new ProtocolDataError(`${path}.bodyView.outputReferences must be strings`, `${path}.bodyView.outputReferences`);\n }\n if (item.isError !== undefined && typeof item.isError !== \"boolean\") {\n throw new ProtocolDataError(`${path}.isError must be a boolean`, `${path}.isError`);\n }\n if (type === \"attachment\") {\n for (const field of [\"assetId\", \"displayName\", \"mediaType\"] as const) {\n stringField(item, field, path);\n }\n enumField(item, \"intent\", path, [\n \"auto\",\n \"vision\",\n \"ocr\",\n \"document\",\n \"tool_resource\",\n \"workspace_reference\",\n ] as const);\n numberField(item, \"sizeBytes\", path);\n }\n if (type === \"transformation\") {\n stringField(item, \"assetId\", path);\n enumField(item, \"kind\", path, [\"direct\", \"document_extract\", \"tool_mount\"] as const);\n for (const field of [\"representationId\", \"processor\", \"transformationError\"] as const) {\n optionalString(item, field, path);\n }\n }\n recordField(item, \"metadata\", path);\n numberField(item, \"createdAt\", path);\n numberField(item, \"updatedAt\", path);\n return item as unknown as SessionMessagePartRecord;\n}\n\nfunction validateRun(value: unknown, path: string): SessionRunRecord {\n const item = object(value, path);\n stringField(item, \"id\", path);\n stringField(item, \"sessionId\", path);\n optionalString(item, \"inputId\", path);\n enumField(item, \"status\", path, [\"pending\", \"running\", \"completed\", \"failed\", \"interrupted\"] as const);\n optionalNumber(item, \"startedAt\", path);\n optionalNumber(item, \"finishedAt\", path);\n optionalString(item, \"error\", path);\n recordField(item, \"metadata\", path);\n numberField(item, \"createdAt\", path);\n numberField(item, \"updatedAt\", path);\n return item as unknown as SessionRunRecord;\n}\n\nfunction validateAttempt(value: unknown, path: string): SessionRunAttemptRecord {\n const item = object(value, path);\n stringField(item, \"id\", path);\n stringField(item, \"runId\", path);\n numberField(item, \"sequence\", path);\n enumField(item, \"status\", path, [\"pending\", \"running\", \"completed\", \"failed\", \"cancelled\"] as const);\n for (const field of [\"provider\", \"model\", \"retryReason\", \"errorKind\", \"error\"] as const) {\n optionalString(item, field, path);\n }\n for (const field of [\"inputTokens\", \"outputTokens\", \"startedAt\", \"finishedAt\"] as const) {\n optionalNumber(item, field, path);\n }\n numberField(item, \"createdAt\", path);\n numberField(item, \"updatedAt\", path);\n return item as unknown as SessionRunAttemptRecord;\n}\n\nfunction validateTask(value: unknown, path: string): SessionExecutionRecord {\n const item = object(value, path);\n for (const field of [\"id\", \"sessionId\", \"type\", \"description\", \"cwd\"] as const) {\n stringField(item, field, path);\n }\n for (const field of [\"childSessionId\", \"runId\", \"requestNamespace\", \"requestId\", \"output\", \"error\"] as const) {\n optionalString(item, field, path);\n }\n enumField(item, \"status\", path, [\"pending\", \"running\", \"completed\", \"failed\", \"stopped\", \"interrupted\"] as const);\n recordField(item, \"metadata\", path);\n numberField(item, \"createdAt\", path);\n optionalNumber(item, \"startedAt\", path);\n optionalNumber(item, \"finishedAt\", path);\n numberField(item, \"updatedAt\", path);\n return item as unknown as SessionExecutionRecord;\n}\n\nfunction validatePermission(value: unknown, path: string): PermissionRequestRecord {\n const item = object(value, path);\n for (const field of [\"id\", \"sessionId\", \"toolName\"] as const) stringField(item, field, path);\n optionalString(item, \"runId\", path);\n recordField(item, \"payload\", path);\n enumField(item, \"status\", path, [\"pending\", \"approved\", \"denied\", \"expired\"] as const);\n optionalString(item, \"decision\", path);\n optionalString(item, \"decidedByClientId\", path);\n numberField(item, \"createdAt\", path);\n numberField(item, \"updatedAt\", path);\n return item as unknown as PermissionRequestRecord;\n}\n\nexport function decodeSessionEventRecord(value: unknown): SessionEventRecord {\n const event = object(value, \"event\");\n stringField(event, \"id\", \"event\");\n numberField(event, \"seq\", \"event\");\n stringField(event, \"type\", \"event\");\n numberField(event, \"schemaVersion\", \"event\");\n optionalString(event, \"sessionId\", \"event\");\n recordField(event, \"payload\", \"event\");\n numberField(event, \"createdAt\", \"event\");\n return event as unknown as SessionEventRecord;\n}\n\nexport function deserializeSessionEventRecord(text: string): SessionEventRecord {\n return decodeSessionEventRecord(parseJson(text));\n}\n\nexport function serializeSessionEventRecord(event: SessionEventRecord): string {\n decodeSessionEventRecord(event);\n return JSON.stringify(event);\n}\n\nexport function decodeSessionStateSnapshot(value: unknown): SessionStateSnapshot {\n const snapshot = object(value, \"snapshot\");\n numberField(snapshot, \"cursor\", \"snapshot\");\n validateSession(snapshot.session, \"snapshot.session\");\n arrayField(snapshot, \"inputs\", \"snapshot\", validateInput);\n arrayField(snapshot, \"messages\", \"snapshot\", validateMessage);\n arrayField(snapshot, \"parts\", \"snapshot\", validatePart);\n arrayField(snapshot, \"runs\", \"snapshot\", validateRun);\n arrayField(snapshot, \"attempts\", \"snapshot\", validateAttempt);\n if (snapshot.tasks !== undefined) arrayField(snapshot, \"tasks\", \"snapshot\", validateTask);\n arrayField(snapshot, \"permissions\", \"snapshot\", validatePermission);\n return snapshot as unknown as SessionStateSnapshot;\n}\n\n/** Validate the persisted acknowledgement for the narrow archived-worktree cleanup operation. */\nexport function decodeClearedSessionWorktreeBinding(value: unknown, expectedSessionId: string): SessionRecord {\n const session = validateSession(value, \"session\");\n if (session.id !== expectedSessionId || session.status !== \"archived\") throw new ProtocolDataError(\"Cleared worktree acknowledgement must refer to the expected archived session\", \"session\");\n const metadata = session.metadata as Record<string, unknown>;\n const desktop = metadata.desktop;\n if (desktop !== undefined && desktop !== null) {\n const fields = object(desktop, \"session.metadata.desktop\");\n if (fields.worktree !== undefined && fields.worktree !== null) throw new ProtocolDataError(\"The worktree binding was not cleared\", \"session.metadata.desktop.worktree\");\n }\n return session as unknown as SessionRecord;\n}\n\nexport function deserializeSessionStateSnapshot(text: string): SessionStateSnapshot {\n return decodeSessionStateSnapshot(parseJson(text));\n}\n\nexport function serializeSessionStateSnapshot(snapshot: SessionStateSnapshot): string {\n decodeSessionStateSnapshot(snapshot);\n return JSON.stringify(snapshot);\n}\n\nexport function decodeJobSnapshot(value: unknown): JobSnapshot {\n const job = object(value, \"job\");\n for (const field of [\"id\", \"label\", \"ownerSession\", \"cwd\"] as const) stringField(job, field, \"job\");\n enumField(job, \"kind\", \"job\", [\"terminal\", \"shell\", \"agent\", \"dream\", \"workflow\"] as const);\n enumField(job, \"status\", \"job\", [\"running\", \"stopping\", \"completed\", \"killed\", \"failed\"] as const);\n const capabilities = recordField(job, \"capabilities\", \"job\");\n for (const field of [\"read\", \"wait\", \"send\", \"cancel\"] as const) {\n booleanField(capabilities, field, \"job.capabilities\");\n }\n numberField(job, \"startedAt\", \"job\");\n numberField(job, \"updatedAt\", \"job\");\n optionalNumber(job, \"finishedAt\", \"job\");\n const exitCode = job.exitCode;\n if (exitCode !== undefined && exitCode !== null &&\n (typeof exitCode !== \"number\" || !Number.isInteger(exitCode))) {\n throw new ProtocolDataError(\"job.exitCode must be an integer or null\", \"job.exitCode\");\n }\n optionalString(job, \"detail\", \"job\");\n optionalRecord(job, \"metadata\", \"job\");\n return job as unknown as JobSnapshot;\n}\n\nexport function decodeJobReadResult(value: unknown): JobReadResult {\n const result = object(value, \"jobReadResult\");\n stringField(result, \"text\", \"jobReadResult\");\n numberField(result, \"cursor\", \"jobReadResult\");\n booleanField(result, \"truncated\", \"jobReadResult\");\n decodeJobSnapshot(result.snapshot);\n optionalRecord(result, \"details\", \"jobReadResult\");\n return result as unknown as JobReadResult;\n}\n\nexport function decodeJobWaitResult(value: unknown): JobWaitResult {\n const result = object(value, \"jobWaitResult\");\n decodeJobReadResult(result);\n booleanField(result, \"timedOut\", \"jobWaitResult\");\n return result as unknown as JobWaitResult;\n}\n\nexport function decodeTerminalSessionInfo(value: unknown): TerminalSessionInfo {\n const terminal = object(value, \"terminal\");\n for (const field of [\"id\", \"name\", \"cwd\", \"shell\", \"createdAt\"] as const) {\n stringField(terminal, field, \"terminal\");\n }\n const scope = recordField(terminal, \"scope\", \"terminal\");\n const scopeKind = enumField(scope, \"kind\", \"terminal.scope\", [\"project\", \"session\"] as const);\n if (scopeKind === \"project\") {\n const projectId = stringField(scope, \"projectId\", \"terminal.scope\");\n optionalString(terminal, \"projectId\", \"terminal\");\n if (terminal.projectId !== undefined && terminal.projectId !== projectId) {\n throw new ProtocolDataError(\n \"terminal.projectId must match terminal.scope.projectId\",\n \"terminal.projectId\",\n );\n }\n } else {\n const sessionId = stringField(scope, \"sessionId\", \"terminal.scope\");\n optionalString(terminal, \"sessionId\", \"terminal\");\n if (terminal.sessionId !== undefined && terminal.sessionId !== sessionId) {\n throw new ProtocolDataError(\n \"terminal.sessionId must match terminal.scope.sessionId\",\n \"terminal.sessionId\",\n );\n }\n }\n optionalString(terminal, \"projectId\", \"terminal\");\n optionalString(terminal, \"sessionId\", \"terminal\");\n enumField(terminal, \"runtime\", \"terminal\", [\"local\", \"environment\"] as const);\n enumField(terminal, \"source\", \"terminal\", [\"user\", \"agent\"] as const);\n enumField(terminal, \"status\", \"terminal\", [\"running\", \"stopping\", \"completed\", \"killed\", \"failed\"] as const);\n numberField(terminal, \"cols\", \"terminal\");\n numberField(terminal, \"rows\", \"terminal\");\n optionalString(terminal, \"exitedAt\", \"terminal\");\n optionalNumber(terminal, \"exitCode\", \"terminal\", true);\n return terminal as unknown as TerminalSessionInfo;\n}\n\nexport function decodeTerminalEvent(value: unknown): TerminalEvent {\n const event = object(value, \"terminalEvent\");\n const type = enumField(event, \"type\", \"terminalEvent\", [\"data\", \"status\", \"exit\", \"title\", \"error\"] as const);\n stringField(event, \"terminalId\", \"terminalEvent\");\n if (type === \"data\") {\n stringField(event, \"data\", \"terminalEvent\");\n numberField(event, \"sequence\", \"terminalEvent\");\n } else if (type === \"status\") {\n enumField(event, \"status\", \"terminalEvent\", [\"stopping\", \"killed\"] as const);\n } else if (type === \"exit\") {\n optionalNumber(event, \"exitCode\", \"terminalEvent\", true);\n if (!(\"exitCode\" in event)) {\n throw new ProtocolDataError(\"terminalEvent.exitCode is required\", \"terminalEvent.exitCode\");\n }\n } else if (type === \"title\") {\n stringField(event, \"title\", \"terminalEvent\");\n } else {\n stringField(event, \"message\", \"terminalEvent\");\n }\n return event as unknown as TerminalEvent;\n}\n\nexport function decodeTerminalReadResult(value: unknown): TerminalReadResult {\n const result = object(value, \"terminalReadResult\");\n stringField(result, \"terminalId\", \"terminalReadResult\");\n stringField(result, \"data\", \"terminalReadResult\");\n numberField(result, \"sequence\", \"terminalReadResult\");\n booleanField(result, \"truncated\", \"terminalReadResult\");\n return result as unknown as TerminalReadResult;\n}\n\nexport function decodeTerminalWaitResult(value: unknown): TerminalWaitResult {\n const result = object(value, \"terminalWaitResult\");\n decodeTerminalReadResult(result);\n decodeTerminalSessionInfo(result.terminal);\n booleanField(result, \"timedOut\", \"terminalWaitResult\");\n return result as unknown as TerminalWaitResult;\n}\n",
9
9
  "import type { SessionRecord } from \"./session.js\";\nimport { ProtocolDataError } from \"./serialization.js\";\n\nexport type SessionApiFormat = \"anthropic\" | \"openai\";\n\nexport type SessionRuntimeConfig = {\n model: string;\n provider?: string;\n baseUrl?: string;\n apiFormat?: SessionApiFormat;\n permissionMode?: \"default\" | \"plan\" | \"full_auto\";\n maxTurns?: number;\n effort?: string;\n sessionMode?: \"direct\" | \"coordinator\";\n systemPrompt?: string;\n allowedTools?: string[];\n disallowedTools?: string[];\n pluginsEnabled?: boolean;\n};\n\nexport type SessionRuntimeConfigPatch = Partial<SessionRuntimeConfig>;\n\nconst RUNTIME_CONFIG_KEYS: Array<keyof SessionRuntimeConfig> = [\n \"model\",\n \"provider\",\n \"baseUrl\",\n \"apiFormat\",\n \"permissionMode\",\n \"maxTurns\",\n \"effort\",\n \"sessionMode\",\n \"systemPrompt\",\n \"allowedTools\",\n \"disallowedTools\",\n \"pluginsEnabled\",\n];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction stringArrayValue(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const items = value.filter((item): item is string => typeof item === \"string\" && item.trim().length > 0);\n return items.length > 0 ? items : undefined;\n}\n\nfunction permissionModeValue(value: unknown): SessionRuntimeConfig[\"permissionMode\"] | undefined {\n return value === \"default\" || value === \"plan\" || value === \"full_auto\" ? value : undefined;\n}\n\nfunction effortValue(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : \"\";\n}\n\nfunction sessionModeValue(value: unknown): SessionRuntimeConfig[\"sessionMode\"] | undefined {\n return value === \"coordinator\" ? \"coordinator\" : value === \"direct\" ? \"direct\" : undefined;\n}\n\nfunction apiFormatValue(value: unknown): SessionApiFormat | undefined {\n return value === \"anthropic\" || value === \"openai\" ? value : undefined;\n}\n\nfunction booleanValue(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nexport function readRuntimeMetadata(metadata: Record<string, unknown> | undefined): Record<string, unknown> {\n const runtime = metadata?.runtime;\n if (runtime === undefined) return {};\n if (!isRecord(runtime)) throw new ProtocolDataError(\"metadata.runtime must be an object\", \"metadata.runtime\");\n for (const [field, value] of Object.entries(runtime)) {\n let valid = false;\n switch (field) {\n case \"model\": case \"provider\": case \"baseUrl\": case \"systemPrompt\":\n valid = typeof value === \"string\"; break;\n case \"apiFormat\": valid = apiFormatValue(value) !== undefined; break;\n case \"permissionMode\": valid = permissionModeValue(value) !== undefined; break;\n case \"effort\": valid = effortValue(value) !== undefined; break;\n case \"sessionMode\": valid = sessionModeValue(value) !== undefined; break;\n case \"maxTurns\": valid = numberValue(value) !== undefined; break;\n case \"pluginsEnabled\": valid = booleanValue(value) !== undefined; break;\n case \"allowedTools\": case \"disallowedTools\":\n valid = Array.isArray(value) && value.every((item) => typeof item === \"string\" && item.trim().length > 0); break;\n }\n if (!valid) {\n throw new ProtocolDataError(`Invalid runtime config field metadata.runtime.${field}`, `metadata.runtime.${field}`);\n }\n }\n return runtime;\n}\n\nexport function readSessionRuntimeRevision(\n metadata: Record<string, unknown> | undefined,\n): number {\n const revision = metadata?.runtimeRevision;\n if (revision === undefined) return 0;\n if (\n typeof revision !== \"number\"\n || !Number.isSafeInteger(revision)\n || revision < 0\n ) {\n throw new ProtocolDataError(\n \"metadata.runtimeRevision must be a non-negative safe integer\",\n \"metadata.runtimeRevision\",\n );\n }\n return revision;\n}\n\nexport function readSessionRuntimeConfig(\n session: SessionRecord,\n defaults?: Partial<SessionRuntimeConfig>,\n): SessionRuntimeConfig {\n const runtime = readRuntimeMetadata(session.metadata);\n const model = stringValue(runtime.model);\n if (!model) {\n throw new Error(`Session runtime config is missing metadata.runtime.model: ${session.id}`);\n }\n return {\n model,\n ...(stringValue(runtime.provider) ?? defaults?.provider\n ? { provider: stringValue(runtime.provider) ?? defaults?.provider }\n : {}),\n ...(stringValue(runtime.baseUrl) ?? defaults?.baseUrl\n ? { baseUrl: stringValue(runtime.baseUrl) ?? defaults?.baseUrl }\n : {}),\n ...(apiFormatValue(runtime.apiFormat) ?? defaults?.apiFormat\n ? { apiFormat: apiFormatValue(runtime.apiFormat) ?? defaults?.apiFormat }\n : {}),\n ...(permissionModeValue(runtime.permissionMode) ?? defaults?.permissionMode\n ? { permissionMode: permissionModeValue(runtime.permissionMode) ?? defaults?.permissionMode }\n : {}),\n ...(numberValue(runtime.maxTurns) ?? defaults?.maxTurns\n ? { maxTurns: numberValue(runtime.maxTurns) ?? defaults?.maxTurns }\n : {}),\n ...(effortValue(runtime.effort) ?? defaults?.effort\n ? { effort: effortValue(runtime.effort) ?? defaults?.effort }\n : {}),\n ...(sessionModeValue(runtime.sessionMode) ?? defaults?.sessionMode\n ? { sessionMode: sessionModeValue(runtime.sessionMode) ?? defaults?.sessionMode }\n : {}),\n ...(stringValue(runtime.systemPrompt) ?? defaults?.systemPrompt\n ? { systemPrompt: stringValue(runtime.systemPrompt) ?? defaults?.systemPrompt }\n : {}),\n ...(stringArrayValue(runtime.allowedTools) ?? defaults?.allowedTools\n ? { allowedTools: stringArrayValue(runtime.allowedTools) ?? defaults?.allowedTools }\n : {}),\n ...(stringArrayValue(runtime.disallowedTools) ?? defaults?.disallowedTools\n ? { disallowedTools: stringArrayValue(runtime.disallowedTools) ?? defaults?.disallowedTools }\n : {}),\n ...((booleanValue(runtime.pluginsEnabled) ?? defaults?.pluginsEnabled) !== undefined\n ? { pluginsEnabled: booleanValue(runtime.pluginsEnabled) ?? defaults?.pluginsEnabled }\n : {}),\n };\n}\n\nexport function patchSessionRuntimeMetadata(\n metadata: Record<string, unknown>,\n patch: SessionRuntimeConfigPatch,\n): Record<string, unknown> {\n const runtime = {\n ...readRuntimeMetadata(metadata),\n ...stripUndefined(patch),\n };\n readRuntimeMetadata({ runtime });\n return {\n ...metadata,\n runtime,\n };\n}\n\nexport function runtimeMetadataChanged(\n before: Record<string, unknown>,\n after: Record<string, unknown>,\n): boolean {\n return JSON.stringify(readRuntimeMetadata(before)) !== JSON.stringify(readRuntimeMetadata(after));\n}\n\nexport function changedSessionRuntimeKeys(\n before: SessionRuntimeConfig,\n after: SessionRuntimeConfig,\n): Array<keyof SessionRuntimeConfig> {\n return RUNTIME_CONFIG_KEYS.filter(\n (key) => JSON.stringify(before[key]) !== JSON.stringify(after[key]),\n );\n}\n\nfunction stripUndefined<T extends Record<string, unknown>>(input: T): Partial<T> {\n return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined)) as Partial<T>;\n}\n",
10
- "export const SESSION_INPUT_LIMITS = {\n maxItems: 256,\n maxSkills: 32,\n maxTextBytes: 1024 * 1024,\n maxNameChars: 128,\n maxDisplayNameChars: 256,\n} as const\n\nexport type SkillSource = \"bundled\" | \"user\" | \"project\" | \"plugin\"\n\n/** Safe picker metadata; implementation locations and permissions stay on the server. */\nexport interface PluginCatalogEntry {\n pluginId: string\n displayName: string\n version: string\n scope: \"user\" | \"managed\" | \"project\" | \"local\"\n origin: \"native\" | \"converted\"\n description: string\n capabilities: (\"skills\" | \"tools\" | \"agents\")[]\n}\n\nexport type PluginCapabilityRef = {\n type: \"capability\"\n kind: \"plugin\"\n pluginId: string\n displayName: string\n}\n\nexport type PluginAgentRef = {\n type: \"capability\"\n kind: \"plugin_agent\"\n pluginId: string\n agentId: string\n displayName: string\n}\n\nexport type SessionUserInputItem =\n | { type: \"text\"; text: string }\n | { type: \"skill\"; name: string; path: string; displayName?: string; source?: SkillSource }\n | { type: \"mention\"; name: string; path: string; displayName?: string }\n | { type: \"context\"; kind: \"conversation\"; id: string; displayName: string }\n | PluginCapabilityRef\n | PluginAgentRef\n\nconst CONTROL_CHARACTER_PATTERN = /[\\u0000-\\u001F\\u007F-\\u009F]/\nconst TEXT_CONTROL_CHARACTER_PATTERN = /[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F-\\u009F]/\n\nexport function validateSessionUserInputItems(\n items: readonly SessionUserInputItem[],\n): SessionUserInputItem[] {\n if (items.length > SESSION_INPUT_LIMITS.maxItems) throw new Error(\"item_limit_exceeded\")\n\n let skillCount = 0\n let textBytes = 0\n for (const item of items) {\n if (item.type === \"text\") {\n assertValidText(item.text)\n textBytes += new TextEncoder().encode(item.text).byteLength\n continue\n }\n\n if (item.type === \"context\") {\n if (item.kind !== \"conversation\") throw new Error(\"invalid_context_kind\")\n assertValidString(item.id, \"id\")\n assertValidString(item.displayName, \"displayName\")\n assertMaximumLength(item.id, SESSION_INPUT_LIMITS.maxNameChars, \"id\")\n assertMaximumLength(item.displayName, SESSION_INPUT_LIMITS.maxDisplayNameChars, \"displayName\")\n continue\n }\n\n if (item.type === \"capability\") {\n if (item.kind !== \"plugin\" && item.kind !== \"plugin_agent\") throw new Error(\"invalid_capability_kind\")\n assertValidString(item.pluginId, \"pluginId\")\n assertValidString(item.displayName, \"displayName\")\n assertMaximumLength(item.pluginId, SESSION_INPUT_LIMITS.maxNameChars, \"pluginId\")\n assertMaximumLength(item.displayName, SESSION_INPUT_LIMITS.maxDisplayNameChars, \"displayName\")\n if (item.kind === \"plugin_agent\") {\n assertValidString(item.agentId, \"agentId\")\n assertMaximumLength(item.agentId, SESSION_INPUT_LIMITS.maxNameChars, \"agentId\")\n }\n continue\n }\n\n assertValidString(item.name, \"name\")\n assertValidString(item.path, \"path\")\n assertMaximumLength(item.name, SESSION_INPUT_LIMITS.maxNameChars, \"name\")\n if (item.displayName !== undefined) {\n assertValidString(item.displayName, \"displayName\")\n assertMaximumLength(item.displayName, SESSION_INPUT_LIMITS.maxDisplayNameChars, \"displayName\")\n }\n if (item.type === \"skill\") {\n skillCount += 1\n if (item.source !== undefined && !isSkillSource(item.source)) throw new Error(\"invalid_skill_source\")\n }\n }\n\n if (skillCount > SESSION_INPUT_LIMITS.maxSkills) throw new Error(\"skill_item_limit_exceeded\")\n if (textBytes > SESSION_INPUT_LIMITS.maxTextBytes) throw new Error(\"text_byte_limit_exceeded\")\n return [...items]\n}\n\nexport function normalizeSessionUserInputItems(\n items: readonly SessionUserInputItem[],\n): SessionUserInputItem[] {\n const normalized: SessionUserInputItem[] = []\n for (const item of validateSessionUserInputItems(items)) {\n if (item.type !== \"text\") {\n normalized.push(item)\n } else if (item.text.length > 0) {\n const previous = normalized.at(-1)\n if (previous?.type === \"text\") previous.text += item.text\n else normalized.push({ type: \"text\", text: item.text })\n }\n }\n return normalized\n}\n\nexport function sessionUserInputText(items: readonly SessionUserInputItem[]): string {\n return normalizeSessionUserInputItems(items)\n .map((item) => item.type === \"text\"\n ? item.text\n : item.type === \"context\" || item.type === \"capability\"\n ? `@${item.displayName}`\n : `$${item.name}`)\n .join(\"\")\n}\n\nfunction assertValidString(value: string, field: string): void {\n if (typeof value !== \"string\" || CONTROL_CHARACTER_PATTERN.test(value)) throw new Error(`invalid_${field}`)\n}\n\nfunction assertValidText(value: string): void {\n if (typeof value !== \"string\" || TEXT_CONTROL_CHARACTER_PATTERN.test(value)) throw new Error(\"invalid_text\")\n}\n\nfunction assertMaximumLength(value: string, maximum: number, field: string): void {\n if (value.length > maximum) throw new Error(`${field}_limit_exceeded`)\n}\n\nfunction isSkillSource(value: string): value is SkillSource {\n return value === \"bundled\" || value === \"user\" || value === \"project\" || value === \"plugin\"\n}\n",
11
- "import {\n patchSessionRuntimeMetadata,\n readRuntimeMetadata,\n} from \"./runtime-config.js\";\nimport type {\n AdmitPromptAttachmentInput,\n AdmitPromptInput,\n CreateScheduledTaskInput,\n CreateSessionInput,\n ForkSessionInput,\n ReplyPermissionInput,\n ScheduledPermissionProfile,\n ScheduledStopPolicy,\n UpdateScheduledTaskInput,\n UpdateSessionInput,\n ClearSessionWorktreeBindingInput,\n} from \"./session.js\";\nimport type { AttachmentIntent } from \"./attachment.js\";\nimport {\n normalizeSessionUserInputItems,\n type SessionUserInputItem,\n type SkillSource,\n} from \"./session-input-items.js\";\n\nexport interface ProtocolError {\n code: string;\n message: string;\n retryable?: boolean;\n details?: Record<string, unknown>;\n traceId?: string;\n}\n\nexport class ProtocolValidationError extends Error {\n readonly code = \"invalid_request\";\n readonly details?: Record<string, unknown>;\n\n constructor(message: string, field?: string, reason?: string) {\n super(message);\n this.name = \"ProtocolValidationError\";\n this.details = field || reason !== undefined\n ? { ...(field ? { field } : {}), ...(reason !== undefined ? { reason } : {}) }\n : undefined;\n }\n\n toProtocolError(): ProtocolError {\n return {\n code: this.code,\n message: this.message,\n ...(this.details ? { details: this.details } : {}),\n };\n }\n}\n\n/** Ordinary Prompt inputs cannot claim host-created UI instances or action Runs. */\nexport function assertPromptMetadataAllowed(input: { metadata?: unknown; runMetadata?: unknown }): void {\n for (const namespace of [\"metadata\", \"runMetadata\"] as const) {\n const metadata = input[namespace];\n if (!metadata || typeof metadata !== \"object\") continue;\n for (const name of [\"pluginUi\", \"uiAction\"]) {\n if (Object.hasOwn(metadata, name)) {\n const field = `${namespace}.${name}`;\n throw new ProtocolValidationError(`${field} is reserved for the host`, field);\n }\n }\n }\n}\n\ntype JsonRecord = Record<string, unknown>;\n\nexport type AdmitPromptRequest = Omit<AdmitPromptInput, \"sessionId\">;\nexport type ReplyPermissionRequest = Omit<ReplyPermissionInput, \"requestId\"> & {\n decision?: \"once\" | \"session\";\n};\n\nfunction record(value: unknown): JsonRecord {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new ProtocolValidationError(\"Request body must be a JSON object\");\n }\n return value as JsonRecord;\n}\n\nfunction requiredString(body: JsonRecord, field: string): string {\n const value = body[field];\n if (typeof value !== \"string\") {\n throw new ProtocolValidationError(`${field} is required`, field);\n }\n return value;\n}\n\nfunction optionalString(body: JsonRecord, field: string): string | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (typeof value !== \"string\") {\n throw new ProtocolValidationError(`${field} must be a string`, field);\n }\n return value;\n}\n\nfunction optionalNumber(\n body: JsonRecord,\n field: string,\n options: { nullable?: boolean; integer?: boolean; minimum?: number } = {},\n): number | null | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (value === null && options.nullable) return null;\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n (options.integer && !Number.isInteger(value)) ||\n (options.minimum !== undefined && value < options.minimum)\n ) {\n throw new ProtocolValidationError(`${field} must be a valid number`, field);\n }\n return value;\n}\n\nfunction optionalBoolean(body: JsonRecord, field: string): boolean | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (typeof value !== \"boolean\") {\n throw new ProtocolValidationError(`${field} must be a boolean`, field);\n }\n return value;\n}\n\nfunction optionalRecord(\n body: JsonRecord,\n field: string,\n): Record<string, unknown> | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new ProtocolValidationError(`${field} must be an object`, field);\n }\n return value as Record<string, unknown>;\n}\n\nfunction optionalStringArray(body: JsonRecord, field: string): string[] | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\")) {\n throw new ProtocolValidationError(`${field} must be an array of strings`, field);\n }\n return [...value] as string[];\n}\n\nfunction optionalEnum<const T extends readonly string[]>(\n body: JsonRecord,\n field: string,\n values: T,\n): T[number] | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (typeof value !== \"string\" || !values.includes(value)) {\n throw new ProtocolValidationError(\n `${field} must be one of: ${values.join(\", \")}`,\n field,\n );\n }\n return value as T[number];\n}\n\nfunction requiredEnum<const T extends readonly string[]>(\n body: JsonRecord,\n field: string,\n values: T,\n): T[number] {\n const value = optionalEnum(body, field, values);\n if (value === undefined) {\n throw new ProtocolValidationError(`${field} is required`, field);\n }\n return value;\n}\n\nexport function parseCreateSessionRequest(value: unknown): CreateSessionInput {\n const body = record(value);\n const cwd = requiredString(body, \"cwd\");\n const rawMetadata = optionalRecord(body, \"metadata\") ?? {};\n const runtime = readRuntimeMetadata(rawMetadata);\n const bodyModel = optionalString(body, \"model\");\n const model = typeof runtime.model === \"string\" ? runtime.model : bodyModel;\n if (!model) throw new ProtocolValidationError(\"model is required\", \"model\");\n const id = optionalString(body, \"id\");\n const parentId = optionalString(body, \"parentId\");\n const projectId = optionalString(body, \"projectId\");\n const title = optionalString(body, \"title\");\n const agent = optionalString(body, \"agent\");\n const storage = optionalEnum(body, \"storage\", [\"sqlite\", \"memory\"] as const);\n\n return {\n cwd,\n model,\n metadata: patchSessionRuntimeMetadata(rawMetadata, { model }),\n ...(id !== undefined ? { id } : {}),\n ...(parentId !== undefined ? { parentId } : {}),\n ...(projectId !== undefined ? { projectId } : {}),\n ...(title !== undefined ? { title } : {}),\n ...(agent !== undefined ? { agent } : {}),\n ...(storage !== undefined ? { storage } : {}),\n };\n}\n\nexport function parseForkSessionRequest(value: unknown): ForkSessionInput {\n const body = record(value);\n const beforeMessageId = optionalString(body, \"beforeMessageId\");\n const afterMessageId = optionalString(body, \"afterMessageId\");\n const storage = optionalEnum(body, \"storage\", [\"sqlite\", \"memory\"] as const);\n const copyHistory = optionalBoolean(body, \"copyHistory\");\n if (copyHistory === false && (beforeMessageId !== undefined || afterMessageId !== undefined)) {\n throw new ProtocolValidationError(\"copyHistory=false cannot select a fork point\", \"copyHistory\");\n }\n return {\n ...(copyHistory !== undefined ? { copyHistory } : {}),\n ...(beforeMessageId !== undefined ? { beforeMessageId } : {}),\n ...(afterMessageId !== undefined ? { afterMessageId } : {}),\n ...(storage !== undefined ? { storage } : {}),\n };\n}\n\nexport function parseUpdateSessionRequest(value: unknown): UpdateSessionInput {\n const body = record(value);\n if (\"storage\" in body) {\n throw new ProtocolValidationError(\"storage is selected when the session is created\", \"storage\");\n }\n if (\"model\" in body) {\n throw new ProtocolValidationError(\n \"model must be changed through metadata.runtime.model\",\n \"model\",\n );\n }\n const title = optionalString(body, \"title\");\n const metadata = optionalRecord(body, \"metadata\");\n readRuntimeMetadata(metadata);\n const rawAgent = body.agent;\n if (rawAgent !== undefined && rawAgent !== null && typeof rawAgent !== \"string\") {\n throw new ProtocolValidationError(\"agent must be a string or null\", \"agent\");\n }\n return {\n ...(title !== undefined ? { title } : {}),\n ...(rawAgent !== undefined ? { agent: rawAgent as string | null } : {}),\n ...(metadata !== undefined ? { metadata } : {}),\n };\n}\n\nexport function parseClearSessionWorktreeBindingRequest(value: unknown): ClearSessionWorktreeBindingInput {\n const body = record(value);\n for (const key of Object.keys(body)) if (![\"id\", \"path\", \"branch\"].includes(key)) throw new ProtocolValidationError(\"Only the expected worktree binding may be supplied\", key);\n const result = { id: requiredString(body, \"id\"), path: requiredString(body, \"path\"), branch: requiredString(body, \"branch\") };\n for (const [key, text] of Object.entries(result)) if (!text.trim() || text.length > 4096 || text.includes(\"\\0\")) throw new ProtocolValidationError(\"Expected worktree binding field is invalid\", key);\n return result;\n}\n\nexport function parseAdmitPromptRequest(value: unknown): AdmitPromptRequest {\n const body = record(value);\n assertPromptMetadataAllowed(body);\n const id = optionalString(body, \"id\");\n const delivery = optionalEnum(body, \"delivery\", [\"queue\", \"steer\"] as const);\n const metadata = optionalRecord(body, \"metadata\");\n const attachments = parsePromptAttachments(body.attachments);\n return {\n items: parsePromptItems(body),\n attachments,\n ...(id !== undefined ? { id } : {}),\n ...(delivery !== undefined ? { delivery } : {}),\n ...(metadata !== undefined ? { metadata } : {}),\n };\n}\n\nexport function parsePromptItems(value: unknown): SessionUserInputItem[] {\n const body = record(value);\n if (body.items !== undefined) return parseSessionInputItems(body.items);\n const content = optionalString(body, \"content\");\n if (content === undefined) {\n throw new ProtocolValidationError(\"items must be an array\", \"items\");\n }\n return parseSessionInputItems([{ type: \"text\", text: content }]);\n}\n\nexport function parseSessionInputItems(value: unknown): SessionUserInputItem[] {\n if (!Array.isArray(value)) {\n throw new ProtocolValidationError(\"items must be an array\", \"items\");\n }\n const items = value.map((entry, index): SessionUserInputItem => {\n const field = `items[${index}]`;\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new ProtocolValidationError(`${field} must be an object`, field);\n }\n const item = entry as JsonRecord;\n if (item.type === \"text\") {\n if (typeof item.text !== \"string\") {\n throw new ProtocolValidationError(`${field}.text must be a string`, `${field}.text`);\n }\n return { type: \"text\", text: item.text };\n }\n if (item.type === \"context\") {\n if (item.kind !== \"conversation\" || typeof item.id !== \"string\" || typeof item.displayName !== \"string\") {\n throw new ProtocolValidationError(`${field} requires kind, id and displayName`, field);\n }\n return { type: \"context\", kind: \"conversation\", id: item.id, displayName: item.displayName };\n }\n if (item.type === \"capability\") {\n if (\n (item.kind !== \"plugin\" && item.kind !== \"plugin_agent\") ||\n typeof item.pluginId !== \"string\" ||\n typeof item.displayName !== \"string\" ||\n (item.kind === \"plugin_agent\" && typeof item.agentId !== \"string\")\n ) {\n throw new ProtocolValidationError(\n `${field} requires a valid kind, pluginId, displayName and agentId`,\n field,\n );\n }\n return item.kind === \"plugin\"\n ? {\n type: \"capability\",\n kind: \"plugin\",\n pluginId: item.pluginId,\n displayName: item.displayName,\n }\n : {\n type: \"capability\",\n kind: \"plugin_agent\",\n pluginId: item.pluginId,\n agentId: item.agentId as string,\n displayName: item.displayName,\n };\n }\n if (item.type !== \"skill\" && item.type !== \"mention\") {\n throw new ProtocolValidationError(`${field}.type is invalid`, `${field}.type`);\n }\n if (typeof item.name !== \"string\" || typeof item.path !== \"string\") {\n throw new ProtocolValidationError(`${field} requires name and path`, field);\n }\n if (item.displayName !== undefined && typeof item.displayName !== \"string\") {\n throw new ProtocolValidationError(`${field}.displayName must be a string`, `${field}.displayName`);\n }\n if (item.type === \"mention\") {\n return {\n type: \"mention\",\n name: item.name,\n path: item.path,\n ...(typeof item.displayName === \"string\" ? { displayName: item.displayName } : {}),\n };\n }\n if (\n item.source !== undefined &&\n item.source !== \"bundled\" && item.source !== \"user\" && item.source !== \"project\" && item.source !== \"plugin\"\n ) {\n throw new ProtocolValidationError(`${field}.source is invalid`, `${field}.source`);\n }\n return {\n type: \"skill\",\n name: item.name,\n path: item.path,\n ...(typeof item.displayName === \"string\" ? { displayName: item.displayName } : {}),\n ...(item.source !== undefined ? { source: item.source as SkillSource } : {}),\n };\n });\n try {\n return normalizeSessionUserInputItems(items);\n } catch (error) {\n throw new ProtocolValidationError(\n error instanceof Error ? error.message : \"items are invalid\",\n \"items\",\n );\n }\n}\n\nexport function parsePromptAttachments(\n value: unknown,\n): AdmitPromptAttachmentInput[] {\n if (value === undefined) return [];\n if (!Array.isArray(value)) {\n throw new ProtocolValidationError(\"attachments must be an array\", \"attachments\");\n }\n return value.map((entry, index) => {\n const field = `attachments[${index}]`;\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new ProtocolValidationError(`${field} must be an object`, field);\n }\n const item = entry as JsonRecord;\n const assetId = item.assetId;\n if (typeof assetId !== \"string\" || assetId.length === 0) {\n throw new ProtocolValidationError(\n `${field}.assetId must be a non-empty string`,\n `${field}.assetId`,\n );\n }\n const intent = item.intent;\n const allowedIntents = [\n \"auto\",\n \"vision\",\n \"ocr\",\n \"document\",\n \"tool_resource\",\n \"workspace_reference\",\n ] as const satisfies readonly AttachmentIntent[];\n if (\n intent !== undefined &&\n (typeof intent !== \"string\" || !allowedIntents.includes(intent as AttachmentIntent))\n ) {\n throw new ProtocolValidationError(\n `${field}.intent must be one of: ${allowedIntents.join(\", \")}`,\n `${field}.intent`,\n );\n }\n const displayName = item.displayName;\n if (displayName !== undefined && typeof displayName !== \"string\") {\n throw new ProtocolValidationError(\n `${field}.displayName must be a string`,\n `${field}.displayName`,\n );\n }\n return {\n assetId,\n ...(intent !== undefined ? { intent: intent as AttachmentIntent } : {}),\n ...(displayName !== undefined ? { displayName } : {}),\n };\n });\n}\n\nexport function parseReplyPermissionRequest(value: unknown): ReplyPermissionRequest {\n const body = record(value);\n const status = requiredEnum(\n body,\n \"status\",\n [\"approved\", \"denied\", \"expired\"] as const,\n );\n const decision = optionalEnum(body, \"decision\", [\"once\", \"session\"] as const);\n const clientId = optionalString(body, \"clientId\");\n const answer = optionalString(body, \"answer\");\n return {\n status,\n ...(decision !== undefined ? { decision } : {}),\n ...(clientId !== undefined ? { clientId } : {}),\n ...(answer !== undefined ? { answer } : {}),\n };\n}\n\nfunction parsePermissionProfile(value: unknown): ScheduledPermissionProfile {\n const body = record(value);\n const mode = requiredEnum(\n body,\n \"mode\",\n [\"read_only\", \"workspace_write\", \"full_access\"] as const,\n );\n const network = optionalBoolean(body, \"network\");\n const allowedTools = optionalStringArray(body, \"allowedTools\");\n const deniedTools = optionalStringArray(body, \"deniedTools\");\n return {\n mode,\n ...(network !== undefined ? { network } : {}),\n ...(allowedTools !== undefined ? { allowedTools } : {}),\n ...(deniedTools !== undefined ? { deniedTools } : {}),\n };\n}\n\nfunction parseStopPolicy(value: unknown): ScheduledStopPolicy {\n const body = record(value);\n const runOnce = optionalBoolean(body, \"runOnce\");\n const maxRuns = optionalNumber(body, \"maxRuns\", { integer: true, minimum: 1 });\n const stopWhenCompleted = optionalBoolean(body, \"stopWhenCompleted\");\n const expiresAt = optionalNumber(body, \"expiresAt\");\n return {\n ...(runOnce !== undefined ? { runOnce } : {}),\n ...(maxRuns !== undefined ? { maxRuns: maxRuns as number } : {}),\n ...(stopWhenCompleted !== undefined ? { stopWhenCompleted } : {}),\n ...(expiresAt !== undefined ? { expiresAt: expiresAt as number } : {}),\n };\n}\n\nfunction parseScheduleFields(body: JsonRecord): Partial<CreateScheduledTaskInput> {\n const id = optionalString(body, \"id\");\n const name = optionalString(body, \"name\");\n const description = optionalString(body, \"description\");\n const prompt = optionalString(body, \"prompt\");\n const recurrence = optionalString(body, \"recurrence\");\n const recurrenceFormat = optionalEnum(\n body,\n \"recurrenceFormat\",\n [\"rrule\", \"once\"] as const,\n );\n const timezone = optionalString(body, \"timezone\");\n const status = optionalEnum(\n body,\n \"status\",\n [\"active\", \"paused\", \"completed\"] as const,\n );\n const destination = optionalEnum(\n body,\n \"destination\",\n [\"standalone\", \"chat\"] as const,\n );\n const sessionId = optionalString(body, \"sessionId\");\n const projectPaths = optionalStringArray(body, \"projectPaths\");\n const executionMode = optionalEnum(\n body,\n \"executionMode\",\n [\"local\", \"worktree\"] as const,\n );\n const model = optionalString(body, \"model\");\n const effort = optionalString(body, \"effort\");\n const skillNames = optionalStringArray(body, \"skillNames\");\n const pluginNames = optionalStringArray(body, \"pluginNames\");\n const permissionProfile = body.permissionProfile === undefined\n ? undefined\n : parsePermissionProfile(body.permissionProfile);\n const overlapPolicy = optionalEnum(\n body,\n \"overlapPolicy\",\n [\"skip\", \"queue\"] as const,\n );\n const missedRunPolicy = optionalEnum(\n body,\n \"missedRunPolicy\",\n [\"skip\", \"run_once\"] as const,\n );\n const stopPolicy = body.stopPolicy === undefined\n ? undefined\n : parseStopPolicy(body.stopPolicy);\n const createdBy = optionalEnum(\n body,\n \"createdBy\",\n [\"user\", \"agent\"] as const,\n );\n const createdFromSessionId = optionalString(body, \"createdFromSessionId\");\n return {\n ...(id !== undefined ? { id } : {}),\n ...(name !== undefined ? { name } : {}),\n ...(description !== undefined ? { description } : {}),\n ...(prompt !== undefined ? { prompt } : {}),\n ...(recurrence !== undefined ? { recurrence } : {}),\n ...(recurrenceFormat !== undefined ? { recurrenceFormat } : {}),\n ...(timezone !== undefined ? { timezone } : {}),\n ...(status !== undefined ? { status } : {}),\n ...(destination !== undefined ? { destination } : {}),\n ...(sessionId !== undefined ? { sessionId } : {}),\n ...(projectPaths !== undefined ? { projectPaths } : {}),\n ...(executionMode !== undefined ? { executionMode } : {}),\n ...(model !== undefined ? { model } : {}),\n ...(effort !== undefined ? { effort } : {}),\n ...(skillNames !== undefined ? { skillNames } : {}),\n ...(pluginNames !== undefined ? { pluginNames } : {}),\n ...(permissionProfile !== undefined ? { permissionProfile } : {}),\n ...(overlapPolicy !== undefined ? { overlapPolicy } : {}),\n ...(missedRunPolicy !== undefined ? { missedRunPolicy } : {}),\n ...(stopPolicy !== undefined ? { stopPolicy } : {}),\n ...(createdBy !== undefined ? { createdBy } : {}),\n ...(createdFromSessionId !== undefined ? { createdFromSessionId } : {}),\n };\n}\n\nexport function parseCreateScheduledTaskRequest(value: unknown): CreateScheduledTaskInput {\n const body = record(value);\n const parsed = parseScheduleFields(body);\n const nextRunAt = optionalNumber(body, \"nextRunAt\");\n return {\n ...parsed,\n name: requiredString(body, \"name\"),\n prompt: requiredString(body, \"prompt\"),\n recurrence: requiredString(body, \"recurrence\"),\n recurrenceFormat: requiredEnum(body, \"recurrenceFormat\", [\"rrule\", \"once\"] as const),\n timezone: requiredString(body, \"timezone\"),\n destination: requiredEnum(body, \"destination\", [\"standalone\", \"chat\"] as const),\n ...(nextRunAt !== undefined ? { nextRunAt: nextRunAt as number } : {}),\n };\n}\n\nexport function parseUpdateScheduledTaskRequest(value: unknown): UpdateScheduledTaskInput {\n const body = record(value);\n if (\"id\" in body) {\n throw new ProtocolValidationError(\"id cannot be changed\", \"id\");\n }\n const parsed = parseScheduleFields(body);\n const lastRunAt = optionalNumber(body, \"lastRunAt\", { nullable: true });\n const nextRunAt = optionalNumber(body, \"nextRunAt\", { nullable: true });\n const runCount = optionalNumber(body, \"runCount\", { integer: true, minimum: 0 });\n const { id: _id, ...patch } = parsed;\n return {\n ...patch,\n ...(lastRunAt !== undefined ? { lastRunAt: lastRunAt as number | null } : {}),\n ...(nextRunAt !== undefined ? { nextRunAt: nextRunAt as number | null } : {}),\n ...(runCount !== undefined ? { runCount: runCount as number } : {}),\n };\n}\n",
10
+ "export const SESSION_INPUT_LIMITS = {\n maxItems: 256,\n maxSkills: 32,\n maxTextBytes: 1024 * 1024,\n maxNameChars: 128,\n maxDisplayNameChars: 256,\n} as const\n\nexport type SkillSource = \"bundled\" | \"user\" | \"project\" | \"plugin\"\n\n/** Safe picker metadata; implementation locations and permissions stay on the server. */\nexport interface PluginCatalogEntry {\n pluginId: string\n icon?: string\n displayName: string\n version: string\n scope: \"user\" | \"managed\" | \"project\" | \"local\"\n origin: \"native\" | \"converted\"\n description: string\n capabilities: (\"skills\" | \"tools\" | \"agents\")[]\n}\n\nexport type PluginCapabilityRef = {\n type: \"capability\"\n kind: \"plugin\"\n pluginId: string\n displayName: string\n}\n\nexport type PluginAgentRef = {\n type: \"capability\"\n kind: \"plugin_agent\"\n pluginId: string\n agentId: string\n displayName: string\n}\n\nexport type SessionUserInputItem =\n | { type: \"text\"; text: string }\n | { type: \"skill\"; name: string; path: string; displayName?: string; source?: SkillSource }\n | { type: \"mention\"; name: string; path: string; displayName?: string }\n | { type: \"context\"; kind: \"conversation\"; id: string; displayName: string }\n | PluginCapabilityRef\n | PluginAgentRef\n\nconst CONTROL_CHARACTER_PATTERN = /[\\u0000-\\u001F\\u007F-\\u009F]/\nconst TEXT_CONTROL_CHARACTER_PATTERN = /[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F-\\u009F]/\n\nexport function validateSessionUserInputItems(\n items: readonly SessionUserInputItem[],\n): SessionUserInputItem[] {\n if (items.length > SESSION_INPUT_LIMITS.maxItems) throw new Error(\"item_limit_exceeded\")\n\n let skillCount = 0\n let textBytes = 0\n for (const item of items) {\n if (item.type === \"text\") {\n assertValidText(item.text)\n textBytes += new TextEncoder().encode(item.text).byteLength\n continue\n }\n\n if (item.type === \"context\") {\n if (item.kind !== \"conversation\") throw new Error(\"invalid_context_kind\")\n assertValidString(item.id, \"id\")\n assertValidString(item.displayName, \"displayName\")\n assertMaximumLength(item.id, SESSION_INPUT_LIMITS.maxNameChars, \"id\")\n assertMaximumLength(item.displayName, SESSION_INPUT_LIMITS.maxDisplayNameChars, \"displayName\")\n continue\n }\n\n if (item.type === \"capability\") {\n if (item.kind !== \"plugin\" && item.kind !== \"plugin_agent\") throw new Error(\"invalid_capability_kind\")\n assertValidString(item.pluginId, \"pluginId\")\n assertValidString(item.displayName, \"displayName\")\n assertMaximumLength(item.pluginId, SESSION_INPUT_LIMITS.maxNameChars, \"pluginId\")\n assertMaximumLength(item.displayName, SESSION_INPUT_LIMITS.maxDisplayNameChars, \"displayName\")\n if (item.kind === \"plugin_agent\") {\n assertValidString(item.agentId, \"agentId\")\n assertMaximumLength(item.agentId, SESSION_INPUT_LIMITS.maxNameChars, \"agentId\")\n }\n continue\n }\n\n assertValidString(item.name, \"name\")\n assertValidString(item.path, \"path\")\n assertMaximumLength(item.name, SESSION_INPUT_LIMITS.maxNameChars, \"name\")\n if (item.displayName !== undefined) {\n assertValidString(item.displayName, \"displayName\")\n assertMaximumLength(item.displayName, SESSION_INPUT_LIMITS.maxDisplayNameChars, \"displayName\")\n }\n if (item.type === \"skill\") {\n skillCount += 1\n if (item.source !== undefined && !isSkillSource(item.source)) throw new Error(\"invalid_skill_source\")\n }\n }\n\n if (skillCount > SESSION_INPUT_LIMITS.maxSkills) throw new Error(\"skill_item_limit_exceeded\")\n if (textBytes > SESSION_INPUT_LIMITS.maxTextBytes) throw new Error(\"text_byte_limit_exceeded\")\n return [...items]\n}\n\nexport function normalizeSessionUserInputItems(\n items: readonly SessionUserInputItem[],\n): SessionUserInputItem[] {\n const normalized: SessionUserInputItem[] = []\n for (const item of validateSessionUserInputItems(items)) {\n if (item.type !== \"text\") {\n normalized.push(item)\n } else if (item.text.length > 0) {\n const previous = normalized.at(-1)\n if (previous?.type === \"text\") previous.text += item.text\n else normalized.push({ type: \"text\", text: item.text })\n }\n }\n return normalized\n}\n\nexport function sessionUserInputText(items: readonly SessionUserInputItem[]): string {\n return normalizeSessionUserInputItems(items)\n .map((item) => item.type === \"text\"\n ? item.text\n : item.type === \"context\" || item.type === \"capability\"\n ? `@${item.displayName}`\n : `$${item.name}`)\n .join(\"\")\n}\n\nfunction assertValidString(value: string, field: string): void {\n if (typeof value !== \"string\" || CONTROL_CHARACTER_PATTERN.test(value)) throw new Error(`invalid_${field}`)\n}\n\nfunction assertValidText(value: string): void {\n if (typeof value !== \"string\" || TEXT_CONTROL_CHARACTER_PATTERN.test(value)) throw new Error(\"invalid_text\")\n}\n\nfunction assertMaximumLength(value: string, maximum: number, field: string): void {\n if (value.length > maximum) throw new Error(`${field}_limit_exceeded`)\n}\n\nfunction isSkillSource(value: string): value is SkillSource {\n return value === \"bundled\" || value === \"user\" || value === \"project\" || value === \"plugin\"\n}\n",
11
+ "import {\n patchSessionRuntimeMetadata,\n readRuntimeMetadata,\n} from \"./runtime-config.js\";\nimport type {\n AdmitPromptAttachmentInput,\n AdmitPromptInput,\n CreateScheduledTaskInput,\n CreateSessionInput,\n ForkSessionInput,\n ReplyPermissionInput,\n ScheduledPermissionProfile,\n ScheduledStopPolicy,\n UpdateScheduledTaskInput,\n UpdateSessionInput,\n ClearSessionWorktreeBindingInput,\n} from \"./session.js\";\nimport type { AttachmentIntent } from \"./attachment.js\";\nimport {\n normalizeSessionUserInputItems,\n type SessionUserInputItem,\n type SkillSource,\n} from \"./session-input-items.js\";\n\nexport interface ProtocolError {\n code: string;\n message: string;\n retryable?: boolean;\n details?: Record<string, unknown>;\n traceId?: string;\n}\n\nexport class ProtocolValidationError extends Error {\n readonly code = \"invalid_request\";\n readonly details?: Record<string, unknown>;\n\n constructor(message: string, field?: string, reason?: string) {\n super(message);\n this.name = \"ProtocolValidationError\";\n this.details =\n field || reason !== undefined\n ? {\n ...(field ? { field } : {}),\n ...(reason !== undefined ? { reason } : {}),\n }\n : undefined;\n }\n\n toProtocolError(): ProtocolError {\n return {\n code: this.code,\n message: this.message,\n ...(this.details ? { details: this.details } : {}),\n };\n }\n}\n\n/** Ordinary Prompt inputs cannot claim host-created UI instances or action Runs. */\nexport function assertPromptMetadataAllowed(input: {\n metadata?: unknown;\n runMetadata?: unknown;\n}): void {\n for (const namespace of [\"metadata\", \"runMetadata\"] as const) {\n const metadata = input[namespace];\n if (!metadata || typeof metadata !== \"object\") continue;\n for (const name of [\"pluginUi\", \"uiAction\", \"pluginUiSubmission\"]) {\n if (Object.hasOwn(metadata, name)) {\n const field = `${namespace}.${name}`;\n throw new ProtocolValidationError(\n `${field} is reserved for the host`,\n field,\n );\n }\n }\n }\n}\n\ntype JsonRecord = Record<string, unknown>;\n\nexport type AdmitPromptRequest = Omit<AdmitPromptInput, \"sessionId\">;\nexport type ReplyPermissionRequest = Omit<ReplyPermissionInput, \"requestId\"> & {\n decision?: \"once\" | \"session\";\n};\n\nfunction record(value: unknown): JsonRecord {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new ProtocolValidationError(\"Request body must be a JSON object\");\n }\n return value as JsonRecord;\n}\n\nfunction requiredString(body: JsonRecord, field: string): string {\n const value = body[field];\n if (typeof value !== \"string\") {\n throw new ProtocolValidationError(`${field} is required`, field);\n }\n return value;\n}\n\nfunction optionalString(body: JsonRecord, field: string): string | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (typeof value !== \"string\") {\n throw new ProtocolValidationError(`${field} must be a string`, field);\n }\n return value;\n}\n\nfunction optionalNumber(\n body: JsonRecord,\n field: string,\n options: { nullable?: boolean; integer?: boolean; minimum?: number } = {},\n): number | null | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (value === null && options.nullable) return null;\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n (options.integer && !Number.isInteger(value)) ||\n (options.minimum !== undefined && value < options.minimum)\n ) {\n throw new ProtocolValidationError(`${field} must be a valid number`, field);\n }\n return value;\n}\n\nfunction optionalBoolean(body: JsonRecord, field: string): boolean | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (typeof value !== \"boolean\") {\n throw new ProtocolValidationError(`${field} must be a boolean`, field);\n }\n return value;\n}\n\nfunction optionalRecord(\n body: JsonRecord,\n field: string,\n): Record<string, unknown> | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new ProtocolValidationError(`${field} must be an object`, field);\n }\n return value as Record<string, unknown>;\n}\n\nfunction optionalStringArray(\n body: JsonRecord,\n field: string,\n): string[] | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (\n !Array.isArray(value) ||\n value.some((entry) => typeof entry !== \"string\")\n ) {\n throw new ProtocolValidationError(\n `${field} must be an array of strings`,\n field,\n );\n }\n return [...value] as string[];\n}\n\nfunction optionalEnum<const T extends readonly string[]>(\n body: JsonRecord,\n field: string,\n values: T,\n): T[number] | undefined {\n const value = body[field];\n if (value === undefined) return undefined;\n if (typeof value !== \"string\" || !values.includes(value)) {\n throw new ProtocolValidationError(\n `${field} must be one of: ${values.join(\", \")}`,\n field,\n );\n }\n return value as T[number];\n}\n\nfunction requiredEnum<const T extends readonly string[]>(\n body: JsonRecord,\n field: string,\n values: T,\n): T[number] {\n const value = optionalEnum(body, field, values);\n if (value === undefined) {\n throw new ProtocolValidationError(`${field} is required`, field);\n }\n return value;\n}\n\nexport function parseCreateSessionRequest(value: unknown): CreateSessionInput {\n const body = record(value);\n const cwd = requiredString(body, \"cwd\");\n const rawMetadata = optionalRecord(body, \"metadata\") ?? {};\n const runtime = readRuntimeMetadata(rawMetadata);\n const bodyModel = optionalString(body, \"model\");\n const model = typeof runtime.model === \"string\" ? runtime.model : bodyModel;\n if (!model) throw new ProtocolValidationError(\"model is required\", \"model\");\n const id = optionalString(body, \"id\");\n const parentId = optionalString(body, \"parentId\");\n const projectId = optionalString(body, \"projectId\");\n const title = optionalString(body, \"title\");\n const agent = optionalString(body, \"agent\");\n const storage = optionalEnum(body, \"storage\", [\"sqlite\", \"memory\"] as const);\n\n return {\n cwd,\n model,\n metadata: patchSessionRuntimeMetadata(rawMetadata, { model }),\n ...(id !== undefined ? { id } : {}),\n ...(parentId !== undefined ? { parentId } : {}),\n ...(projectId !== undefined ? { projectId } : {}),\n ...(title !== undefined ? { title } : {}),\n ...(agent !== undefined ? { agent } : {}),\n ...(storage !== undefined ? { storage } : {}),\n };\n}\n\nexport function parseForkSessionRequest(value: unknown): ForkSessionInput {\n const body = record(value);\n const beforeMessageId = optionalString(body, \"beforeMessageId\");\n const afterMessageId = optionalString(body, \"afterMessageId\");\n const storage = optionalEnum(body, \"storage\", [\"sqlite\", \"memory\"] as const);\n const copyHistory = optionalBoolean(body, \"copyHistory\");\n if (\n copyHistory === false &&\n (beforeMessageId !== undefined || afterMessageId !== undefined)\n ) {\n throw new ProtocolValidationError(\n \"copyHistory=false cannot select a fork point\",\n \"copyHistory\",\n );\n }\n return {\n ...(copyHistory !== undefined ? { copyHistory } : {}),\n ...(beforeMessageId !== undefined ? { beforeMessageId } : {}),\n ...(afterMessageId !== undefined ? { afterMessageId } : {}),\n ...(storage !== undefined ? { storage } : {}),\n };\n}\n\nexport function parseUpdateSessionRequest(value: unknown): UpdateSessionInput {\n const body = record(value);\n if (\"storage\" in body) {\n throw new ProtocolValidationError(\n \"storage is selected when the session is created\",\n \"storage\",\n );\n }\n if (\"model\" in body) {\n throw new ProtocolValidationError(\n \"model must be changed through metadata.runtime.model\",\n \"model\",\n );\n }\n const title = optionalString(body, \"title\");\n const metadata = optionalRecord(body, \"metadata\");\n readRuntimeMetadata(metadata);\n const rawAgent = body.agent;\n if (\n rawAgent !== undefined &&\n rawAgent !== null &&\n typeof rawAgent !== \"string\"\n ) {\n throw new ProtocolValidationError(\n \"agent must be a string or null\",\n \"agent\",\n );\n }\n return {\n ...(title !== undefined ? { title } : {}),\n ...(rawAgent !== undefined ? { agent: rawAgent as string | null } : {}),\n ...(metadata !== undefined ? { metadata } : {}),\n };\n}\n\nexport function parseClearSessionWorktreeBindingRequest(\n value: unknown,\n): ClearSessionWorktreeBindingInput {\n const body = record(value);\n for (const key of Object.keys(body))\n if (![\"id\", \"path\", \"branch\"].includes(key))\n throw new ProtocolValidationError(\n \"Only the expected worktree binding may be supplied\",\n key,\n );\n const result = {\n id: requiredString(body, \"id\"),\n path: requiredString(body, \"path\"),\n branch: requiredString(body, \"branch\"),\n };\n for (const [key, text] of Object.entries(result))\n if (!text.trim() || text.length > 4096 || text.includes(\"\\0\"))\n throw new ProtocolValidationError(\n \"Expected worktree binding field is invalid\",\n key,\n );\n return result;\n}\n\nexport function parseAdmitPromptRequest(value: unknown): AdmitPromptRequest {\n const body = record(value);\n assertPromptMetadataAllowed(body);\n const id = optionalString(body, \"id\");\n const delivery = optionalEnum(body, \"delivery\", [\"queue\", \"steer\"] as const);\n const metadata = optionalRecord(body, \"metadata\");\n const attachments = parsePromptAttachments(body.attachments);\n return {\n items: parsePromptItems(body),\n attachments,\n ...(id !== undefined ? { id } : {}),\n ...(delivery !== undefined ? { delivery } : {}),\n ...(metadata !== undefined ? { metadata } : {}),\n };\n}\n\nexport function parsePromptItems(value: unknown): SessionUserInputItem[] {\n const body = record(value);\n if (body.items !== undefined) return parseSessionInputItems(body.items);\n const content = optionalString(body, \"content\");\n if (content === undefined) {\n throw new ProtocolValidationError(\"items must be an array\", \"items\");\n }\n return parseSessionInputItems([{ type: \"text\", text: content }]);\n}\n\nexport function parseSessionInputItems(value: unknown): SessionUserInputItem[] {\n if (!Array.isArray(value)) {\n throw new ProtocolValidationError(\"items must be an array\", \"items\");\n }\n const items = value.map((entry, index): SessionUserInputItem => {\n const field = `items[${index}]`;\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new ProtocolValidationError(`${field} must be an object`, field);\n }\n const item = entry as JsonRecord;\n if (item.type === \"text\") {\n if (typeof item.text !== \"string\") {\n throw new ProtocolValidationError(\n `${field}.text must be a string`,\n `${field}.text`,\n );\n }\n return { type: \"text\", text: item.text };\n }\n if (item.type === \"context\") {\n if (\n item.kind !== \"conversation\" ||\n typeof item.id !== \"string\" ||\n typeof item.displayName !== \"string\"\n ) {\n throw new ProtocolValidationError(\n `${field} requires kind, id and displayName`,\n field,\n );\n }\n return {\n type: \"context\",\n kind: \"conversation\",\n id: item.id,\n displayName: item.displayName,\n };\n }\n if (item.type === \"capability\") {\n if (\n (item.kind !== \"plugin\" && item.kind !== \"plugin_agent\") ||\n typeof item.pluginId !== \"string\" ||\n typeof item.displayName !== \"string\" ||\n (item.kind === \"plugin_agent\" && typeof item.agentId !== \"string\")\n ) {\n throw new ProtocolValidationError(\n `${field} requires a valid kind, pluginId, displayName and agentId`,\n field,\n );\n }\n return item.kind === \"plugin\"\n ? {\n type: \"capability\",\n kind: \"plugin\",\n pluginId: item.pluginId,\n displayName: item.displayName,\n }\n : {\n type: \"capability\",\n kind: \"plugin_agent\",\n pluginId: item.pluginId,\n agentId: item.agentId as string,\n displayName: item.displayName,\n };\n }\n if (item.type !== \"skill\" && item.type !== \"mention\") {\n throw new ProtocolValidationError(\n `${field}.type is invalid`,\n `${field}.type`,\n );\n }\n if (typeof item.name !== \"string\" || typeof item.path !== \"string\") {\n throw new ProtocolValidationError(\n `${field} requires name and path`,\n field,\n );\n }\n if (\n item.displayName !== undefined &&\n typeof item.displayName !== \"string\"\n ) {\n throw new ProtocolValidationError(\n `${field}.displayName must be a string`,\n `${field}.displayName`,\n );\n }\n if (item.type === \"mention\") {\n return {\n type: \"mention\",\n name: item.name,\n path: item.path,\n ...(typeof item.displayName === \"string\"\n ? { displayName: item.displayName }\n : {}),\n };\n }\n if (\n item.source !== undefined &&\n item.source !== \"bundled\" &&\n item.source !== \"user\" &&\n item.source !== \"project\" &&\n item.source !== \"plugin\"\n ) {\n throw new ProtocolValidationError(\n `${field}.source is invalid`,\n `${field}.source`,\n );\n }\n return {\n type: \"skill\",\n name: item.name,\n path: item.path,\n ...(typeof item.displayName === \"string\"\n ? { displayName: item.displayName }\n : {}),\n ...(item.source !== undefined\n ? { source: item.source as SkillSource }\n : {}),\n };\n });\n try {\n return normalizeSessionUserInputItems(items);\n } catch (error) {\n throw new ProtocolValidationError(\n error instanceof Error ? error.message : \"items are invalid\",\n \"items\",\n );\n }\n}\n\nexport function parsePromptAttachments(\n value: unknown,\n): AdmitPromptAttachmentInput[] {\n if (value === undefined) return [];\n if (!Array.isArray(value)) {\n throw new ProtocolValidationError(\n \"attachments must be an array\",\n \"attachments\",\n );\n }\n return value.map((entry, index) => {\n const field = `attachments[${index}]`;\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new ProtocolValidationError(`${field} must be an object`, field);\n }\n const item = entry as JsonRecord;\n const assetId = item.assetId;\n if (typeof assetId !== \"string\" || assetId.length === 0) {\n throw new ProtocolValidationError(\n `${field}.assetId must be a non-empty string`,\n `${field}.assetId`,\n );\n }\n const intent = item.intent;\n const allowedIntents = [\n \"auto\",\n \"vision\",\n \"ocr\",\n \"document\",\n \"tool_resource\",\n \"workspace_reference\",\n ] as const satisfies readonly AttachmentIntent[];\n if (\n intent !== undefined &&\n (typeof intent !== \"string\" ||\n !allowedIntents.includes(intent as AttachmentIntent))\n ) {\n throw new ProtocolValidationError(\n `${field}.intent must be one of: ${allowedIntents.join(\", \")}`,\n `${field}.intent`,\n );\n }\n const displayName = item.displayName;\n if (displayName !== undefined && typeof displayName !== \"string\") {\n throw new ProtocolValidationError(\n `${field}.displayName must be a string`,\n `${field}.displayName`,\n );\n }\n return {\n assetId,\n ...(intent !== undefined ? { intent: intent as AttachmentIntent } : {}),\n ...(displayName !== undefined ? { displayName } : {}),\n };\n });\n}\n\nexport function parseReplyPermissionRequest(\n value: unknown,\n): ReplyPermissionRequest {\n const body = record(value);\n const status = requiredEnum(body, \"status\", [\n \"approved\",\n \"denied\",\n \"expired\",\n ] as const);\n const decision = optionalEnum(body, \"decision\", [\"once\", \"session\"] as const);\n const clientId = optionalString(body, \"clientId\");\n const answer = optionalString(body, \"answer\");\n return {\n status,\n ...(decision !== undefined ? { decision } : {}),\n ...(clientId !== undefined ? { clientId } : {}),\n ...(answer !== undefined ? { answer } : {}),\n };\n}\n\nfunction parsePermissionProfile(value: unknown): ScheduledPermissionProfile {\n const body = record(value);\n const mode = requiredEnum(body, \"mode\", [\n \"read_only\",\n \"workspace_write\",\n \"full_access\",\n ] as const);\n const network = optionalBoolean(body, \"network\");\n const allowedTools = optionalStringArray(body, \"allowedTools\");\n const deniedTools = optionalStringArray(body, \"deniedTools\");\n return {\n mode,\n ...(network !== undefined ? { network } : {}),\n ...(allowedTools !== undefined ? { allowedTools } : {}),\n ...(deniedTools !== undefined ? { deniedTools } : {}),\n };\n}\n\nfunction parseStopPolicy(value: unknown): ScheduledStopPolicy {\n const body = record(value);\n const runOnce = optionalBoolean(body, \"runOnce\");\n const maxRuns = optionalNumber(body, \"maxRuns\", {\n integer: true,\n minimum: 1,\n });\n const stopWhenCompleted = optionalBoolean(body, \"stopWhenCompleted\");\n const expiresAt = optionalNumber(body, \"expiresAt\");\n return {\n ...(runOnce !== undefined ? { runOnce } : {}),\n ...(maxRuns !== undefined ? { maxRuns: maxRuns as number } : {}),\n ...(stopWhenCompleted !== undefined ? { stopWhenCompleted } : {}),\n ...(expiresAt !== undefined ? { expiresAt: expiresAt as number } : {}),\n };\n}\n\nfunction parseScheduleFields(\n body: JsonRecord,\n): Partial<CreateScheduledTaskInput> {\n const id = optionalString(body, \"id\");\n const name = optionalString(body, \"name\");\n const description = optionalString(body, \"description\");\n const prompt = optionalString(body, \"prompt\");\n const recurrence = optionalString(body, \"recurrence\");\n const recurrenceFormat = optionalEnum(body, \"recurrenceFormat\", [\n \"rrule\",\n \"once\",\n ] as const);\n const timezone = optionalString(body, \"timezone\");\n const status = optionalEnum(body, \"status\", [\n \"active\",\n \"paused\",\n \"completed\",\n ] as const);\n const destination = optionalEnum(body, \"destination\", [\n \"standalone\",\n \"chat\",\n ] as const);\n const sessionId = optionalString(body, \"sessionId\");\n const projectPaths = optionalStringArray(body, \"projectPaths\");\n const executionMode = optionalEnum(body, \"executionMode\", [\n \"local\",\n \"worktree\",\n ] as const);\n const model = optionalString(body, \"model\");\n const effort = optionalString(body, \"effort\");\n const skillNames = optionalStringArray(body, \"skillNames\");\n const pluginNames = optionalStringArray(body, \"pluginNames\");\n const permissionProfile =\n body.permissionProfile === undefined\n ? undefined\n : parsePermissionProfile(body.permissionProfile);\n const overlapPolicy = optionalEnum(body, \"overlapPolicy\", [\n \"skip\",\n \"queue\",\n ] as const);\n const missedRunPolicy = optionalEnum(body, \"missedRunPolicy\", [\n \"skip\",\n \"run_once\",\n ] as const);\n const stopPolicy =\n body.stopPolicy === undefined\n ? undefined\n : parseStopPolicy(body.stopPolicy);\n const createdBy = optionalEnum(body, \"createdBy\", [\"user\", \"agent\"] as const);\n const createdFromSessionId = optionalString(body, \"createdFromSessionId\");\n return {\n ...(id !== undefined ? { id } : {}),\n ...(name !== undefined ? { name } : {}),\n ...(description !== undefined ? { description } : {}),\n ...(prompt !== undefined ? { prompt } : {}),\n ...(recurrence !== undefined ? { recurrence } : {}),\n ...(recurrenceFormat !== undefined ? { recurrenceFormat } : {}),\n ...(timezone !== undefined ? { timezone } : {}),\n ...(status !== undefined ? { status } : {}),\n ...(destination !== undefined ? { destination } : {}),\n ...(sessionId !== undefined ? { sessionId } : {}),\n ...(projectPaths !== undefined ? { projectPaths } : {}),\n ...(executionMode !== undefined ? { executionMode } : {}),\n ...(model !== undefined ? { model } : {}),\n ...(effort !== undefined ? { effort } : {}),\n ...(skillNames !== undefined ? { skillNames } : {}),\n ...(pluginNames !== undefined ? { pluginNames } : {}),\n ...(permissionProfile !== undefined ? { permissionProfile } : {}),\n ...(overlapPolicy !== undefined ? { overlapPolicy } : {}),\n ...(missedRunPolicy !== undefined ? { missedRunPolicy } : {}),\n ...(stopPolicy !== undefined ? { stopPolicy } : {}),\n ...(createdBy !== undefined ? { createdBy } : {}),\n ...(createdFromSessionId !== undefined ? { createdFromSessionId } : {}),\n };\n}\n\nexport function parseCreateScheduledTaskRequest(\n value: unknown,\n): CreateScheduledTaskInput {\n const body = record(value);\n const parsed = parseScheduleFields(body);\n const nextRunAt = optionalNumber(body, \"nextRunAt\");\n return {\n ...parsed,\n name: requiredString(body, \"name\"),\n prompt: requiredString(body, \"prompt\"),\n recurrence: requiredString(body, \"recurrence\"),\n recurrenceFormat: requiredEnum(body, \"recurrenceFormat\", [\n \"rrule\",\n \"once\",\n ] as const),\n timezone: requiredString(body, \"timezone\"),\n destination: requiredEnum(body, \"destination\", [\n \"standalone\",\n \"chat\",\n ] as const),\n ...(nextRunAt !== undefined ? { nextRunAt: nextRunAt as number } : {}),\n };\n}\n\nexport function parseUpdateScheduledTaskRequest(\n value: unknown,\n): UpdateScheduledTaskInput {\n const body = record(value);\n if (\"id\" in body) {\n throw new ProtocolValidationError(\"id cannot be changed\", \"id\");\n }\n const parsed = parseScheduleFields(body);\n const lastRunAt = optionalNumber(body, \"lastRunAt\", { nullable: true });\n const nextRunAt = optionalNumber(body, \"nextRunAt\", { nullable: true });\n const runCount = optionalNumber(body, \"runCount\", {\n integer: true,\n minimum: 0,\n });\n const { id: _id, ...patch } = parsed;\n return {\n ...patch,\n ...(lastRunAt !== undefined\n ? { lastRunAt: lastRunAt as number | null }\n : {}),\n ...(nextRunAt !== undefined\n ? { nextRunAt: nextRunAt as number | null }\n : {}),\n ...(runCount !== undefined ? { runCount: runCount as number } : {}),\n };\n}\n",
12
12
  "export type AttachmentAssetStatus =\n | \"importing\"\n | \"ready\"\n | \"failed\"\n | \"deleted\";\n\nexport type AttachmentIntent =\n | \"auto\"\n | \"vision\"\n | \"ocr\"\n | \"document\"\n | \"tool_resource\"\n | \"workspace_reference\";\n\nexport type AttachmentRepresentationStatus =\n | \"pending\"\n | \"running\"\n | \"completed\"\n | \"failed\";\n\nexport type AttachmentRepresentationKind =\n | \"thumbnail\"\n | \"ocr_text\"\n | \"plain_text\"\n | \"pdf_text\"\n | \"pdf_page_image\"\n | \"archive_manifest\"\n | \"directory_manifest\";\n\n/** 持久资源来自哪个聊天;临时聊天消失后仍保留这些来源信息。 */\nexport interface ChatResourceSource {\n storage: \"memory\" | \"sqlite\";\n sessionId: string;\n sourceSessionId?: string;\n inputId?: string;\n runId?: string;\n}\n\nexport interface AttachmentAssetRecord {\n id: string;\n displayName: string;\n declaredMediaType?: string;\n mediaType?: string;\n sizeBytes?: number;\n sha256?: string;\n status: AttachmentAssetStatus;\n failureCode?: string;\n createdAt: number;\n updatedAt: number;\n deletedAt?: number;\n chatSources?: ChatResourceSource[];\n}\n\nexport interface SessionInputAttachmentRecord {\n id: string;\n sessionId: string;\n inputId: string;\n assetId: string;\n seq: number;\n intent: AttachmentIntent;\n displayName: string;\n mediaType: string;\n sizeBytes: number;\n metadata: Record<string, unknown>;\n createdAt: number;\n}\n\nexport interface AttachmentRepresentationRecord {\n id: string;\n assetId: string;\n kind: AttachmentRepresentationKind;\n status: AttachmentRepresentationStatus;\n processor: string;\n processorVersion: string;\n cacheKey: string;\n mediaType: string;\n text?: string;\n error?: string;\n metadata: Record<string, unknown>;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface AttachmentLimits {\n maxFilesPerPrompt: number;\n maxBytesPerFile: number;\n maxBytesPerPrompt: number;\n maxSessionReferencedBytes: number;\n resumableThresholdBytes: number;\n uploadSessionTtlMs: number;\n stagingTtlMs: number;\n}\n\nexport const DEFAULT_ATTACHMENT_LIMITS: Readonly<AttachmentLimits> = {\n maxFilesPerPrompt: 20,\n maxBytesPerFile: 100 * 1024 * 1024,\n maxBytesPerPrompt: 250 * 1024 * 1024,\n maxSessionReferencedBytes: 2 * 1024 * 1024 * 1024,\n resumableThresholdBytes: 25 * 1024 * 1024,\n uploadSessionTtlMs: 24 * 60 * 60 * 1_000,\n stagingTtlMs: 24 * 60 * 60 * 1_000,\n};\n\nexport function parseAttachmentLimits(value: unknown): AttachmentLimits {\n const record = recordValue(value, \"attachment limits\");\n const limits: AttachmentLimits = {\n maxFilesPerPrompt: positiveInteger(\n record.maxFilesPerPrompt,\n \"maxFilesPerPrompt\",\n ),\n maxBytesPerFile: positiveInteger(record.maxBytesPerFile, \"maxBytesPerFile\"),\n maxBytesPerPrompt: positiveInteger(\n record.maxBytesPerPrompt,\n \"maxBytesPerPrompt\",\n ),\n maxSessionReferencedBytes: positiveInteger(\n record.maxSessionReferencedBytes,\n \"maxSessionReferencedBytes\",\n ),\n resumableThresholdBytes: positiveInteger(\n record.resumableThresholdBytes,\n \"resumableThresholdBytes\",\n ),\n uploadSessionTtlMs: positiveInteger(\n record.uploadSessionTtlMs,\n \"uploadSessionTtlMs\",\n ),\n stagingTtlMs: positiveInteger(record.stagingTtlMs, \"stagingTtlMs\"),\n };\n if (limits.resumableThresholdBytes > limits.maxBytesPerFile) {\n throw new Error(\"resumableThresholdBytes must not exceed maxBytesPerFile\");\n }\n if (limits.maxBytesPerFile > limits.maxBytesPerPrompt) {\n throw new Error(\"maxBytesPerFile must not exceed maxBytesPerPrompt\");\n }\n if (limits.maxBytesPerPrompt > limits.maxSessionReferencedBytes) {\n throw new Error(\n \"maxBytesPerPrompt must not exceed maxSessionReferencedBytes\",\n );\n }\n return limits;\n}\n\nexport function parseAttachmentAssetRecord(\n value: unknown,\n): AttachmentAssetRecord {\n const record = recordValue(value, \"attachment asset\");\n const status = enumValue(\n record.status,\n [\"importing\", \"ready\", \"failed\", \"deleted\"] as const,\n \"status\",\n );\n const asset: AttachmentAssetRecord = {\n id: nonEmptyString(record.id, \"id\"),\n displayName: nonEmptyString(record.displayName, \"displayName\"),\n status,\n createdAt: nonNegativeInteger(record.createdAt, \"createdAt\"),\n updatedAt: nonNegativeInteger(record.updatedAt, \"updatedAt\"),\n };\n\n const declaredMediaType = optionalNonEmptyString(\n record.declaredMediaType,\n \"declaredMediaType\",\n );\n const mediaType = optionalNonEmptyString(record.mediaType, \"mediaType\");\n const sizeBytes = optionalNonNegativeInteger(record.sizeBytes, \"sizeBytes\");\n const sha256 = optionalSha256(record.sha256);\n const failureCode = optionalNonEmptyString(record.failureCode, \"failureCode\");\n const deletedAt = optionalNonNegativeInteger(record.deletedAt, \"deletedAt\");\n\n if (declaredMediaType !== undefined) asset.declaredMediaType = declaredMediaType;\n if (mediaType !== undefined) asset.mediaType = mediaType;\n if (sizeBytes !== undefined) asset.sizeBytes = sizeBytes;\n if (sha256 !== undefined) asset.sha256 = sha256;\n if (failureCode !== undefined) asset.failureCode = failureCode;\n if (deletedAt !== undefined) asset.deletedAt = deletedAt;\n if (record.chatSources !== undefined) {\n if (!Array.isArray(record.chatSources)) throw new Error(\"chatSources must be an array\");\n asset.chatSources = record.chatSources.map(parseChatResourceSource);\n }\n\n if (status === \"ready\" || status === \"deleted\") {\n if (asset.mediaType === undefined) throw new Error(\"mediaType is required\");\n if (asset.sizeBytes === undefined) throw new Error(\"sizeBytes is required\");\n if (asset.sha256 === undefined) throw new Error(\"sha256 is required\");\n }\n if (status === \"failed\" && asset.failureCode === undefined) {\n throw new Error(\"failureCode is required\");\n }\n if (status === \"deleted\" && asset.deletedAt === undefined) {\n throw new Error(\"deletedAt is required\");\n }\n return asset;\n}\n\nexport function parseChatResourceSource(value: unknown): ChatResourceSource {\n const record = recordValue(value, \"chat resource source\");\n const source: ChatResourceSource = {\n storage: enumValue(record.storage, [\"memory\", \"sqlite\"] as const, \"storage\"),\n sessionId: nonEmptyString(record.sessionId, \"sessionId\"),\n };\n for (const field of [\"sourceSessionId\", \"inputId\", \"runId\"] as const) {\n const id = optionalNonEmptyString(record[field], field);\n if (id !== undefined) source[field] = id;\n }\n return source;\n}\n\nfunction recordValue(value: unknown, field: string): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(`${field} must be an object`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction positiveInteger(value: unknown, field: string): number {\n if (!Number.isSafeInteger(value) || Number(value) < 1) {\n throw new Error(`${field} must be a positive safe integer`);\n }\n return Number(value);\n}\n\nfunction nonNegativeInteger(value: unknown, field: string): number {\n if (!Number.isSafeInteger(value) || Number(value) < 0) {\n throw new Error(`${field} must be a non-negative safe integer`);\n }\n return Number(value);\n}\n\nfunction optionalNonNegativeInteger(\n value: unknown,\n field: string,\n): number | undefined {\n return value === undefined ? undefined : nonNegativeInteger(value, field);\n}\n\nfunction nonEmptyString(value: unknown, field: string): string {\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`${field} must be a non-empty string`);\n }\n return value;\n}\n\nfunction optionalNonEmptyString(\n value: unknown,\n field: string,\n): string | undefined {\n return value === undefined ? undefined : nonEmptyString(value, field);\n}\n\nfunction optionalSha256(value: unknown): string | undefined {\n if (value === undefined) return undefined;\n if (typeof value !== \"string\" || !/^[a-f0-9]{64}$/.test(value)) {\n throw new Error(\"sha256 must be 64 lowercase hexadecimal characters\");\n }\n return value;\n}\n\nfunction enumValue<const T extends readonly string[]>(\n value: unknown,\n allowed: T,\n field: string,\n): T[number] {\n if (typeof value !== \"string\" || !allowed.includes(value)) {\n throw new Error(`${field} must be one of: ${allowed.join(\", \")}`);\n }\n return value as T[number];\n}\n",
13
13
  "import { parseAttachmentLimits, type AttachmentLimits } from \"./attachment.js\";\n\nexport const CURRENT_PROTOCOL_VERSION = 5;\nexport const PROTOCOL_VERSION_HEADER = \"x-vykor-protocol-version\";\n\nexport interface ProtocolVersion {\n version: number;\n}\n\nexport interface ServerCapabilities {\n serverVersion: string;\n protocol: ProtocolVersion;\n features: Record<string, number>;\n attachments?: AttachmentTransferCapabilities;\n agentEnvironments?: AgentEnvironmentCapabilities;\n /**\n * Present when this daemon instance serves the MCP OAuth operation API.\n * The random `instanceId` changes on every daemon start so a client can\n * detect a restart and refuse to replay an operation from an old instance.\n */\n mcpOAuth?: McpOAuthCapabilities;\n}\n\nexport interface McpOAuthCapabilities {\n instanceId: string;\n}\n\nexport interface AgentEnvironmentCapabilities {\n native: true;\n wsl: boolean;\n activeDefault?: { kind: \"native\" | \"wsl\"; distribution?: string; fingerprint: string };\n}\n\nexport type AttachmentUploadMode = \"single\" | \"resumable\";\n\nexport interface AttachmentTransferCapabilities {\n limits: AttachmentLimits;\n uploadModes: readonly [\"single\"] | readonly [\"single\", \"resumable\"];\n}\n\nexport interface ClientProtocolSupport {\n version: number;\n}\n\nexport interface ProtocolCompatibility {\n compatible: boolean;\n reason?: string;\n}\n\nexport function parseServerCapabilities(value: unknown): ServerCapabilities {\n if (!isRecord(value))\n throw new Error(\"Capabilities response must be an object\");\n if (typeof value.serverVersion !== \"string\")\n throw new Error(\"serverVersion must be a string\");\n if (!isRecord(value.protocol)) throw new Error(\"protocol must be an object\");\n const version = positiveInteger(value.protocol.version, \"protocol.version\");\n if (!isRecord(value.features)) throw new Error(\"features must be an object\");\n const features: Record<string, number> = {};\n for (const [name, version] of Object.entries(value.features)) {\n features[name] = positiveInteger(version, `features.${name}`);\n }\n const attachments = parseAttachmentTransferCapabilities(value.attachments);\n const agentEnvironments = parseAgentEnvironmentCapabilities(\n value.agentEnvironments,\n );\n const mcpOAuth = parseMcpOAuthCapabilities(value.mcpOAuth);\n return {\n serverVersion: value.serverVersion,\n protocol: { version },\n features,\n ...(attachments ? { attachments } : {}),\n ...(agentEnvironments ? { agentEnvironments } : {}),\n ...(mcpOAuth ? { mcpOAuth } : {}),\n };\n}\n\nfunction parseMcpOAuthCapabilities(\n value: unknown,\n): McpOAuthCapabilities | undefined {\n if (value === undefined) return undefined;\n if (\n !isRecord(value) ||\n typeof value.instanceId !== \"string\" ||\n value.instanceId.length === 0 ||\n value.instanceId.length > 200\n ) {\n throw new Error(\"mcpOAuth.instanceId must be a bounded non-empty string\");\n }\n return { instanceId: value.instanceId };\n}\n\nfunction parseAgentEnvironmentCapabilities(\n value: unknown,\n): AgentEnvironmentCapabilities | undefined {\n if (value === undefined) return undefined;\n if (\n !isRecord(value) ||\n value.native !== true ||\n typeof value.wsl !== \"boolean\"\n ) {\n throw new Error(\n \"agentEnvironments must contain native=true and a boolean wsl value\",\n );\n }\n const active = value.activeDefault;\n if (active !== undefined && (!isRecord(active) || (active.kind !== \"native\" && active.kind !== \"wsl\") || typeof active.fingerprint !== \"string\" || (active.distribution !== undefined && typeof active.distribution !== \"string\"))) throw new Error(\"agentEnvironments.activeDefault is invalid\");\n return { native: true, wsl: value.wsl, ...(active ? { activeDefault: active as unknown as NonNullable<AgentEnvironmentCapabilities[\"activeDefault\"]> } : {}) };\n}\n\nexport function checkProtocolCompatibility(\n server: ServerCapabilities,\n client: ClientProtocolSupport,\n): ProtocolCompatibility {\n if (client.version !== server.protocol.version) {\n return {\n compatible: false,\n reason: `Client protocol ${client.version} does not match server protocol ${server.protocol.version}`,\n };\n }\n return { compatible: true };\n}\n\nexport function supportsFeature(\n capabilities: ServerCapabilities,\n feature: string,\n minimumVersion = 1,\n): boolean {\n return (capabilities.features[feature] ?? 0) >= minimumVersion;\n}\n\nfunction positiveInteger(value: unknown, field: string): number {\n if (!Number.isInteger(value) || Number(value) < 1)\n throw new Error(`${field} must be a positive integer`);\n return Number(value);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseAttachmentTransferCapabilities(\n value: unknown,\n): AttachmentTransferCapabilities | undefined {\n if (value === undefined) return undefined;\n if (!isRecord(value)) throw new Error(\"attachments must be an object\");\n if (!Array.isArray(value.uploadModes) || value.uploadModes.length === 0) {\n throw new Error(\"attachments.uploadModes must be a non-empty array\");\n }\n if (\n value.uploadModes[0] !== \"single\" ||\n value.uploadModes.length > 2 ||\n (value.uploadModes.length === 2 && value.uploadModes[1] !== \"resumable\")\n ) {\n throw new Error(\n 'attachments.uploadModes must be [\"single\"] or [\"single\", \"resumable\"]',\n );\n }\n const uploadModes = value.uploadModes as [\"single\"] | [\"single\", \"resumable\"];\n return {\n limits: parseAttachmentLimits(value.limits),\n uploadModes,\n };\n}\n",
14
- "import type { AdmitPromptAttachmentInput } from \"./session.js\";\nimport type { SessionUserInputItem } from \"./session-input-items.js\";\nimport { parsePromptAttachments, parseSessionInputItems, ProtocolValidationError } from \"./requests.js\";\n\nexport type GoalStatus = \"active\" | \"waiting_user\" | \"blocked\" | \"paused\" | \"completed\" | \"cancelled\";\n\nexport type GoalAction = \"pause\" | \"resume\" | \"cancel\" | \"confirm\";\n\nexport type GoalWait =\n | {\n kind: \"user\";\n questionId: string;\n question: string;\n replyInputId?: string;\n }\n | { kind: \"approval\"; permissionRequestId: string }\n | { kind: \"external\"; handleId: string; runId: string; deadlineAt: number };\n\nexport interface GoalEvidenceRef {\n goalId: string;\n revision: number;\n runId: string;\n messagePartId: string;\n criterion: string;\n}\n\nexport interface GoalRequirementAssessment {\n requirement: string;\n source: string;\n status: \"satisfied\" | \"incomplete\" | \"needs_user\";\n evidenceRefs: GoalEvidenceRef[];\n}\n\nexport interface GoalProgressAssessment {\n kind: \"progress\" | \"waiting\" | \"no_progress\";\n summary: string;\n blockerKey?: string;\n}\n\nexport interface SessionGoal {\n id: string;\n sessionId: string;\n objective: string;\n pluginId?: string;\n revision: number;\n status: GoalStatus;\n maxAutoTurns: number;\n autoTurnsUsed: number;\n noProgressCount: number;\n blockerKey?: string;\n currentRunId?: string;\n reason?: string;\n wait?: GoalWait;\n evidence: string[];\n assessment?: GoalAssessment;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface CreateSessionGoalInput {\n requestId: string;\n objective: string;\n maxAutoTurns?: number;\n items?: SessionUserInputItem[];\n attachments?: AdmitPromptAttachmentInput[];\n}\n\nexport interface UpdateSessionGoalInput {\n requestId: string;\n expectedRevision: number;\n objective: string;\n items?: SessionUserInputItem[];\n attachments?: AdmitPromptAttachmentInput[];\n}\n\nexport interface GoalActionInput {\n requestId: string;\n expectedRevision: number;\n action: GoalAction;\n additionalAutoTurns?: number;\n questionId?: string;\n response?: string;\n}\n\nexport interface GoalAssessment {\n goalId: string;\n revision: number;\n runId: string;\n decision: \"continue\" | \"complete\" | \"waiting_user\" | \"blocked\";\n progress: string;\n progressAssessment: GoalProgressAssessment;\n evidence: string[];\n evidenceRefs: GoalEvidenceRef[];\n requirements?: GoalRequirementAssessment[];\n remainingWork?: string[];\n nextStep?: string;\n reason?: string;\n wait?: GoalWait;\n}\n\nexport const DEFAULT_GOAL_AUTO_TURNS = 20;\nexport const MAX_GOAL_AUTO_TURNS = 1_000;\nexport const MAX_GOAL_OBJECTIVE_CHARS = 32_000;\n\nexport function parseCreateSessionGoalInput(value: unknown): CreateSessionGoalInput {\n const record = goalRecord(value);\n return {\n requestId: requiredGoalString(record.requestId, \"requestId\", 128),\n objective: requiredGoalString(record.objective, \"objective\", MAX_GOAL_OBJECTIVE_CHARS),\n ...(record.maxAutoTurns === undefined\n ? {}\n : {\n maxAutoTurns: goalPositiveInteger(record.maxAutoTurns, \"maxAutoTurns\"),\n }),\n ...parseGoalContent(record),\n };\n}\n\nexport function parseUpdateSessionGoalInput(value: unknown): UpdateSessionGoalInput {\n const record = goalRecord(value);\n return {\n requestId: requiredGoalString(record.requestId, \"requestId\", 128),\n expectedRevision: goalNonNegativeInteger(record.expectedRevision, \"expectedRevision\"),\n objective: requiredGoalString(record.objective, \"objective\", MAX_GOAL_OBJECTIVE_CHARS),\n ...parseGoalContent(record),\n };\n}\n\nexport function parseGoalActionInput(value: unknown): GoalActionInput {\n const record = goalRecord(value);\n if (record.action !== \"pause\" && record.action !== \"resume\" && record.action !== \"cancel\" && record.action !== \"confirm\") {\n throw new ProtocolValidationError(\"invalid_goal_action\", \"action\");\n }\n if (record.action !== \"resume\" && (record.additionalAutoTurns !== undefined || record.response !== undefined)) {\n throw new ProtocolValidationError(\"Only resume accepts additionalAutoTurns or response\", \"action\");\n }\n if (record.action === \"confirm\") requiredGoalString(record.questionId, \"questionId\", 256);\n if ((record.action === \"pause\" || record.action === \"cancel\") && record.questionId !== undefined) {\n throw new ProtocolValidationError(\"This action does not answer a question\", \"questionId\");\n }\n return {\n requestId: requiredGoalString(record.requestId, \"requestId\", 128),\n expectedRevision: goalNonNegativeInteger(record.expectedRevision, \"expectedRevision\"),\n action: record.action,\n ...(record.questionId === undefined\n ? {}\n : {\n questionId: requiredGoalString(record.questionId, \"questionId\", 256),\n }),\n ...(record.response === undefined\n ? {}\n : {\n response: requiredGoalString(record.response, \"response\", MAX_GOAL_OBJECTIVE_CHARS),\n }),\n ...(record.additionalAutoTurns === undefined\n ? {}\n : {\n additionalAutoTurns: goalPositiveInteger(record.additionalAutoTurns, \"additionalAutoTurns\"),\n }),\n };\n}\n\nfunction goalRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) throw new ProtocolValidationError(\"invalid_goal_input\", \"goal\");\n return value as Record<string, unknown>;\n}\n\nfunction requiredGoalString(value: unknown, field: string, max: number): string {\n if (typeof value !== \"string\" || !value.trim() || /[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F]/.test(value)) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n const normalized = value.trim();\n if (normalized.length > max) throw new ProtocolValidationError(`goal_${field}_limit_exceeded`, field);\n return normalized;\n}\n\nfunction goalNonNegativeInteger(value: unknown, field: string): number {\n if (!Number.isSafeInteger(value) || (value as number) < 0) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n return value as number;\n}\n\nfunction goalPositiveInteger(value: unknown, field: string): number {\n const integer = goalNonNegativeInteger(value, field);\n if (integer < 1 || integer > MAX_GOAL_AUTO_TURNS) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n return integer;\n}\nfunction parseGoalContent(record: Record<string, unknown>): Pick<CreateSessionGoalInput, \"items\" | \"attachments\"> {\n return {\n ...(record.items === undefined ? {} : { items: parseSessionInputItems(record.items) }),\n ...(record.attachments === undefined ? {} : { attachments: parsePromptAttachments(record.attachments) }),\n };\n}\n\n/** The caller supplies the trusted run identity; model input never sets it. */\nexport function parseGoalAssessment(value: unknown, binding: Pick<GoalAssessment, \"goalId\" | \"revision\" | \"runId\">): GoalAssessment {\n const record = goalRecord(value);\n const decision = record.decision;\n if (decision !== \"continue\" && decision !== \"complete\" && decision !== \"waiting_user\" && decision !== \"blocked\") {\n throw new ProtocolValidationError(\"invalid_goal_decision\", \"decision\");\n }\n if (!Array.isArray(record.evidence) || record.evidence.length > 32) throw new ProtocolValidationError(\"invalid_goal_evidence\", \"evidence\");\n const refs = record.evidenceRefs ?? [];\n if (!Array.isArray(refs) || refs.length > 32) throw new ProtocolValidationError(\"invalid_goal_evidence_refs\", \"evidenceRefs\");\n const savedWait = record.wait && typeof record.wait === \"object\" && !Array.isArray(record.wait) ? (record.wait as Record<string, unknown>) : undefined;\n const questionValue = record.question ?? (savedWait?.kind === \"user\" ? savedWait.question : undefined);\n const question = questionValue === undefined ? undefined : requiredGoalString(questionValue, \"question\", 4000);\n const progressAssessment = parseGoalProgressAssessment(record.progressAssessment);\n if ((decision === \"blocked\" || progressAssessment.kind === \"no_progress\") && !progressAssessment.blockerKey) {\n throw new ProtocolValidationError(\"goal_no_progress_requires_blocker_key\", \"progressAssessment\");\n }\n const requirements = parseGoalRequirements(record.requirements, binding);\n const remainingWork = parseGoalTextArray(record.remainingWork, \"remainingWork\");\n if (decision === \"complete\") {\n if (!requirements?.length) throw new ProtocolValidationError(\"goal_complete_requires_requirements\", \"requirements\");\n }\n const externalWait =\n progressAssessment.kind === \"waiting\" && savedWait?.kind === \"external\"\n ? {\n kind: \"external\" as const,\n handleId: requiredGoalString(savedWait.handleId, \"handleId\", 256),\n runId: binding.runId,\n deadlineAt: goalPositiveTimestamp(savedWait.deadlineAt, \"deadlineAt\"),\n }\n : undefined;\n return {\n ...binding,\n decision,\n progress: requiredGoalString(record.progress, \"progress\", 4000),\n progressAssessment,\n evidence: record.evidence.map((text) => requiredGoalString(text, \"evidence\", 4000)),\n evidenceRefs: refs.map((value) => {\n const ref = goalRecord(value);\n return {\n ...binding,\n messagePartId: requiredGoalString(ref.messagePartId, \"messagePartId\", 256),\n criterion: requiredGoalString(ref.criterion, \"criterion\", 4000),\n };\n }),\n ...(requirements === undefined ? {} : { requirements }),\n ...(remainingWork === undefined ? {} : { remainingWork }),\n ...(record.nextStep === undefined ? {} : { nextStep: requiredGoalString(record.nextStep, \"nextStep\", 4000) }),\n ...(record.reason === undefined ? {} : { reason: requiredGoalString(record.reason, \"reason\", 4000) }),\n ...(externalWait ? { wait: externalWait } : {}),\n ...(decision === \"waiting_user\"\n ? {\n wait: {\n kind: \"user\" as const,\n questionId: `goal-question-${binding.runId}`,\n question: question ?? \"请补充继续目标所需的信息。\",\n },\n }\n : {}),\n };\n}\n\nfunction goalPositiveTimestamp(value: unknown, field: string): number {\n if (!Number.isSafeInteger(value) || (value as number) <= 0) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n return value as number;\n}\n\nfunction parseGoalProgressAssessment(value: unknown): GoalProgressAssessment {\n const record = goalRecord(value);\n if (record.kind !== \"progress\" && record.kind !== \"waiting\" && record.kind !== \"no_progress\") {\n throw new ProtocolValidationError(\"invalid_goal_progress_kind\", \"progressAssessment\");\n }\n return {\n kind: record.kind,\n summary: requiredGoalString(record.summary, \"progressSummary\", 4000),\n ...(record.blockerKey === undefined\n ? {}\n : {\n blockerKey: requiredGoalString(record.blockerKey, \"blockerKey\", 256),\n }),\n };\n}\n\nfunction parseGoalTextArray(value: unknown, field: string): string[] | undefined {\n if (value === undefined) return undefined;\n if (!Array.isArray(value) || value.length > 64) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n return value.map((item) => requiredGoalString(item, field, 4000));\n}\n\nfunction parseGoalRequirements(value: unknown, binding: Pick<GoalAssessment, \"goalId\" | \"revision\" | \"runId\">): GoalRequirementAssessment[] | undefined {\n if (value === undefined) return undefined;\n if (!Array.isArray(value) || value.length > 64) throw new ProtocolValidationError(\"invalid_goal_requirements\", \"requirements\");\n return value.map((item) => {\n const record = goalRecord(item);\n if (record.status !== \"satisfied\" && record.status !== \"incomplete\" && record.status !== \"needs_user\") {\n throw new ProtocolValidationError(\"invalid_goal_requirement_status\", \"requirements\");\n }\n const rawRefs = record.evidenceRefs ?? [];\n if (!Array.isArray(rawRefs) || rawRefs.length > 32) throw new ProtocolValidationError(\"invalid_goal_requirement_evidence_refs\", \"requirements\");\n return {\n requirement: requiredGoalString(record.requirement, \"requirement\", 4000),\n source: requiredGoalString(record.source, \"source\", 4000),\n status: record.status,\n evidenceRefs: rawRefs.map((value) => {\n const ref = goalRecord(value);\n return {\n ...binding,\n messagePartId: requiredGoalString(ref.messagePartId, \"messagePartId\", 256),\n criterion: requiredGoalString(ref.criterion, \"criterion\", 4000),\n };\n }),\n };\n });\n}\n",
14
+ "import type { AdmitPromptAttachmentInput } from \"./session.js\";\nimport type { SessionUserInputItem } from \"./session-input-items.js\";\nimport { parsePromptAttachments, parseSessionInputItems, ProtocolValidationError } from \"./requests.js\";\n\nexport type GoalStatus = \"active\" | \"waiting_user\" | \"blocked\" | \"paused\" | \"completed\" | \"cancelled\";\nexport type GoalUserActor = { kind: \"local_user\" } | { kind: \"authenticated_user\"; id: string };\nexport interface GoalVersion {\n goalId: string;\n objectiveVersion: number;\n previousVersion?: number;\n objective: string;\n requestId: string;\n actor: GoalUserActor;\n createdAt: number;\n}\n\nexport type GoalAction = \"pause\" | \"resume\" | \"cancel\" | \"budget\";\n\nexport interface GoalUsage {\n knownTokens: number;\n incomplete: boolean;\n unknownAttempts: number;\n partialAttempts: number;\n inFlightAttempts: number;\n runTimeMs: number;\n seq: number;\n updatedAt: number;\n}\n\nexport interface GoalModelAttemptKey {\n runId: string;\n generationId: string;\n attempt: number;\n}\n\nexport interface GoalStopReason {\n code: \"user_paused\" | \"user_cancelled\" | \"updating_objective\" | \"auto_turn_limit\"\n | \"run_error\" | \"wait_invalid\" | \"wait_timeout\"\n | \"external_failed\" | \"no_progress\" | \"startup_recovery\" | \"token_budget\"\n | \"usage_unknown\" | \"provider_limit\";\n at: number;\n runId?: string;\n detail?: string;\n}\n\nexport interface GoalExternalWait {\n kind: \"external\";\n targetRunId: string;\n ownerRunId: string;\n goalId: string;\n objectiveVersion: number;\n deadlineAt: number;\n observedStatus?: \"pending\" | \"running\" | \"completed\" | \"failed\" | \"interrupted\";\n}\n\nexport type GoalWait =\n | {\n kind: \"user\";\n questionId: string;\n question: string;\n objectiveVersion: number;\n replyInputId?: string;\n }\n | { kind: \"approval\"; permissionRequestId: string }\n | GoalExternalWait;\n\nexport interface SessionGoal {\n id: string;\n sessionId: string;\n objective: string;\n objectiveVersion: number;\n pluginId?: string;\n revision: number;\n status: GoalStatus;\n maxAutoTurns: number;\n tokenBudget?: number;\n usage: GoalUsage;\n autoTurnsUsed: number;\n currentRunId?: string;\n reason?: string;\n stopReason?: GoalStopReason;\n wait?: GoalWait;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface CreateSessionGoalInput {\n requestId: string;\n objective: string;\n maxAutoTurns?: number;\n tokenBudget?: number;\n items?: SessionUserInputItem[];\n attachments?: AdmitPromptAttachmentInput[];\n}\n\nexport interface UpdateSessionGoalInput {\n requestId: string;\n expectedRevision: number;\n objective: string;\n items?: SessionUserInputItem[];\n attachments?: AdmitPromptAttachmentInput[];\n}\n\nexport interface GoalActionInput {\n requestId: string;\n expectedRevision: number;\n action: GoalAction;\n tokenBudget?: number | null;\n additionalAutoTurns?: number;\n questionId?: string;\n response?: string;\n objectiveVersion?: number;\n}\n\nexport type GoalUpdateInput =\n | { status: \"completed\" | \"blocked\" | \"paused\"; reason: string }\n | { question: string }\n | { wait: { targetRunId: string; deadlineAt: number } };\n\n/** Zero means no automatic-turn limit. */\nexport const DEFAULT_GOAL_AUTO_TURNS = 0;\nexport const MAX_GOAL_AUTO_TURNS = 1_000;\nexport const MAX_GOAL_OBJECTIVE_CHARS = 32_000;\n\nexport function parseCreateSessionGoalInput(value: unknown): CreateSessionGoalInput {\n const record = goalRecord(value);\n assertGoalFields(record, [\"requestId\", \"objective\", \"maxAutoTurns\", \"tokenBudget\", \"items\", \"attachments\"]);\n return {\n requestId: requiredGoalString(record.requestId, \"requestId\", 128),\n objective: requiredGoalString(record.objective, \"objective\", MAX_GOAL_OBJECTIVE_CHARS),\n ...(record.tokenBudget === undefined ? {} : { tokenBudget: goalPositiveTimestamp(record.tokenBudget, \"tokenBudget\") }),\n ...(record.maxAutoTurns === undefined\n ? {}\n : {\n maxAutoTurns: goalPositiveInteger(record.maxAutoTurns, \"maxAutoTurns\", true),\n }),\n ...parseGoalContent(record),\n };\n}\n\nexport function parseUpdateSessionGoalInput(value: unknown): UpdateSessionGoalInput {\n const record = goalRecord(value);\n assertGoalFields(record, [\"requestId\", \"expectedRevision\", \"objective\", \"items\", \"attachments\"]);\n return {\n requestId: requiredGoalString(record.requestId, \"requestId\", 128),\n expectedRevision: goalNonNegativeInteger(record.expectedRevision, \"expectedRevision\"),\n objective: requiredGoalString(record.objective, \"objective\", MAX_GOAL_OBJECTIVE_CHARS),\n ...parseGoalContent(record),\n };\n}\n\nexport function parseGoalActionInput(value: unknown): GoalActionInput {\n const record = goalRecord(value);\n if (record.action !== \"pause\" && record.action !== \"resume\" && record.action !== \"cancel\" && record.action !== \"budget\") {\n throw new ProtocolValidationError(\"invalid_goal_action\", \"action\");\n }\n const common = {\n requestId: requiredGoalString(record.requestId, \"requestId\", 128),\n expectedRevision: goalNonNegativeInteger(record.expectedRevision, \"expectedRevision\"),\n };\n if (record.action === \"budget\") {\n assertGoalFields(record, [\"requestId\", \"expectedRevision\", \"action\", \"tokenBudget\"]);\n return { ...common, action: \"budget\", tokenBudget: record.tokenBudget === null ? null : goalPositiveTimestamp(record.tokenBudget, \"tokenBudget\") };\n }\n assertGoalFields(record, record.action === \"resume\"\n ? [\"requestId\", \"expectedRevision\", \"action\", \"additionalAutoTurns\", \"questionId\", \"response\", \"objectiveVersion\"]\n : [\"requestId\", \"expectedRevision\", \"action\"]);\n if (record.questionId !== undefined) goalPositiveTimestamp(record.objectiveVersion, \"objectiveVersion\");\n else if (record.objectiveVersion !== undefined) throw new ProtocolValidationError(\"goal_version_requires_answer\", \"objectiveVersion\");\n return {\n ...common, action: record.action,\n ...(record.questionId === undefined ? {} : { questionId: requiredGoalString(record.questionId, \"questionId\", 256), objectiveVersion: goalPositiveTimestamp(record.objectiveVersion, \"objectiveVersion\") }),\n ...(record.response === undefined ? {} : { response: requiredGoalString(record.response, \"response\", MAX_GOAL_OBJECTIVE_CHARS) }),\n ...(record.additionalAutoTurns === undefined ? {} : { additionalAutoTurns: goalPositiveInteger(record.additionalAutoTurns, \"additionalAutoTurns\") }),\n };\n}\n\n/** The host supplies all Goal and submitting Run identity. */\nexport function parseGoalUpdateInput(value: unknown): GoalUpdateInput {\n const record = goalRecord(value);\n if (Object.hasOwn(record, \"status\")) {\n assertGoalFields(record, [\"status\", \"reason\"]);\n if (record.status !== \"completed\" && record.status !== \"blocked\" && record.status !== \"paused\") throw new ProtocolValidationError(\"invalid_goal_status\", \"status\");\n return { status: record.status, reason: requiredGoalString(record.reason, \"reason\", 4000) };\n }\n if (Object.hasOwn(record, \"question\")) {\n assertGoalFields(record, [\"question\"]);\n return { question: requiredGoalString(record.question, \"question\", 4000) };\n }\n assertGoalFields(record, [\"wait\"]);\n const wait = goalRecord(record.wait);\n assertGoalFields(wait, [\"targetRunId\", \"deadlineAt\"]);\n return { wait: { targetRunId: requiredGoalString(wait.targetRunId, \"targetRunId\", 256), deadlineAt: goalPositiveTimestamp(wait.deadlineAt, \"deadlineAt\") } };\n}\n\nfunction assertGoalFields(record: Record<string, unknown>, fields: string[]): void {\n for (const field of Object.keys(record)) if (!fields.includes(field)) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n}\n\nfunction goalRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) throw new ProtocolValidationError(\"invalid_goal_input\", \"goal\");\n return value as Record<string, unknown>;\n}\n\nfunction requiredGoalString(value: unknown, field: string, max: number): string {\n if (typeof value !== \"string\" || !value.trim() || /[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F]/.test(value)) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n const normalized = value.trim();\n if (normalized.length > max) throw new ProtocolValidationError(`goal_${field}_limit_exceeded`, field);\n return normalized;\n}\n\nfunction goalNonNegativeInteger(value: unknown, field: string): number {\n if (!Number.isSafeInteger(value) || (value as number) < 0) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n return value as number;\n}\n\nfunction goalPositiveInteger(value: unknown, field: string, allowUnlimited = false): number {\n const integer = goalNonNegativeInteger(value, field);\n if (integer < (allowUnlimited ? 0 : 1) || integer > MAX_GOAL_AUTO_TURNS) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n return integer;\n}\nfunction parseGoalContent(record: Record<string, unknown>): Pick<CreateSessionGoalInput, \"items\" | \"attachments\"> {\n return {\n ...(record.items === undefined ? {} : { items: parseSessionInputItems(record.items) }),\n ...(record.attachments === undefined ? {} : { attachments: parsePromptAttachments(record.attachments) }),\n };\n}\n\nfunction goalPositiveTimestamp(value: unknown, field: string): number {\n if (!Number.isSafeInteger(value) || (value as number) <= 0) throw new ProtocolValidationError(`invalid_goal_${field}`, field);\n return value as number;\n}\n",
15
15
  "/**\n * Wire DTOs and validators for the MCP OAuth App Server interface.\n *\n * These are the only shapes that cross the daemon control plane. Tokens,\n * client secrets, PKCE verifiers and callback query parameters never appear in\n * a response or event.\n */\n\nexport const MCP_OAUTH_FEATURE = \"mcpOAuth\";\nexport const MCP_OAUTH_LOGIN_UPDATED_EVENT = \"mcp.oauth.login.updated\";\nexport const MCP_OAUTH_LOGIN_COMPLETED_EVENT = \"mcp.oauth.login.completed\";\n\nexport const MAX_OAUTH_ID_LENGTH = 200;\nexport const MAX_OAUTH_SCOPES = 50;\nexport const MAX_OAUTH_SCOPE_LENGTH = 200;\nexport const MAX_OAUTH_CALLBACK_URL_LENGTH = 4_096;\n\nexport type OAuthCallbackMode = \"local\" | \"manual\";\nexport type OAuthOperationState = \"pending\" | \"completed\" | \"failed\" | \"cancelled\";\nexport const MCP_OAUTH_AUTH_STATUSES = [\n \"not-configured\",\n \"not-logged-in\",\n \"valid\",\n \"expired-refreshable\",\n \"reauthentication-required\",\n \"static\",\n \"unsupported\",\n] as const;\nexport type McpOAuthAuthStatus = (typeof MCP_OAUTH_AUTH_STATUSES)[number];\n\nexport interface McpOAuthServerSnapshot {\n name: string;\n enabled: boolean;\n transport: \"stdio\" | \"http\" | \"sse\";\n endpoint?: string;\n authMode: \"none\" | \"oauth\" | \"bearer\" | \"custom\";\n authStatus: McpOAuthAuthStatus;\n scopes: string[];\n runtimeStatus: \"connected\" | \"disconnected\" | \"error\" | \"unavailable\";\n}\n\nexport interface McpOAuthStatusSnapshot {\n servers: McpOAuthServerSnapshot[];\n}\n\nexport interface McpOAuthLoginInput {\n oauthInstanceId: string;\n requestId: string;\n scopes?: string[];\n callbackMode: OAuthCallbackMode;\n}\n\nexport interface OAuthOperationView {\n loginId: string;\n name: string;\n state: OAuthOperationState;\n credentialCommitted: boolean;\n authorizationReady: boolean;\n errorCode?: string;\n /** Only present on an authenticated GET operation response. */\n authorizationUrl?: string;\n runtimeSync?: OAuthOperationEventData[\"runtimeSync\"];\n}\n\nexport interface McpOAuthLoginResponse {\n loginId: string;\n operation: OAuthOperationView;\n}\n\nexport interface McpOAuthCallbackInput {\n callbackUrl: string;\n}\n\nexport interface OAuthOperationEventData {\n loginId: string;\n name: string;\n state: OAuthOperationState;\n credentialCommitted: boolean;\n authorizationReady: boolean;\n errorCode?: string;\n runtimeSync?: {\n status: McpOAuthServerSnapshot[\"runtimeStatus\"];\n affectedRuntimes: number;\n failures: Array<{ runtimeId: string; message: string }>;\n };\n}\n\nexport interface OAuthOperationEvent {\n event: typeof MCP_OAUTH_LOGIN_UPDATED_EVENT | typeof MCP_OAUTH_LOGIN_COMPLETED_EVENT;\n data: OAuthOperationEventData;\n}\n\nexport function parseMcpOAuthLoginInput(value: unknown): McpOAuthLoginInput {\n const record = requiredRecord(value, \"login input\");\n const oauthInstanceId = boundedId(record.oauthInstanceId, \"oauthInstanceId\");\n const requestId = boundedId(record.requestId, \"requestId\");\n const callbackMode = record.callbackMode;\n if (callbackMode !== \"local\" && callbackMode !== \"manual\") {\n throw new Error(\"callbackMode must be local or manual\");\n }\n const scopes = parseScopes(record.scopes);\n return {\n oauthInstanceId,\n requestId,\n callbackMode,\n ...(scopes ? { scopes } : {}),\n };\n}\n\nexport function parseMcpOAuthCallbackInput(value: unknown): McpOAuthCallbackInput {\n const record = requiredRecord(value, \"callback input\");\n const callbackUrl = record.callbackUrl;\n if (typeof callbackUrl !== \"string\" || callbackUrl.length === 0 || callbackUrl.length > MAX_OAUTH_CALLBACK_URL_LENGTH) {\n throw new Error(\"callbackUrl must be a non-empty string\");\n }\n return { callbackUrl };\n}\n\nexport function parseOAuthOperationView(value: unknown): OAuthOperationView {\n const record = requiredRecord(value, \"operation view\");\n const view: OAuthOperationView = {\n loginId: boundedId(record.loginId, \"loginId\"),\n name: boundedId(record.name, \"name\"),\n state: operationState(record.state),\n credentialCommitted: requiredBoolean(record.credentialCommitted, \"credentialCommitted\"),\n authorizationReady: requiredBoolean(record.authorizationReady, \"authorizationReady\"),\n };\n if (record.errorCode !== undefined) {\n view.errorCode = boundedId(record.errorCode, \"errorCode\");\n }\n if (record.authorizationUrl !== undefined) {\n if (typeof record.authorizationUrl !== \"string\" || record.authorizationUrl.length > MAX_OAUTH_CALLBACK_URL_LENGTH) {\n throw new Error(\"authorizationUrl must be a string\");\n }\n view.authorizationUrl = record.authorizationUrl;\n }\n if (record.runtimeSync !== undefined) view.runtimeSync = parseRuntimeSync(record.runtimeSync);\n return view;\n}\n\nexport function parseOAuthOperationEvent(value: unknown): OAuthOperationEvent {\n const record = requiredRecord(value, \"operation event\");\n if (record.event !== MCP_OAUTH_LOGIN_UPDATED_EVENT && record.event !== MCP_OAUTH_LOGIN_COMPLETED_EVENT) {\n throw new Error(\"unknown MCP OAuth event name\");\n }\n const data = requiredRecord(record.data, \"operation event data\");\n const event: OAuthOperationEvent = {\n event: record.event,\n data: {\n loginId: boundedId(data.loginId, \"loginId\"),\n name: boundedId(data.name, \"name\"),\n state: operationState(data.state),\n credentialCommitted: requiredBoolean(data.credentialCommitted, \"credentialCommitted\"),\n authorizationReady: requiredBoolean(data.authorizationReady, \"authorizationReady\"),\n ...(data.errorCode !== undefined ? { errorCode: boundedId(data.errorCode, \"errorCode\") } : {}),\n },\n };\n if (data.runtimeSync !== undefined) {\n event.data.runtimeSync = parseRuntimeSync(data.runtimeSync);\n }\n return event;\n}\n\nfunction parseRuntimeSync(value: unknown): NonNullable<OAuthOperationEventData[\"runtimeSync\"]> {\n const runtimeSync = requiredRecord(value, \"runtimeSync\");\n return {\n status: runtimeSyncStatus(runtimeSync.status),\n affectedRuntimes: nonNegativeInteger(runtimeSync.affectedRuntimes, \"affectedRuntimes\"),\n failures: Array.isArray(runtimeSync.failures)\n ? runtimeSync.failures.map((failure) => {\n const item = requiredRecord(failure, \"runtimeSync failure\");\n return { runtimeId: boundedId(item.runtimeId, \"runtimeId\"), message: boundedId(item.message, \"message\") };\n })\n : [],\n };\n}\n\nexport function parseMcpOAuthStatusSnapshot(value: unknown): McpOAuthStatusSnapshot {\n const record = requiredRecord(value, \"status snapshot\");\n if (!Array.isArray(record.servers)) throw new Error(\"servers must be an array\");\n return { servers: record.servers.map(parseServerSnapshot) };\n}\n\nfunction parseServerSnapshot(value: unknown): McpOAuthServerSnapshot {\n const record = requiredRecord(value, \"server snapshot\");\n const transport = record.transport;\n if (transport !== \"stdio\" && transport !== \"http\" && transport !== \"sse\") throw new Error(\"invalid transport\");\n const authMode = record.authMode;\n if (authMode !== \"none\" && authMode !== \"oauth\" && authMode !== \"bearer\" && authMode !== \"custom\") {\n throw new Error(\"invalid authMode\");\n }\n if (!MCP_OAUTH_AUTH_STATUSES.includes(record.authStatus as McpOAuthAuthStatus)) {\n throw new Error(\"invalid authStatus\");\n }\n return {\n name: boundedId(record.name, \"name\"),\n enabled: requiredBoolean(record.enabled, \"enabled\"),\n transport,\n ...(typeof record.endpoint === \"string\" ? { endpoint: record.endpoint } : {}),\n authMode,\n authStatus: record.authStatus as McpOAuthAuthStatus,\n scopes: parseScopes(record.scopes) ?? [],\n runtimeStatus: runtimeSyncStatus(record.runtimeStatus),\n };\n}\n\nfunction parseScopes(value: unknown): string[] | undefined {\n if (value === undefined) return undefined;\n if (!Array.isArray(value) || value.length > MAX_OAUTH_SCOPES) throw new Error(\"scopes must be a bounded array\");\n return value.map((scope) => {\n if (typeof scope !== \"string\" || scope.length === 0 || scope.length > MAX_OAUTH_SCOPE_LENGTH) {\n throw new Error(\"each scope must be a non-empty string\");\n }\n return scope;\n });\n}\n\nfunction operationState(value: unknown): OAuthOperationState {\n if (value !== \"pending\" && value !== \"completed\" && value !== \"failed\" && value !== \"cancelled\") {\n throw new Error(\"invalid operation state\");\n }\n return value;\n}\n\nfunction runtimeSyncStatus(value: unknown): McpOAuthServerSnapshot[\"runtimeStatus\"] {\n if (value !== \"connected\" && value !== \"disconnected\" && value !== \"error\" && value !== \"unavailable\") {\n throw new Error(\"invalid runtime status\");\n }\n return value;\n}\n\nfunction boundedId(value: unknown, field: string): string {\n if (typeof value !== \"string\" || value.length === 0 || value.length > MAX_OAUTH_ID_LENGTH) {\n throw new Error(`${field} must be a bounded non-empty string`);\n }\n return value;\n}\n\nfunction requiredBoolean(value: unknown, field: string): boolean {\n if (typeof value !== \"boolean\") throw new Error(`${field} must be a boolean`);\n return value;\n}\n\nfunction nonNegativeInteger(value: unknown, field: string): number {\n if (!Number.isSafeInteger(value) || Number(value) < 0) throw new Error(`${field} must be a non-negative integer`);\n return Number(value);\n}\n\nfunction requiredRecord(value: unknown, field: string): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(`${field} must be an object`);\n }\n return value as Record<string, unknown>;\n}\n",
16
16
  "export const AUTO_REVIEW_MODES = [\"off\", \"risk_based\"] as const;\nexport const AUTO_REVIEW_RISK_LEVELS = [\"none\", \"low\", \"medium\", \"high\", \"unknown\"] as const;\nexport const AUTO_REVIEW_STATUSES = [\n \"disabled\",\n \"captured\",\n \"skipped\",\n \"pending\",\n \"passed\",\n \"findings\",\n \"partial\",\n \"failed\",\n \"timed_out\",\n \"unavailable\",\n] as const;\nexport const AUTO_REVIEW_VERDICTS = [\"pass\", \"fail\", \"partial\"] as const;\nexport const AUTO_REVIEW_SEVERITIES = [\"critical\", \"important\", \"minor\"] as const;\nexport const AUTO_REVIEW_REASONS = [\n \"mode_off\",\n \"no_changes\",\n \"low_risk_change\",\n \"source_change\",\n \"large_change\",\n \"many_files\",\n \"sensitive_path\",\n \"sensitive_content_path\",\n \"production_delete_or_rename\",\n \"patch_truncated\",\n \"not_git_repository\",\n \"preexisting_dirty_overlap\",\n \"non_linear_head_change\",\n \"post_commit_worktree_changed\",\n \"git_inspection_failed\",\n \"review_output_invalid\",\n \"review_child_failed\",\n \"review_child_timed_out\",\n \"review_preempted_by_user\",\n \"parent_run_not_completed\",\n \"daemon_restarted\",\n \"concurrent_run_overlap\",\n \"execution_environment_unavailable\",\n \"observation_budget_exceeded\",\n \"observation_cancelled\",\n] as const;\n\nexport type AutoReviewMode = (typeof AUTO_REVIEW_MODES)[number];\nexport type AutoReviewRiskLevel = (typeof AUTO_REVIEW_RISK_LEVELS)[number];\nexport type AutoReviewStatus = (typeof AUTO_REVIEW_STATUSES)[number];\nexport type AutoReviewVerdict = (typeof AUTO_REVIEW_VERDICTS)[number];\nexport type AutoReviewSeverity = (typeof AUTO_REVIEW_SEVERITIES)[number];\nexport type AutoReviewReason = (typeof AUTO_REVIEW_REASONS)[number];\n\nexport interface AutoReviewRunMetadata {\n version: 1;\n policyVersion: \"risk-v1\";\n mode: AutoReviewMode;\n riskLevel: AutoReviewRiskLevel;\n status: AutoReviewStatus;\n reasons: string[];\n reviewTaskId?: string;\n verdict?: AutoReviewVerdict;\n findingCount?: number;\n highestSeverity?: AutoReviewSeverity;\n patchTruncated?: boolean;\n startedAt?: number;\n finishedAt?: number;\n}\n\nconst AUTO_REVIEW_MODE_SET = new Set<string>(AUTO_REVIEW_MODES);\nconst AUTO_REVIEW_RISK_LEVEL_SET = new Set<string>(AUTO_REVIEW_RISK_LEVELS);\nconst AUTO_REVIEW_STATUS_SET = new Set<string>(AUTO_REVIEW_STATUSES);\nconst AUTO_REVIEW_VERDICT_SET = new Set<string>(AUTO_REVIEW_VERDICTS);\nconst AUTO_REVIEW_SEVERITY_SET = new Set<string>(AUTO_REVIEW_SEVERITIES);\nconst AUTO_REVIEW_REASON_SET = new Set<string>(AUTO_REVIEW_REASONS);\n\nconst MAX_REASONS = 16;\nconst MAX_REASON_LENGTH = 128;\nconst MAX_IDENTIFIER_LENGTH = 256;\n\n/**\n * 只读校验一次持久化的自动评审状态。\n *\n * 任何非法或版本不匹配的输入都返回 undefined,不抛错,避免坏数据阻断读取方。\n */\nexport function readAutoReviewRunMetadata(value: unknown): AutoReviewRunMetadata | undefined {\n if (!isRecord(value)) return undefined;\n if (value.version !== 1) return undefined;\n if (value.policyVersion !== \"risk-v1\") return undefined;\n\n const mode = readEnum(value.mode, AUTO_REVIEW_MODE_SET) as AutoReviewMode | undefined;\n const riskLevel = readEnum(value.riskLevel, AUTO_REVIEW_RISK_LEVEL_SET) as\n | AutoReviewRiskLevel\n | undefined;\n const status = readEnum(value.status, AUTO_REVIEW_STATUS_SET) as AutoReviewStatus | undefined;\n if (!mode || !riskLevel || !status) return undefined;\n\n const reasons = readReasons(value.reasons);\n if (!reasons) return undefined;\n\n const metadata: AutoReviewRunMetadata = {\n version: 1,\n policyVersion: \"risk-v1\",\n mode,\n riskLevel,\n status,\n reasons,\n };\n\n if (value.reviewTaskId !== undefined) {\n if (\n typeof value.reviewTaskId !== \"string\" ||\n value.reviewTaskId.length < 1 ||\n value.reviewTaskId.length > MAX_IDENTIFIER_LENGTH\n ) {\n return undefined;\n }\n metadata.reviewTaskId = value.reviewTaskId;\n }\n\n if (value.verdict !== undefined) {\n const verdict = readEnum(value.verdict, AUTO_REVIEW_VERDICT_SET) as AutoReviewVerdict | undefined;\n if (!verdict) return undefined;\n metadata.verdict = verdict;\n }\n\n if (value.findingCount !== undefined) {\n if (!isNonNegativeSafeInteger(value.findingCount)) return undefined;\n metadata.findingCount = value.findingCount;\n }\n\n if (value.highestSeverity !== undefined) {\n const severity = readEnum(value.highestSeverity, AUTO_REVIEW_SEVERITY_SET) as\n | AutoReviewSeverity\n | undefined;\n if (!severity) return undefined;\n metadata.highestSeverity = severity;\n }\n\n if (value.patchTruncated !== undefined) {\n if (typeof value.patchTruncated !== \"boolean\") return undefined;\n metadata.patchTruncated = value.patchTruncated;\n }\n\n if (value.startedAt !== undefined) {\n if (!isNonNegativeSafeInteger(value.startedAt)) return undefined;\n metadata.startedAt = value.startedAt;\n }\n\n if (value.finishedAt !== undefined) {\n if (!isNonNegativeSafeInteger(value.finishedAt)) return undefined;\n metadata.finishedAt = value.finishedAt;\n }\n\n return metadata;\n}\n\nfunction readReasons(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n if (value.length > MAX_REASONS) return undefined;\n const reasons: string[] = [];\n for (const reason of value) {\n if (typeof reason !== \"string\") return undefined;\n if (reason.length < 1 || reason.length > MAX_REASON_LENGTH) return undefined;\n if (!AUTO_REVIEW_REASON_SET.has(reason)) return undefined;\n reasons.push(reason);\n }\n return reasons;\n}\n\nfunction readEnum(value: unknown, allowed: ReadonlySet<string>): string | undefined {\n return typeof value === \"string\" && allowed.has(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isNonNegativeSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n",
17
17
  "import {\n AUTO_REVIEW_RISK_LEVELS,\n AUTO_REVIEW_STATUSES,\n type AutoReviewRiskLevel,\n type AutoReviewStatus,\n type AutoReviewVerdict,\n} from \"./auto-review.js\";\n\nexport const EXECUTION_KINDS = [\n \"root_agent_run\",\n \"child_agent_run\",\n \"workflow_run\",\n \"workflow_task\",\n] as const;\n\nexport const EXECUTION_OUTCOMES = [\n \"completed\",\n \"failed\",\n \"timed_out\",\n \"cancelled\",\n \"blocked\",\n \"skipped\",\n \"running\",\n \"pending\",\n \"unknown\",\n] as const;\n\nexport const EXECUTION_FAILURE_KINDS = [\n \"model_error\",\n \"tool_error\",\n \"timeout\",\n \"permission_denied\",\n \"budget_exceeded\",\n \"dependency_failed\",\n \"cancelled_by_user\",\n \"cancelled_by_parent\",\n \"recovery_failed\",\n \"conflict\",\n \"unknown\",\n] as const;\n\nexport type ExecutionKind = (typeof EXECUTION_KINDS)[number];\nexport type ExecutionOutcome = (typeof EXECUTION_OUTCOMES)[number];\nexport type ExecutionFailureKind = (typeof EXECUTION_FAILURE_KINDS)[number];\nexport type ExecutionUsageCompleteness = \"complete\" | \"partial\" | \"unknown\";\n\nexport type ExecutionObservationWarningCode =\n | \"invalid_workflow_snapshot\"\n | \"invalid_workflow_event\"\n | \"missing_parent_execution\"\n | \"missing_backing_execution\"\n | \"partial_usage\";\n\nexport interface ExecutionObservationWarning {\n code: ExecutionObservationWarningCode;\n sourceId: string;\n}\n\nexport interface ExecutionObservation {\n schemaVersion: 1;\n executionKind: ExecutionKind;\n executionId: string;\n parentExecutionId?: string;\n backingExecutionIds?: string[];\n traceId?: string;\n sessionId?: string;\n runId?: string;\n childId?: string;\n childSessionId?: string;\n workflowRunId?: string;\n workflowTaskId?: string;\n model?: string;\n provider?: string;\n workflowMode?: \"sequential\" | \"parallel\" | \"pipeline\";\n configuredConcurrency?: number;\n attemptCount?: number;\n createdAt?: number;\n startedAt?: number;\n finishedAt?: number;\n durationMs?: number;\n outcome: ExecutionOutcome;\n failureKind?: ExecutionFailureKind;\n usage: {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cacheReadTokens?: number;\n cacheCreationTokens?: number;\n completeness: ExecutionUsageCompleteness;\n };\n source: { kind: \"session_run\" | \"workflow_snapshot\"; id: string };\n completeness: \"complete\" | \"partial\";\n /** Bounded automatic review outcome projected from the parent Run metadata. */\n review?: {\n policyVersion: \"risk-v1\";\n riskLevel: AutoReviewRiskLevel;\n status: AutoReviewStatus;\n verdict?: AutoReviewVerdict;\n findingCount?: number;\n };\n}\n\nexport interface ExecutionObservationFilter {\n from?: number;\n to?: number;\n executionKinds?: ExecutionKind[];\n outcomes?: ExecutionOutcome[];\n failureKinds?: ExecutionFailureKind[];\n sessionId?: string;\n runId?: string;\n childId?: string;\n workflowRunId?: string;\n workflowTaskId?: string;\n model?: string;\n provider?: string;\n reviewStatuses?: AutoReviewStatus[];\n reviewRiskLevels?: AutoReviewRiskLevel[];\n}\n\nexport interface ExecutionKindSummary {\n total: number;\n technicalTerminal: number;\n completed: number;\n failed: number;\n timedOut: number;\n cancelled: number;\n blocked: number;\n skipped: number;\n unknown: number;\n completionRate?: number;\n failureRate?: number;\n cancellationRate?: number;\n skipRate?: number;\n duration: { count: number; sumMs: number; minMs?: number; maxMs?: number };\n usage: {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n inputTokenRecords: number;\n outputTokenRecords: number;\n totalTokenRecords: number;\n averageInputTokens?: number;\n averageOutputTokens?: number;\n averageTotalTokens?: number;\n completeRecords: number;\n partialRecords: number;\n unknownRecords: number;\n };\n failures: Partial<Record<ExecutionFailureKind, number>>;\n reviews: Partial<Record<AutoReviewStatus, number>>;\n}\n\nexport interface ExecutionObservationExport {\n schemaVersion: 1;\n generatedAt: number;\n filters: ExecutionObservationFilter;\n summary: Partial<Record<ExecutionKind, ExecutionKindSummary>>;\n records: ExecutionObservation[];\n warnings: ExecutionObservationWarning[];\n}\n\nconst EXECUTION_KIND_SET = new Set<string>(EXECUTION_KINDS);\nconst EXECUTION_OUTCOME_SET = new Set<string>(EXECUTION_OUTCOMES);\nconst EXECUTION_FAILURE_KIND_SET = new Set<string>(EXECUTION_FAILURE_KINDS);\nconst AUTO_REVIEW_STATUS_SET = new Set<string>(AUTO_REVIEW_STATUSES);\nconst AUTO_REVIEW_RISK_LEVEL_SET = new Set<string>(AUTO_REVIEW_RISK_LEVELS);\n\nconst MAX_FILTER_ITEMS = 16;\nconst MAX_TEXT_LENGTH = 256;\nconst CONTROL_CHARACTER_PATTERN = /[\\u0000-\\u001f\\u007f]/;\n\n/**\n * 把 HTTP/CLI 的原始查询参数解析成稳定过滤条件。所有校验失败统一抛出以\n * `invalid_` 开头的固定错误码,调用方据此映射为 400,不泄漏原始输入。\n */\nexport function parseExecutionObservationFilter(\n input: Record<string, unknown>,\n): ExecutionObservationFilter {\n const executionKinds = parseEnumList(\n input.kind,\n EXECUTION_KIND_SET,\n \"invalid_execution_kind\",\n ) as ExecutionKind[] | undefined;\n const outcomes = parseEnumList(\n input.outcome,\n EXECUTION_OUTCOME_SET,\n \"invalid_execution_outcome\",\n ) as ExecutionOutcome[] | undefined;\n const failureKinds = parseEnumList(\n input.failureKind ?? input.failureKinds,\n EXECUTION_FAILURE_KIND_SET,\n \"invalid_execution_failure_kind\",\n ) as ExecutionFailureKind[] | undefined;\n const reviewStatuses = parseEnumList(\n input.reviewStatus ?? input.reviewStatuses,\n AUTO_REVIEW_STATUS_SET,\n \"invalid_execution_review_status\",\n ) as AutoReviewStatus[] | undefined;\n const reviewRiskLevels = parseEnumList(\n input.reviewRisk ?? input.reviewRiskLevels,\n AUTO_REVIEW_RISK_LEVEL_SET,\n \"invalid_execution_review_risk\",\n ) as AutoReviewRiskLevel[] | undefined;\n\n const from = parseTimestamp(input.from, \"invalid_observation_from\");\n const to = parseTimestamp(input.to, \"invalid_observation_to\");\n if (from !== undefined && to !== undefined && from > to) {\n throw new Error(\"invalid_observation_range\");\n }\n\n const sessionId = parseText(input.sessionId, \"invalid_observation_session_id\");\n const runId = parseText(input.runId, \"invalid_observation_run_id\");\n const childId = parseText(input.childId, \"invalid_observation_child_id\");\n const workflowRunId = parseText(\n input.workflowRunId,\n \"invalid_observation_workflow_run_id\",\n );\n const workflowTaskId = parseText(\n input.workflowTaskId,\n \"invalid_observation_workflow_task_id\",\n );\n const model = parseText(input.model, \"invalid_observation_model\");\n const provider = parseText(input.provider, \"invalid_observation_provider\");\n\n return {\n ...(from !== undefined ? { from } : {}),\n ...(to !== undefined ? { to } : {}),\n ...(executionKinds ? { executionKinds } : {}),\n ...(outcomes ? { outcomes } : {}),\n ...(failureKinds ? { failureKinds } : {}),\n ...(reviewStatuses ? { reviewStatuses } : {}),\n ...(reviewRiskLevels ? { reviewRiskLevels } : {}),\n ...(sessionId ? { sessionId } : {}),\n ...(runId ? { runId } : {}),\n ...(childId ? { childId } : {}),\n ...(workflowRunId ? { workflowRunId } : {}),\n ...(workflowTaskId ? { workflowTaskId } : {}),\n ...(model ? { model } : {}),\n ...(provider ? { provider } : {}),\n };\n}\n\nfunction parseEnumList(\n raw: unknown,\n allowed: ReadonlySet<string>,\n code: string,\n): string[] | undefined {\n if (raw === undefined || raw === null) return undefined;\n if (typeof raw !== \"string\") throw new Error(code);\n const values: string[] = [];\n const seen = new Set<string>();\n for (const part of raw.split(\",\")) {\n const value = part.trim();\n if (value === \"\") continue;\n if (!allowed.has(value)) throw new Error(code);\n if (seen.has(value)) continue;\n seen.add(value);\n values.push(value);\n if (values.length > MAX_FILTER_ITEMS) throw new Error(code);\n }\n return values.length > 0 ? values : undefined;\n}\n\nfunction parseTimestamp(raw: unknown, code: string): number | undefined {\n if (raw === undefined || raw === null) return undefined;\n if (typeof raw === \"string\" && raw.trim() === \"\") return undefined;\n const value = typeof raw === \"number\" ? raw : Number(raw);\n if (!Number.isSafeInteger(value) || value < 0) throw new Error(code);\n return value;\n}\n\nfunction parseText(raw: unknown, code: string): string | undefined {\n if (raw === undefined || raw === null) return undefined;\n if (typeof raw !== \"string\") throw new Error(code);\n if (raw.length < 1 || raw.length > MAX_TEXT_LENGTH) throw new Error(code);\n if (CONTROL_CHARACTER_PATTERN.test(raw)) throw new Error(code);\n return raw;\n}\n",
18
- "export type JsonValue = null | boolean | number | string | JsonValue[]\n | { [key: string]: JsonValue };\n\nexport interface PluginUiActionDefinition {\n id: string;\n label: string;\n tool: string;\n completion: \"keep-open\" | \"resolve\";\n}\n\nexport interface PluginUiComponentDefinition {\n id: string;\n title: string;\n entry: string;\n surfaces: Array<\"tool-result\" | \"session-sidebar\">;\n actions: PluginUiActionDefinition[];\n}\n\nexport interface PluginUiManifestV1 {\n schemaVersion: 1;\n components: PluginUiComponentDefinition[];\n}\n\n/** Static definitions only; these counts do not prove a UI is running. */\nexport interface PluginUiInventory {\n manifestCount: number;\n componentCount: number | null;\n validatedComponentCount: number;\n}\n\nexport interface PluginUiProposal {\n schemaVersion: 1;\n componentId: string;\n data: Record<string, JsonValue>;\n}\n\nexport interface PluginUiInstanceRecord {\n schemaVersion: 1;\n instanceId: string;\n sessionId: string;\n sourceRunId: string;\n sourcePartId: string;\n sourceToolUseId: string;\n sourceToolName: string;\n pluginId: string;\n pluginVersion: string;\n pluginDigest: string;\n componentId: string;\n componentDigest: string;\n title: string;\n surfaces: Array<\"tool-result\" | \"session-sidebar\">;\n status: \"open\" | \"resolved\" | \"dismissed\";\n revision: number;\n data: Record<string, JsonValue>;\n activeActionRunId?: string;\n lastActionRunId?: string;\n dismissal?: {\n requestId: string;\n requestFingerprint: string;\n expectedRevision: number;\n revision: number;\n dismissedAt: number;\n };\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface InvokePluginUiActionInput {\n requestId: string;\n expectedRevision: number;\n actionId: string;\n args: Record<string, JsonValue>;\n}\n\nexport interface PluginUiAvailability {\n code: \"available\" | \"plugin-disabled\" | \"permission-missing\" | \"snapshot-missing\" | \"snapshot-changed\"\n | \"runtime-unavailable\" | \"session-archived\" | \"action-unknown\" | \"invalid-definition\";\n canRender: boolean;\n canInvoke: boolean;\n}\n\nexport interface PluginUiActionDescription {\n id: string;\n label: string;\n toolName: string;\n inputSchema: Record<string, unknown>;\n completion: \"keep-open\" | \"resolve\";\n}\n\n/** Safe presentation data. Host paths and captured functions stay internal. */\nexport interface PluginUiInstanceResponse {\n instance: PluginUiInstanceRecord;\n availability: PluginUiAvailability;\n actions: PluginUiActionDescription[];\n}\n\nexport interface DismissPluginUiInput {\n requestId: string;\n expectedRevision: number;\n}\n\nexport interface PluginUiActionReceipt {\n requestId: string;\n runId: string;\n instanceId: string;\n revision: number;\n status: \"pending\" | \"running\" | \"completed\" | \"failed\" | \"interrupted\";\n}\n\nexport interface PluginUiDocumentResponse {\n html: string;\n sha256: string;\n}\n\nexport interface PluginUiActionResponse {\n receipt: PluginUiActionReceipt;\n /** Original persisted tool result, absent before tool settlement. */\n result?: unknown;\n}\n\nexport interface PluginUiActionRunMetadata {\n schemaVersion: 1;\n instanceId: string;\n requestId: string;\n requestFingerprint: string;\n expectedRevision: number;\n actionId: string;\n label: string;\n args: Record<string, JsonValue>;\n pluginId: string;\n pluginVersion: string;\n pluginDigest: string;\n componentDigest: string;\n toolName: string;\n toolUseId: string;\n executionState: \"not_started\" | \"completed\" | \"unknown\";\n}\n\nexport const PLUGIN_UI_LIMITS = {\n manifestCount: 8,\n manifestBytes: 256 * 1024,\n componentCount: 16,\n actionsPerComponent: 16,\n htmlBytes: 2 * 1024 * 1024,\n dataBytes: 256 * 1024,\n actionArgsBytes: 64 * 1024,\n titleCodePoints: 80,\n jsonDepth: 20,\n} as const;\n\nexport function isPluginUiRecord(value: unknown): value is Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nexport function isPluginUiUuid(value: unknown): value is string {\n return typeof value === \"string\" && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value);\n}\n\nexport function isPluginUiRevision(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n\n/** Reject the whole payload; no data or identifiers are truncated. */\nexport function isPluginUiJsonRecord(value: unknown, byteLimit: number): value is Record<string, JsonValue> {\n return validatePluginUiJsonRecord(value, byteLimit).valid;\n}\n\n/** Stable failure reasons for request boundaries; serialization and byte counting happen once. */\nexport function validatePluginUiJsonRecord(value: unknown, byteLimit: number):\n | { valid: true; value: Record<string, JsonValue> }\n | { valid: false; reason: \"invalid_json\" | \"payload_too_large\" } {\n if (!isPluginUiRecord(value)) return { valid: false, reason: \"invalid_json\" };\n try {\n if (new TextEncoder().encode(stringifyPluginUiJson(value)).byteLength > byteLimit) {\n return { valid: false, reason: \"payload_too_large\" };\n }\n return { valid: true, value: value as Record<string, JsonValue> };\n } catch {\n return { valid: false, reason: \"invalid_json\" };\n }\n}\n\nfunction exactFields(record: Record<string, unknown>, required: readonly string[], optional: readonly string[] = []): boolean {\n return required.every(key => Object.hasOwn(record, key))\n && Object.keys(record).every(key => required.includes(key) || optional.includes(key));\n}\n\nfunction nonempty(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction digest(value: unknown): value is string {\n return typeof value === \"string\" && /^[0-9a-f]{64}$/i.test(value);\n}\n\nfunction finite(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\n/** An untrusted plugin proposal; it grants no host identity or permission. */\nexport function readPluginUiProposal(metadata: unknown): PluginUiProposal | undefined {\n if (!isPluginUiRecord(metadata) || !Object.hasOwn(metadata, \"ui\")) return undefined;\n const record = metadata.ui;\n if (!isPluginUiRecord(record) || !exactFields(record, [\"schemaVersion\", \"componentId\", \"data\"])\n || record.schemaVersion !== 1 || !nonempty(record.componentId)\n || !isPluginUiJsonRecord(record.data, PLUGIN_UI_LIMITS.dataBytes)) return undefined;\n return record as unknown as PluginUiProposal;\n}\n\n/** Shape validation only; the Server must also verify ownership against the actual Part. */\nexport function readPluginUiInstance(metadata: unknown): PluginUiInstanceRecord | undefined {\n if (!isPluginUiRecord(metadata) || !Object.hasOwn(metadata, \"pluginUi\")) return undefined;\n const record = metadata.pluginUi;\n const source = [\"sessionId\", \"sourceRunId\", \"sourcePartId\", \"sourceToolUseId\", \"sourceToolName\",\n \"pluginId\", \"pluginVersion\", \"componentId\", \"title\"];\n if (!isPluginUiRecord(record) || !exactFields(record, [\"schemaVersion\", \"instanceId\", ...source,\n \"pluginDigest\", \"componentDigest\", \"surfaces\", \"status\", \"revision\", \"data\", \"createdAt\", \"updatedAt\"],\n [\"activeActionRunId\", \"lastActionRunId\", \"dismissal\"])) return undefined;\n if (record.schemaVersion !== 1 || !isPluginUiUuid(record.instanceId)\n || !source.every(key => nonempty(record[key]))\n || !digest(record.pluginDigest) || !digest(record.componentDigest)\n || !Array.isArray(record.surfaces) || record.surfaces.length === 0\n || Array.from(record.surfaces).some(surface => surface !== \"tool-result\" && surface !== \"session-sidebar\")\n || ![\"open\", \"resolved\", \"dismissed\"].includes(record.status as string)\n || !isPluginUiRevision(record.revision) || !finite(record.createdAt) || !finite(record.updatedAt)\n || !isPluginUiJsonRecord(record.data, PLUGIN_UI_LIMITS.dataBytes)) return undefined;\n for (const key of [\"activeActionRunId\", \"lastActionRunId\"]) {\n if (Object.hasOwn(record, key) && !nonempty(record[key])) return undefined;\n }\n if (Object.hasOwn(record, \"dismissal\")) {\n const dismissal = record.dismissal;\n if (!isPluginUiRecord(dismissal) || !exactFields(dismissal,\n [\"requestId\", \"requestFingerprint\", \"expectedRevision\", \"revision\", \"dismissedAt\"])\n || !isPluginUiUuid(dismissal.requestId) || !digest(dismissal.requestFingerprint)\n || !isPluginUiRevision(dismissal.expectedRevision) || !isPluginUiRevision(dismissal.revision)\n || !finite(dismissal.dismissedAt)) return undefined;\n }\n return record as unknown as PluginUiInstanceRecord;\n}\n\n/** Shape validation only; the Server must also verify this Run's trusted provenance. */\nexport function readPluginUiAction(metadata: unknown): PluginUiActionRunMetadata | undefined {\n if (!isPluginUiRecord(metadata) || !Object.hasOwn(metadata, \"uiAction\")) return undefined;\n const record = metadata.uiAction;\n const source = [\"actionId\", \"label\", \"pluginId\", \"pluginVersion\", \"toolName\", \"toolUseId\"];\n if (!isPluginUiRecord(record) || !exactFields(record, [\"schemaVersion\", \"instanceId\", \"requestId\",\n \"requestFingerprint\", \"expectedRevision\", ...source, \"args\", \"pluginDigest\", \"componentDigest\", \"executionState\"])) return undefined;\n if (record.schemaVersion !== 1 || !isPluginUiUuid(record.instanceId) || !isPluginUiUuid(record.requestId)\n || !digest(record.requestFingerprint) || !digest(record.pluginDigest) || !digest(record.componentDigest)\n || !isPluginUiRevision(record.expectedRevision) || !source.every(key => nonempty(record[key]))\n || ![\"not_started\", \"completed\", \"unknown\"].includes(record.executionState as string)\n || !isPluginUiJsonRecord(record.args, PLUGIN_UI_LIMITS.actionArgsBytes)) return undefined;\n return record as unknown as PluginUiActionRunMetadata;\n}\n\n/** JSON with deterministic object-key order, including numeric and literal prototype keys. */\nexport function stringifyPluginUiJson(value: unknown): string {\n const render = (item: unknown, depth: number): string => {\n if (item === null || typeof item === \"string\" || typeof item === \"boolean\") {\n return JSON.stringify(item);\n }\n if (typeof item === \"number\" && Number.isFinite(item)) return JSON.stringify(item);\n if (typeof item !== \"object\" || item === null) throw new Error(\"Plugin UI requires JSON data\");\n if (depth >= PLUGIN_UI_LIMITS.jsonDepth) throw new Error(\"Plugin UI JSON nesting limit exceeded\");\n if (Array.isArray(item)) {\n return `[${Array.from(item, child => render(child, depth + 1)).join(\",\")}]`;\n }\n const prototype = Object.getPrototypeOf(item);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new Error(\"Plugin UI requires plain JSON objects\");\n }\n const record = item as Record<string, unknown>;\n return `{${Object.keys(record).sort().map(key =>\n `${JSON.stringify(key)}:${render(record[key], depth + 1)}`,\n ).join(\",\")}}`;\n };\n return render(value, 0);\n}\n",
18
+ "export type JsonValue =\n | null\n | boolean\n | number\n | string\n | JsonValue[]\n | { [key: string]: JsonValue };\n\nexport interface PluginUiActionDefinition {\n id: string;\n label: string;\n tool: string;\n completion: \"keep-open\" | \"resolve\";\n}\n\nexport interface PluginUiComponentDefinition {\n id: string;\n title: string;\n entry: string;\n surface: \"tool-result\" | \"session-sidebar\";\n actions: PluginUiActionDefinition[];\n}\n\nexport interface PluginUiManifest {\n schemaVersion: 2;\n components: PluginUiComponentDefinition[];\n}\n\n/** Static definitions only; these counts do not prove a UI is running. */\nexport interface PluginUiInventory {\n manifestCount: number;\n componentCount: number | null;\n validatedComponentCount: number;\n}\n\nexport interface PluginUiProposal {\n schemaVersion: 2;\n componentId: string;\n data: Record<string, JsonValue>;\n}\n\nexport interface PluginUiInstanceRecord {\n schemaVersion: 2;\n instanceId: string;\n sessionId: string;\n sourceRunId: string;\n sourcePartId: string;\n sourceToolUseId: string;\n sourceToolName: string;\n pluginId: string;\n pluginVersion: string;\n pluginDigest: string;\n componentId: string;\n componentDigest: string;\n title: string;\n surface: \"tool-result\" | \"session-sidebar\";\n status: \"open\" | \"resolved\" | \"dismissed\";\n revision: number;\n data: Record<string, JsonValue>;\n activeActionRunId?: string;\n lastActionRunId?: string;\n dismissal?: {\n requestId: string;\n requestFingerprint: string;\n expectedRevision: number;\n revision: number;\n dismissedAt: number;\n };\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface InvokePluginUiActionInput {\n requestId: string;\n expectedRevision: number;\n actionId: string;\n args: Record<string, JsonValue>;\n}\n\nexport interface PluginUiAvailability {\n code:\n | \"available\"\n | \"plugin-disabled\"\n | \"permission-missing\"\n | \"snapshot-missing\"\n | \"snapshot-changed\"\n | \"runtime-unavailable\"\n | \"session-archived\"\n | \"action-unknown\"\n | \"invalid-definition\";\n canRender: boolean;\n canInvoke: boolean;\n}\n\nexport interface PluginUiActionDescription {\n id: string;\n label: string;\n toolName: string;\n inputSchema: Record<string, unknown>;\n completion: \"keep-open\" | \"resolve\";\n}\n\n/** Safe presentation data. Host paths and captured functions stay internal. */\nexport interface PluginUiInstanceResponse {\n instance: PluginUiInstanceRecord;\n availability: PluginUiAvailability;\n actions: PluginUiActionDescription[];\n conversation: { draft: boolean; submit: boolean };\n}\n\nexport interface DismissPluginUiInput {\n requestId: string;\n expectedRevision: number;\n}\n\nexport interface PluginUiActionReceipt {\n requestId: string;\n runId: string;\n instanceId: string;\n revision: number;\n status: \"pending\" | \"running\" | \"completed\" | \"failed\" | \"interrupted\";\n}\n\nexport interface PluginUiDocumentResponse {\n html: string;\n sha256: string;\n}\n\nexport interface PluginUiActionResponse {\n receipt: PluginUiActionReceipt;\n /** Original persisted tool result, absent before tool settlement. */\n result?: unknown;\n}\n\nexport interface PluginUiActionRunMetadata {\n schemaVersion: 2;\n instanceId: string;\n requestId: string;\n requestFingerprint: string;\n expectedRevision: number;\n actionId: string;\n label: string;\n args: Record<string, JsonValue>;\n pluginId: string;\n pluginVersion: string;\n pluginDigest: string;\n componentDigest: string;\n toolName: string;\n toolUseId: string;\n executionState: \"not_started\" | \"completed\" | \"unknown\";\n}\n\nexport const PLUGIN_UI_LIMITS = {\n manifestCount: 8,\n manifestBytes: 256 * 1024,\n componentCount: 16,\n actionsPerComponent: 16,\n htmlBytes: 2 * 1024 * 1024,\n dataBytes: 256 * 1024,\n actionArgsBytes: 64 * 1024,\n titleCodePoints: 80,\n jsonDepth: 20,\n} as const;\n\nexport function isPluginUiRecord(\n value: unknown,\n): value is Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nexport function isPluginUiUuid(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(\n value,\n )\n );\n}\n\nexport function isPluginUiRevision(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n\n/** Reject the whole payload; no data or identifiers are truncated. */\nexport function isPluginUiJsonRecord(\n value: unknown,\n byteLimit: number,\n): value is Record<string, JsonValue> {\n return validatePluginUiJsonRecord(value, byteLimit).valid;\n}\n\n/** Stable failure reasons for request boundaries; serialization and byte counting happen once. */\nexport function validatePluginUiJsonRecord(\n value: unknown,\n byteLimit: number,\n):\n | { valid: true; value: Record<string, JsonValue> }\n | { valid: false; reason: \"invalid_json\" | \"payload_too_large\" } {\n if (!isPluginUiRecord(value)) return { valid: false, reason: \"invalid_json\" };\n try {\n if (\n new TextEncoder().encode(stringifyPluginUiJson(value)).byteLength >\n byteLimit\n ) {\n return { valid: false, reason: \"payload_too_large\" };\n }\n return { valid: true, value: value as Record<string, JsonValue> };\n } catch {\n return { valid: false, reason: \"invalid_json\" };\n }\n}\n\nfunction exactFields(\n record: Record<string, unknown>,\n required: readonly string[],\n optional: readonly string[] = [],\n): boolean {\n return (\n required.every((key) => Object.hasOwn(record, key)) &&\n Object.keys(record).every(\n (key) => required.includes(key) || optional.includes(key),\n )\n );\n}\n\nfunction nonempty(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction digest(value: unknown): value is string {\n return typeof value === \"string\" && /^[0-9a-f]{64}$/i.test(value);\n}\n\nfunction finite(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\n/** An untrusted plugin proposal; it grants no host identity or permission. */\nexport function readPluginUiProposal(\n metadata: unknown,\n): PluginUiProposal | undefined {\n if (!isPluginUiRecord(metadata) || !Object.hasOwn(metadata, \"ui\"))\n return undefined;\n const record = metadata.ui;\n if (\n !isPluginUiRecord(record) ||\n !exactFields(record, [\"schemaVersion\", \"componentId\", \"data\"]) ||\n record.schemaVersion !== 2 ||\n !nonempty(record.componentId) ||\n !isPluginUiJsonRecord(record.data, PLUGIN_UI_LIMITS.dataBytes)\n )\n return undefined;\n return record as unknown as PluginUiProposal;\n}\n\n/** Shape validation only; the Server must also verify ownership against the actual Part. */\nexport function readPluginUiInstance(\n metadata: unknown,\n): PluginUiInstanceRecord | undefined {\n if (!isPluginUiRecord(metadata) || !Object.hasOwn(metadata, \"pluginUi\"))\n return undefined;\n const record = metadata.pluginUi;\n const source = [\n \"sessionId\",\n \"sourceRunId\",\n \"sourcePartId\",\n \"sourceToolUseId\",\n \"sourceToolName\",\n \"pluginId\",\n \"pluginVersion\",\n \"componentId\",\n \"title\",\n ];\n if (\n !isPluginUiRecord(record) ||\n !exactFields(\n record,\n [\n \"schemaVersion\",\n \"instanceId\",\n ...source,\n \"pluginDigest\",\n \"componentDigest\",\n \"surface\",\n \"status\",\n \"revision\",\n \"data\",\n \"createdAt\",\n \"updatedAt\",\n ],\n [\"activeActionRunId\", \"lastActionRunId\", \"dismissal\"],\n )\n )\n return undefined;\n if (\n record.schemaVersion !== 2 ||\n !isPluginUiUuid(record.instanceId) ||\n !source.every((key) => nonempty(record[key])) ||\n !digest(record.pluginDigest) ||\n !digest(record.componentDigest) ||\n (record.surface !== \"tool-result\" &&\n record.surface !== \"session-sidebar\") ||\n ![\"open\", \"resolved\", \"dismissed\"].includes(record.status as string) ||\n !isPluginUiRevision(record.revision) ||\n !finite(record.createdAt) ||\n !finite(record.updatedAt) ||\n !isPluginUiJsonRecord(record.data, PLUGIN_UI_LIMITS.dataBytes)\n )\n return undefined;\n for (const key of [\"activeActionRunId\", \"lastActionRunId\"]) {\n if (Object.hasOwn(record, key) && !nonempty(record[key])) return undefined;\n }\n if (Object.hasOwn(record, \"dismissal\")) {\n const dismissal = record.dismissal;\n if (\n !isPluginUiRecord(dismissal) ||\n !exactFields(dismissal, [\n \"requestId\",\n \"requestFingerprint\",\n \"expectedRevision\",\n \"revision\",\n \"dismissedAt\",\n ]) ||\n !isPluginUiUuid(dismissal.requestId) ||\n !digest(dismissal.requestFingerprint) ||\n !isPluginUiRevision(dismissal.expectedRevision) ||\n !isPluginUiRevision(dismissal.revision) ||\n !finite(dismissal.dismissedAt)\n )\n return undefined;\n }\n return record as unknown as PluginUiInstanceRecord;\n}\n\n/** Shape validation only; the Server must also verify this Run's trusted provenance. */\nexport function readPluginUiAction(\n metadata: unknown,\n): PluginUiActionRunMetadata | undefined {\n if (!isPluginUiRecord(metadata) || !Object.hasOwn(metadata, \"uiAction\"))\n return undefined;\n const record = metadata.uiAction;\n const source = [\n \"actionId\",\n \"label\",\n \"pluginId\",\n \"pluginVersion\",\n \"toolName\",\n \"toolUseId\",\n ];\n if (\n !isPluginUiRecord(record) ||\n !exactFields(record, [\n \"schemaVersion\",\n \"instanceId\",\n \"requestId\",\n \"requestFingerprint\",\n \"expectedRevision\",\n ...source,\n \"args\",\n \"pluginDigest\",\n \"componentDigest\",\n \"executionState\",\n ])\n )\n return undefined;\n if (\n record.schemaVersion !== 2 ||\n !isPluginUiUuid(record.instanceId) ||\n !isPluginUiUuid(record.requestId) ||\n !digest(record.requestFingerprint) ||\n !digest(record.pluginDigest) ||\n !digest(record.componentDigest) ||\n !isPluginUiRevision(record.expectedRevision) ||\n !source.every((key) => nonempty(record[key])) ||\n ![\"not_started\", \"completed\", \"unknown\"].includes(\n record.executionState as string,\n ) ||\n !isPluginUiJsonRecord(record.args, PLUGIN_UI_LIMITS.actionArgsBytes)\n )\n return undefined;\n return record as unknown as PluginUiActionRunMetadata;\n}\n\n/** JSON with deterministic object-key order, including numeric and literal prototype keys. */\nexport function stringifyPluginUiJson(value: unknown): string {\n const render = (item: unknown, depth: number): string => {\n if (\n item === null ||\n typeof item === \"string\" ||\n typeof item === \"boolean\"\n ) {\n return JSON.stringify(item);\n }\n if (typeof item === \"number\" && Number.isFinite(item))\n return JSON.stringify(item);\n if (typeof item !== \"object\" || item === null)\n throw new Error(\"Plugin UI requires JSON data\");\n if (depth >= PLUGIN_UI_LIMITS.jsonDepth)\n throw new Error(\"Plugin UI JSON nesting limit exceeded\");\n if (Array.isArray(item)) {\n return `[${Array.from(item, (child) => render(child, depth + 1)).join(\",\")}]`;\n }\n const prototype = Object.getPrototypeOf(item);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new Error(\"Plugin UI requires plain JSON objects\");\n }\n const record = item as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${render(record[key], depth + 1)}`)\n .join(\",\")}}`;\n };\n return render(value, 0);\n}\n",
19
19
  "import {\n validatePluginUiJsonRecord, isPluginUiRecord, isPluginUiRevision, isPluginUiUuid, PLUGIN_UI_LIMITS,\n type DismissPluginUiInput, type InvokePluginUiActionInput,\n} from \"./plugin-ui.js\";\nimport { ProtocolValidationError } from \"./requests.js\";\n\nexport function parsePluginUiRouteIds(value: { sessionId: string; instanceId: string; requestId?: string }) {\n if (!value.sessionId.trim()) throw new ProtocolValidationError(\"sessionId is required\", \"sessionId\");\n if (!isPluginUiUuid(value.instanceId)) throw new ProtocolValidationError(\"instanceId must be a UUID\", \"instanceId\");\n if (value.requestId !== undefined && !isPluginUiUuid(value.requestId)) throw new ProtocolValidationError(\"requestId must be a UUID\", \"requestId\");\n return value;\n}\n\nfunction request(value: unknown, fields: readonly string[]): Record<string, unknown> {\n if (!isPluginUiRecord(value)) throw new ProtocolValidationError(\"Request body must be a JSON object\");\n const unknown = Object.keys(value).find(key => !fields.includes(key));\n if (unknown !== undefined) throw new ProtocolValidationError(`Unknown Plugin UI field: ${unknown}`, unknown);\n if (!isPluginUiUuid(value.requestId)) throw new ProtocolValidationError(\"requestId must be a UUID\", \"requestId\");\n if (!isPluginUiRevision(value.expectedRevision)) {\n throw new ProtocolValidationError(\"expectedRevision must be a nonnegative safe integer\", \"expectedRevision\");\n }\n return value;\n}\n\nexport function parseInvokePluginUiActionInput(value: unknown): InvokePluginUiActionInput {\n const body = request(value, [\"requestId\", \"expectedRevision\", \"actionId\", \"args\"]);\n if (typeof body.actionId !== \"string\" || !body.actionId.trim()) {\n throw new ProtocolValidationError(\"actionId must be a nonempty string\", \"actionId\");\n }\n const args = validatePluginUiJsonRecord(body.args, PLUGIN_UI_LIMITS.actionArgsBytes);\n if (!args.valid) {\n throw new ProtocolValidationError(\"args must be finite JSON within Plugin UI size and depth limits\", \"args\", args.reason);\n }\n return { requestId: body.requestId as string, expectedRevision: body.expectedRevision as number, actionId: body.actionId, args: args.value };\n}\n\nexport function parseDismissPluginUiInput(value: unknown): DismissPluginUiInput {\n const body = request(value, [\"requestId\", \"expectedRevision\"]);\n return { requestId: body.requestId as string, expectedRevision: body.expectedRevision as number };\n}\n",
20
- "import {\n isPluginUiJsonRecord, isPluginUiRecord, isPluginUiRevision, isPluginUiUuid,\n PLUGIN_UI_LIMITS, validatePluginUiJsonRecord, type JsonValue, type PluginUiActionReceipt,\n} from \"./plugin-ui.js\";\n\nexport const PLUGIN_UI_BRIDGE_LIMITS = {\n requestBytes: 64 * 1024, snapshotBytes: 512 * 1024, pendingRequests: 16,\n requestsPerMinute: 60, rateWindowMs: 60_000, initializationMs: 10_000,\n requestMs: 30_000, confirmationMs: 300_000, confirmedRequestMs: 330_000,\n framesPerWindow: 2, minHeight: 160, maxHeight: 640, resultCodePoints: 1024,\n} as const;\n\nexport type PluginUiSurface = \"tool-result\" | \"session-sidebar\";\nexport interface PluginUiViewSnapshot {\n instanceId: string; revision: number; status: \"open\" | \"resolved\" | \"dismissed\";\n data: Record<string, JsonValue>;\n actions: Array<{ id: string; label: string; completion: \"keep-open\" | \"resolve\" }>;\n readOnly: boolean;\n activeAction?: PluginUiActionReceipt;\n lastAction?: { receipt: PluginUiActionReceipt; executionState: \"not_started\" | \"completed\" | \"unknown\"; message: string };\n theme: \"light\" | \"dark\"; locale: string; surface: PluginUiSurface;\n}\nexport type PluginUiBridgeMethod = \"getSnapshot\" | \"requestAction\" | \"openSidebar\" | \"resize\" | \"dismiss\";\nexport interface PluginUiBridgeRequest {\n version: 1; mountId: string; id: string; method: PluginUiBridgeMethod;\n params: Record<string, unknown>;\n}\nexport type PluginUiBridgeResponse = { version: 1; mountId: string; id: string } & (\n | { result: PluginUiViewSnapshot | PluginUiActionReceipt | null }\n | { error: { code: string; message: string } }\n);\nexport type PluginUiBridgeNotification =\n | { version: 1; mountId: string; type: \"snapshot\"; snapshot: PluginUiViewSnapshot }\n | { version: 1; mountId: string; type: \"dispose\" };\n\nexport class PluginUiBridgeError extends Error {\n constructor(readonly code: string, message: string = code) { super(message); this.name = \"PluginUiBridgeError\"; }\n}\nfunction fail(code = \"plugin_ui_invalid_message\"): never { throw new PluginUiBridgeError(code); }\nfunction record(value: unknown): Record<string, unknown> {\n if (!isPluginUiRecord(value)) fail();\n return value;\n}\nfunction exact(value: Record<string, unknown>, required: string[], optional: string[] = []): void {\n if (!required.every(key => Object.hasOwn(value, key))\n || !Object.keys(value).every(key => required.includes(key) || optional.includes(key))) fail();\n}\nconst text = (value: unknown, maximum?: number): value is string =>\n typeof value === \"string\" && value.length > 0 && (maximum === undefined || [...value].length <= maximum);\nconst oneOf = (value: unknown, choices: readonly string[]): boolean =>\n typeof value === \"string\" && choices.includes(value);\nfunction bytes(value: unknown, maximum: number): void {\n if (new TextEncoder().encode(JSON.stringify(value)).byteLength > maximum) fail(\"plugin_ui_payload_too_large\");\n}\nfunction envelope(value: Record<string, unknown>): void {\n if (value.version !== 1 || !isPluginUiUuid(value.mountId)) fail();\n}\nexport function parsePluginUiBridgeReceipt(value: unknown): PluginUiActionReceipt {\n const r = record(value);\n exact(r, [\"requestId\", \"runId\", \"instanceId\", \"revision\", \"status\"]);\n if (!isPluginUiUuid(r.requestId) || !isPluginUiUuid(r.instanceId) || !text(r.runId)\n || !isPluginUiRevision(r.revision)\n || !oneOf(r.status, [\"pending\", \"running\", \"completed\", \"failed\", \"interrupted\"])) fail();\n return structuredClone(r) as unknown as PluginUiActionReceipt;\n}\nexport function parsePluginUiBridgeSnapshot(value: unknown): PluginUiViewSnapshot {\n const r = record(value);\n exact(r, [\"instanceId\", \"revision\", \"status\", \"data\", \"actions\", \"readOnly\", \"theme\", \"locale\", \"surface\"],\n [\"activeAction\", \"lastAction\"]);\n if (!isPluginUiUuid(r.instanceId) || !isPluginUiRevision(r.revision)\n || !oneOf(r.status, [\"open\", \"resolved\", \"dismissed\"])\n || typeof r.readOnly !== \"boolean\" || !oneOf(r.theme, [\"light\", \"dark\"])\n || !oneOf(r.surface, [\"tool-result\", \"session-sidebar\"]) || !text(r.locale)) fail();\n if (!isPluginUiJsonRecord(r.data, PLUGIN_UI_LIMITS.dataBytes)) fail();\n if (!Array.isArray(r.actions) || r.actions.length > PLUGIN_UI_LIMITS.actionsPerComponent) fail();\n const ids = new Set<string>();\n for (const action of r.actions) {\n const a = record(action);\n exact(a, [\"id\", \"label\", \"completion\"]);\n if (!text(a.id) || !text(a.label, PLUGIN_UI_LIMITS.titleCodePoints)\n || !oneOf(a.completion, [\"keep-open\", \"resolve\"]) || ids.has(a.id)) fail();\n ids.add(a.id);\n }\n if (Object.hasOwn(r, \"activeAction\")) {\n const receipt = parsePluginUiBridgeReceipt(r.activeAction);\n if (receipt.instanceId !== r.instanceId || receipt.revision > (r.revision as number)) fail();\n }\n if (Object.hasOwn(r, \"lastAction\")) {\n const last = record(r.lastAction);\n exact(last, [\"receipt\", \"executionState\", \"message\"]);\n const receipt = parsePluginUiBridgeReceipt(last.receipt);\n if (receipt.instanceId !== r.instanceId || receipt.revision > (r.revision as number)\n || !oneOf(last.executionState, [\"not_started\", \"completed\", \"unknown\"])\n || typeof last.message !== \"string\" || [...last.message].length > PLUGIN_UI_BRIDGE_LIMITS.resultCodePoints) fail();\n }\n bytes(r, PLUGIN_UI_BRIDGE_LIMITS.snapshotBytes);\n return structuredClone(r) as unknown as PluginUiViewSnapshot;\n}\nexport function parsePluginUiBridgeRequest(value: unknown): PluginUiBridgeRequest {\n const r = record(value);\n exact(r, [\"version\", \"mountId\", \"id\", \"method\", \"params\"]);\n envelope(r);\n if (!text(r.id, 80)) fail();\n const p = record(r.params);\n switch (r.method) {\n case \"getSnapshot\": case \"openSidebar\": exact(p, []); break;\n case \"resize\":\n exact(p, [\"height\"]);\n if (typeof p.height !== \"number\" || !Number.isFinite(p.height)\n || p.height < PLUGIN_UI_BRIDGE_LIMITS.minHeight || p.height > PLUGIN_UI_BRIDGE_LIMITS.maxHeight) fail();\n break;\n case \"dismiss\":\n exact(p, [\"expectedRevision\"]);\n if (!isPluginUiRevision(p.expectedRevision)) fail();\n break;\n case \"requestAction\":\n exact(p, [\"actionId\", \"args\", \"expectedRevision\"]);\n if (!text(p.actionId) || !isPluginUiRevision(p.expectedRevision)) fail();\n const checked = validatePluginUiJsonRecord(p.args, PLUGIN_UI_LIMITS.actionArgsBytes);\n if (!checked.valid) fail(checked.reason === \"payload_too_large\" ? \"plugin_ui_payload_too_large\" : \"plugin_ui_invalid_message\");\n break;\n default: fail(\"plugin_ui_method_not_supported\");\n }\n bytes(r, PLUGIN_UI_BRIDGE_LIMITS.requestBytes);\n return structuredClone(r) as unknown as PluginUiBridgeRequest;\n}\nexport function readPluginUiBridgeResponse(value: unknown): PluginUiBridgeResponse | undefined {\n try {\n const r = record(value);\n envelope(r);\n if (!text(r.id, 80)) fail();\n if (Object.hasOwn(r, \"error\")) {\n exact(r, [\"version\", \"mountId\", \"id\", \"error\"]);\n const e = record(r.error); exact(e, [\"code\", \"message\"]);\n if (!text(e.code, 80) || !/^plugin_ui_[a-z0-9_]+$/.test(e.code)\n || typeof e.message !== \"string\" || [...e.message].length > 1024) fail();\n } else {\n exact(r, [\"version\", \"mountId\", \"id\", \"result\"]);\n if (r.result !== null) {\n const result = record(r.result);\n if (Object.hasOwn(result, \"requestId\")) parsePluginUiBridgeReceipt(result);\n else parsePluginUiBridgeSnapshot(result);\n }\n }\n bytes(r, PLUGIN_UI_BRIDGE_LIMITS.snapshotBytes);\n return structuredClone(r) as unknown as PluginUiBridgeResponse;\n } catch { return undefined; }\n}\nexport function readPluginUiBridgeNotification(value: unknown): PluginUiBridgeNotification | undefined {\n try {\n const r = record(value); envelope(r);\n if (r.type === \"dispose\") exact(r, [\"version\", \"mountId\", \"type\"]);\n else if (r.type === \"snapshot\") {\n exact(r, [\"version\", \"mountId\", \"type\", \"snapshot\"]);\n parsePluginUiBridgeSnapshot(r.snapshot);\n } else fail();\n bytes(r, PLUGIN_UI_BRIDGE_LIMITS.snapshotBytes);\n return structuredClone(r) as unknown as PluginUiBridgeNotification;\n } catch { return undefined; }\n}\n/** Wire JSON is size-checked before parsing; domain validators own their depth limits. */\nexport function decodePluginUiBridgeMessage(value: unknown, maximum: number = PLUGIN_UI_BRIDGE_LIMITS.requestBytes): unknown {\n if (typeof value !== \"string\") fail();\n if (value.length > maximum || new TextEncoder().encode(value).byteLength > maximum) fail(\"plugin_ui_payload_too_large\");\n try { return JSON.parse(value); } catch { return fail(); }\n}\nexport function encodePluginUiBridgeMessage(value: unknown): string {\n const r = record(value);\n if (Object.hasOwn(r, \"method\")) return JSON.stringify(parsePluginUiBridgeRequest(r));\n const message = Object.hasOwn(r, \"type\") ? readPluginUiBridgeNotification(r) : readPluginUiBridgeResponse(r);\n if (!message) fail();\n return JSON.stringify(message);\n}\n",
20
+ "import { isPluginUiRecord } from \"./plugin-ui.js\";\nimport { ProtocolValidationError } from \"./requests.js\";\n\nexport interface PluginUiAppearance {\n theme: \"light\" | \"dark\";\n colors: {\n background: string;\n foreground: string;\n muted: string;\n mutedForeground: string;\n primary: string;\n primaryForeground: string;\n accent: string;\n border: string;\n destructive: string;\n };\n fontFamily: string;\n fontSizePx: number;\n reducedMotion: boolean;\n}\n\nconst colorFields = [\n \"background\",\n \"foreground\",\n \"muted\",\n \"mutedForeground\",\n \"primary\",\n \"primaryForeground\",\n \"accent\",\n \"border\",\n \"destructive\",\n] as const;\n\n/** Only plain values travel over the bridge; actual CSS color support is checked by the browser. */\nexport function parsePluginUiAppearance(value: unknown): PluginUiAppearance {\n function invalid(): never {\n throw new ProtocolValidationError(\"Invalid Plugin UI appearance\");\n }\n const exact = (record: Record<string, unknown>, keys: readonly string[]) =>\n keys.every((key) => Object.hasOwn(record, key)) &&\n Object.keys(record).every((key) => keys.includes(key));\n const safeValue = (value: unknown, limit: number): value is string =>\n typeof value === \"string\" &&\n value.trim().length > 0 &&\n value.length <= limit &&\n !/[;{}\\\\\\u0000-\\u001f\\u007f]/.test(value) &&\n !/url\\s*\\(|var\\s*\\(|\\/\\*|\\*\\/|@|:\\/\\//i.test(value);\n if (\n !isPluginUiRecord(value) ||\n !exact(value, [\n \"theme\",\n \"colors\",\n \"fontFamily\",\n \"fontSizePx\",\n \"reducedMotion\",\n ]) ||\n (value.theme !== \"light\" && value.theme !== \"dark\") ||\n !isPluginUiRecord(value.colors) ||\n !exact(value.colors, colorFields) ||\n !safeValue(value.fontFamily, 256) ||\n typeof value.fontSizePx !== \"number\" ||\n !Number.isFinite(value.fontSizePx) ||\n value.fontSizePx < 8 ||\n value.fontSizePx > 32 ||\n typeof value.reducedMotion !== \"boolean\"\n )\n invalid();\n const colors = value.colors as Record<string, unknown>;\n if (!colorFields.every((key) => safeValue(colors[key], 128))) invalid();\n return structuredClone(value) as unknown as PluginUiAppearance;\n}\n",
21
+ "import {\n isPluginUiRecord,\n isPluginUiRevision,\n isPluginUiUuid,\n validatePluginUiJsonRecord,\n type JsonValue,\n} from \"./plugin-ui.js\";\nimport { ProtocolValidationError } from \"./requests.js\";\n\nexport const PLUGIN_UI_CONVERSATION_LIMITS = { dataBytes: 32 * 1024 } as const;\n\nexport interface PluginUiConversationRequest {\n mode: \"draft\" | \"submit\";\n expectedRevision: number;\n text: string;\n data: Record<string, JsonValue>;\n}\nexport interface PluginUiConversationPrepared {\n mode: \"draft\" | \"submit\";\n instanceId: string;\n revision: number;\n promptText: string;\n}\nexport type SubmitPluginUiConversationInput = Omit<\n PluginUiConversationRequest,\n \"mode\"\n> & { requestId: string };\nexport type PluginUiConversationReceipt =\n | {\n kind: \"conversation\";\n mode: \"draft\";\n instanceId: string;\n revision: number;\n added: true;\n }\n | {\n kind: \"conversation\";\n mode: \"submit\";\n instanceId: string;\n revision: number;\n requestId: string;\n inputId: string;\n runId: string;\n status: \"pending\" | \"running\" | \"completed\" | \"failed\" | \"interrupted\";\n };\nexport interface PluginUiSubmissionRecord {\n schemaVersion: 2;\n requestId: string;\n requestFingerprint: string;\n expectedRevision: number;\n inputId: string;\n runId: string;\n pluginDigest: string;\n componentDigest: string;\n acceptedAt: number;\n}\n\nfunction invalid(field?: string): never {\n throw new ProtocolValidationError(\"Invalid Plugin UI conversation\", field);\n}\nfunction exact(\n value: unknown,\n keys: readonly string[],\n): Record<string, unknown> {\n if (\n !isPluginUiRecord(value) ||\n !keys.every((key) => Object.hasOwn(value, key)) ||\n Object.keys(value).some((key) => !keys.includes(key))\n )\n invalid();\n return value;\n}\nconst nonempty = (value: unknown): value is string =>\n typeof value === \"string\" && !!value.trim();\nconst mode = (value: unknown) => value === \"draft\" || value === \"submit\";\nconst digest = (value: unknown) =>\n typeof value === \"string\" && /^[0-9a-f]{64}$/i.test(value);\nfunction payload(r: Record<string, unknown>): void {\n if (!isPluginUiRevision(r.expectedRevision)) invalid(\"expectedRevision\");\n if (!nonempty(r.text) || [...r.text].length > 4096) invalid(\"text\");\n const checked = validatePluginUiJsonRecord(\n r.data,\n PLUGIN_UI_CONVERSATION_LIMITS.dataBytes,\n );\n if (!checked.valid)\n throw new ProtocolValidationError(\n \"Invalid Plugin UI conversation data\",\n \"data\",\n checked.reason,\n );\n}\nexport function parsePluginUiConversationRequest(\n value: unknown,\n): PluginUiConversationRequest {\n const r = exact(value, [\"mode\", \"expectedRevision\", \"text\", \"data\"]);\n if (!mode(r.mode)) invalid(\"mode\");\n payload(r);\n return structuredClone(r) as unknown as PluginUiConversationRequest;\n}\nexport function parseSubmitPluginUiConversationInput(\n value: unknown,\n): SubmitPluginUiConversationInput {\n const r = exact(value, [\"requestId\", \"expectedRevision\", \"text\", \"data\"]);\n if (!isPluginUiUuid(r.requestId)) invalid(\"requestId\");\n payload(r);\n return structuredClone(r) as unknown as SubmitPluginUiConversationInput;\n}\nexport function parsePluginUiConversationPrepared(\n value: unknown,\n): PluginUiConversationPrepared {\n const r = exact(value, [\"mode\", \"instanceId\", \"revision\", \"promptText\"]);\n if (\n !mode(r.mode) ||\n !isPluginUiUuid(r.instanceId) ||\n !isPluginUiRevision(r.revision) ||\n !nonempty(r.promptText)\n )\n invalid();\n if (new TextEncoder().encode(r.promptText).byteLength > 64 * 1024)\n throw new ProtocolValidationError(\n \"Plugin UI conversation prompt is too large\",\n \"promptText\",\n \"payload_too_large\",\n );\n return structuredClone(r) as unknown as PluginUiConversationPrepared;\n}\nexport function parsePluginUiConversationReceipt(\n value: unknown,\n): PluginUiConversationReceipt {\n if (!isPluginUiRecord(value)) invalid();\n const r = exact(\n value,\n value.mode === \"draft\"\n ? [\"kind\", \"mode\", \"instanceId\", \"revision\", \"added\"]\n : [\n \"kind\",\n \"mode\",\n \"instanceId\",\n \"revision\",\n \"requestId\",\n \"inputId\",\n \"runId\",\n \"status\",\n ],\n );\n if (\n r.kind !== \"conversation\" ||\n !mode(r.mode) ||\n !isPluginUiUuid(r.instanceId) ||\n !isPluginUiRevision(r.revision)\n )\n invalid();\n if (r.mode === \"draft\") {\n if (r.added !== true) invalid(\"added\");\n } else if (\n !isPluginUiUuid(r.requestId) ||\n !nonempty(r.inputId) ||\n !nonempty(r.runId) ||\n typeof r.status !== \"string\" ||\n ![\"pending\", \"running\", \"completed\", \"failed\", \"interrupted\"].includes(\n r.status,\n )\n )\n invalid();\n return structuredClone(r) as unknown as PluginUiConversationReceipt;\n}\nexport function parsePluginUiSubmissionRecord(\n value: unknown,\n): PluginUiSubmissionRecord {\n const r = exact(value, [\n \"schemaVersion\",\n \"requestId\",\n \"requestFingerprint\",\n \"expectedRevision\",\n \"inputId\",\n \"runId\",\n \"pluginDigest\",\n \"componentDigest\",\n \"acceptedAt\",\n ]);\n if (\n r.schemaVersion !== 2 ||\n !isPluginUiUuid(r.requestId) ||\n !isPluginUiRevision(r.expectedRevision) ||\n !nonempty(r.inputId) ||\n !nonempty(r.runId) ||\n !digest(r.requestFingerprint) ||\n !digest(r.pluginDigest) ||\n !digest(r.componentDigest) ||\n !isPluginUiRevision(r.acceptedAt)\n )\n invalid();\n return structuredClone(r) as unknown as PluginUiSubmissionRecord;\n}\n",
22
+ "import {\n isPluginUiJsonRecord,\n isPluginUiRecord,\n isPluginUiRevision,\n isPluginUiUuid,\n PLUGIN_UI_LIMITS,\n validatePluginUiJsonRecord,\n type JsonValue,\n type PluginUiActionReceipt,\n} from \"./plugin-ui.js\";\nimport {\n parsePluginUiAppearance,\n type PluginUiAppearance,\n} from \"./plugin-ui-appearance.js\";\nimport { ProtocolValidationError } from \"./requests.js\";\nimport {\n parsePluginUiConversationReceipt,\n parsePluginUiConversationRequest,\n type PluginUiConversationReceipt,\n} from \"./plugin-ui-conversation.js\";\n\nexport const PLUGIN_UI_BRIDGE_LIMITS = {\n requestBytes: 64 * 1024,\n snapshotBytes: 512 * 1024,\n pendingRequests: 16,\n requestsPerMinute: 60,\n rateWindowMs: 60_000,\n initializationMs: 10_000,\n requestMs: 30_000,\n confirmationMs: 300_000,\n confirmedRequestMs: 330_000,\n framesPerWindow: 2,\n minHeight: 160,\n maxHeight: 640,\n resultCodePoints: 1024,\n} as const;\n\nexport type PluginUiSurface = \"tool-result\" | \"session-sidebar\";\nexport interface PluginUiViewSnapshot {\n instanceId: string;\n revision: number;\n status: \"open\" | \"resolved\" | \"dismissed\";\n data: Record<string, JsonValue>;\n actions: Array<{\n id: string;\n label: string;\n completion: \"keep-open\" | \"resolve\";\n }>;\n readOnly: boolean;\n activeAction?: PluginUiActionReceipt;\n lastAction?: {\n receipt: PluginUiActionReceipt;\n executionState: \"not_started\" | \"completed\" | \"unknown\";\n message: string;\n };\n appearance: PluginUiAppearance;\n capabilities: { draft: boolean; submit: boolean };\n locale: string;\n surface: PluginUiSurface;\n}\nexport type PluginUiBridgeMethod =\n | \"getSnapshot\"\n | \"requestAction\"\n | \"requestConversation\"\n | \"resize\"\n | \"dismiss\";\nexport interface PluginUiBridgeRequest {\n version: 2;\n mountId: string;\n id: string;\n method: PluginUiBridgeMethod;\n params: Record<string, unknown>;\n}\nexport type PluginUiBridgeResponse = {\n version: 2;\n mountId: string;\n id: string;\n} & (\n | {\n result:\n | PluginUiViewSnapshot\n | PluginUiActionReceipt\n | PluginUiConversationReceipt\n | null;\n }\n | { error: { code: string; message: string } }\n);\nexport type PluginUiBridgeNotification =\n | {\n version: 2;\n mountId: string;\n type: \"snapshot\";\n snapshot: PluginUiViewSnapshot;\n }\n | { version: 2; mountId: string; type: \"dispose\" };\n\nexport class PluginUiBridgeError extends Error {\n constructor(\n readonly code: string,\n message: string = code,\n ) {\n super(message);\n this.name = \"PluginUiBridgeError\";\n }\n}\nfunction fail(code = \"plugin_ui_invalid_message\"): never {\n throw new PluginUiBridgeError(code);\n}\nfunction record(value: unknown): Record<string, unknown> {\n if (!isPluginUiRecord(value)) fail();\n return value;\n}\nfunction exact(\n value: Record<string, unknown>,\n required: string[],\n optional: string[] = [],\n): void {\n if (\n !required.every((key) => Object.hasOwn(value, key)) ||\n !Object.keys(value).every(\n (key) => required.includes(key) || optional.includes(key),\n )\n )\n fail();\n}\nconst text = (value: unknown, maximum?: number): value is string =>\n typeof value === \"string\" &&\n value.length > 0 &&\n (maximum === undefined || [...value].length <= maximum);\nconst oneOf = (value: unknown, choices: readonly string[]): boolean =>\n typeof value === \"string\" && choices.includes(value);\nfunction bytes(value: unknown, maximum: number): void {\n if (new TextEncoder().encode(JSON.stringify(value)).byteLength > maximum)\n fail(\"plugin_ui_payload_too_large\");\n}\nfunction envelope(value: Record<string, unknown>): void {\n if (value.version !== 2 || !isPluginUiUuid(value.mountId)) fail();\n}\nexport function parsePluginUiBridgeReceipt(\n value: unknown,\n): PluginUiActionReceipt {\n const r = record(value);\n exact(r, [\"requestId\", \"runId\", \"instanceId\", \"revision\", \"status\"]);\n if (\n !isPluginUiUuid(r.requestId) ||\n !isPluginUiUuid(r.instanceId) ||\n !text(r.runId) ||\n !isPluginUiRevision(r.revision) ||\n !oneOf(r.status, [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"interrupted\",\n ])\n )\n fail();\n return structuredClone(r) as unknown as PluginUiActionReceipt;\n}\nexport function parsePluginUiBridgeSnapshot(\n value: unknown,\n): PluginUiViewSnapshot {\n const r = record(value);\n exact(\n r,\n [\n \"instanceId\",\n \"revision\",\n \"status\",\n \"data\",\n \"actions\",\n \"readOnly\",\n \"appearance\",\n \"capabilities\",\n \"locale\",\n \"surface\",\n ],\n [\"activeAction\", \"lastAction\"],\n );\n if (\n !isPluginUiUuid(r.instanceId) ||\n !isPluginUiRevision(r.revision) ||\n !oneOf(r.status, [\"open\", \"resolved\", \"dismissed\"]) ||\n typeof r.readOnly !== \"boolean\" ||\n !oneOf(r.surface, [\"tool-result\", \"session-sidebar\"]) ||\n !text(r.locale)\n )\n fail();\n try {\n parsePluginUiAppearance(r.appearance);\n } catch {\n fail();\n }\n const capabilities = record(r.capabilities);\n exact(capabilities, [\"draft\", \"submit\"]);\n if (\n typeof capabilities.draft !== \"boolean\" ||\n typeof capabilities.submit !== \"boolean\"\n )\n fail();\n if (!isPluginUiJsonRecord(r.data, PLUGIN_UI_LIMITS.dataBytes)) fail();\n if (\n !Array.isArray(r.actions) ||\n r.actions.length > PLUGIN_UI_LIMITS.actionsPerComponent\n )\n fail();\n const ids = new Set<string>();\n for (const action of r.actions) {\n const a = record(action);\n exact(a, [\"id\", \"label\", \"completion\"]);\n if (\n !text(a.id) ||\n !text(a.label, PLUGIN_UI_LIMITS.titleCodePoints) ||\n !oneOf(a.completion, [\"keep-open\", \"resolve\"]) ||\n ids.has(a.id)\n )\n fail();\n ids.add(a.id);\n }\n if (Object.hasOwn(r, \"activeAction\")) {\n const receipt = parsePluginUiBridgeReceipt(r.activeAction);\n if (\n receipt.instanceId !== r.instanceId ||\n receipt.revision > (r.revision as number)\n )\n fail();\n }\n if (Object.hasOwn(r, \"lastAction\")) {\n const last = record(r.lastAction);\n exact(last, [\"receipt\", \"executionState\", \"message\"]);\n const receipt = parsePluginUiBridgeReceipt(last.receipt);\n if (\n receipt.instanceId !== r.instanceId ||\n receipt.revision > (r.revision as number) ||\n !oneOf(last.executionState, [\"not_started\", \"completed\", \"unknown\"]) ||\n typeof last.message !== \"string\" ||\n [...last.message].length > PLUGIN_UI_BRIDGE_LIMITS.resultCodePoints\n )\n fail();\n }\n bytes(r, PLUGIN_UI_BRIDGE_LIMITS.snapshotBytes);\n return structuredClone(r) as unknown as PluginUiViewSnapshot;\n}\nexport function parsePluginUiBridgeRequest(\n value: unknown,\n): PluginUiBridgeRequest {\n const r = record(value);\n exact(r, [\"version\", \"mountId\", \"id\", \"method\", \"params\"]);\n envelope(r);\n if (!text(r.id, 80)) fail();\n const p = record(r.params);\n switch (r.method) {\n case \"getSnapshot\":\n exact(p, []);\n break;\n case \"resize\":\n exact(p, [\"height\"]);\n if (\n typeof p.height !== \"number\" ||\n !Number.isFinite(p.height) ||\n p.height < PLUGIN_UI_BRIDGE_LIMITS.minHeight ||\n p.height > PLUGIN_UI_BRIDGE_LIMITS.maxHeight\n )\n fail();\n break;\n case \"dismiss\":\n exact(p, [\"expectedRevision\"]);\n if (!isPluginUiRevision(p.expectedRevision)) fail();\n break;\n case \"requestConversation\":\n try {\n parsePluginUiConversationRequest(p);\n } catch (error) {\n fail(\n error instanceof ProtocolValidationError &&\n error.details?.reason === \"payload_too_large\"\n ? \"plugin_ui_payload_too_large\"\n : \"plugin_ui_invalid_message\",\n );\n }\n break;\n case \"requestAction\":\n exact(p, [\"actionId\", \"args\", \"expectedRevision\"]);\n if (!text(p.actionId) || !isPluginUiRevision(p.expectedRevision)) fail();\n const checked = validatePluginUiJsonRecord(\n p.args,\n PLUGIN_UI_LIMITS.actionArgsBytes,\n );\n if (!checked.valid)\n fail(\n checked.reason === \"payload_too_large\"\n ? \"plugin_ui_payload_too_large\"\n : \"plugin_ui_invalid_message\",\n );\n break;\n default:\n fail(\"plugin_ui_method_not_supported\");\n }\n bytes(r, PLUGIN_UI_BRIDGE_LIMITS.requestBytes);\n return structuredClone(r) as unknown as PluginUiBridgeRequest;\n}\nexport function readPluginUiBridgeResponse(\n value: unknown,\n): PluginUiBridgeResponse | undefined {\n try {\n const r = record(value);\n envelope(r);\n if (!text(r.id, 80)) fail();\n if (Object.hasOwn(r, \"error\")) {\n exact(r, [\"version\", \"mountId\", \"id\", \"error\"]);\n const e = record(r.error);\n exact(e, [\"code\", \"message\"]);\n if (\n !text(e.code, 80) ||\n !/^plugin_ui_[a-z0-9_]+$/.test(e.code) ||\n typeof e.message !== \"string\" ||\n [...e.message].length > 1024\n )\n fail();\n } else {\n exact(r, [\"version\", \"mountId\", \"id\", \"result\"]);\n if (r.result !== null) {\n const result = record(r.result);\n if (result.kind === \"conversation\")\n parsePluginUiConversationReceipt(result);\n else if (Object.hasOwn(result, \"requestId\"))\n parsePluginUiBridgeReceipt(result);\n else parsePluginUiBridgeSnapshot(result);\n }\n }\n bytes(r, PLUGIN_UI_BRIDGE_LIMITS.snapshotBytes);\n return structuredClone(r) as unknown as PluginUiBridgeResponse;\n } catch {\n return undefined;\n }\n}\nexport function readPluginUiBridgeNotification(\n value: unknown,\n): PluginUiBridgeNotification | undefined {\n try {\n const r = record(value);\n envelope(r);\n if (r.type === \"dispose\") exact(r, [\"version\", \"mountId\", \"type\"]);\n else if (r.type === \"snapshot\") {\n exact(r, [\"version\", \"mountId\", \"type\", \"snapshot\"]);\n parsePluginUiBridgeSnapshot(r.snapshot);\n } else fail();\n bytes(r, PLUGIN_UI_BRIDGE_LIMITS.snapshotBytes);\n return structuredClone(r) as unknown as PluginUiBridgeNotification;\n } catch {\n return undefined;\n }\n}\n/** Wire JSON is size-checked before parsing; domain validators own their depth limits. */\nexport function decodePluginUiBridgeMessage(\n value: unknown,\n maximum: number = PLUGIN_UI_BRIDGE_LIMITS.requestBytes,\n): unknown {\n if (typeof value !== \"string\") fail();\n if (\n value.length > maximum ||\n new TextEncoder().encode(value).byteLength > maximum\n )\n fail(\"plugin_ui_payload_too_large\");\n try {\n return JSON.parse(value);\n } catch {\n return fail();\n }\n}\nexport function encodePluginUiBridgeMessage(value: unknown): string {\n const r = record(value);\n if (Object.hasOwn(r, \"method\"))\n return JSON.stringify(parsePluginUiBridgeRequest(r));\n const message = Object.hasOwn(r, \"type\")\n ? readPluginUiBridgeNotification(r)\n : readPluginUiBridgeResponse(r);\n if (!message) fail();\n return JSON.stringify(message);\n}\n",
21
23
  "import { ProtocolValidationError } from \"./requests.js\";\n\nexport const MAX_NOTE_CONTENT_LENGTH = 100_000;\n\nexport interface NoteRecord {\n id: string;\n content: string;\n revision: number;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface CreateNoteInput {\n content: string;\n}\n\nexport interface UpdateNoteInput {\n content: string;\n expectedRevision: number;\n}\n\nexport function parseCreateNoteInput(value: unknown): CreateNoteInput {\n const body = readRecord(value);\n rejectUnknownFields(body, [\"content\"]);\n const content = readContent(body.content);\n if (!content.trim()) {\n throw new ProtocolValidationError(\"content must not be blank\", \"content\");\n }\n return { content };\n}\n\nexport function parseUpdateNoteInput(value: unknown): UpdateNoteInput {\n const body = readRecord(value);\n rejectUnknownFields(body, [\"content\", \"expectedRevision\"]);\n const content = readContent(body.content);\n if (\n !Number.isSafeInteger(body.expectedRevision) ||\n Number(body.expectedRevision) < 1\n ) {\n throw new ProtocolValidationError(\n \"expectedRevision must be a positive safe integer\",\n \"expectedRevision\",\n );\n }\n return { content, expectedRevision: Number(body.expectedRevision) };\n}\n\nfunction readRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new ProtocolValidationError(\"Request body must be a JSON object\");\n }\n return value as Record<string, unknown>;\n}\n\nfunction readContent(value: unknown): string {\n if (typeof value !== \"string\") {\n throw new ProtocolValidationError(\"content must be a string\", \"content\");\n }\n if (value.length > MAX_NOTE_CONTENT_LENGTH) {\n throw new ProtocolValidationError(\n \"content is too large\",\n \"content\",\n \"payload_too_large\",\n );\n }\n return value;\n}\n\nfunction rejectUnknownFields(\n body: Record<string, unknown>,\n allowed: readonly string[],\n): void {\n const unknown = Object.keys(body).find((field) => !allowed.includes(field));\n if (unknown) {\n throw new ProtocolValidationError(\n `Unknown note field: ${unknown}`,\n unknown,\n );\n }\n}\n",
22
- "export * from \"./session.js\";\nexport * from \"./maintenance.js\";\nexport * from \"./runtime-config.js\";\nexport * from \"./requests.js\";\nexport * from \"./job.js\";\nexport * from \"./terminal.js\";\nexport * from \"./serialization.js\";\nexport * from \"./channel.js\";\nexport * from \"./channel-runtime.js\";\nexport * from \"./capabilities.js\";\nexport * from \"./attachment.js\";\nexport * from \"./session-input-items.js\";\nexport * from \"./session-goals.js\";\nexport * from \"./mcp-oauth.js\";\nexport * from \"./execution-observability.js\";\nexport * from \"./auto-review.js\";\nexport * from \"./workspace-changes.js\";\nexport * from \"./plugin-ui.js\";\nexport * from \"./plugin-ui-requests.js\";\nexport * from \"./plugin-ui-bridge.js\";\nexport * from \"./notes.js\";\nexport * from \"./memory.js\";\n",
24
+ "export * from \"./session.js\";\nexport * from \"./maintenance.js\";\nexport * from \"./runtime-config.js\";\nexport * from \"./requests.js\";\nexport * from \"./job.js\";\nexport * from \"./terminal.js\";\nexport * from \"./serialization.js\";\nexport * from \"./channel.js\";\nexport * from \"./channel-runtime.js\";\nexport * from \"./capabilities.js\";\nexport * from \"./attachment.js\";\nexport * from \"./session-input-items.js\";\nexport * from \"./session-goals.js\";\nexport * from \"./mcp-oauth.js\";\nexport * from \"./execution-observability.js\";\nexport * from \"./auto-review.js\";\nexport * from \"./workspace-changes.js\";\nexport * from \"./plugin-ui.js\";\nexport * from \"./plugin-presentation.js\";\nexport * from \"./plugin-ui-requests.js\";\nexport * from \"./plugin-ui-bridge.js\";\nexport * from \"./plugin-ui-appearance.js\";\nexport * from \"./plugin-ui-conversation.js\";\nexport * from \"./notes.js\";\nexport * from \"./memory.js\";\n",
23
25
  "/**\n * ProtocolClient: 协议协商与健康检查客户端。\n *\n * 负责:\n * - GET /health 服务健康探测 (无需鉴权)\n * - GET /capabilities 服务协议能力探测与版本协商 (无需鉴权)\n * - 协议兼容性断言与 IncompatibleProtocolError 抛出\n *\n * 约束:\n * - 构造只接收 HttpTransport\n * - 业务请求的强制握手由 HttpTransport 缓存并执行\n */\n\nimport type {\n ClientProtocolSupport,\n ServerCapabilities,\n} from \"@vykor/protocol\";\nimport {\n checkProtocolCompatibility,\n CURRENT_PROTOCOL_VERSION,\n parseServerCapabilities,\n} from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type { VykorServerHealth } from \"../types/index.js\";\n\nexport class IncompatibleProtocolError extends Error {\n constructor(\n readonly capabilities: ServerCapabilities,\n message: string,\n ) {\n super(message);\n this.name = \"IncompatibleProtocolError\";\n }\n}\n\nexport interface CapabilitiesOptions {\n signal?: AbortSignal;\n support?: ClientProtocolSupport;\n}\n\nexport interface HealthOptions {\n signal?: AbortSignal;\n}\n\nexport class ProtocolClient {\n constructor(private readonly transport: HttpTransport) {}\n\n /** `GET /health` */\n async health(options: HealthOptions = {}): Promise<VykorServerHealth> {\n return this.transport.request<VykorServerHealth>(\"/health\", {\n auth: false,\n signal: options.signal,\n });\n }\n\n /**\n * `GET /capabilities`\n * 连接产品应先调用它,再根据 features 决定显示哪些功能。\n */\n async capabilities(\n options: CapabilitiesOptions = {},\n ): Promise<ServerCapabilities> {\n const value = await this.transport.request<unknown>(\"/capabilities\", {\n auth: false,\n signal: options.signal,\n });\n const capabilities = parseServerCapabilities(value);\n const compatibility = checkProtocolCompatibility(\n capabilities,\n options.support ?? { version: CURRENT_PROTOCOL_VERSION },\n );\n if (!compatibility.compatible) {\n throw new IncompatibleProtocolError(\n capabilities,\n compatibility.reason ??\n \"Client and server protocol versions are incompatible\",\n );\n }\n return capabilities;\n }\n}\n",
24
26
  "/**\n * HttpTransport: Vykor HTTP 传输内核。\n *\n * 负责:\n * - Base URL 规范化\n * - Bearer Token 鉴权头\n * - fetch 注入与执行\n * - URL query 拼接\n * - 请求体序列化与错误转换 (VykorApiError)\n * - 基础响应解析与流式透传\n *\n * 约束:不感知任何业务 Resource 领域逻辑。\n */\n\nimport {\n ProtocolDataError,\n CURRENT_PROTOCOL_VERSION,\n PROTOCOL_VERSION_HEADER,\n checkProtocolCompatibility,\n parseServerCapabilities,\n type ServerCapabilities,\n} from \"@vykor/protocol\";\nimport { IncompatibleProtocolError } from \"../protocol/protocol-client.js\";\n\nexport interface HttpTransportOptions {\n baseUrl: string;\n token?: string;\n fetch?: typeof fetch;\n}\n\nexport interface HttpRequestOptions {\n method?: string;\n body?: unknown;\n headers?: RequestInit[\"headers\"];\n query?: Record<string, unknown>;\n signal?: AbortSignal;\n auth?: boolean;\n}\n\nexport interface RawRequestOptions extends RequestInit {\n duplex?: \"half\";\n query?: Record<string, unknown>;\n auth?: boolean;\n}\n\n/** HTTP API 非 2xx 时抛出;携带 status 与原始响应体。 */\nexport class VykorApiError extends Error {\n constructor(\n message: string,\n readonly status: number,\n readonly body: unknown,\n ) {\n super(message);\n this.name = \"VykorApiError\";\n }\n}\n\nexport function responseField(value: unknown, field: string): unknown {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new ProtocolDataError(\"Response body must be an object\");\n }\n if (!(field in value)) {\n throw new ProtocolDataError(`Response body is missing ${field}`, field);\n }\n return (value as Record<string, unknown>)[field];\n}\n\nexport function responseArray<T>(\n value: unknown,\n field: string,\n decode: (item: unknown) => T,\n): T[] {\n const items = responseField(value, field);\n if (!Array.isArray(items)) {\n throw new ProtocolDataError(`Response ${field} must be an array`, field);\n }\n return items.map(decode);\n}\n\n/** Normalize a daemon base URL without accepting credentials or request fragments. */\nexport function normalizeDaemonBaseUrl(value: string): string {\n const raw = value.trim();\n if (!raw) throw new Error(\"Daemon URL is required\");\n\n let url: URL;\n try {\n url = new URL(raw);\n } catch {\n throw new Error(\"Daemon URL must be an absolute http or https URL\");\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n throw new Error(\"Daemon URL must use http or https\");\n }\n if (url.username || url.password) {\n throw new Error(\n \"Daemon URL must not contain credentials; use a bearer token instead\",\n );\n }\n if (url.search || url.hash) {\n throw new Error(\n \"Daemon URL must not contain query parameters or a fragment\",\n );\n }\n\n const pathname = url.pathname.replace(/\\/+$/, \"\");\n return `${url.origin}${pathname === \"/\" ? \"\" : pathname}`;\n}\n\nexport function isReadableStream(value: unknown): value is ReadableStream<Uint8Array> {\n return (\n typeof ReadableStream !== \"undefined\" && value instanceof ReadableStream\n );\n}\n\nexport interface AttachmentRangeOptions {\n start?: number;\n end?: number;\n suffixBytes?: number;\n}\n\nexport function attachmentRangeHeader(\n range: AttachmentRangeOptions | undefined,\n): string | undefined {\n if (!range) return undefined;\n const { start, end, suffixBytes } = range;\n if (suffixBytes !== undefined) {\n if (start !== undefined || end !== undefined) {\n throw new Error(\"suffixBytes cannot be combined with start or end\");\n }\n assertPositiveSafeInteger(suffixBytes, \"suffixBytes\");\n return `bytes=-${suffixBytes}`;\n }\n if (start === undefined && end === undefined) return undefined;\n if (start === undefined) {\n throw new Error(\"range start is required when end is provided\");\n }\n assertNonNegativeSafeInteger(start, \"start\");\n if (end === undefined) return `bytes=${start}-`;\n assertNonNegativeSafeInteger(end, \"end\");\n if (end < start) throw new Error(\"range end must not be less than start\");\n return `bytes=${start}-${end}`;\n}\n\nfunction assertNonNegativeSafeInteger(value: number, field: string): void {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error(`${field} must be a non-negative safe integer`);\n }\n}\n\nfunction assertPositiveSafeInteger(value: number, field: string): void {\n if (!Number.isSafeInteger(value) || value < 1) {\n throw new Error(`${field} must be a positive safe integer`);\n }\n}\n\nexport async function throwResponseError(response: Response): Promise<never> {\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n body = await response.text().catch(() => \"\");\n }\n const message =\n body &&\n typeof body === \"object\" &&\n \"error\" in body &&\n typeof body.error === \"string\"\n ? body.error\n : body &&\n typeof body === \"object\" &&\n \"message\" in body &&\n typeof body.message === \"string\"\n ? body.message\n : `Vykor API request failed with ${response.status}`;\n throw new VykorApiError(message, response.status, body);\n}\n\nexport class HttpTransport {\n private protocolHandshake?: Promise<ServerCapabilities>;\n readonly baseUrl: string;\n readonly token?: string;\n readonly fetchImpl: typeof fetch;\n\n constructor(options: HttpTransportOptions) {\n this.baseUrl = normalizeDaemonBaseUrl(options.baseUrl);\n this.token = options.token;\n this.fetchImpl = options.fetch ?? fetch;\n }\n\n isHandshakeExempt(pathname: string): boolean {\n const path = pathname.split(\"?\")[0];\n return path === \"/health\" || path === \"/capabilities\";\n }\n\n ensureProtocol(signal?: AbortSignal): Promise<ServerCapabilities> {\n signal?.throwIfAborted();\n this.protocolHandshake ??= this.requestUnknown(\"/capabilities\", { auth: false })\n .then((value) => {\n const capabilities = parseServerCapabilities(value);\n const result = checkProtocolCompatibility(capabilities, { version: CURRENT_PROTOCOL_VERSION });\n if (!result.compatible) {\n throw new IncompatibleProtocolError(capabilities, result.reason!);\n }\n return capabilities;\n })\n .catch((error: unknown) => {\n this.protocolHandshake = undefined;\n throw error;\n });\n // Cancellation belongs to each waiter, not to the shared connection probe.\n if (!signal) return this.protocolHandshake;\n return new Promise((resolve, reject) => {\n const onAbort = () => reject(signal.reason);\n signal.addEventListener(\"abort\", onAbort, { once: true });\n this.protocolHandshake!.then(resolve, reject).finally(() => {\n signal.removeEventListener(\"abort\", onAbort);\n });\n });\n }\n\n headers(\n jsonOrOptions:\n | boolean\n | { json?: boolean; auth?: boolean; extra?: Record<string, string> } = false,\n auth = true,\n ): Record<string, string> {\n let json = false;\n let authHeader = auth;\n let extra: Record<string, string> | undefined;\n\n if (typeof jsonOrOptions === \"object\" && jsonOrOptions !== null) {\n json = jsonOrOptions.json ?? false;\n authHeader = jsonOrOptions.auth ?? true;\n extra = jsonOrOptions.extra;\n } else {\n json = Boolean(jsonOrOptions);\n authHeader = auth;\n }\n\n return {\n ...(authHeader && this.token ? { authorization: `Bearer ${this.token}` } : {}),\n ...(json ? { \"content-type\": \"application/json\" } : {}),\n ...(extra ?? {}),\n };\n }\n\n path(pathname: string, query: Record<string, unknown> = {}): string {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null || value === false) continue;\n params.set(key, String(value));\n }\n const qs = params.toString();\n return qs ? `${pathname}?${qs}` : pathname;\n }\n\n resolveUrl(pathname: string, query?: Record<string, unknown>): string {\n const resolvedPath = query ? this.path(pathname, query) : pathname;\n return `${this.baseUrl}${resolvedPath}`;\n }\n\n async request<T>(path: string, options: HttpRequestOptions = {}): Promise<T> {\n const business = !this.isHandshakeExempt(path);\n if (business) await this.ensureProtocol(options.signal);\n options.signal?.throwIfAborted();\n const url = this.resolveUrl(path, options.query);\n const hasJsonBody = options.body !== undefined;\n const headers = mergeHeaders(\n this.headers(hasJsonBody, options.auth ?? true),\n options.headers,\n );\n if (business) headers[PROTOCOL_VERSION_HEADER] = String(CURRENT_PROTOCOL_VERSION);\n\n const response = await this.fetchImpl(url, {\n method: options.method ?? \"GET\",\n headers,\n body: hasJsonBody ? JSON.stringify(options.body) : undefined,\n signal: options.signal,\n });\n\n if (!response.ok) {\n await throwResponseError(response);\n }\n return (await response.json()) as T;\n }\n\n async requestUnknown(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<unknown> {\n return this.request<unknown>(path, options);\n }\n\n async requestResponse(\n path: string,\n options: RawRequestOptions = {},\n ): Promise<Response> {\n const business = !this.isHandshakeExempt(path);\n if (business) await this.ensureProtocol(options.signal ?? undefined);\n options.signal?.throwIfAborted();\n const url = this.resolveUrl(path, options.query);\n const auth = options.auth ?? true;\n const headers = mergeHeaders(this.headers(false, auth), options.headers);\n if (business) headers[PROTOCOL_VERSION_HEADER] = String(CURRENT_PROTOCOL_VERSION);\n\n const init: RequestInit & { duplex?: \"half\" } = {\n ...options,\n headers,\n };\n if (isReadableStream(init.body) && !init.duplex) {\n init.duplex = \"half\";\n }\n\n const response = await this.fetchImpl(url, init);\n if (!response.ok) {\n await throwResponseError(response);\n }\n return response;\n }\n\n async throwResponseError(response: Response): Promise<never> {\n return throwResponseError(response);\n }\n}\n\nfunction mergeHeaders(\n defaults: NonNullable<RequestInit[\"headers\"]>,\n overrides?: RequestInit[\"headers\"],\n): Record<string, string> {\n const headers = new Headers(defaults);\n if (overrides) {\n new Headers(overrides).forEach((value, key) => headers.set(key, value));\n }\n return Object.fromEntries(headers.entries());\n}\n",
25
27
  "/**\n * SseTransport: Server-Sent Events 流式传输内核。\n *\n * 负责:\n * - 原始字节流 TextDecoder 解码\n * - SSE 行解析(data:, event:, id:, retry:, 注释行)\n * - 多行 data 拼接(\\n 间隔)\n * - CRLF / LF 空行完成单个 frame\n * - signal / abort 支持\n * - Last-Event-ID 透传与错误处理\n */\n\nimport type { HttpTransport } from \"./http-transport.js\";\n\nexport interface SseStreamOptions<T = unknown> {\n headers?: RequestInit[\"headers\"];\n signal?: AbortSignal;\n lastEventId?: string;\n decode?: (value: unknown) => T;\n reconnect?: boolean;\n reconnectDelayMs?: number;\n noBodyMessage?: string;\n /** 超过该毫秒数没有收到任何原始 SSE 帧(含注释帧)就中止当前连接;0/未设置表示关闭。 */\n idleTimeoutMs?: number;\n}\n\nexport interface SseRawFrame {\n id?: string;\n event?: string;\n data?: string;\n retry?: number;\n}\n\n/**\n * 解析单个 SSE frame 的各字段。\n * 符合 W3C SSE 规范:多行 data 以 LF 拼接;以冒号开头的注释行跳过。\n */\nexport function parseRawSseFrame(frame: string): SseRawFrame | undefined {\n let id: string | undefined;\n let event: string | undefined;\n let retry: number | undefined;\n const dataLines: string[] = [];\n\n for (const line of frame.split(/\\r?\\n/)) {\n if (!line || line.startsWith(\":\")) continue;\n if (line.startsWith(\"data:\")) {\n dataLines.push(line.startsWith(\"data: \") ? line.slice(6) : line.slice(5));\n } else if (line.startsWith(\"event:\")) {\n event = (line.startsWith(\"event: \") ? line.slice(7) : line.slice(6)).trim();\n } else if (line.startsWith(\"id:\")) {\n id = (line.startsWith(\"id: \") ? line.slice(4) : line.slice(3)).trim();\n } else if (line.startsWith(\"retry:\")) {\n const value = (line.startsWith(\"retry: \") ? line.slice(7) : line.slice(6)).trim();\n const parsed = parseInt(value, 10);\n if (!Number.isNaN(parsed)) {\n retry = parsed;\n }\n }\n }\n\n if (dataLines.length === 0 && !id && !event && retry === undefined) {\n return undefined;\n }\n\n return {\n id,\n event,\n retry,\n data: dataLines.length > 0 ? dataLines.join(\"\\n\") : undefined,\n };\n}\n\n/** 解析单个 SSE frame 的 `data:` 行,得到事件 JSON。保持原有行为。 */\nexport function parseSseFrame(frame: string): unknown | undefined {\n let data = \"\";\n for (const line of frame.split(/\\r?\\n/)) {\n if (!line || line.startsWith(\":\")) continue;\n if (line.startsWith(\"data:\")) {\n const slice = line.slice(5).trimStart();\n data = data ? `${data}\\n${slice}` : slice;\n }\n }\n if (!data) return undefined;\n return JSON.parse(data) as unknown;\n}\n\n/**\n * 将 SSE 字节流解析为事件异步迭代器。\n * `open` 负责建立连接并返回 response body,便于重试或注入。\n */\nexport async function* streamServerSentEvents<T>(\n open: () => Promise<ReadableStream<Uint8Array>>,\n decode: (value: unknown) => T = (value) => value as T,\n): AsyncIterable<T> {\n const reader = (await open()).getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n buffer += decoder.decode(chunk.value, { stream: true });\n // SSE 事件以空行分隔\n const frames = buffer.split(/\\r?\\n\\r?\\n/);\n buffer = frames.pop() ?? \"\";\n for (const frame of frames) {\n const event = parseSseFrame(frame);\n if (event !== undefined) yield decode(event);\n }\n }\n buffer += decoder.decode();\n const event = parseSseFrame(buffer);\n if (event !== undefined) yield decode(event);\n } finally {\n reader.releaseLock();\n }\n}\n\nexport class SseTransport {\n constructor(private readonly transport: HttpTransport) {}\n\n streamFromReader<T>(\n open: () => Promise<ReadableStream<Uint8Array>>,\n decode: (value: unknown) => T = (val) => val as T,\n ): AsyncIterable<T> {\n return streamServerSentEvents(open, decode);\n }\n\n async *stream<T>(\n url: string,\n options: SseStreamOptions<T> = {},\n ): AsyncIterable<T> {\n let lastEventId = options.lastEventId;\n let reconnectDelayMs = options.reconnectDelayMs ?? 250;\n let connected = false;\n\n while (!options.signal?.aborted) {\n const connection = new AbortController();\n const onOuterAbort = () => connection.abort(options.signal?.reason);\n options.signal?.addEventListener(\"abort\", onOuterAbort, { once: true });\n let idleTimer: ReturnType<typeof setTimeout> | undefined;\n let idleExpired = false;\n const resetIdleTimer = () => {\n if (!options.idleTimeoutMs || options.idleTimeoutMs <= 0) return;\n if (idleTimer) clearTimeout(idleTimer);\n idleTimer = setTimeout(() => {\n idleExpired = true;\n connection.abort(\"sse_idle_timeout\");\n }, options.idleTimeoutMs);\n };\n try {\n const headers = new Headers(options.headers);\n if (lastEventId) headers.set(\"Last-Event-ID\", lastEventId);\n const requestUrl = connected && lastEventId ? withoutCursor(url) : url;\n const response = await this.transport.requestResponse(\n requestUrl.slice(this.transport.baseUrl.length),\n { headers, signal: connection.signal },\n );\n connected = true;\n if (!response.body) {\n throw new Error(options.noBodyMessage ?? \"Event stream response has no body\");\n }\n resetIdleTimer();\n try {\n for await (const frame of readRawSseFrames(response.body, resetIdleTimer)) {\n if (frame.id !== undefined) lastEventId = frame.id;\n if (frame.retry !== undefined) reconnectDelayMs = frame.retry;\n if (frame.data !== undefined) {\n yield (options.decode ?? ((value) => value as T))(JSON.parse(frame.data));\n }\n }\n } catch (error) {\n if (!idleExpired) throw error;\n }\n } finally {\n if (idleTimer) clearTimeout(idleTimer);\n options.signal?.removeEventListener(\"abort\", onOuterAbort);\n }\n\n if (!options.reconnect || options.signal?.aborted) return;\n await waitForReconnect(reconnectDelayMs, options.signal);\n }\n }\n}\n\nasync function* readRawSseFrames(\n stream: ReadableStream<Uint8Array>,\n onFrame?: () => void,\n): AsyncIterable<SseRawFrame> {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done) break;\n buffer += decoder.decode(chunk.value, { stream: true });\n const frames = buffer.split(/\\r?\\n\\r?\\n/);\n buffer = frames.pop() ?? \"\";\n for (const value of frames) {\n // 注释/keepalive 帧解析后会被丢弃,但同样算一次活动。\n onFrame?.();\n const frame = parseRawSseFrame(value);\n if (frame) yield frame;\n }\n }\n buffer += decoder.decode();\n onFrame?.();\n const frame = parseRawSseFrame(buffer);\n if (frame) yield frame;\n } finally {\n reader.releaseLock();\n }\n}\n\nfunction waitForReconnect(ms: number, signal?: AbortSignal): Promise<void> {\n if (signal?.aborted) return Promise.reject(abortError(signal));\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, Math.max(0, ms));\n const onAbort = () => {\n clearTimeout(timer);\n reject(abortError(signal!));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nfunction abortError(signal: AbortSignal): Error {\n if (signal.reason instanceof Error) return signal.reason;\n return new DOMException(\"Aborted\", \"AbortError\");\n}\n\nfunction withoutCursor(url: string): string {\n const parsed = new URL(url);\n parsed.searchParams.delete(\"cursor\");\n return parsed.toString();\n}\n",
@@ -29,9 +31,9 @@
29
31
  "/**\n * AuthResource: 鉴权与第三方认证状态资源。\n */\n\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type { AuthStatus } from \"../types/index.js\";\n\nexport class AuthResource {\n constructor(private readonly transport: HttpTransport) {}\n\n /** `GET /auth` */\n async getStatus(\n options: { signal?: AbortSignal } = {},\n ): Promise<AuthStatus> {\n const response = await this.transport.request<{ auth: AuthStatus }>(\"/auth\", {\n signal: options.signal,\n });\n return response.auth;\n }\n\n /** `POST /auth/login` */\n async login(\n input: { provider: string; apiKey?: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<{ message: string }> {\n return await this.transport.request<{ message: string }>(\"/auth/login\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n }\n\n /** `POST /auth/logout` */\n async logout(\n input: { provider: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<{ message: string }> {\n return await this.transport.request<{ message: string }>(\"/auth/logout\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n }\n}\n",
30
32
  "/**\n * ProjectResource: 项目目录探测、绑定、别名与元数据管理资源。\n */\n\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type { ListProjectsOptions, ProjectRecord } from \"../types/index.js\";\n\nexport class ProjectResource {\n constructor(private readonly transport: HttpTransport) {}\n\n /** `GET /projects` */\n async list(\n options: ListProjectsOptions & { signal?: AbortSignal } = {},\n ): Promise<ProjectRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ projects: ProjectRecord[] }>(\n this.transport.path(\"/projects\", query),\n { signal },\n );\n return response.projects;\n }\n\n /** `POST /projects/inspect` */\n async inspect(path: string): Promise<ProjectRecord> {\n return (\n await this.transport.request<{ project: ProjectRecord }>(\"/projects/inspect\", {\n method: \"POST\",\n body: { path },\n })\n ).project;\n }\n\n /** `PATCH /projects/:id` (name) */\n async rename(projectId: string, name: string): Promise<ProjectRecord> {\n return (\n await this.transport.request<{ project: ProjectRecord }>(\n `/projects/${encodeURIComponent(projectId)}`,\n { method: \"PATCH\", body: { name } },\n )\n ).project;\n }\n\n /** `PATCH /projects/:id` (pinned) */\n async setPinned(\n projectId: string,\n pinned: boolean,\n ): Promise<ProjectRecord> {\n return (\n await this.transport.request<{ project: ProjectRecord }>(\n `/projects/${encodeURIComponent(projectId)}`,\n { method: \"PATCH\", body: { pinned } },\n )\n ).project;\n }\n\n /** `PATCH /projects/:id` (defaultShell) */\n async setDefaultShell(\n projectId: string,\n defaultShell: string | null,\n ): Promise<ProjectRecord> {\n return (\n await this.transport.request<{ project: ProjectRecord }>(\n `/projects/${encodeURIComponent(projectId)}`,\n { method: \"PATCH\", body: { defaultShell } },\n )\n ).project;\n }\n\n /** `POST /projects/:id/rebind` */\n async rebind(projectId: string, path: string): Promise<ProjectRecord> {\n return (\n await this.transport.request<{ project: ProjectRecord }>(\n `/projects/${encodeURIComponent(projectId)}/rebind`,\n { method: \"POST\", body: { path } },\n )\n ).project;\n }\n\n /** `DELETE /projects/:id` */\n async archive(projectId: string): Promise<ProjectRecord> {\n return (\n await this.transport.request<{ project: ProjectRecord }>(\n `/projects/${encodeURIComponent(projectId)}`,\n { method: \"DELETE\" },\n )\n ).project;\n }\n\n /** `POST /project/init` */\n async init(\n input: { cwd: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<string> {\n const response = await this.transport.request<{ report: string }>(\"/project/init\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n return response.report;\n }\n}\n",
31
33
  "/**\n * PluginResource: 插件发现、生命周期、本地与归档安装、Git 安装与重载资源。\n */\n\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type {\n PluginArchivePreview,\n PluginGitPreview,\n PluginInfo,\n ReloadPluginsResponse,\n} from \"../types/index.js\";\n\nexport class PluginResource {\n constructor(private readonly transport: HttpTransport) {}\n\n /** `GET /plugins?cwd=` */\n async list(options: { cwd: string; signal?: AbortSignal }): Promise<{\n plugins: PluginInfo[];\n warnings: string[];\n }> {\n const { signal, ...query } = options;\n return await this.transport.request<{ plugins: PluginInfo[]; warnings: string[] }>(\n this.transport.path(\"/plugins\", query),\n { signal },\n );\n }\n\n /** `POST /plugins/:id/enable` */\n async enable(\n id: string,\n input: { cwd: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<{ message: string }> {\n return await this.transport.request<{ message: string }>(\n `/plugins/${encodeURIComponent(id)}/enable`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /** `POST /plugins/:id/disable` */\n async disable(\n id: string,\n input: { cwd: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<{ message: string }> {\n return await this.transport.request<{ message: string }>(\n `/plugins/${encodeURIComponent(id)}/disable`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /** `POST /plugins/install-local` 或 `/plugins/link-local` */\n async installLocal(input: {\n cwd: string;\n sourcePath: string;\n scope: \"user\";\n approvedPermissions: string[];\n link?: boolean;\n }): Promise<{ message: string }> {\n return await this.transport.request<{ message: string }>(\n input.link ? \"/plugins/link-local\" : \"/plugins/install-local\",\n { method: \"POST\", body: input },\n );\n }\n\n /** `POST /plugins/archive/preview` */\n async previewArchive(\n input: { cwd: string; archivePath: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<PluginArchivePreview> {\n return await this.transport.request<PluginArchivePreview>(\n \"/plugins/archive/preview\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n }\n\n /** `POST /plugins/archive/install` */\n async installArchive(\n input: {\n cwd: string;\n archivePath: string;\n expectedArchiveDigest: string;\n approvedPermissions: string[];\n },\n options: { signal?: AbortSignal } = {},\n ): Promise<{ message: string }> {\n return await this.transport.request<{ message: string }>(\n \"/plugins/archive/install\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n }\n\n /** `POST /plugins/git/preview` */\n async previewGit(\n input: { cwd: string; url: string; ref?: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<PluginGitPreview> {\n return await this.transport.request<PluginGitPreview>(\n \"/plugins/git/preview\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n }\n\n /** `POST /plugins/git/install` */\n async installGit(\n input: {\n cwd: string;\n url: string;\n ref?: string;\n expectedSourceDigest: string;\n approvedPermissions: string[];\n },\n options: { signal?: AbortSignal } = {},\n ): Promise<{ message: string }> {\n return await this.transport.request<{ message: string }>(\n \"/plugins/git/install\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n }\n\n /** `DELETE /plugins/:id` */\n async uninstall(\n id: string,\n input: { cwd: string },\n ): Promise<{ message: string }> {\n return await this.transport.request<{ message: string }>(\n `/plugins/${encodeURIComponent(id)}`,\n { method: \"DELETE\", body: input },\n );\n }\n\n /** `POST /plugins/reload` */\n async reload(\n input: { cwd: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<ReloadPluginsResponse> {\n return await this.transport.request<ReloadPluginsResponse>(\n \"/plugins/reload\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n }\n}\n",
32
- "import { parseDismissPluginUiInput, parseInvokePluginUiActionInput,\n type DismissPluginUiInput, type InvokePluginUiActionInput, type PluginUiActionReceipt,\n type PluginUiActionResponse, type PluginUiDocumentResponse, type PluginUiInstanceRecord,\n type PluginUiInstanceResponse } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../transport/http-transport.js\";\n\nfunction path(sessionId: string, instanceId: string): string {\n return `/sessions/${encodeURIComponent(sessionId)}/plugin-ui/${encodeURIComponent(instanceId)}`;\n}\n\nexport class PluginUiResource {\n constructor(private readonly transport: HttpTransport) {}\n\n get(sessionId: string, instanceId: string, options: { signal?: AbortSignal } = {}): Promise<PluginUiInstanceResponse> {\n return this.transport.request(path(sessionId, instanceId), options);\n }\n\n getDocument(sessionId: string, instanceId: string, options: { signal?: AbortSignal } = {}): Promise<PluginUiDocumentResponse> {\n return this.transport.request(path(sessionId, instanceId) + \"/document\", options);\n }\n\n async invokeAction(sessionId: string, instanceId: string, input: InvokePluginUiActionInput, options: { signal?: AbortSignal } = {}): Promise<PluginUiActionReceipt> {\n const body = structuredClone(parseInvokePluginUiActionInput(input));\n const response = await this.transport.request<{ receipt: PluginUiActionReceipt }>(path(sessionId, instanceId) + \"/actions\", { ...options, method: \"POST\", body });\n return response.receipt;\n }\n\n getAction(sessionId: string, instanceId: string, requestId: string, options: { signal?: AbortSignal } = {}): Promise<PluginUiActionResponse> {\n return this.transport.request(path(sessionId, instanceId) + `/actions/${encodeURIComponent(requestId)}`, options);\n }\n\n async dismiss(sessionId: string, instanceId: string, input: DismissPluginUiInput, options: { signal?: AbortSignal } = {}): Promise<PluginUiInstanceRecord> {\n const body = parseDismissPluginUiInput(input);\n const response = await this.transport.request<{ instance: PluginUiInstanceRecord }>(path(sessionId, instanceId) + \"/dismiss\", { ...options, method: \"POST\", body });\n return response.instance;\n }\n}\n",
34
+ "import {\n parseDismissPluginUiInput,\n parseInvokePluginUiActionInput,\n type DismissPluginUiInput,\n type InvokePluginUiActionInput,\n type PluginUiActionReceipt,\n type PluginUiActionResponse,\n type PluginUiDocumentResponse,\n type PluginUiInstanceRecord,\n type PluginUiInstanceResponse,\n parsePluginUiConversationRequest,\n parseSubmitPluginUiConversationInput,\n parsePluginUiConversationPrepared,\n parsePluginUiConversationReceipt,\n ProtocolValidationError,\n type PluginUiConversationRequest,\n type PluginUiConversationPrepared,\n type SubmitPluginUiConversationInput,\n type PluginUiConversationReceipt,\n} from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../transport/http-transport.js\";\n\nfunction path(sessionId: string, instanceId: string): string {\n return `/sessions/${encodeURIComponent(sessionId)}/plugin-ui/${encodeURIComponent(instanceId)}`;\n}\n\nexport class PluginUiResource {\n constructor(private readonly transport: HttpTransport) {}\n\n async get(\n sessionId: string,\n instanceId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<PluginUiInstanceResponse> {\n const response = await this.transport.request<PluginUiInstanceResponse>(\n path(sessionId, instanceId),\n options,\n );\n if (\n !response.conversation ||\n typeof response.conversation.draft !== \"boolean\" ||\n typeof response.conversation.submit !== \"boolean\"\n )\n throw new ProtocolValidationError(\n \"Plugin UI response requires conversation capability booleans\",\n \"conversation\",\n );\n return response;\n }\n\n async prepareConversation(\n sessionId: string,\n instanceId: string,\n input: PluginUiConversationRequest,\n options: { signal?: AbortSignal } = {},\n ): Promise<PluginUiConversationPrepared> {\n const body = parsePluginUiConversationRequest(input);\n const prepared = parsePluginUiConversationPrepared(\n await this.transport.request(\n path(sessionId, instanceId) + \"/conversation/prepare\",\n { ...options, method: \"POST\", body },\n ),\n );\n if (\n prepared.instanceId !== instanceId ||\n prepared.mode !== body.mode ||\n prepared.revision !== body.expectedRevision\n )\n throw new ProtocolValidationError(\n \"Plugin UI prepared conversation differs from the request\",\n );\n return prepared;\n }\n\n async submitConversation(\n sessionId: string,\n instanceId: string,\n input: SubmitPluginUiConversationInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<Extract<PluginUiConversationReceipt, { mode: \"submit\" }>> {\n const body = parseSubmitPluginUiConversationInput(input);\n const response = await this.transport.request<{ receipt: unknown }>(\n path(sessionId, instanceId) + \"/conversation/submissions\",\n { ...options, method: \"POST\", body },\n );\n const receipt = this.conversationReceipt(\n response.receipt,\n instanceId,\n body.requestId,\n );\n if (receipt.revision !== body.expectedRevision + 1)\n throw new ProtocolValidationError(\n \"Plugin UI submission revision differs from the request\",\n );\n return receipt;\n }\n\n async getConversationSubmission(\n sessionId: string,\n instanceId: string,\n requestId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<Extract<PluginUiConversationReceipt, { mode: \"submit\" }>> {\n const response = await this.transport.request<{ receipt: unknown }>(\n path(sessionId, instanceId) +\n `/conversation/submissions/${encodeURIComponent(requestId)}`,\n options,\n );\n return this.conversationReceipt(response.receipt, instanceId, requestId);\n }\n\n private conversationReceipt(\n value: unknown,\n instanceId: string,\n requestId: string,\n ): Extract<PluginUiConversationReceipt, { mode: \"submit\" }> {\n const receipt = parsePluginUiConversationReceipt(value);\n if (\n receipt.mode !== \"submit\" ||\n receipt.instanceId !== instanceId ||\n receipt.requestId !== requestId\n )\n throw new ProtocolValidationError(\n \"Plugin UI submission receipt differs from the request\",\n );\n return receipt;\n }\n\n getDocument(\n sessionId: string,\n instanceId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<PluginUiDocumentResponse> {\n return this.transport.request(\n path(sessionId, instanceId) + \"/document\",\n options,\n );\n }\n\n async invokeAction(\n sessionId: string,\n instanceId: string,\n input: InvokePluginUiActionInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PluginUiActionReceipt> {\n const body = structuredClone(parseInvokePluginUiActionInput(input));\n const response = await this.transport.request<{\n receipt: PluginUiActionReceipt;\n }>(path(sessionId, instanceId) + \"/actions\", {\n ...options,\n method: \"POST\",\n body,\n });\n return response.receipt;\n }\n\n getAction(\n sessionId: string,\n instanceId: string,\n requestId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<PluginUiActionResponse> {\n return this.transport.request(\n path(sessionId, instanceId) + `/actions/${encodeURIComponent(requestId)}`,\n options,\n );\n }\n\n async dismiss(\n sessionId: string,\n instanceId: string,\n input: DismissPluginUiInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PluginUiInstanceRecord> {\n const body = parseDismissPluginUiInput(input);\n const response = await this.transport.request<{\n instance: PluginUiInstanceRecord;\n }>(path(sessionId, instanceId) + \"/dismiss\", {\n ...options,\n method: \"POST\",\n body,\n });\n return response.instance;\n }\n}\n",
33
35
  "/**\n * DevelopmentResource: 技能、Agent Persona、Hook 与 Git 源码控制资源。\n */\n\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type {\n AgentPersonaInfo,\n HookInfo,\n SkillSnapshot,\n} from \"../types/index.js\";\n\nexport class DevelopmentResource {\n constructor(private readonly transport: HttpTransport) {}\n\n /** `GET /skills` */\n async listSkills(\n options: { signal?: AbortSignal } = {},\n ): Promise<SkillSnapshot> {\n return await this.transport.request<SkillSnapshot>(\"/skills\", {\n signal: options.signal,\n });\n }\n\n /** `DELETE /skills/:id` */\n async removeSkill(\n id: string,\n input: { expectedContent: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<SkillSnapshot> {\n return await this.transport.request<SkillSnapshot>(\n `/skills/${encodeURIComponent(id)}`,\n {\n method: \"DELETE\",\n body: input,\n signal: options.signal,\n },\n );\n }\n\n /** `GET /agent-personas` */\n async listAgentPersonas(\n options: { signal?: AbortSignal } = {},\n ): Promise<AgentPersonaInfo[]> {\n const response = await this.transport.request<{ agents: AgentPersonaInfo[] }>(\n \"/agent-personas\",\n {\n signal: options.signal,\n },\n );\n return response.agents;\n }\n\n /** `GET /hooks?cwd=&sessionId=` */\n async listHooks(options: {\n cwd: string;\n sessionId?: string;\n signal?: AbortSignal;\n }): Promise<HookInfo[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ hooks: HookInfo[] }>(\n this.transport.path(\"/hooks\", query),\n { signal },\n );\n return response.hooks;\n }\n\n /** `GET /git/diff?cwd=&full=` */\n async getGitDiff(options: {\n cwd: string;\n full?: boolean;\n signal?: AbortSignal;\n }): Promise<string> {\n const { signal, cwd, full } = options;\n const response = await this.transport.request<{ output: string }>(\n this.transport.path(\"/git/diff\", { cwd, ...(full ? { full: \"true\" } : {}) }),\n { signal },\n );\n return response.output;\n }\n\n /** `GET /git/branch?cwd=&list=` */\n async getGitBranch(options: {\n cwd: string;\n list?: boolean;\n signal?: AbortSignal;\n }): Promise<string> {\n const { signal, cwd, list } = options;\n const response = await this.transport.request<{ output: string }>(\n this.transport.path(\"/git/branch\", { cwd, ...(list ? { list: \"true\" } : {}) }),\n { signal },\n );\n return response.output;\n }\n\n /** `GET /git/status?cwd=` */\n async getGitStatus(options: {\n cwd: string;\n signal?: AbortSignal;\n }): Promise<string> {\n const { signal, cwd } = options;\n const response = await this.transport.request<{ output: string }>(\n this.transport.path(\"/git/status\", { cwd }),\n { signal },\n );\n return response.output;\n }\n\n /** `POST /git/commit` */\n async gitCommit(\n input: { cwd: string; message: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<string> {\n const response = await this.transport.request<{ output: string }>(\"/git/commit\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n return response.output;\n }\n}\n",
34
- "/**\n * SessionResource: 会话生命周期、快照、消息树、Prompt 准入排队与 Goal 资源。\n */\n\nimport type {\n CreateSessionGoalInput,\n GoalActionInput,\n SessionGoal,\n UpdateSessionGoalInput,\n SearchSessionsOptions,\n SessionSearchResult,\n ClearSessionWorktreeBindingInput,\n} from \"@vykor/protocol\";\nimport { decodeClearedSessionWorktreeBinding, decodeSessionStateSnapshot } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type {\n AdmitClientPromptInput,\n CancelQueuedClientPromptInput,\n CancelQueuedPromptResponse,\n CompactSessionResponse,\n CreateClientSessionInput,\n EditLatestClientPromptInput,\n ForkClientSessionInput,\n InterruptSessionResponse,\n ListClientMessagePartsOptions,\n ListMessagesOptions,\n ListSessionsOptions,\n PromoteQueuedClientPromptInput,\n PromoteQueuedPromptResponse,\n PromptResponse,\n RememberSessionResponse,\n ResumeInterruptedRunInput,\n ResumeInterruptedRunResponse,\n RewindSessionResponse,\n SessionExportResponse,\n SessionMessagePartRecord,\n SessionMessageRecord,\n SessionRecord,\n SessionStateSnapshot,\n SessionUsageResponse,\n UpdateClientSessionInput,\n} from \"../types/index.js\";\n\nlet promptRequestCounter = 0;\n\n/** Generate a caller-stable id for one prompt admission attempt. */\nexport function createPromptRequestId(): string {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n promptRequestCounter += 1;\n return `prompt-${Date.now().toString(36)}-${promptRequestCounter.toString(36)}`;\n}\n\nexport class SessionResource {\n constructor(private readonly transport: HttpTransport) {}\n\n /** `GET /sessions/search` - search saved conversation text without opening it. */\n async search(\n options: SearchSessionsOptions & { signal?: AbortSignal },\n ): Promise<SessionSearchResult[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{\n results: SessionSearchResult[];\n }>(this.transport.path(\"/sessions/search\", query), { signal });\n return response.results;\n }\n\n /** `GET /sessions` */\n async list(\n options: ListSessionsOptions & { signal?: AbortSignal } = {},\n ): Promise<SessionRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ sessions: SessionRecord[] }>(\n this.transport.path(\"/sessions\", query),\n { signal },\n );\n return response.sessions;\n }\n\n /** `GET /sessions/:id` */\n async get(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}`,\n {\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** `POST /sessions` */\n async create(\n input: CreateClientSessionInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n \"/sessions\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** `PATCH /sessions/:id` - update title, agent, or metadata.runtime fields. */\n async update(\n sessionId: string,\n input: UpdateClientSessionInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}`,\n {\n method: \"PATCH\",\n body: input,\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** Clear only an archived session's matching binding after its directory was removed. */\n async clearWorktreeBinding(sessionId: string, input: ClearSessionWorktreeBindingInput, options: { signal?: AbortSignal } = {}): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(`/sessions/${encodeURIComponent(sessionId)}/worktree-cleared`, { method: \"POST\", body: input, signal: options.signal });\n return decodeClearedSessionWorktreeBinding(response.session, sessionId);\n }\n\n /** `POST /sessions/:id/fork` */\n async fork(\n sessionId: string,\n input: ForkClientSessionInput = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}/fork`,\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** `DELETE /sessions/:id` */\n async archive(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}`,\n {\n method: \"DELETE\",\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** `DELETE /sessions/:id/hard` */\n async delete(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<string[]> {\n const response = await this.transport.request<{ deletedSessionIds: string[] }>(\n `/sessions/${encodeURIComponent(sessionId)}/hard`,\n {\n method: \"DELETE\",\n signal: options.signal,\n },\n );\n return response.deletedSessionIds;\n }\n\n /** `GET /sessions/:id/state` - atomic attach snapshot plus SSE cursor. */\n async getState(\n sessionId: string,\n options: { signal?: AbortSignal; partView?: \"summary\" } = {},\n ): Promise<SessionStateSnapshot> {\n const response = await this.transport.request<unknown>(\n this.transport.path(`/sessions/${encodeURIComponent(sessionId)}/state`, { partView: options.partView }),\n {\n signal: options.signal,\n },\n );\n return decodeSessionStateSnapshot(response);\n }\n\n /** `GET /sessions/:id/messages` */\n async listMessages(\n sessionId: string,\n options: ListMessagesOptions & { signal?: AbortSignal } = {},\n ): Promise<SessionMessageRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ messages: SessionMessageRecord[] }>(\n this.transport.path(`/sessions/${encodeURIComponent(sessionId)}/messages`, query),\n { signal },\n );\n return response.messages;\n }\n\n /** `GET /sessions/:id/parts` */\n async listMessageParts(\n sessionId: string,\n options: ListClientMessagePartsOptions & { signal?: AbortSignal } = {},\n ): Promise<SessionMessagePartRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ parts: SessionMessagePartRecord[] }>(\n this.transport.path(`/sessions/${encodeURIComponent(sessionId)}/parts`, query),\n { signal },\n );\n return response.parts;\n }\n\n /** Read full canonical content for one part in its session/message scope. */\n async getMessagePart(sessionId: string, messageId: string, partId: string, options: { signal?: AbortSignal } = {}): Promise<SessionMessagePartRecord> {\n const response = await this.transport.request<{ part: SessionMessagePartRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}/messages/${encodeURIComponent(messageId)}/parts/${encodeURIComponent(partId)}`,\n options,\n );\n return response.part;\n }\n\n /** `POST /sessions/:id/prompts` — 提交用户输入并触发/排队一次 run。 */\n async admitPrompt(\n sessionId: string,\n input: AdmitClientPromptInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PromptResponse> {\n return await this.transport.request<PromptResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/prompts`,\n {\n method: \"POST\",\n body: { ...input, id: input.id ?? createPromptRequestId() },\n signal: options.signal,\n },\n );\n }\n\n /** `POST /sessions/:id/prompts/latest/edit` */\n async editLatestPrompt(\n sessionId: string,\n input: EditLatestClientPromptInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PromptResponse> {\n return await this.transport.request<PromptResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/prompts/latest/edit`,\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n }\n\n /** Promote one durable queued prompt into the exact active run. */\n async promoteQueuedPrompt(\n sessionId: string,\n inputId: string,\n input: PromoteQueuedClientPromptInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PromoteQueuedPromptResponse> {\n return await this.transport.request<PromoteQueuedPromptResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/prompts/${encodeURIComponent(inputId)}/promote`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /** Cancel one durable prompt that is still waiting in the run queue. */\n async cancelQueuedPrompt(\n sessionId: string,\n inputId: string,\n input: CancelQueuedClientPromptInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<CancelQueuedPromptResponse> {\n return await this.transport.request<CancelQueuedPromptResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/prompts/${encodeURIComponent(inputId)}/cancel`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /**\n * `POST /sessions/:id/runs/:runId/resume` — 显式重放一次中断 run 的原始 prompt。\n * 不会继续旧 provider stream;服务端会创建一个带恢复溯源的新 input/run。\n */\n async resumeInterruptedRun(\n sessionId: string,\n runId: string,\n input: ResumeInterruptedRunInput = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<ResumeInterruptedRunResponse> {\n return await this.transport.request<ResumeInterruptedRunResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/runs/${encodeURIComponent(runId)}/resume`,\n {\n method: \"POST\",\n body: { ...input, id: input.id ?? createPromptRequestId() },\n signal: options.signal,\n },\n );\n }\n\n /** `POST /sessions/:id/interrupt` — 中断当前/排队中的 run。 */\n async interrupt(\n sessionId: string,\n options: { signal?: AbortSignal; expectedRunId?: string } = {},\n ): Promise<InterruptSessionResponse> {\n return await this.transport.request<InterruptSessionResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/interrupt`,\n {\n method: \"POST\",\n body: options.expectedRunId\n ? { expectedRunId: options.expectedRunId }\n : undefined,\n signal: options.signal,\n },\n );\n }\n\n /** `POST /sessions/:id/compact` */\n async compact(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<CompactSessionResponse> {\n return await this.transport.request<CompactSessionResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/compact`,\n { method: \"POST\", signal: options.signal },\n );\n }\n\n /** `POST /sessions/:id/rewind` */\n async rewind(\n sessionId: string,\n input: { count?: number } = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<RewindSessionResponse> {\n return await this.transport.request<RewindSessionResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/rewind`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /** `POST /sessions/:id/remember` */\n async remember(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<RememberSessionResponse> {\n return await this.transport.request<RememberSessionResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/remember`,\n { method: \"POST\", signal: options.signal },\n );\n }\n\n /** `POST /sessions/:id/export` */\n async export(\n sessionId: string,\n input: { filename?: string; json?: boolean } = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionExportResponse> {\n return await this.transport.request<SessionExportResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/export`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /** `GET /sessions/:id/usage` */\n async getUsage(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionUsageResponse> {\n return await this.transport.request<SessionUsageResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/usage`,\n { signal: options.signal },\n );\n }\n\n /** `GET /sessions/:id/goal` */\n async getGoal(sessionId: string): Promise<SessionGoal | null> {\n const response = await this.transport.request<{ goal: SessionGoal | null }>(\n `/sessions/${encodeURIComponent(sessionId)}/goal`,\n );\n return response.goal;\n }\n\n /** `POST /sessions/:id/goals` */\n async createGoal(\n sessionId: string,\n input: CreateSessionGoalInput,\n ): Promise<SessionGoal> {\n const response = await this.transport.request<{ goal: SessionGoal }>(\n `/sessions/${encodeURIComponent(sessionId)}/goals`,\n { method: \"POST\", body: input },\n );\n return response.goal;\n }\n\n /** `PATCH /sessions/:id/goals/:goalId` */\n async updateGoal(\n sessionId: string,\n goalId: string,\n input: UpdateSessionGoalInput,\n ): Promise<SessionGoal> {\n const response = await this.transport.request<{ goal: SessionGoal }>(\n `/sessions/${encodeURIComponent(sessionId)}/goals/${encodeURIComponent(goalId)}`,\n { method: \"PATCH\", body: input },\n );\n return response.goal;\n }\n\n /** `POST /sessions/:id/goals/:goalId/actions` */\n async applyGoalAction(\n sessionId: string,\n goalId: string,\n input: GoalActionInput,\n ): Promise<SessionGoal> {\n const response = await this.transport.request<{ goal: SessionGoal }>(\n `/sessions/${encodeURIComponent(sessionId)}/goals/${encodeURIComponent(goalId)}/actions`,\n { method: \"POST\", body: input },\n );\n return response.goal;\n }\n}\n",
36
+ "/**\n * SessionResource: 会话生命周期、快照、消息树、Prompt 准入排队与 Goal 资源。\n */\n\nimport type {\n CreateSessionGoalInput,\n GoalActionInput,\n SessionGoal,\n UpdateSessionGoalInput,\n SearchSessionsOptions,\n SessionSearchResult,\n ClearSessionWorktreeBindingInput,\n} from \"@vykor/protocol\";\nimport { decodeClearedSessionWorktreeBinding, decodeSessionStateSnapshot } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type {\n AdmitClientPromptInput,\n CancelQueuedClientPromptInput,\n CancelQueuedPromptResponse,\n CompactSessionResponse,\n CreateClientSessionInput,\n EditLatestClientPromptInput,\n ForkClientSessionInput,\n InterruptSessionResponse,\n ListClientMessagePartsOptions,\n ListMessagesOptions,\n ListSessionsOptions,\n PromoteQueuedClientPromptInput,\n PromoteQueuedPromptResponse,\n PromptResponse,\n RememberSessionResponse,\n ResumeInterruptedRunInput,\n ResumeInterruptedRunResponse,\n RewindSessionResponse,\n SessionExportResponse,\n SessionMessagePartRecord,\n SessionMessageRecord,\n SessionRecord,\n SessionStateSnapshot,\n SessionUsageResponse,\n UpdateClientSessionInput,\n} from \"../types/index.js\";\n\nlet promptRequestCounter = 0;\n\n/** Generate a caller-stable id for one prompt admission attempt. */\nexport function createPromptRequestId(): string {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n promptRequestCounter += 1;\n return `prompt-${Date.now().toString(36)}-${promptRequestCounter.toString(36)}`;\n}\n\nexport class SessionResource {\n constructor(private readonly transport: HttpTransport) {}\n\n /** `GET /sessions/search` - search saved conversation text without opening it. */\n async search(\n options: SearchSessionsOptions & { signal?: AbortSignal },\n ): Promise<SessionSearchResult[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{\n results: SessionSearchResult[];\n }>(this.transport.path(\"/sessions/search\", query), { signal });\n return response.results;\n }\n\n /** `GET /sessions` */\n async list(\n options: ListSessionsOptions & { signal?: AbortSignal } = {},\n ): Promise<SessionRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ sessions: SessionRecord[] }>(\n this.transport.path(\"/sessions\", query),\n { signal },\n );\n return response.sessions;\n }\n\n /** `GET /sessions/:id` */\n async get(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}`,\n {\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** `POST /sessions` */\n async create(\n input: CreateClientSessionInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n \"/sessions\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** `PATCH /sessions/:id` - update title, agent, or metadata.runtime fields. */\n async update(\n sessionId: string,\n input: UpdateClientSessionInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}`,\n {\n method: \"PATCH\",\n body: input,\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** Clear only an archived session's matching binding after its directory was removed. */\n async clearWorktreeBinding(sessionId: string, input: ClearSessionWorktreeBindingInput, options: { signal?: AbortSignal } = {}): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(`/sessions/${encodeURIComponent(sessionId)}/worktree-cleared`, { method: \"POST\", body: input, signal: options.signal });\n return decodeClearedSessionWorktreeBinding(response.session, sessionId);\n }\n\n /** `POST /sessions/:id/fork` */\n async fork(\n sessionId: string,\n input: ForkClientSessionInput = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}/fork`,\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** `DELETE /sessions/:id` */\n async archive(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionRecord> {\n const response = await this.transport.request<{ session: SessionRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}`,\n {\n method: \"DELETE\",\n signal: options.signal,\n },\n );\n return response.session;\n }\n\n /** `DELETE /sessions/:id/hard` */\n async delete(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<string[]> {\n const response = await this.transport.request<{ deletedSessionIds: string[] }>(\n `/sessions/${encodeURIComponent(sessionId)}/hard`,\n {\n method: \"DELETE\",\n signal: options.signal,\n },\n );\n return response.deletedSessionIds;\n }\n\n /** `GET /sessions/:id/state` - atomic attach snapshot plus SSE cursor. */\n async getState(\n sessionId: string,\n options: { signal?: AbortSignal; partView?: \"summary\" } = {},\n ): Promise<SessionStateSnapshot> {\n const response = await this.transport.request<unknown>(\n this.transport.path(`/sessions/${encodeURIComponent(sessionId)}/state`, { partView: options.partView }),\n {\n signal: options.signal,\n },\n );\n return decodeSessionStateSnapshot(response);\n }\n\n /** `GET /sessions/:id/messages` */\n async listMessages(\n sessionId: string,\n options: ListMessagesOptions & { signal?: AbortSignal } = {},\n ): Promise<SessionMessageRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ messages: SessionMessageRecord[] }>(\n this.transport.path(`/sessions/${encodeURIComponent(sessionId)}/messages`, query),\n { signal },\n );\n return response.messages;\n }\n\n /** `GET /sessions/:id/parts` */\n async listMessageParts(\n sessionId: string,\n options: ListClientMessagePartsOptions & { signal?: AbortSignal } = {},\n ): Promise<SessionMessagePartRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ parts: SessionMessagePartRecord[] }>(\n this.transport.path(`/sessions/${encodeURIComponent(sessionId)}/parts`, query),\n { signal },\n );\n return response.parts;\n }\n\n /** Read full canonical content for one part in its session/message scope. */\n async getMessagePart(sessionId: string, messageId: string, partId: string, options: { signal?: AbortSignal } = {}): Promise<SessionMessagePartRecord> {\n const response = await this.transport.request<{ part: SessionMessagePartRecord }>(\n `/sessions/${encodeURIComponent(sessionId)}/messages/${encodeURIComponent(messageId)}/parts/${encodeURIComponent(partId)}`,\n options,\n );\n return response.part;\n }\n\n /** `POST /sessions/:id/prompts` — 提交用户输入并触发/排队一次 run。 */\n async admitPrompt(\n sessionId: string,\n input: AdmitClientPromptInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PromptResponse> {\n return await this.transport.request<PromptResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/prompts`,\n {\n method: \"POST\",\n body: { ...input, id: input.id ?? createPromptRequestId() },\n signal: options.signal,\n },\n );\n }\n\n /** `POST /sessions/:id/prompts/latest/edit` */\n async editLatestPrompt(\n sessionId: string,\n input: EditLatestClientPromptInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PromptResponse> {\n return await this.transport.request<PromptResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/prompts/latest/edit`,\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n }\n\n /** Promote one durable queued prompt into the exact active run. */\n async promoteQueuedPrompt(\n sessionId: string,\n inputId: string,\n input: PromoteQueuedClientPromptInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PromoteQueuedPromptResponse> {\n return await this.transport.request<PromoteQueuedPromptResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/prompts/${encodeURIComponent(inputId)}/promote`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /** Cancel one durable prompt that is still waiting in the run queue. */\n async cancelQueuedPrompt(\n sessionId: string,\n inputId: string,\n input: CancelQueuedClientPromptInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<CancelQueuedPromptResponse> {\n return await this.transport.request<CancelQueuedPromptResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/prompts/${encodeURIComponent(inputId)}/cancel`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /**\n * `POST /sessions/:id/runs/:runId/resume` — 显式重放一次中断 run 的原始 prompt。\n * 不会继续旧 provider stream;服务端会创建一个带恢复溯源的新 input/run。\n */\n async resumeInterruptedRun(\n sessionId: string,\n runId: string,\n input: ResumeInterruptedRunInput = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<ResumeInterruptedRunResponse> {\n return await this.transport.request<ResumeInterruptedRunResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/runs/${encodeURIComponent(runId)}/resume`,\n {\n method: \"POST\",\n body: { ...input, id: input.id ?? createPromptRequestId() },\n signal: options.signal,\n },\n );\n }\n\n /** `POST /sessions/:id/interrupt` — 中断当前/排队中的 run。 */\n async interrupt(\n sessionId: string,\n options: { signal?: AbortSignal; expectedRunId?: string; source?: \"user\" | \"system\" } = {},\n ): Promise<InterruptSessionResponse> {\n return await this.transport.request<InterruptSessionResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/interrupt`,\n {\n method: \"POST\",\n body: options.expectedRunId || options.source\n ? {\n ...(options.expectedRunId ? { expectedRunId: options.expectedRunId } : {}),\n ...(options.source ? { source: options.source } : {}),\n }\n : undefined,\n signal: options.signal,\n },\n );\n }\n\n /** `POST /sessions/:id/compact` */\n async compact(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<CompactSessionResponse> {\n return await this.transport.request<CompactSessionResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/compact`,\n { method: \"POST\", signal: options.signal },\n );\n }\n\n /** `POST /sessions/:id/rewind` */\n async rewind(\n sessionId: string,\n input: { count?: number } = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<RewindSessionResponse> {\n return await this.transport.request<RewindSessionResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/rewind`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /** `POST /sessions/:id/remember` */\n async remember(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<RememberSessionResponse> {\n return await this.transport.request<RememberSessionResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/remember`,\n { method: \"POST\", signal: options.signal },\n );\n }\n\n /** `POST /sessions/:id/export` */\n async export(\n sessionId: string,\n input: { filename?: string; json?: boolean } = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionExportResponse> {\n return await this.transport.request<SessionExportResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/export`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n /** `GET /sessions/:id/usage` */\n async getUsage(\n sessionId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<SessionUsageResponse> {\n return await this.transport.request<SessionUsageResponse>(\n `/sessions/${encodeURIComponent(sessionId)}/usage`,\n { signal: options.signal },\n );\n }\n\n /** `GET /sessions/:id/goal` */\n async getGoal(sessionId: string): Promise<SessionGoal | null> {\n const response = await this.transport.request<{ goal: SessionGoal | null }>(\n `/sessions/${encodeURIComponent(sessionId)}/goal`,\n );\n return response.goal;\n }\n\n /** `POST /sessions/:id/goals` */\n async createGoal(\n sessionId: string,\n input: CreateSessionGoalInput,\n ): Promise<SessionGoal> {\n const response = await this.transport.request<{ goal: SessionGoal }>(\n `/sessions/${encodeURIComponent(sessionId)}/goals`,\n { method: \"POST\", body: input },\n );\n return response.goal;\n }\n\n /** `PATCH /sessions/:id/goals/:goalId` */\n async updateGoal(\n sessionId: string,\n goalId: string,\n input: UpdateSessionGoalInput,\n ): Promise<SessionGoal> {\n const response = await this.transport.request<{ goal: SessionGoal }>(\n `/sessions/${encodeURIComponent(sessionId)}/goals/${encodeURIComponent(goalId)}`,\n { method: \"PATCH\", body: input },\n );\n return response.goal;\n }\n\n /** `POST /sessions/:id/goals/:goalId/actions` */\n async applyGoalAction(\n sessionId: string,\n goalId: string,\n input: GoalActionInput,\n ): Promise<SessionGoal> {\n const response = await this.transport.request<{ goal: SessionGoal }>(\n `/sessions/${encodeURIComponent(sessionId)}/goals/${encodeURIComponent(goalId)}/actions`,\n { method: \"POST\", body: input },\n );\n return response.goal;\n }\n}\n",
35
37
  "import type { AttachmentAssetRecord } from \"@vykor/protocol\";\nimport { parseAttachmentAssetRecord } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport { attachmentRangeHeader } from \"../transport/http-transport.js\";\nimport type {\n AttachmentStorageGcResult,\n AttachmentStorageRepairResult,\n AttachmentStorageReport,\n DownloadAttachmentOptions,\n UploadAttachmentInput,\n} from \"../types/index.js\";\n\nexport class AttachmentResource {\n constructor(private readonly transport: HttpTransport) {}\n\n /** `POST /attachments` — upload bytes without JSON or multipart buffering. */\n async upload(input: UploadAttachmentInput): Promise<AttachmentAssetRecord> {\n const headers: Record<string, string> = {};\n headers[\"x-vykor-filename\"] = encodeURIComponent(input.displayName);\n if (input.mediaType) headers[\"content-type\"] = input.mediaType;\n const response = await this.transport.requestResponse(\"/attachments\", {\n method: \"POST\",\n headers,\n body: input.body as RequestInit[\"body\"],\n signal: input.signal,\n });\n return parseAttachmentAssetRecord(await response.json());\n }\n\n async get(\n id: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<AttachmentAssetRecord> {\n const value = await this.transport.request<unknown>(\n `/attachments/${encodeURIComponent(id)}`,\n { signal: options.signal },\n );\n return parseAttachmentAssetRecord(value);\n }\n\n /** Returns the raw response so callers can consume the body as a stream. */\n async download(\n id: string,\n options: DownloadAttachmentOptions = {},\n ): Promise<Response> {\n const range = attachmentRangeHeader(options.range);\n const headers: Record<string, string> = {};\n if (range) headers.range = range;\n return await this.transport.requestResponse(\n `/attachments/${encodeURIComponent(id)}/content`,\n { method: \"GET\", headers, signal: options.signal },\n );\n }\n\n async delete(\n id: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<AttachmentAssetRecord> {\n const value = await this.transport.request<unknown>(\n `/attachments/${encodeURIComponent(id)}`,\n { method: \"DELETE\", signal: options.signal },\n );\n return parseAttachmentAssetRecord(value);\n }\n\n async scanStorage(\n options: { signal?: AbortSignal } = {},\n ): Promise<AttachmentStorageReport> {\n return await this.transport.request<AttachmentStorageReport>(\n \"/attachments/storage\",\n { signal: options.signal },\n );\n }\n\n async repairStorage(\n options: { signal?: AbortSignal } = {},\n ): Promise<AttachmentStorageRepairResult> {\n return await this.transport.request<AttachmentStorageRepairResult>(\n \"/attachments/storage/actions\",\n {\n method: \"POST\",\n body: { action: \"repair-safe\" },\n signal: options.signal,\n },\n );\n }\n\n async gcStorage(\n options: { signal?: AbortSignal } = {},\n ): Promise<AttachmentStorageGcResult> {\n return await this.transport.request<AttachmentStorageGcResult>(\n \"/attachments/storage/actions\",\n {\n method: \"POST\",\n body: { action: \"gc\" },\n signal: options.signal,\n },\n );\n }\n}\n",
36
38
  "import type { PermissionRequestRecord } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type {\n ListPermissionsOptions,\n ReplyPermissionInput,\n} from \"../types/index.js\";\n\nexport class PermissionResource {\n constructor(private readonly transport: HttpTransport) {}\n\n async listApprovals(): Promise<PermissionRequestRecord[]> {\n const response = await this.transport.request<{ requests: PermissionRequestRecord[] }>(\"/permissions/approvals\");\n return response.requests;\n }\n\n async revokeApproval(requestId: string): Promise<PermissionRequestRecord> {\n const response = await this.transport.request<{ request: PermissionRequestRecord }>(\n `/permissions/${encodeURIComponent(requestId)}/revoke`, { method: \"POST\" });\n return response.request;\n }\n\n /** `GET /permissions` */\n async list(\n options: ListPermissionsOptions & { signal?: AbortSignal } = {},\n ): Promise<PermissionRequestRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{\n requests: PermissionRequestRecord[];\n }>(this.transport.path(\"/permissions\", query), { signal });\n return response.requests;\n }\n\n /** `POST /permissions/:id/reply` — 批准/拒绝工具权限请求。 */\n async reply(\n requestId: string,\n input: ReplyPermissionInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<PermissionRequestRecord> {\n const response = await this.transport.request<{ request: PermissionRequestRecord }>(\n `/permissions/${encodeURIComponent(requestId)}/reply`,\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n return response.request;\n }\n}\n",
37
39
  "import type {\n CreateScheduledTaskInput,\n ScheduledRunRecord,\n ScheduledTaskRecord,\n UpdateScheduledTaskInput,\n} from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../transport/http-transport.js\";\nimport type { ScheduledTaskStatusSummary } from \"../types/index.js\";\n\nexport class ScheduleResource {\n constructor(private readonly transport: HttpTransport) {}\n\n async getStatus(\n options: { signal?: AbortSignal } = {},\n ): Promise<ScheduledTaskStatusSummary> {\n return await this.transport.request<ScheduledTaskStatusSummary>(\"/schedules/status\", {\n signal: options.signal,\n });\n }\n\n async listTasks(\n options: {\n status?: ScheduledTaskRecord[\"status\"];\n signal?: AbortSignal;\n } = {},\n ): Promise<ScheduledTaskRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ tasks: ScheduledTaskRecord[] }>(\n this.transport.path(\"/schedules/tasks\", query),\n { signal },\n );\n return response.tasks;\n }\n\n async getTask(\n id: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<ScheduledTaskRecord> {\n const response = await this.transport.request<{ task: ScheduledTaskRecord }>(\n `/schedules/tasks/${encodeURIComponent(id)}`,\n { signal: options.signal },\n );\n return response.task;\n }\n\n async createTask(\n input: CreateScheduledTaskInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<ScheduledTaskRecord> {\n const response = await this.transport.request<{ task: ScheduledTaskRecord }>(\n \"/schedules/tasks\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n return response.task;\n }\n\n async updateTask(\n id: string,\n input: UpdateScheduledTaskInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<ScheduledTaskRecord> {\n const response = await this.transport.request<{ task: ScheduledTaskRecord }>(\n `/schedules/tasks/${encodeURIComponent(id)}`,\n { method: \"PATCH\", body: input, signal: options.signal },\n );\n return response.task;\n }\n\n async removeTask(\n id: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<void> {\n await this.transport.request<{ removed: true }>(\n `/schedules/tasks/${encodeURIComponent(id)}`,\n {\n method: \"DELETE\",\n signal: options.signal,\n },\n );\n }\n\n async triggerTask(\n id: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<ScheduledRunRecord> {\n const response = await this.transport.request<{ run: ScheduledRunRecord }>(\n `/schedules/tasks/${encodeURIComponent(id)}/run`,\n { method: \"POST\", signal: options.signal },\n );\n return response.run;\n }\n\n async listRuns(\n options: {\n taskId?: string;\n unread?: boolean;\n limit?: number;\n signal?: AbortSignal;\n } = {},\n ): Promise<ScheduledRunRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{ runs: ScheduledRunRecord[] }>(\n this.transport.path(\"/schedules/runs\", query),\n { signal },\n );\n return response.runs;\n }\n\n async setRunUnread(\n id: string,\n unread: boolean,\n options: { signal?: AbortSignal } = {},\n ): Promise<ScheduledRunRecord> {\n const response = await this.transport.request<{ run: ScheduledRunRecord }>(\n `/schedules/runs/${encodeURIComponent(id)}/read`,\n { method: \"PATCH\", body: { unread }, signal: options.signal },\n );\n return response.run;\n }\n}\n",
@@ -53,13 +55,13 @@
53
55
  "import type { JobSnapshot } from \"@vykor/protocol\";\nimport { hasActiveRun, type SessionCommandHost, type SlashLine } from \"./session-commands.js\";\n\ntype ReadPresentation = (key: string, title: string, load: () => Promise<string>) => Promise<void>;\n\nexport async function handleDiagnosticCommand(\n slash: SlashLine,\n host: SessionCommandHost,\n emit: (text: string) => void,\n readPresentation: ReadPresentation,\n): Promise<\"handled\"> {\n const { client, sessionId, cwd, clientState, model, permissionMode, statusSessionId, busy } = host;\n if (slash.name === \"/version\") {\n await readPresentation(\"version\", \"Version\", async () => {\n const health = await client.protocol.health();\n return `Vykor${health.version ? ` v${health.version}` : \"\"}`;\n });\n return \"handled\";\n }\n if (slash.name === \"/status\") {\n emit([\n \"Session status:\",\n ` session: ${statusSessionId ?? \"(none)\"}`,\n ` model: ${model ?? \"(unknown)\"}`,\n ` cwd: ${cwd || \"(unknown)\"}`,\n ` mode: ${permissionMode ?? \"default\"}`,\n ` busy: ${busy || hasActiveRun(clientState, sessionId) ? \"yes\" : \"no\"}`,\n ].join(\"\\n\"));\n return \"handled\";\n }\n if (slash.name === \"/context\") {\n const action = slash.args.trim().split(/\\s+/).filter(Boolean)[0] ?? \"preview\";\n if (action === \"status\") {\n await readPresentation(`context:${cwd}:status`, \"Context\", async () => await client.system.getContextStatus({ cwd }));\n return \"handled\";\n }\n if (action === \"usage\") {\n await readPresentation(\n `context:${cwd}:usage:${sessionId ?? \"none\"}`,\n \"Context\",\n async () => {\n const result = await client.system.getContextUsage({\n cwd,\n ...(sessionId ? { sessionId } : {}),\n });\n return result.report;\n },\n );\n return \"handled\";\n }\n if (action !== \"preview\") {\n emit(\"Usage: /context [preview|status|usage]\");\n return \"handled\";\n }\n await readPresentation(`context:${cwd}`, \"Context\", async () => await client.system.getContextPreview({ cwd }));\n return \"handled\";\n }\n if (slash.name === \"/stats\") {\n if (!sessionId) return \"handled\";\n const bucket = clientState.buckets[sessionId];\n const messageCount = bucket?.messages.length ?? 0;\n const text = (bucket?.messages ?? [])\n .flatMap((message) => bucket?.partsByMessageId[message.id] ?? [])\n .map((part) => part.text ?? \"\")\n .join(\" \");\n const estimatedTokens = Math.max(1, Math.ceil(text.length / 4));\n const [memory, jobsResult, settings] = await Promise.all([\n client.system.listMemory({ cwd }).catch(() => ({ entries: [] as Array<{ id: string }> })),\n client.jobs.list({ sessionId, includeFinished: true, limit: 100 })\n .then((jobs) => ({ jobs }))\n .catch((error: unknown) => ({\n error: error instanceof Error ? error.message : String(error),\n })),\n client.system.getSettings().catch(() => ({} as Record<string, unknown>)),\n ]);\n const jobsSummary = \"jobs\" in jobsResult\n ? String(jobsResult.jobs.length)\n : `unavailable (${jobsResult.error})`;\n emit([\n \"Session stats:\",\n `- messages: ${messageCount}`,\n `- estimated_tokens: ${estimatedTokens}`,\n `- memory_entries: ${memory.entries.length}`,\n `- jobs: ${jobsSummary}`,\n `- output_style: ${typeof settings.outputStyle === \"string\" ? settings.outputStyle : \"default\"}`,\n ].join(\"\\n\"));\n return \"handled\";\n }\n if (slash.name === \"/agents\") {\n if (!sessionId) return \"handled\";\n const agents = await client.jobs.list({\n sessionId,\n kinds: [\"agent\"],\n includeFinished: true,\n limit: 100,\n });\n if (agents.length === 0) {\n emit(\"No Agent Jobs.\");\n return \"handled\";\n }\n emit([\n `Agent Jobs (${agents.length}):`,\n \"\",\n ...agents.map((job) => ` ${job.id} [${job.status}] ${job.label}`),\n ].join(\"\\n\"));\n return \"handled\";\n }\n\n const [settings, auth, memory, mcp, jobsResult] = await Promise.all([\n client.system.getSettings().catch(() => ({}) as Record<string, unknown>),\n client.auth.getStatus().catch(() => null),\n client.system.listMemory({ cwd }).catch(() => ({ directory: \"(unavailable)\", entries: [] as Array<{ id: string }> })),\n sessionId ? client.system.getSessionMcp(sessionId).catch(() => []) : Promise.resolve([]),\n sessionId\n ? client.jobs.list({ sessionId, includeFinished: true, limit: 100 })\n .then((jobs) => ({ jobs }))\n .catch((error: unknown) => ({\n error: error instanceof Error ? error.message : String(error),\n }))\n : Promise.resolve({ jobs: [] as JobSnapshot[] }),\n ]);\n const jobsSummary = \"jobs\" in jobsResult\n ? String(jobsResult.jobs.length)\n : `unavailable (${jobsResult.error})`;\n const bucket = sessionId ? clientState.buckets[sessionId] : undefined;\n const diagnostics = await host.getRuntimeDiagnostics?.();\n const runtime = diagnostics?.runtime ?? \"(not provided by this host)\";\n const platform = [diagnostics?.platform, diagnostics?.architecture]\n .filter(Boolean)\n .join(\" \") || \"(not provided by this host)\";\n const lines = [\n \"Vykor Environment Diagnostic\",\n \"═\".repeat(40),\n \"\",\n `CWD: ${cwd}`,\n `Runtime: ${runtime}`,\n `Platform: ${platform}`,\n `Model: ${model ?? String(settings.model ?? \"(unknown)\")}`,\n `API Format: ${String(settings.apiFormat ?? \"(default)\")}`,\n `Base URL: ${String(settings.baseUrl ?? \"(default)\")}`,\n `Permission: ${typeof settings.permission === \"object\" && settings.permission && \"mode\" in settings.permission\n ? String((settings.permission as { mode?: string }).mode ?? \"default\")\n : \"default\"}`,\n `Max Turns: ${String(settings.maxTurns ?? \"(default)\")}`,\n `Effort: ${String(settings.effort ?? \"medium\")}`,\n `Passes: ${String(settings.passes ?? 1)}`,\n `Fast Mode: ${settings.fastMode ? \"on\" : \"off\"}`,\n `Theme: ${String(settings.theme ?? \"default\")}`,\n \"\",\n `Messages: ${bucket?.messages.length ?? 0}`,\n `Jobs: ${jobsSummary}`,\n \"\",\n `Memory dir: ${memory.directory}`,\n `Memory entries: ${memory.entries.length}`,\n ];\n if (auth) {\n lines.push(\n \"\",\n `Codex auth: ${auth.codex.configured ? \"ready\" : auth.codex.state} (${auth.codex.source})`,\n `Stored keys: ${auth.storedProviders.length ? auth.storedProviders.join(\", \") : \"(none)\"}`,\n );\n }\n lines.push(\"\", \"MCP Servers:\");\n if (mcp.length === 0) lines.push(\" (none)\");\n else {\n for (const server of mcp) {\n lines.push(` ${server.name}: ${server.status} (${server.toolCount} tools)`);\n }\n }\n emit(lines.join(\"\\n\"));\n return \"handled\";\n}\n",
54
56
  "import type { JobReadResult, JobSnapshot } from \"@vykor/protocol\";\nimport type { SessionCommandHost, SlashLine } from \"./session-commands.js\";\n\ntype ReadPresentation = (key: string, title: string, load: () => Promise<string>) => Promise<void>;\n\nfunction formatJobReadResult(result: JobReadResult): string {\n const snapshot: JobSnapshot = result.snapshot;\n const capabilities = [\n `read=${snapshot.capabilities.read}`,\n `wait=${snapshot.capabilities.wait}`,\n `send=${snapshot.capabilities.send}`,\n `cancel=${snapshot.capabilities.cancel}`,\n ].join(\", \");\n return [\n `Job: ${snapshot.id}`,\n ` Kind: ${snapshot.kind}`,\n ` Status: ${snapshot.status}`,\n ` Label: ${snapshot.label}`,\n ` Owner session: ${snapshot.ownerSession}`,\n ` CWD: ${snapshot.cwd}`,\n ` Started at: ${snapshot.startedAt}`,\n ` Updated at: ${snapshot.updatedAt}`,\n ` Finished at: ${snapshot.finishedAt ?? \"(n/a)\"}`,\n ` Detail: ${snapshot.detail ?? \"(none)\"}`,\n ` Capabilities: ${capabilities}`,\n ` Metadata: ${snapshot.metadata ? JSON.stringify(snapshot.metadata) : \"(none)\"}`,\n ` Cursor: ${result.cursor}`,\n ` Truncated: ${result.truncated}`,\n \"\",\n \"Output:\",\n result.text || \"(no output)\",\n ].join(\"\\n\");\n}\n\nexport async function handleJobCommand(\n slash: SlashLine,\n host: Pick<SessionCommandHost, \"client\" | \"sessionId\">,\n emit: (text: string) => void,\n readPresentation: ReadPresentation,\n): Promise<\"handled\"> {\n const { client, sessionId } = host;\n if (slash.name === \"/background\") {\n const command = slash.args.trim();\n if (!command) {\n emit(\"Usage: /background <command>\");\n return \"handled\";\n }\n if (!sessionId) return \"handled\";\n const result = await client.jobs.createBackgroundShell({ sessionId, command });\n emit(`Background shell started: ${result.jobId}. Use /jobs to inspect it.`);\n return \"handled\";\n }\n\n if (!sessionId) return \"handled\";\n const args = slash.args.trim();\n const [sub, id, ...extra] = args.split(/\\s+/).filter(Boolean);\n if ((!sub || sub === \"list\") && !id) {\n await readPresentation(`jobs:${sessionId}`, \"Jobs\", async () => {\n const jobs = await client.jobs.list({\n sessionId,\n includeFinished: true,\n limit: 100,\n });\n if (jobs.length === 0) return \"No Jobs.\";\n return [\n `Jobs (${jobs.length}):`,\n \"\",\n ...jobs.map((job) => ` ${job.id} [${job.status}] ${job.kind}: ${job.label}`),\n ].join(\"\\n\");\n });\n return \"handled\";\n }\n if (sub === \"show\" && id && extra.length === 0) {\n await readPresentation(`job:${sessionId}:${id}`, \"Jobs\", async () => {\n const result = await client.jobs.read(id, { sessionId });\n return formatJobReadResult(result);\n });\n return \"handled\";\n }\n if (sub === \"cancel\" && id && extra.length === 0) {\n const snapshot = await client.jobs.cancel(id, {\n sessionId,\n reason: \"Cancelled from slash command\",\n });\n emit(`Job ${snapshot.id} status: ${snapshot.status}.`);\n return \"handled\";\n }\n emit(\"Usage: /jobs [list | show ID | cancel ID]\");\n return \"handled\";\n}\n",
55
57
  "import type { SessionCommandHost, SlashLine } from \"./session-commands.js\";\n\ntype ReadPresentation = (key: string, title: string, load: () => Promise<string>) => Promise<void>;\n\nexport async function handleKnowledgeCommand(\n slash: SlashLine,\n host: Pick<SessionCommandHost, \"client\" | \"cwd\" | \"sessionId\">,\n emit: (text: string) => void,\n readPresentation: ReadPresentation,\n): Promise<\"handled\"> {\n const { client, cwd, sessionId } = host;\n const args = slash.args.trim();\n if (slash.name === \"/memory\") {\n const [sub, ...rest] = args.split(/\\s+/).filter(Boolean);\n if (!sub || sub === \"list\") {\n await readPresentation(`memory:${cwd}:list`, \"Memory\", async () => {\n const listed = await client.system.listMemory({ cwd });\n if (listed.entries.length === 0) return `Memory directory: ${listed.directory}\\nNo entries found.`;\n return [\n `Memory entries (${listed.entries.length}):`,\n \"\",\n ...listed.entries.map((entry) => {\n const tags = entry.tags?.length ? ` [${entry.tags.join(\", \")}]` : \"\";\n const preview = entry.content.length > 80\n ? `${entry.content.slice(0, 80)}...`\n : entry.content;\n return ` ${entry.id}${tags}: ${preview}`;\n }),\n ].join(\"\\n\");\n });\n return \"handled\";\n }\n if (sub === \"show\" && rest[0]) {\n const memoryId = rest[0];\n await readPresentation(`memory:${cwd}:show:${memoryId}`, \"Memory\", async () => {\n const entry = await client.system.getMemory(memoryId, { cwd });\n return [\n `ID: ${entry.id}`,\n `Created: ${new Date(entry.createdAt).toISOString()}`,\n `Updated: ${new Date(entry.updatedAt).toISOString()}`,\n `Tags: ${entry.tags?.join(\", \") ?? \"(none)\"}`,\n `Source: ${entry.source?.type ?? \"(unknown)\"}`,\n ...(entry.source?.sessionId ? [`Session: ${entry.source.sessionId}`] : []),\n ...(entry.source?.messageSha256 ? [`Message: ${entry.source.messageSha256}`] : []),\n \"\",\n entry.content,\n ].join(\"\\n\");\n });\n return \"handled\";\n }\n if (sub === \"add\") {\n const content = rest.join(\" \").trim();\n if (!content) {\n emit(\"Usage: /memory add <content>\");\n return \"handled\";\n }\n const entry = await client.system.addMemory({ cwd, content });\n emit(`Memory added: ${entry.id}`);\n return \"handled\";\n }\n if (sub === \"remove\" && rest[0]) {\n await client.system.removeMemory(rest[0], { cwd });\n emit(`Memory removed: ${rest[0]}`);\n return \"handled\";\n }\n emit(\"Usage: /memory [list | show ID | add CONTENT | remove ID]\");\n return \"handled\";\n }\n\n const sub = args.split(/\\s+/).filter(Boolean)[0];\n if (!sub || sub === \"list\") {\n await readPresentation(`facts:${cwd}:list`, \"Environment facts\", async () => {\n const { facts } = await client.system.listFacts({ cwd });\n if (!facts.length) return \"No project environment facts found.\";\n return [\"Project environment facts:\", \"\", ...facts.map((fact) => {\n const status = fact.status === \"superseded\"\n ? `superseded by ${fact.replacement?.byKey ?? \"(unknown)\"} (operation ${fact.replacement?.operationId ?? \"unknown\"})`\n : \"active\";\n const source = fact.manualSource\n ? `manual replacement ${fact.manualSource.operationId} of ${fact.manualSource.oldKey}` +\n ` at ${fact.manualSource.at}` +\n (fact.manualSource.sessionId ? ` in session ${fact.manualSource.sessionId}` : \"\")\n : `${fact.sourceSessionId ?? \"?\"}/${fact.sourceMessageId ?? \"?\"}`;\n return ` ${fact.key} [${status}] observed ${fact.observedAt?.slice(0, 10) ?? \"unknown\"}; source ${source}`;\n })].join(\"\\n\");\n });\n return \"handled\";\n }\n if (sub === \"replace\") {\n const body = args.slice(\"replace\".length).trim();\n const separator = body.indexOf(\"=>\");\n const oldKey = separator < 0 ? \"\" : body.slice(0, separator).trim();\n const newValue = separator < 0 ? \"\" : body.slice(separator + 2).trim();\n if (!oldKey || !newValue) {\n emit(\"Usage: /facts replace <old-key> => <new-value>\");\n return \"handled\";\n }\n const result = await client.system.replaceFact({ cwd, oldKey, newValue, ...(sessionId ? { sessionId } : {}) });\n emit([\n `Environment fact replaced: ${result.oldKey} -> ${result.newKey} (operation ${result.operationId}).`,\n ...(result.relatedActiveKeys.length\n ? [`Other active facts still mention the old address: ${result.relatedActiveKeys.join(\", \")}`] : []),\n ...(result.cacheWarning ? [`Warning: ${result.cacheWarning}`] : []),\n ].join(\"\\n\"));\n return \"handled\";\n }\n emit(\"Usage: /facts [list | replace <old-key> => <new-value>]\");\n return \"handled\";\n}\n",
56
- "import { patchSessionRuntimeMetadata } from \"@vykor/protocol\";\nimport type { SessionCommandHost, SlashLine } from \"./session-commands.js\";\n\ntype ReadPresentation = (key: string, title: string, load: () => Promise<string>) => Promise<void>;\n\nexport async function handleSettingsCommand(\n slash: SlashLine,\n host: Pick<SessionCommandHost, \"client\" | \"cwd\" | \"sessionId\" | \"patchStatus\">,\n emit: (text: string) => void,\n readPresentation: ReadPresentation,\n): Promise<\"handled\"> {\n const { client, cwd, sessionId } = host;\n const patchStatus = (patch: Record<string, unknown>) => host.patchStatus?.(patch);\n\n if (slash?.name === \"/plan\") {\n const next =\n slash.args === \"on\" ? \"plan\"\n : slash.args === \"off\" ? \"default\"\n : undefined;\n if (!next) {\n emit(\"Usage: /plan [on|off]\");\n return \"handled\";\n }\n patchStatus({ permission_mode: next });\n if (sessionId) {\n await client.sessions.update(sessionId, {\n metadata: patchSessionRuntimeMetadata({}, { permissionMode: next }),\n });\n }\n emit(`Permission mode: ${next}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/config\") {\n const args = slash.args.trim();\n if (!args || args === \"show\") {\n await readPresentation(`config:${cwd}`, \"Config\", async () => {\n const settings = await client.system.getSettings();\n return JSON.stringify(settings, null, 2);\n });\n return \"handled\";\n }\n const setMatch = args.match(/^set\\s+(\\S+)\\s+([\\s\\S]+)$/);\n if (!setMatch?.[1] || setMatch[2] === undefined) {\n emit(\"Usage: /config [show | set KEY VALUE]\");\n return \"handled\";\n }\n await client.system.patchSettings({ path: setMatch[1], value: setMatch[2].trim() });\n emit(`Set ${setMatch[1]} = ${setMatch[2].trim()}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/provider\") {\n if (!slash.args) {\n await readPresentation(\"providers\", \"Provider\", async () => {\n const providers = await client.providers.listProviders();\n const lines = [\"Available providers:\", \"\"];\n for (const provider of providers) {\n const marker = provider.active ? \" (active)\" : \"\";\n const keyStatus = provider.local ? \"[local]\" : provider.hasKey ? \"[key]\" : \"[no key]\";\n lines.push(` ${provider.name.padEnd(14)} ${provider.displayName.padEnd(14)} ${keyStatus}${marker}`);\n }\n return lines.join(\"\\n\");\n });\n return \"handled\";\n }\n const settings = await client.system.patchSettings(\n slash.args === \"auto\"\n ? { provider: \"auto\" }\n : { provider: slash.args },\n );\n if (typeof settings.model === \"string\") {\n patchStatus({ model: settings.model });\n }\n emit(`Provider switched to: ${slash.args}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/auth\") {\n const args = slash.args.trim();\n const [sub, provider, apiKey] = args.split(/\\s+/).filter(Boolean);\n if (!sub || sub === \"status\") {\n await readPresentation(\"auth:status\", \"Auth\", async () => {\n const auth = await client.auth.getStatus();\n const lines = [\"Credential status:\", \"\", \" Auth sources:\"];\n lines.push(\n ` codex_subscription: ${auth.codex.configured ? \"ready\" : auth.codex.state} (${auth.codex.source})`,\n );\n if (auth.storedProviders.length > 0) {\n lines.push(\"\", \" Stored credentials:\");\n for (const name of auth.storedProviders) lines.push(` ${name}: configured`);\n }\n if (auth.envProviders.length > 0) {\n lines.push(\" Environment variables:\");\n for (const env of auth.envProviders) lines.push(` ${env.name}: ${env.envKey}`);\n }\n if (auth.storedProviders.length === 0 && auth.envProviders.length === 0) {\n lines.push(\"\", \" No credentials configured.\");\n lines.push(\" Use /auth login <provider> <api-key> to store an API key.\");\n lines.push(\" Use /auth login codex to use a Codex subscription.\");\n }\n return lines.join(\"\\n\");\n });\n return \"handled\";\n }\n if (sub === \"login\") {\n if (!provider) {\n emit(\"Usage: /auth login <provider> <api-key> or /auth login codex\");\n return \"handled\";\n }\n const result = await client.auth.login({ provider, apiKey });\n emit(result.message);\n return \"handled\";\n }\n if (sub === \"logout\") {\n if (!provider) {\n emit(\"Usage: /auth logout <provider>\");\n return \"handled\";\n }\n const result = await client.auth.logout({ provider });\n emit(result.message);\n return \"handled\";\n }\n emit(\"Unknown subcommand. Use login, logout, or status.\");\n return \"handled\";\n }\n\n if (slash?.name === \"/profile\") {\n const action = slash.args.trim().split(/\\s+/).filter(Boolean)[0] ?? \"status\";\n if (action === \"status\" || action === \"show\") {\n emit(await client.system.getProfileStatus());\n return \"handled\";\n }\n if (action === \"init\") {\n emit(await client.system.initProfile());\n return \"handled\";\n }\n emit(\"Usage: /profile [status|init]\");\n return \"handled\";\n }\n\n if (slash?.name === \"/effort\") {\n const level = slash.args.trim().split(/\\s+/).filter(Boolean)[0];\n if (!level) {\n const settings = await client.system.getSettings();\n emit(`Current effort: ${String(settings.effort ?? \"medium\")}`);\n return \"handled\";\n }\n if (!level.trim()) {\n emit(\"Invalid effort. Provide a non-empty reasoning effort value\");\n return \"handled\";\n }\n await client.system.patchSettings({ effort: level });\n emit(`Effort set to: ${level}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/fast\") {\n const arg = slash.args.trim().split(/\\s+/).filter(Boolean)[0];\n const settings = await client.system.getSettings();\n const current = settings.fastMode === true;\n let next: boolean;\n if (arg === \"on\") next = true;\n else if (arg === \"off\") next = false;\n else next = !current;\n await client.system.patchSettings({ fastMode: next });\n emit(`Fast mode: ${next ? \"ON\" : \"OFF\"}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/reasoning\") {\n const arg = slash.args.trim().split(/\\s+/).filter(Boolean)[0];\n const settings = await client.system.getSettings();\n const current = settings.showReasoning !== false;\n let next: boolean;\n if (arg === \"on\") next = true;\n else if (arg === \"off\") next = false;\n else next = !current;\n await client.system.patchSettings({ showReasoning: next });\n emit(`Reasoning: ${next ? \"ON\" : \"OFF\"}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/turns\") {\n const value = slash.args.trim().split(/\\s+/).filter(Boolean)[0];\n if (!value) {\n const settings = await client.system.getSettings();\n emit(`Current max turns: ${String(settings.maxTurns ?? \"(default)\")}`);\n return \"handled\";\n }\n const n = Number.parseInt(value, 10);\n if (!Number.isFinite(n) || n < 1 || n > 512) {\n emit(\"Value must be between 1 and 512\");\n return \"handled\";\n }\n await client.system.patchSettings({ maxTurns: n });\n emit(`Max turns set to: ${n}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/output-style\") {\n const args = slash.args.trim();\n const styles = await client.system.listOutputStyles();\n const settings = await client.system.getSettings();\n const current = typeof settings.outputStyle === \"string\" ? settings.outputStyle : \"default\";\n const firstSpace = args.search(/\\s/);\n const first = firstSpace === -1 ? args : args.slice(0, firstSpace);\n const rest = firstSpace === -1 ? \"\" : args.slice(firstSpace + 1).trim();\n\n if (!first || first === \"show\") {\n emit(`Output style: ${current}`);\n return \"handled\";\n }\n if (first === \"list\") {\n emit(\n styles\n .map((style) => `${style.name === current ? \"* \" : \" \"}${style.name} [${style.source}]`)\n .join(\"\\n\"),\n );\n return \"handled\";\n }\n\n const styleName = first === \"set\" && rest ? rest : rest === \"\" ? first : undefined;\n if (!styleName) {\n emit(\"Usage: /output-style [show|list|NAME]\");\n return \"handled\";\n }\n if (!styles.some((style) => style.name === styleName)) {\n emit(`Unknown output style: ${styleName}`);\n return \"handled\";\n }\n await client.system.patchSettings({ outputStyle: styleName });\n emit(`Output style set to ${styleName}`);\n return \"handled\";\n }\n\n return \"handled\";\n}\n",
58
+ "import { patchSessionRuntimeMetadata } from \"@vykor/protocol\";\nimport type { SessionCommandHost, SlashLine } from \"./session-commands.js\";\n\ntype ReadPresentation = (key: string, title: string, load: () => Promise<string>) => Promise<void>;\n\nexport async function handleSettingsCommand(\n slash: SlashLine,\n host: Pick<SessionCommandHost, \"client\" | \"cwd\" | \"sessionId\" | \"patchStatus\">,\n emit: (text: string) => void,\n readPresentation: ReadPresentation,\n): Promise<\"handled\"> {\n const { client, cwd, sessionId } = host;\n const patchStatus = (patch: Record<string, unknown>) => host.patchStatus?.(patch);\n\n if (slash?.name === \"/plan\") {\n const next =\n slash.args === \"on\" ? \"plan\"\n : slash.args === \"off\" ? \"default\"\n : undefined;\n if (!next) {\n emit(\"Usage: /plan [on|off]\");\n return \"handled\";\n }\n patchStatus({ permission_mode: next });\n if (sessionId) {\n await client.sessions.update(sessionId, {\n metadata: patchSessionRuntimeMetadata({}, { permissionMode: next }),\n });\n }\n emit(`Permission mode: ${next}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/config\") {\n const args = slash.args.trim();\n if (!args || args === \"show\") {\n await readPresentation(`config:${cwd}`, \"Config\", async () => {\n const settings = await client.system.getSettings();\n return JSON.stringify(settings, null, 2);\n });\n return \"handled\";\n }\n const setMatch = args.match(/^set\\s+(\\S+)\\s+([\\s\\S]+)$/);\n if (!setMatch?.[1] || setMatch[2] === undefined) {\n emit(\"Usage: /config [show | set KEY VALUE]\");\n return \"handled\";\n }\n await client.system.patchSettings({ path: setMatch[1], value: setMatch[2].trim() });\n emit(`Set ${setMatch[1]} = ${setMatch[2].trim()}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/provider\") {\n if (!slash.args) {\n await readPresentation(\"providers\", \"Provider\", async () => {\n const providers = await client.providers.listProviders();\n const lines = [\"Available providers:\", \"\"];\n for (const provider of providers) {\n const marker = provider.active ? \" (active)\" : \"\";\n const keyStatus = provider.local ? \"[local]\" : provider.hasKey ? \"[key]\" : \"[no key]\";\n lines.push(` ${provider.name.padEnd(14)} ${provider.displayName.padEnd(14)} ${keyStatus}${marker}`);\n }\n return lines.join(\"\\n\");\n });\n return \"handled\";\n }\n const settings = await client.system.patchSettings(\n slash.args === \"auto\"\n ? { provider: \"auto\" }\n : { provider: slash.args },\n );\n if (typeof settings.model === \"string\") {\n patchStatus({ model: settings.model });\n }\n emit(`Provider switched to: ${slash.args}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/auth\") {\n const args = slash.args.trim();\n const [sub, provider, apiKey] = args.split(/\\s+/).filter(Boolean);\n if (!sub || sub === \"status\") {\n await readPresentation(\"auth:status\", \"Auth\", async () => {\n const auth = await client.auth.getStatus();\n const lines = [\"Credential status:\", \"\", \" Auth sources:\"];\n lines.push(\n ` codex_subscription: ${auth.codex.configured ? \"ready\" : auth.codex.state} (${auth.codex.source})`,\n );\n if (auth.storedProviders.length > 0) {\n lines.push(\"\", \" Stored credentials:\");\n for (const name of auth.storedProviders) lines.push(` ${name}: configured`);\n }\n if (auth.envProviders.length > 0) {\n lines.push(\" Environment variables:\");\n for (const env of auth.envProviders) lines.push(` ${env.name}: ${env.envKey}`);\n }\n if (auth.storedProviders.length === 0 && auth.envProviders.length === 0) {\n lines.push(\"\", \" No credentials configured.\");\n lines.push(\" Use /auth login <provider> <api-key> to store an API key.\");\n lines.push(\" Use /auth login codex to use a Codex subscription.\");\n }\n return lines.join(\"\\n\");\n });\n return \"handled\";\n }\n if (sub === \"login\") {\n if (!provider) {\n emit(\"Usage: /auth login <provider> <api-key> or /auth login codex\");\n return \"handled\";\n }\n const result = await client.auth.login({ provider, apiKey });\n emit(result.message);\n return \"handled\";\n }\n if (sub === \"logout\") {\n if (!provider) {\n emit(\"Usage: /auth logout <provider>\");\n return \"handled\";\n }\n const result = await client.auth.logout({ provider });\n emit(result.message);\n return \"handled\";\n }\n emit(\"Unknown subcommand. Use login, logout, or status.\");\n return \"handled\";\n }\n\n if (slash?.name === \"/profile\") {\n const action = slash.args.trim().split(/\\s+/).filter(Boolean)[0] ?? \"status\";\n if (action === \"status\" || action === \"show\") {\n emit(await client.system.getProfileStatus());\n return \"handled\";\n }\n if (action === \"init\") {\n emit(await client.system.initProfile());\n return \"handled\";\n }\n emit(\"Usage: /profile [status|init]\");\n return \"handled\";\n }\n\n if (slash?.name === \"/effort\") {\n const level = slash.args.trim().split(/\\s+/).filter(Boolean)[0];\n if (!level) {\n const settings = await client.system.getSettings();\n emit(`Current effort: ${String(settings.effort ?? \"medium\")}`);\n return \"handled\";\n }\n if (!level.trim()) {\n emit(\"Invalid effort. Provide a non-empty reasoning effort value\");\n return \"handled\";\n }\n await client.system.patchSettings({ effort: level });\n emit(`Effort set to: ${level}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/fast\") {\n const arg = slash.args.trim().split(/\\s+/).filter(Boolean)[0];\n const settings = await client.system.getSettings();\n const current = settings.fastMode === true;\n let next: boolean;\n if (arg === \"on\") next = true;\n else if (arg === \"off\") next = false;\n else next = !current;\n await client.system.patchSettings({ fastMode: next });\n emit(`Fast mode: ${next ? \"ON\" : \"OFF\"}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/reasoning\") {\n const arg = slash.args.trim().split(/\\s+/).filter(Boolean)[0];\n const settings = await client.system.getSettings();\n const current = settings.showReasoning === true;\n let next: boolean;\n if (arg === \"on\") next = true;\n else if (arg === \"off\") next = false;\n else next = !current;\n await client.system.patchSettings({ showReasoning: next });\n emit(`Reasoning: ${next ? \"ON\" : \"OFF\"}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/turns\") {\n const value = slash.args.trim().split(/\\s+/).filter(Boolean)[0];\n if (!value) {\n const settings = await client.system.getSettings();\n emit(`Current max turns: ${String(settings.maxTurns ?? \"(default)\")}`);\n return \"handled\";\n }\n const n = Number.parseInt(value, 10);\n if (!Number.isFinite(n) || n < 1 || n > 512) {\n emit(\"Value must be between 1 and 512\");\n return \"handled\";\n }\n await client.system.patchSettings({ maxTurns: n });\n emit(`Max turns set to: ${n}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/output-style\") {\n const args = slash.args.trim();\n const styles = await client.system.listOutputStyles();\n const settings = await client.system.getSettings();\n const current = typeof settings.outputStyle === \"string\" ? settings.outputStyle : \"default\";\n const firstSpace = args.search(/\\s/);\n const first = firstSpace === -1 ? args : args.slice(0, firstSpace);\n const rest = firstSpace === -1 ? \"\" : args.slice(firstSpace + 1).trim();\n\n if (!first || first === \"show\") {\n emit(`Output style: ${current}`);\n return \"handled\";\n }\n if (first === \"list\") {\n emit(\n styles\n .map((style) => `${style.name === current ? \"* \" : \" \"}${style.name} [${style.source}]`)\n .join(\"\\n\"),\n );\n return \"handled\";\n }\n\n const styleName = first === \"set\" && rest ? rest : rest === \"\" ? first : undefined;\n if (!styleName) {\n emit(\"Usage: /output-style [show|list|NAME]\");\n return \"handled\";\n }\n if (!styles.some((style) => style.name === styleName)) {\n emit(`Unknown output style: ${styleName}`);\n return \"handled\";\n }\n await client.system.patchSettings({ outputStyle: styleName });\n emit(`Output style set to ${styleName}`);\n return \"handled\";\n }\n\n return \"handled\";\n}\n",
57
59
  "import type { ReloadPluginsResponse } from \"../types/index.js\";\n\n/** Reload invalidates runtimes; it does not prove that every plugin activated. */\nexport function formatPluginReload(result: ReloadPluginsResponse): string {\n const lines = [result.message];\n if (!result.plugins.length) lines.push(\"No plugins discovered.\");\n else {\n lines.push(\"Plugin validation after reload (runtimes load on next use):\");\n for (const plugin of result.plugins) {\n lines.push(`- ${plugin.identity.id} [${plugin.enabled ? \"enabled\" : \"disabled\"}/${plugin.installation}/${plugin.activation}]`);\n for (const diagnostic of plugin.diagnostics) lines.push(` ${diagnostic.severity}: ${diagnostic.code}: ${diagnostic.message}`);\n if (plugin.permissions.missing.length) lines.push(` Missing permissions: ${plugin.permissions.missing.join(\", \")}`);\n if (plugin.installation !== \"installed\" || plugin.permissions.missing.length || plugin.diagnostics.some(item => item.code.includes(\"permission\"))) {\n lines.push(plugin.scope === \"managed\"\n ? \" Ask your administrator to repair this managed plugin.\"\n : \" Review the source and permissions, then run vk plugin install-local <source> or vk plugin link <source>, supplying --approve <permission> for each requested permission.\");\n }\n }\n }\n lines.push(...result.warnings.map(warning => `! ${warning}`));\n return lines.join(\"\\n\");\n}\n",
58
60
  "import type {\n AuthResource,\n DevelopmentResource,\n JobResource,\n PluginResource,\n ProjectResource,\n ProviderResource,\n SessionResource,\n SystemResource,\n} from \"../resources/index.js\";\nimport type { ProtocolClient } from \"../protocol/index.js\";\nimport type { CommandCatalogEntry, VykorClientState } from \"../types/index.js\";\nimport { handleDiagnosticCommand } from \"./diagnostic-commands.js\";\nimport { handleJobCommand } from \"./job-commands.js\";\nimport { handleKnowledgeCommand } from \"./knowledge-commands.js\";\nimport { handleSettingsCommand } from \"./settings-commands.js\";\nimport { formatPluginReload } from \"./plugin-presentation.js\";\n\nexport type SlashLine = { name: string; args: string };\n\nexport type PresentationReadRequest = {\n key: string;\n title: string;\n load: () => Promise<string>;\n};\n\nexport type RuntimeDiagnostics = {\n runtime?: string;\n platform?: string;\n architecture?: string;\n};\n\nexport interface SessionCommandClient {\n protocol: Pick<ProtocolClient, \"health\">;\n system: Pick<\n SystemResource,\n | \"getSettings\" | \"patchSettings\" | \"getSessionMcp\"\n | \"listMemory\" | \"getMemory\" | \"addMemory\" | \"removeMemory\"\n | \"listFacts\" | \"replaceFact\"\n | \"getContextPreview\" | \"getContextStatus\" | \"getContextUsage\"\n | \"startDream\" | \"getProfileStatus\" | \"initProfile\" | \"listOutputStyles\"\n >;\n providers: Pick<ProviderResource, \"listProviders\">;\n auth: Pick<AuthResource, \"getStatus\" | \"login\" | \"logout\">;\n projects: Pick<ProjectResource, \"init\">;\n plugins: Pick<PluginResource, \"list\" | \"enable\" | \"disable\" | \"reload\">;\n development: Pick<\n DevelopmentResource,\n \"listAgentPersonas\" | \"listHooks\" | \"getGitDiff\" | \"getGitBranch\" | \"getGitStatus\" | \"gitCommit\"\n >;\n sessions: Pick<\n SessionResource,\n \"update\" | \"compact\" | \"rewind\" | \"remember\" | \"export\" | \"getUsage\"\n >;\n jobs: Pick<JobResource, \"list\" | \"createBackgroundShell\" | \"read\" | \"cancel\">;\n}\n\nexport type SessionCommandHost = {\n client: SessionCommandClient;\n sessionId?: string;\n /** Project cwd for memory/git/plugins/etc. */\n cwd: string;\n /** Values used by /status */\n model?: string;\n permissionMode?: string;\n statusSessionId?: string;\n commandCatalog: CommandCatalogEntry[];\n clientState: VykorClientState;\n busy: boolean;\n /** Present a system/notice message to the user */\n emit(text: string): void;\n /** Present read-only output in a transient UI surface when available. */\n present?(title: string, content: string): void;\n /** Present cached read-only output immediately and refresh it asynchronously. */\n cacheFirstRead?(request: PresentationReadRequest): void;\n /** Optional status patch for /plan /provider */\n patchStatus?(patch: Record<string, unknown>): void;\n /** Host-specific runtime information used by /doctor. Browsers may omit it. */\n getRuntimeDiagnostics?(): RuntimeDiagnostics | Promise<RuntimeDiagnostics>;\n};\n\nexport type SessionCommandOutcome =\n | \"handled\"\n | \"unhandled\"\n | \"local_ui\";\n\n/** Client-local UI commands; never forwarded as model prompts. */\nexport const LOCAL_COMMAND_DETAILS: Array<{ name: string; description?: string }> = [\n { name: \"/new\", description: \"Start a new session\" },\n { name: \"/sessions\", description: \"List and switch sessions\" },\n { name: \"/resume\", description: \"Replay an interrupted prompt run\" },\n { name: \"/permissions\", description: \"Change permission mode\" },\n { name: \"/plan\", description: \"Toggle plan mode\" },\n { name: \"/theme\", description: \"Change TUI theme\" },\n { name: \"/models\", description: \"Select model\" },\n { name: \"/workflow\", description: \"Open Jobs panel with Workflow details\" },\n { name: \"/workflows\", description: \"Open Jobs panel with Workflow details\" },\n];\n\nexport const LOCAL_COMMAND_NAMES = new Set(LOCAL_COMMAND_DETAILS.map((entry) => entry.name));\n\nexport function parseSlashLine(line: string): SlashLine | null {\n const trimmed = line.trim();\n if (!trimmed.startsWith(\"/\")) return null;\n const spaceIdx = trimmed.search(/\\s/);\n if (spaceIdx === -1) return { name: trimmed, args: \"\" };\n return { name: trimmed.slice(0, spaceIdx), args: trimmed.slice(spaceIdx + 1).trim() };\n}\n\nexport function mergeCommandDetails(\n catalog: CommandCatalogEntry[],\n): Array<{ name: string; description?: string }> {\n const byName = new Map<string, { name: string; description?: string }>();\n for (const entry of LOCAL_COMMAND_DETAILS) byName.set(entry.name, entry);\n for (const entry of catalog) {\n if (byName.has(entry.name)) continue;\n byName.set(entry.name, {\n name: entry.name,\n ...(entry.description ? { description: entry.description } : {}),\n });\n }\n return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));\n}\n\nexport function hasActiveRun(state: VykorClientState, sessionId?: string): boolean {\n if (!sessionId) return false;\n const bucket = state.buckets[sessionId];\n if (!bucket) return false;\n return Object.values(bucket.runs).some((run) => run.status === \"pending\" || run.status === \"running\");\n}\n\nexport function resolveSessionCwd(input: {\n statusCwd?: unknown;\n daemonCwd?: string;\n fallback?: string;\n}): string {\n if (typeof input.statusCwd === \"string\" && input.statusCwd) return input.statusCwd;\n if (input.daemonCwd) return input.daemonCwd;\n return input.fallback ?? \".\";\n}\n\nfunction firstArg(args: string): string | undefined {\n return args.trim().split(/\\s+/).filter(Boolean)[0];\n}\n\nfunction shouldPresentSlashOutput(slash: SlashLine): boolean {\n switch (slash.name) {\n case \"/help\":\n case \"/version\":\n case \"/status\":\n case \"/mcp\":\n case \"/context\":\n case \"/stats\":\n case \"/agents\":\n case \"/doctor\":\n case \"/usage\":\n case \"/cost\":\n case \"/hooks\":\n case \"/subagents\":\n case \"/diff\":\n case \"/skills\":\n return true;\n case \"/config\": {\n const args = slash.args.trim();\n return !args || args === \"show\";\n }\n case \"/provider\":\n return !slash.args.trim();\n case \"/jobs\": {\n const sub = firstArg(slash.args);\n return !sub || sub === \"list\" || sub === \"show\";\n }\n case \"/memory\": {\n const sub = firstArg(slash.args);\n return !sub || sub === \"list\" || sub === \"show\";\n }\n case \"/facts\": {\n const sub = firstArg(slash.args);\n return !sub || sub === \"list\";\n }\n case \"/auth\": {\n const sub = firstArg(slash.args);\n return !sub || sub === \"status\";\n }\n case \"/profile\": {\n const action = firstArg(slash.args) ?? \"status\";\n return action === \"status\" || action === \"show\";\n }\n case \"/effort\":\n case \"/turns\":\n return !slash.args.trim();\n case \"/output-style\": {\n const sub = firstArg(slash.args);\n return !sub || sub === \"show\" || sub === \"list\";\n }\n case \"/plugin\": {\n const sub = firstArg(slash.args);\n return !sub || sub === \"list\";\n }\n case \"/branch\":\n return !slash.args.trim() || slash.args.trim().split(/\\s+/).includes(\"list\");\n case \"/commit\":\n return !slash.args.trim();\n default:\n return false;\n }\n}\n\nfunction slashOutputTitle(slash: SlashLine): string {\n const name = slash.name.startsWith(\"/\") ? slash.name.slice(1) : slash.name;\n return name ? name[0]!.toUpperCase() + name.slice(1) : \"Output\";\n}\n\nexport async function dispatchSessionCommand(\n slash: SlashLine | null,\n host: SessionCommandHost,\n): Promise<SessionCommandOutcome> {\n const {\n client,\n sessionId,\n cwd,\n commandCatalog,\n } = host;\n const emit = (text: string) => {\n if (slash && host.present && shouldPresentSlashOutput(slash)) {\n host.present(slashOutputTitle(slash), text);\n return;\n }\n host.emit(text);\n };\n const readPresentation = async (\n key: string,\n title: string,\n load: () => Promise<string>,\n ): Promise<void> => {\n if (slash && host.cacheFirstRead && shouldPresentSlashOutput(slash)) {\n host.cacheFirstRead({ key, title, load });\n return;\n }\n emit(await load());\n };\n if (slash && [\"/plan\", \"/config\", \"/provider\", \"/auth\", \"/profile\", \"/effort\", \"/fast\", \"/reasoning\", \"/turns\", \"/output-style\"].includes(slash.name)) {\n return handleSettingsCommand(slash, host, emit, readPresentation);\n }\n\n if (slash?.name === \"/skills\") {\n const templates = commandCatalog.filter((entry) => entry.kind === \"template\");\n if (slash.args) {\n const name = slash.args.startsWith(\"/\") ? slash.args : `/${slash.args}`;\n const match = templates.find((entry) => entry.name === name || entry.name === `/${slash.args}`);\n if (!match) {\n emit(`Unknown skill: ${slash.args}`);\n return \"handled\";\n }\n emit(`${match.name}${match.description ? ` — ${match.description}` : \"\"}`);\n return \"handled\";\n }\n if (templates.length === 0) {\n emit(\"No user-invocable skills available.\");\n return \"handled\";\n }\n emit(\n [\"Skills:\", ...templates.map((entry) =>\n `- ${entry.name}${entry.description ? ` — ${entry.description}` : \"\"}`)].join(\"\\n\"),\n );\n return \"handled\";\n }\n\n if (slash?.name === \"/help\") {\n const details = mergeCommandDetails(commandCatalog);\n emit(\n [\"Available commands:\", ...details.map((entry) =>\n `${entry.name}${entry.description ? ` — ${entry.description}` : \"\"}`)].join(\"\\n\"),\n );\n return \"handled\";\n }\n\n if (slash && (slash.name === \"/version\" || slash.name === \"/status\")) {\n return handleDiagnosticCommand(slash, host, emit, readPresentation);\n }\n\n if (slash?.name === \"/mcp\") {\n if (!sessionId) return \"handled\";\n await readPresentation(`mcp:${sessionId}`, \"MCP\", async () => {\n const servers = await client.system.getSessionMcp(sessionId);\n if (servers.length === 0) return \"No MCP servers connected.\";\n return [\n `MCP Servers (${servers.length}):`,\n \"\",\n ...servers.flatMap((server) => [\n ` ${server.name}: ${server.status}`,\n ...(server.command ? [` Command: ${server.command}`] : []),\n ` Tools: ${server.toolCount} Resources: ${server.resourceCount}`,\n ...(server.error ? [` Error: ${server.error}`] : []),\n \"\",\n ]),\n ].join(\"\\n\");\n });\n return \"handled\";\n }\n\n if (slash?.name === \"/jobs\" || slash?.name === \"/background\") {\n return handleJobCommand(slash, host, emit, readPresentation);\n }\n\n if (slash?.name === \"/memory\" || slash?.name === \"/facts\") {\n return handleKnowledgeCommand(slash, host, emit, readPresentation);\n }\n\n if (slash && (slash.name === \"/context\" || slash.name === \"/stats\" || slash.name === \"/agents\")) {\n return handleDiagnosticCommand(slash, host, emit, readPresentation);\n }\n\n if (slash?.name === \"/rewind\") {\n if (!sessionId) return \"handled\";\n const raw = slash.args.trim().split(/\\s+/).filter(Boolean)[0] ?? \"1\";\n const count = Number.parseInt(raw, 10);\n if (!Number.isInteger(count) || count < 1) {\n emit(\"Count must be a positive integer\");\n return \"handled\";\n }\n const result = await client.sessions.rewind(sessionId, { count });\n emit(`Rewound ${result.turns} turn(s), removed ${result.removed} message(s).`);\n return \"handled\";\n }\n\n if (slash?.name === \"/compact\") {\n if (!sessionId) return \"handled\";\n const result = await client.sessions.compact(sessionId);\n emit(`Conversation compacted (${result.messageCount} messages retained).`);\n return \"handled\";\n }\n\n if (slash?.name === \"/remember\") {\n if (!sessionId) return \"handled\";\n const result = await client.sessions.remember(sessionId);\n if (result.skipped) {\n emit(`未写入记忆:${result.reason ?? \"skipped\"}`);\n return \"handled\";\n }\n emit(`已写入 ${result.writtenIds.length} 条记忆:${result.titles.join(\"、\")}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/dream\") {\n const preview = slash.args.includes(\"--preview\");\n const result = await client.system.startDream({\n cwd,\n ...(sessionId ? { sessionId } : {}),\n preview,\n });\n emit(`Dream started as Job ${result.taskId}. Use /jobs to inspect it.`);\n return \"handled\";\n }\n\n if (slash?.name === \"/doctor\") {\n return handleDiagnosticCommand(slash, host, emit, readPresentation);\n }\n\n if (slash?.name === \"/usage\" || slash?.name === \"/cost\") {\n if (!sessionId) return \"handled\";\n if (slash.name === \"/cost\") {\n await readPresentation(`cost:${sessionId}`, \"Cost\", async () => {\n const usage = await client.sessions.getUsage(sessionId);\n return [\n \"Cost estimate:\",\n ` Model: ${usage.model}`,\n ` Input tokens: ${usage.inputTokens.toLocaleString()}`,\n ` Output tokens: ${usage.outputTokens.toLocaleString()}`,\n ` Est. cost: ${usage.estimatedCost}`,\n ...(usage.cacheCreationTokens\n ? [` Cache write: ${usage.cacheCreationTokens.toLocaleString()}`]\n : []),\n ...(usage.cacheReadTokens\n ? [` Cache read: ${usage.cacheReadTokens.toLocaleString()}`]\n : []),\n ].join(\"\\n\");\n });\n return \"handled\";\n }\n await readPresentation(`usage:${sessionId}`, \"Usage\", async () => {\n const usage = await client.sessions.getUsage(sessionId);\n return [\n \"Token usage:\",\n ` Input: ${usage.inputTokens.toLocaleString()}`,\n ` Output: ${usage.outputTokens.toLocaleString()}`,\n ` Total: ${(usage.inputTokens + usage.outputTokens).toLocaleString()}`,\n ` Cache write: ${usage.cacheCreationTokens.toLocaleString()}`,\n ` Cache read: ${usage.cacheReadTokens.toLocaleString()}`,\n ` Messages: ${usage.messageCount}`,\n ` Est. cost: ${usage.estimatedCost}`,\n ].join(\"\\n\");\n });\n return \"handled\";\n }\n\n if (slash?.name === \"/export\") {\n if (!sessionId) return \"handled\";\n const args = slash.args.trim().split(/\\s+/).filter(Boolean);\n const forceJson = args.includes(\"--json\");\n const filename = args.find((arg) => !arg.startsWith(\"--\"));\n const result = await client.sessions.export(sessionId, {\n ...(filename ? { filename } : {}),\n json: forceJson,\n });\n emit(`Exported ${result.format === \"json\" ? \"JSON\" : \"Markdown\"} to: ${result.filepath}`);\n return \"handled\";\n }\n\n if (slash?.name === \"/init\") {\n emit(await client.projects.init({ cwd }));\n return \"handled\";\n }\n\n if (slash?.name === \"/plugin\") {\n const args = slash.args.trim().split(/\\s+/).filter(Boolean);\n const sub = args[0];\n if (!sub || sub === \"list\") {\n await readPresentation(`plugins:${cwd}`, \"Plugin\", async () => {\n const listed = await client.plugins.list({ cwd });\n if (listed.plugins.length === 0) return \"No plugins discovered.\";\n return [\n ...listed.plugins.map(\n (plugin) =>\n `- ${plugin.identity.id} (${plugin.identity.name}@${plugin.identity.version}) ` +\n `[${plugin.origin}/${plugin.scope}/${plugin.enabled ? \"enabled\" : \"disabled\"}/${plugin.activation}] ` +\n Object.entries(plugin.inventory).map(([kind, count]) => `${kind}=${count}`).join(\" \") +\n plugin.diagnostics.map((item) => `\\n ! ${item.code}: ${item.message}`).join(\"\"),\n ),\n ...listed.warnings.map((warning) => `! ${warning}`),\n ].join(\"\\n\");\n });\n return \"handled\";\n }\n if ((sub === \"enable\" || sub === \"disable\") && args[1]) {\n const result = sub === \"enable\"\n ? await client.plugins.enable(args[1], { cwd })\n : await client.plugins.disable(args[1], { cwd });\n emit(result.message);\n return \"handled\";\n }\n emit(\"Usage: /plugin [list|enable ID|disable ID]\");\n return \"handled\";\n }\n\n if (slash?.name === \"/reload-plugins\") {\n const result = await client.plugins.reload({ cwd });\n emit(formatPluginReload(result));\n return \"handled\";\n }\n\n if (slash?.name === \"/hooks\") {\n await readPresentation(`hooks:${cwd}:${sessionId ?? \"global\"}`, \"Hooks\", async () => {\n const hooks = await client.development.listHooks({\n cwd,\n ...(sessionId ? { sessionId } : {}),\n });\n if (hooks.length === 0) return \"No hooks configured.\";\n const settingsHooks = hooks.filter((hook) => hook.origin === \"settings\");\n const runtimeHooks = hooks.filter((hook) => hook.origin === \"runtime\");\n const lines = [\"Hooks:\", \"\"];\n if (runtimeHooks.length > 0) {\n lines.push(\"Runtime hooks:\");\n for (const hook of runtimeHooks) {\n lines.push(` ${hook.id}: ${hook.event} (${hook.type}) [${hook.enabled ? \"enabled\" : \"disabled\"}]`);\n }\n lines.push(\"\");\n }\n if (settingsHooks.length > 0) {\n lines.push(\"Settings hooks:\");\n for (const hook of settingsHooks) {\n lines.push(` ${hook.id}: ${hook.event} (${hook.type}) [${hook.enabled ? \"enabled\" : \"disabled\"}]`);\n }\n }\n return lines.join(\"\\n\");\n });\n return \"handled\";\n }\n\n if (slash?.name === \"/subagents\") {\n const agents = await client.development.listAgentPersonas();\n emit(\n [\n `Available subagent personas (${agents.length}):`,\n \"\",\n ...agents.flatMap((agent) => [\n `- ${agent.name} [${agent.source ?? \"builtin\"}]${agent.model ? ` model=${agent.model}` : \"\"}`,\n ` ${agent.description.split(\"\\n\")[0]?.slice(0, 100) ?? \"\"}`,\n ]),\n \"\",\n '用法: Agent 工具 subagentType=\"<name>\" 派发;/agents 查看 Agent Jobs。',\n ].join(\"\\n\"),\n );\n return \"handled\";\n }\n\n if (slash?.name === \"/diff\") {\n const full = slash.args.trim().split(/\\s+/).includes(\"full\");\n await readPresentation(`git:diff:${cwd}:${full ? \"full\" : \"summary\"}`, \"Diff\", async () =>\n await client.development.getGitDiff({ cwd, full }));\n return \"handled\";\n }\n\n if (slash?.name === \"/branch\") {\n const list = slash.args.trim().split(/\\s+/).includes(\"list\");\n await readPresentation(`git:branch:${cwd}:${list ? \"list\" : \"current\"}`, \"Branch\", async () =>\n await client.development.getGitBranch({ cwd, list }));\n return \"handled\";\n }\n\n if (slash?.name === \"/commit\") {\n const message = slash.args.trim();\n if (!message) {\n await readPresentation(`git:status:${cwd}`, \"Commit\", async () => await client.development.getGitStatus({ cwd }));\n return \"handled\";\n }\n emit(await client.development.gitCommit({ cwd, message }));\n return \"handled\";\n }\n\n if (slash && LOCAL_COMMAND_NAMES.has(slash.name)) {\n // UI-only commands are handled by the host UI layer; ignore accidental falls-through.\n return \"local_ui\";\n }\n\n return \"unhandled\";\n}\n",
59
61
  "export * from \"./session-commands.js\";\n",
60
- "/**\n * @vykor/client 公共导出。\n *\n * 面向 TUI / Web / Desktop:typed HTTP API、SSE 解析、事件 reducer、replay+live 同步。\n * 客户端只做展示与控制,不拥有 agent runtime。\n */\n\nexport {\n createPromptRequestId,\n normalizeDaemonBaseUrl,\n VykorApiError,\n IncompatibleProtocolError,\n VykorClient,\n streamServerSentEvents,\n HttpTransport,\n SseTransport,\n} from \"./transport/index.js\";\nexport {\n ProtocolClient,\n} from \"./protocol/index.js\";\nexport type { DaemonRestartPreview } from \"./resources/system-resource.js\";\nexport {\n SystemResource,\n ProviderResource,\n AuthResource,\n ProjectResource,\n PluginResource,\n PluginUiResource,\n DevelopmentResource,\n SessionResource,\n AttachmentResource,\n PermissionResource,\n ScheduleResource,\n NoteResource,\n JobResource,\n TerminalResource,\n ChannelResource,\n EventResource,\n McpResource,\n} from \"./resources/index.js\";\nexport { parseCreateSessionGoalInput, parseUpdateSessionGoalInput, parseGoalActionInput } from \"@vykor/protocol\";\nexport { readWorkspaceChangesMetadata } from \"@vykor/protocol\";\nexport type { UsageFilter, UsageRequest, UsagePrice, UsageSettings, UsageReport, StorageCategory, StorageReport, CleanupCandidate, CleanupPreview, CleanupResult, MaintenanceBackupManifest, StorageRetentionPolicy } from \"@vykor/protocol\";\nexport type { WorkspaceChangesMetadata, WorkspaceChangeFile } from \"@vykor/protocol\";\nexport {\n PLUGIN_UI_BRIDGE_LIMITS, PluginUiBridgeError, decodePluginUiBridgeMessage, encodePluginUiBridgeMessage,\n parsePluginUiBridgeRequest, parsePluginUiBridgeSnapshot, parsePluginUiBridgeReceipt,\n readPluginUiBridgeResponse, readPluginUiBridgeNotification, readPluginUiInstance, readPluginUiAction,\n} from \"@vykor/protocol\";\nexport type {\n JsonValue, PluginUiViewSnapshot, PluginUiSurface, PluginUiBridgeMethod,\n PluginUiBridgeRequest, PluginUiBridgeResponse, PluginUiBridgeNotification,\n PluginUiActionRunMetadata,\n DismissPluginUiInput,\n InvokePluginUiActionInput,\n PluginUiActionReceipt,\n PluginUiActionResponse,\n PluginUiActionDescription,\n PluginUiAvailability,\n PluginUiDocumentResponse,\n PluginUiInstanceRecord,\n PluginUiInstanceResponse,\n PluginCatalogEntry,\n AgentEnvironmentCapabilities,\n AttachmentAssetRecord,\n CreateNoteInput,\n NoteRecord,\n UpdateNoteInput,\n ClientProtocolSupport,\n ProtocolCompatibility,\n ServerCapabilities,\n SearchSessionsOptions,\n SessionSearchResult,\n} from \"@vykor/protocol\";\nexport {\n checkProtocolCompatibility,\n CURRENT_PROTOCOL_VERSION,\n readSessionModelRetryState,\n readSessionModelUsage,\n isSupersededModelPart,\n supportsFeature,\n} from \"@vykor/protocol\";\nexport type {\n SessionModelRetryState,\n SessionModelUsageSummary,\n} from \"@vykor/protocol\";\nexport {\n applyEvent,\n applyEvents,\n applySessionSnapshot,\n createInitialClientState,\n hydrateState,\n selectFirstPendingPermission,\n selectSessionInputs,\n selectSessionMessagesWithParts,\n selectSessionModelRetry,\n selectSessionModelUsage,\n selectSessionOrderedMessages,\n selectSessionParts,\n selectSessionPermissions,\n selectSessionRuns,\n selectSessionTasks,\n selectVisibleSessionMessagesWithParts,\n SessionSyncController,\n syncEvents,\n UnsupportedSessionEventSchemaVersionError,\n} from \"./state/index.js\";\nexport type {\n SessionSyncControllerOptions,\n SyncConnectionStatus,\n} from \"./state/index.js\";\nexport {\n LOCAL_COMMAND_DETAILS,\n LOCAL_COMMAND_NAMES,\n dispatchSessionCommand,\n hasActiveRun,\n mergeCommandDetails,\n parseSlashLine,\n resolveSessionCwd,\n} from \"./commands/index.js\";\nexport {\n patchSessionRuntimeMetadata,\n readRuntimeMetadata,\n readSessionRuntimeConfig,\n} from \"@vykor/protocol\";\nexport type {\n SessionRuntimeConfig,\n SessionRuntimeConfigPatch,\n} from \"@vykor/protocol\";\nexport type {\n PresentationReadRequest,\n SessionCommandHost,\n SessionCommandOutcome,\n SlashLine,\n} from \"./commands/index.js\";\nexport type {\n AdmitClientPromptInput,\n AgentPersonaInfo,\n AttachmentStorageGcResult,\n AttachmentStorageIssue,\n AttachmentStorageRepairResult,\n AttachmentStorageReport,\n AuthStatus,\n CommandCatalogEntry,\n CommandKind,\n CommandSelection,\n CommandSource,\n CompactSessionResponse,\n CancelQueuedClientPromptInput,\n CancelQueuedPromptResponse,\n CreateBackgroundShellInput,\n CreateBackgroundShellResult,\n CreateScheduledTaskInput,\n AdmitPromptAttachmentInput,\n CreateClientSessionInput,\n EditLatestClientPromptInput,\n EventSyncOptions,\n ForkClientSessionInput,\n HookInfo,\n ReloadPluginsResponse,\n RewindSessionResponse,\n InputDelivery,\n InterruptSessionResponse,\n ListClientMessagePartsOptions,\n ListCommandsOptions,\n ListEventsOptions,\n ListMessagesOptions,\n ListPermissionsOptions,\n ListSessionsOptions,\n ListProjectsOptions,\n ProjectRecord,\n McpServerStatus,\n McpRuntimeStatus,\n McpRuntimeSyncResult,\n MemoryEntryRecord,\n MemoryRevision,\n UpdateMemoryEntryInput,\n ClearMemoryInput,\n ClearSessionWorktreeBindingInput,\n MemoryListResponse,\n ModelInfo,\n ModelProviderInfo,\n VykorClientOptions,\n VykorClientState,\n VykorServerHealth,\n OutputStyleInfo,\n PermissionRequestRecord,\n PermissionStatus,\n PluginInfo,\n PluginUiInventory,\n PluginRuntimeStatus,\n SkillInfo,\n SkillProject,\n SkillSnapshot,\n SkillSource,\n PromoteQueuedClientPromptInput,\n PromoteQueuedPromptResponse,\n PromptResponse,\n ProviderInfo,\n CustomProviderInput,\n ConnectCatalogProviderInput,\n UpdateCatalogProviderHeadersInput,\n RememberSessionResponse,\n ReplyPermissionInput,\n ScheduledRunRecord,\n ScheduledTaskRecord,\n ScheduledTaskStatusSummary,\n SessionBucket,\n UpdateScheduledTaskInput,\n SessionEventRecord,\n SessionAttachmentMessagePartRecord,\n SessionInputAttachmentRecord,\n SessionExportResponse,\n SessionInputRecord,\n SessionMessagePartRecord,\n SessionMessageRecord,\n SessionRecord,\n SessionRunRecord,\n SessionRunAttemptRecord,\n SessionExecutionRecord,\n SessionStateSnapshot,\n SessionTransformationMessagePartRecord,\n SessionUserInputItem,\n SessionGoal,\n CreateSessionGoalInput,\n UpdateSessionGoalInput,\n GoalActionInput,\n SessionUsageResponse,\n StartDreamResponse,\n SyncEventUpdate,\n UpdateClientSessionInput,\n UploadAttachmentInput,\n DownloadAttachmentOptions,\n} from \"./types/index.js\";\nexport type { SessionMessageWithParts } from \"./state/index.js\";\nexport type {\n TerminalCreateRequest,\n TerminalEvent,\n TerminalReadRequest,\n TerminalReadResult,\n TerminalResizeRequest,\n TerminalRuntime,\n TerminalSessionInfo,\n TerminalSessionStatus,\n TerminalSignal,\n TerminalSource,\n TerminalWriteRequest,\n JobCapabilities,\n JobKind,\n JobReadResult,\n JobSnapshot,\n JobStatus,\n JobWaitResult,\n DurableChannelMessageInput,\n DurableChannelMessageResult,\n ExternalConversationRecord,\n ChannelDeliveryRecord,\n ChannelDeliveryStatus,\n ChannelStatusSnapshot,\n ChannelConnectorRuntimeStatus,\n ChannelDenialNotice,\n ChannelDomain,\n ChannelRuntimeControlInput,\n ChannelRuntimeState,\n ChannelRuntimeStatus,\n FeishuAllowInput,\n FeishuChannelSnapshot,\n FeishuConnectInput,\n FeishuPatchInput,\n FeishuRegistrationSnapshot,\n FeishuRegistrationStartInput,\n FeishuRegistrationState,\n RecordChannelDeliveryInput,\n} from \"@vykor/protocol\";\n",
62
+ "/**\n * @vykor/client 公共导出。\n *\n * 面向 TUI / Web / Desktop:typed HTTP API、SSE 解析、事件 reducer、replay+live 同步。\n * 客户端只做展示与控制,不拥有 agent runtime。\n */\n\nexport {\n createPromptRequestId,\n normalizeDaemonBaseUrl,\n VykorApiError,\n IncompatibleProtocolError,\n VykorClient,\n streamServerSentEvents,\n HttpTransport,\n SseTransport,\n} from \"./transport/index.js\";\nexport {\n ProtocolClient,\n} from \"./protocol/index.js\";\nexport type { DaemonRestartPreview } from \"./resources/system-resource.js\";\nexport {\n SystemResource,\n ProviderResource,\n AuthResource,\n ProjectResource,\n PluginResource,\n PluginUiResource,\n DevelopmentResource,\n SessionResource,\n AttachmentResource,\n PermissionResource,\n ScheduleResource,\n NoteResource,\n JobResource,\n TerminalResource,\n ChannelResource,\n EventResource,\n McpResource,\n} from \"./resources/index.js\";\nexport { parseCreateSessionGoalInput, parseUpdateSessionGoalInput, parseGoalActionInput } from \"@vykor/protocol\";\nexport { readWorkspaceChangesMetadata } from \"@vykor/protocol\";\nexport { parsePluginUiAppearance } from \"@vykor/protocol\";\nexport { stringifyPluginUiJson, parsePluginUiConversationRequest, parsePluginUiConversationPrepared,\n parsePluginUiConversationReceipt, parsePluginUiSubmissionRecord, ProtocolValidationError } from \"@vykor/protocol\";\nexport type { PluginUiAppearance, PluginUiConversationReceipt, PluginUiConversationRequest, PluginUiConversationPrepared,\n SubmitPluginUiConversationInput, PluginUiSubmissionRecord } from \"@vykor/protocol\";\nexport type { UsageFilter, UsageRequest, UsagePrice, UsageSettings, UsageReport, StorageCategory, StorageReport, CleanupCandidate, CleanupPreview, CleanupResult, MaintenanceBackupManifest, StorageRetentionPolicy } from \"@vykor/protocol\";\nexport type { WorkspaceChangesMetadata, WorkspaceChangeFile } from \"@vykor/protocol\";\nexport {\n PLUGIN_UI_BRIDGE_LIMITS, PluginUiBridgeError, decodePluginUiBridgeMessage, encodePluginUiBridgeMessage,\n parsePluginUiBridgeRequest, parsePluginUiBridgeSnapshot, parsePluginUiBridgeReceipt,\n readPluginUiBridgeResponse, readPluginUiBridgeNotification, readPluginUiInstance, readPluginUiAction,\n} from \"@vykor/protocol\";\nexport type {\n JsonValue, PluginUiViewSnapshot, PluginUiSurface, PluginUiBridgeMethod,\n PluginUiBridgeRequest, PluginUiBridgeResponse, PluginUiBridgeNotification,\n PluginUiActionRunMetadata,\n DismissPluginUiInput,\n InvokePluginUiActionInput,\n PluginUiActionReceipt,\n PluginUiActionResponse,\n PluginUiActionDescription,\n PluginUiAvailability,\n PluginUiDocumentResponse,\n PluginUiInstanceRecord,\n PluginUiInstanceResponse,\n PluginCatalogEntry,\n AgentEnvironmentCapabilities,\n AttachmentAssetRecord,\n CreateNoteInput,\n NoteRecord,\n UpdateNoteInput,\n ClientProtocolSupport,\n ProtocolCompatibility,\n ServerCapabilities,\n SearchSessionsOptions,\n SessionSearchResult,\n} from \"@vykor/protocol\";\nexport {\n checkProtocolCompatibility,\n CURRENT_PROTOCOL_VERSION,\n readSessionModelRetryState,\n readSessionModelUsage,\n isSupersededModelPart,\n supportsFeature,\n} from \"@vykor/protocol\";\nexport type {\n SessionModelRetryState,\n SessionModelUsageSummary,\n} from \"@vykor/protocol\";\nexport {\n applyEvent,\n applyEvents,\n applySessionSnapshot,\n createInitialClientState,\n hydrateState,\n selectFirstPendingPermission,\n selectSessionInputs,\n selectSessionMessagesWithParts,\n selectSessionModelRetry,\n selectSessionModelUsage,\n selectSessionOrderedMessages,\n selectSessionParts,\n selectSessionPermissions,\n selectSessionRuns,\n selectSessionTasks,\n selectVisibleSessionMessagesWithParts,\n SessionSyncController,\n syncEvents,\n UnsupportedSessionEventSchemaVersionError,\n} from \"./state/index.js\";\nexport type {\n SessionSyncControllerOptions,\n SyncConnectionStatus,\n} from \"./state/index.js\";\nexport {\n LOCAL_COMMAND_DETAILS,\n LOCAL_COMMAND_NAMES,\n dispatchSessionCommand,\n hasActiveRun,\n mergeCommandDetails,\n parseSlashLine,\n resolveSessionCwd,\n} from \"./commands/index.js\";\nexport {\n patchSessionRuntimeMetadata,\n isPluginIconSource,\n isPluginWebUrl,\n readRuntimeMetadata,\n readSessionRuntimeConfig,\n} from \"@vykor/protocol\";\nexport type {\n SessionRuntimeConfig,\n SessionRuntimeConfigPatch,\n} from \"@vykor/protocol\";\nexport type {\n PresentationReadRequest,\n SessionCommandHost,\n SessionCommandOutcome,\n SlashLine,\n} from \"./commands/index.js\";\nexport type {\n AdmitClientPromptInput,\n AgentPersonaInfo,\n AttachmentStorageGcResult,\n AttachmentStorageIssue,\n AttachmentStorageRepairResult,\n AttachmentStorageReport,\n AuthStatus,\n CommandCatalogEntry,\n CommandKind,\n CommandSelection,\n CommandSource,\n CompactSessionResponse,\n CancelQueuedClientPromptInput,\n CancelQueuedPromptResponse,\n CreateBackgroundShellInput,\n CreateBackgroundShellResult,\n CreateScheduledTaskInput,\n AdmitPromptAttachmentInput,\n CreateClientSessionInput,\n EditLatestClientPromptInput,\n EventSyncOptions,\n ForkClientSessionInput,\n HookInfo,\n ReloadPluginsResponse,\n RewindSessionResponse,\n InputDelivery,\n InterruptSessionResponse,\n ListClientMessagePartsOptions,\n ListCommandsOptions,\n ListEventsOptions,\n ListMessagesOptions,\n ListPermissionsOptions,\n ListSessionsOptions,\n ListProjectsOptions,\n ProjectRecord,\n McpServerStatus,\n McpRuntimeStatus,\n McpRuntimeSyncResult,\n MemoryEntryRecord,\n MemoryRevision,\n UpdateMemoryEntryInput,\n ClearMemoryInput,\n ClearSessionWorktreeBindingInput,\n MemoryListResponse,\n ModelInfo,\n ModelProviderInfo,\n VykorClientOptions,\n VykorClientState,\n VykorServerHealth,\n OutputStyleInfo,\n PermissionRequestRecord,\n PermissionStatus,\n PluginInfo,\n PluginUiInventory,\n PluginRuntimeStatus,\n SkillInfo,\n SkillProject,\n SkillSnapshot,\n SkillSource,\n PromoteQueuedClientPromptInput,\n PromoteQueuedPromptResponse,\n PromptResponse,\n ProviderInfo,\n CustomProviderInput,\n ConnectCatalogProviderInput,\n UpdateCatalogProviderHeadersInput,\n RememberSessionResponse,\n ReplyPermissionInput,\n ScheduledRunRecord,\n ScheduledTaskRecord,\n ScheduledTaskStatusSummary,\n SessionBucket,\n UpdateScheduledTaskInput,\n SessionEventRecord,\n SessionAttachmentMessagePartRecord,\n SessionInputAttachmentRecord,\n SessionExportResponse,\n SessionInputRecord,\n SessionMessagePartRecord,\n SessionMessageRecord,\n SessionRecord,\n SessionRunRecord,\n SessionRunAttemptRecord,\n SessionExecutionRecord,\n SessionStateSnapshot,\n SessionTransformationMessagePartRecord,\n SessionUserInputItem,\n SessionGoal,\n CreateSessionGoalInput,\n UpdateSessionGoalInput,\n GoalActionInput,\n SessionUsageResponse,\n StartDreamResponse,\n SyncEventUpdate,\n UpdateClientSessionInput,\n UploadAttachmentInput,\n DownloadAttachmentOptions,\n} from \"./types/index.js\";\nexport type { SessionMessageWithParts } from \"./state/index.js\";\nexport type {\n TerminalCreateRequest,\n TerminalEvent,\n TerminalReadRequest,\n TerminalReadResult,\n TerminalResizeRequest,\n TerminalRuntime,\n TerminalSessionInfo,\n TerminalSessionStatus,\n TerminalSignal,\n TerminalSource,\n TerminalWriteRequest,\n JobCapabilities,\n JobKind,\n JobReadResult,\n JobSnapshot,\n JobStatus,\n JobWaitResult,\n DurableChannelMessageInput,\n DurableChannelMessageResult,\n ExternalConversationRecord,\n ChannelDeliveryRecord,\n ChannelDeliveryStatus,\n ChannelStatusSnapshot,\n ChannelConnectorRuntimeStatus,\n ChannelDenialNotice,\n ChannelDomain,\n ChannelRuntimeControlInput,\n ChannelRuntimeState,\n ChannelRuntimeStatus,\n FeishuAllowInput,\n FeishuChannelSnapshot,\n FeishuConnectInput,\n FeishuPatchInput,\n FeishuRegistrationSnapshot,\n FeishuRegistrationStartInput,\n FeishuRegistrationState,\n RecordChannelDeliveryInput,\n} from \"@vykor/protocol\";\n\nexport type { GoalStopReason, GoalExternalWait } from \"@vykor/protocol\";\n",
61
63
  "import type { JobReadResult, JobSnapshot } from \"@vykor/client\";\n\nexport type JobRemoteState =\n | { status: \"idle\"; jobs: JobSnapshot[] }\n | { status: \"loading\"; jobs: JobSnapshot[] }\n | { status: \"ready\"; jobs: JobSnapshot[]; refreshedAt: number }\n | { status: \"error\"; jobs: JobSnapshot[]; error: string; refreshedAt?: number };\n\nexport type JobDetailRemoteState =\n | { status: \"idle\" }\n | { status: \"loading\"; jobId: string; previous?: JobReadResult }\n | { status: \"ready\"; jobId: string; result: JobReadResult; refreshedAt: number }\n | { status: \"error\"; jobId: string; error: string; previous?: JobReadResult };\n\nexport function beginJobList(previous: JobRemoteState): JobRemoteState {\n return { status: \"loading\", jobs: [...previous.jobs] };\n}\n\nexport function resolveJobList(\n jobs: JobSnapshot[],\n now: number,\n previous?: JobRemoteState,\n): JobRemoteState {\n const cachedById = new Map(previous?.jobs.map((job) => [job.id, job]) ?? []);\n return {\n status: \"ready\",\n jobs: jobs.map((snapshot) => preferMonotonicSnapshot(cachedById.get(snapshot.id), snapshot)),\n refreshedAt: now,\n };\n}\n\nexport function rejectJobList(previous: JobRemoteState, error: string): JobRemoteState {\n const refreshedAt = \"refreshedAt\" in previous ? previous.refreshedAt : undefined;\n return {\n status: \"error\",\n jobs: [...previous.jobs],\n error,\n ...(refreshedAt !== undefined ? { refreshedAt } : {}),\n };\n}\n\nexport function mergeJobSnapshot(\n state: JobRemoteState,\n snapshot: JobSnapshot,\n now: number,\n): JobRemoteState {\n const found = state.jobs.some((job) => job.id === snapshot.id);\n const jobs = found\n ? state.jobs.map((job) => job.id === snapshot.id ? preferMonotonicSnapshot(job, snapshot) : job)\n : [snapshot, ...state.jobs];\n return { status: \"ready\", jobs, refreshedAt: now };\n}\n\nfunction preferMonotonicSnapshot(\n cached: JobSnapshot | undefined,\n incoming: JobSnapshot,\n): JobSnapshot {\n if (!cached) return incoming;\n if (isTerminalStatus(cached.status) && !isTerminalStatus(incoming.status)) return cached;\n if (incoming.updatedAt < cached.updatedAt) return cached;\n return incoming;\n}\n\nfunction isTerminalStatus(status: JobSnapshot[\"status\"]): boolean {\n return status === \"completed\" || status === \"killed\" || status === \"failed\";\n}\n\nconst JOB_KINDS = [\"terminal\", \"shell\", \"agent\", \"dream\", \"workflow\"] as const;\nconst JOB_STATUSES = [\"running\", \"stopping\", \"completed\", \"killed\", \"failed\"] as const;\n\ntype UnknownRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isJobSnapshot(value: unknown, ownerSession: string): value is JobSnapshot {\n if (!isRecord(value)) {\n return false;\n }\n\n const capabilities = value.capabilities;\n return (\n typeof value.id === \"string\" &&\n value.id.trim().length > 0 &&\n value.ownerSession === ownerSession &&\n typeof value.label === \"string\" &&\n typeof value.cwd === \"string\" &&\n typeof value.kind === \"string\" &&\n JOB_KINDS.includes(value.kind as (typeof JOB_KINDS)[number]) &&\n typeof value.status === \"string\" &&\n JOB_STATUSES.includes(value.status as (typeof JOB_STATUSES)[number]) &&\n Number.isFinite(value.startedAt) &&\n Number.isFinite(value.updatedAt) &&\n (value.finishedAt === undefined || Number.isFinite(value.finishedAt)) &&\n (value.detail === undefined || typeof value.detail === \"string\") &&\n (value.metadata === undefined || isRecord(value.metadata)) &&\n isRecord(capabilities) &&\n typeof capabilities.read === \"boolean\" &&\n typeof capabilities.wait === \"boolean\" &&\n typeof capabilities.send === \"boolean\" &&\n typeof capabilities.cancel === \"boolean\"\n );\n}\n\nexport function validateJobSnapshot(\n value: unknown,\n ownerSession: string,\n expectedJobId?: string,\n): { snapshot?: JobSnapshot; error?: string } {\n if (!isRecord(value)) {\n return { error: \"Job snapshot has invalid fields.\" };\n }\n if (typeof value.id === \"string\" && expectedJobId !== undefined && value.id !== expectedJobId) {\n return { error: `Job snapshot id \"${value.id}\" does not match requested Job \"${expectedJobId}\".` };\n }\n if (typeof value.ownerSession === \"string\" && value.ownerSession !== ownerSession) {\n return { error: `Job snapshot ownerSession \"${value.ownerSession}\" does not match active session \"${ownerSession}\".` };\n }\n if (!isJobSnapshot(value, ownerSession)) {\n return { error: \"Job snapshot has invalid fields.\" };\n }\n return { snapshot: value };\n}\n\nexport function validateJobReadResult(\n value: unknown,\n ownerSession: string,\n expectedJobId: string,\n): { result?: JobReadResult; error?: string } {\n if (\n !isRecord(value) ||\n typeof value.text !== \"string\" ||\n !Number.isFinite(value.cursor) ||\n typeof value.truncated !== \"boolean\" ||\n (value.details !== undefined && !isRecord(value.details))\n ) {\n return { error: `Job read response for \"${expectedJobId}\" has invalid fields.` };\n }\n const snapshotValidation = validateJobSnapshot(value.snapshot, ownerSession, expectedJobId);\n if (!snapshotValidation.snapshot) {\n return { error: snapshotValidation.error ?? \"Job snapshot has invalid fields.\" };\n }\n return { result: value as unknown as JobReadResult };\n}\n\nexport function validateJobSnapshots(\n value: unknown,\n ownerSession: string,\n): { jobs: JobSnapshot[]; error?: string } {\n if (!Array.isArray(value)) {\n return { jobs: [], error: \"Jobs response must be an array.\" };\n }\n\n const jobs = value.filter((entry): entry is JobSnapshot => isJobSnapshot(entry, ownerSession));\n const invalidCount = value.length - jobs.length;\n if (invalidCount === 0) {\n return { jobs };\n }\n\n const noun = invalidCount === 1 ? \"snapshot\" : \"snapshots\";\n return { jobs, error: `Ignored ${invalidCount} invalid Job ${noun}.` };\n}\n",
62
- "import {\n selectVisibleSessionMessagesWithParts,\n type SessionBucket,\n type SessionMessagePartRecord,\n type SessionMessageRecord,\n} from \"@vykor/client\";\n\nimport type { TranscriptItem } from \"../types\";\n\nexport type TranscriptView = { items: TranscriptItem[]; assistantBuffer: string };\n\nfunction contentToText(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (Array.isArray(content)) {\n return content\n .map((block) => {\n if (block && typeof block === \"object\" && \"text\" in block) return String(block.text ?? \"\");\n return JSON.stringify(block);\n })\n .join(\"\");\n }\n if (content == null) return \"\";\n return JSON.stringify(content);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction textFromParts(parts: SessionMessagePartRecord[]): string {\n return parts\n .filter((part) => part.type === \"text\" || part.type === \"reasoning\")\n .map((part) => part.text ?? \"\")\n .join(\"\");\n}\n\nfunction messageToTranscriptItems(\n message: SessionMessageRecord,\n parts: SessionMessagePartRecord[],\n inputText?: string,\n): TranscriptItem[] {\n if (message.role === \"user\") {\n return [{\n id: message.inputId ? `input:${message.inputId}` : message.id,\n role: \"user\",\n text: textFromParts(parts) || inputText || \"\",\n }];\n }\n if (message.role === \"system\") return [{ id: message.id, role: \"system\", text: textFromParts(parts) }];\n\n const items: TranscriptItem[] = [];\n for (const part of parts) {\n if (part.type === \"text\") {\n if (part.text) items.push({\n id: `${message.id}:${part.id}`,\n role: \"assistant\",\n text: part.text,\n streaming: part.status === \"pending\" || part.status === \"running\",\n });\n continue;\n }\n if (part.type === \"reasoning\") {\n if (part.text) items.push({\n id: `${message.id}:${part.id}`,\n role: \"reasoning\",\n text: part.text,\n streaming: part.status === \"pending\" || part.status === \"running\",\n });\n continue;\n }\n if (part.type === \"tool\") {\n const toolName = part.toolName ?? \"tool\";\n items.push({\n id: `${message.id}:${part.id}:tool`,\n role: \"tool\",\n text: toolName,\n tool_name: toolName,\n tool_input: part.input,\n });\n if (part.output !== undefined) {\n const output = isRecord(part.output) ? part.output : {};\n items.push({\n id: `${message.id}:${part.id}:result`,\n role: \"tool_result\",\n text: contentToText(output.content),\n tool_name: toolName,\n is_error: part.isError === true,\n });\n }\n continue;\n }\n if (part.type === \"tool_result\") {\n items.push({\n id: `${message.id}:${part.id}:result`,\n role: \"tool_result\",\n text: contentToText(part.output ?? part.text ?? \"\"),\n tool_name: part.toolName,\n is_error: part.isError === true,\n });\n continue;\n }\n if (part.type === \"error\") {\n items.push({ id: `${message.id}:${part.id}`, role: \"system\", text: part.text ?? \"error\" });\n continue;\n }\n if (part.type === \"log\") {\n items.push({ id: `${message.id}:${part.id}`, role: \"log\", text: part.text ?? \"\" });\n }\n }\n return items;\n}\n\nfunction projectBucketToItems(bucket: SessionBucket | undefined): TranscriptItem[] {\n if (!bucket) return [];\n const inputById = new Map(bucket.inputs.map((input) => [input.id, input]));\n const projectedInputIds = new Set<string>();\n const items: TranscriptItem[] = [];\n const activeRuns = Object.values(bucket.runs)\n .filter((run) => run.status === \"pending\" || run.status === \"running\");\n const activeRunInputIds = new Set(activeRuns.flatMap((run) => run.inputId ? [run.inputId] : []));\n const transcriptUpdatedAt = bucket.messages.reduce(\n (latest, message) => Math.max(latest, message.updatedAt),\n bucket.session?.updatedAt ?? 0,\n );\n\n for (const { message, parts } of selectVisibleSessionMessagesWithParts(bucket)) {\n if (message.role === \"user\" && message.inputId) projectedInputIds.add(message.inputId);\n items.push(...messageToTranscriptItems(\n message,\n parts,\n message.inputId ? inputById.get(message.inputId)?.content : undefined,\n ));\n }\n\n // Admission and transcript projection are separate daemon steps. Until the user message\n // exists, keep its input-backed placeholder at the canonical transcript tail. input.seq\n // and message.seq are independent counters and must never be compared. Transcript rewrites\n // such as compact/rewind drop historical inputId links, so old inputs are not placeholders.\n for (const input of [...bucket.inputs].sort((a, b) => a.seq - b.seq)) {\n if (projectedInputIds.has(input.id)) continue;\n const belongsToActiveRun = activeRunInputIds.has(input.id)\n || (input.delivery === \"steer\" && activeRuns.some((run) => input.createdAt >= run.createdAt));\n const admittedAfterTranscript = input.createdAt >= transcriptUpdatedAt;\n if (!belongsToActiveRun && !admittedAfterTranscript) continue;\n items.push({ id: `input:${input.id}`, role: \"user\", text: input.content });\n }\n return items;\n}\n\nexport function bucketToTranscript(\n bucket: SessionBucket | undefined,\n options: { showReasoning?: boolean } = {},\n): TranscriptItem[] {\n const items = projectBucketToItems(bucket);\n if (options.showReasoning === false) {\n return items.filter((item) => item.role !== \"reasoning\");\n }\n return items;\n}\n\nexport function splitStreamingAssistant(items: TranscriptItem[]): TranscriptView {\n for (let index = items.length - 1; index >= 0; index -= 1) {\n const item = items[index];\n if (!item) continue;\n if (item.role !== \"assistant\" || item.streaming !== true || !item.text) continue;\n return {\n items: [\n ...items.slice(0, index),\n ...items.slice(index + 1),\n ],\n assistantBuffer: item.text,\n };\n }\n return { items, assistantBuffer: \"\" };\n}\n",
64
+ "import {\n selectVisibleSessionMessagesWithParts,\n type SessionBucket,\n type SessionMessagePartRecord,\n type SessionMessageRecord,\n} from \"@vykor/client\";\n\nimport type { TranscriptItem } from \"../types\";\n\nexport type TranscriptView = { items: TranscriptItem[]; assistantBuffer: string };\n\nfunction contentToText(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (Array.isArray(content)) {\n return content\n .map((block) => {\n if (block && typeof block === \"object\" && \"text\" in block) return String(block.text ?? \"\");\n return JSON.stringify(block);\n })\n .join(\"\");\n }\n if (content == null) return \"\";\n return JSON.stringify(content);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction textFromParts(parts: SessionMessagePartRecord[]): string {\n return parts\n .filter((part) => part.type === \"text\" || part.type === \"reasoning\")\n .map((part) => part.text ?? \"\")\n .join(\"\");\n}\n\nfunction messageToTranscriptItems(\n message: SessionMessageRecord,\n parts: SessionMessagePartRecord[],\n inputText?: string,\n): TranscriptItem[] {\n if (message.role === \"user\") {\n return [{\n id: message.inputId ? `input:${message.inputId}` : message.id,\n role: \"user\",\n text: textFromParts(parts) || inputText || \"\",\n }];\n }\n if (message.role === \"system\") return [{ id: message.id, role: \"system\", text: textFromParts(parts) }];\n\n const items: TranscriptItem[] = [];\n for (const part of parts) {\n if (part.type === \"text\") {\n if (part.text) items.push({\n id: `${message.id}:${part.id}`,\n role: \"assistant\",\n text: part.text,\n streaming: part.status === \"pending\" || part.status === \"running\",\n });\n continue;\n }\n if (part.type === \"reasoning\") {\n if (part.text) items.push({\n id: `${message.id}:${part.id}`,\n role: \"reasoning\",\n text: part.text,\n streaming: part.status === \"pending\" || part.status === \"running\",\n });\n continue;\n }\n if (part.type === \"tool\") {\n const toolName = part.toolName ?? \"tool\";\n items.push({\n id: `${message.id}:${part.id}:tool`,\n role: \"tool\",\n text: toolName,\n tool_name: toolName,\n tool_input: part.input,\n });\n if (part.output !== undefined) {\n const output = isRecord(part.output) ? part.output : {};\n items.push({\n id: `${message.id}:${part.id}:result`,\n role: \"tool_result\",\n text: contentToText(output.content),\n tool_name: toolName,\n is_error: part.isError === true,\n });\n }\n continue;\n }\n if (part.type === \"tool_result\") {\n items.push({\n id: `${message.id}:${part.id}:result`,\n role: \"tool_result\",\n text: contentToText(part.output ?? part.text ?? \"\"),\n tool_name: part.toolName,\n is_error: part.isError === true,\n });\n continue;\n }\n if (part.type === \"error\") {\n items.push({ id: `${message.id}:${part.id}`, role: \"system\", text: part.text ?? \"error\" });\n continue;\n }\n if (part.type === \"log\") {\n items.push({ id: `${message.id}:${part.id}`, role: \"log\", text: part.text ?? \"\" });\n }\n }\n return items;\n}\n\nfunction projectBucketToItems(bucket: SessionBucket | undefined): TranscriptItem[] {\n if (!bucket) return [];\n const inputById = new Map(bucket.inputs.map((input) => [input.id, input]));\n const projectedInputIds = new Set<string>();\n const items: TranscriptItem[] = [];\n const activeRuns = Object.values(bucket.runs)\n .filter((run) => run.status === \"pending\" || run.status === \"running\");\n const activeRunInputIds = new Set(activeRuns.flatMap((run) => run.inputId ? [run.inputId] : []));\n const transcriptUpdatedAt = bucket.messages.reduce(\n (latest, message) => Math.max(latest, message.updatedAt),\n bucket.session?.updatedAt ?? 0,\n );\n\n for (const { message, parts } of selectVisibleSessionMessagesWithParts(bucket)) {\n if (message.role === \"user\" && message.inputId) projectedInputIds.add(message.inputId);\n items.push(...messageToTranscriptItems(\n message,\n parts,\n message.inputId ? inputById.get(message.inputId)?.content : undefined,\n ));\n }\n\n // Admission and transcript projection are separate daemon steps. Until the user message\n // exists, keep its input-backed placeholder at the canonical transcript tail. input.seq\n // and message.seq are independent counters and must never be compared. Transcript rewrites\n // such as compact/rewind drop historical inputId links, so old inputs are not placeholders.\n for (const input of [...bucket.inputs].sort((a, b) => a.seq - b.seq)) {\n if (projectedInputIds.has(input.id)) continue;\n const belongsToActiveRun = activeRunInputIds.has(input.id)\n || (input.delivery === \"steer\" && activeRuns.some((run) => input.createdAt >= run.createdAt));\n const admittedAfterTranscript = input.createdAt >= transcriptUpdatedAt;\n if (!belongsToActiveRun && !admittedAfterTranscript) continue;\n items.push({ id: `input:${input.id}`, role: \"user\", text: input.content });\n }\n return items;\n}\n\nexport function bucketToTranscript(\n bucket: SessionBucket | undefined,\n options: { showReasoning?: boolean } = {},\n): TranscriptItem[] {\n const items = projectBucketToItems(bucket);\n if (options.showReasoning !== true) {\n return items.filter((item) => item.role !== \"reasoning\");\n }\n return items;\n}\n\nexport function splitStreamingAssistant(items: TranscriptItem[]): TranscriptView {\n for (let index = items.length - 1; index >= 0; index -= 1) {\n const item = items[index];\n if (!item) continue;\n if (item.role !== \"assistant\" || item.streaming !== true || !item.text) continue;\n return {\n items: [\n ...items.slice(0, index),\n ...items.slice(index + 1),\n ],\n assistantBuffer: item.text,\n };\n }\n return { items, assistantBuffer: \"\" };\n}\n",
63
65
  "import type {\n CommandCatalogEntry,\n VykorClient,\n VykorClientState,\n PresentationReadRequest,\n SlashLine,\n} from \"@vykor/client\";\nimport {\n LOCAL_COMMAND_DETAILS,\n LOCAL_COMMAND_NAMES,\n dispatchSessionCommand,\n hasActiveRun,\n mergeCommandDetails,\n parseSlashLine,\n resolveSessionCwd,\n} from \"@vykor/client\";\nimport type { Dispatch, MutableRefObject, SetStateAction } from \"react\";\n\nimport type { FrontendConfig } from \"../types\";\n\nexport {\n LOCAL_COMMAND_DETAILS,\n LOCAL_COMMAND_NAMES,\n hasActiveRun,\n mergeCommandDetails,\n parseSlashLine,\n};\n\ntype SessionSlashClient = Pick<\n VykorClient,\n \"protocol\" | \"system\" | \"providers\" | \"auth\" | \"projects\" | \"plugins\" | \"development\" | \"sessions\" | \"jobs\"\n>;\n\nexport type SessionSlashCtx = {\n client: SessionSlashClient;\n sessionId: string | undefined;\n pushSystem: (text: string) => void;\n presentSystem: (title: string, content: string) => void;\n statusRef: MutableRefObject<Record<string, unknown>>;\n commandCatalogRef: MutableRefObject<CommandCatalogEntry[]>;\n clientState: VykorClientState;\n localBusy: boolean;\n cacheFirstRead?: (request: PresentationReadRequest) => void;\n daemon?: FrontendConfig[\"daemon\"];\n setStatus: Dispatch<SetStateAction<Record<string, unknown>>>;\n onSettingsChanged?: () => void | Promise<void>;\n};\n\nexport async function dispatchSessionSlashCommand(\n slash: SlashLine | null,\n ctx: SessionSlashCtx,\n): Promise<\"handled\" | \"unhandled\" | \"local_ui_ignored\"> {\n const {\n client,\n sessionId,\n pushSystem,\n presentSystem,\n statusRef,\n commandCatalogRef,\n clientState,\n localBusy,\n cacheFirstRead,\n daemon,\n setStatus,\n onSettingsChanged,\n } = ctx;\n\n const outcome = await dispatchSessionCommand(slash, {\n client,\n sessionId,\n cwd: resolveSessionCwd({\n statusCwd: statusRef.current.cwd,\n daemonCwd: daemon?.cwd ?? undefined,\n }),\n model: statusRef.current.model != null\n ? String(statusRef.current.model)\n : daemon?.model ?? undefined,\n permissionMode: typeof statusRef.current.permission_mode === \"string\"\n ? statusRef.current.permission_mode\n : undefined,\n statusSessionId: typeof statusRef.current.session_id === \"string\"\n ? statusRef.current.session_id\n : sessionId,\n commandCatalog: commandCatalogRef.current,\n clientState,\n busy: localBusy,\n emit: pushSystem,\n present: presentSystem,\n cacheFirstRead,\n getRuntimeDiagnostics: () => ({\n runtime: `Node ${process.version}`,\n platform: process.platform,\n architecture: process.arch,\n }),\n patchStatus: (patch) => setStatus((current) => ({ ...current, ...patch })),\n });\n\n if (outcome === \"local_ui\") return \"local_ui_ignored\";\n if (outcome === \"handled\") {\n void Promise.resolve().then(() => onSettingsChanged?.()).catch(() => {});\n }\n return outcome;\n}\n",
64
66
  "import {\n VykorClient,\n readSessionRuntimeConfig,\n type SessionRecord,\n} from \"@vykor/client\";\n\nimport type { FrontendConfig } from \"../../types\";\n\nexport interface DefaultRuntimeSettings {\n model: string;\n provider?: string;\n baseUrl?: string;\n apiFormat?: \"anthropic\" | \"openai\";\n}\n\nexport function stringSetting(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nexport function normalizeSessionMode(value: unknown): \"coordinator\" | null {\n return value === \"coordinator\" ? \"coordinator\" : null;\n}\n\nexport function statusSessionMode(value: unknown): \"coordinator\" | \"direct\" {\n return normalizeSessionMode(value) ?? \"direct\";\n}\n\nexport function shouldAutoActivateSession(\n session: SessionRecord,\n defaultModel: string,\n pluginsEnabled: boolean | undefined | null,\n): boolean {\n const runtime = readSessionRuntimeConfig(session);\n return runtime.model === defaultModel\n && (pluginsEnabled == null || (runtime.pluginsEnabled ?? true) === pluginsEnabled);\n}\n\nexport function createDaemonClient(daemon: FrontendConfig[\"daemon\"]): VykorClient | null {\n if (!daemon?.url) return null;\n return new VykorClient({\n baseUrl: daemon.url,\n token: daemon.token ?? undefined,\n });\n}\n",
65
67
  "import type { VykorClientState, PermissionRequestRecord } from \"@vykor/client\";\nimport { selectFirstPendingPermission } from \"@vykor/client\";\n\nexport function permissionToModal(request: PermissionRequestRecord): Record<string, unknown> {\n const input = request.payload.input && typeof request.payload.input === \"object\"\n ? (request.payload.input as Record<string, unknown>)\n : {};\n return {\n kind: \"permission\",\n request_id: request.id,\n tool_name: request.toolName,\n reason: typeof request.payload.reason === \"string\" ? request.payload.reason : null,\n input,\n };\n}\n\nexport function firstPendingPermission(\n state: VykorClientState,\n sessionId?: string,\n): PermissionRequestRecord | undefined {\n return selectFirstPendingPermission(state, sessionId);\n}\n",
@@ -67,7 +69,7 @@
67
69
  "import type { McpServerStatus } from \"@vykor/client\";\nimport type { McpServerSnapshot } from \"../../types\";\n\nexport function mcpServerSnapshot(server: McpServerStatus): McpServerSnapshot {\n return {\n name: server.name,\n state: server.status,\n ...(server.error || server.command ? { detail: server.error ?? server.command } : {}),\n tool_count: server.toolCount,\n resource_count: server.resourceCount,\n };\n}\n",
68
70
  "import {\n createPromptRequestId,\n patchSessionRuntimeMetadata,\n type CommandCatalogEntry,\n type JobResource,\n type VykorClient,\n type VykorClientState,\n type SessionRecord,\n} from \"@vykor/client\";\n\nimport type { FrontendConfig } from \"../../types\";\nimport {\n beginJobList,\n mergeJobSnapshot,\n rejectJobList,\n resolveJobList,\n validateJobReadResult,\n validateJobSnapshot,\n validateJobSnapshots,\n type JobDetailRemoteState,\n type JobRemoteState,\n} from \"../../jobs/job-remote-state\";\nimport type { TuiAction, TuiSessionController } from \"../sessionController\";\nimport {\n dispatchSessionSlashCommand,\n parseSlashLine,\n} from \"../sessionSlashCommands\";\nimport {\n archiveClientSession,\n listTopLevelSessions,\n recoverableInterruptedRuns,\n sessionRuntimeMetadata,\n sessionSelectOptions,\n} from \"./view-model\";\nimport { normalizeSessionMode, statusSessionMode } from \"./connection\";\n\nexport const JOBS_AUXILIARY_SLASH_COMMANDS = new Set([\n \"/agents\",\n \"/background\",\n \"/doctor\",\n \"/jobs\",\n \"/stats\",\n]);\n\ntype ActionClient = Pick<\n VykorClient,\n | \"protocol\" | \"system\" | \"providers\" | \"auth\" | \"projects\"\n | \"plugins\" | \"development\" | \"sessions\" | \"jobs\" | \"permissions\"\n>;\n\nexport interface ActionDispatcherContext {\n clientRef: { current: ActionClient | null };\n activeSessionIdRef: { current: string | undefined };\n clientState: VykorClientState;\n setClientState: React.Dispatch<React.SetStateAction<VykorClientState>>;\n daemon: FrontendConfig[\"daemon\"];\n defaultRuntimeRef: { current: { model: string; provider?: string; baseUrl?: string; apiFormat?: \"anthropic\" | \"openai\" } };\n nextSessionModeRef: { current: \"coordinator\" | \"direct\" };\n statusRef: { current: Record<string, unknown> };\n setStatus: React.Dispatch<React.SetStateAction<Record<string, unknown>>>;\n setStatusAndDefault: (value: React.SetStateAction<Record<string, unknown>>) => void;\n listedSessionsRef: { current: Record<string, SessionRecord> };\n commandCatalogRef: { current: CommandCatalogEntry[] };\n pendingNewSessionTitleRef: { current: string | undefined };\n localBusy: boolean;\n setLocalBusy: (busy: boolean) => void;\n setSubmittedRun: (run: { sessionId: string; runId: string } | null) => void;\n setModal: (modal: Record<string, unknown> | null) => void;\n setSelectRequest: React.Dispatch<React.SetStateAction<TuiSessionController[\"selectRequest\"]>>;\n clearDisplayRequest: () => void;\n showDisplayRequest: (request: NonNullable<TuiSessionController[\"displayRequest\"]>) => void;\n pushSystem: (text: string) => void;\n reportError: (message: string) => void;\n reportAuxiliaryError: (scope: string, error: unknown) => void;\n activateSession: (session: SessionRecord) => void;\n returnToHome: (title?: string) => void;\n refreshJobs: () => Promise<void>;\n refreshSettings?: () => void | Promise<void>;\n loadJobDetail: (client: Pick<VykorClient, \"jobs\">, sessionId: string, jobId: string) => Promise<void>;\n createAndSwitchSession: (title?: string) => Promise<SessionRecord | undefined>;\n cacheFirstRead: (request: import(\"@vykor/client\").PresentationReadRequest) => void;\n jobStateRef: { current: JobRemoteState };\n setJobState: React.Dispatch<React.SetStateAction<JobRemoteState>>;\n jobDetailStateRef: { current: JobDetailRemoteState };\n jobControlGenerationRef: { current: number };\n jobDetailGenerationRef: { current: number };\n jobControlAbortRef: { current: AbortController | null };\n}\n\nexport async function executeTuiAction(\n action: TuiAction,\n ctx: ActionDispatcherContext,\n): Promise<void> {\n const client = ctx.clientRef.current;\n let sessionId = ctx.activeSessionIdRef.current;\n const runtimeAction = action as TuiAction | { type?: unknown };\n const runtimeType = typeof runtimeAction.type === \"string\" ? runtimeAction.type : \"unknown\";\n\n switch (action.type) {\n case \"select_model\": {\n if (!client) return;\n const model = action.model.trim();\n const provider = action.provider?.trim() ?? \"\";\n if (!model) return;\n\n if (sessionId) {\n const session = await client.sessions.update(sessionId, {\n metadata: patchSessionRuntimeMetadata(\n {},\n {\n model,\n ...(provider ? { provider } : {}),\n },\n ),\n });\n ctx.activateSession(session);\n } else {\n const settingsPatch: Record<string, unknown> = { model };\n if (provider) settingsPatch.provider = provider;\n await client.system.patchSettings(settingsPatch);\n ctx.defaultRuntimeRef.current = {\n ...ctx.defaultRuntimeRef.current,\n model,\n ...(provider ? { provider } : {}),\n };\n ctx.setStatus((current) => ({\n ...current,\n model,\n ...(provider ? { provider } : {}),\n }));\n }\n ctx.pushSystem(`Model selected: ${model}`);\n return;\n }\n\n case \"submit_line\": {\n if (!client) return;\n const line = action.line;\n const slash = parseSlashLine(line);\n\n const newSession = line.match(/^\\/new(?:\\s+(.+))?$/);\n if (newSession) {\n ctx.returnToHome(newSession[1]);\n return;\n }\n const switchSession = line.match(/^\\/sessions\\s+open\\s+(.+)$/);\n if (switchSession?.[1]) {\n const target = switchSession[1].trim();\n ctx.setLocalBusy(false);\n ctx.setSubmittedRun(null);\n ctx.pendingNewSessionTitleRef.current = undefined;\n ctx.setSelectRequest(null);\n const knownSession = ctx.clientState.sessions[target] ?? ctx.listedSessionsRef.current[target];\n if (knownSession) {\n ctx.activateSession(knownSession);\n return;\n }\n const session = await client.sessions.get(target);\n ctx.activateSession(session);\n return;\n }\n\n if (slash?.name === \"/resume\") {\n if (!sessionId) {\n ctx.pushSystem(\"No active session to resume.\");\n return;\n }\n const recoverable = recoverableInterruptedRuns(ctx.clientState.buckets[sessionId]);\n if (!slash.args) {\n if (recoverable.length === 0) {\n ctx.pushSystem(\"No interrupted prompt runs are available to resume.\");\n return;\n }\n ctx.clearDisplayRequest();\n ctx.setSelectRequest({\n title: \"Resume interrupted run\",\n submitPrefix: \"/resume \",\n options: recoverable.map((run) => ({\n value: run.id,\n label: run.prompt.length > 72 ? `${run.prompt.slice(0, 72)}...` : run.prompt,\n description: run.error ?? \"Interrupted before completion\",\n })),\n });\n return;\n }\n const runId = slash.args.trim();\n if (!recoverable.some((run) => run.id === runId)) {\n ctx.pushSystem(`Run is not available for recovery: ${runId}`);\n return;\n }\n ctx.setLocalBusy(true);\n const response = await client.sessions.resumeInterruptedRun(sessionId, runId, { id: createPromptRequestId() });\n ctx.setLocalBusy(false);\n ctx.setSubmittedRun(response.run ? { sessionId, runId: response.run.id } : null);\n ctx.setSelectRequest(null);\n return;\n }\n\n let slashResult: Awaited<ReturnType<typeof dispatchSessionSlashCommand>>;\n try {\n slashResult = await dispatchSessionSlashCommand(slash, {\n client,\n sessionId,\n pushSystem: ctx.pushSystem,\n presentSystem: (title, content) => ctx.showDisplayRequest({ title, content }),\n statusRef: ctx.statusRef,\n commandCatalogRef: ctx.commandCatalogRef,\n clientState: ctx.clientState,\n localBusy: ctx.localBusy,\n cacheFirstRead: ctx.cacheFirstRead,\n daemon: ctx.daemon,\n setStatus: ctx.setStatusAndDefault,\n onSettingsChanged: ctx.refreshSettings,\n });\n } catch (error) {\n if (slash && JOBS_AUXILIARY_SLASH_COMMANDS.has(slash.name)) {\n ctx.reportAuxiliaryError(\"Jobs\", error);\n return;\n }\n throw error;\n }\n if (slashResult === \"handled\") {\n if (slash?.name === \"/background\" && slash.args.trim() && sessionId) {\n await ctx.refreshJobs();\n }\n return;\n }\n if (slashResult === \"local_ui_ignored\") return;\n\n if (slash) {\n const catalogEntry = ctx.commandCatalogRef.current.find((entry) => entry.name === slash.name);\n if (catalogEntry?.kind === \"template\") {\n if (!sessionId) return;\n ctx.setLocalBusy(true);\n const response = await client.sessions.admitPrompt(sessionId, {\n id: createPromptRequestId(),\n items: [\n {\n type: \"skill\",\n name: catalogEntry.skillName,\n path: catalogEntry.path,\n ...(catalogEntry.displayName ? { displayName: catalogEntry.displayName } : {}),\n ...(catalogEntry.source && catalogEntry.source !== \"builtin\" ? { source: catalogEntry.source } : {}),\n },\n ...(slash.args ? [{ type: \"text\" as const, text: ` ${slash.args}` }] : []),\n ],\n });\n ctx.setLocalBusy(false);\n ctx.setSubmittedRun(response.run ? { sessionId, runId: response.run.id } : null);\n return;\n }\n ctx.pushSystem(`Unknown command: ${slash.name}`);\n return;\n }\n\n if (!sessionId) {\n const session = await ctx.createAndSwitchSession(ctx.pendingNewSessionTitleRef.current);\n if (!session) return;\n sessionId = session.id;\n }\n ctx.setLocalBusy(true);\n const response = await client.sessions.admitPrompt(sessionId, {\n id: createPromptRequestId(),\n items: [{ type: \"text\", text: line }],\n });\n ctx.setLocalBusy(false);\n ctx.setSubmittedRun(response.run ? { sessionId, runId: response.run.id } : null);\n return;\n }\n\n case \"delete_session\": {\n if (!client) return;\n const target = action.session_id;\n if (!target) return;\n const archived = await client.sessions.archive(target);\n const archivedAt = archived.archivedAt ?? Date.now();\n delete ctx.listedSessionsRef.current[target];\n ctx.setClientState((current) => archiveClientSession(current, target, archivedAt));\n ctx.setLocalBusy(false);\n ctx.setSubmittedRun(null);\n ctx.setSelectRequest((current) =>\n current\n ? {\n ...current,\n options: current.options.filter((option) => option.value !== target),\n }\n : current,\n );\n if (target === ctx.activeSessionIdRef.current) {\n const remaining = listTopLevelSessions(\n Object.values({\n ...ctx.clientState.sessions,\n ...ctx.listedSessionsRef.current,\n [target]: { ...archived, status: \"archived\", archivedAt },\n }),\n );\n if (remaining[0]) {\n ctx.activateSession(remaining[0]);\n } else {\n const sessions = await client.sessions.list({\n cwd: ctx.daemon?.cwd ?? undefined,\n includeArchived: false,\n limit: 20,\n });\n ctx.listedSessionsRef.current = Object.fromEntries(sessions.map((session) => [session.id, session]));\n const remoteNext = sessions.find((session) => session.id !== target);\n if (remoteNext) ctx.activateSession(remoteNext);\n else ctx.returnToHome();\n }\n }\n return;\n }\n\n case \"interrupt\": {\n if (!client) return;\n if (sessionId) await client.sessions.interrupt(sessionId);\n ctx.setLocalBusy(false);\n ctx.setSubmittedRun(null);\n return;\n }\n\n case \"permission_response\": {\n if (!client) return;\n const requestId = action.request_id;\n const allowed = action.allowed;\n await client.permissions.reply(requestId, {\n status: allowed ? \"approved\" : \"denied\",\n decision: action.scope === \"session\" ? \"session\" : \"once\",\n clientId: \"tui\",\n });\n ctx.setModal(null);\n return;\n }\n\n case \"list_sessions\": {\n if (!client) return;\n const cachedSessions = {\n ...ctx.listedSessionsRef.current,\n ...ctx.clientState.sessions,\n };\n const cachedOptions = sessionSelectOptions(Object.values(cachedSessions), ctx.activeSessionIdRef.current);\n ctx.clearDisplayRequest();\n ctx.setSelectRequest({\n title: \"Sessions\",\n submitPrefix: \"/sessions open \",\n options: cachedOptions,\n });\n const sessions = await client.sessions.list({\n cwd: ctx.daemon?.cwd ?? undefined,\n includeArchived: false,\n limit: 20,\n });\n ctx.listedSessionsRef.current = Object.fromEntries(sessions.map((session) => [session.id, session]));\n ctx.setSelectRequest((current) =>\n current?.submitPrefix === \"/sessions open \"\n ? {\n title: \"Sessions\",\n submitPrefix: \"/sessions open \",\n options: sessionSelectOptions(sessions, ctx.activeSessionIdRef.current),\n }\n : current,\n );\n return;\n }\n\n case \"set_permission_mode\": {\n if (!client) return;\n const mode = action.permission_mode;\n ctx.setStatus((current) => ({ ...current, permission_mode: mode }));\n if (sessionId) {\n await client.sessions.update(sessionId, {\n metadata: patchSessionRuntimeMetadata({}, { permissionMode: mode }),\n });\n }\n return;\n }\n\n case \"question_response\": {\n if (!client) return;\n ctx.reportError(\"Interactive question responses are not available through the daemon client.\");\n return;\n }\n\n case \"set_session_mode\": {\n if (!client) return;\n if (sessionId) {\n ctx.pushSystem(\"Coordinator mode can only be changed before starting a new session. Use /new first.\");\n return;\n }\n const mode = normalizeSessionMode(action.session_mode);\n ctx.nextSessionModeRef.current = statusSessionMode(mode);\n ctx.setStatus((current) => ({\n ...current,\n session_mode: ctx.nextSessionModeRef.current,\n }));\n return;\n }\n\n case \"job_request\": {\n if (!client) {\n ctx.reportAuxiliaryError(\"Jobs\", \"The daemon client is not connected.\");\n return;\n }\n const currentSessionId = ctx.activeSessionIdRef.current;\n if (!currentSessionId) return;\n try {\n switch (action.job_action) {\n case \"open\":\n await ctx.refreshJobs();\n return;\n case \"refresh\": {\n ctx.jobControlGenerationRef.current += 1;\n ctx.jobControlAbortRef.current?.abort();\n ctx.jobControlAbortRef.current = null;\n const detail = ctx.jobDetailStateRef.current;\n const detailJobId = detail.status === \"idle\" ? undefined : detail.jobId;\n await Promise.all([\n ctx.refreshJobs(),\n detailJobId\n ? ctx.loadJobDetail(client, currentSessionId, detailJobId)\n : Promise.resolve(),\n ]);\n return;\n }\n case \"select\":\n ctx.jobControlGenerationRef.current += 1;\n ctx.jobControlAbortRef.current?.abort();\n ctx.jobControlAbortRef.current = null;\n await ctx.loadJobDetail(client, currentSessionId, action.job_id);\n return;\n case \"cancel\": {\n const controlGeneration = ++ctx.jobControlGenerationRef.current;\n const detailGeneration = ctx.jobDetailGenerationRef.current;\n ctx.jobControlAbortRef.current?.abort();\n const controller = new AbortController();\n ctx.jobControlAbortRef.current = controller;\n let response: Awaited<ReturnType<JobResource[\"cancel\"]>>;\n try {\n response = await client.jobs.cancel(\n action.job_id,\n {\n sessionId: currentSessionId,\n reason: action.reason,\n },\n { signal: controller.signal },\n );\n } catch (error) {\n if (ctx.activeSessionIdRef.current !== currentSessionId) return;\n if (controller.signal.aborted || ctx.jobControlGenerationRef.current !== controlGeneration) {\n await ctx.refreshJobs();\n return;\n }\n throw error;\n } finally {\n if (ctx.jobControlAbortRef.current === controller) ctx.jobControlAbortRef.current = null;\n }\n if (ctx.activeSessionIdRef.current !== currentSessionId) return;\n const ownsDetail = !controller.signal.aborted &&\n ctx.jobControlGenerationRef.current === controlGeneration &&\n ctx.jobDetailGenerationRef.current === detailGeneration;\n const validated = validateJobSnapshot(response, currentSessionId, action.job_id);\n if (!validated.snapshot) {\n if (controller.signal.aborted || ctx.jobControlGenerationRef.current !== controlGeneration) {\n await ctx.refreshJobs();\n return;\n }\n throw new Error(validated.error ?? \"Job snapshot has invalid fields.\");\n }\n const snapshot = validated.snapshot;\n const next = mergeJobSnapshot(ctx.jobStateRef.current, snapshot, Date.now());\n ctx.jobStateRef.current = next;\n ctx.setJobState(next);\n if (ownsDetail) {\n await ctx.loadJobDetail(client, currentSessionId, action.job_id);\n }\n await ctx.refreshJobs();\n return;\n }\n case \"send\": {\n const controlGeneration = ++ctx.jobControlGenerationRef.current;\n const detailGeneration = ctx.jobDetailGenerationRef.current;\n ctx.jobControlAbortRef.current?.abort();\n const controller = new AbortController();\n ctx.jobControlAbortRef.current = controller;\n try {\n await client.jobs.send(\n action.job_id,\n {\n sessionId: currentSessionId,\n data: action.data,\n },\n { signal: controller.signal },\n );\n } catch (error) {\n if (ctx.activeSessionIdRef.current !== currentSessionId) return;\n if (controller.signal.aborted || ctx.jobControlGenerationRef.current !== controlGeneration) {\n await ctx.refreshJobs();\n return;\n }\n throw error;\n } finally {\n if (ctx.jobControlAbortRef.current === controller) ctx.jobControlAbortRef.current = null;\n }\n if (ctx.activeSessionIdRef.current !== currentSessionId) return;\n const ownsDetail = !controller.signal.aborted &&\n ctx.jobControlGenerationRef.current === controlGeneration &&\n ctx.jobDetailGenerationRef.current === detailGeneration;\n if (ownsDetail) {\n await ctx.loadJobDetail(client, currentSessionId, action.job_id);\n }\n await ctx.refreshJobs();\n return;\n }\n }\n } catch (error) {\n ctx.reportAuxiliaryError(\"Jobs\", error);\n return;\n }\n }\n\n default: {\n const exhaustive: never = action;\n void exhaustive;\n ctx.reportError(`Unsupported TUI action: ${runtimeType}`);\n return;\n }\n }\n}\n",
69
71
  "export * from \"./connection\";\nexport * from \"./permissions\";\nexport * from \"./view-model\";\nexport * from \"./mcp\";\nexport * from \"./actions\";\n",
70
- "import { useCallback, useEffect, useMemo, useRef, useState, type SetStateAction } from \"react\";\nimport {\n VykorClient,\n SessionSyncController,\n createPromptRequestId,\n createInitialClientState,\n readSessionRuntimeConfig,\n readSessionModelUsage,\n selectSessionModelRetry,\n type CommandCatalogEntry,\n type ModelProviderInfo,\n type VykorClientState,\n type PresentationReadRequest,\n type SessionRecord,\n} from \"@vykor/client\";\n\nimport type { FrontendConfig, McpServerSnapshot, TranscriptItem } from \"../types\";\nimport {\n beginJobList,\n rejectJobList,\n resolveJobList,\n validateJobReadResult,\n validateJobSnapshots,\n type JobDetailRemoteState,\n type JobRemoteState,\n} from \"../jobs/job-remote-state\";\nimport type { TuiAction, TuiSessionController } from \"./sessionController\";\nimport { bucketToTranscript, splitStreamingAssistant } from \"./transcript\";\nimport {\n hasActiveRun,\n mergeCommandDetails,\n} from \"./sessionSlashCommands\";\nimport {\n createDaemonClient,\n executeTuiAction,\n firstPendingPermission,\n mcpServerSnapshot,\n permissionToModal,\n recoverableInterruptedRuns,\n sessionRuntimeMetadata,\n shouldAutoActivateSession,\n shouldCoalesceClientState,\n statusSessionMode,\n stringSetting,\n type DefaultRuntimeSettings,\n} from \"./sync-submodules\";\n\nexport { sessionRuntimeMetadata, shouldAutoActivateSession } from \"./sync-submodules\";\n\ntype DisplayRequest = NonNullable<TuiSessionController[\"displayRequest\"]>;\ntype PresentationCacheEntry = {\n title: string;\n content: string;\n updatedAt: number;\n};\n\nconst LIVE_TEXT_DELTA_FLUSH_MS = 33;\nconst PRESENTATION_LOADING_TEXT = \"Loading...\";\n\nexport function useServerSync(config: FrontendConfig, onError?: (message: string) => void): TuiSessionController {\n const daemon = config.daemon;\n const [clientState, setClientState] = useState<VykorClientState>(() => createInitialClientState());\n const [activeSessionId, setActiveSessionId] = useState<string | undefined>();\n const [status, setStatus] = useState<Record<string, unknown>>({\n permission_mode: daemon?.permissionMode ?? \"default\",\n model: daemon?.model ?? \"default\",\n session_mode: statusSessionMode(daemon?.sessionMode),\n ...(typeof daemon?.maxTurns === \"number\" ? { max_turns: daemon.maxTurns } : {}),\n });\n const [modal, setModal] = useState<Record<string, unknown> | null>(null);\n const [selectRequest, setSelectRequest] = useState<TuiSessionController[\"selectRequest\"]>(null);\n const [displayRequest, setDisplayRequest] = useState<TuiSessionController[\"displayRequest\"]>(null);\n const [localBusy, setLocalBusy] = useState(false);\n const [submittedRun, setSubmittedRun] = useState<{\n sessionId: string;\n runId: string;\n } | null>(null);\n const [ready, setReady] = useState(false);\n const [showReasoning, setShowReasoning] = useState(true);\n const [globalSystemItems, setGlobalSystemItems] = useState<TranscriptItem[]>([]);\n const [systemItemsBySession, setSystemItemsBySession] = useState<Record<string, TranscriptItem[]>>({});\n const [commandCatalog, setCommandCatalog] = useState<CommandCatalogEntry[]>([]);\n const [jobState, setJobState] = useState<JobRemoteState>({ status: \"idle\", jobs: [] });\n const [jobDetailState, setJobDetailState] = useState<JobDetailRemoteState>({ status: \"idle\" });\n const [mcpServers, setMcpServers] = useState<McpServerSnapshot[]>([]);\n\n const clientRef = useRef<VykorClient | null>(null);\n const activeSessionIdRef = useRef<string | undefined>(undefined);\n const commandCatalogRef = useRef<CommandCatalogEntry[]>([]);\n const defaultRuntimeRef = useRef<DefaultRuntimeSettings>({\n model: daemon?.model ?? \"default\",\n });\n const nextSessionModeRef = useRef<\"coordinator\" | \"direct\">(statusSessionMode(daemon?.sessionMode));\n const statusRef = useRef(status);\n const sentInitialPromptRef = useRef(false);\n const pendingNewSessionTitleRef = useRef<string | undefined>(undefined);\n const listedSessionsRef = useRef<Record<string, SessionRecord>>({});\n const presentationCacheRef = useRef<Record<string, PresentationCacheEntry>>({});\n const displayRequestRef = useRef<TuiSessionController[\"displayRequest\"]>(null);\n const pendingClientStateRef = useRef<VykorClientState | null>(null);\n const pendingClientStateTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const shownPermissionIdRef = useRef<string | undefined>(undefined);\n const auxiliaryGenerationRef = useRef(0);\n const syncGenerationRef = useRef(0);\n const jobStateRef = useRef(jobState);\n const jobDetailStateRef = useRef(jobDetailState);\n const jobGenerationRef = useRef(0);\n const jobDetailGenerationRef = useRef(0);\n const jobsAbortRef = useRef<AbortController | null>(null);\n const jobDetailAbortRef = useRef<AbortController | null>(null);\n const jobControlAbortRef = useRef<AbortController | null>(null);\n const jobControlGenerationRef = useRef(0);\n const mcpAbortRef = useRef<AbortController | null>(null);\n const onErrorRef = useRef(onError);\n onErrorRef.current = onError;\n\n useEffect(() => {\n activeSessionIdRef.current = activeSessionId;\n }, [activeSessionId]);\n\n useEffect(() => {\n commandCatalogRef.current = commandCatalog;\n }, [commandCatalog]);\n\n useEffect(() => {\n statusRef.current = status;\n }, [status]);\n\n useEffect(() => {\n displayRequestRef.current = displayRequest;\n }, [displayRequest]);\n\n useEffect(() => {\n jobStateRef.current = jobState;\n }, [jobState]);\n\n useEffect(() => {\n jobDetailStateRef.current = jobDetailState;\n }, [jobDetailState]);\n\n const clearDisplayRequest = useCallback(() => {\n displayRequestRef.current = null;\n setDisplayRequest(null);\n }, []);\n\n const showDisplayRequest = useCallback((request: DisplayRequest) => {\n displayRequestRef.current = request;\n setSelectRequest(null);\n setDisplayRequest(request);\n }, []);\n\n const clearAuxiliaryState = useCallback((): void => {\n auxiliaryGenerationRef.current += 1;\n jobGenerationRef.current += 1;\n jobDetailGenerationRef.current += 1;\n jobControlGenerationRef.current += 1;\n mcpAbortRef.current?.abort();\n jobsAbortRef.current?.abort();\n jobDetailAbortRef.current?.abort();\n jobControlAbortRef.current?.abort();\n mcpAbortRef.current = null;\n jobsAbortRef.current = null;\n jobDetailAbortRef.current = null;\n jobControlAbortRef.current = null;\n const emptyJobState: JobRemoteState = { status: \"idle\", jobs: [] };\n const emptyJobDetailState: JobDetailRemoteState = { status: \"idle\" };\n jobStateRef.current = emptyJobState;\n jobDetailStateRef.current = emptyJobDetailState;\n setJobState(emptyJobState);\n setJobDetailState(emptyJobDetailState);\n setMcpServers([]);\n }, []);\n\n const setStatusAndDefault = useCallback((value: SetStateAction<Record<string, unknown>>) => {\n setStatus((current) => {\n const next = typeof value === \"function\" ? value(current) : value;\n if (typeof next.model === \"string\" && !activeSessionIdRef.current) {\n defaultRuntimeRef.current = {\n ...defaultRuntimeRef.current,\n model: next.model,\n ...(typeof next.provider === \"string\" ? { provider: next.provider } : {}),\n ...(typeof next.baseUrl === \"string\" ? { baseUrl: next.baseUrl } : {}),\n ...(next.apiFormat === \"anthropic\" || next.apiFormat === \"openai\" ? { apiFormat: next.apiFormat } : {}),\n };\n }\n return next;\n });\n }, []);\n\n const pushSystem = useCallback((text: string) => {\n const sessionId = activeSessionIdRef.current;\n if (!sessionId) {\n setGlobalSystemItems((items) => [...items, { role: \"system\", text }]);\n return;\n }\n setSystemItemsBySession((itemsBySession) => ({\n ...itemsBySession,\n [sessionId]: [...(itemsBySession[sessionId] ?? []), { role: \"system\", text }],\n }));\n }, []);\n\n const reportError = useCallback(\n (message: string) => {\n pushSystem(`error: ${message}`);\n onErrorRef.current?.(message);\n setLocalBusy(false);\n setSubmittedRun(null);\n },\n [pushSystem],\n );\n\n const reportAuxiliaryError = useCallback((scope: string, error: unknown): void => {\n const message = error instanceof Error ? error.message : String(error);\n onErrorRef.current?.(`${scope}: ${message}`);\n }, []);\n\n const refreshJobs = useCallback(async (): Promise<void> => {\n const client = clientRef.current;\n const sessionId = activeSessionIdRef.current;\n const generation = ++jobGenerationRef.current;\n if (!client || !sessionId) {\n const idle: JobRemoteState = { status: \"idle\", jobs: [] };\n jobStateRef.current = idle;\n setJobState(idle);\n return;\n }\n\n jobsAbortRef.current?.abort();\n const controller = new AbortController();\n jobsAbortRef.current = controller;\n setJobState((current) => {\n const next = beginJobList(current);\n jobStateRef.current = next;\n return next;\n });\n\n try {\n const response = await client.jobs.list({\n sessionId,\n includeFinished: true,\n limit: 100,\n signal: controller.signal,\n });\n if (activeSessionIdRef.current !== sessionId || jobGenerationRef.current !== generation) return;\n const validated = validateJobSnapshots(response, sessionId);\n if (validated.error) {\n const validationError = validated.error;\n const now = Date.now();\n setJobState((current) => {\n const next: JobRemoteState = validated.jobs.length > 0\n ? {\n ...resolveJobList(validated.jobs, now, current),\n status: \"error\",\n error: validationError,\n }\n : rejectJobList(current, validationError);\n jobStateRef.current = next;\n return next;\n });\n reportAuxiliaryError(\"Jobs\", validationError);\n } else {\n const next = resolveJobList(validated.jobs, Date.now(), jobStateRef.current);\n jobStateRef.current = next;\n setJobState(next);\n }\n } catch (error) {\n if (controller.signal.aborted) return;\n if (activeSessionIdRef.current !== sessionId || jobGenerationRef.current !== generation) return;\n const message = error instanceof Error ? error.message : String(error);\n setJobState((current) => {\n const next = rejectJobList(current, message);\n jobStateRef.current = next;\n return next;\n });\n reportAuxiliaryError(\"Jobs\", message);\n } finally {\n if (jobsAbortRef.current === controller) jobsAbortRef.current = null;\n }\n }, [reportAuxiliaryError]);\n\n const loadJobDetail = useCallback(async (\n client: Pick<VykorClient, \"jobs\">,\n sessionId: string,\n jobId: string,\n ): Promise<void> => {\n const generation = ++jobDetailGenerationRef.current;\n jobDetailAbortRef.current?.abort();\n const controller = new AbortController();\n jobDetailAbortRef.current = controller;\n const current = jobDetailStateRef.current;\n const previous = current.status !== \"idle\" && current.jobId === jobId\n ? current.status === \"ready\"\n ? current.result\n : current.previous\n : undefined;\n const loading: JobDetailRemoteState = {\n status: \"loading\",\n jobId,\n ...(previous ? { previous } : {}),\n };\n jobDetailStateRef.current = loading;\n setJobDetailState(loading);\n\n try {\n const response = await client.jobs.read(jobId, {\n sessionId,\n signal: controller.signal,\n });\n if (activeSessionIdRef.current !== sessionId || jobDetailGenerationRef.current !== generation) return;\n const validated = validateJobReadResult(response, sessionId, jobId);\n if (!validated.result) {\n throw new Error(validated.error ?? `Job read response for \"${jobId}\" has invalid fields.`);\n }\n const result = validated.result;\n const readyState: JobDetailRemoteState = {\n status: \"ready\",\n jobId,\n result,\n refreshedAt: Date.now(),\n };\n jobDetailStateRef.current = readyState;\n setJobDetailState(readyState);\n } catch (error) {\n if (controller.signal.aborted) return;\n if (activeSessionIdRef.current !== sessionId || jobDetailGenerationRef.current !== generation) return;\n const message = error instanceof Error ? error.message : String(error);\n const errorState: JobDetailRemoteState = {\n status: \"error\",\n jobId,\n error: message,\n ...(previous ? { previous } : {}),\n };\n jobDetailStateRef.current = errorState;\n setJobDetailState(errorState);\n reportAuxiliaryError(\"Jobs\", message);\n } finally {\n if (jobDetailAbortRef.current === controller) jobDetailAbortRef.current = null;\n }\n }, [reportAuxiliaryError]);\n\n const loadModels = useCallback(async (): Promise<ModelProviderInfo[]> => {\n const client = clientRef.current;\n if (!client) return [];\n return await client.providers.listModels();\n }, []);\n\n const refreshSettings = useCallback(async (): Promise<void> => {\n const client = clientRef.current;\n if (!client) return;\n const settings = await client.system.getSettings();\n setShowReasoning(settings.showReasoning !== false);\n }, []);\n\n const cacheFirstRead = useCallback(\n (request: PresentationReadRequest): void => {\n const cached = presentationCacheRef.current[request.key];\n showDisplayRequest({\n key: request.key,\n title: request.title,\n content: cached?.content ?? PRESENTATION_LOADING_TEXT,\n });\n\n void request\n .load()\n .then((content) => {\n presentationCacheRef.current = {\n ...presentationCacheRef.current,\n [request.key]: {\n title: request.title,\n content,\n updatedAt: Date.now(),\n },\n };\n if (displayRequestRef.current?.key !== request.key) return;\n showDisplayRequest({\n key: request.key,\n title: request.title,\n content,\n });\n })\n .catch((error) => {\n const message = error instanceof Error ? error.message : String(error);\n const content = cached ? `${cached.content}\\n\\nRefresh failed: ${message}` : `Failed to load ${request.title}: ${message}`;\n if (displayRequestRef.current?.key !== request.key) return;\n showDisplayRequest({\n key: request.key,\n title: request.title,\n content,\n });\n });\n },\n [showDisplayRequest],\n );\n\n const clearPendingClientState = useCallback(() => {\n if (pendingClientStateTimerRef.current) {\n clearTimeout(pendingClientStateTimerRef.current);\n pendingClientStateTimerRef.current = null;\n }\n pendingClientStateRef.current = null;\n }, []);\n\n const commitClientState = useCallback(\n (state: VykorClientState, coalesce: boolean) => {\n if (!coalesce) {\n clearPendingClientState();\n setClientState(state);\n return;\n }\n\n pendingClientStateRef.current = state;\n if (pendingClientStateTimerRef.current) return;\n pendingClientStateTimerRef.current = setTimeout(() => {\n pendingClientStateTimerRef.current = null;\n const pending = pendingClientStateRef.current;\n pendingClientStateRef.current = null;\n if (pending) setClientState(pending);\n }, LIVE_TEXT_DELTA_FLUSH_MS);\n },\n [clearPendingClientState],\n );\n\n useEffect(() => clearPendingClientState, [clearPendingClientState]);\n\n const activateSession = useCallback(\n (session: SessionRecord): void => {\n const runtime = readSessionRuntimeConfig(session, defaultRuntimeRef.current);\n activeSessionIdRef.current = session.id;\n setActiveSessionId(session.id);\n clearAuxiliaryState();\n setStatus((current) => ({\n ...current,\n model: runtime.model,\n ...(runtime.provider ? { provider: runtime.provider } : {}),\n session_id: session.id,\n cwd: session.cwd,\n permission_mode: typeof runtime.permissionMode === \"string\" ? runtime.permissionMode : current.permission_mode,\n ...(typeof runtime.maxTurns === \"number\" ? { max_turns: runtime.maxTurns } : {}),\n session_mode: statusSessionMode(runtime.sessionMode),\n }));\n },\n [clearAuxiliaryState],\n );\n\n const returnToHome = useCallback(\n (title?: string): void => {\n pendingNewSessionTitleRef.current = title?.trim() || undefined;\n activeSessionIdRef.current = undefined;\n setActiveSessionId(undefined);\n clearAuxiliaryState();\n setLocalBusy(false);\n setSubmittedRun(null);\n setSelectRequest(null);\n clearDisplayRequest();\n setModal(null);\n setStatus((current) => {\n const next = { ...current };\n delete next.session_id;\n next.model = defaultRuntimeRef.current.model;\n if (defaultRuntimeRef.current.provider) next.provider = defaultRuntimeRef.current.provider;\n else delete next.provider;\n next.session_mode = nextSessionModeRef.current;\n return next;\n });\n },\n [clearAuxiliaryState, clearDisplayRequest],\n );\n\n useEffect(() => {\n if (!daemon?.url) {\n setReady(true);\n reportError(\"Daemon URL is required for TUI. Launch with `vk` or `vk --tui` so the CLI can start or attach the daemon.\");\n return;\n }\n let cancelled = false;\n const client = createDaemonClient(daemon);\n if (!client) return;\n clientRef.current = client;\n\n void (async () => {\n try {\n await client.protocol.health();\n const cwd = daemon.cwd ?? process.cwd();\n const [settings, sessions, commands] = await Promise.all([\n client.system.getSettings().catch(() => ({}) as Record<string, unknown>),\n client.sessions.list({ cwd, limit: 20 }),\n client.system.listCommands({ cwd }).catch(() => [] as CommandCatalogEntry[]),\n ]);\n const model = daemon.model ?? stringSetting(settings.model) ?? \"default\";\n setShowReasoning(settings.showReasoning !== false);\n const provider = stringSetting(settings.provider);\n const baseUrl = stringSetting(settings.baseUrl);\n const apiFormat = settings.apiFormat === \"anthropic\" || settings.apiFormat === \"openai\" ? settings.apiFormat : undefined;\n defaultRuntimeRef.current = {\n model,\n ...(provider ? { provider } : {}),\n ...(baseUrl ? { baseUrl } : {}),\n ...(apiFormat ? { apiFormat } : {}),\n };\n if (cancelled) return;\n listedSessionsRef.current = Object.fromEntries(sessions.map((session) => [session.id, session]));\n setCommandCatalog(commands);\n setStatus((current) => ({\n ...current,\n model,\n ...(provider ? { provider } : {}),\n cwd,\n permission_mode: daemon?.permissionMode ?? current.permission_mode,\n ...(typeof daemon?.maxTurns === \"number\" ? { max_turns: daemon.maxTurns } : {}),\n session_mode: statusSessionMode(daemon?.sessionMode),\n }));\n const session = sessions[0];\n if (session && shouldAutoActivateSession(session, model, daemon?.pluginsEnabled)) {\n activateSession(session);\n void client.sessions.get(session.id).catch(() => {});\n }\n setReady(true);\n } catch (error) {\n if (cancelled) return;\n setReady(true);\n reportError(error instanceof Error ? error.message : String(error));\n }\n })();\n\n return () => {\n cancelled = true;\n clientRef.current = null;\n };\n }, [activateSession, daemon?.cwd, daemon?.maxTurns, daemon?.model, daemon?.permissionMode, daemon?.pluginsEnabled, daemon?.sessionMode, daemon?.token, daemon?.url, reportError]);\n\n useEffect(() => {\n const client = clientRef.current;\n if (!client || !activeSessionId) return;\n const generation = ++syncGenerationRef.current;\n let reconnectNotice = false;\n\n const controller = new SessionSyncController({\n client,\n sessionId: activeSessionId,\n generation,\n onUpdate: (update, gen) => {\n if (gen !== syncGenerationRef.current) return;\n if (update.source === \"reconnecting\") {\n if (!reconnectNotice) {\n reconnectNotice = true;\n pushSystem(\"reconnecting...\");\n }\n return;\n }\n if (reconnectNotice) reconnectNotice = false;\n commitClientState(update.state, shouldCoalesceClientState(update));\n },\n onError: (error, gen) => {\n if (gen !== syncGenerationRef.current) return;\n reportError(error instanceof Error ? error.message : String(error));\n },\n });\n\n void controller.start();\n\n return () => {\n clearPendingClientState();\n controller.abort();\n };\n }, [\n activeSessionId,\n clearPendingClientState,\n commitClientState,\n daemon?.token,\n daemon?.url,\n pushSystem,\n reportError,\n ]);\n\n useEffect(() => {\n const client = clientRef.current;\n const sessionId = activeSessionId;\n if (!client || !sessionId) return;\n const generation = ++auxiliaryGenerationRef.current;\n mcpAbortRef.current?.abort();\n const controller = new AbortController();\n mcpAbortRef.current = controller;\n const isCurrent = () => activeSessionIdRef.current === sessionId && auxiliaryGenerationRef.current === generation;\n\n void client.system.getSessionMcp(sessionId, { signal: controller.signal })\n .then((servers) => {\n if (!isCurrent()) return;\n setMcpServers(Array.isArray(servers) ? servers.map(mcpServerSnapshot) : []);\n })\n .catch((error) => {\n if (controller.signal.aborted) return;\n if (!isCurrent()) return;\n setMcpServers([]);\n reportAuxiliaryError(\"MCP\", error);\n })\n .finally(() => {\n if (mcpAbortRef.current === controller) mcpAbortRef.current = null;\n });\n\n return () => {\n controller.abort();\n };\n }, [activeSessionId, reportAuxiliaryError]);\n\n useEffect(() => {\n jobDetailGenerationRef.current += 1;\n jobDetailAbortRef.current?.abort();\n jobDetailAbortRef.current = null;\n const idle: JobDetailRemoteState = { status: \"idle\" };\n jobDetailStateRef.current = idle;\n setJobDetailState(idle);\n void refreshJobs();\n return () => {\n jobsAbortRef.current?.abort();\n };\n }, [activeSessionId, refreshJobs]);\n\n useEffect(() => {\n const pending = firstPendingPermission(clientState, activeSessionId);\n if (!pending) {\n shownPermissionIdRef.current = undefined;\n if (modal?.kind === \"permission\") setModal(null);\n return;\n }\n if (shownPermissionIdRef.current === pending.id) return;\n shownPermissionIdRef.current = pending.id;\n setModal(permissionToModal(pending));\n }, [activeSessionId, clientState, modal?.kind]);\n\n const running = hasActiveRun(clientState, activeSessionId);\n useEffect(() => {\n if (!submittedRun) return;\n const run = clientState.buckets[submittedRun.sessionId]?.runs[submittedRun.runId];\n if (!run || run.status === \"pending\" || run.status === \"running\") return;\n void refreshJobs();\n if (run.status === \"failed\") {\n reportError(run.error ?? \"Agent run failed\");\n return;\n }\n setSubmittedRun(null);\n }, [clientState, refreshJobs, reportError, submittedRun]);\n\n const createAndSwitchSession = useCallback(\n async (title?: string): Promise<SessionRecord | undefined> => {\n const client = clientRef.current;\n if (!client) return undefined;\n setLocalBusy(true);\n const cwd = daemon?.cwd ?? process.cwd();\n const model = defaultRuntimeRef.current.model;\n const metadata = sessionRuntimeMetadata({\n model,\n provider: defaultRuntimeRef.current.provider,\n baseUrl: defaultRuntimeRef.current.baseUrl,\n apiFormat: defaultRuntimeRef.current.apiFormat,\n permissionMode: statusRef.current.permission_mode ?? daemon?.permissionMode ?? \"default\",\n maxTurns: statusRef.current.max_turns ?? daemon?.maxTurns,\n sessionMode: nextSessionModeRef.current,\n pluginsEnabled: daemon?.pluginsEnabled,\n });\n const session = await client.sessions.create({\n cwd,\n model,\n title: title?.trim() || \"TUI\",\n metadata,\n });\n activateSession(session);\n setSelectRequest(null);\n setLocalBusy(false);\n setSubmittedRun(null);\n pendingNewSessionTitleRef.current = undefined;\n return session;\n },\n [activateSession, daemon?.cwd, daemon?.maxTurns, daemon?.model, daemon?.permissionMode, daemon?.pluginsEnabled, daemon?.sessionMode],\n );\n\n useEffect(() => {\n if (!ready || sentInitialPromptRef.current || !config.initial_prompt) return;\n sentInitialPromptRef.current = true;\n const client = clientRef.current;\n if (!client) return;\n setLocalBusy(true);\n void (async () => {\n const session = activeSessionId ? (clientState.sessions[activeSessionId] ?? (await client.sessions.get(activeSessionId))) : await createAndSwitchSession();\n if (!session) {\n setLocalBusy(false);\n return;\n }\n const response = await client.sessions.admitPrompt(session.id, {\n id: createPromptRequestId(),\n items: [{ type: \"text\", text: config.initial_prompt! }],\n });\n setLocalBusy(false);\n setSubmittedRun(response.run ? { sessionId: session.id, runId: response.run.id } : null);\n })().catch((error) => reportError(error instanceof Error ? error.message : String(error)));\n }, [activeSessionId, clientState.sessions, config.initial_prompt, createAndSwitchSession, ready, reportError]);\n\n const sendRequest = useCallback(\n (action: TuiAction): void => {\n executeTuiAction(action, {\n clientRef,\n activeSessionIdRef,\n clientState,\n setClientState,\n daemon,\n defaultRuntimeRef,\n nextSessionModeRef,\n statusRef,\n setStatus,\n setStatusAndDefault,\n listedSessionsRef,\n commandCatalogRef,\n pendingNewSessionTitleRef,\n localBusy,\n setLocalBusy,\n setSubmittedRun,\n setModal,\n setSelectRequest,\n clearDisplayRequest,\n showDisplayRequest,\n pushSystem,\n reportError,\n reportAuxiliaryError,\n activateSession,\n returnToHome,\n refreshJobs,\n refreshSettings,\n loadJobDetail,\n createAndSwitchSession,\n cacheFirstRead,\n jobStateRef,\n setJobState,\n jobDetailStateRef,\n jobControlGenerationRef,\n jobDetailGenerationRef,\n jobControlAbortRef,\n }).catch((error) => {\n reportError(error instanceof Error ? error.message : String(error));\n });\n },\n [activateSession, cacheFirstRead, clearDisplayRequest, clientState, createAndSwitchSession, daemon, loadJobDetail, localBusy, pushSystem, refreshJobs, refreshSettings, reportAuxiliaryError, reportError, returnToHome, setStatusAndDefault, showDisplayRequest],\n );\n\n const bucket = activeSessionId ? clientState.buckets[activeSessionId] : undefined;\n const latestRun = useMemo(() => Object.values(bucket?.runs ?? {}).sort((a, b) => b.updatedAt - a.updatedAt)[0], [bucket]);\n const knownUsage = useMemo(() => {\n const attempts = Object.values(bucket?.attempts ?? {}).filter((attempt) => attempt.runId === latestRun?.id);\n return {\n inputTokens: attempts.reduce((sum, attempt) => sum + (attempt.inputTokens ?? 0), 0),\n outputTokens: attempts.reduce((sum, attempt) => sum + (attempt.outputTokens ?? 0), 0),\n };\n }, [bucket, latestRun]);\n const recoveryItems = useMemo(\n () =>\n recoverableInterruptedRuns(bucket).map((run) => ({\n id: `recovery:${run.id}`,\n role: \"system\" as const,\n text: `Run interrupted${run.error ? `: ${run.error}` : \"\"}\\nUse /resume ${run.id} to replay its original prompt.`,\n })),\n [bucket],\n );\n const transcriptView = useMemo(() => {\n const base = splitStreamingAssistant(bucketToTranscript(bucket, { showReasoning }));\n return {\n transcript: [...base.items, ...recoveryItems, ...(activeSessionId ? (systemItemsBySession[activeSessionId] ?? []) : globalSystemItems)],\n assistantBuffer: base.assistantBuffer,\n };\n }, [activeSessionId, bucket, globalSystemItems, recoveryItems, showReasoning, systemItemsBySession]);\n const submittedRunRecord = submittedRun ? clientState.buckets[submittedRun.sessionId]?.runs[submittedRun.runId] : undefined;\n const waitingForSubmittedRun = !!submittedRun && (!submittedRunRecord || submittedRunRecord.status === \"pending\" || submittedRunRecord.status === \"running\");\n const commandDetails = useMemo(() => mergeCommandDetails(commandCatalog), [commandCatalog]);\n const commands = useMemo(() => commandDetails.map((entry) => entry.name), [commandDetails]);\n\n return useMemo(\n () => ({\n transcript: transcriptView.transcript,\n assistantBuffer: transcriptView.assistantBuffer,\n retry: selectSessionModelRetry(bucket),\n usage: latestRun ? readSessionModelUsage(latestRun.metadata) : undefined,\n knownUsage,\n status,\n jobState,\n jobs: jobState.jobs,\n jobDetailState,\n commands,\n commandDetails,\n mcpServers,\n modal,\n selectRequest,\n displayRequest,\n busy: localBusy || running || waitingForSubmittedRun,\n ready,\n setModal,\n setSelectRequest,\n setDisplayRequest,\n setBusy: setLocalBusy,\n loadModels,\n sendRequest,\n }),\n [bucket, commandDetails, commands, displayRequest, jobDetailState, jobState, knownUsage, latestRun, loadModels, localBusy, mcpServers, modal, ready, running, selectRequest, sendRequest, status, transcriptView, waitingForSubmittedRun],\n );\n}\n",
72
+ "import { useCallback, useEffect, useMemo, useRef, useState, type SetStateAction } from \"react\";\nimport {\n VykorClient,\n SessionSyncController,\n createPromptRequestId,\n createInitialClientState,\n readSessionRuntimeConfig,\n readSessionModelUsage,\n selectSessionModelRetry,\n type CommandCatalogEntry,\n type ModelProviderInfo,\n type VykorClientState,\n type PresentationReadRequest,\n type SessionRecord,\n} from \"@vykor/client\";\n\nimport type { FrontendConfig, McpServerSnapshot, TranscriptItem } from \"../types\";\nimport {\n beginJobList,\n rejectJobList,\n resolveJobList,\n validateJobReadResult,\n validateJobSnapshots,\n type JobDetailRemoteState,\n type JobRemoteState,\n} from \"../jobs/job-remote-state\";\nimport type { TuiAction, TuiSessionController } from \"./sessionController\";\nimport { bucketToTranscript, splitStreamingAssistant } from \"./transcript\";\nimport {\n hasActiveRun,\n mergeCommandDetails,\n} from \"./sessionSlashCommands\";\nimport {\n createDaemonClient,\n executeTuiAction,\n firstPendingPermission,\n mcpServerSnapshot,\n permissionToModal,\n recoverableInterruptedRuns,\n sessionRuntimeMetadata,\n shouldAutoActivateSession,\n shouldCoalesceClientState,\n statusSessionMode,\n stringSetting,\n type DefaultRuntimeSettings,\n} from \"./sync-submodules\";\n\nexport { sessionRuntimeMetadata, shouldAutoActivateSession } from \"./sync-submodules\";\n\ntype DisplayRequest = NonNullable<TuiSessionController[\"displayRequest\"]>;\ntype PresentationCacheEntry = {\n title: string;\n content: string;\n updatedAt: number;\n};\n\nconst LIVE_TEXT_DELTA_FLUSH_MS = 33;\nconst PRESENTATION_LOADING_TEXT = \"Loading...\";\n\nexport function useServerSync(config: FrontendConfig, onError?: (message: string) => void): TuiSessionController {\n const daemon = config.daemon;\n const [clientState, setClientState] = useState<VykorClientState>(() => createInitialClientState());\n const [activeSessionId, setActiveSessionId] = useState<string | undefined>();\n const [status, setStatus] = useState<Record<string, unknown>>({\n permission_mode: daemon?.permissionMode ?? \"default\",\n model: daemon?.model ?? \"default\",\n session_mode: statusSessionMode(daemon?.sessionMode),\n ...(typeof daemon?.maxTurns === \"number\" ? { max_turns: daemon.maxTurns } : {}),\n });\n const [modal, setModal] = useState<Record<string, unknown> | null>(null);\n const [selectRequest, setSelectRequest] = useState<TuiSessionController[\"selectRequest\"]>(null);\n const [displayRequest, setDisplayRequest] = useState<TuiSessionController[\"displayRequest\"]>(null);\n const [localBusy, setLocalBusy] = useState(false);\n const [submittedRun, setSubmittedRun] = useState<{\n sessionId: string;\n runId: string;\n } | null>(null);\n const [ready, setReady] = useState(false);\n const [showReasoning, setShowReasoning] = useState(false);\n const [globalSystemItems, setGlobalSystemItems] = useState<TranscriptItem[]>([]);\n const [systemItemsBySession, setSystemItemsBySession] = useState<Record<string, TranscriptItem[]>>({});\n const [commandCatalog, setCommandCatalog] = useState<CommandCatalogEntry[]>([]);\n const [jobState, setJobState] = useState<JobRemoteState>({ status: \"idle\", jobs: [] });\n const [jobDetailState, setJobDetailState] = useState<JobDetailRemoteState>({ status: \"idle\" });\n const [mcpServers, setMcpServers] = useState<McpServerSnapshot[]>([]);\n\n const clientRef = useRef<VykorClient | null>(null);\n const activeSessionIdRef = useRef<string | undefined>(undefined);\n const commandCatalogRef = useRef<CommandCatalogEntry[]>([]);\n const defaultRuntimeRef = useRef<DefaultRuntimeSettings>({\n model: daemon?.model ?? \"default\",\n });\n const nextSessionModeRef = useRef<\"coordinator\" | \"direct\">(statusSessionMode(daemon?.sessionMode));\n const statusRef = useRef(status);\n const sentInitialPromptRef = useRef(false);\n const pendingNewSessionTitleRef = useRef<string | undefined>(undefined);\n const listedSessionsRef = useRef<Record<string, SessionRecord>>({});\n const presentationCacheRef = useRef<Record<string, PresentationCacheEntry>>({});\n const displayRequestRef = useRef<TuiSessionController[\"displayRequest\"]>(null);\n const pendingClientStateRef = useRef<VykorClientState | null>(null);\n const pendingClientStateTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const shownPermissionIdRef = useRef<string | undefined>(undefined);\n const auxiliaryGenerationRef = useRef(0);\n const syncGenerationRef = useRef(0);\n const jobStateRef = useRef(jobState);\n const jobDetailStateRef = useRef(jobDetailState);\n const jobGenerationRef = useRef(0);\n const jobDetailGenerationRef = useRef(0);\n const jobsAbortRef = useRef<AbortController | null>(null);\n const jobDetailAbortRef = useRef<AbortController | null>(null);\n const jobControlAbortRef = useRef<AbortController | null>(null);\n const jobControlGenerationRef = useRef(0);\n const mcpAbortRef = useRef<AbortController | null>(null);\n const onErrorRef = useRef(onError);\n onErrorRef.current = onError;\n\n useEffect(() => {\n activeSessionIdRef.current = activeSessionId;\n }, [activeSessionId]);\n\n useEffect(() => {\n commandCatalogRef.current = commandCatalog;\n }, [commandCatalog]);\n\n useEffect(() => {\n statusRef.current = status;\n }, [status]);\n\n useEffect(() => {\n displayRequestRef.current = displayRequest;\n }, [displayRequest]);\n\n useEffect(() => {\n jobStateRef.current = jobState;\n }, [jobState]);\n\n useEffect(() => {\n jobDetailStateRef.current = jobDetailState;\n }, [jobDetailState]);\n\n const clearDisplayRequest = useCallback(() => {\n displayRequestRef.current = null;\n setDisplayRequest(null);\n }, []);\n\n const showDisplayRequest = useCallback((request: DisplayRequest) => {\n displayRequestRef.current = request;\n setSelectRequest(null);\n setDisplayRequest(request);\n }, []);\n\n const clearAuxiliaryState = useCallback((): void => {\n auxiliaryGenerationRef.current += 1;\n jobGenerationRef.current += 1;\n jobDetailGenerationRef.current += 1;\n jobControlGenerationRef.current += 1;\n mcpAbortRef.current?.abort();\n jobsAbortRef.current?.abort();\n jobDetailAbortRef.current?.abort();\n jobControlAbortRef.current?.abort();\n mcpAbortRef.current = null;\n jobsAbortRef.current = null;\n jobDetailAbortRef.current = null;\n jobControlAbortRef.current = null;\n const emptyJobState: JobRemoteState = { status: \"idle\", jobs: [] };\n const emptyJobDetailState: JobDetailRemoteState = { status: \"idle\" };\n jobStateRef.current = emptyJobState;\n jobDetailStateRef.current = emptyJobDetailState;\n setJobState(emptyJobState);\n setJobDetailState(emptyJobDetailState);\n setMcpServers([]);\n }, []);\n\n const setStatusAndDefault = useCallback((value: SetStateAction<Record<string, unknown>>) => {\n setStatus((current) => {\n const next = typeof value === \"function\" ? value(current) : value;\n if (typeof next.model === \"string\" && !activeSessionIdRef.current) {\n defaultRuntimeRef.current = {\n ...defaultRuntimeRef.current,\n model: next.model,\n ...(typeof next.provider === \"string\" ? { provider: next.provider } : {}),\n ...(typeof next.baseUrl === \"string\" ? { baseUrl: next.baseUrl } : {}),\n ...(next.apiFormat === \"anthropic\" || next.apiFormat === \"openai\" ? { apiFormat: next.apiFormat } : {}),\n };\n }\n return next;\n });\n }, []);\n\n const pushSystem = useCallback((text: string) => {\n const sessionId = activeSessionIdRef.current;\n if (!sessionId) {\n setGlobalSystemItems((items) => [...items, { role: \"system\", text }]);\n return;\n }\n setSystemItemsBySession((itemsBySession) => ({\n ...itemsBySession,\n [sessionId]: [...(itemsBySession[sessionId] ?? []), { role: \"system\", text }],\n }));\n }, []);\n\n const reportError = useCallback(\n (message: string) => {\n pushSystem(`error: ${message}`);\n onErrorRef.current?.(message);\n setLocalBusy(false);\n setSubmittedRun(null);\n },\n [pushSystem],\n );\n\n const reportAuxiliaryError = useCallback((scope: string, error: unknown): void => {\n const message = error instanceof Error ? error.message : String(error);\n onErrorRef.current?.(`${scope}: ${message}`);\n }, []);\n\n const refreshJobs = useCallback(async (): Promise<void> => {\n const client = clientRef.current;\n const sessionId = activeSessionIdRef.current;\n const generation = ++jobGenerationRef.current;\n if (!client || !sessionId) {\n const idle: JobRemoteState = { status: \"idle\", jobs: [] };\n jobStateRef.current = idle;\n setJobState(idle);\n return;\n }\n\n jobsAbortRef.current?.abort();\n const controller = new AbortController();\n jobsAbortRef.current = controller;\n setJobState((current) => {\n const next = beginJobList(current);\n jobStateRef.current = next;\n return next;\n });\n\n try {\n const response = await client.jobs.list({\n sessionId,\n includeFinished: true,\n limit: 100,\n signal: controller.signal,\n });\n if (activeSessionIdRef.current !== sessionId || jobGenerationRef.current !== generation) return;\n const validated = validateJobSnapshots(response, sessionId);\n if (validated.error) {\n const validationError = validated.error;\n const now = Date.now();\n setJobState((current) => {\n const next: JobRemoteState = validated.jobs.length > 0\n ? {\n ...resolveJobList(validated.jobs, now, current),\n status: \"error\",\n error: validationError,\n }\n : rejectJobList(current, validationError);\n jobStateRef.current = next;\n return next;\n });\n reportAuxiliaryError(\"Jobs\", validationError);\n } else {\n const next = resolveJobList(validated.jobs, Date.now(), jobStateRef.current);\n jobStateRef.current = next;\n setJobState(next);\n }\n } catch (error) {\n if (controller.signal.aborted) return;\n if (activeSessionIdRef.current !== sessionId || jobGenerationRef.current !== generation) return;\n const message = error instanceof Error ? error.message : String(error);\n setJobState((current) => {\n const next = rejectJobList(current, message);\n jobStateRef.current = next;\n return next;\n });\n reportAuxiliaryError(\"Jobs\", message);\n } finally {\n if (jobsAbortRef.current === controller) jobsAbortRef.current = null;\n }\n }, [reportAuxiliaryError]);\n\n const loadJobDetail = useCallback(async (\n client: Pick<VykorClient, \"jobs\">,\n sessionId: string,\n jobId: string,\n ): Promise<void> => {\n const generation = ++jobDetailGenerationRef.current;\n jobDetailAbortRef.current?.abort();\n const controller = new AbortController();\n jobDetailAbortRef.current = controller;\n const current = jobDetailStateRef.current;\n const previous = current.status !== \"idle\" && current.jobId === jobId\n ? current.status === \"ready\"\n ? current.result\n : current.previous\n : undefined;\n const loading: JobDetailRemoteState = {\n status: \"loading\",\n jobId,\n ...(previous ? { previous } : {}),\n };\n jobDetailStateRef.current = loading;\n setJobDetailState(loading);\n\n try {\n const response = await client.jobs.read(jobId, {\n sessionId,\n signal: controller.signal,\n });\n if (activeSessionIdRef.current !== sessionId || jobDetailGenerationRef.current !== generation) return;\n const validated = validateJobReadResult(response, sessionId, jobId);\n if (!validated.result) {\n throw new Error(validated.error ?? `Job read response for \"${jobId}\" has invalid fields.`);\n }\n const result = validated.result;\n const readyState: JobDetailRemoteState = {\n status: \"ready\",\n jobId,\n result,\n refreshedAt: Date.now(),\n };\n jobDetailStateRef.current = readyState;\n setJobDetailState(readyState);\n } catch (error) {\n if (controller.signal.aborted) return;\n if (activeSessionIdRef.current !== sessionId || jobDetailGenerationRef.current !== generation) return;\n const message = error instanceof Error ? error.message : String(error);\n const errorState: JobDetailRemoteState = {\n status: \"error\",\n jobId,\n error: message,\n ...(previous ? { previous } : {}),\n };\n jobDetailStateRef.current = errorState;\n setJobDetailState(errorState);\n reportAuxiliaryError(\"Jobs\", message);\n } finally {\n if (jobDetailAbortRef.current === controller) jobDetailAbortRef.current = null;\n }\n }, [reportAuxiliaryError]);\n\n const loadModels = useCallback(async (): Promise<ModelProviderInfo[]> => {\n const client = clientRef.current;\n if (!client) return [];\n return await client.providers.listModels();\n }, []);\n\n const refreshSettings = useCallback(async (): Promise<void> => {\n const client = clientRef.current;\n if (!client) return;\n const settings = await client.system.getSettings();\n setShowReasoning(settings.showReasoning === true);\n }, []);\n\n const cacheFirstRead = useCallback(\n (request: PresentationReadRequest): void => {\n const cached = presentationCacheRef.current[request.key];\n showDisplayRequest({\n key: request.key,\n title: request.title,\n content: cached?.content ?? PRESENTATION_LOADING_TEXT,\n });\n\n void request\n .load()\n .then((content) => {\n presentationCacheRef.current = {\n ...presentationCacheRef.current,\n [request.key]: {\n title: request.title,\n content,\n updatedAt: Date.now(),\n },\n };\n if (displayRequestRef.current?.key !== request.key) return;\n showDisplayRequest({\n key: request.key,\n title: request.title,\n content,\n });\n })\n .catch((error) => {\n const message = error instanceof Error ? error.message : String(error);\n const content = cached ? `${cached.content}\\n\\nRefresh failed: ${message}` : `Failed to load ${request.title}: ${message}`;\n if (displayRequestRef.current?.key !== request.key) return;\n showDisplayRequest({\n key: request.key,\n title: request.title,\n content,\n });\n });\n },\n [showDisplayRequest],\n );\n\n const clearPendingClientState = useCallback(() => {\n if (pendingClientStateTimerRef.current) {\n clearTimeout(pendingClientStateTimerRef.current);\n pendingClientStateTimerRef.current = null;\n }\n pendingClientStateRef.current = null;\n }, []);\n\n const commitClientState = useCallback(\n (state: VykorClientState, coalesce: boolean) => {\n if (!coalesce) {\n clearPendingClientState();\n setClientState(state);\n return;\n }\n\n pendingClientStateRef.current = state;\n if (pendingClientStateTimerRef.current) return;\n pendingClientStateTimerRef.current = setTimeout(() => {\n pendingClientStateTimerRef.current = null;\n const pending = pendingClientStateRef.current;\n pendingClientStateRef.current = null;\n if (pending) setClientState(pending);\n }, LIVE_TEXT_DELTA_FLUSH_MS);\n },\n [clearPendingClientState],\n );\n\n useEffect(() => clearPendingClientState, [clearPendingClientState]);\n\n const activateSession = useCallback(\n (session: SessionRecord): void => {\n const runtime = readSessionRuntimeConfig(session, defaultRuntimeRef.current);\n activeSessionIdRef.current = session.id;\n setActiveSessionId(session.id);\n clearAuxiliaryState();\n setStatus((current) => ({\n ...current,\n model: runtime.model,\n ...(runtime.provider ? { provider: runtime.provider } : {}),\n session_id: session.id,\n cwd: session.cwd,\n permission_mode: typeof runtime.permissionMode === \"string\" ? runtime.permissionMode : current.permission_mode,\n ...(typeof runtime.maxTurns === \"number\" ? { max_turns: runtime.maxTurns } : {}),\n session_mode: statusSessionMode(runtime.sessionMode),\n }));\n },\n [clearAuxiliaryState],\n );\n\n const returnToHome = useCallback(\n (title?: string): void => {\n pendingNewSessionTitleRef.current = title?.trim() || undefined;\n activeSessionIdRef.current = undefined;\n setActiveSessionId(undefined);\n clearAuxiliaryState();\n setLocalBusy(false);\n setSubmittedRun(null);\n setSelectRequest(null);\n clearDisplayRequest();\n setModal(null);\n setStatus((current) => {\n const next = { ...current };\n delete next.session_id;\n next.model = defaultRuntimeRef.current.model;\n if (defaultRuntimeRef.current.provider) next.provider = defaultRuntimeRef.current.provider;\n else delete next.provider;\n next.session_mode = nextSessionModeRef.current;\n return next;\n });\n },\n [clearAuxiliaryState, clearDisplayRequest],\n );\n\n useEffect(() => {\n if (!daemon?.url) {\n setReady(true);\n reportError(\"Daemon URL is required for TUI. Launch with `vk` or `vk --tui` so the CLI can start or attach the daemon.\");\n return;\n }\n let cancelled = false;\n const client = createDaemonClient(daemon);\n if (!client) return;\n clientRef.current = client;\n\n void (async () => {\n try {\n await client.protocol.health();\n const cwd = daemon.cwd ?? process.cwd();\n const [settings, sessions, commands] = await Promise.all([\n client.system.getSettings().catch(() => ({}) as Record<string, unknown>),\n client.sessions.list({ cwd, limit: 20 }),\n client.system.listCommands({ cwd }).catch(() => [] as CommandCatalogEntry[]),\n ]);\n const model = daemon.model ?? stringSetting(settings.model) ?? \"default\";\n setShowReasoning(settings.showReasoning === true);\n const provider = stringSetting(settings.provider);\n const baseUrl = stringSetting(settings.baseUrl);\n const apiFormat = settings.apiFormat === \"anthropic\" || settings.apiFormat === \"openai\" ? settings.apiFormat : undefined;\n defaultRuntimeRef.current = {\n model,\n ...(provider ? { provider } : {}),\n ...(baseUrl ? { baseUrl } : {}),\n ...(apiFormat ? { apiFormat } : {}),\n };\n if (cancelled) return;\n listedSessionsRef.current = Object.fromEntries(sessions.map((session) => [session.id, session]));\n setCommandCatalog(commands);\n setStatus((current) => ({\n ...current,\n model,\n ...(provider ? { provider } : {}),\n cwd,\n permission_mode: daemon?.permissionMode ?? current.permission_mode,\n ...(typeof daemon?.maxTurns === \"number\" ? { max_turns: daemon.maxTurns } : {}),\n session_mode: statusSessionMode(daemon?.sessionMode),\n }));\n const session = sessions[0];\n if (session && shouldAutoActivateSession(session, model, daemon?.pluginsEnabled)) {\n activateSession(session);\n void client.sessions.get(session.id).catch(() => {});\n }\n setReady(true);\n } catch (error) {\n if (cancelled) return;\n setReady(true);\n reportError(error instanceof Error ? error.message : String(error));\n }\n })();\n\n return () => {\n cancelled = true;\n clientRef.current = null;\n };\n }, [activateSession, daemon?.cwd, daemon?.maxTurns, daemon?.model, daemon?.permissionMode, daemon?.pluginsEnabled, daemon?.sessionMode, daemon?.token, daemon?.url, reportError]);\n\n useEffect(() => {\n const client = clientRef.current;\n if (!client || !activeSessionId) return;\n const generation = ++syncGenerationRef.current;\n let reconnectNotice = false;\n\n const controller = new SessionSyncController({\n client,\n sessionId: activeSessionId,\n generation,\n onUpdate: (update, gen) => {\n if (gen !== syncGenerationRef.current) return;\n if (update.source === \"reconnecting\") {\n if (!reconnectNotice) {\n reconnectNotice = true;\n pushSystem(\"reconnecting...\");\n }\n return;\n }\n if (reconnectNotice) reconnectNotice = false;\n commitClientState(update.state, shouldCoalesceClientState(update));\n },\n onError: (error, gen) => {\n if (gen !== syncGenerationRef.current) return;\n reportError(error instanceof Error ? error.message : String(error));\n },\n });\n\n void controller.start();\n\n return () => {\n clearPendingClientState();\n controller.abort();\n };\n }, [\n activeSessionId,\n clearPendingClientState,\n commitClientState,\n daemon?.token,\n daemon?.url,\n pushSystem,\n reportError,\n ]);\n\n useEffect(() => {\n const client = clientRef.current;\n const sessionId = activeSessionId;\n if (!client || !sessionId) return;\n const generation = ++auxiliaryGenerationRef.current;\n mcpAbortRef.current?.abort();\n const controller = new AbortController();\n mcpAbortRef.current = controller;\n const isCurrent = () => activeSessionIdRef.current === sessionId && auxiliaryGenerationRef.current === generation;\n\n void client.system.getSessionMcp(sessionId, { signal: controller.signal })\n .then((servers) => {\n if (!isCurrent()) return;\n setMcpServers(Array.isArray(servers) ? servers.map(mcpServerSnapshot) : []);\n })\n .catch((error) => {\n if (controller.signal.aborted) return;\n if (!isCurrent()) return;\n setMcpServers([]);\n reportAuxiliaryError(\"MCP\", error);\n })\n .finally(() => {\n if (mcpAbortRef.current === controller) mcpAbortRef.current = null;\n });\n\n return () => {\n controller.abort();\n };\n }, [activeSessionId, reportAuxiliaryError]);\n\n useEffect(() => {\n jobDetailGenerationRef.current += 1;\n jobDetailAbortRef.current?.abort();\n jobDetailAbortRef.current = null;\n const idle: JobDetailRemoteState = { status: \"idle\" };\n jobDetailStateRef.current = idle;\n setJobDetailState(idle);\n void refreshJobs();\n return () => {\n jobsAbortRef.current?.abort();\n };\n }, [activeSessionId, refreshJobs]);\n\n useEffect(() => {\n const pending = firstPendingPermission(clientState, activeSessionId);\n if (!pending) {\n shownPermissionIdRef.current = undefined;\n if (modal?.kind === \"permission\") setModal(null);\n return;\n }\n if (shownPermissionIdRef.current === pending.id) return;\n shownPermissionIdRef.current = pending.id;\n setModal(permissionToModal(pending));\n }, [activeSessionId, clientState, modal?.kind]);\n\n const running = hasActiveRun(clientState, activeSessionId);\n useEffect(() => {\n if (!submittedRun) return;\n const run = clientState.buckets[submittedRun.sessionId]?.runs[submittedRun.runId];\n if (!run || run.status === \"pending\" || run.status === \"running\") return;\n void refreshJobs();\n if (run.status === \"failed\") {\n reportError(run.error ?? \"Agent run failed\");\n return;\n }\n setSubmittedRun(null);\n }, [clientState, refreshJobs, reportError, submittedRun]);\n\n const createAndSwitchSession = useCallback(\n async (title?: string): Promise<SessionRecord | undefined> => {\n const client = clientRef.current;\n if (!client) return undefined;\n setLocalBusy(true);\n const cwd = daemon?.cwd ?? process.cwd();\n const model = defaultRuntimeRef.current.model;\n const metadata = sessionRuntimeMetadata({\n model,\n provider: defaultRuntimeRef.current.provider,\n baseUrl: defaultRuntimeRef.current.baseUrl,\n apiFormat: defaultRuntimeRef.current.apiFormat,\n permissionMode: statusRef.current.permission_mode ?? daemon?.permissionMode ?? \"default\",\n maxTurns: statusRef.current.max_turns ?? daemon?.maxTurns,\n sessionMode: nextSessionModeRef.current,\n pluginsEnabled: daemon?.pluginsEnabled,\n });\n const session = await client.sessions.create({\n cwd,\n model,\n title: title?.trim() || \"TUI\",\n metadata,\n });\n activateSession(session);\n setSelectRequest(null);\n setLocalBusy(false);\n setSubmittedRun(null);\n pendingNewSessionTitleRef.current = undefined;\n return session;\n },\n [activateSession, daemon?.cwd, daemon?.maxTurns, daemon?.model, daemon?.permissionMode, daemon?.pluginsEnabled, daemon?.sessionMode],\n );\n\n useEffect(() => {\n if (!ready || sentInitialPromptRef.current || !config.initial_prompt) return;\n sentInitialPromptRef.current = true;\n const client = clientRef.current;\n if (!client) return;\n setLocalBusy(true);\n void (async () => {\n const session = activeSessionId ? (clientState.sessions[activeSessionId] ?? (await client.sessions.get(activeSessionId))) : await createAndSwitchSession();\n if (!session) {\n setLocalBusy(false);\n return;\n }\n const response = await client.sessions.admitPrompt(session.id, {\n id: createPromptRequestId(),\n items: [{ type: \"text\", text: config.initial_prompt! }],\n });\n setLocalBusy(false);\n setSubmittedRun(response.run ? { sessionId: session.id, runId: response.run.id } : null);\n })().catch((error) => reportError(error instanceof Error ? error.message : String(error)));\n }, [activeSessionId, clientState.sessions, config.initial_prompt, createAndSwitchSession, ready, reportError]);\n\n const sendRequest = useCallback(\n (action: TuiAction): void => {\n executeTuiAction(action, {\n clientRef,\n activeSessionIdRef,\n clientState,\n setClientState,\n daemon,\n defaultRuntimeRef,\n nextSessionModeRef,\n statusRef,\n setStatus,\n setStatusAndDefault,\n listedSessionsRef,\n commandCatalogRef,\n pendingNewSessionTitleRef,\n localBusy,\n setLocalBusy,\n setSubmittedRun,\n setModal,\n setSelectRequest,\n clearDisplayRequest,\n showDisplayRequest,\n pushSystem,\n reportError,\n reportAuxiliaryError,\n activateSession,\n returnToHome,\n refreshJobs,\n refreshSettings,\n loadJobDetail,\n createAndSwitchSession,\n cacheFirstRead,\n jobStateRef,\n setJobState,\n jobDetailStateRef,\n jobControlGenerationRef,\n jobDetailGenerationRef,\n jobControlAbortRef,\n }).catch((error) => {\n reportError(error instanceof Error ? error.message : String(error));\n });\n },\n [activateSession, cacheFirstRead, clearDisplayRequest, clientState, createAndSwitchSession, daemon, loadJobDetail, localBusy, pushSystem, refreshJobs, refreshSettings, reportAuxiliaryError, reportError, returnToHome, setStatusAndDefault, showDisplayRequest],\n );\n\n const bucket = activeSessionId ? clientState.buckets[activeSessionId] : undefined;\n const latestRun = useMemo(() => Object.values(bucket?.runs ?? {}).sort((a, b) => b.updatedAt - a.updatedAt)[0], [bucket]);\n const knownUsage = useMemo(() => {\n const attempts = Object.values(bucket?.attempts ?? {}).filter((attempt) => attempt.runId === latestRun?.id);\n return {\n inputTokens: attempts.reduce((sum, attempt) => sum + (attempt.inputTokens ?? 0), 0),\n outputTokens: attempts.reduce((sum, attempt) => sum + (attempt.outputTokens ?? 0), 0),\n };\n }, [bucket, latestRun]);\n const recoveryItems = useMemo(\n () =>\n recoverableInterruptedRuns(bucket).map((run) => ({\n id: `recovery:${run.id}`,\n role: \"system\" as const,\n text: `Run interrupted${run.error ? `: ${run.error}` : \"\"}\\nUse /resume ${run.id} to replay its original prompt.`,\n })),\n [bucket],\n );\n const transcriptView = useMemo(() => {\n const base = splitStreamingAssistant(bucketToTranscript(bucket, { showReasoning }));\n return {\n transcript: [...base.items, ...recoveryItems, ...(activeSessionId ? (systemItemsBySession[activeSessionId] ?? []) : globalSystemItems)],\n assistantBuffer: base.assistantBuffer,\n };\n }, [activeSessionId, bucket, globalSystemItems, recoveryItems, showReasoning, systemItemsBySession]);\n const submittedRunRecord = submittedRun ? clientState.buckets[submittedRun.sessionId]?.runs[submittedRun.runId] : undefined;\n const waitingForSubmittedRun = !!submittedRun && (!submittedRunRecord || submittedRunRecord.status === \"pending\" || submittedRunRecord.status === \"running\");\n const commandDetails = useMemo(() => mergeCommandDetails(commandCatalog), [commandCatalog]);\n const commands = useMemo(() => commandDetails.map((entry) => entry.name), [commandDetails]);\n\n return useMemo(\n () => ({\n transcript: transcriptView.transcript,\n assistantBuffer: transcriptView.assistantBuffer,\n retry: selectSessionModelRetry(bucket),\n usage: latestRun ? readSessionModelUsage(latestRun.metadata) : undefined,\n knownUsage,\n status,\n jobState,\n jobs: jobState.jobs,\n jobDetailState,\n commands,\n commandDetails,\n mcpServers,\n modal,\n selectRequest,\n displayRequest,\n busy: localBusy || running || waitingForSubmittedRun,\n ready,\n setModal,\n setSelectRequest,\n setDisplayRequest,\n setBusy: setLocalBusy,\n loadModels,\n sendRequest,\n }),\n [bucket, commandDetails, commands, displayRequest, jobDetailState, jobState, knownUsage, latestRun, loadModels, localBusy, mcpServers, modal, ready, running, selectRequest, sendRequest, status, transcriptView, waitingForSubmittedRun],\n );\n}\n",
71
73
  "// ─── 列表/视口 ────────────────────────────────────────────────────────────────\n/** 补全浮窗(命令 / 文件)和 DialogSelect 的最大可见行数 */\nexport const AC_VISIBLE_ITEMS = 10;\n\n// ─── 上限 ────────────────────────────────────────────────────────────────────\n/** 输入历史保留条数 */\nexport const HISTORY_LIMIT = 100;\n/** Swarm 通知队列保留条数(slice tail) */\nexport const SWARM_NOTIFICATION_TAIL = 20;\n\n// ─── 计时器 ──────────────────────────────────────────────────────────────────\n/** 双击 Esc 取消:第一次 Esc 后提示的显示时长 (ms) */\nexport const ESC_HINT_TIMEOUT_MS = 2000;\n/** Spinner 动画帧间隔 (ms) */\nexport const SPINNER_INTERVAL_MS = 100;\n\n// ─── 布局 ────────────────────────────────────────────────────────────────────\n/** 终端宽度达到此值时自动展开 Sidebar */\nexport const SIDEBAR_AUTO_OPEN_WIDTH = 110;\n/** Footer cwd 缩略最大字符数 */\nexport const CWD_DISPLAY_MAX_LEN = 40;\n\n// ─── 显示格式 ─────────────────────────────────────────────────────────────────\n/** Token 计数超过此值时显示为 \"Nk\" */\nexport const TOKEN_K_THRESHOLD = 1000;\n/** 多行输入框最大行高 */\nexport const TEXTAREA_MAX_LINES = 6;\n/** Minimum prompt textarea rows; keeps the prompt chrome from jumping on single-line edits. */\nexport const TEXTAREA_MIN_LINES = 2;\n",
72
74
  "import { useEffect, useRef, useState } from \"react\";\nimport { ESC_HINT_TIMEOUT_MS } from \"../ui/constants\";\n\n/**\n * 双击 Esc 取消运行中的对话(对齐 opencode)。\n *\n * 第一次按 Esc 在 2s 内显示提示(escHint=true),期间再按 Esc 触发 onInterrupt;\n * 超时或对话结束(busy→false)自动复位。调用方在全局键盘处理里转发 Esc 到 handleEscape。\n *\n * @param busy 当前是否有运行中的对话\n * @param onInterrupt 第二次 Esc 时的中断回调(通常向后端发 interrupt 请求)\n */\nexport function useEscToCancel(busy: boolean, onInterrupt: () => void) {\n const [escHint, setEscHint] = useState(false);\n const escHintRef = useRef(false);\n const escTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // 对话结束即复位,避免提示残留到下一轮。\n useEffect(() => {\n if (!busy) {\n if (escTimerRef.current) clearTimeout(escTimerRef.current);\n escTimerRef.current = null;\n escHintRef.current = false;\n setEscHint(false);\n }\n }, [busy]);\n\n const handleEscape = (): void => {\n if (escHintRef.current) {\n // 第二次 Esc — 中断\n if (escTimerRef.current) clearTimeout(escTimerRef.current);\n escTimerRef.current = null;\n escHintRef.current = false;\n setEscHint(false);\n onInterrupt();\n } else {\n // 第一次 Esc — 显示提示 2s\n escHintRef.current = true;\n setEscHint(true);\n escTimerRef.current = setTimeout(() => {\n escHintRef.current = false;\n setEscHint(false);\n escTimerRef.current = null;\n }, ESC_HINT_TIMEOUT_MS);\n }\n };\n\n return { escHint, handleEscape };\n}\n",
73
75
  "import type { UiNode } from \"../types/ui\";\nimport { createContext, useContext, useState } from \"react\";\nimport { type ThemeConfig, BUILTIN_THEMES, defaultTheme, getTheme } from \"./builtinThemes\";\n\nexport type { ThemeConfig };\n\ntype ThemeContextValue = {\n theme: ThemeConfig;\n setThemeName: (name: string) => void;\n};\n\nconst ThemeContext = createContext<ThemeContextValue>({\n theme: defaultTheme,\n setThemeName: () => undefined,\n});\n\nexport function ThemeProvider({\n children,\n initialTheme = \"default\",\n}: {\n children: UiNode;\n initialTheme?: string;\n}) {\n const [theme, setTheme] = useState<ThemeConfig>(() => getTheme(initialTheme));\n\n const setThemeName = (name: string): void => {\n const resolved = BUILTIN_THEMES[name] ?? defaultTheme;\n setTheme(resolved);\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setThemeName }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme(): ThemeContextValue {\n return useContext(ThemeContext);\n}\n",
@@ -106,7 +108,7 @@
106
108
  "/**\n * TUI 前端入口(进程 B,Bun 运行时)。配置经 VYKOR_FRONTEND_CONFIG 注入;\n * daemon 主线由 useServerSync attach。\n * 详见 docs/tui-flow.md 与 docs/client-sync-flow.md。\n */\nimport { getTheme } from \"./theme/builtinThemes\";\nimport { assertSupportedTuiRuntime } from \"./runtime\";\nimport type { FrontendConfig } from \"./types\";\n\nconst rawConfig = process.env.VYKOR_FRONTEND_CONFIG;\nlet config: FrontendConfig;\ntry {\n const parsed = rawConfig ? JSON.parse(rawConfig) : {};\n config = {\n daemon: parsed.daemon ?? (\n process.env.VYKOR_DAEMON_URL\n ? {\n url: process.env.VYKOR_DAEMON_URL,\n token: process.env.VYKOR_DAEMON_TOKEN ?? null,\n cwd: process.env.VYKOR_DAEMON_CWD ?? null,\n model: process.env.VYKOR_DAEMON_MODEL ?? null,\n }\n : null\n ),\n initial_prompt: parsed.initial_prompt ?? process.env.VYKOR_INITIAL_PROMPT ?? null,\n theme: parsed.theme ?? process.env.VYKOR_THEME ?? \"default\",\n version: parsed.version ?? null,\n };\n} catch {\n config = { daemon: null, theme: \"default\" };\n}\n\ntry {\n // OpenTUI 默认 backgroundColor 为 transparent,会透出终端配色;启动时铺上主题底色。\n // Run before importing OpenTUI because its native DLL can crash an unsupported Bun.\n assertSupportedTuiRuntime();\n const [{ createCliRenderer }, { createElement, createRoot }, { App }] = await Promise.all([\n import(\"@opentui/core\"),\n import(\"@opentui/react\"),\n import(\"./App\"),\n ]);\n const initialBg = getTheme(String(config.theme ?? \"default\")).colors.background;\n const renderer = await createCliRenderer({\n exitOnCtrlC: false,\n backgroundColor: initialBg,\n onDestroy: () => process.exit(process.exitCode ?? 0),\n });\n renderer.setTerminalTitle(\"Vykor\");\n createRoot(renderer).render(createElement(App, { config }));\n} catch (err) {\n console.error(\"[vykor] 终端渲染器初始化失败(需要 Bun + 支持的平台):\", err);\n process.exit(1);\n}\n",
107
109
  "export const MIN_WINDOWS_BUN_VERSION = \"1.3.12\";\n\ntype RuntimeInfo = {\n platform: string;\n bunVersion: string | null;\n};\n\nfunction compareVersions(left: string, right: string): number {\n const leftParts = left.split(\".\").map((part) => Number.parseInt(part, 10) || 0);\n const rightParts = right.split(\".\").map((part) => Number.parseInt(part, 10) || 0);\n const length = Math.max(leftParts.length, rightParts.length);\n\n for (let index = 0; index < length; index += 1) {\n const difference = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);\n if (difference !== 0) return difference;\n }\n\n return 0;\n}\n\nexport function assertSupportedTuiRuntime(runtime: RuntimeInfo = {\n platform: process.platform,\n bunVersion: typeof Bun === \"undefined\" ? null : Bun.version,\n}): void {\n if (runtime.platform !== \"win32\" || runtime.bunVersion === null) return;\n\n if (compareVersions(runtime.bunVersion, MIN_WINDOWS_BUN_VERSION) < 0) {\n throw new Error(\n `Windows TUI requires Bun ${MIN_WINDOWS_BUN_VERSION} or newer; found ${runtime.bunVersion}. Run: bun upgrade`,\n );\n }\n}\n"
108
110
  ],
109
- "mappings": "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",
110
- "debugId": "537416DD1422091A64756E2164756E21",
111
+ "mappings": "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",
112
+ "debugId": "2470C0D4380CA1BA64756E2164756E21",
111
113
  "names": []
112
114
  }