@rzx/ohs 1.2.24 → 1.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/frontend/index.js +297 -189
- package/dist/frontend/index.js.map +20 -19
- package/dist/index.js +8371 -7323
- package/dist/index.js.map +102 -89
- package/dist/migrations/0009_exotic_owl.sql +29 -0
- package/dist/migrations/0010_tool_results.sql +13 -0
- package/dist/migrations/meta/0009_snapshot.json +4136 -0
- package/dist/migrations/meta/0010_snapshot.json +4048 -0
- package/dist/migrations/meta/_journal.json +15 -1
- package/package.json +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../frontend/src/theme/builtinThemes.ts", "../../../../packages/domain-contracts/src/sessions/records.ts", "../../../../packages/domain-contracts/src/sessions/model-metadata.ts", "../../../../packages/protocol/src/session/session.ts", "../../../../packages/domain-contracts/src/validation-error.ts", "../../../../packages/domain-contracts/src/sessions/runtime-config.ts", "../../../../packages/domain-contracts/src/inputs/items.ts", "../../../../packages/domain-contracts/src/inputs/validation.ts", "../../../../packages/domain-contracts/src/inputs/metadata.ts", "../../../../packages/domain-contracts/src/inputs/index.ts", "../../../../packages/protocol/src/serialization/serialization.ts", "../../../../packages/protocol/src/runtime/runtime-config.ts", "../../../../packages/json-data/src/json.ts", "../../../../packages/plugin-contracts/src/manifest/limits.ts", "../../../../packages/plugin-contracts/src/runtime/runtime-data.ts", "../../../../packages/domain-contracts/src/plugin-apps/records.ts", "../../../../packages/domain-contracts/src/plugin-apps/limits.ts", "../../../../packages/domain-contracts/src/plugin-apps/history.ts", "../../../../packages/domain-contracts/src/plugin-apps/validation.ts", "../../../../packages/domain-contracts/src/plugin-apps/index.ts", "../../../../packages/protocol/src/extensions/plugin-apps.ts", "../../../../packages/protocol/src/requests/requests.ts", "../../../../packages/protocol/src/channels/channel.ts", "../../../../packages/domain-contracts/src/attachments/validation.ts", "../../../../packages/domain-contracts/src/attachments/index.ts", "../../../../packages/protocol/src/attachments/attachment.ts", "../../../../packages/protocol/src/runtime/capabilities.ts", "../../../../packages/protocol/src/session/session-input-items.ts", "../../../../packages/domain-contracts/src/goals/validation.ts", "../../../../packages/domain-contracts/src/goals/index.ts", "../../../../packages/protocol/src/requests/domain-validation.ts", "../../../../packages/protocol/src/session/session-goals.ts", "../../../../packages/protocol/src/extensions/mcp-oauth.ts", "../../../../packages/domain-contracts/src/approvals/auto-review.ts", "../../../../packages/protocol/src/permissions/auto-review.ts", "../../../../packages/protocol/src/runtime/execution-observability.ts", "../../../../packages/domain-contracts/src/workspace-changes/index.ts", "../../../../packages/protocol/src/workspace-changes.ts", "../../../../packages/domain-contracts/src/notes/validation.ts", "../../../../packages/domain-contracts/src/notes/index.ts", "../../../../packages/protocol/src/knowledge/notes.ts", "../../../../packages/protocol/src/attachments/office.ts", "../../../../packages/protocol/src/extensions/plugin-marketplace.ts", "../../../../packages/protocol/src/serialization/json.ts", "../../../../packages/protocol/src/extensions/plugin-ui-history.ts", "../../../../packages/agent-contracts/src/tools/tool-data.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/resources/plugins/plugin-app-resource.ts", "../../../../packages/client/src/protocol/index.ts", "../../../../packages/client/src/resources/configuration/system-resource.ts", "../../../../packages/client/src/resources/configuration/provider-resource.ts", "../../../../packages/client/src/resources/configuration/auth-resource.ts", "../../../../packages/client/src/resources/workspace/project-resource.ts", "../../../../packages/client/src/resources/plugins/plugin-resource.ts", "../../../../packages/client/src/resources/plugins/plugin-ui-history-resource.ts", "../../../../packages/client/src/resources/runtime/development-resource.ts", "../../../../packages/client/src/resources/session/session-resource.ts", "../../../../packages/client/src/resources/session/attachment-resource.ts", "../../../../packages/client/src/resources/configuration/permission-resource.ts", "../../../../packages/client/src/resources/workspace/schedule-resource.ts", "../../../../packages/client/src/resources/workspace/note-resource.ts", "../../../../packages/client/src/resources/runtime/job-resource.ts", "../../../../packages/client/src/resources/runtime/terminal-resource.ts", "../../../../packages/client/src/resources/workspace/channel-resource.ts", "../../../../packages/client/src/resources/session/event-resource.ts", "../../../../packages/client/src/resources/configuration/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/configuration/runtime-configuration.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/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/services/status.ts", "../../../frontend/src/routes/session/Sidebar.tsx", "../../../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/domain-contracts/src/sessions/records.ts", "../../../../packages/domain-contracts/src/sessions/model-metadata.ts", "../../../../packages/protocol/src/session/session.ts", "../../../../packages/domain-contracts/src/validation-error.ts", "../../../../packages/domain-contracts/src/sessions/runtime-config.ts", "../../../../packages/domain-contracts/src/inputs/items.ts", "../../../../packages/domain-contracts/src/inputs/validation.ts", "../../../../packages/domain-contracts/src/inputs/metadata.ts", "../../../../packages/domain-contracts/src/inputs/index.ts", "../../../../packages/protocol/src/serialization/serialization.ts", "../../../../packages/protocol/src/runtime/runtime-config.ts", "../../../../packages/json-data/src/json.ts", "../../../../packages/plugin-contracts/src/manifest/limits.ts", "../../../../packages/plugin-contracts/src/runtime/runtime-data.ts", "../../../../packages/domain-contracts/src/plugin-apps/records.ts", "../../../../packages/domain-contracts/src/plugin-apps/limits.ts", "../../../../packages/domain-contracts/src/plugin-apps/history.ts", "../../../../packages/domain-contracts/src/plugin-apps/validation.ts", "../../../../packages/domain-contracts/src/plugin-apps/index.ts", "../../../../packages/protocol/src/extensions/plugin-apps.ts", "../../../../packages/protocol/src/requests/requests.ts", "../../../../packages/protocol/src/channels/channel.ts", "../../../../packages/domain-contracts/src/attachments/validation.ts", "../../../../packages/domain-contracts/src/attachments/index.ts", "../../../../packages/protocol/src/attachments/attachment.ts", "../../../../packages/protocol/src/runtime/capabilities.ts", "../../../../packages/protocol/src/session/session-input-items.ts", "../../../../packages/domain-contracts/src/goals/validation.ts", "../../../../packages/domain-contracts/src/goals/index.ts", "../../../../packages/protocol/src/requests/domain-validation.ts", "../../../../packages/protocol/src/session/session-goals.ts", "../../../../packages/protocol/src/extensions/mcp-oauth.ts", "../../../../packages/domain-contracts/src/approvals/auto-review.ts", "../../../../packages/protocol/src/permissions/auto-review.ts", "../../../../packages/protocol/src/runtime/execution-observability.ts", "../../../../packages/domain-contracts/src/workspace-changes/index.ts", "../../../../packages/protocol/src/workspace-changes.ts", "../../../../packages/domain-contracts/src/notes/validation.ts", "../../../../packages/domain-contracts/src/notes/index.ts", "../../../../packages/protocol/src/knowledge/notes.ts", "../../../../packages/protocol/src/attachments/office.ts", "../../../../packages/protocol/src/extensions/plugin-marketplace.ts", "../../../../packages/protocol/src/serialization/json.ts", "../../../../packages/protocol/src/extensions/plugin-ui-history.ts", "../../../../packages/agent-contracts/src/tools/tool-data.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/resources/plugins/plugin-app-resource.ts", "../../../../packages/client/src/protocol/index.ts", "../../../../packages/client/src/resources/configuration/system-resource.ts", "../../../../packages/client/src/resources/configuration/provider-resource.ts", "../../../../packages/client/src/resources/configuration/auth-resource.ts", "../../../../packages/client/src/resources/workspace/project-resource.ts", "../../../../packages/client/src/resources/plugins/plugin-resource.ts", "../../../../packages/client/src/resources/plugins/plugin-ui-history-resource.ts", "../../../../packages/client/src/resources/runtime/development-resource.ts", "../../../../packages/client/src/resources/session/session-resource.ts", "../../../../packages/client/src/resources/session/attachment-resource.ts", "../../../../packages/client/src/resources/configuration/permission-resource.ts", "../../../../packages/client/src/resources/workspace/schedule-resource.ts", "../../../../packages/client/src/resources/workspace/note-resource.ts", "../../../../packages/client/src/resources/runtime/job-resource.ts", "../../../../packages/client/src/resources/runtime/terminal-resource.ts", "../../../../packages/client/src/resources/workspace/channel-resource.ts", "../../../../packages/client/src/resources/session/event-resource.ts", "../../../../packages/client/src/resources/configuration/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/configuration/runtime-configuration.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/services/status.ts", "../../../frontend/src/routes/session/Sidebar.tsx", "../../../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
|
"/**\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\nimport type { AttachmentIntent, SessionInputAttachmentRecord } from \"../attachments/records.js\";\nimport type { SessionUserInputItem } from \"../inputs/items.js\";\n",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"import type { ApprovalMode, WorkMode } from \"@vykor/agent-contracts/permissions\";\nimport { DomainValidationError } from \"../validation-error.js\";\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 approvalMode?: ApprovalMode;\n workMode?: WorkMode;\n maxTurns?: number;\n effort?: string;\n sessionMode?: \"direct\" | \"coordinator\";\n systemPrompt?: string;\n allowedTools?: string[];\n disallowedTools?: string[];\n pluginsEnabled?: boolean;\n pluginAutoSelectionEnabled?: boolean;\n};\n\nexport type SessionRuntimeConfigPatch = Partial<SessionRuntimeConfig>;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\n\nfunction numberValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\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 DomainValidationError(\"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 \"approvalMode\": valid = value === \"ask\" || value === \"auto_review\" || value === \"full_access\"; break;\n case \"workMode\": valid = (value === \"execute\" || value === \"plan\"); 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\": case \"pluginAutoSelectionEnabled\":\n 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 DomainValidationError(`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 DomainValidationError(\n \"metadata.runtimeRevision must be a non-negative safe integer\",\n \"metadata.runtimeRevision\",\n );\n }\n return revision;\n}\n",
|
|
11
11
|
"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\n\nimport type { AttachmentIntent } from \"../attachments/records.js\";\nexport interface PromptAttachment { assetId: string; intent?: AttachmentIntent; displayName?: string }\n",
|
|
12
12
|
"import { SESSION_INPUT_LIMITS, type SessionUserInputItem, type SkillSource, type PromptAttachment } from \"./items.js\";\nimport type { AttachmentIntent } from \"../attachments/records.js\";\nimport { DomainValidationError } from \"../validation-error.js\";\nexport { DomainValidationError } from \"../validation-error.js\";\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 DomainValidationError(\"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 DomainValidationError(\"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 DomainValidationError(\"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 DomainValidationError(\"invalid_skill_source\")\n }\n }\n\n if (skillCount > SESSION_INPUT_LIMITS.maxSkills) throw new DomainValidationError(\"skill_item_limit_exceeded\")\n if (textBytes > SESSION_INPUT_LIMITS.maxTextBytes) throw new DomainValidationError(\"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 DomainValidationError(`invalid_${field}`)\n}\n\nfunction assertValidText(value: string): void {\n if (typeof value !== \"string\" || TEXT_CONTROL_CHARACTER_PATTERN.test(value)) throw new DomainValidationError(\"invalid_text\")\n}\n\nfunction assertMaximumLength(value: string, maximum: number, field: string): void {\n if (value.length > maximum) throw new DomainValidationError(`${field}_limit_exceeded`)\n}\n\nfunction isSkillSource(value: string): value is SkillSource {\n return value === \"bundled\" || value === \"user\" || value === \"project\" || value === \"plugin\"\n}\n\ntype JsonRecord = Record<string, unknown>;\nexport function parseSessionInputItems(value: unknown): SessionUserInputItem[] {\n if (!Array.isArray(value)) {\n throw new DomainValidationError(\"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 DomainValidationError(`${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 DomainValidationError(\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 DomainValidationError(\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 DomainValidationError(\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 DomainValidationError(\n `${field}.type is invalid`,\n `${field}.type`,\n );\n }\n if (typeof item.name !== \"string\" || typeof item.path !== \"string\") {\n throw new DomainValidationError(\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 DomainValidationError(\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 DomainValidationError(\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 if (!(error instanceof DomainValidationError)) throw error;\n throw new DomainValidationError(\n error instanceof DomainValidationError ? error.message : \"items are invalid\",\n \"items\",\n );\n }\n}\n\nexport function parsePromptAttachments(\n value: unknown,\n): PromptAttachment[] {\n if (value === undefined) return [];\n if (!Array.isArray(value)) {\n throw new DomainValidationError(\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 DomainValidationError(`${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 DomainValidationError(\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 DomainValidationError(\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 DomainValidationError(\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",
|
|
13
|
-
"import { DomainValidationError } from \"../validation-error.js\";\n/** Ordinary Prompt inputs cannot claim host-created UI instances or action Runs. */\nexport function withoutHostPluginMetadata(metadata: Record<string, unknown>): Record<string, unknown> {\n const { pluginUi: _ui, uiAction: _action, pluginUiSubmission: _submission,\n pluginAppAction: _appAction, pluginAppSubmission: _appSubmission, pluginAppSource: _appSource, ...ordinary } = metadata;\n return ordinary;\n}\n\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\", \"pluginAppAction\", \"pluginAppSubmission\", \"pluginAppSource\"]) {\n if (Object.hasOwn(metadata, name)) {\n const field = `${namespace}.${name}`;\n throw new DomainValidationError(\n `${field} is reserved for the host`,\n field,\n );\n }\n }\n }\n}\n",
|
|
13
|
+
"import { DomainValidationError } from \"../validation-error.js\";\n/** Ordinary Prompt inputs cannot claim host-created UI instances or action Runs. */\nexport function withoutHostPluginMetadata(metadata: Record<string, unknown>): Record<string, unknown> {\n const { pluginUi: _ui, uiAction: _action, pluginUiSubmission: _submission,\n pluginAppAction: _appAction, pluginAppSubmission: _appSubmission, pluginAppSource: _appSource, ...ordinary } = metadata;\n return ordinary;\n}\n\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 if (Object.hasOwn(metadata, \"outputSchema\")) {\n const field = `${namespace}.outputSchema`;\n throw new DomainValidationError(`${field} is a stored snapshot; use explicit outputSchema`, field);\n }\n for (const name of [\"pluginUi\", \"uiAction\", \"pluginUiSubmission\", \"pluginAppAction\", \"pluginAppSubmission\", \"pluginAppSource\"]) {\n if (Object.hasOwn(metadata, name)) {\n const field = `${namespace}.${name}`;\n throw new DomainValidationError(\n `${field} is reserved for the host`,\n field,\n );\n }\n }\n }\n}\n",
|
|
14
14
|
"export * from \"./items.js\";\nexport * from \"./validation.js\";\nexport * from \"./metadata.js\";\n",
|
|
15
|
-
"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/session.js\";\nimport type { AttachmentIntent } from \"../attachments/attachment.js\";\nimport type { JobReadResult, JobSnapshot, JobWaitResult } from \"../runtime/job.js\";\nimport type {\n TerminalEvent,\n TerminalReadResult,\n TerminalSessionInfo,\n TerminalWaitResult,\n} from \"../runtime/terminal.js\";\nimport type { ProtocolError } from \"../requests/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",
|
|
15
|
+
"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/session.js\";\nimport type { AttachmentIntent } from \"../attachments/attachment.js\";\nimport type { JobReadResult, JobSnapshot, JobWaitResult, JobTarget, JobListResult, JobInputReceipt } from \"../runtime/job.js\";\nimport type {\n TerminalEvent,\n TerminalReadResult,\n TerminalSessionInfo,\n TerminalWaitResult,\n} from \"../runtime/terminal.js\";\nimport type { ProtocolError } from \"../requests/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 decodeJobTarget(value: unknown): JobTarget {\n const target = object(value, \"jobTarget\");\n const kind = enumField(target, \"kind\", \"jobTarget\", [\"terminal\", \"shell\", \"agent\", \"dream\", \"workflow\"] as const);\n if (!stringField(target, \"jobId\", \"jobTarget\").trim()) throw new ProtocolDataError(\"jobTarget.jobId is required\", \"jobTarget.jobId\");\n if (kind === \"agent\" && !stringField(target, \"runId\", \"jobTarget\").trim()) throw new ProtocolDataError(\"jobTarget.runId is required\", \"jobTarget.runId\");\n return target as unknown as JobTarget;\n}\n\nexport function decodeJobInputReceipt(value: unknown): JobInputReceipt {\n const receipt = object(value, \"jobInputReceipt\");\n for (const field of [\"sessionId\", \"inputId\", \"runId\"] as const) {\n if (!stringField(receipt, field, \"jobInputReceipt\").trim()) throw new ProtocolDataError(`jobInputReceipt.${field} is required`, `jobInputReceipt.${field}`);\n }\n return receipt as unknown as JobInputReceipt;\n}\n\nexport function decodeJobListResult(value: unknown): JobListResult {\n const result = object(value, \"jobListResult\");\n if (!Array.isArray(result.jobs) || !Array.isArray(result.errors)) throw new ProtocolDataError(\"Jobs list requires jobs and errors arrays\", \"jobListResult\");\n result.jobs.forEach(decodeJobSnapshot);\n for (const error of result.errors) {\n const item = object(error, \"jobListResult.errors\");\n enumField(item, \"kind\", \"jobListResult.errors\", [\"terminal\", \"shell\", \"agent\", \"dream\", \"workflow\"] as const);\n stringField(item, \"message\", \"jobListResult.errors\");\n }\n return result as unknown as JobListResult;\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 const target = decodeJobTarget(job.target);\n if (target.kind !== job.kind || target.jobId !== job.id) throw new ProtocolDataError(\"job target does not match snapshot\", \"job.target\");\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",
|
|
16
16
|
"export type { SessionApiFormat, SessionRuntimeConfig, SessionRuntimeConfigPatch } from \"@vykor/domain-contracts/sessions/runtime-config\";\nimport { readRuntimeMetadata as domainReadRuntimeMetadata, readSessionRuntimeRevision as domainReadSessionRuntimeRevision } from \"@vykor/domain-contracts/sessions/runtime-config\";\nimport { DomainValidationError } from \"@vykor/domain-contracts/inputs\";\nimport { ProtocolDataError } from \"../serialization/serialization.js\";\nfunction adaptRuntimeData<T>(work: () => T): T { try { return work(); } catch (error) { if (error instanceof DomainValidationError) throw new ProtocolDataError(error.message, error.field); throw error; } }\nexport function readRuntimeMetadata(metadata: Record<string, unknown> | undefined): Record<string, unknown> { return adaptRuntimeData(() => domainReadRuntimeMetadata(metadata)); }\nexport function readSessionRuntimeRevision(metadata: Record<string, unknown> | undefined): number { return adaptRuntimeData(() => domainReadSessionRuntimeRevision(metadata)); }\n",
|
|
17
17
|
"export type JsonValue =\n | null\n | boolean\n | number\n | string\n | JsonValue[]\n | { [key: string]: JsonValue };\n\nexport function isJsonObject(\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\n/** Reject the whole payload; no data or identifiers are truncated. */\nexport function isJsonRecord(\n value: unknown,\n byteLimit: number,\n): value is Record<string, JsonValue> {\n return validateJsonRecord(value, byteLimit).valid;\n}\n\n/** Stable failure reasons for request boundaries; serialization and byte counting happen once. */\nexport function validateJsonRecord(\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 (!isJsonObject(value)) return { valid: false, reason: \"invalid_json\" };\n try {\n if (\n new TextEncoder().encode(stringifyCanonicalJson(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\n/** JSON with deterministic object-key order, including numeric and literal prototype keys. */\nexport function stringifyCanonicalJson(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(\"Finite requires JSON data\");\n if (depth >= 20)\n throw new Error(\"Finite 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(\"Finite 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\nexport class JsonCopyError extends Error {\n constructor(readonly reason: \"invalid_limit\" | \"too_large\" | \"invalid_json\") {\n super(reason);\n this.name = \"JsonCopyError\";\n }\n}\n\n/** Copy finite, plain JSON without invoking accessors/toJSON or retaining input aliases. */\nexport function copyBoundedJson(value: unknown, options: { maxBytes: number; maxDepth: number }): JsonValue {\n const { maxBytes, maxDepth } = options;\n const ancestors = new Set<object>();\n let budget = maxBytes;\n const spend = (text: string): void => {\n budget -= new TextEncoder().encode(text).byteLength;\n if (budget < 0) throw new JsonCopyError(\"too_large\");\n };\n const copy = (item: unknown, depth: number): JsonValue => {\n if (item === null || typeof item === \"boolean\" || typeof item === \"string\" || (typeof item === \"number\" && Number.isFinite(item))) {\n spend(JSON.stringify(item)); return item;\n }\n if (typeof item !== \"object\" || item === null || depth >= maxDepth || ancestors.has(item)) throw new JsonCopyError(\"invalid_json\");\n const array = Array.isArray(item);\n if (!array && Object.getPrototypeOf(item) !== Object.prototype && Object.getPrototypeOf(item) !== null) throw new JsonCopyError(\"invalid_json\");\n const descriptors = Object.getOwnPropertyDescriptors(item);\n if (Object.getOwnPropertySymbols(item).length || Object.values(descriptors).some(descriptor => descriptor.get || descriptor.set)) throw new JsonCopyError(\"invalid_json\");\n ancestors.add(item); spend(array ? \"[]\" : \"{}\");\n try {\n if (array) {\n const result: JsonValue[] = [];\n if (Object.keys(item).length !== item.length) throw new JsonCopyError(\"invalid_json\");\n for (let index = 0; index < item.length; index++) {\n if (index) spend(\",\"); result.push(copy(descriptors[index]!.value, depth + 1));\n }\n return result;\n }\n const result: Record<string, JsonValue> = {};\n let count = 0;\n for (const key of Object.keys(item).sort()) {\n if (count++) spend(\",\"); spend(`${JSON.stringify(key)}:`);\n Object.defineProperty(result, key, { value: copy(descriptors[key]!.value, depth + 1), enumerable: true, writable: true, configurable: true });\n }\n return result;\n } finally { ancestors.delete(item); }\n };\n if (!Number.isSafeInteger(maxBytes) || maxBytes < 0 || !Number.isSafeInteger(maxDepth) || maxDepth < 0) throw new JsonCopyError(\"invalid_limit\");\n return copy(value, 0);\n}\n",
|
|
18
18
|
"/** Fixed authoring and transport hard limits; these do not grant runtime authority. */\nexport const PLUGIN_APP_MANIFEST_LIMITS = Object.freeze({\n manifestCount: 8, manifestBytes: 256 * 1024, backendCount: 32, surfaceCount: 32,\n});\nexport const PLUGIN_APP_RESOURCE_LIMITS = Object.freeze({ htmlBytes: 16 * 1024 * 1024, resourceBytes: 8 * 1024 * 1024 });\nexport const PLUGIN_APP_DATA_LIMITS = Object.freeze({ maxArgsBytes: 64 * 1024 * 1024, jsonDepth: 32 });\nexport interface PluginAppResourceLimits { htmlBytes: number; resourceBytes: number }\n",
|
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
"import { PLUGIN_APP_DATA_LIMITS } from \"@vykor/plugin-contracts/limits\";\nimport { copyPluginAppJson, PluginAppDataError, type PluginAppJson } from \"@vykor/plugin-contracts/runtime-data\";\nimport type { PluginAppRuntimeLease } from \"@vykor/plugin-contracts/runtime\";\nimport { PLUGIN_APP_INPUT_LIMITS } from \"./limits.js\";\nimport type { PluginAppSource } from \"./records.js\";\n\nexport interface PluginAppInvokeInput {\n requestId: string;\n expectedRevision: number;\n toolName: string;\n args: Record<string, PluginAppJson>;\n}\nexport interface PluginAppToolInput extends PluginAppInvokeInput { source: PluginAppSource; lease: PluginAppRuntimeLease }\nexport interface OpenPluginAppInput { pluginId: string; surfaceId: string }\nexport interface ClosePluginAppInput { expectedRevision: number }\nexport interface PluginAppConversationInput {\n source: PluginAppSource; lease: PluginAppRuntimeLease; requestId: string; expectedRevision: number;\n text: string; data: PluginAppJson;\n}\n\nexport type ValidationResult<T> = { ok: true; value: T } | { ok: false; code: string; field?: string };\nclass InputError extends Error { constructor(readonly code: string) { super(code); } }\nfunction validate<T>(parse: (value: unknown) => T, value: unknown): ValidationResult<T> {\n try { return { ok: true, value: parse(value) }; }\n catch (error) {\n if (error instanceof InputError || error instanceof PluginAppDataError) return { ok: false, code: error.code };\n throw error;\n }\n}\nexport function validatePluginAppSource(value: unknown): ValidationResult<PluginAppSource> { return validate(parsePluginAppSource, value); }\nexport function validateOpenPluginAppInput(value: unknown): ValidationResult<OpenPluginAppInput> { return validate(parseOpenPluginAppInput, value); }\nexport function validateClosePluginAppInput(value: unknown): ValidationResult<ClosePluginAppInput> { return validate(parseClosePluginAppInput, value); }\nexport function validatePluginAppToolInput(value: unknown): ValidationResult<PluginAppToolInput> { return validate(parsePluginAppToolInput, value); }\nexport function validatePluginAppConversationInput(value: unknown): ValidationResult<PluginAppConversationInput> { return validate(parsePluginAppConversationInput, value); }\nexport function validatePluginAppComposerContexts(value: unknown): ValidationResult<PluginAppConversationInput[]> { return validate(parsePluginAppComposerContexts, value); }\nfunction parsePluginAppConversationInput(value: unknown): PluginAppConversationInput {\n const input = record(copyPluginAppJson(value, PLUGIN_APP_INPUT_LIMITS.handoffBytes + 32 * 1024));\n fields(input, [\"source\", \"lease\", \"requestId\", \"expectedRevision\", \"text\", \"data\"]);\n const lease = record(input.lease); fields(lease, [\"token\", \"backendGeneration\"]);\n if (typeof input.text !== \"string\" || [...input.text].length > PLUGIN_APP_INPUT_LIMITS.messageCharacters || !input.text.trim())\n throw new InputError(\"plugin_app_invalid_message\");\n return { source: parsePluginAppSource(input.source), lease: { token: identifier(lease.token), backendGeneration: identifier(lease.backendGeneration) },\n requestId: identifier(input.requestId), expectedRevision: revision(input.expectedRevision), text: input.text,\n data: copyPluginAppJson(input.data, PLUGIN_APP_INPUT_LIMITS.handoffBytes) };\n}\n\nfunction record(value: unknown): Record<string, PluginAppJson> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) throw new InputError(\"plugin_app_invalid_request\");\n return value as Record<string, PluginAppJson>;\n}\nfunction fields(value: Record<string, PluginAppJson>, names: string[]): void {\n if (Object.keys(value).length !== names.length || names.some(name => !Object.hasOwn(value, name))) throw new InputError(\"plugin_app_invalid_request\");\n}\nfunction identifier(value: unknown): string {\n if (typeof value !== \"string\" || !value.trim() || value.length > 1024) throw new InputError(\"plugin_app_invalid_request\");\n return value;\n}\nfunction revision(value: unknown): number {\n if (!Number.isSafeInteger(value) || (value as number) < 0) throw new InputError(\"plugin_app_invalid_request\");\n return value as number;\n}\nfunction parsePluginAppSource(value: unknown): PluginAppSource {\n const input = record(copyPluginAppJson(value, 4096)); fields(input, [\"sessionId\", \"appId\"]);\n return { sessionId: identifier(input.sessionId), appId: identifier(input.appId) };\n}\nfunction parseOpenPluginAppInput(value: unknown): OpenPluginAppInput {\n const input = record(copyPluginAppJson(value, 4096)); fields(input, [\"pluginId\", \"surfaceId\"]);\n return { pluginId: identifier(input.pluginId), surfaceId: identifier(input.surfaceId) };\n}\nfunction parseClosePluginAppInput(value: unknown): ClosePluginAppInput {\n const input = record(copyPluginAppJson(value, 1024)); fields(input, [\"expectedRevision\"]);\n return { expectedRevision: revision(input.expectedRevision) };\n}\nfunction parsePluginAppToolInput(value: unknown): PluginAppToolInput {\n const input = record(copyPluginAppJson(value, PLUGIN_APP_DATA_LIMITS.maxArgsBytes + 16 * 1024));\n fields(input, [\"requestId\", \"expectedRevision\", \"toolName\", \"args\", \"source\", \"lease\"]);\n const lease = record(input.lease); fields(lease, [\"token\", \"backendGeneration\"]);\n const args = record(copyPluginAppJson(input.args, PLUGIN_APP_DATA_LIMITS.maxArgsBytes));\n return { requestId: identifier(input.requestId), expectedRevision: revision(input.expectedRevision), toolName: identifier(input.toolName), args,\n source: parsePluginAppSource(input.source), lease: { token: identifier(lease.token), backendGeneration: identifier(lease.backendGeneration) } };\n}\n\n/** Explicit ordinary-input references. Host credentials never travel through metadata. */\nfunction parsePluginAppComposerContexts(value: unknown): PluginAppConversationInput[] {\n if (!Array.isArray(value) || value.length > PLUGIN_APP_INPUT_LIMITS.maxComposerContexts) throw new InputError(\"plugin_app_invalid_context\");\n return value.map(parsePluginAppConversationInput);\n}\n",
|
|
24
24
|
"export * from \"./records.js\";\nexport * from \"./limits.js\";\nexport * from \"./history.js\";\nexport * from \"./validation.js\";\n",
|
|
25
25
|
"import type { PluginAppRuntimeLease, PluginAppToolDescriptor } from \"@vykor/plugin-contracts/runtime\";\nimport { ProtocolValidationError } from \"../requests/requests.js\";\nimport { validatePluginAppConversationInput, validatePluginAppSource, validateOpenPluginAppInput, validateClosePluginAppInput,\n validatePluginAppToolInput, validatePluginAppComposerContexts, type PluginAppToolInput, type PluginAppConversationInput,\n type OpenPluginAppInput, type ClosePluginAppInput, type ValidationResult,\n type PluginAppRecord, type PluginAppSource, type PluginAppActionReceipt } from \"@vykor/domain-contracts/plugin-apps\";\n\nexport type { PluginAppResourceDefinition, PluginAppNativeToolDefinition, PluginAppToolPolicyDefinition,\n PluginAppNativeBackendDefinition, PluginAppMcpBackendDefinition, PluginAppBackendDefinition,\n PluginAppSurfaceDefinition, PluginAppManifest, PluginAppBackendKind } from \"@vykor/plugin-contracts/manifest\";\nexport type { PluginAppRuntimeLease, PluginAppToolPolicy, PluginAppToolDescriptor, PluginAppToolOrigin } from \"@vykor/plugin-contracts/runtime\";\nexport type { PluginAppJson } from \"@vykor/plugin-contracts/runtime-data\";\nexport { copyPluginAppJson } from \"@vykor/plugin-contracts/runtime-data\";\nexport type { PluginAppRecord, PluginAppSource, PluginAppOrigin, PluginAppActionMetadata,\n PluginAppActionReceipt, PluginAppSubmissionReceipt, PluginAppExecutionState } from \"@vykor/domain-contracts/plugin-apps\";\nexport { readPluginAppAction } from \"@vykor/domain-contracts/plugin-apps\";\n\nexport type { PluginAppInvokeInput, OpenPluginAppInput, ClosePluginAppInput } from \"@vykor/domain-contracts/plugin-apps\";\nexport interface PluginAppToolRequest extends PluginAppToolInput {}\nexport interface PluginAppAvailability {\n canReadResource: boolean;\n canInvokeTools: boolean;\n canMessage: boolean;\n reason?: \"closed\" | \"revoked\" | \"session-unavailable\" | \"snapshot-changed\" | \"permission-missing\" | \"runtime-unavailable\" | \"action-unconfirmed\";\n}\nexport interface PluginAppResponse { source: PluginAppSource; app: PluginAppRecord; availability: PluginAppAvailability; lease?: PluginAppRuntimeLease; tools?: PluginAppToolDescriptor[] }\nexport interface PluginAppListResponse { apps: PluginAppResponse[] }\nexport interface PluginAppActionResponse {\n receipt: PluginAppActionReceipt;\n result?: import(\"@vykor/agent-contracts/tool-data\").McpCallResultData;\n dataError?: \"plugin_app_invalid_data\" | \"plugin_app_data_too_large\" | \"plugin_app_unsupported_content\" | \"plugin_app_result_unavailable\";\n}\nexport interface PluginAppConversationRequest extends PluginAppConversationInput {}\n\nfunction parsed<T>(result: ValidationResult<T>): T {\n if (!result.ok) throw new ProtocolValidationError(result.code, result.field, result.code);\n return result.value;\n}\nexport function parsePluginAppConversationRequest(value: unknown): PluginAppConversationRequest { return parsed(validatePluginAppConversationInput(value)); }\nexport function parsePluginAppSource(value: unknown): PluginAppSource { return parsed(validatePluginAppSource(value)); }\nexport function parseOpenPluginAppInput(value: unknown): OpenPluginAppInput { return parsed(validateOpenPluginAppInput(value)); }\nexport function parseClosePluginAppInput(value: unknown): ClosePluginAppInput { return parsed(validateClosePluginAppInput(value)); }\nexport function parsePluginAppToolRequest(value: unknown): PluginAppToolRequest { return parsed(validatePluginAppToolInput(value)); }\nexport function parsePluginAppComposerContexts(value: unknown): PluginAppConversationRequest[] { return parsed(validatePluginAppComposerContexts(value)); }\n/** A synchronous admission failure, not a missing receipt or an execution-state estimate. */\nexport interface PluginAppAdmissionRejection {\n code: \"plugin_app_not_accepted\";\n reason?: \"busy\";\n kind: \"tool\" | \"message\";\n source: PluginAppSource;\n requestId: string;\n expectedRevision: number;\n}\n\nexport function isPluginAppAdmissionRejection(value: unknown, kind: \"tool\" | \"message\",\n request: { source: PluginAppSource; requestId: string; expectedRevision: number }): value is PluginAppAdmissionRejection {\n if (!value || typeof value !== \"object\") return false;\n const proof = value as Partial<PluginAppAdmissionRejection>;\n return proof.code === \"plugin_app_not_accepted\" && proof.kind === kind\n && (proof.reason === undefined || proof.reason === \"busy\")\n && proof.source?.sessionId === request.source.sessionId && proof.source?.appId === request.source.appId\n && proof.requestId === request.requestId && proof.expectedRevision === request.expectedRevision;\n}\nexport type PluginAppResourceNotice =\n | { kind: \"resync\"; runtimeEpoch: string }\n | { kind: \"resource-updated\"; runtimeEpoch: string; appId: string; leaseGeneration: number; uri: string };\nexport interface PluginAppResourceWatch {\n source: PluginAppSource;\n lease: PluginAppRuntimeLease;\n leaseGeneration: number;\n uris: string[];\n}\n",
|
|
26
|
-
"import { DomainValidationError, assertPromptMetadataAllowed as domainAssertPromptMetadataAllowed, parseSessionInputItems as domainParseSessionInputItems, parsePromptAttachments as domainParsePromptAttachments } from \"@vykor/domain-contracts/inputs\";\nimport { parsePluginAppComposerContexts } from \"../extensions/plugin-apps.js\";\nimport {\n readRuntimeMetadata,\n} from \"../runtime/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/session.js\";\nimport type { SessionUserInputItem } from \"../session/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 { withoutHostPluginMetadata } from \"@vykor/domain-contracts/inputs\";\n\nexport function assertPromptMetadataAllowed(input: { metadata?: unknown; runMetadata?: unknown }): void { adaptDomainInput(() => domainAssertPromptMetadataAllowed(input)); }\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: { ...rawMetadata, runtime: { ...runtime, 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 ...(body.pluginAppContexts !== undefined ? { pluginAppContexts: parsePluginAppComposerContexts(body.pluginAppContexts) } : {}),\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[] { return adaptDomainInput(() => domainParseSessionInputItems(value)); }\n\nexport function parsePromptAttachments(value: unknown): AdmitPromptAttachmentInput[] { return adaptDomainInput(() => domainParsePromptAttachments(value)); }\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\nfunction adaptDomainInput<T>(read: () => T): T { try { return read(); } catch(error) { if (error instanceof DomainValidationError) throw new ProtocolValidationError(error.message, error.field, error.reason); throw error; } }\n",
|
|
26
|
+
"import { DomainValidationError, assertPromptMetadataAllowed as domainAssertPromptMetadataAllowed, parseSessionInputItems as domainParseSessionInputItems, parsePromptAttachments as domainParsePromptAttachments } from \"@vykor/domain-contracts/inputs\";\nimport { parsePluginAppComposerContexts } from \"../extensions/plugin-apps.js\";\nimport {\n readRuntimeMetadata,\n} from \"../runtime/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/session.js\";\nimport type { SessionUserInputItem } from \"../session/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 { withoutHostPluginMetadata } from \"@vykor/domain-contracts/inputs\";\n\nexport function assertPromptMetadataAllowed(input: { metadata?: unknown; runMetadata?: unknown }): void { adaptDomainInput(() => domainAssertPromptMetadataAllowed(input)); }\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: { ...rawMetadata, runtime: { ...runtime, 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 outputSchema = optionalRecord(body, \"outputSchema\");\n const metadata = optionalRecord(body, \"metadata\");\n const attachments = parsePromptAttachments(body.attachments);\n return {\n ...(body.pluginAppContexts !== undefined ? { pluginAppContexts: parsePluginAppComposerContexts(body.pluginAppContexts) } : {}),\n items: parsePromptItems(body),\n attachments,\n ...(id !== undefined ? { id } : {}),\n ...(delivery !== undefined ? { delivery } : {}),\n ...(outputSchema !== undefined ? { outputSchema } : {}),\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[] { return adaptDomainInput(() => domainParseSessionInputItems(value)); }\n\nexport function parsePromptAttachments(value: unknown): AdmitPromptAttachmentInput[] { return adaptDomainInput(() => domainParsePromptAttachments(value)); }\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\nfunction adaptDomainInput<T>(read: () => T): T { try { return read(); } catch(error) { if (error instanceof DomainValidationError) throw new ProtocolValidationError(error.message, error.field, error.reason); throw error; } }\n",
|
|
27
27
|
"export * from \"@vykor/domain-contracts/channels\";\nimport type { ExternalConversationRecord, ChannelDeliveryRecord, ChannelDeliveryStatus } from \"@vykor/domain-contracts/channels\";\nexport interface DurableChannelMessageInput {\n connector: string;\n accountId: string;\n workspaceId?: string;\n chatId: string;\n threadId?: string;\n externalMessageId: string;\n senderId: string;\n content: string;\n cwd: string;\n model: string;\n metadata?: Record<string, unknown>;\n platformMeta?: Record<string, unknown>;\n}\n\nexport interface DurableChannelMessageResult {\n conversation: ExternalConversationRecord;\n delivery: ChannelDeliveryRecord;\n duplicate: boolean;\n}\n\nexport interface RecordChannelDeliveryInput {\n status: Extract<ChannelDeliveryStatus, \"sent\" | \"failed\" | \"unknown\">;\n externalDeliveryId?: string;\n error?: string;\n}\n\nexport interface ChannelStatusSnapshot {\n conversations: ExternalConversationRecord[];\n deliveries: ChannelDeliveryRecord[];\n}\n\nexport function parseDurableChannelMessageInput(\n value: unknown,\n): DurableChannelMessageInput {\n const row = record(value);\n const platformMeta = optionalObject(row, \"platformMeta\");\n return {\n connector: required(row, \"connector\"),\n accountId: required(row, \"accountId\"),\n ...(optional(row, \"workspaceId\") ? { workspaceId: optional(row, \"workspaceId\") } : {}),\n chatId: required(row, \"chatId\"),\n ...(optional(row, \"threadId\") ? { threadId: optional(row, \"threadId\") } : {}),\n externalMessageId: required(row, \"externalMessageId\"),\n senderId: required(row, \"senderId\"),\n content: required(row, \"content\"),\n cwd: required(row, \"cwd\"),\n model: required(row, \"model\"),\n ...(row.metadata !== undefined\n ? { metadata: record(row.metadata, \"metadata\") }\n : {}),\n ...(platformMeta ? { platformMeta } : {}),\n };\n}\n\nexport function parseRecordChannelDeliveryInput(\n value: unknown,\n): RecordChannelDeliveryInput {\n const row = record(value);\n if (row.status !== \"sent\" && row.status !== \"failed\" && row.status !== \"unknown\") {\n throw new Error(\"status must be sent, failed or unknown\");\n }\n return {\n status: row.status,\n ...(optional(row, \"externalDeliveryId\")\n ? { externalDeliveryId: optional(row, \"externalDeliveryId\") }\n : {}),\n ...(optional(row, \"error\") ? { error: optional(row, \"error\") } : {}),\n };\n}\n\nfunction record(value: unknown, field = \"request body\"): 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\nfunction required(row: Record<string, unknown>, field: string): string {\n const value = optional(row, field);\n if (!value) throw new Error(`${field} is required`);\n return value;\n}\n\nfunction optional(row: Record<string, unknown>, field: string): string | undefined {\n const value = row[field];\n if (value === undefined || value === null) return undefined;\n if (typeof value !== \"string\") throw new Error(`${field} must be a string`);\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\n/**\n * 只接受非空普通对象;undefined 视为缺失,null/数组/标量抛错。\n * 空对象按缺失处理。\n */\nfunction optionalObject(\n row: Record<string, unknown>,\n field: string,\n): Record<string, unknown> | undefined {\n const value = row[field];\n if (value === undefined) return undefined;\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(`${field} must be an object`);\n }\n const object = value as Record<string, unknown>;\n return Object.keys(object).length > 0 ? object : undefined;\n}\n",
|
|
28
28
|
"import type { AttachmentLimits, AttachmentAssetRecord, ChatResourceSource } from \"./records.js\";\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",
|
|
29
29
|
"export * from \"./records.js\";\nexport * from \"./validation.js\";\nexport * from \"./media-types.js\";\n",
|
|
30
30
|
"export { type AttachmentAssetStatus, type AttachmentIntent, type AttachmentRepresentationStatus, type AttachmentRepresentationKind, type ChatResourceSource, type AttachmentAssetRecord, type SessionInputAttachmentRecord, type AttachmentRepresentationRecord, type AttachmentLimits, parseAttachmentLimits, parseAttachmentAssetRecord, parseChatResourceSource } from \"@vykor/domain-contracts/attachments\";\n",
|
|
31
|
-
"import { parseAttachmentLimits, type AttachmentLimits } from \"../attachments/attachment.js\";\n\nexport const CURRENT_PROTOCOL_VERSION =
|
|
31
|
+
"import { parseAttachmentLimits, type AttachmentLimits } from \"../attachments/attachment.js\";\n\nexport const CURRENT_PROTOCOL_VERSION = 7;\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",
|
|
32
32
|
"export { SESSION_INPUT_LIMITS, type SkillSource, type PluginCatalogEntry, type PluginCapabilityRef, type PluginAgentRef, type SessionUserInputItem, validateSessionUserInputItems, normalizeSessionUserInputItems, sessionUserInputText } from \"@vykor/domain-contracts/inputs\";\n",
|
|
33
33
|
"import type { CreateSessionGoalInput, UpdateSessionGoalInput, GoalActionInput, GoalUpdateInput } from \"./records.js\";\nimport { MAX_GOAL_AUTO_TURNS, MAX_GOAL_OBJECTIVE_CHARS } from \"./records.js\";\nimport { parsePromptAttachments, parseSessionInputItems } from \"../inputs/validation.js\";\nimport { DomainValidationError } from \"../validation-error.js\";\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\" && record.action !== \"cancel_resume\") {\n throw new DomainValidationError(\"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 DomainValidationError(\"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 DomainValidationError(\"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 DomainValidationError(`invalid_goal_${field}`, field);\n}\n\nfunction goalRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) throw new DomainValidationError(\"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 DomainValidationError(`invalid_goal_${field}`, field);\n const normalized = value.trim();\n if (normalized.length > max) throw new DomainValidationError(`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 DomainValidationError(`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 DomainValidationError(`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 DomainValidationError(`invalid_goal_${field}`, field);\n return value as number;\n}\n",
|
|
34
34
|
"export * from \"./records.js\";\nexport * from \"./validation.js\";\n",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"import type { MarketplaceInstallInput, MarketplaceSelection, MarketplaceSource } from \"@vykor/plugin-contracts/marketplace\";\nimport { ProtocolValidationError } from \"../requests/requests.js\";\n\n// Capability data keeps its canonical owner; HTTP envelopes and parsing live here.\nexport interface MarketplaceCatalogRequest { cwd: string; refresh?: boolean }\nexport interface MarketplaceSourcesResponse { sources: MarketplaceSource[] }\nexport interface MarketplaceAddSourceRequest { url: string }\nexport interface MarketplaceSourceEnabledRequest { enabled: boolean }\nexport interface MarketplacePreviewRequest extends MarketplaceSelection {}\nexport interface MarketplaceInstallRequest extends MarketplaceInstallInput {}\nexport interface MarketplaceCancelRequest { candidateId: string }\nexport interface MarketplaceCancelResponse { cancelled: true }\n\nfunction record(value: unknown, keys: string[]): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) throw new ProtocolValidationError(\"Request must be a JSON object\");\n for (const key of Object.keys(value)) if (!keys.includes(key)) throw new ProtocolValidationError(\"Unknown marketplace field\", key);\n return value as Record<string, unknown>;\n}\nfunction text(value: unknown, field: string): string {\n if (typeof value !== \"string\" || !value.trim() || value.length > 4096) throw new ProtocolValidationError(`${field} is required or too long`, field);\n return value;\n}\nexport function parseMarketplaceCatalogRequest(value: unknown): MarketplaceCatalogRequest {\n const body = record(value, [\"cwd\", \"refresh\"]);\n const refresh = body.refresh;\n if (refresh !== undefined && typeof refresh !== \"boolean\" && refresh !== \"true\" && refresh !== \"false\")\n throw new ProtocolValidationError(\"refresh must be a boolean\", \"refresh\");\n return { cwd: text(body.cwd, \"cwd\"), ...(refresh === undefined ? {} : { refresh: refresh === true || refresh === \"true\" }) };\n}\nexport function parseMarketplaceAddSourceRequest(value: unknown): MarketplaceAddSourceRequest {\n const body = record(value, [\"url\"]);\n return { url: text(body.url, \"url\") };\n}\nexport function parseMarketplaceSourceEnabledRequest(value: unknown): MarketplaceSourceEnabledRequest {\n const body = record(value, [\"enabled\"]);\n if (typeof body.enabled !== \"boolean\") throw new ProtocolValidationError(\"enabled must be a boolean\", \"enabled\");\n return { enabled: body.enabled };\n}\nexport function parseMarketplacePreviewRequest(value: unknown): MarketplacePreviewRequest {\n const body = record(value, [\"cwd\", \"sourceId\", \"pluginId\", \"version\"]);\n return { cwd: text(body.cwd, \"cwd\"), sourceId: text(body.sourceId, \"sourceId\"),\n pluginId: text(body.pluginId, \"pluginId\"), version: text(body.version, \"version\") };\n}\nexport function parseMarketplaceCancelRequest(value: unknown): MarketplaceCancelRequest {\n const body = record(value, [\"candidateId\"]);\n return { candidateId: text(body.candidateId, \"candidateId\") };\n}\nexport function parseMarketplaceInstallRequest(value: unknown): MarketplaceInstallRequest {\n const body = record(value, [\"cwd\", \"candidateId\", \"operationId\", \"approvedPermissions\", \"allowSourceChange\"]);\n if (!Array.isArray(body.approvedPermissions) || body.approvedPermissions.length > 256\n || body.approvedPermissions.some(item => typeof item !== \"string\" || item.length > 4096))\n throw new ProtocolValidationError(\"Invalid plugin permission approval\", \"approvedPermissions\");\n if (body.allowSourceChange !== undefined && typeof body.allowSourceChange !== \"boolean\")\n throw new ProtocolValidationError(\"allowSourceChange must be a boolean\", \"allowSourceChange\");\n return { cwd: text(body.cwd, \"cwd\"), candidateId: text(body.candidateId, \"candidateId\"),\n operationId: text(body.operationId, \"operationId\"), approvedPermissions: [...body.approvedPermissions],\n ...(body.allowSourceChange === undefined ? {} : { allowSourceChange: body.allowSourceChange }) };\n}\n",
|
|
48
48
|
"export type { JsonValue } from \"@vykor/json-data/json\";\nexport { isJsonObject, isJsonRecord, validateJsonRecord, stringifyCanonicalJson } from \"@vykor/json-data/json\";\n\nexport function isUuid(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 isNonnegativeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n",
|
|
49
49
|
"export { type PluginUiInventory, type PluginUiInstanceRecord, type PluginUiActionReceipt, type PluginUiActionResponse, type PluginUiActionRunMetadata, readPluginUiInstance, readPluginUiAction, type PluginUiConversationReceipt, type PluginUiSubmissionRecord } from \"@vykor/domain-contracts/plugin-apps/history\";\nimport { parsePluginUiConversationReceipt as domainConversationReceipt, parsePluginUiSubmissionRecord as domainSubmissionRecord, type PluginUiConversationReceipt, type PluginUiSubmissionRecord } from \"@vykor/domain-contracts/plugin-apps/history\";\nimport { isUuid as isPluginUiUuid } from \"../serialization/json.js\";\nimport { ProtocolValidationError } from \"../requests/requests.js\";\nimport { adaptDomainValidation } from \"../requests/domain-validation.js\";\nexport function parsePluginUiConversationReceipt(value: unknown): PluginUiConversationReceipt { return adaptDomainValidation(() => domainConversationReceipt(value)); }\nexport function parsePluginUiSubmissionRecord(value: unknown): PluginUiSubmissionRecord { return adaptDomainValidation(() => domainSubmissionRecord(value)); }\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",
|
|
50
|
-
"/** A definite result does not imply success or completion of the user's goal. */\nexport type ToolExecutionState = \"not_started\" | \"completed\" | \"unknown\";\n\nexport type ToolFailureKind =\n | \"permission\" | \"policy\" | \"timeout\" | \"command\" | \"transport\"\n | \"provider\" | \"interrupted\" | \"unknown_outcome\"\n | \"invalid_input\" | \"precondition\" | \"authentication\" | \"configuration\";\n\n/** JSON transported to an application; no runtime objects or host execution facts. */\nexport type McpJsonValue = null | boolean | number | string | McpJsonValue[] | McpJsonObject;\nexport interface McpJsonObject { [key: string]: McpJsonValue }\n\nexport interface McpCallResultData {\n content: McpJsonObject[];\n structuredContent?: McpJsonObject;\n _meta?: McpJsonObject;\n isError?: boolean;\n [key: string]: McpJsonValue | undefined;\n}\n\nexport interface McpToolUiMetadata {\n resourceUri?: string;\n visibility: Array<\"model\" | \"app\">;\n}\n\nexport interface McpToolAnnotations {\n title?: string;\n readOnlyHint?: boolean;\n destructiveHint?: boolean;\n idempotentHint?: boolean;\n openWorldHint?: boolean;\n}\n\nexport const MCP_CALL_RESULT_MAX_BYTES = 1024 * 1024;\n\n/** Fixed diagnostic messages never include rejected private response data. */\nexport class McpResultDataError extends Error {\n constructor(message: string) { super(message); this.name = \"McpResultDataError\"; }\n}\n\nfunction object(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\n/** Copy bounded JSON without invoking toJSON/getters or silently dropping fields. */\nexport function parseMcpCallResultData(value: unknown): McpCallResultData {\n const ancestors = new Set<object>();\n let nodes = 0;\n let stringBytes = 0;\n const encoder = new TextEncoder();\n const visit = (item: unknown, depth: number): McpJsonValue => {\n if (++nodes > 100_000 || depth > 32) throw new McpResultDataError(\"MCP result exceeds JSON complexity limit\");\n if (item === null || typeof item === \"boolean\") return item;\n if (typeof item === \"number\" && Number.isFinite(item)) return item;\n if (typeof item === \"string\") {\n stringBytes += encoder.encode(item).byteLength;\n if (stringBytes > MCP_CALL_RESULT_MAX_BYTES) throw new McpResultDataError(\"MCP result exceeds 1 MiB limit\");\n return item;\n }\n if (!item || typeof item !== \"object\" || ancestors.has(item)) throw new McpResultDataError(\"MCP result must contain finite JSON data\");\n const prototype = Object.getPrototypeOf(item);\n if (Array.isArray(item) ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null) {\n throw new McpResultDataError(\"MCP result must contain plain JSON data\");\n }\n ancestors.add(item);\n const entries: Array<[string, McpJsonValue]> = [];\n for (const key of Reflect.ownKeys(item)) {\n if (Array.isArray(item) && key === \"length\") continue;\n const descriptor = Object.getOwnPropertyDescriptor(item, key)!;\n if (typeof key !== \"string\" || !descriptor.enumerable || !(\"value\" in descriptor)) throw new McpResultDataError(\"MCP result must contain plain JSON data\");\n if (Array.isArray(item) && !/^(0|[1-9][0-9]*)$/.test(key)) throw new McpResultDataError(\"MCP result must contain plain JSON arrays\");\n stringBytes += encoder.encode(key).byteLength;\n if (stringBytes > MCP_CALL_RESULT_MAX_BYTES) throw new McpResultDataError(\"MCP result exceeds 1 MiB limit\");\n entries.push([key, visit(descriptor.value, depth + 1)]);\n }\n ancestors.delete(item);\n if (Array.isArray(item)) {\n if (entries.length !== item.length) throw new McpResultDataError(\"MCP result must not contain sparse arrays\");\n return entries.map(([, entry]) => entry);\n }\n return Object.fromEntries(entries);\n };\n const copied = visit(value, 0);\n if (!object(copied) || !Array.isArray(copied.content)\n || !copied.content.every(block => object(block) && typeof block.type === \"string\" && (block.type !== \"text\" || typeof block.text === \"string\"))\n || (copied.structuredContent !== undefined && !object(copied.structuredContent))\n || (copied._meta !== undefined && !object(copied._meta))\n || (copied.isError !== undefined && typeof copied.isError !== \"boolean\")) {\n throw new McpResultDataError(\"Invalid MCP call result shape\");\n }\n if (encoder.encode(JSON.stringify(copied)).byteLength > MCP_CALL_RESULT_MAX_BYTES) throw new McpResultDataError(\"MCP result exceeds 1 MiB limit\");\n return copied as McpCallResultData;\n}\n\n/** Only original text or structured content enters model feedback; never stringify _meta. */\nexport function mcpResultModelText(result: McpCallResultData): string {\n const text = result.content.filter(block => block.type === \"text\" && typeof block.text === \"string\").map(block => block.text as string).join(\"\\n\");\n return text.trim() ? text : result.structuredContent !== undefined ? JSON.stringify(result.structuredContent) : \"(no output)\";\n}\n\n/** Discovery hints describe presentation only and never authorize execution. */\nexport function normalizeMcpToolMetadata(value: unknown): { ui?: McpToolUiMetadata; annotations?: McpToolAnnotations } {\n if (!object(value)) return {};\n const meta = object(value._meta) ? value._meta : undefined;\n let ui: McpToolUiMetadata | undefined;\n if (meta && \"ui\" in meta) {\n if (!object(meta.ui)) throw new McpResultDataError(\"Invalid MCP tool UI metadata\");\n const candidate = meta.ui;\n if (candidate.resourceUri !== undefined && (typeof candidate.resourceUri !== \"string\" || !candidate.resourceUri.startsWith(\"ui://\"))) throw new McpResultDataError(\"Invalid MCP tool UI resource URI\");\n const visibility = candidate.visibility === undefined ? [\"model\", \"app\"] : candidate.visibility;\n if (!Array.isArray(visibility) || visibility.length === 0 || visibility.some(item => item !== \"model\" && item !== \"app\")) throw new McpResultDataError(\"Invalid MCP tool visibility\");\n ui = { ...(typeof candidate.resourceUri === \"string\" ? { resourceUri: candidate.resourceUri } : {}), visibility: [...new Set(visibility)] as Array<\"model\" | \"app\"> };\n }\n let annotations: McpToolAnnotations | undefined;\n if (object(value.annotations)) {\n annotations = {};\n if (typeof value.annotations.title === \"string\") annotations.title = value.annotations.title;\n for (const key of [\"readOnlyHint\", \"destructiveHint\", \"idempotentHint\", \"openWorldHint\"] as const) {\n if (typeof value.annotations[key] === \"boolean\") annotations[key] = value.annotations[key];\n }\n }\n return { ...(ui ? { ui } : {}), ...(annotations ? { annotations } : {}) };\n}\n\n/** Ordinary lists, exports, hooks and imports must use this view, never the durable raw body. */\nexport function publicToolResult(value: unknown): unknown {\n if (!object(value)) return value;\n const { mcpResult: _raw, _meta: _private, appData: _appData, ...rest } = value;\n if (object(rest.metadata)) {\n const { mcpResult: _metadataRaw, _meta: _metadataPrivate, appData: _metadataAppData, ...metadata } = rest.metadata;\n return { ...rest, metadata };\n }\n return rest;\n}\n\n/** Canonical MCP App HTML media type used by resource producers and consumers. */\nexport const MCP_APP_HTML_MIME_TYPE = \"text/html;profile=mcp-app\";\n",
|
|
51
|
-
"export * from \"./session/session.js\";\nexport * from \"./runtime/maintenance.js\";\nexport * from \"./runtime/runtime-config.js\";\nexport type { ApprovalMode, WorkMode } from \"./permissions/approval-mode.js\";\nexport type { ApprovalReviewEvidence, ApprovalReviewInput, ApprovalReviewOutcome, ApprovalReviewRecord, ApprovalReviewResult } from \"./permissions/approval-review.js\";\nexport * from \"./requests/requests.js\";\nexport type { JobCapabilities, JobKind, JobReadResult, JobSnapshot, JobStatus, JobWaitResult } from \"./runtime/job.js\";\nexport type { TerminalCreateRequest, TerminalEvent, TerminalReadRequest, TerminalReadResult, TerminalResizeRequest, TerminalRuntime, TerminalSessionInfo, TerminalSessionStatus, TerminalSignal, TerminalSignalRequest, TerminalScope, TerminalSource, TerminalWaitResult, TerminalWriteRequest } from \"./runtime/terminal.js\";\nexport * from \"./serialization/serialization.js\";\nexport * from \"./channels/channel.js\";\nexport * from \"./channels/channel-runtime.js\";\nexport * from \"./runtime/capabilities.js\";\nexport * from \"./attachments/attachment.js\";\nexport * from \"./session/session-input-items.js\";\nexport * from \"./session/session-goals.js\";\nexport * from \"./extensions/mcp-oauth.js\";\nexport * from \"./runtime/execution-observability.js\";\nexport * from \"./permissions/auto-review.js\";\nexport * from \"./workspace-changes.js\";\nexport * from \"./extensions/plugin-presentation.js\";\nexport type { MarketplaceCatalog, MarketplaceSource, MarketplaceSourceView, MarketplaceEntry, MarketplaceSelection, MarketplacePreview, MarketplaceInstallInput, MarketplaceOperation, MarketplaceProvenance } from \"@vykor/plugin-contracts/marketplace\";\nexport * from \"./knowledge/notes.js\";\nexport * from \"./knowledge/memory.js\";\nexport * from \"./attachments/office.js\";\nexport * from \"./extensions/plugin-apps.js\";\nexport * from \"./extensions/plugin-marketplace.js\";\n\nexport type { JsonValue } from \"./serialization/json.js\";\nexport { isJsonObject, isJsonRecord, isNonnegativeInteger, isUuid, stringifyCanonicalJson, validateJsonRecord } from \"./serialization/json.js\";\nexport * from \"./extensions/plugin-ui-history.js\";\n\n// Canonical tool-result data shared with the HTTP client.\nexport { parseMcpCallResultData, type McpCallResultData } from \"@vykor/agent-contracts/tool-data\";\n\nexport { PLUGIN_APP_MANIFEST_LIMITS, PLUGIN_APP_RESOURCE_LIMITS, PLUGIN_APP_DATA_LIMITS } from \"@vykor/plugin-contracts/limits\";\nexport { PLUGIN_APP_INPUT_LIMITS } from \"@vykor/domain-contracts/plugin-apps\";\nexport { MCP_APP_HTML_MIME_TYPE } from \"@vykor/agent-contracts/tool-data\";\n",
|
|
50
|
+
"export interface TextBlock {\n type: \"text\";\n text: string;\n}\n\nexport interface ImageBlock {\n type: \"image\";\n source: ImageSource;\n}\n\nexport interface ImageSource {\n type: \"file\";\n mediaType: string;\n path: string;\n sizeBytes?: number;\n prepared?: VisionImagePreparationMetadata;\n}\n\nexport interface VisionImagePreparationMetadata {\n mediaType: string;\n width: number;\n height: number;\n base64Bytes: number;\n policyVersion: string;\n}\n\nexport type ContentBlock = TextBlock | ImageBlock;\n/** Opaque handle into an authorized result store; never a filesystem path. */\nexport interface ToolResultRef { id: string; toolName: string; totalChars: number }\nexport interface ToolResultPage { ref: ToolResultRef; text: string; offset: number; nextOffset?: number }\nexport interface ToolResultSearch {\n ref: ToolResultRef;\n matches: Array<{ offset: number; text: string }>;\n nextOffset?: number;\n}\nexport interface ToolResultList { items: ToolResultRef[]; nextOffset?: number }\nexport type { RunToolResultStore } from \"./result-data.js\";\nexport { assertToolResultId, ToolResultAccessError, toolResultBounds, toolResultText, toolResultList, toolResultPage, toolResultSearch } from \"./result-text.js\";\n\nexport interface ToolResult {\n /** Added by the trusted result archive after preserving the original output. */\n resultRef?: ToolResultRef;\n content: ContentBlock[];\n /** Original bounded MCP response; private to the authorized application host. */\n mcpResult?: McpCallResultData;\n isError?: boolean;\n failureKind?: ToolFailureKind;\n executionState?: ToolExecutionState;\n recoveryHint?: string;\n /** Controlled builtin/host summary, at most 1,000 characters; never an instruction. */\n compactSummary?: string;\n /** Set only by checked execution after verifying the captured builtin definition. */\n hostFileFacts?: HostFileFacts;\n metadata?: Record<string, unknown>;\n}\n\n/** File observations emitted by a captured builtin; free metadata is not a trust boundary. */\nexport interface HostFileFacts {\n environmentKey: string;\n executionRoot?: string;\n pathStyle?: \"windows\" | \"posix\";\n files: Array<{\n path: string;\n subjectKey: string;\n operation: \"read\" | \"write\" | \"edit\" | \"patch\";\n beforeDigest?: \"missing\" | `sha256:${string}`;\n afterDigest: \"missing\" | `sha256:${string}`;\n completed: true;\n bodyVisible?: boolean;\n }>;\n}\n\nexport interface ToolExecutionResult extends ToolResult {\n toolUseId: string;\n toolName: string;\n toolAttemptId?: string;\n}\n\n/** A definite result does not imply success or completion of the user's goal. */\nexport type ToolExecutionState = \"not_started\" | \"completed\" | \"unknown\";\n\nexport type ToolFailureKind =\n | \"permission\" | \"policy\" | \"timeout\" | \"command\" | \"transport\"\n | \"provider\" | \"interrupted\" | \"unknown_outcome\"\n | \"invalid_input\" | \"precondition\" | \"authentication\" | \"configuration\";\n\n/** JSON transported to an application; no runtime objects or host execution facts. */\nexport type McpJsonValue = null | boolean | number | string | McpJsonValue[] | McpJsonObject;\nexport interface McpJsonObject { [key: string]: McpJsonValue }\n\nexport interface McpCallResultData {\n content: McpJsonObject[];\n structuredContent?: McpJsonObject;\n _meta?: McpJsonObject;\n isError?: boolean;\n [key: string]: McpJsonValue | undefined;\n}\n\nexport interface McpToolUiMetadata {\n resourceUri?: string;\n visibility: Array<\"model\" | \"app\">;\n}\n\nexport interface McpToolAnnotations {\n title?: string;\n readOnlyHint?: boolean;\n destructiveHint?: boolean;\n idempotentHint?: boolean;\n openWorldHint?: boolean;\n}\n\nexport const MCP_CALL_RESULT_MAX_BYTES = 1024 * 1024;\n\n/** Fixed diagnostic messages never include rejected private response data. */\nexport class McpResultDataError extends Error {\n constructor(message: string) { super(message); this.name = \"McpResultDataError\"; }\n}\n\nfunction object(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\n/** Copy bounded JSON without invoking toJSON/getters or silently dropping fields. */\nexport function parseMcpCallResultData(value: unknown): McpCallResultData {\n const ancestors = new Set<object>();\n let nodes = 0;\n let stringBytes = 0;\n const encoder = new TextEncoder();\n const visit = (item: unknown, depth: number): McpJsonValue => {\n if (++nodes > 100_000 || depth > 32) throw new McpResultDataError(\"MCP result exceeds JSON complexity limit\");\n if (item === null || typeof item === \"boolean\") return item;\n if (typeof item === \"number\" && Number.isFinite(item)) return item;\n if (typeof item === \"string\") {\n stringBytes += encoder.encode(item).byteLength;\n if (stringBytes > MCP_CALL_RESULT_MAX_BYTES) throw new McpResultDataError(\"MCP result exceeds 1 MiB limit\");\n return item;\n }\n if (!item || typeof item !== \"object\" || ancestors.has(item)) throw new McpResultDataError(\"MCP result must contain finite JSON data\");\n const prototype = Object.getPrototypeOf(item);\n if (Array.isArray(item) ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null) {\n throw new McpResultDataError(\"MCP result must contain plain JSON data\");\n }\n ancestors.add(item);\n const entries: Array<[string, McpJsonValue]> = [];\n for (const key of Reflect.ownKeys(item)) {\n if (Array.isArray(item) && key === \"length\") continue;\n const descriptor = Object.getOwnPropertyDescriptor(item, key)!;\n if (typeof key !== \"string\" || !descriptor.enumerable || !(\"value\" in descriptor)) throw new McpResultDataError(\"MCP result must contain plain JSON data\");\n if (Array.isArray(item) && !/^(0|[1-9][0-9]*)$/.test(key)) throw new McpResultDataError(\"MCP result must contain plain JSON arrays\");\n stringBytes += encoder.encode(key).byteLength;\n if (stringBytes > MCP_CALL_RESULT_MAX_BYTES) throw new McpResultDataError(\"MCP result exceeds 1 MiB limit\");\n entries.push([key, visit(descriptor.value, depth + 1)]);\n }\n ancestors.delete(item);\n if (Array.isArray(item)) {\n if (entries.length !== item.length) throw new McpResultDataError(\"MCP result must not contain sparse arrays\");\n return entries.map(([, entry]) => entry);\n }\n return Object.fromEntries(entries);\n };\n const copied = visit(value, 0);\n if (!object(copied) || !Array.isArray(copied.content)\n || !copied.content.every(block => object(block) && typeof block.type === \"string\" && (block.type !== \"text\" || typeof block.text === \"string\"))\n || (copied.structuredContent !== undefined && !object(copied.structuredContent))\n || (copied._meta !== undefined && !object(copied._meta))\n || (copied.isError !== undefined && typeof copied.isError !== \"boolean\")) {\n throw new McpResultDataError(\"Invalid MCP call result shape\");\n }\n if (encoder.encode(JSON.stringify(copied)).byteLength > MCP_CALL_RESULT_MAX_BYTES) throw new McpResultDataError(\"MCP result exceeds 1 MiB limit\");\n return copied as McpCallResultData;\n}\n\n/** Only original text or structured content enters model feedback; never stringify _meta. */\nexport function mcpResultModelText(result: McpCallResultData): string {\n const text = result.content.filter(block => block.type === \"text\" && typeof block.text === \"string\").map(block => block.text as string).join(\"\\n\");\n return text.trim() ? text : result.structuredContent !== undefined ? JSON.stringify(result.structuredContent) : \"(no output)\";\n}\n\n/** Discovery hints describe presentation only and never authorize execution. */\nexport function normalizeMcpToolMetadata(value: unknown): { ui?: McpToolUiMetadata; annotations?: McpToolAnnotations } {\n if (!object(value)) return {};\n const meta = object(value._meta) ? value._meta : undefined;\n let ui: McpToolUiMetadata | undefined;\n if (meta && \"ui\" in meta) {\n if (!object(meta.ui)) throw new McpResultDataError(\"Invalid MCP tool UI metadata\");\n const candidate = meta.ui;\n if (candidate.resourceUri !== undefined && (typeof candidate.resourceUri !== \"string\" || !candidate.resourceUri.startsWith(\"ui://\"))) throw new McpResultDataError(\"Invalid MCP tool UI resource URI\");\n const visibility = candidate.visibility === undefined ? [\"model\", \"app\"] : candidate.visibility;\n if (!Array.isArray(visibility) || visibility.length === 0 || visibility.some(item => item !== \"model\" && item !== \"app\")) throw new McpResultDataError(\"Invalid MCP tool visibility\");\n ui = { ...(typeof candidate.resourceUri === \"string\" ? { resourceUri: candidate.resourceUri } : {}), visibility: [...new Set(visibility)] as Array<\"model\" | \"app\"> };\n }\n let annotations: McpToolAnnotations | undefined;\n if (object(value.annotations)) {\n annotations = {};\n if (typeof value.annotations.title === \"string\") annotations.title = value.annotations.title;\n for (const key of [\"readOnlyHint\", \"destructiveHint\", \"idempotentHint\", \"openWorldHint\"] as const) {\n if (typeof value.annotations[key] === \"boolean\") annotations[key] = value.annotations[key];\n }\n }\n return { ...(ui ? { ui } : {}), ...(annotations ? { annotations } : {}) };\n}\n\n/** Ordinary lists, exports, hooks and imports must use this view, never the durable raw body. */\nexport function publicToolResult(value: unknown): unknown {\n if (!object(value)) return value;\n const { mcpResult: _raw, _meta: _private, appData: _appData, ...rest } = value;\n if (object(rest.metadata)) {\n const { mcpResult: _metadataRaw, _meta: _metadataPrivate, appData: _metadataAppData, ...metadata } = rest.metadata;\n return { ...rest, metadata };\n }\n return rest;\n}\n\n/** Canonical MCP App HTML media type used by resource producers and consumers. */\nexport const MCP_APP_HTML_MIME_TYPE = \"text/html;profile=mcp-app\";\n",
|
|
51
|
+
"export * from \"./session/session.js\";\nexport * from \"./runtime/maintenance.js\";\nexport * from \"./runtime/runtime-config.js\";\nexport type { ApprovalMode, WorkMode } from \"./permissions/approval-mode.js\";\nexport type { ApprovalReviewEvidence, ApprovalReviewInput, ApprovalReviewOutcome, ApprovalReviewRecord, ApprovalReviewResult } from \"./permissions/approval-review.js\";\nexport * from \"./requests/requests.js\";\nexport type { JobCapabilities, JobTarget, JobInputReceipt, JobListResult, JobKind, JobReadResult, JobSnapshot, JobStatus, JobWaitResult } from \"./runtime/job.js\";\nexport type { TerminalCreateRequest, TerminalEvent, TerminalReadRequest, TerminalReadResult, TerminalResizeRequest, TerminalRuntime, TerminalSessionInfo, TerminalSessionStatus, TerminalSignal, TerminalSignalRequest, TerminalScope, TerminalSource, TerminalWaitResult, TerminalWriteRequest } from \"./runtime/terminal.js\";\nexport * from \"./serialization/serialization.js\";\nexport * from \"./channels/channel.js\";\nexport * from \"./channels/channel-runtime.js\";\nexport * from \"./runtime/capabilities.js\";\nexport * from \"./attachments/attachment.js\";\nexport * from \"./session/session-input-items.js\";\nexport * from \"./session/session-goals.js\";\nexport * from \"./extensions/mcp-oauth.js\";\nexport * from \"./runtime/execution-observability.js\";\nexport * from \"./permissions/auto-review.js\";\nexport * from \"./workspace-changes.js\";\nexport * from \"./extensions/plugin-presentation.js\";\nexport type { MarketplaceCatalog, MarketplaceSource, MarketplaceSourceView, MarketplaceEntry, MarketplaceSelection, MarketplacePreview, MarketplaceInstallInput, MarketplaceOperation, MarketplaceProvenance } from \"@vykor/plugin-contracts/marketplace\";\nexport * from \"./knowledge/notes.js\";\nexport * from \"./knowledge/memory.js\";\nexport * from \"./attachments/office.js\";\nexport * from \"./extensions/plugin-apps.js\";\nexport * from \"./extensions/plugin-marketplace.js\";\n\nexport type { JsonValue } from \"./serialization/json.js\";\nexport { isJsonObject, isJsonRecord, isNonnegativeInteger, isUuid, stringifyCanonicalJson, validateJsonRecord } from \"./serialization/json.js\";\nexport * from \"./extensions/plugin-ui-history.js\";\n\n// Canonical tool-result data shared with the HTTP client.\nexport { parseMcpCallResultData, type McpCallResultData } from \"@vykor/agent-contracts/tool-data\";\n\nexport { PLUGIN_APP_MANIFEST_LIMITS, PLUGIN_APP_RESOURCE_LIMITS, PLUGIN_APP_DATA_LIMITS } from \"@vykor/plugin-contracts/limits\";\nexport { PLUGIN_APP_INPUT_LIMITS } from \"@vykor/domain-contracts/plugin-apps\";\nexport { MCP_APP_HTML_MIME_TYPE } from \"@vykor/agent-contracts/tool-data\";\n",
|
|
52
52
|
"/**\n * ProtocolClient: 协议协商与健康检查客户端。\n *\n * 负责:\n * - GET /health 服务健康探测 (无需鉴权)\n * - GET /capabilities 服务协议能力探测与版本协商 (无需鉴权)\n * - 协议兼容性断言与 IncompatibleProtocolError 抛出\n *\n * 约束:\n * - 构造只接收 HttpTransport\n * - 业务请求的强制握手由 HttpTransport 缓存并执行\n */\n\nimport type { ClientProtocolSupport, ServerCapabilities } from \"@vykor/protocol\";\nimport { checkProtocolCompatibility, CURRENT_PROTOCOL_VERSION, parseServerCapabilities } 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",
|
|
53
53
|
"/**\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 { ProtocolDataError, CURRENT_PROTOCOL_VERSION, PROTOCOL_VERSION_HEADER, checkProtocolCompatibility, parseServerCapabilities, type ServerCapabilities } 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",
|
|
54
54
|
"/**\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",
|
|
@@ -61,12 +61,12 @@
|
|
|
61
61
|
"import type { MarketplaceCatalog, MarketplaceSourcesResponse, MarketplacePreviewRequest, MarketplacePreview, MarketplaceInstallRequest,\n MarketplaceOperation, MarketplaceCatalogRequest, MarketplaceAddSourceRequest, MarketplaceSourceEnabledRequest,\n MarketplaceCancelRequest, MarketplaceCancelResponse } from \"@vykor/protocol\";\n/**\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\n async marketplaceCatalog(options: MarketplaceCatalogRequest & { signal?: AbortSignal }): Promise<MarketplaceCatalog> {\n const { signal, ...query } = options;\n return this.transport.request(this.transport.path(\"/plugins/marketplace/catalog\", query), { signal });\n }\n async marketplaceSources(options: { signal?: AbortSignal } = {}): Promise<MarketplaceSourcesResponse> {\n return this.transport.request(\"/plugins/marketplace/sources\", { method: \"GET\", ...options });\n }\n async marketplaceAddSource(input: MarketplaceAddSourceRequest, options: { signal?: AbortSignal } = {}): Promise<MarketplaceSourcesResponse> {\n return this.transport.request(\"/plugins/marketplace/sources\", { method: \"POST\", body: input, ...options });\n }\n async marketplacePreview(input: MarketplacePreviewRequest, options: { signal?: AbortSignal } = {}): Promise<MarketplacePreview> {\n return this.transport.request(\"/plugins/marketplace/preview\", { method: \"POST\", body: input, ...options });\n }\n async marketplaceCancel(input: MarketplaceCancelRequest, options: { signal?: AbortSignal } = {}): Promise<MarketplaceCancelResponse> {\n return this.transport.request(\"/plugins/marketplace/cancel\", { method: \"POST\", body: input, ...options });\n }\n async marketplaceInstall(input: MarketplaceInstallRequest, options: { signal?: AbortSignal } = {}): Promise<MarketplaceOperation> {\n return this.transport.request(\"/plugins/marketplace/install\", { method: \"POST\", body: input, ...options });\n }\n async marketplaceSetSourceEnabled(sourceId: string, input: MarketplaceSourceEnabledRequest, options: { signal?: AbortSignal } = {}): Promise<MarketplaceSourcesResponse> {\n return this.transport.request(`/plugins/marketplace/sources/${encodeURIComponent(sourceId)}`, { method: \"PATCH\", body: input, ...options });\n }\n async marketplaceRemoveSource(sourceId: string, options: { signal?: AbortSignal } = {}): Promise<MarketplaceSourcesResponse> {\n return this.transport.request(`/plugins/marketplace/sources/${encodeURIComponent(sourceId)}`, { method: \"DELETE\", ...options });\n }\n async marketplaceOperation(operationId: string, options: { signal?: AbortSignal } = {}): Promise<MarketplaceOperation> {\n return this.transport.request(`/plugins/marketplace/operations/${encodeURIComponent(operationId)}`, options);\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 allowSourceChange?: boolean;\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 allowSourceChange?: boolean;\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",
|
|
62
62
|
"import { parsePluginUiConversationReceipt, ProtocolValidationError, type PluginUiActionResponse, type PluginUiConversationReceipt } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../../transport/http-transport.js\";\nfunction path(sessionId: string, instanceId: string): string {\n return `/sessions/${encodeURIComponent(sessionId)}/plugin-ui/${encodeURIComponent(instanceId)}`;\n}\n\nexport class PluginUiHistoryResource {\n constructor(private readonly transport: HttpTransport) {}\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 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",
|
|
63
63
|
"/**\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",
|
|
64
|
-
"/**\n * SessionResource: 会话生命周期、快照、消息树、Prompt 准入排队与 Goal 资源。\n */\n\nimport type { CreateSessionGoalInput, GoalActionInput, SessionGoal, UpdateSessionGoalInput, SearchSessionsOptions, SessionSearchResult, ClearSessionWorktreeBindingInput } 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",
|
|
64
|
+
"/**\n * SessionResource: 会话生命周期、快照、消息树、Prompt 准入排队与 Goal 资源。\n */\n\nimport type { CreateSessionGoalInput, GoalActionInput, SessionGoal, UpdateSessionGoalInput, SearchSessionsOptions, SessionSearchResult, ClearSessionWorktreeBindingInput } from \"@vykor/protocol\";\nimport { assertPromptMetadataAllowed, 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 private async checkOutputSchema(input: { outputSchema?: unknown; metadata?: Record<string, unknown> }, signal?: AbortSignal): Promise<void> {\n assertPromptMetadataAllowed(input);\n if (input.outputSchema === undefined) return;\n const capabilities = await this.transport.ensureProtocol(signal);\n if ((capabilities.features.structuredDelivery ?? 0) < 1) {\n throw new Error(\"Server does not support structured delivery (outputSchema)\");\n }\n }\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 await this.checkOutputSchema(input, options.signal);\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 await this.checkOutputSchema(input, options.signal);\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 await this.checkOutputSchema(input, options.signal);\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",
|
|
65
65
|
"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",
|
|
66
66
|
"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",
|
|
67
67
|
"import type { CreateScheduledTaskInput, ScheduledRunRecord, ScheduledTaskRecord, UpdateScheduledTaskInput } 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",
|
|
68
68
|
"import type { CreateNoteInput, NoteRecord, UpdateNoteInput } from \"@vykor/protocol\";\n\nimport type { HttpTransport } from \"../../transport/http-transport.js\";\n\nexport class NoteResource {\n constructor(private readonly transport: HttpTransport) {}\n\n storageInfo(): Promise<{ directory: string; format: \"markdown\" }> {\n return this.transport.request(\"/notes/storage\");\n }\n\n async list(options: { signal?: AbortSignal } = {}): Promise<NoteRecord[]> {\n const response = await this.transport.request<{ notes: NoteRecord[] }>(\n \"/notes\",\n {\n signal: options.signal,\n },\n );\n return response.notes;\n }\n\n async create(\n input: CreateNoteInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<NoteRecord> {\n const response = await this.transport.request<{ note: NoteRecord }>(\n \"/notes\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n return response.note;\n }\n\n async update(\n id: string,\n input: UpdateNoteInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<NoteRecord> {\n const response = await this.transport.request<{ note: NoteRecord }>(\n `/notes/${encodeURIComponent(id)}`,\n { method: \"PATCH\", body: input, signal: options.signal },\n );\n return response.note;\n }\n\n async remove(\n id: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<void> {\n await this.transport.request<{ removed: true }>(\n `/notes/${encodeURIComponent(id)}`,\n {\n method: \"DELETE\",\n signal: options.signal,\n },\n );\n }\n}\n",
|
|
69
|
-
"import type { JobKind, JobReadResult, JobSnapshot, JobStatus, JobWaitResult } from \"@vykor/protocol\";\nimport { decodeJobReadResult, decodeJobSnapshot, decodeJobWaitResult } from \"@vykor/protocol\";\nimport type {\n CreateBackgroundShellInput,\n CreateBackgroundShellResult,\n} from \"../../types/index.js\";\nimport type { HttpTransport } from \"../../transport/http-transport.js\";\nimport {
|
|
69
|
+
"import type { JobTarget, JobListResult, JobInputReceipt, JobKind, JobReadResult, JobSnapshot, JobStatus, JobWaitResult } from \"@vykor/protocol\";\nimport { ProtocolDataError, decodeJobListResult, decodeJobInputReceipt, decodeJobReadResult, decodeJobSnapshot, decodeJobWaitResult } from \"@vykor/protocol\";\nimport type {\n CreateBackgroundShellInput,\n CreateBackgroundShellResult,\n} from \"../../types/index.js\";\nimport type { HttpTransport } from \"../../transport/http-transport.js\";\nimport { responseField } from \"../../transport/http-transport.js\";\n\nexport class JobResource {\n constructor(private readonly transport: HttpTransport) {}\n\n async list(options: {\n sessionId: string;\n kinds?: JobKind[];\n statuses?: JobStatus[];\n startedAfter?: number;\n startedBefore?: number;\n updatedAfter?: number;\n updatedBefore?: number;\n includeFinished?: boolean;\n limit?: number;\n signal?: AbortSignal;\n }): Promise<JobListResult> {\n const { signal, kinds, statuses, includeFinished, ...query } = options;\n const response = await this.transport.request<unknown>(\n this.transport.path(\"/jobs\", {\n ...query,\n ...(kinds ? { kinds: kinds.join(\",\") } : {}),\n ...(statuses ? { statuses: statuses.join(\",\") } : {}),\n ...(includeFinished !== undefined\n ? { includeFinished: String(includeFinished) }\n : {}),\n }),\n { signal },\n );\n return decodeJobListResult(response);\n }\n\n async createBackgroundShell(\n input: CreateBackgroundShellInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<CreateBackgroundShellResult> {\n return await this.transport.request<CreateBackgroundShellResult>(\n \"/background-shells\",\n {\n method: \"POST\",\n body: input,\n signal: options.signal,\n },\n );\n }\n\n async read(\n target: JobTarget,\n options: {\n sessionId: string;\n after?: number;\n maxChars?: number;\n signal?: AbortSignal;\n },\n ): Promise<JobReadResult> {\n const { signal, ...query } = options;\n const response = await this.transport.request<unknown>(\n this.transport.path(`/jobs/${encodeURIComponent(target.jobId)}`, { ...query, kind: target.kind, ...(target.kind === \"agent\" ? { runId: target.runId } : {}) }),\n { signal },\n );\n return decodeJobReadResult(response);\n }\n\n async wait(\n target: JobTarget,\n input: {\n sessionId: string;\n timeoutMs?: number;\n after?: number;\n maxChars?: number;\n },\n options: { signal?: AbortSignal } = {},\n ): Promise<JobWaitResult> {\n const response = await this.transport.request<unknown>(\n `/jobs/${encodeURIComponent(target.jobId)}/wait`,\n {\n method: \"POST\",\n body: { ...input, target },\n signal: options.signal,\n },\n );\n return decodeJobWaitResult(response);\n }\n\n async send(\n target: JobTarget,\n input: { sessionId: string; data: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<JobInputReceipt | void> {\n const response = await this.transport.request<unknown>(`/jobs/${encodeURIComponent(target.jobId)}/input`, {\n method: \"POST\",\n body: { ...input, target },\n signal: options.signal,\n });\n if (responseField(response, \"sent\") !== true) throw new ProtocolDataError(\"Job input was not accepted\", \"sent\");\n const receipt = (response as { receipt?: unknown }).receipt;\n return receipt === undefined ? undefined : decodeJobInputReceipt(receipt);\n }\n\n async cancel(\n target: JobTarget,\n input: { sessionId: string; reason?: string },\n options: { signal?: AbortSignal } = {},\n ): Promise<JobSnapshot> {\n const response = await this.transport.request<unknown>(\n `/jobs/${encodeURIComponent(target.jobId)}/cancel`,\n { method: \"POST\", body: { ...input, target }, signal: options.signal },\n );\n return decodeJobSnapshot(responseField(response, \"snapshot\"));\n }\n}\n",
|
|
70
70
|
"import type { TerminalCreateRequest, TerminalEvent, TerminalReadResult, TerminalResizeRequest, TerminalSessionInfo, TerminalSignal, TerminalSource, TerminalWriteRequest } from \"@vykor/protocol\";\nimport { decodeTerminalEvent, decodeTerminalReadResult, decodeTerminalSessionInfo } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../../transport/http-transport.js\";\nimport { responseArray, responseField } from \"../../transport/http-transport.js\";\nimport type { SseTransport } from \"../../transport/sse-transport.js\";\n\nexport class TerminalResource {\n constructor(\n private readonly transport: HttpTransport,\n private readonly sse: SseTransport,\n ) {}\n\n async create(\n input: TerminalCreateRequest,\n options: { signal?: AbortSignal } = {},\n ): Promise<TerminalSessionInfo> {\n const response = await this.transport.request<unknown>(\"/terminals\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n return decodeTerminalSessionInfo(responseField(response, \"terminal\"));\n }\n\n async list(\n options: {\n projectId?: string;\n sessionId?: string;\n source?: TerminalSource;\n signal?: AbortSignal;\n } = {},\n ): Promise<TerminalSessionInfo[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<unknown>(\n this.transport.path(\"/terminals\", query),\n { signal },\n );\n return responseArray(response, \"terminals\", decodeTerminalSessionInfo);\n }\n\n async get(\n terminalId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<TerminalSessionInfo> {\n const response = await this.transport.request<unknown>(\n `/terminals/${encodeURIComponent(terminalId)}`,\n { signal: options.signal },\n );\n return decodeTerminalSessionInfo(responseField(response, \"terminal\"));\n }\n\n async read(\n terminalId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<TerminalReadResult> {\n const response = await this.transport.request<unknown>(\n `/terminals/${encodeURIComponent(terminalId)}/output`,\n { signal: options.signal },\n );\n return decodeTerminalReadResult(responseField(response, \"snapshot\"));\n }\n\n async write(\n input: TerminalWriteRequest,\n options: { signal?: AbortSignal } = {},\n ): Promise<void> {\n await this.transport.request<{ written: true }>(\n `/terminals/${encodeURIComponent(input.terminalId)}/input`,\n { method: \"POST\", body: { data: input.data }, signal: options.signal },\n );\n }\n\n async resize(\n input: TerminalResizeRequest,\n options: { signal?: AbortSignal } = {},\n ): Promise<void> {\n await this.transport.request<{ resized: true }>(\n `/terminals/${encodeURIComponent(input.terminalId)}/resize`,\n {\n method: \"POST\",\n body: { cols: input.cols, rows: input.rows },\n signal: options.signal,\n },\n );\n }\n\n async signal(\n terminalId: string,\n signal: TerminalSignal,\n options: { signal?: AbortSignal } = {},\n ): Promise<void> {\n await this.transport.request<{ signaled: true }>(\n `/terminals/${encodeURIComponent(terminalId)}/signal`,\n { method: \"POST\", body: { signal }, signal: options.signal },\n );\n }\n\n async close(\n terminalId: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<void> {\n await this.transport.request<{ removed: true }>(\n `/terminals/${encodeURIComponent(terminalId)}`,\n {\n method: \"DELETE\",\n signal: options.signal,\n },\n );\n }\n\n streamEvents(\n options: { signal?: AbortSignal } = {},\n ): AsyncIterable<TerminalEvent> {\n return this.sse.stream(\n this.transport.resolveUrl(\"/terminals/stream\"),\n {\n headers: this.transport.headers(),\n signal: options.signal,\n decode: decodeTerminalEvent,\n noBodyMessage: \"Terminal event stream response has no body\",\n },\n );\n }\n}\n",
|
|
71
71
|
"import type { ChannelDeliveryRecord, ChannelRuntimeControlInput, ChannelRuntimeStatus, ChannelStatusSnapshot, DurableChannelMessageInput, DurableChannelMessageResult, FeishuAllowInput, FeishuChannelSnapshot, FeishuConnectInput, FeishuPatchInput, FeishuRegistrationSnapshot, FeishuRegistrationStartInput, RecordChannelDeliveryInput } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../../transport/http-transport.js\";\n\nexport interface FeishuComposedSnapshot {\n feishu: FeishuChannelSnapshot;\n runtime: ChannelRuntimeStatus;\n}\n\nexport class ChannelResource {\n constructor(private readonly transport: HttpTransport) {}\n\n async handleMessage(\n input: DurableChannelMessageInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<DurableChannelMessageResult> {\n return await this.transport.request<DurableChannelMessageResult>(\n \"/channels/messages\",\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n async recordDelivery(\n deliveryId: string,\n input: RecordChannelDeliveryInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<ChannelDeliveryRecord> {\n const response = await this.transport.request<{ delivery: ChannelDeliveryRecord }>(\n `/channels/deliveries/${encodeURIComponent(deliveryId)}/result`,\n { method: \"POST\", body: input, signal: options.signal },\n );\n return response.delivery;\n }\n\n async getStatus(\n options: { connector?: string; limit?: number; signal?: AbortSignal } = {},\n ): Promise<ChannelStatusSnapshot> {\n const { signal, ...query } = options;\n return await this.transport.request<ChannelStatusSnapshot>(\n this.transport.path(\"/channels/status\", query),\n { signal },\n );\n }\n\n async listPendingDeliveries(\n options: { connector?: string; limit?: number; signal?: AbortSignal } = {},\n ): Promise<ChannelDeliveryRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<{\n deliveries: ChannelDeliveryRecord[];\n }>(this.transport.path(\"/channels/deliveries/pending\", query), { signal });\n return response.deliveries;\n }\n\n async runtimeStatus(options: { signal?: AbortSignal } = {}): Promise<ChannelRuntimeStatus> {\n return await this.transport.request<ChannelRuntimeStatus>(\"/channels/runtime/status\", {\n signal: options.signal,\n });\n }\n\n async startRuntime(\n input: ChannelRuntimeControlInput = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<ChannelRuntimeStatus> {\n return await this.transport.request<ChannelRuntimeStatus>(\"/channels/runtime/start\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n }\n\n async stopRuntime(\n input: ChannelRuntimeControlInput = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<ChannelRuntimeStatus> {\n return await this.transport.request<ChannelRuntimeStatus>(\"/channels/runtime/stop\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n }\n\n async getFeishu(options: { signal?: AbortSignal } = {}): Promise<FeishuChannelSnapshot> {\n return await this.transport.request<FeishuChannelSnapshot>(\"/channels/feishu\", {\n signal: options.signal,\n });\n }\n\n async patchFeishu(\n input: FeishuPatchInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<FeishuComposedSnapshot> {\n return await this.transport.request<FeishuComposedSnapshot>(\"/channels/feishu\", {\n method: \"PATCH\",\n body: input,\n signal: options.signal,\n });\n }\n\n async connectFeishu(\n input: FeishuConnectInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<FeishuComposedSnapshot> {\n return await this.transport.request<FeishuComposedSnapshot>(\"/channels/feishu/connect\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n }\n\n async removeFeishu(\n options: { signal?: AbortSignal } = {},\n ): Promise<FeishuComposedSnapshot> {\n return await this.transport.request<FeishuComposedSnapshot>(\"/channels/feishu\", {\n method: \"DELETE\",\n signal: options.signal,\n });\n }\n\n async addFeishuAllow(\n input: FeishuAllowInput,\n options: { signal?: AbortSignal } = {},\n ): Promise<FeishuChannelSnapshot> {\n return await this.transport.request<FeishuChannelSnapshot>(\"/channels/feishu/allow\", {\n method: \"POST\",\n body: input,\n signal: options.signal,\n });\n }\n\n async removeFeishuAllow(\n key: string,\n options: { signal?: AbortSignal } = {},\n ): Promise<FeishuChannelSnapshot> {\n return await this.transport.request<FeishuChannelSnapshot>(\n `/channels/feishu/allow/${encodeURIComponent(key)}`,\n { method: \"DELETE\", signal: options.signal },\n );\n }\n\n async startFeishuRegistration(\n input: FeishuRegistrationStartInput = {},\n options: { signal?: AbortSignal } = {},\n ): Promise<FeishuRegistrationSnapshot> {\n return await this.transport.request<FeishuRegistrationSnapshot>(\n \"/channels/feishu/registration\",\n { method: \"POST\", body: input, signal: options.signal },\n );\n }\n\n async feishuRegistrationStatus(\n options: { signal?: AbortSignal } = {},\n ): Promise<FeishuRegistrationSnapshot> {\n return await this.transport.request<FeishuRegistrationSnapshot>(\n \"/channels/feishu/registration\",\n { signal: options.signal },\n );\n }\n\n async cancelFeishuRegistration(\n options: { signal?: AbortSignal } = {},\n ): Promise<FeishuRegistrationSnapshot> {\n return await this.transport.request<FeishuRegistrationSnapshot>(\n \"/channels/feishu/registration\",\n { method: \"DELETE\", signal: options.signal },\n );\n }\n}\n",
|
|
72
72
|
"import type { SessionEventRecord } from \"@vykor/protocol\";\nimport { decodeSessionEventRecord } from \"@vykor/protocol\";\nimport type { HttpTransport } from \"../../transport/http-transport.js\";\nimport { responseArray } from \"../../transport/http-transport.js\";\nimport type { SseTransport } from \"../../transport/sse-transport.js\";\nimport type { EventSyncOptions, ListEventsOptions } from \"../../types/index.js\";\n\nexport class EventResource {\n constructor(\n private readonly transport: HttpTransport,\n private readonly sse: SseTransport,\n ) {}\n\n /** `GET /events` — 用于 attach 时的历史 replay。 */\n async list(\n options: ListEventsOptions & { signal?: AbortSignal } = {},\n ): Promise<SessionEventRecord[]> {\n const { signal, ...query } = options;\n const response = await this.transport.request<unknown>(\n this.transport.path(\"/events\", query),\n { signal },\n );\n return responseArray(response, \"events\", decodeSessionEventRecord);\n }\n\n stream(\n options: EventSyncOptions & { transportReconnect?: boolean } = {},\n ): AsyncIterable<SessionEventRecord> {\n const query = {\n partView: options.partView,\n cursor: options.cursor,\n sessionId: options.sessionId,\n };\n return this.sse.stream(\n this.transport.resolveUrl(\"/events/stream\", query),\n {\n headers: this.transport.headers(),\n signal: options.signal,\n decode: decodeSessionEventRecord,\n reconnect: options.transportReconnect ?? false,\n idleTimeoutMs: options.idleTimeoutMs,\n },\n );\n }\n}\n",
|
|
@@ -78,16 +78,17 @@
|
|
|
78
78
|
"/**\n * 事件 → 客户端状态 reducer。\n *\n * 幂等:同一 `seq` 只应用一次。多端用同一套事件流应收敛到相同状态。\n */\n\nimport { isSupersededModelPart, sessionEventSchemaVersion } from \"@vykor/protocol\";\n\nimport type {\n VykorClientState,\n PermissionRequestRecord,\n SessionBucket,\n SessionEventRecord,\n SessionInputRecord,\n SessionMessagePartRecord,\n SessionMessageRecord,\n SessionRecord,\n SessionRunRecord,\n SessionRunAttemptRecord,\n SessionExecutionRecord,\n SessionStateSnapshot,\n} from \"../types/index.js\";\n\nexport class UnsupportedSessionEventSchemaVersionError extends Error {\n readonly event: Pick<SessionEventRecord, \"seq\" | \"type\" | \"schemaVersion\">;\n\n constructor(event: SessionEventRecord) {\n const expected = sessionEventSchemaVersion(event.type);\n super(\n `Unsupported session event schema version ${event.schemaVersion} for ${event.type} at sequence ${event.seq}; expected ${expected}`,\n );\n this.name = \"UnsupportedSessionEventSchemaVersionError\";\n this.event = {\n seq: event.seq,\n type: event.type,\n schemaVersion: event.schemaVersion,\n };\n }\n}\n\n/** 空客户端状态,作为 replay/hydrate 起点。 */\nexport function createInitialClientState(): VykorClientState {\n return {\n sessions: {},\n sessionOrder: [],\n buckets: {},\n eventsBySeq: {},\n snapshotCursorBySession: {},\n transientCursor: 0,\n lastSeq: 0,\n };\n}\n\n/** 按序批量应用事件。 */\nexport function applyEvents(\n state: VykorClientState,\n events: Iterable<SessionEventRecord>,\n): VykorClientState {\n let next = state;\n for (const event of events) next = applyEvent(next, event);\n return next;\n}\n\n/** Replace one session bucket with an atomic server snapshot. */\nexport function applySessionSnapshot(\n state: VykorClientState,\n snapshot: SessionStateSnapshot,\n): VykorClientState {\n const knownCursor = state.snapshotCursorBySession[snapshot.session.id] ?? 0;\n if (snapshot.cursor < knownCursor) return state;\n // A cached snapshot must not undo a newer live update from this same session.\n if (Object.values(state.eventsBySeq).some(event =>\n event.sessionId === snapshot.session.id && event.seq > snapshot.cursor)) return state;\n\n const partsByMessageId: SessionBucket[\"partsByMessageId\"] = {};\n for (const part of snapshot.parts) {\n const parts = partsByMessageId[part.messageId] ?? [];\n parts.push(part);\n partsByMessageId[part.messageId] = parts;\n }\n for (const parts of Object.values(partsByMessageId)) parts.sort((a, b) => a.seq - b.seq);\n\n const sessions = { ...state.sessions, [snapshot.session.id]: snapshot.session };\n return {\n ...state,\n sessions,\n sessionOrder: sortSessionOrder(sessions),\n buckets: {\n ...state.buckets,\n [snapshot.session.id]: {\n session: snapshot.session,\n inputs: [...snapshot.inputs].sort((a, b) => a.seq - b.seq),\n messages: [...snapshot.messages].sort((a, b) => a.seq - b.seq),\n partsByMessageId,\n runs: Object.fromEntries(snapshot.runs.map((run) => [run.id, run])),\n attempts: Object.fromEntries((snapshot.attempts ?? []).map((attempt) => [attempt.id, attempt])),\n tasks: Object.fromEntries((snapshot.tasks ?? []).map((task) => [task.id, task])),\n permissions: Object.fromEntries(snapshot.permissions.map((request) => [request.id, request])),\n },\n },\n snapshotCursorBySession: {\n ...state.snapshotCursorBySession,\n [snapshot.session.id]: Math.max(\n state.snapshotCursorBySession[snapshot.session.id] ?? 0,\n snapshot.cursor,\n ),\n },\n transientCursor: Math.max(state.transientCursor, snapshot.cursor),\n lastSeq: Math.max(state.lastSeq, snapshot.cursor),\n };\n}\n\n/**\n * 应用单条事件。已见过的 `seq` 直接返回原 state(引用相等,便于 live 去重)。\n */\nexport function applyEvent(\n state: VykorClientState,\n event: SessionEventRecord,\n): VykorClientState {\n if (event.schemaVersion !== sessionEventSchemaVersion(event.type)) {\n throw new UnsupportedSessionEventSchemaVersionError(event);\n }\n const transient = event.type === \"session.message.part.delta\";\n const snapshotCursor = event.sessionId\n ? state.snapshotCursorBySession[event.sessionId] ?? 0\n : 0;\n if (event.seq <= snapshotCursor) return state;\n if (transient && event.seq <= state.transientCursor) return state;\n if (!transient && state.eventsBySeq[event.seq]) return state;\n if (!transient) state.eventsBySeq[event.seq] = event;\n\n let next: VykorClientState = {\n ...state,\n eventsBySeq: state.eventsBySeq,\n transientCursor: transient ? event.seq : state.transientCursor,\n lastSeq: Math.max(state.lastSeq, event.seq),\n };\n\n switch (event.type) {\n case \"session.created\":\n case \"session.updated\":\n next = upsertSession(next, readPayloadRecord<SessionRecord>(event, \"session\"));\n break;\n case \"session.archived\":\n next = archiveSession(next, event);\n break;\n case \"session.deleted\":\n next = deleteSessions(next, event);\n break;\n case \"session.input.admitted\":\n next = upsertInput(next, readPayloadRecord<SessionInputRecord>(event, \"input\"));\n break;\n case \"session.message.created\":\n next = upsertMessage(next, readPayloadRecord<SessionMessageRecord>(event, \"message\"));\n break;\n case \"session.transcript.replaced\":\n next = replaceTranscript(next, event);\n break;\n case \"session.message.part.updated\":\n next = upsertPart(next, readPayloadRecord<SessionMessagePartRecord>(event, \"part\"));\n break;\n case \"session.message.part.delta\":\n next = appendPartDelta(next, event);\n break;\n case \"session.run.created\":\n case \"session.run.updated\":\n next = upsertRun(next, readPayloadRecord<SessionRunRecord>(event, \"run\"));\n break;\n case \"session.run_attempt.created\":\n case \"session.run_attempt.updated\":\n next = upsertRunAttempt(next, readPayloadRecord<SessionRunAttemptRecord>(event, \"attempt\"));\n break;\n case \"session.task.created\":\n case \"session.task.updated\":\n next = upsertTask(next, readPayloadRecord<SessionExecutionRecord>(event, \"task\"));\n break;\n case \"permission.asked\":\n case \"permission.replied\":\n next = upsertPermission(next, readPayloadRecord<PermissionRequestRecord>(event, \"request\"));\n break;\n }\n\n return next;\n}\n\nfunction readPayloadRecord<T>(event: SessionEventRecord, key: string): T | undefined {\n const value = event.payload[key];\n return value && typeof value === \"object\" && !Array.isArray(value) ? value as T : undefined;\n}\n\nfunction upsertSession(state: VykorClientState, session: SessionRecord | undefined): VykorClientState {\n if (!session) return state;\n const bucket = cloneBucket(state.buckets[session.id]);\n bucket.session = session;\n const sessions = { ...state.sessions, [session.id]: session };\n return {\n ...state,\n sessions,\n sessionOrder: sortSessionOrder(sessions),\n buckets: { ...state.buckets, [session.id]: bucket },\n };\n}\n\nfunction archiveSession(state: VykorClientState, event: SessionEventRecord): VykorClientState {\n const sessionId = typeof event.payload.sessionId === \"string\" ? event.payload.sessionId : event.sessionId;\n if (!sessionId) return state;\n const current = state.sessions[sessionId];\n if (!current) return state;\n const archived: SessionRecord = {\n ...current,\n status: \"archived\",\n archivedAt: current.archivedAt ?? event.createdAt,\n updatedAt: Math.max(current.updatedAt, event.createdAt),\n };\n return upsertSession(state, archived);\n}\n\nfunction deleteSessions(state: VykorClientState, event: SessionEventRecord): VykorClientState {\n const ids = new Set(Array.isArray(event.payload.sessionIds)\n ? event.payload.sessionIds.filter((id): id is string => typeof id === \"string\") : []);\n if (ids.size === 0) return state;\n return {\n ...state,\n sessions: Object.fromEntries(Object.entries(state.sessions).filter(([id]) => !ids.has(id))),\n sessionOrder: state.sessionOrder.filter((id) => !ids.has(id)),\n buckets: Object.fromEntries(Object.entries(state.buckets).filter(([id]) => !ids.has(id))),\n snapshotCursorBySession: Object.fromEntries(Object.entries(state.snapshotCursorBySession).filter(([id]) => !ids.has(id))),\n eventsBySeq: Object.fromEntries(Object.entries(state.eventsBySeq).filter(([, item]) => !item.sessionId || !ids.has(item.sessionId))),\n };\n}\n\nfunction upsertInput(state: VykorClientState, input: SessionInputRecord | undefined): VykorClientState {\n if (!input) return state;\n const bucket = cloneBucket(state.buckets[input.sessionId]);\n bucket.inputs = upsertSorted(bucket.inputs, input, (row) => row.seq);\n return { ...state, buckets: { ...state.buckets, [input.sessionId]: bucket } };\n}\n\nfunction upsertMessage(state: VykorClientState, message: SessionMessageRecord | undefined): VykorClientState {\n if (!message) return state;\n const bucket = cloneBucket(state.buckets[message.sessionId]);\n bucket.messages = upsertSorted(bucket.messages, message, (row) => row.seq);\n return { ...state, buckets: { ...state.buckets, [message.sessionId]: bucket } };\n}\n\nfunction replaceTranscript(state: VykorClientState, event: SessionEventRecord): VykorClientState {\n const sessionId = event.sessionId;\n if (!sessionId) return state;\n const messages = Array.isArray(event.payload.messages)\n ? event.payload.messages.filter((row): row is SessionMessageRecord =>\n !!row && typeof row === \"object\" && !Array.isArray(row) && typeof (row as SessionMessageRecord).id === \"string\")\n : [];\n const parts = Array.isArray(event.payload.parts)\n ? event.payload.parts.filter((row): row is SessionMessagePartRecord =>\n !!row && typeof row === \"object\" && !Array.isArray(row) && typeof (row as SessionMessagePartRecord).id === \"string\")\n : [];\n const bucket = cloneBucket(state.buckets[sessionId]);\n const partsByMessageId: SessionBucket[\"partsByMessageId\"] = {};\n for (const part of parts) {\n const rows = partsByMessageId[part.messageId] ?? [];\n rows.push(part);\n partsByMessageId[part.messageId] = rows;\n }\n for (const rows of Object.values(partsByMessageId)) rows.sort((a, b) => a.seq - b.seq);\n bucket.messages = [...messages].sort((a, b) => a.seq - b.seq);\n bucket.partsByMessageId = partsByMessageId;\n if (bucket.session) {\n bucket.session = {\n ...bucket.session,\n updatedAt: Math.max(bucket.session.updatedAt, event.createdAt),\n };\n }\n const sessions = bucket.session\n ? { ...state.sessions, [sessionId]: bucket.session }\n : state.sessions;\n return {\n ...state,\n sessions,\n sessionOrder: sortSessionOrder(sessions),\n buckets: { ...state.buckets, [sessionId]: bucket },\n };\n}\n\nfunction upsertPart(state: VykorClientState, part: SessionMessagePartRecord | undefined): VykorClientState {\n if (!part) return state;\n const bucket = cloneBucketForPartWrite(state.buckets[part.sessionId]);\n const existing = bucket.partsByMessageId[part.messageId] ?? [];\n bucket.partsByMessageId = {\n ...bucket.partsByMessageId,\n [part.messageId]: upsertSorted(existing, part, (row) => row.seq),\n };\n return { ...state, buckets: { ...state.buckets, [part.sessionId]: bucket } };\n}\n\nfunction appendPartDelta(state: VykorClientState, event: SessionEventRecord): VykorClientState {\n const sessionId = typeof event.payload.sessionId === \"string\" ? event.payload.sessionId : event.sessionId;\n const messageId = typeof event.payload.messageId === \"string\" ? event.payload.messageId : undefined;\n const partId = typeof event.payload.partId === \"string\" ? event.payload.partId : undefined;\n const field = event.payload.field;\n const delta = typeof event.payload.delta === \"string\" ? event.payload.delta : undefined;\n if (field !== \"text\" && field !== \"reasoning\") return state;\n if (!sessionId || !messageId || !partId || delta === undefined) return state;\n\n const bucket = cloneBucketForPartWrite(state.buckets[sessionId]);\n const currentParts = bucket.partsByMessageId[messageId] ?? [];\n const index = currentParts.findIndex((part) => part.id === partId);\n const nextParts = [...currentParts];\n if (index >= 0) {\n const current = nextParts[index]!;\n // A late delta for a superseded attempt must never revive old output.\n if (isSupersededModelPart(current)) return state;\n nextParts[index] = {\n ...current,\n text: `${current.text ?? \"\"}${delta}`,\n updatedAt: Math.max(current.updatedAt, event.createdAt),\n };\n } else {\n const seq = currentParts.reduce((max, part) => Math.max(max, part.seq), 0) + 1;\n nextParts.push({\n id: partId,\n sessionId,\n messageId,\n seq,\n type: field === \"reasoning\" ? \"reasoning\" : \"text\",\n status: \"running\",\n text: delta,\n metadata: {},\n createdAt: event.createdAt,\n updatedAt: event.createdAt,\n });\n }\n const sortedParts = index >= 0\n ? nextParts\n : nextParts.sort((a, b) => a.seq - b.seq);\n bucket.partsByMessageId = {\n ...bucket.partsByMessageId,\n [messageId]: sortedParts,\n };\n return { ...state, buckets: { ...state.buckets, [sessionId]: bucket } };\n}\n\nfunction upsertRun(state: VykorClientState, run: SessionRunRecord | undefined): VykorClientState {\n if (!run) return state;\n const bucket = cloneBucket(state.buckets[run.sessionId]);\n bucket.runs = { ...bucket.runs, [run.id]: run };\n const session = refreshSessionStatusFromRuns(bucket.session, bucket.runs, run.updatedAt);\n bucket.session = session;\n const sessions = session ? { ...state.sessions, [run.sessionId]: session } : state.sessions;\n return {\n ...state,\n sessions,\n sessionOrder: session ? sortSessionOrder(sessions) : state.sessionOrder,\n buckets: { ...state.buckets, [run.sessionId]: bucket },\n };\n}\n\nfunction upsertRunAttempt(\n state: VykorClientState,\n attempt: SessionRunAttemptRecord | undefined,\n): VykorClientState {\n if (!attempt) return state;\n const run = Object.values(state.buckets)\n .flatMap((bucket) => Object.values(bucket.runs))\n .find((candidate) => candidate.id === attempt.runId);\n if (!run) return state;\n const bucket = cloneBucket(state.buckets[run.sessionId]);\n bucket.attempts = { ...bucket.attempts, [attempt.id]: attempt };\n return { ...state, buckets: { ...state.buckets, [run.sessionId]: bucket } };\n}\n\nfunction refreshSessionStatusFromRuns(\n session: SessionRecord | undefined,\n runs: SessionBucket[\"runs\"],\n updatedAt: number,\n): SessionRecord | undefined {\n if (!session || session.status === \"archived\" || session.status === \"closing\") return session;\n const running = Object.values(runs).some(\n (candidate) => candidate.status === \"pending\" || candidate.status === \"running\",\n );\n return {\n ...session,\n status: running ? \"running\" : \"idle\",\n updatedAt: Math.max(session.updatedAt, updatedAt),\n };\n}\n\nfunction upsertPermission(\n state: VykorClientState,\n request: PermissionRequestRecord | undefined,\n): VykorClientState {\n if (!request) return state;\n const bucket = cloneBucket(state.buckets[request.sessionId]);\n bucket.permissions = { ...bucket.permissions, [request.id]: request };\n return { ...state, buckets: { ...state.buckets, [request.sessionId]: bucket } };\n}\n\nfunction upsertTask(state: VykorClientState, task: SessionExecutionRecord | undefined): VykorClientState {\n if (!task) return state;\n const bucket = cloneBucket(state.buckets[task.sessionId]);\n bucket.tasks = { ...bucket.tasks, [task.id]: task };\n return { ...state, buckets: { ...state.buckets, [task.sessionId]: bucket } };\n}\n\nfunction cloneBucket(bucket: SessionBucket | undefined): SessionBucket {\n return {\n session: bucket?.session,\n inputs: bucket?.inputs ? [...bucket.inputs] : [],\n messages: bucket?.messages ? [...bucket.messages] : [],\n partsByMessageId: bucket?.partsByMessageId\n ? Object.fromEntries(Object.entries(bucket.partsByMessageId).map(([id, parts]) => [id, [...parts]]))\n : {},\n runs: bucket?.runs ? { ...bucket.runs } : {},\n attempts: bucket?.attempts ? { ...bucket.attempts } : {},\n tasks: bucket?.tasks ? { ...bucket.tasks } : {},\n permissions: bucket?.permissions ? { ...bucket.permissions } : {},\n };\n}\n\nfunction cloneBucketForPartWrite(bucket: SessionBucket | undefined): SessionBucket {\n return {\n session: bucket?.session,\n inputs: bucket?.inputs ?? [],\n messages: bucket?.messages ?? [],\n partsByMessageId: bucket?.partsByMessageId ?? {},\n runs: bucket?.runs ?? {},\n attempts: bucket?.attempts ?? {},\n tasks: bucket?.tasks ?? {},\n permissions: bucket?.permissions ?? {},\n };\n}\n\n/** 按 id 覆盖后按 sortKey 升序排列。 */\nfunction upsertSorted<T extends { id: string }>(rows: T[], row: T, sortKey: (row: T) => number): T[] {\n const without = rows.filter((existing) => existing.id !== row.id);\n without.push(row);\n return without.sort((a, b) => sortKey(a) - sortKey(b));\n}\n\n/** session 列表排序:最近更新优先。 */\nfunction sortSessionOrder(sessions: Record<string, SessionRecord>): string[] {\n return Object.values(sessions)\n .sort((a, b) => b.updatedAt - a.updatedAt || a.id.localeCompare(b.id))\n .map((session) => session.id);\n}\n",
|
|
79
79
|
"/**\n * Read-only selectors over the reducer state.\n *\n * These stay UI-agnostic so TUI/Web/Desktop can share the canonical\n * message/part view and map it to their own presentation models.\n */\n\nimport { isSupersededModelPart, readSessionModelRetryState, readSessionModelUsage, type SessionModelRetryState, type SessionModelUsageSummary } from \"@vykor/protocol\";\nimport type { SessionBucket, SessionMessagePartRecord, SessionMessageRecord } from \"../types/index.js\";\n\nexport interface SessionMessageWithParts {\n message: SessionMessageRecord;\n parts: SessionMessagePartRecord[];\n}\nexport function selectSessionMessagesWithParts(\n bucket: SessionBucket | undefined,\n): SessionMessageWithParts[] {\n if (!bucket) return [];\n return [...bucket.messages]\n .sort((a, b) => a.seq - b.seq)\n .map((message) => ({\n message,\n parts: [...(bucket.partsByMessageId[message.id] ?? [])].sort((a, b) => a.seq - b.seq),\n }));\n}\n\n/**\n * Default display view: hides superseded parts and drops assistant messages that\n * have no visible parts left. The raw state keeps the diagnostic records.\n */\nexport function selectVisibleSessionMessagesWithParts(\n bucket: SessionBucket | undefined,\n): SessionMessageWithParts[] {\n return selectSessionMessagesWithParts(bucket)\n .map(({ message, parts }) => ({\n message,\n parts: parts.filter((part) => !isSupersededModelPart(part)),\n }))\n .filter(({ message, parts }) =>\n parts.length > 0 || message.role !== \"assistant\",\n );\n}\n\nexport function selectSessionInputs(bucket: SessionBucket | undefined) {\n if (!bucket) return [];\n return [...bucket.inputs].sort((a, b) => a.seq - b.seq);\n}\n\nexport function selectSessionOrderedMessages(bucket: SessionBucket | undefined) {\n if (!bucket) return [];\n return [...bucket.messages].sort((a, b) => a.seq - b.seq);\n}\n\nexport function selectSessionParts(bucket: SessionBucket | undefined) {\n if (!bucket) return [];\n return Object.values(bucket.partsByMessageId)\n .flat()\n .sort((a, b) => a.seq - b.seq);\n}\n\nexport function selectSessionRuns(bucket: SessionBucket | undefined) {\n if (!bucket) return [];\n return Object.values(bucket.runs);\n}\n\n/** Current bounded-retry wait, if the latest active run is waiting. */\nexport function selectSessionModelRetry(\n bucket: SessionBucket | undefined,\n): SessionModelRetryState | undefined {\n if (!bucket) return undefined;\n const active = Object.values(bucket.runs)\n .filter((run) => run.status === \"running\" || run.status === \"pending\")\n .sort((a, b) => b.updatedAt - a.updatedAt);\n for (const run of active) {\n const state = readSessionModelRetryState(run.metadata);\n if (state) return state;\n }\n return undefined;\n}\n\n/** Aggregated usage completeness for the most recently updated run. */\nexport function selectSessionModelUsage(\n bucket: SessionBucket | undefined,\n): SessionModelUsageSummary | undefined {\n if (!bucket) return undefined;\n const runs = Object.values(bucket.runs).sort((a, b) => b.updatedAt - a.updatedAt);\n for (const run of runs) {\n const usage = readSessionModelUsage(run.metadata);\n if (usage) return usage;\n }\n return undefined;\n}\n\nexport function selectSessionTasks(bucket: SessionBucket | undefined) {\n if (!bucket) return [];\n return Object.values(bucket.tasks);\n}\n\nexport function selectSessionPermissions(bucket: SessionBucket | undefined) {\n if (!bucket) return [];\n return Object.values(bucket.permissions);\n}\n\nexport function selectFirstPendingPermission(\n state: import(\"../types/index.js\").VykorClientState,\n sessionId?: string,\n): import(\"../types/index.js\").PermissionRequestRecord | undefined {\n if (!sessionId) return undefined;\n const bucket = state.buckets[sessionId];\n if (!bucket) return undefined;\n return Object.values(bucket.permissions)\n .filter((request) => request.status === \"pending\")\n .sort((a, b) => a.createdAt - b.createdAt)\n .at(0);\n}\n\n",
|
|
80
80
|
"import { applyEvent, applySessionSnapshot } from \"./reducer.js\";\nimport type { SessionEventRecord, SessionStateSnapshot, VykorClientState } from \"../types/index.js\";\n\n/** A session SSE stream is ordered, so its cursor replaces a retained event log. */\nexport function applySessionStreamEvent(\n state: VykorClientState,\n event: SessionEventRecord,\n): VykorClientState {\n if (event.seq <= state.lastSeq) return state;\n const next = applyEvent({ ...state, eventsBySeq: {} }, event);\n return { ...next, eventsBySeq: {} };\n}\n\nexport function applySessionStreamSnapshot(\n state: VykorClientState,\n snapshot: SessionStateSnapshot,\n): VykorClientState {\n if (snapshot.cursor < state.lastSeq) return state;\n return { ...applySessionSnapshot(state, snapshot), eventsBySeq: {} };\n}\n",
|
|
81
|
-
"/**\n *
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"import type {
|
|
81
|
+
"/**\n * 唯一同步流程:单会话先取快照,全局先补历史;断流后退避重连。\n * 会话必须刷新快照成功后才重新开流,恢复未持久化的临时正文。\n */\nimport {\n applyEvent,\n applyEvents,\n applySessionSnapshot,\n createInitialClientState,\n UnsupportedSessionEventSchemaVersionError,\n} from \"./reducer.js\";\nimport { applySessionStreamEvent, applySessionStreamSnapshot } from \"./session-stream-state.js\";\nimport type {\n EventSyncOptions, ListEventsOptions, VykorClientState, SessionEventRecord,\n SessionStateSnapshot, SyncEventUpdate,\n} from \"../types/index.js\";\n\nexport interface SyncEventsClient {\n sessions: {\n getState(sessionId: string, options?: { signal?: AbortSignal; partView?: \"summary\" }): Promise<SessionStateSnapshot>;\n };\n events: {\n list(options?: ListEventsOptions & { signal?: AbortSignal }): Promise<SessionEventRecord[]>;\n stream(options?: EventSyncOptions & { transportReconnect?: boolean }): AsyncIterable<SessionEventRecord>;\n };\n}\n\ntype GlobalEventReducer = (state: VykorClientState, event: SessionEventRecord) => VykorClientState;\nconst DEFAULT_RECONNECT_DELAY_MS = (attempt: number): number =>\n Math.min(30_000, 250 * 2 ** Math.max(0, attempt));\n/** 服务端 keepalive 每 15s 一次,迭代接口保留 4 倍余量。 */\nconst DEFAULT_SESSION_IDLE_TIMEOUT_MS = 60_000;\n\nexport function hydrateState(events: Iterable<SessionEventRecord>): VykorClientState {\n return applyEvents(createInitialClientState(), events);\n}\n\n/** 公开迭代接口保留原有默认空闲超时和全局 replay 结束标记。 */\nexport async function* syncEvents(\n client: SyncEventsClient,\n options: EventSyncOptions & { globalReducer?: GlobalEventReducer } = {},\n): AsyncIterable<SyncEventUpdate> {\n yield* runEventSync(client, {\n ...options,\n // 会话迭代接口从完整快照开始;只有全局 replay 使用调用方游标。\n cursor: options.sessionId ? undefined : options.cursor,\n idleTimeoutMs: options.idleTimeoutMs ?? DEFAULT_SESSION_IDLE_TIMEOUT_MS,\n });\n}\n\n/** @internal 共用算法。控制器只提供初始状态,消费更新并适配连接状态。 */\nexport async function* runEventSync(\n client: SyncEventsClient,\n options: EventSyncOptions & { globalReducer?: GlobalEventReducer },\n initialState: VykorClientState = createInitialClientState(),\n onLiveEvent?: () => void,\n): AsyncIterable<SyncEventUpdate> {\n let state = initialState;\n let cursor = Math.max(0, options.cursor ?? 0, state.lastSeq);\n let attempt = 0;\n const signal = options.signal;\n const delayMs = options.reconnectDelayMs ?? DEFAULT_RECONNECT_DELAY_MS;\n const reduce = options.sessionId ? applySessionStreamEvent : options.globalReducer ?? applyEvent;\n if (signal?.aborted) return;\n\n const refreshSession = async (initial: boolean): Promise<void> => {\n const snapshot = await client.sessions.getState(options.sessionId!, {\n signal, partView: options.partView,\n });\n if (signal?.aborted) return;\n // 初次 attach 按会话判断缓存新旧,不能被其他会话的较大游标挡住。\n const next = initial ? applySessionSnapshot(state, snapshot) : applySessionStreamSnapshot(state, snapshot);\n state = Object.keys(next.eventsBySeq).length ? { ...next, eventsBySeq: {} } : next;\n cursor = Math.max(cursor, snapshot.cursor, state.lastSeq);\n };\n\n try {\n if (options.sessionId) {\n await refreshSession(true);\n } else {\n const replay = await client.events.list({\n cursor: options.cursor, partView: options.partView, signal,\n });\n if (signal?.aborted) return;\n for (const event of replay) {\n if (signal?.aborted) return;\n state = reduce(state, event);\n yield { event, state, source: \"replay\" };\n }\n cursor = Math.max(cursor, state.lastSeq);\n }\n if (signal?.aborted) return;\n yield { state, source: \"snapshot\" };\n\n let needsSnapshot = false;\n while (!signal?.aborted) {\n try {\n if (needsSnapshot) {\n await refreshSession(false);\n if (signal?.aborted) return;\n needsSnapshot = false;\n yield { state, source: \"snapshot\" };\n }\n if (signal?.aborted) return;\n for await (const event of client.events.stream({\n cursor, sessionId: options.sessionId, signal, partView: options.partView,\n transportReconnect: false, idleTimeoutMs: options.idleTimeoutMs,\n })) {\n if (signal?.aborted) return;\n onLiveEvent?.();\n if (signal?.aborted) return;\n attempt = 0;\n if (event.seq > cursor + 1 && !options.sessionId) {\n const gap = await client.events.list({ cursor, partView: options.partView, signal });\n if (signal?.aborted) return;\n for (const missed of gap) {\n if (signal?.aborted) return;\n const before = state;\n state = reduce(state, missed);\n if (state !== before) yield { event: missed, state, source: \"replay\" };\n }\n cursor = Math.max(cursor, state.lastSeq);\n }\n if (signal?.aborted) return;\n const before = state;\n state = reduce(state, event);\n cursor = Math.max(cursor, state.lastSeq);\n if (state !== before) yield { event, state, source: \"live\" };\n }\n } catch (error) {\n if (error instanceof UnsupportedSessionEventSchemaVersionError) throw error;\n if (isAbortError(error) || signal?.aborted) return;\n }\n if (signal?.aborted) return;\n // 刷新失败也走同一退避入口;needsSnapshot 保持为真,绝不跳过快照恢复。\n needsSnapshot = Boolean(options.sessionId);\n yield { state, source: \"reconnecting\" };\n if (!(await waitForReconnect(delayMs(attempt), signal))) return;\n attempt += 1;\n }\n } catch (error) {\n if (!isAbortError(error) && !signal?.aborted) throw error;\n }\n}\n\nasync function waitForReconnect(ms: number, signal?: AbortSignal): Promise<boolean> {\n if (signal?.aborted) return false;\n if (ms <= 0) return true;\n return new Promise<boolean>(resolve => {\n const onAbort = () => { clearTimeout(timer); resolve(false); };\n const timer = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve(!signal?.aborted);\n }, ms);\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nfunction isAbortError(error: unknown): boolean {\n return Boolean(error && typeof error === \"object\" && \"name\" in error && error.name === \"AbortError\");\n}\n",
|
|
82
|
+
"/**\n * 无 UI 依赖的回调适配器。同步规则统一由 sync.ts 执行;这里保存当前状态,\n * 转发连接状态和代次,并隔离取消后迟到的更新。\n */\nimport { createInitialClientState } from \"./reducer.js\";\nimport { runEventSync, type SyncEventsClient } from \"./sync.js\";\nimport type { VykorClientState, SyncEventUpdate } from \"../types/index.js\";\n\nexport type SyncConnectionStatus = \"idle\" | \"connecting\" | \"connected\" | \"reconnecting\" | \"error\";\n\nexport interface SessionSyncControllerOptions {\n client: SyncEventsClient;\n sessionId?: string;\n initialState?: VykorClientState;\n cursor?: number;\n generation?: number;\n signal?: AbortSignal;\n reconnectDelayMs?: (attempt: number) => number;\n onUpdate?: (update: SyncEventUpdate, generation: number) => void;\n onStatusChange?: (status: SyncConnectionStatus, generation: number) => void;\n onError?: (error: unknown, generation: number) => void;\n}\n\nexport class SessionSyncController {\n private readonly options: SessionSyncControllerOptions;\n private readonly initialCursor: number;\n private readonly generation: number;\n private readonly abortController = new AbortController();\n private state: VykorClientState;\n private status: SyncConnectionStatus = \"idle\";\n private running = false;\n\n constructor(options: SessionSyncControllerOptions) {\n this.options = { ...options };\n this.state = options.initialState ?? createInitialClientState();\n if ((options.cursor ?? 0) > 0 && !options.initialState) {\n throw new Error(\"A non-zero cursor requires initialState so durable state is not skipped\");\n }\n this.initialCursor = Math.max(0, options.cursor ?? 0, this.state.lastSeq);\n this.generation = options.generation ?? 0;\n if (options.signal?.aborted) {\n this.abortController.abort(options.signal.reason);\n } else {\n options.signal?.addEventListener(\"abort\", () => this.abort(options.signal?.reason), { once: true });\n }\n }\n\n get currentStatus(): SyncConnectionStatus { return this.status; }\n get currentState(): VykorClientState { return this.state; }\n get currentGeneration(): number { return this.generation; }\n get signal(): AbortSignal { return this.abortController.signal; }\n\n abort(reason?: unknown): void { this.abortController.abort(reason); }\n\n private setStatus(status: SyncConnectionStatus): void {\n if (this.status === status) return;\n this.status = status;\n this.options.onStatusChange?.(status, this.generation);\n }\n\n /** 不可恢复错误通过 onError 上报;取消和正常结束都 resolve。 */\n async start(): Promise<void> {\n if (this.running) return;\n const signal = this.signal;\n if (signal.aborted) { this.setStatus(\"idle\"); return; }\n this.running = true;\n try {\n this.setStatus(\"connecting\");\n // 回调接口保持传输层原有的空闲超时默认值,不套用迭代接口的 60s。\n for await (const update of runEventSync(this.options.client, {\n sessionId: this.options.sessionId,\n cursor: this.initialCursor,\n signal,\n reconnectDelayMs: this.options.reconnectDelayMs,\n }, this.state, () => this.setStatus(\"connected\"))) {\n if (signal.aborted) return;\n this.state = update.state;\n if (update.source === \"reconnecting\") this.setStatus(\"reconnecting\");\n else if (update.source !== \"replay\") this.setStatus(\"connected\");\n if (signal.aborted) return;\n // 全局 snapshot 在共用流程中标记 replay 结束,回调接口不新增这条更新。\n if (update.source === \"snapshot\" && !this.options.sessionId) continue;\n this.options.onUpdate?.(update, this.generation);\n }\n } catch (error) {\n if (!signal.aborted && !(error instanceof Error && error.name === \"AbortError\")) {\n this.setStatus(\"error\");\n this.options.onError?.(error, this.generation);\n }\n } finally {\n this.running = false;\n if (signal.aborted && this.status !== \"error\") this.setStatus(\"idle\");\n }\n }\n}\n",
|
|
83
|
+
"export * from \"./reducer.js\";\nexport * from \"./selectors.js\";\nexport { hydrateState, syncEvents } from \"./sync.js\";\nexport type { SyncEventsClient } from \"./sync.js\";\nexport * from \"./session-sync-controller.js\";\n",
|
|
84
|
+
"import type { JobSnapshot } from \"@vykor/protocol\";\nimport { normalizeApprovalMode } from \"../configuration/runtime-configuration.js\";\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 ` approval: ${normalizeApprovalMode(host.approvalMode ?? permissionMode) ?? \"ask\"}`,\n ` work: ${host.workMode ?? (permissionMode === \"plan\" ? \"plan\" : \"execute\")}`,\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((listed) => ({ jobs: listed.jobs, errors: listed.errors }))\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 ? `${jobsResult.jobs.length}${\"errors\" in jobsResult && jobsResult.errors.length ? ` (${jobsResult.errors.map(error => `${error.kind}: ${error.message}`).join(\"; \")})` : \"\"}`\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 listed = await client.jobs.list({\n sessionId,\n kinds: [\"agent\"],\n includeFinished: true,\n limit: 100,\n });\n const agents = listed.jobs;\n if (agents.length === 0 && !listed.errors.length) {\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 ...listed.errors.map(error => `${error.kind}: ${error.message}`),\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((listed) => ({ jobs: listed.jobs, errors: listed.errors }))\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 ? `${jobsResult.jobs.length}${\"errors\" in jobsResult && jobsResult.errors.length ? ` (${jobsResult.errors.map(error => `${error.kind}: ${error.message}`).join(\"; \")})` : \"\"}`\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",
|
|
85
|
+
"import type { JobReadResult, JobSnapshot, JobTarget } 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, kind, id, runId, ...extra] = args.split(/\\s+/).filter(Boolean);\n if ((!sub || sub === \"list\") && !kind) {\n await readPresentation(`jobs:${sessionId}`, \"Jobs\", async () => {\n const listed = await client.jobs.list({\n sessionId,\n includeFinished: true,\n limit: 100,\n });\n const { jobs, errors } = listed;\n if (jobs.length === 0 && errors.length === 0) return \"No Jobs.\";\n return [\n `Jobs (${jobs.length}):`,\n \"\",\n ...jobs.map((job) => ` ${job.id} [${job.status}] ${job.kind}: ${job.label}${job.target.kind === \"agent\" ? ` runId=${job.target.runId}` : \"\"}`),\n ...errors.map(error => `${error.kind}: ${error.message}`),\n ].join(\"\\n\");\n });\n return \"handled\";\n }\n const target: JobTarget | undefined = kind === \"agent\" && id && runId ? { kind, jobId: id, runId } : [\"shell\", \"terminal\", \"workflow\", \"dream\"].includes(kind ?? \"\") && id && !runId ? { kind: kind as \"shell\" | \"terminal\" | \"workflow\" | \"dream\", jobId: id } : undefined;\n if (sub === \"show\" && target && extra.length === 0) {\n await readPresentation(`job:${sessionId}:${id}`, \"Jobs\", async () => {\n const result = await client.jobs.read(target, { sessionId });\n return formatJobReadResult(result);\n });\n return \"handled\";\n }\n if (sub === \"cancel\" && target && extra.length === 0) {\n const snapshot = await client.jobs.cancel(target, {\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 KIND ID [RUN_ID] | cancel KIND ID [RUN_ID]]\");\n return \"handled\";\n}\n",
|
|
85
86
|
"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",
|
|
86
87
|
"import { patchSessionRuntimeMetadata } from \"../configuration/runtime-configuration.js\";\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\" | \"workMode\" | \"permissionMode\">,\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 current = host.workMode ?? (host.permissionMode === \"plan\" ? \"plan\" : \"execute\");\n const arg = slash.args.trim();\n const next = arg === \"on\" ? \"plan\"\n : arg === \"off\" ? \"execute\"\n : arg === \"\" ? (current === \"plan\" ? \"execute\" : \"plan\") : undefined;\n if (!next) {\n emit(\"Usage: /plan [on|off]\");\n return \"handled\";\n }\n patchStatus({ work_mode: next });\n if (sessionId) {\n await client.sessions.update(sessionId, {\n metadata: patchSessionRuntimeMetadata({}, { workMode: next }),\n });\n }\n emit(`Work 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",
|
|
87
88
|
"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",
|
|
88
89
|
"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 /** Legacy mode accepted while migrating older hosts. */\n permissionMode?: string;\n approvalMode?: string;\n workMode?: 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",
|
|
89
90
|
"export * from \"./session-commands.js\";\n",
|
|
90
|
-
"/**\n * @rzx/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/configuration/system-resource.js\";\nexport {\n SystemResource,\n ProviderResource,\n AuthResource,\n ProjectResource,\n PluginResource,\n PluginUiHistoryResource,\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 { normalizeApprovalMode, isWorkMode, patchSessionRuntimeMetadata, readSessionRuntimeConfig } from \"./configuration/runtime-configuration.js\";\nexport type { ApprovalMode, WorkMode, ApprovalReviewRecord } 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 type { PluginCatalogEntry, AgentEnvironmentCapabilities, AttachmentAssetRecord, CreateNoteInput, NoteRecord, UpdateNoteInput, ClientProtocolSupport, ProtocolCompatibility, ServerCapabilities, SearchSessionsOptions, SessionSearchResult } from \"@vykor/protocol\";\nexport { checkProtocolCompatibility, CURRENT_PROTOCOL_VERSION, readSessionModelRetryState, readSessionModelUsage, isSupersededModelPart, supportsFeature } from \"@vykor/protocol\";\nexport type { SessionModelRetryState, SessionModelUsageSummary } 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 { isPluginIconSource, isPluginWebUrl, readRuntimeMetadata } from \"@vykor/protocol\";\nexport type { SessionRuntimeConfig, SessionRuntimeConfigPatch } 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 { TerminalCreateRequest, TerminalEvent, TerminalReadRequest, TerminalReadResult, TerminalResizeRequest, TerminalRuntime, TerminalSessionInfo, TerminalSessionStatus, TerminalSignal, TerminalSource, TerminalWriteRequest, JobCapabilities, JobKind, JobReadResult, JobSnapshot, JobStatus, JobWaitResult, DurableChannelMessageInput, DurableChannelMessageResult, ExternalConversationRecord, ChannelDeliveryRecord, ChannelDeliveryStatus, ChannelStatusSnapshot, ChannelConnectorRuntimeStatus, ChannelDenialNotice, ChannelDomain, ChannelRuntimeControlInput, ChannelRuntimeState, ChannelRuntimeStatus, FeishuAllowInput, FeishuChannelSnapshot, FeishuConnectInput, FeishuPatchInput, FeishuRegistrationSnapshot, FeishuRegistrationStartInput, FeishuRegistrationState, RecordChannelDeliveryInput } from \"@vykor/protocol\";\n\nexport type { GoalStopReason, GoalExternalWait } from \"@vykor/protocol\";\n\nexport { officeFormat, OFFICE_MEDIA_TYPES } from \"@vykor/protocol\";\nexport type { OfficeFormat, OfficePreview } from \"@vykor/protocol\";\n\nexport { PluginAppResource } from \"./resources/plugins/plugin-app-resource.js\";\nexport { getPluginAppToolPolicy } from \"./resources/plugins/plugin-app-policy.js\";\nexport type { PluginAppToolPolicy, PluginAppToolDescriptor } from \"@vykor/protocol\";\nexport type { PluginAppToolRequest, PluginAppConversationRequest, PluginAppActionResponse, PluginAppActionReceipt, PluginAppSubmissionReceipt, PluginAppRecord, PluginAppSource, PluginAppRuntimeLease, PluginAppResponse } from \"@vykor/protocol\";\nexport { PLUGIN_APP_INPUT_LIMITS, PLUGIN_APP_DATA_LIMITS, PLUGIN_APP_RESOURCE_LIMITS, parsePluginAppConversationRequest, copyPluginAppJson, parseOpenPluginAppInput, parsePluginAppSource, parsePluginAppToolRequest } from \"@vykor/protocol\";\nexport { parseMcpCallResultData } from \"@vykor/protocol\";\nexport { isPluginAppAdmissionRejection, type PluginAppAdmissionRejection } from \"@vykor/protocol\";\n\nexport { readPluginUiInstance, readPluginUiAction, parsePluginUiSubmissionRecord, parsePluginUiConversationReceipt, ProtocolValidationError } from \"@vykor/protocol\";\nexport type { JsonValue, PluginUiInstanceRecord, PluginUiActionRunMetadata, PluginUiActionReceipt, PluginUiActionResponse, PluginUiSubmissionRecord, PluginUiConversationReceipt } from \"@vykor/protocol\";\n\nexport type { MarketplaceCatalog, MarketplaceSource, MarketplaceSourceView, MarketplaceEntry, MarketplaceSelection, MarketplacePreview, MarketplaceInstallInput, MarketplaceOperation, MarketplaceProvenance } from \"./types/extension-types.js\";\n",
|
|
91
|
+
"/**\n * @rzx/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/configuration/system-resource.js\";\nexport {\n SystemResource,\n ProviderResource,\n AuthResource,\n ProjectResource,\n PluginResource,\n PluginUiHistoryResource,\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 { normalizeApprovalMode, isWorkMode, patchSessionRuntimeMetadata, readSessionRuntimeConfig } from \"./configuration/runtime-configuration.js\";\nexport type { ApprovalMode, WorkMode, ApprovalReviewRecord } 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 type { PluginCatalogEntry, AgentEnvironmentCapabilities, AttachmentAssetRecord, CreateNoteInput, NoteRecord, UpdateNoteInput, ClientProtocolSupport, ProtocolCompatibility, ServerCapabilities, SearchSessionsOptions, SessionSearchResult } from \"@vykor/protocol\";\nexport { checkProtocolCompatibility, CURRENT_PROTOCOL_VERSION, readSessionModelRetryState, readSessionModelUsage, isSupersededModelPart, supportsFeature } from \"@vykor/protocol\";\nexport type { SessionModelRetryState, SessionModelUsageSummary } 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 { isPluginIconSource, isPluginWebUrl, readRuntimeMetadata } from \"@vykor/protocol\";\nexport type { SessionRuntimeConfig, SessionRuntimeConfigPatch } 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 { TerminalCreateRequest, TerminalEvent, TerminalReadRequest, TerminalReadResult, TerminalResizeRequest, TerminalRuntime, TerminalSessionInfo, TerminalSessionStatus, TerminalSignal, TerminalSource, TerminalWriteRequest, JobCapabilities, JobTarget, JobInputReceipt, JobListResult, JobKind, JobReadResult, JobSnapshot, JobStatus, JobWaitResult, DurableChannelMessageInput, DurableChannelMessageResult, ExternalConversationRecord, ChannelDeliveryRecord, ChannelDeliveryStatus, ChannelStatusSnapshot, ChannelConnectorRuntimeStatus, ChannelDenialNotice, ChannelDomain, ChannelRuntimeControlInput, ChannelRuntimeState, ChannelRuntimeStatus, FeishuAllowInput, FeishuChannelSnapshot, FeishuConnectInput, FeishuPatchInput, FeishuRegistrationSnapshot, FeishuRegistrationStartInput, FeishuRegistrationState, RecordChannelDeliveryInput } from \"@vykor/protocol\";\n\nexport type { GoalStopReason, GoalExternalWait } from \"@vykor/protocol\";\n\nexport { officeFormat, OFFICE_MEDIA_TYPES } from \"@vykor/protocol\";\nexport type { OfficeFormat, OfficePreview } from \"@vykor/protocol\";\n\nexport { PluginAppResource } from \"./resources/plugins/plugin-app-resource.js\";\nexport { getPluginAppToolPolicy } from \"./resources/plugins/plugin-app-policy.js\";\nexport type { PluginAppToolPolicy, PluginAppToolDescriptor } from \"@vykor/protocol\";\nexport type { PluginAppToolRequest, PluginAppConversationRequest, PluginAppActionResponse, PluginAppActionReceipt, PluginAppSubmissionReceipt, PluginAppRecord, PluginAppSource, PluginAppRuntimeLease, PluginAppResponse } from \"@vykor/protocol\";\nexport { PLUGIN_APP_INPUT_LIMITS, PLUGIN_APP_DATA_LIMITS, PLUGIN_APP_RESOURCE_LIMITS, parsePluginAppConversationRequest, copyPluginAppJson, parseOpenPluginAppInput, parsePluginAppSource, parsePluginAppToolRequest } from \"@vykor/protocol\";\nexport { parseMcpCallResultData } from \"@vykor/protocol\";\nexport { isPluginAppAdmissionRejection, type PluginAppAdmissionRejection } from \"@vykor/protocol\";\n\nexport { readPluginUiInstance, readPluginUiAction, parsePluginUiSubmissionRecord, parsePluginUiConversationReceipt, ProtocolValidationError } from \"@vykor/protocol\";\nexport type { JsonValue, PluginUiInstanceRecord, PluginUiActionRunMetadata, PluginUiActionReceipt, PluginUiActionResponse, PluginUiSubmissionRecord, PluginUiConversationReceipt } from \"@vykor/protocol\";\n\nexport type { MarketplaceCatalog, MarketplaceSource, MarketplaceSourceView, MarketplaceEntry, MarketplaceSelection, MarketplacePreview, MarketplaceInstallInput, MarketplaceOperation, MarketplaceProvenance } from \"./types/extension-types.js\";\n",
|
|
91
92
|
"import type { JobReadResult, JobSnapshot } from \"@rzx/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",
|
|
92
93
|
"import {\n selectVisibleSessionMessagesWithParts,\n type SessionBucket,\n type SessionMessagePartRecord,\n type SessionMessageRecord,\n} from \"@rzx/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",
|
|
93
94
|
"import type {\n CommandCatalogEntry,\n VykorClient,\n VykorClientState,\n PresentationReadRequest,\n SlashLine,\n} from \"@rzx/client\";\nimport {\n LOCAL_COMMAND_DETAILS,\n LOCAL_COMMAND_NAMES,\n dispatchSessionCommand,\n hasActiveRun,\n mergeCommandDetails,\n parseSlashLine,\n resolveSessionCwd,\n} from \"@rzx/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 approvalMode: typeof statusRef.current.approval_mode === \"string\" ? statusRef.current.approval_mode : undefined,\n workMode: typeof statusRef.current.work_mode === \"string\" ? statusRef.current.work_mode : 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",
|
|
@@ -95,9 +96,9 @@
|
|
|
95
96
|
"import type { VykorClientState, PermissionRequestRecord } from \"@rzx/client\";\nimport { selectFirstPendingPermission } from \"@rzx/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",
|
|
96
97
|
"import {\n patchSessionRuntimeMetadata,\n normalizeApprovalMode,\n isWorkMode,\n type SessionRuntimeConfigPatch,\n type VykorClientState,\n type SessionBucket,\n type SessionRecord,\n type SyncEventUpdate,\n} from \"@rzx/client\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function sessionRuntimeMetadata(input: {\n model?: unknown;\n provider?: unknown;\n baseUrl?: unknown;\n apiFormat?: unknown;\n permissionMode?: unknown;\n approvalMode?: unknown;\n workMode?: unknown;\n maxTurns?: unknown;\n sessionMode?: unknown;\n pluginsEnabled?: unknown;\n}): Record<string, unknown> {\n const runtime: SessionRuntimeConfigPatch = {};\n if (typeof input.model === \"string\" && input.model) {\n runtime.model = input.model;\n }\n if (typeof input.provider === \"string\" && input.provider) {\n runtime.provider = input.provider;\n }\n if (typeof input.baseUrl === \"string\" && input.baseUrl) {\n runtime.baseUrl = input.baseUrl;\n }\n if (input.apiFormat === \"anthropic\" || input.apiFormat === \"openai\") {\n runtime.apiFormat = input.apiFormat;\n }\n if (input.approvalMode !== undefined || input.permissionMode !== undefined) {\n runtime.approvalMode = normalizeApprovalMode(input.approvalMode ?? input.permissionMode) ?? \"ask\";\n }\n if (isWorkMode(input.workMode)) {\n runtime.workMode = input.workMode;\n } else if (runtime.approvalMode !== undefined) {\n runtime.workMode = input.permissionMode === \"plan\" ? \"plan\" : \"execute\";\n }\n if (typeof input.maxTurns === \"number\" && Number.isFinite(input.maxTurns)) {\n runtime.maxTurns = input.maxTurns;\n }\n if (input.sessionMode === \"coordinator\" || input.sessionMode === \"direct\") {\n runtime.sessionMode = input.sessionMode;\n }\n if (typeof input.pluginsEnabled === \"boolean\") {\n runtime.pluginsEnabled = input.pluginsEnabled;\n }\n return patchSessionRuntimeMetadata({}, runtime);\n}\n\nexport function archiveClientSession(\n state: VykorClientState,\n sessionId: string,\n archivedAt: number\n): VykorClientState {\n const current = state.sessions[sessionId];\n if (!current || current.status === \"archived\") return state;\n const archived: SessionRecord = {\n ...current,\n status: \"archived\",\n archivedAt,\n updatedAt: Math.max(current.updatedAt, archivedAt),\n };\n const bucket = state.buckets[sessionId];\n return {\n ...state,\n sessions: { ...state.sessions, [sessionId]: archived },\n buckets: bucket\n ? { ...state.buckets, [sessionId]: { ...bucket, session: archived } }\n : state.buckets,\n };\n}\n\nexport function listTopLevelSessions(\n sessions: Iterable<SessionRecord>,\n activeSessionId?: string\n): SessionRecord[] {\n return [...sessions]\n .filter((session) => !session.parentId && session.status !== \"archived\")\n .sort((a, b) => {\n if (a.id === activeSessionId) return -1;\n if (b.id === activeSessionId) return 1;\n return b.updatedAt - a.updatedAt;\n });\n}\n\nexport function sessionSelectOptions(\n sessions: Iterable<SessionRecord>,\n activeSessionId?: string\n): Array<{ value: string; label: string; description: string }> {\n return listTopLevelSessions(sessions, activeSessionId).map((session) => ({\n value: session.id,\n label: `${session.id === activeSessionId ? \"* \" : \"\"}${session.title || session.id}`,\n description: `${session.model} | ${session.status}`,\n }));\n}\n\nexport type RecoverableRun = {\n id: string;\n error?: string;\n prompt: string;\n};\n\nexport function recoverableInterruptedRuns(bucket?: SessionBucket): RecoverableRun[] {\n if (!bucket) return [];\n const recoveredSourceRunIds = new Set(\n bucket.inputs.flatMap((input) =>\n isRecord(input.metadata.recovery) && typeof input.metadata.recovery.sourceRunId === \"string\"\n ? [input.metadata.recovery.sourceRunId]\n : [],\n ),\n );\n return Object.values(bucket.runs)\n .filter((run) => run.status === \"interrupted\" && !!run.inputId && !recoveredSourceRunIds.has(run.id))\n .sort((a, b) => b.updatedAt - a.updatedAt)\n .flatMap((run) => {\n const input = bucket.inputs.find((candidate) => candidate.id === run.inputId);\n return input ? [{ id: run.id, error: run.error, prompt: input.content }] : [];\n });\n}\n\nexport function shouldCoalesceClientState(update: SyncEventUpdate): boolean {\n return update.source === \"live\" && update.event?.type === \"session.message.part.delta\";\n}\n",
|
|
97
98
|
"import type { McpServerStatus } from \"@rzx/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",
|
|
98
|
-
"import {\n createPromptRequestId,\n patchSessionRuntimeMetadata,\n normalizeApprovalMode,\n type CommandCatalogEntry,\n type JobResource,\n type VykorClient,\n type VykorClientState,\n type SessionRecord,\n} from \"@rzx/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(\"@rzx/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 = normalizeApprovalMode(action.permission_mode) ?? \"ask\";\n ctx.setStatus((current) => ({ ...current, approval_mode: mode, permission_mode: mode }));\n if (sessionId) {\n await client.sessions.update(sessionId, {\n metadata: patchSessionRuntimeMetadata({}, { approvalMode: 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",
|
|
99
|
+
"import {\n createPromptRequestId,\n patchSessionRuntimeMetadata,\n normalizeApprovalMode,\n type CommandCatalogEntry,\n type JobResource,\n type VykorClient,\n type VykorClientState,\n type SessionRecord,\n} from \"@rzx/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(\"@rzx/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 = normalizeApprovalMode(action.permission_mode) ?? \"ask\";\n ctx.setStatus((current) => ({ ...current, approval_mode: mode, permission_mode: mode }));\n if (sessionId) {\n await client.sessions.update(sessionId, {\n metadata: patchSessionRuntimeMetadata({}, { approvalMode: 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 (() => { const selected = ctx.jobStateRef.current.jobs.find(job => job.id === action.job_id)?.target; if (!selected) throw new Error(\"请先选择一个当前任务。\"); return selected; })(),\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 (() => { const selected = ctx.jobStateRef.current.jobs.find(job => job.id === action.job_id)?.target; if (!selected) throw new Error(\"请先选择一个当前任务。\"); return selected; })(),\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",
|
|
99
100
|
"export * from \"./connection\";\nexport * from \"./permissions\";\nexport * from \"./view-model\";\nexport * from \"./mcp\";\nexport * from \"./actions\";\n",
|
|
100
|
-
"import { useCallback, useEffect, useMemo, useRef, useState, type SetStateAction } from \"react\";\nimport {\n VykorClient,\n SessionSyncController,\n createPromptRequestId,\n createInitialClientState,\n readSessionRuntimeConfig,\n normalizeApprovalMode,\n isWorkMode,\n readSessionModelUsage,\n selectSessionModelRetry,\n type CommandCatalogEntry,\n type ModelProviderInfo,\n type VykorClientState,\n type PresentationReadRequest,\n type SessionRecord,\n} from \"@rzx/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 initialApprovalMode = normalizeApprovalMode(daemon?.approvalMode ?? daemon?.permissionMode) ?? \"ask\";\n const initialWorkMode = isWorkMode(daemon?.workMode) ? daemon.workMode : daemon?.permissionMode === \"plan\" ? \"plan\" : \"execute\";\n const [clientState, setClientState] = useState<VykorClientState>(() => createInitialClientState());\n const [activeSessionId, setActiveSessionId] = useState<string | undefined>();\n const [status, setStatus] = useState<Record<string, unknown>>({\n approval_mode: initialApprovalMode,\n permission_mode: initialApprovalMode,\n work_mode: initialWorkMode,\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 approvalMode: initialApprovalMode,\n workMode: initialWorkMode,\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 approval_mode: normalizeApprovalMode(runtime.approvalMode) ?? \"ask\",\n permission_mode: normalizeApprovalMode(runtime.approvalMode) ?? \"ask\",\n work_mode: runtime.workMode ?? \"execute\",\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 const permission = settings.permission && typeof settings.permission === \"object\"\n ? settings.permission as Record<string, unknown> : {};\n const approvalMode = normalizeApprovalMode(daemon.approvalMode ?? daemon.permissionMode ?? permission.mode) ?? \"ask\";\n const workMode = isWorkMode(daemon.workMode) ? daemon.workMode\n : (daemon.permissionMode ?? permission.mode) === \"plan\" ? \"plan\" : \"execute\";\n defaultRuntimeRef.current = {\n model,\n approvalMode,\n workMode,\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 approval_mode: approvalMode,\n permission_mode: approvalMode,\n work_mode: workMode,\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?.approvalMode, daemon?.workMode, 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 approvalMode: statusRef.current.approval_mode ?? statusRef.current.permission_mode ?? initialApprovalMode,\n workMode: statusRef.current.work_mode ?? initialWorkMode,\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?.approvalMode, daemon?.workMode, 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",
|
|
101
|
+
"import { useCallback, useEffect, useMemo, useRef, useState, type SetStateAction } from \"react\";\nimport {\n VykorClient,\n SessionSyncController,\n createPromptRequestId,\n createInitialClientState,\n readSessionRuntimeConfig,\n normalizeApprovalMode,\n isWorkMode,\n readSessionModelUsage,\n selectSessionModelRetry,\n type CommandCatalogEntry,\n type ModelProviderInfo,\n type VykorClientState,\n type PresentationReadRequest,\n type SessionRecord,\n} from \"@rzx/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 initialApprovalMode = normalizeApprovalMode(daemon?.approvalMode ?? daemon?.permissionMode) ?? \"ask\";\n const initialWorkMode = isWorkMode(daemon?.workMode) ? daemon.workMode : daemon?.permissionMode === \"plan\" ? \"plan\" : \"execute\";\n const [clientState, setClientState] = useState<VykorClientState>(() => createInitialClientState());\n const [activeSessionId, setActiveSessionId] = useState<string | undefined>();\n const [status, setStatus] = useState<Record<string, unknown>>({\n approval_mode: initialApprovalMode,\n permission_mode: initialApprovalMode,\n work_mode: initialWorkMode,\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 approvalMode: initialApprovalMode,\n workMode: initialWorkMode,\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.jobs, sessionId);\n if (validated.error || response.errors.length) {\n const validationError = validated.error ?? response.errors.map(error => `${error.kind}: ${error.message}`).join(\"; \");\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 selected = jobStateRef.current.jobs.find(job => job.id === jobId)?.target;\n if (!selected) throw new Error(\"请先选择一个当前任务。\");\n const response = await client.jobs.read(selected, {\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 approval_mode: normalizeApprovalMode(runtime.approvalMode) ?? \"ask\",\n permission_mode: normalizeApprovalMode(runtime.approvalMode) ?? \"ask\",\n work_mode: runtime.workMode ?? \"execute\",\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 const permission = settings.permission && typeof settings.permission === \"object\"\n ? settings.permission as Record<string, unknown> : {};\n const approvalMode = normalizeApprovalMode(daemon.approvalMode ?? daemon.permissionMode ?? permission.mode) ?? \"ask\";\n const workMode = isWorkMode(daemon.workMode) ? daemon.workMode\n : (daemon.permissionMode ?? permission.mode) === \"plan\" ? \"plan\" : \"execute\";\n defaultRuntimeRef.current = {\n model,\n approvalMode,\n workMode,\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 approval_mode: approvalMode,\n permission_mode: approvalMode,\n work_mode: workMode,\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?.approvalMode, daemon?.workMode, 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 approvalMode: statusRef.current.approval_mode ?? statusRef.current.permission_mode ?? initialApprovalMode,\n workMode: statusRef.current.work_mode ?? initialWorkMode,\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?.approvalMode, daemon?.workMode, 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",
|
|
101
102
|
"// ─── 列表/视口 ────────────────────────────────────────────────────────────────\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",
|
|
102
103
|
"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",
|
|
103
104
|
"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",
|
|
@@ -118,7 +119,7 @@
|
|
|
118
119
|
"import type { UiNode } from \"../types/ui\";\nimport { useTerminalDimensions } from \"@opentui/react\";\nimport { useTheme } from \"../theme/ThemeContext\";\nimport { Logo } from \"../components/Logo\";\n\nexport function Home({ children }: { children?: UiNode }) {\n const { theme } = useTheme();\n const { width } = useTerminalDimensions();\n\n // Prompt container width: min(80, max(40, floor(width * 0.6)))\n const promptWidth = Math.min(80, Math.max(40, Math.floor(width * 0.6)));\n\n return (\n <box flexDirection=\"column\" width=\"100%\" height=\"100%\" backgroundColor={theme.colors.background}>\n {/* Top spacer */}\n <box flexGrow={1} />\n\n {/* Logo centered horizontally */}\n <box flexDirection=\"row\" justifyContent=\"center\">\n <Logo />\n </box>\n\n {/* 1-line gap */}\n <text>{\"\"}</text>\n\n {/* Children container centered */}\n <box flexDirection=\"row\" justifyContent=\"center\">\n <box width={promptWidth}>{children}</box>\n </box>\n\n {/* Hint row: 对齐输入框右缘(与 opencode 一致),不是屏幕右缘 */}\n <box flexDirection=\"row\" justifyContent=\"center\">\n <box width={promptWidth} flexDirection=\"row\" justifyContent=\"flex-end\">\n <text fg={theme.colors.muted}>\n <span fg={theme.colors.foreground}>tab</span>\n <span fg={theme.colors.muted}>{\" mode \"}</span>\n <span fg={theme.colors.foreground}>ctrl+p</span>\n <span fg={theme.colors.muted}>{\" commands\"}</span>\n </text>\n </box>\n </box>\n\n {/* Bottom spacer */}\n <box flexGrow={1} />\n </box>\n );\n}\n",
|
|
119
120
|
"import { SyntaxStyle, RGBA } from \"@opentui/core\";\nimport type { ThemeConfig } from \"./builtinThemes\";\n\n/** 由主题色生成 <markdown>/<code> 用的 SyntaxStyle。 */\nexport function createSyntaxStyle(theme: ThemeConfig): SyntaxStyle {\n const c = theme.colors;\n return SyntaxStyle.fromStyles({\n \"markup.heading.1\": { fg: RGBA.fromHex(c.primary), bold: true },\n \"markup.heading\": { fg: RGBA.fromHex(c.primary), bold: true },\n \"markup.list\": { fg: RGBA.fromHex(c.accent) },\n \"markup.raw\": { fg: RGBA.fromHex(c.warning) },\n \"markup.bold\": { fg: RGBA.fromHex(c.foreground), bold: true },\n \"markup.italic\": { fg: RGBA.fromHex(c.foreground), italic: true },\n \"markup.link.url\": { fg: RGBA.fromHex(c.info), underline: true },\n comment: { fg: RGBA.fromHex(c.muted), italic: true },\n string: { fg: RGBA.fromHex(c.success) },\n keyword: { fg: RGBA.fromHex(c.accent) },\n function: { fg: RGBA.fromHex(c.info) },\n number: { fg: RGBA.fromHex(c.warning) },\n type: { fg: RGBA.fromHex(c.primary) },\n default: { fg: RGBA.fromHex(c.foreground) },\n });\n}\n",
|
|
120
121
|
"import { createTwoFilesPatch } from \"diff\";\nimport type { SyntaxStyle } from \"@opentui/core\";\nimport { useTheme } from \"../../theme/ThemeContext\";\n\nconst MAX_PATCH_LINES = 20;\n\nfunction filetypeFromPath(filePath: string): string | undefined {\n const ext = filePath.split(\".\").pop()?.toLowerCase();\n const map: Record<string, string> = {\n ts: \"typescript\",\n tsx: \"typescript\",\n js: \"javascript\",\n jsx: \"javascript\",\n py: \"python\",\n rs: \"rust\",\n go: \"go\",\n json: \"json\",\n md: \"markdown\",\n css: \"css\",\n html: \"html\",\n sh: \"bash\",\n yaml: \"yaml\",\n yml: \"yaml\",\n };\n return ext ? map[ext] : undefined;\n}\n\nexport function truncatePatch(patch: string, maxLines = MAX_PATCH_LINES): string {\n const lines = patch.split(\"\\n\");\n if (lines.length <= maxLines) return patch;\n const kept = lines.slice(0, maxLines);\n const remaining = lines.length - maxLines;\n kept.push(`… +${remaining} more lines`);\n return kept.join(\"\\n\");\n}\n\nexport type ToolDiffProps = {\n filePath: string;\n oldText: string;\n newText: string;\n syntaxStyle?: SyntaxStyle;\n};\n\nexport function ToolDiff({ filePath, oldText, newText, syntaxStyle }: ToolDiffProps) {\n const { theme } = useTheme();\n const c = theme.colors;\n\n const rawPatch = createTwoFilesPatch(filePath, filePath, oldText, newText, \"\", \"\");\n const patch = truncatePatch(rawPatch);\n const filetype = filetypeFromPath(filePath);\n\n // Derive faint row backgrounds (~15% opacity) so text stays legible.\n // Signs (+/-) and line-number gutters carry the full theme color instead.\n const toFaintBg = (hex: string) => hex.replace(/^(#[\\da-fA-F]{6}).*$/, \"$126\");\n\n return (\n <diff\n diff={patch}\n view=\"unified\"\n showLineNumbers={true}\n filetype={filetype}\n syntaxStyle={syntaxStyle}\n addedBg={toFaintBg(c.success)}\n removedBg={toFaintBg(c.error)}\n addedSignColor={c.success}\n removedSignColor={c.error}\n addedLineNumberBg={toFaintBg(c.success)}\n removedLineNumberBg={toFaintBg(c.error)}\n />\n );\n}\n",
|
|
121
|
-
"// 展示上限语义与桌面端 conversation-page/message/reasoning-text.ts 保持一致。\nexport const REASONING_DISPLAY_LIMIT = 20_000;\n\nexport function truncateReasoning(\n text: string,\n limit = REASONING_DISPLAY_LIMIT,\n): { text: string; omitted: number } {\n if (text.length <= limit) return { text, omitted: 0 };\n return { text: text.slice(-limit), omitted: text.length - limit };\n}\n",
|
|
122
|
+
"// 展示上限语义与桌面端 conversation-page/message/models/reasoning-text.ts 保持一致。\nexport const REASONING_DISPLAY_LIMIT = 20_000;\n\nexport function truncateReasoning(\n text: string,\n limit = REASONING_DISPLAY_LIMIT,\n): { text: string; omitted: number } {\n if (text.length <= limit) return { text, omitted: 0 };\n return { text: text.slice(-limit), omitted: text.length - limit };\n}\n",
|
|
122
123
|
"import React from \"react\";\nimport { KeyEvent, TextAttributes } from \"@opentui/core\";\nimport type { SyntaxStyle } from \"@opentui/core\";\nimport { useTheme } from \"../../theme/ThemeContext\";\nimport type { TranscriptItem } from \"../../types\";\nimport { ToolDiff } from \"../../components/messages/ToolDiff\";\nimport { truncateReasoning } from \"./reasoning-text\";\n\n/**\n * Pick the first \"summary\" value from a tool_input record.\n * Priority: command > file_path > path > pattern > url; then first key.\n * Result is truncated to `maxLen` chars.\n */\nfunction summarizeToolInput(\n toolInput: Record<string, unknown> | undefined,\n maxLen = 60,\n): string {\n if (!toolInput) return \"\";\n const priority = [\"command\", \"file_path\", \"path\", \"pattern\", \"url\"];\n for (const key of priority) {\n const val = toolInput[key];\n if (val !== undefined && val !== null && typeof val === \"string\") {\n return val.slice(0, maxLen);\n }\n }\n // Fallback: first string-valued key\n for (const [, val] of Object.entries(toolInput)) {\n if (typeof val === \"string\") {\n return val.slice(0, maxLen);\n }\n }\n return \"\";\n}\n\nfunction summarizeText(text: string, maxLen = 72): string {\n const firstLine = text.split(\"\\n\")[0] ?? \"\";\n if (firstLine.length <= maxLen) return firstLine;\n return firstLine.slice(0, Math.max(0, maxLen - 1)) + \"...\";\n}\n\nfunction countLines(text: string): number {\n return Math.max(1, text.split(\"\\n\").length);\n}\n\nfunction CollapsibleTranscriptBlock({\n summary,\n children,\n tone,\n}: {\n summary: React.ReactNode;\n children: React.ReactNode;\n tone: string;\n}) {\n const { theme } = useTheme();\n const [expanded, setExpanded] = React.useState(false);\n\n const toggle = React.useCallback(() => {\n setExpanded((value) => !value);\n }, []);\n\n const handleKeyDown = React.useCallback((event: KeyEvent) => {\n if (event.name === \"enter\" || event.name === \"space\") {\n toggle();\n }\n }, [toggle]);\n\n return (\n <box flexDirection=\"column\">\n <box\n focusable\n onMouseUp={toggle}\n onKeyDown={handleKeyDown}\n backgroundColor={expanded ? theme.colors.backgroundPanel : undefined}\n >\n <text fg={tone}>\n <span fg={theme.colors.muted}>{expanded ? \"[-] \" : \"[+] \"}</span>\n {summary}\n </text>\n </box>\n {expanded ? (\n <box\n paddingLeft={2}\n paddingTop={1}\n paddingBottom={1}\n >\n {children}\n </box>\n ) : null}\n </box>\n );\n}\n\nfunction TranscriptPartView({\n item,\n syntax,\n}: {\n item: TranscriptItem;\n syntax: SyntaxStyle;\n}) {\n const { theme } = useTheme();\n const c = theme.colors;\n const icons = theme.icons;\n\n switch (item.role) {\n case \"user\":\n return (\n <text fg={c.accent}>{icons.user + item.text}</text>\n );\n\n case \"reasoning\": {\n const truncated = truncateReasoning(item.text);\n return (\n <CollapsibleTranscriptBlock\n tone={c.muted}\n summary={`思考过程${item.streaming ? \" …\" : \"\"}`}\n >\n {truncated.omitted > 0\n ? <text fg={c.muted}>{`已省略前 ${truncated.omitted} 个字符`}</text>\n : null}\n <text fg={c.muted}>{truncated.text}</text>\n </CollapsibleTranscriptBlock>\n );\n }\n\n case \"assistant\":\n return <markdown content={item.text} syntaxStyle={syntax} streaming={item.streaming === true} />;\n\n case \"tool\": {\n const toolName = item.tool_name ?? \"tool\";\n\n const isEditTool = toolName === \"Edit\" || toolName === \"str_replace_editor\";\n const isWriteTool = toolName === \"Write\" || toolName === \"create_file\";\n\n if (isEditTool && item.tool_input?.old_string !== undefined && item.tool_input?.new_string !== undefined) {\n const filePath = String(item.tool_input.path ?? item.tool_input.file_path ?? \"file\");\n const oldText = String(item.tool_input.old_string);\n const newText = String(item.tool_input.new_string);\n const addedLines = newText.split(\"\\n\").length - oldText.split(\"\\n\").length;\n const sign = addedLines >= 0 ? `+${addedLines}` : `${addedLines}`;\n return (\n <CollapsibleTranscriptBlock\n tone={c.muted}\n summary={(\n <>\n <span fg={c.muted}>{icons.tool}</span>\n <span fg={c.foreground} attributes={TextAttributes.BOLD}>{filePath}</span>\n <span fg={addedLines >= 0 ? c.success : c.error}>{\" \" + sign}</span>\n </>\n )}\n >\n <ToolDiff filePath={filePath} oldText={oldText} newText={newText} syntaxStyle={syntax} />\n </CollapsibleTranscriptBlock>\n );\n }\n\n if (isWriteTool && item.tool_input?.content !== undefined) {\n const filePath = String(item.tool_input.path ?? item.tool_input.file_path ?? \"file\");\n const content = String(item.tool_input.content);\n return (\n <CollapsibleTranscriptBlock\n tone={c.muted}\n summary={(\n <>\n <span fg={c.muted}>{icons.tool}</span>\n <span fg={c.foreground} attributes={TextAttributes.BOLD}>{filePath}</span>\n <span fg={c.success}>{` +${content.split(\"\\n\").length}`}</span>\n </>\n )}\n >\n <ToolDiff filePath={filePath} oldText=\"\" newText={content} syntaxStyle={syntax} />\n </CollapsibleTranscriptBlock>\n );\n }\n\n const summary = summarizeToolInput(item.tool_input);\n return (\n <text fg={c.muted}>\n <span fg={c.muted}>{icons.tool}</span>\n <span fg={c.muted} attributes={TextAttributes.BOLD}>\n {toolName}\n </span>\n {summary ? <span fg={c.muted}>{\" \" + summary}</span> : null}\n </text>\n );\n }\n\n case \"tool_result\": {\n if (item.is_error) {\n return (\n <CollapsibleTranscriptBlock\n tone={c.error}\n summary={(\n <>\n <span fg={c.error}>{icons.error}</span>\n <span fg={c.foreground} attributes={TextAttributes.BOLD}>tool error</span>\n <span fg={c.muted}>{` ${countLines(item.text)} lines`}</span>\n {item.text ? <span fg={c.error}>{`: ${summarizeText(item.text)}`}</span> : null}\n </>\n )}\n >\n <text fg={c.error} wrapMode=\"word\">{item.text}</text>\n </CollapsibleTranscriptBlock>\n );\n }\n return (\n <CollapsibleTranscriptBlock\n tone={c.muted}\n summary={(\n <>\n <span fg={c.muted}>{icons.tool}</span>\n <span fg={c.foreground} attributes={TextAttributes.BOLD}>output</span>\n <span fg={c.muted}>{` ${countLines(item.text)} lines`}</span>\n {item.text ? <span fg={c.muted}>{`: ${summarizeText(item.text)}`}</span> : null}\n </>\n )}\n >\n <text fg={c.muted} wrapMode=\"word\">{item.text}</text>\n </CollapsibleTranscriptBlock>\n );\n }\n\n case \"system\":\n case \"log\":\n return <text fg={c.muted}>{item.text}</text>;\n\n default:\n return <text>{item.text}</text>;\n }\n}\n\nexport const TranscriptPart = React.memo(TranscriptPartView, (previous, next) => {\n const previousItem = previous.item;\n const nextItem = next.item;\n return previous.syntax === next.syntax\n && previousItem.id === nextItem.id\n && previousItem.role === nextItem.role\n && previousItem.text === nextItem.text\n && previousItem.streaming === nextItem.streaming\n && previousItem.tool_name === nextItem.tool_name\n && previousItem.tool_input === nextItem.tool_input\n && previousItem.is_error === nextItem.is_error;\n});\n",
|
|
123
124
|
"import { useEffect, useMemo, useState } from \"react\";\nimport type { SessionModelRetryState, SessionModelUsageSummary } from \"@rzx/client\";\nimport { useTheme } from \"../../theme/ThemeContext\";\nimport { createSyntaxStyle } from \"../../theme/syntax\";\nimport type { TranscriptItem } from \"../../types\";\nimport { TranscriptPart } from \"./parts\";\n\nexport type SessionProps = {\n items: TranscriptItem[];\n assistantBuffer: string;\n retry?: SessionModelRetryState;\n usage?: SessionModelUsageSummary;\n inputTokens?: number;\n outputTokens?: number;\n};\n\nexport function Session({ items, assistantBuffer, retry, usage, inputTokens = 0, outputTokens = 0 }: SessionProps) {\n const { theme } = useTheme();\n const syntax = useMemo(() => createSyntaxStyle(theme), [theme]);\n const [now, setNow] = useState(() => Date.now());\n useEffect(() => {\n if (!retry) return;\n setNow(Date.now());\n const timer = setInterval(() => setNow(Date.now()), 1_000);\n return () => clearInterval(timer);\n }, [retry?.generationId, retry?.attempt, retry?.nextRetryAt]);\n const seconds = retry ? Math.max(0, Math.ceil((retry.nextRetryAt - now) / 1_000)) : 0;\n const retryText = retry ? seconds > 0\n ? `连接中断,${seconds} 秒后重试(第 ${retry.retryNumber}/${retry.maxRetries} 次)`\n : `正在重新连接(第 ${retry.retryNumber}/${retry.maxRetries} 次)` : undefined;\n\n return (\n <scrollbox\n flexGrow={1}\n stickyScroll\n stickyStart=\"bottom\"\n verticalScrollbarOptions={{\n trackOptions: {\n foregroundColor: theme.colors.muted,\n backgroundColor: theme.colors.backgroundPanel,\n },\n }}\n >\n <box\n flexDirection=\"column\"\n paddingLeft={2}\n paddingRight={2}\n paddingTop={1}\n paddingBottom={1}\n rowGap={1}\n >\n {items.map((item, i) => (\n <TranscriptPart key={item.id ?? i} item={item} syntax={syntax} />\n ))}\n {assistantBuffer ? (\n <text wrapMode=\"word\">{assistantBuffer}</text>\n ) : null}\n {retryText ? <text fg={theme.colors.warning}>{retryText}</text> : null}\n {usage?.incomplete ? <text fg={theme.colors.muted}>{`已知用量:${inputTokens} 输入 / ${outputTokens} 输出;部分请求用量未知`}</text> : null}\n </box>\n </scrollbox>\n );\n}\n",
|
|
124
125
|
"/**\n * 解析后端 state_snapshot 的 status 字段。\n *\n * status 是 Record<string, unknown>(协议宽松),此前 App / Footer / Sidebar /\n * AppView 各自 String(status.x ?? ...) 解析,默认值还不统一。集中到这里:\n * mode 统一缺省 \"ask\",token 统一 Number(... ?? 0)。\n */\nimport { normalizeApprovalMode } from \"@rzx/client\";\nexport interface ParsedStatus {\n /** 授权档位,缺省 \"ask\" */\n mode: string;\n model: string;\n /** 推理强度(空串表示无) */\n effort: string;\n inputTokens: number;\n outputTokens: number;\n}\n\nexport function parseStatus(status: Record<string, unknown>): ParsedStatus {\n return {\n mode: normalizeApprovalMode(status.approval_mode ?? status.permission_mode) ?? \"ask\",\n model: String(status.model ?? \"\"),\n effort: String(status.effort ?? \"\"),\n inputTokens: Number(status.input_tokens ?? 0),\n outputTokens: Number(status.output_tokens ?? 0),\n };\n}\n",
|
|
@@ -136,7 +137,7 @@
|
|
|
136
137
|
"/**\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",
|
|
137
138
|
"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"
|
|
138
139
|
],
|
|
139
|
-
"mappings": "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",
|
|
140
|
-
"debugId": "
|
|
140
|
+
"mappings": "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",
|
|
141
|
+
"debugId": "D9F985CEDC561F0364756E2164756E21",
|
|
141
142
|
"names": []
|
|
142
143
|
}
|