@bastani/atomic 0.9.39 → 0.9.40-alpha.1
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/CHANGELOG.md +28 -0
- package/dist/builtin/intercom/CHANGELOG.md +14 -0
- package/dist/builtin/intercom/broker/broker.ts +523 -72
- package/dist/builtin/intercom/broker/client.ts +136 -5
- package/dist/builtin/intercom/broker/database-wake-up-bus.ts +274 -0
- package/dist/builtin/intercom/broker/group-membership.ts +2 -2
- package/dist/builtin/intercom/broker/multinode-router.ts +1500 -0
- package/dist/builtin/intercom/broker/multinode-state-store.ts +569 -0
- package/dist/builtin/intercom/broker/open-broker-state.ts +160 -0
- package/dist/builtin/intercom/broker/paths.ts +6 -0
- package/dist/builtin/intercom/broker/pending-send-registry.ts +14 -0
- package/dist/builtin/intercom/broker/recipient-receipts.ts +93 -0
- package/dist/builtin/intercom/broker/restoring-recipients.ts +263 -0
- package/dist/builtin/intercom/broker/send-handler.ts +241 -25
- package/dist/builtin/intercom/broker/session-id-reclaim.ts +41 -0
- package/dist/builtin/intercom/broker/socket-writes.ts +47 -0
- package/dist/builtin/intercom/broker/spawn.ts +10 -2
- package/dist/builtin/intercom/broker/sql-held-send-store.ts +96 -0
- package/dist/builtin/intercom/broker/sql-known-session-store.ts +129 -0
- package/dist/builtin/intercom/broker/sql-lease-store.ts +194 -0
- package/dist/builtin/intercom/broker/sql-outbox-store.ts +249 -0
- package/dist/builtin/intercom/broker/sql-pending-ask-store.ts +105 -0
- package/dist/builtin/intercom/broker/sql-restoring-reservation-store.ts +295 -0
- package/dist/builtin/intercom/broker/sql-sent-message-authority.ts +126 -0
- package/dist/builtin/intercom/broker/supervisor-channel.ts +10 -0
- package/dist/builtin/intercom/broker/wake-up-bus.ts +60 -0
- package/dist/builtin/intercom/index.bundle.mjs +793 -91
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/retry-policy.ts +4 -0
- package/dist/builtin/intercom/session-target.ts +24 -0
- package/dist/builtin/intercom/types.ts +57 -3
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +31 -0
- package/dist/builtin/subagents/README.md +18 -12
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/skills/agent-browser/SKILL.md +1 -1
- package/dist/builtin/subagents/skills/cua-driver/BROWSER.md +55 -8
- package/dist/builtin/subagents/skills/cua-driver/EMBEDDING.md +7 -2
- package/dist/builtin/subagents/skills/cua-driver/LINUX.md +7 -1
- package/dist/builtin/subagents/skills/cua-driver/MACOS.md +151 -27
- package/dist/builtin/subagents/skills/cua-driver/RUNTIME.md +1 -1
- package/dist/builtin/subagents/skills/cua-driver/SKILL.md +33 -17
- package/dist/builtin/subagents/skills/cua-driver/WINDOWS.md +5 -0
- package/dist/builtin/subagents/skills/cua-driver/WORKFLOW.md +46 -8
- package/dist/builtin/subagents/skills/subagent/SKILL.md +18 -20
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +8032 -6034
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +18 -0
- package/dist/builtin/workflows/README.md +1 -1
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/skills/impeccable/SKILL.md +8 -8
- package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/adapt.native.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/audit.md +4 -2
- package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/critique.md +22 -9
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/distill.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/extract.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/harden.md +2 -4
- package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +4 -4
- package/dist/builtin/workflows/skills/impeccable/reference/live.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +6 -6
- package/dist/builtin/workflows/skills/impeccable/reference/onboard.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +10 -0
- package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/VERSION +1 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/impeccable +6 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/impeccable.cmd +47 -22
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +34 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +25 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +33 -8
- package/dist/builtin/workflows/src/durable/journal/resolution.d.ts +7 -7
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +22855 -22308
- package/dist/builtin/workflows/src/index.js +106 -35
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +16 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +2 -0
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +6 -6
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +6 -3
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts +7 -2
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +29 -12
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session-recovery.d.ts +14 -0
- package/dist/core/agent-session-recovery.d.ts.map +1 -0
- package/dist/core/agent-session-recovery.js +83 -0
- package/dist/core/agent-session-recovery.js.map +1 -0
- package/dist/core/agent-session-tasks.d.ts.map +1 -1
- package/dist/core/agent-session-tasks.js +4 -6
- package/dist/core/agent-session-tasks.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +13 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +4 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +6 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/event-results.d.ts +21 -0
- package/dist/core/extensions/event-results.d.ts.map +1 -1
- package/dist/core/extensions/event-results.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +4 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts +9 -2
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +29 -0
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +7 -2
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +1 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/session-events.d.ts +30 -2
- package/dist/core/extensions/session-events.d.ts.map +1 -1
- package/dist/core/extensions/session-events.js.map +1 -1
- package/dist/core/sdk-types.d.ts +3 -2
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +3 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-storage.d.ts.map +1 -1
- package/dist/core/session-storage.js +15 -9
- package/dist/core/session-storage.js.map +1 -1
- package/dist/core/storage/process-selection.d.ts +39 -0
- package/dist/core/storage/process-selection.d.ts.map +1 -0
- package/dist/core/storage/process-selection.js +154 -0
- package/dist/core/storage/process-selection.js.map +1 -0
- package/dist/core/storage/provider.d.ts +6 -1
- package/dist/core/storage/provider.d.ts.map +1 -1
- package/dist/core/storage/provider.js +3 -2
- package/dist/core/storage/provider.js.map +1 -1
- package/dist/core/storage/selection.d.ts +1 -1
- package/dist/core/storage/selection.d.ts.map +1 -1
- package/dist/core/storage/selection.js.map +1 -1
- package/dist/core/storage/session/jsonl-session-store.d.ts +2 -0
- package/dist/core/storage/session/jsonl-session-store.d.ts.map +1 -1
- package/dist/core/storage/session/jsonl-session-store.js +38 -2
- package/dist/core/storage/session/jsonl-session-store.js.map +1 -1
- package/dist/core/tasks/completion.d.ts +11 -2
- package/dist/core/tasks/completion.d.ts.map +1 -1
- package/dist/core/tasks/completion.js +40 -16
- package/dist/core/tasks/completion.js.map +1 -1
- package/dist/core/tasks/pause.d.ts +4 -1
- package/dist/core/tasks/pause.d.ts.map +1 -1
- package/dist/core/tasks/pause.js +8 -5
- package/dist/core/tasks/pause.js.map +1 -1
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +7 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +11 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts +2 -0
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js +2 -0
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +4 -0
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +2 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +3 -0
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +2 -0
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.d.ts +2 -1
- package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +29 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +4 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-args.js +4 -0
- package/dist/modes/interactive-engine/engine-args.js.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.js +4 -4
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +4 -0
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/remote-renderer.js +1 -1
- package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +4 -1
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +4 -0
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +3 -0
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-timeouts.js +1 -0
- package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js +6 -1
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +12 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +44 -11
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/tools-manager.js +1 -1
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/background-tasks.md +5 -3
- package/docs/computer-use.md +2 -2
- package/docs/environment-variables.md +4 -1
- package/docs/extensions/events.md +29 -2
- package/docs/getting-started/first-session.md +1 -1
- package/docs/guides/intercom.md +1 -1
- package/docs/intercom/operations.md +103 -1
- package/docs/intercom/reference.md +10 -3
- package/docs/intercom.md +8 -6
- package/docs/keybindings.md +1 -1
- package/docs/models.md +1 -1
- package/docs/providers.md +4 -2
- package/docs/reference/cli.md +5 -0
- package/docs/rpc/protocol.md +19 -0
- package/docs/rpc.md +3 -0
- package/docs/sdk/web-server.md +1 -1
- package/docs/sdk.md +5 -2
- package/docs/sessions.md +17 -1
- package/docs/settings.md +5 -3
- package/docs/skills.md +1 -1
- package/docs/storage.md +54 -3
- package/docs/subagents.md +49 -9
- package/docs/usage.md +1 -1
- package/docs/windows.md +14 -4
- package/docs/workflows/api-reference.md +1 -1
- package/docs/workflows/authoring.md +1 -1
- package/docs/workflows/operations.md +10 -6
- package/npm-shrinkwrap.json +37 -37
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-renderer.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/remote-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Component } from \"@earendil-works/pi-tui\";\nimport type { CustomMessage } from \"../../core/messages.ts\";\nimport type { ToolExecutionComponent } from \"../interactive/components/tool-execution.ts\";\nimport type { IsolatedInteractiveRuntime } from \"./isolated-runtime.js\";\nimport type { InteractiveEngineCommand, JsonObject, JsonValue } from \"./protocol.ts\";\nimport { RemoteFrameWidthClamp } from \"./remote-frame-clamp.ts\";\n\ntype RenderableToolResult = Parameters<ToolExecutionComponent[\"updateResult\"]>[0];\n\nlet nextRemoteRendererId = 0;\n\nfunction jsonValue(value: unknown): JsonValue {\n\tif (value === undefined) return null;\n\tconst encoded = JSON.stringify(value);\n\treturn encoded === undefined ? null : (JSON.parse(encoded) as JsonValue);\n}\n\nabstract class RemoteRenderer implements Component {\n\tprotected readonly componentId = `remote_renderer_${++nextRemoteRendererId}`;\n\tprivate lines = [\"Loading isolated renderer…\"];\n\tprivate width = 0;\n\tprivate requestId = 0;\n\tprivate appliedRequestId = 0;\n\tprivate dirty = true;\n\tprivate disposed = false;\n\tprivate readonly frameClamp = new RemoteFrameWidthClamp();\n\tprivate readonly unsubscribe: () => void;\n\n\tprotected readonly runtime: IsolatedInteractiveRuntime;\n\tprivate readonly requestRender: () => void;\n\n\tconstructor(runtime: IsolatedInteractiveRuntime, requestRender: () => void) {\n\t\tthis.runtime = runtime;\n\t\tthis.requestRender = requestRender;\n\t\tthis.unsubscribe = runtime.onEngineMessage((message) => {\n\t\t\tif (!(\"componentId\" in message) || message.componentId !== this.componentId) return;\n\t\t\tif (message.type === \"engine_custom_frame\") {\n\t\t\t\tif (message.requestId < this.appliedRequestId) return;\n\t\t\t\tthis.appliedRequestId = message.requestId;\n\t\t\t\tthis.lines = message.lines;\n\t\t\t\tthis.requestRender();\n\t\t\t} else if (message.type === \"engine_custom_invalidate\") {\n\t\t\t\tthis.markDirty();\n\t\t\t}\n\t\t});\n\t}\n\n\trender(width: number): string[] {\n\t\tif (!this.disposed && (this.dirty || width !== this.width)) {\n\t\t\tthis.width = width;\n\t\t\tthis.dirty = false;\n\t\t\tthis.runtime.sendEngineCommand(this.command(++this.requestId, width));\n\t\t}\n\t\t// The engine child re-renders asynchronously; until the fresh frame\n\t\t// arrives, the previous frame may be wrapped for an older terminal\n\t\t// width. Clamp so a resize never replays overflowing lines (pi-tui\n\t\t// crashes on any rendered line wider than the terminal).\n\t\treturn this.frameClamp.clamp(this.lines, width);\n\t}\n\n\tinvalidate(): void {\n\t\tthis.markDirty();\n\t}\n\n\tdispose(): void {\n\t\tif (this.disposed) return;\n\t\tthis.disposed = true;\n\t\tthis.unsubscribe();\n\t\tthis.runtime.sendEngineCommand({ type: \"engine_render_dispose\", componentId: this.componentId });\n\t}\n\n\tprotected changed(): void {\n\t\tthis.markDirty();\n\t\tthis.requestRender();\n\t}\n\n\tprotected abstract command(requestId: number, width: number): InteractiveEngineCommand;\n\n\tprivate markDirty(): void {\n\t\tthis.dirty = true;\n\t}\n}\n\nexport class RemoteToolExecutionComponent extends RemoteRenderer {\n\tprivate readonly toolName: string;\n\tprivate readonly toolCallId: string;\n\tprivate args: unknown;\n\tprivate result: RenderableToolResult | undefined;\n\tprivate executionStarted = false;\n\tprivate argsComplete = false;\n\tprivate isPartial = true;\n\tprivate expanded = false;\n\tprivate showImages: boolean;\n\tprivate imageWidthCells: number;\n\tprivate outputPad: number;\n\n\tconstructor(\n\t\ttoolName: string,\n\t\ttoolCallId: string,\n\t\targs: unknown,\n\t\toptions: { showImages?: boolean; imageWidthCells?: number; outputPad?: number },\n\t\truntime: IsolatedInteractiveRuntime,\n\t\trequestRender: () => void,\n\t) {\n\t\tsuper(runtime, requestRender);\n\t\tthis.toolName = toolName;\n\t\tthis.toolCallId = toolCallId;\n\t\tthis.args = args;\n\t\tthis.showImages = options.showImages ?? true;\n\t\tthis.imageWidthCells = options.imageWidthCells ?? 60;\n\t\tthis.outputPad = options.outputPad ?? 1;\n\t}\n\n\tsetOutputPad(outputPad: number): void {\n\t\tthis.outputPad = outputPad;\n\t\tthis.changed();\n\t}\n\tupdateArgs(args: unknown): void {\n\t\tthis.args = args;\n\t\tthis.changed();\n\t}\n\tmarkExecutionStarted(): void {\n\t\tthis.executionStarted = true;\n\t\tthis.changed();\n\t}\n\tsetArgsComplete(): void {\n\t\tthis.argsComplete = true;\n\t\tthis.changed();\n\t}\n\tupdateResult(result: RenderableToolResult, isPartial = false): void {\n\t\tthis.result = result;\n\t\tthis.isPartial = isPartial;\n\t\tthis.changed();\n\t}\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.changed();\n\t}\n\tsetShowImages(show: boolean): void {\n\t\tthis.showImages = show;\n\t\tthis.changed();\n\t}\n\tsetImageWidthCells(width: number): void {\n\t\tthis.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tthis.changed();\n\t}\n\n\tprotected command(requestId: number, width: number): InteractiveEngineCommand {\n\t\treturn {\n\t\t\ttype: \"engine_tool_render\",\n\t\t\tcomponentId: this.componentId,\n\t\t\trequestId,\n\t\t\twidth,\n\t\t\ttoolName: this.toolName,\n\t\t\ttoolCallId: this.toolCallId,\n\t\t\targs: jsonValue(this.args),\n\t\t\tresult: this.result ? (jsonValue(this.result) as JsonObject) : undefined,\n\t\t\texecutionStarted: this.executionStarted,\n\t\t\targsComplete: this.argsComplete,\n\t\t\tisPartial: this.isPartial,\n\t\t\texpanded: this.expanded,\n\t\t\tshowImages: this.showImages,\n\t\t\timageWidthCells: this.imageWidthCells,\n\t\t\toutputPad: this.outputPad,\n\t\t};\n\t}\n}\n\nexport class RemoteCustomMessageComponent extends RemoteRenderer {\n\tprivate readonly message: CustomMessage<unknown>;\n\tprivate expanded = false;\n\tprivate outputPad: number;\n\tconstructor(\n\t\tmessage: CustomMessage<unknown>,\n\t\truntime: IsolatedInteractiveRuntime,\n\t\trequestRender: () => void,\n\t\toutputPad = 1,\n\t) {\n\t\tsuper(runtime, requestRender);\n\t\tthis.message = message;\n\t\tthis.outputPad = outputPad;\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.changed();\n\t}\n\tsetOutputPad(outputPad: number): void {\n\t\tthis.outputPad = outputPad;\n\t\tthis.changed();\n\t}\n\n\tprotected command(requestId: number, width: number): InteractiveEngineCommand {\n\t\treturn {\n\t\t\ttype: \"engine_message_render\",\n\t\t\tcomponentId: this.componentId,\n\t\t\trequestId,\n\t\t\twidth,\n\t\t\tmessage: jsonValue(this.message) as JsonObject,\n\t\t\texpanded: this.expanded,\n\t\t\toutputPad: this.outputPad,\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"remote-renderer.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/remote-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Component } from \"@earendil-works/pi-tui\";\nimport type { CustomMessage } from \"../../core/messages.ts\";\nimport type { ToolExecutionComponent } from \"../interactive/components/tool-execution.ts\";\nimport type { IsolatedInteractiveRuntime } from \"./isolated-runtime.js\";\nimport type { InteractiveEngineCommand, JsonObject, JsonValue } from \"./protocol.ts\";\nimport { RemoteFrameWidthClamp } from \"./remote-frame-clamp.ts\";\n\ntype RenderableToolResult = Parameters<ToolExecutionComponent[\"updateResult\"]>[0];\n\nlet nextRemoteRendererId = 0;\n\nfunction jsonValue(value: unknown): JsonValue {\n\tif (value === undefined) return null;\n\tconst encoded = JSON.stringify(value);\n\treturn encoded === undefined ? null : (JSON.parse(encoded) as JsonValue);\n}\n\nabstract class RemoteRenderer implements Component {\n\tprotected readonly componentId = `remote_renderer_${++nextRemoteRendererId}`;\n\tprivate lines = [\"Loading isolated renderer…\"];\n\tprivate width = 0;\n\tprivate requestId = 0;\n\tprivate appliedRequestId = 0;\n\tprivate dirty = true;\n\tprivate disposed = false;\n\tprivate readonly frameClamp = new RemoteFrameWidthClamp();\n\tprivate readonly unsubscribe: () => void;\n\n\tprotected readonly runtime: IsolatedInteractiveRuntime;\n\tprivate readonly requestRender: () => void;\n\n\tconstructor(runtime: IsolatedInteractiveRuntime, requestRender: () => void) {\n\t\tthis.runtime = runtime;\n\t\tthis.requestRender = requestRender;\n\t\tthis.unsubscribe = runtime.onEngineMessage((message) => {\n\t\t\tif (!(\"componentId\" in message) || message.componentId !== this.componentId) return;\n\t\t\tif (message.type === \"engine_custom_frame\") {\n\t\t\t\tif (message.requestId < this.appliedRequestId) return;\n\t\t\t\tthis.appliedRequestId = message.requestId;\n\t\t\t\tthis.lines = message.lines;\n\t\t\t\tthis.requestRender();\n\t\t\t} else if (message.type === \"engine_custom_invalidate\") {\n\t\t\t\tthis.changed();\n\t\t\t}\n\t\t});\n\t}\n\n\trender(width: number): string[] {\n\t\tif (!this.disposed && (this.dirty || width !== this.width)) {\n\t\t\tthis.width = width;\n\t\t\tthis.dirty = false;\n\t\t\tthis.runtime.sendEngineCommand(this.command(++this.requestId, width));\n\t\t}\n\t\t// The engine child re-renders asynchronously; until the fresh frame\n\t\t// arrives, the previous frame may be wrapped for an older terminal\n\t\t// width. Clamp so a resize never replays overflowing lines (pi-tui\n\t\t// crashes on any rendered line wider than the terminal).\n\t\treturn this.frameClamp.clamp(this.lines, width);\n\t}\n\n\tinvalidate(): void {\n\t\tthis.markDirty();\n\t}\n\n\tdispose(): void {\n\t\tif (this.disposed) return;\n\t\tthis.disposed = true;\n\t\tthis.unsubscribe();\n\t\tthis.runtime.sendEngineCommand({ type: \"engine_render_dispose\", componentId: this.componentId });\n\t}\n\n\tprotected changed(): void {\n\t\tthis.markDirty();\n\t\tthis.requestRender();\n\t}\n\n\tprotected abstract command(requestId: number, width: number): InteractiveEngineCommand;\n\n\tprivate markDirty(): void {\n\t\tthis.dirty = true;\n\t}\n}\n\nexport class RemoteToolExecutionComponent extends RemoteRenderer {\n\tprivate readonly toolName: string;\n\tprivate readonly toolCallId: string;\n\tprivate args: unknown;\n\tprivate result: RenderableToolResult | undefined;\n\tprivate executionStarted = false;\n\tprivate argsComplete = false;\n\tprivate isPartial = true;\n\tprivate expanded = false;\n\tprivate showImages: boolean;\n\tprivate imageWidthCells: number;\n\tprivate outputPad: number;\n\n\tconstructor(\n\t\ttoolName: string,\n\t\ttoolCallId: string,\n\t\targs: unknown,\n\t\toptions: { showImages?: boolean; imageWidthCells?: number; outputPad?: number },\n\t\truntime: IsolatedInteractiveRuntime,\n\t\trequestRender: () => void,\n\t) {\n\t\tsuper(runtime, requestRender);\n\t\tthis.toolName = toolName;\n\t\tthis.toolCallId = toolCallId;\n\t\tthis.args = args;\n\t\tthis.showImages = options.showImages ?? true;\n\t\tthis.imageWidthCells = options.imageWidthCells ?? 60;\n\t\tthis.outputPad = options.outputPad ?? 1;\n\t}\n\n\tsetOutputPad(outputPad: number): void {\n\t\tthis.outputPad = outputPad;\n\t\tthis.changed();\n\t}\n\tupdateArgs(args: unknown): void {\n\t\tthis.args = args;\n\t\tthis.changed();\n\t}\n\tmarkExecutionStarted(): void {\n\t\tthis.executionStarted = true;\n\t\tthis.changed();\n\t}\n\tsetArgsComplete(): void {\n\t\tthis.argsComplete = true;\n\t\tthis.changed();\n\t}\n\tupdateResult(result: RenderableToolResult, isPartial = false): void {\n\t\tthis.result = result;\n\t\tthis.isPartial = isPartial;\n\t\tthis.changed();\n\t}\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.changed();\n\t}\n\tsetShowImages(show: boolean): void {\n\t\tthis.showImages = show;\n\t\tthis.changed();\n\t}\n\tsetImageWidthCells(width: number): void {\n\t\tthis.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tthis.changed();\n\t}\n\n\tprotected command(requestId: number, width: number): InteractiveEngineCommand {\n\t\treturn {\n\t\t\ttype: \"engine_tool_render\",\n\t\t\tcomponentId: this.componentId,\n\t\t\trequestId,\n\t\t\twidth,\n\t\t\ttoolName: this.toolName,\n\t\t\ttoolCallId: this.toolCallId,\n\t\t\targs: jsonValue(this.args),\n\t\t\tresult: this.result ? (jsonValue(this.result) as JsonObject) : undefined,\n\t\t\texecutionStarted: this.executionStarted,\n\t\t\targsComplete: this.argsComplete,\n\t\t\tisPartial: this.isPartial,\n\t\t\texpanded: this.expanded,\n\t\t\tshowImages: this.showImages,\n\t\t\timageWidthCells: this.imageWidthCells,\n\t\t\toutputPad: this.outputPad,\n\t\t};\n\t}\n}\n\nexport class RemoteCustomMessageComponent extends RemoteRenderer {\n\tprivate readonly message: CustomMessage<unknown>;\n\tprivate expanded = false;\n\tprivate outputPad: number;\n\tconstructor(\n\t\tmessage: CustomMessage<unknown>,\n\t\truntime: IsolatedInteractiveRuntime,\n\t\trequestRender: () => void,\n\t\toutputPad = 1,\n\t) {\n\t\tsuper(runtime, requestRender);\n\t\tthis.message = message;\n\t\tthis.outputPad = outputPad;\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.changed();\n\t}\n\tsetOutputPad(outputPad: number): void {\n\t\tthis.outputPad = outputPad;\n\t\tthis.changed();\n\t}\n\n\tprotected command(requestId: number, width: number): InteractiveEngineCommand {\n\t\treturn {\n\t\t\ttype: \"engine_message_render\",\n\t\t\tcomponentId: this.componentId,\n\t\t\trequestId,\n\t\t\twidth,\n\t\t\tmessage: jsonValue(this.message) as JsonObject,\n\t\t\texpanded: this.expanded,\n\t\t\toutputPad: this.outputPad,\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Credential } from "@bastani/pi-ai";
|
|
2
2
|
import type { Api, ImageContent, Model } from "@bastani/pi-ai/compat";
|
|
3
3
|
import type { AgentMessage, ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
4
|
-
import type { PromptDisposition, QueuedInputDisposition, SessionStats } from "../../core/agent-session.js";
|
|
4
|
+
import type { PromptDisposition, QueuedInputDisposition, SessionRecoveryReport, SessionStats } from "../../core/agent-session.js";
|
|
5
5
|
import type { BashResult } from "../../core/bash-executor.ts";
|
|
6
6
|
import type { VerbatimCompactionResult } from "../../core/compaction/index.ts";
|
|
7
|
+
import type { SessionRecoveryReason } from "../../core/extensions/index.js";
|
|
7
8
|
import type { WorkflowRunDetail, WorkflowRunFilterStatus, WorkflowRunSummary } from "../../core/extensions/workflow-run-control.js";
|
|
8
9
|
import type { AtomicProviderCompat } from "../../core/model-capabilities.ts";
|
|
9
10
|
import type { SaveCredentialOptions } from "../../core/model-runtime.js";
|
|
@@ -92,6 +93,8 @@ export declare abstract class RpcClientApi {
|
|
|
92
93
|
abortRetry(): Promise<void>;
|
|
93
94
|
bash(command: string): Promise<BashResult>;
|
|
94
95
|
abortBash(requestId?: string): Promise<void>;
|
|
96
|
+
/** Recover work an earlier process left unfinished; call once the transcript is shown. */
|
|
97
|
+
startPendingRecovery(reason?: SessionRecoveryReason): Promise<SessionRecoveryReport>;
|
|
95
98
|
getSessionStats(): Promise<SessionStats>;
|
|
96
99
|
/** Which tools are active, which are not (and why), and which selected names nothing registered. */
|
|
97
100
|
getTools(): Promise<ToolStatusReport>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client-api.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"rpc-client-api.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -147,6 +147,10 @@ export class RpcClientApi {
|
|
|
147
147
|
async abortBash(requestId) {
|
|
148
148
|
await this.request({ type: "abort_bash", requestId });
|
|
149
149
|
}
|
|
150
|
+
/** Recover work an earlier process left unfinished; call once the transcript is shown. */
|
|
151
|
+
async startPendingRecovery(reason) {
|
|
152
|
+
return this.data(await this.request({ type: "start_pending_recovery", reason }));
|
|
153
|
+
}
|
|
150
154
|
async getSessionStats() {
|
|
151
155
|
return this.data(await this.request({ type: "get_session_stats" }));
|
|
152
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client-api.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { Credential } from \"@bastani/pi-ai\";\nimport type { Api, ImageContent, Model } from \"@bastani/pi-ai/compat\";\nimport type { AgentMessage, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { PromptDisposition, QueuedInputDisposition, SessionStats } from \"../../core/agent-session.js\";\nimport type { BashResult } from \"../../core/bash-executor.ts\";\nimport type { VerbatimCompactionResult } from \"../../core/compaction/index.ts\";\nimport type {\n\tWorkflowRunDetail,\n\tWorkflowRunFilterStatus,\n\tWorkflowRunSummary,\n} from \"../../core/extensions/workflow-run-control.js\";\nimport type { AtomicProviderCompat } from \"../../core/model-capabilities.ts\";\nimport type { SaveCredentialOptions } from \"../../core/model-runtime.js\";\nimport type { SessionEntry, SessionSummaryEntry, SessionTreeNode } from \"../../core/session-manager.ts\";\nimport type { ToolStatusReport } from \"../../core/tool-status.js\";\nimport type {\n\tRpcAutocompleteItem,\n\tRpcCommand,\n\tRpcLoginProviderResult,\n\tRpcLogoutProviderResult,\n\tRpcModelCatalog,\n\tRpcModelRefreshResult,\n\tRpcResponse,\n\tRpcSessionInfo,\n\tRpcSessionState,\n\tRpcSlashCommand,\n} from \"./rpc-types.ts\";\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\nexport type RpcCommandBody = DistributiveOmit<RpcCommand, \"id\">;\n\nexport interface ModelInfo {\n\tprovider: string;\n\tid: string;\n\tcontextWindow: number;\n\treasoning: boolean;\n\t/** Provider/model capability metadata used to gate constrained sampling. */\n\tcompat?: AtomicProviderCompat;\n}\n\nexport abstract class RpcClientApi {\n\tprotected abstract request(command: RpcCommandBody): Promise<RpcResponse>;\n\tprotected abstract data<T>(response: RpcResponse): T;\n\n\t/**\n\t * Send a prompt and return its disposition once accepted.\n\t * If the disposition is \"handled\", no run started for this prompt, so don't wait for agent_settled.\n\t */\n\tasync prompt(\n\t\tmessage: string,\n\t\timages?: ImageContent[],\n\t\tstreamingBehavior?: \"steer\" | \"followUp\",\n\t): Promise<PromptDisposition> {\n\t\tconst response = await this.request({ type: \"prompt\", message, images, streamingBehavior });\n\t\treturn this.data<{ disposition: PromptDisposition }>(response).disposition;\n\t}\n\tasync steer(message: string, images?: ImageContent[]): Promise<QueuedInputDisposition> {\n\t\tconst response = await this.request({ type: \"steer\", message, images });\n\t\treturn this.data<{ disposition: QueuedInputDisposition }>(response).disposition;\n\t}\n\tasync followUp(message: string, images?: ImageContent[]): Promise<QueuedInputDisposition> {\n\t\tconst response = await this.request({ type: \"follow_up\", message, images });\n\t\treturn this.data<{ disposition: QueuedInputDisposition }>(response).disposition;\n\t}\n\tasync abort(): Promise<void> {\n\t\tawait this.request({ type: \"abort\" });\n\t}\n\tasync clearQueue(): Promise<{ steering: string[]; followUp: string[] }> {\n\t\treturn this.data(await this.request({ type: \"clear_queue\" }));\n\t}\n\tasync newSession(parentSession?: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"new_session\", parentSession }));\n\t}\n\tasync deleteSession(sessionId: string): Promise<void> {\n\t\tthis.data<void>(await this.request({ type: \"delete_session\", sessionId }));\n\t}\n\tasync getState(): Promise<RpcSessionState> {\n\t\treturn this.data(await this.request({ type: \"get_state\" }));\n\t}\n\tasync getSessionSummary(): Promise<SessionSummaryEntry | null> {\n\t\treturn this.data<{ summary: SessionSummaryEntry | null }>(await this.request({ type: \"get_session_summary\" }))\n\t\t\t.summary;\n\t}\n\tasync listSessions(): Promise<RpcSessionInfo[]> {\n\t\treturn this.data<{ sessions: RpcSessionInfo[] }>(await this.request({ type: \"list_sessions\" })).sessions;\n\t}\n\tasync listWorkflowRuns(status?: WorkflowRunFilterStatus): Promise<readonly WorkflowRunSummary[]> {\n\t\treturn this.data<{ runs: readonly WorkflowRunSummary[] }>(\n\t\t\tawait this.request({ type: \"list_workflow_runs\", status }),\n\t\t).runs;\n\t}\n\tasync getWorkflowRunSummary(runId: string): Promise<WorkflowRunDetail> {\n\t\treturn this.data(await this.request({ type: \"get_workflow_run_summary\", runId }));\n\t}\n\tasync setModel(\n\t\tprovider: string,\n\t\tmodelId: string,\n\t\toptions?: { persist?: boolean },\n\t): Promise<{ provider: string; id: string }> {\n\t\treturn this.data(\n\t\t\tawait this.request({\n\t\t\t\ttype: \"set_model\",\n\t\t\t\tprovider,\n\t\t\t\tmodelId,\n\t\t\t\t...(options?.persist === true ? { persist: true } : {}),\n\t\t\t}),\n\t\t);\n\t}\n\tasync cycleModel(\n\t\tdirection?: \"forward\" | \"backward\",\n\t\toptions?: { persist?: boolean },\n\t): Promise<{\n\t\tmodel: Model<Api>;\n\t\tthinkingLevel: ThinkingLevel;\n\t\tisScoped: boolean;\n\t} | null> {\n\t\treturn this.data(\n\t\t\tawait this.request({\n\t\t\t\ttype: \"cycle_model\",\n\t\t\t\tdirection,\n\t\t\t\t...(options?.persist === true ? { persist: true } : {}),\n\t\t\t}),\n\t\t);\n\t}\n\tasync getAvailableModels(): Promise<ModelInfo[]> {\n\t\treturn this.data<{ models: ModelInfo[] }>(await this.request({ type: \"get_available_models\" })).models;\n\t}\n\tasync loginProvider(provider: string, signal?: AbortSignal): Promise<RpcLoginProviderResult> {\n\t\tconst loginId = randomUUID();\n\t\tif (signal?.aborted) return { provider, cancelled: true };\n\t\tconst cancel = () => {\n\t\t\tvoid this.cancelLoginProvider(provider, loginId).catch(() => {});\n\t\t};\n\t\tsignal?.addEventListener(\"abort\", cancel, { once: true });\n\t\ttry {\n\t\t\treturn this.data(await this.request({ type: \"login_provider\", provider, loginId }));\n\t\t} finally {\n\t\t\tsignal?.removeEventListener(\"abort\", cancel);\n\t\t}\n\t}\n\tasync saveProviderCredential(\n\t\tprovider: string,\n\t\tcredential: Credential,\n\t\toptions: SaveCredentialOptions = {},\n\t): Promise<RpcModelCatalog> {\n\t\treturn this.data(\n\t\t\tawait this.request({\n\t\t\t\ttype: \"save_provider_credential\",\n\t\t\t\tprovider,\n\t\t\t\tcredential,\n\t\t\t\trefreshCatalog: options.refreshCatalog,\n\t\t\t}),\n\t\t);\n\t}\n\tasync cancelLoginProvider(provider: string, loginId?: string): Promise<void> {\n\t\tawait this.request({ type: \"cancel_login_provider\", provider, loginId });\n\t}\n\tasync logoutProvider(provider: string): Promise<RpcLogoutProviderResult> {\n\t\treturn this.data(await this.request({ type: \"logout_provider\", provider }));\n\t}\n\n\tasync refreshModels(\n\t\toptions: { timeoutMs?: number; force?: boolean; allowNetwork?: boolean } = {},\n\t): Promise<RpcModelRefreshResult> {\n\t\treturn this.data(await this.request({ type: \"refresh_models\", ...options }));\n\t}\n\tasync setThinkingLevel(level: ThinkingLevel): Promise<void> {\n\t\tawait this.request({ type: \"set_thinking_level\", level });\n\t}\n\t/**\n\t * Isolated persist path: forwards `persist` and returns the engine's effective\n\t * level plus the provider/model the engine persisted against. Public callers\n\t * must keep using one-argument {@link setThinkingLevel}.\n\t */\n\tasync setThinkingLevelAck(\n\t\tlevel: ThinkingLevel,\n\t\toptions?: { persist?: boolean },\n\t): Promise<{ level: ThinkingLevel; provider?: string; modelId?: string }> {\n\t\tconst response = await this.request({\n\t\t\ttype: \"set_thinking_level\",\n\t\t\tlevel,\n\t\t\t...(options?.persist === true ? { persist: true } : {}),\n\t\t});\n\t\tif (!response.success) {\n\t\t\treturn this.data(response);\n\t\t}\n\t\tif (response.command === \"set_thinking_level\" && \"data\" in response && response.data) {\n\t\t\treturn response.data;\n\t\t}\n\t\treturn { level };\n\t}\n\tasync cycleThinkingLevel(): Promise<{ level: ThinkingLevel } | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_thinking_level\" }));\n\t}\n\tasync getAvailableThinkingLevels(): Promise<ThinkingLevel[]> {\n\t\treturn this.data<{ levels: ThinkingLevel[] }>(await this.request({ type: \"get_available_thinking_levels\" }))\n\t\t\t.levels;\n\t}\n\tasync setSteeringMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> {\n\t\tawait this.request({ type: \"set_steering_mode\", mode });\n\t}\n\tasync setFollowUpMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> {\n\t\tawait this.request({ type: \"set_follow_up_mode\", mode });\n\t}\n\tasync compact(): Promise<VerbatimCompactionResult> {\n\t\treturn this.data(await this.request({ type: \"compact\" }));\n\t}\n\tasync setAutoCompaction(enabled: boolean): Promise<void> {\n\t\tawait this.request({ type: \"set_auto_compaction\", enabled });\n\t}\n\tasync setAutoRetry(enabled: boolean): Promise<void> {\n\t\tawait this.request({ type: \"set_auto_retry\", enabled });\n\t}\n\tasync abortRetry(): Promise<void> {\n\t\tawait this.request({ type: \"abort_retry\" });\n\t}\n\tasync bash(command: string): Promise<BashResult> {\n\t\treturn this.data(await this.request({ type: \"bash\", command }));\n\t}\n\tasync abortBash(requestId?: string): Promise<void> {\n\t\tawait this.request({ type: \"abort_bash\", requestId });\n\t}\n\tasync getSessionStats(): Promise<SessionStats> {\n\t\treturn this.data(await this.request({ type: \"get_session_stats\" }));\n\t}\n\t/** Which tools are active, which are not (and why), and which selected names nothing registered. */\n\tasync getTools(): Promise<ToolStatusReport> {\n\t\treturn this.data(await this.request({ type: \"get_tools\" }));\n\t}\n\tasync exportHtml(outputPath?: string): Promise<{ path: string }> {\n\t\treturn this.data(await this.request({ type: \"export_html\", outputPath }));\n\t}\n\tasync switchSession(\n\t\tsessionId: string,\n\t\tcwdOverride?: string,\n\t\tsessionDirectory?: string,\n\t): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"switch_session\", sessionId, cwdOverride, sessionDirectory }));\n\t}\n\tasync fork(entryId: string): Promise<{ text: string; cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"fork\", entryId }));\n\t}\n\tasync clone(): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"clone\" }));\n\t}\n\tasync getForkMessages(): Promise<Array<{ entryId: string; text: string }>> {\n\t\treturn this.data<{ messages: Array<{ entryId: string; text: string }> }>(\n\t\t\tawait this.request({ type: \"get_fork_messages\" }),\n\t\t).messages;\n\t}\n\tasync getEntries(since?: string): Promise<{ entries: SessionEntry[]; leafId: string | null }> {\n\t\treturn this.data(await this.request({ type: \"get_entries\", since }));\n\t}\n\tasync getTree(): Promise<{ tree: SessionTreeNode[]; leafId: string | null }> {\n\t\treturn this.data(await this.request({ type: \"get_tree\" }));\n\t}\n\tasync getLastAssistantText(): Promise<string | null> {\n\t\treturn this.data<{ text: string | null }>(await this.request({ type: \"get_last_assistant_text\" })).text;\n\t}\n\tasync setSessionName(name: string): Promise<void> {\n\t\tawait this.request({ type: \"set_session_name\", name });\n\t}\n\tasync getMessages(): Promise<AgentMessage[]> {\n\t\treturn this.data<{ messages: AgentMessage[] }>(await this.request({ type: \"get_messages\" })).messages;\n\t}\n\tasync getCommands(): Promise<RpcSlashCommand[]> {\n\t\treturn this.data<{ commands: RpcSlashCommand[] }>(await this.request({ type: \"get_commands\" })).commands;\n\t}\n\tasync getCommandCompletions(commandName: string, argumentPrefix: string): Promise<RpcAutocompleteItem[] | null> {\n\t\treturn this.data<{ completions: RpcAutocompleteItem[] | null }>(\n\t\t\tawait this.request({ type: \"get_command_completions\", commandName, argumentPrefix }),\n\t\t).completions;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc-client-api.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { Credential } from \"@bastani/pi-ai\";\nimport type { Api, ImageContent, Model } from \"@bastani/pi-ai/compat\";\nimport type { AgentMessage, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type {\n\tPromptDisposition,\n\tQueuedInputDisposition,\n\tSessionRecoveryReport,\n\tSessionStats,\n} from \"../../core/agent-session.js\";\nimport type { BashResult } from \"../../core/bash-executor.ts\";\nimport type { VerbatimCompactionResult } from \"../../core/compaction/index.ts\";\nimport type { SessionRecoveryReason } from \"../../core/extensions/index.js\";\nimport type {\n\tWorkflowRunDetail,\n\tWorkflowRunFilterStatus,\n\tWorkflowRunSummary,\n} from \"../../core/extensions/workflow-run-control.js\";\nimport type { AtomicProviderCompat } from \"../../core/model-capabilities.ts\";\nimport type { SaveCredentialOptions } from \"../../core/model-runtime.js\";\nimport type { SessionEntry, SessionSummaryEntry, SessionTreeNode } from \"../../core/session-manager.ts\";\nimport type { ToolStatusReport } from \"../../core/tool-status.js\";\nimport type {\n\tRpcAutocompleteItem,\n\tRpcCommand,\n\tRpcLoginProviderResult,\n\tRpcLogoutProviderResult,\n\tRpcModelCatalog,\n\tRpcModelRefreshResult,\n\tRpcResponse,\n\tRpcSessionInfo,\n\tRpcSessionState,\n\tRpcSlashCommand,\n} from \"./rpc-types.ts\";\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\nexport type RpcCommandBody = DistributiveOmit<RpcCommand, \"id\">;\n\nexport interface ModelInfo {\n\tprovider: string;\n\tid: string;\n\tcontextWindow: number;\n\treasoning: boolean;\n\t/** Provider/model capability metadata used to gate constrained sampling. */\n\tcompat?: AtomicProviderCompat;\n}\n\nexport abstract class RpcClientApi {\n\tprotected abstract request(command: RpcCommandBody): Promise<RpcResponse>;\n\tprotected abstract data<T>(response: RpcResponse): T;\n\n\t/**\n\t * Send a prompt and return its disposition once accepted.\n\t * If the disposition is \"handled\", no run started for this prompt, so don't wait for agent_settled.\n\t */\n\tasync prompt(\n\t\tmessage: string,\n\t\timages?: ImageContent[],\n\t\tstreamingBehavior?: \"steer\" | \"followUp\",\n\t): Promise<PromptDisposition> {\n\t\tconst response = await this.request({ type: \"prompt\", message, images, streamingBehavior });\n\t\treturn this.data<{ disposition: PromptDisposition }>(response).disposition;\n\t}\n\tasync steer(message: string, images?: ImageContent[]): Promise<QueuedInputDisposition> {\n\t\tconst response = await this.request({ type: \"steer\", message, images });\n\t\treturn this.data<{ disposition: QueuedInputDisposition }>(response).disposition;\n\t}\n\tasync followUp(message: string, images?: ImageContent[]): Promise<QueuedInputDisposition> {\n\t\tconst response = await this.request({ type: \"follow_up\", message, images });\n\t\treturn this.data<{ disposition: QueuedInputDisposition }>(response).disposition;\n\t}\n\tasync abort(): Promise<void> {\n\t\tawait this.request({ type: \"abort\" });\n\t}\n\tasync clearQueue(): Promise<{ steering: string[]; followUp: string[] }> {\n\t\treturn this.data(await this.request({ type: \"clear_queue\" }));\n\t}\n\tasync newSession(parentSession?: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"new_session\", parentSession }));\n\t}\n\tasync deleteSession(sessionId: string): Promise<void> {\n\t\tthis.data<void>(await this.request({ type: \"delete_session\", sessionId }));\n\t}\n\tasync getState(): Promise<RpcSessionState> {\n\t\treturn this.data(await this.request({ type: \"get_state\" }));\n\t}\n\tasync getSessionSummary(): Promise<SessionSummaryEntry | null> {\n\t\treturn this.data<{ summary: SessionSummaryEntry | null }>(await this.request({ type: \"get_session_summary\" }))\n\t\t\t.summary;\n\t}\n\tasync listSessions(): Promise<RpcSessionInfo[]> {\n\t\treturn this.data<{ sessions: RpcSessionInfo[] }>(await this.request({ type: \"list_sessions\" })).sessions;\n\t}\n\tasync listWorkflowRuns(status?: WorkflowRunFilterStatus): Promise<readonly WorkflowRunSummary[]> {\n\t\treturn this.data<{ runs: readonly WorkflowRunSummary[] }>(\n\t\t\tawait this.request({ type: \"list_workflow_runs\", status }),\n\t\t).runs;\n\t}\n\tasync getWorkflowRunSummary(runId: string): Promise<WorkflowRunDetail> {\n\t\treturn this.data(await this.request({ type: \"get_workflow_run_summary\", runId }));\n\t}\n\tasync setModel(\n\t\tprovider: string,\n\t\tmodelId: string,\n\t\toptions?: { persist?: boolean },\n\t): Promise<{ provider: string; id: string }> {\n\t\treturn this.data(\n\t\t\tawait this.request({\n\t\t\t\ttype: \"set_model\",\n\t\t\t\tprovider,\n\t\t\t\tmodelId,\n\t\t\t\t...(options?.persist === true ? { persist: true } : {}),\n\t\t\t}),\n\t\t);\n\t}\n\tasync cycleModel(\n\t\tdirection?: \"forward\" | \"backward\",\n\t\toptions?: { persist?: boolean },\n\t): Promise<{\n\t\tmodel: Model<Api>;\n\t\tthinkingLevel: ThinkingLevel;\n\t\tisScoped: boolean;\n\t} | null> {\n\t\treturn this.data(\n\t\t\tawait this.request({\n\t\t\t\ttype: \"cycle_model\",\n\t\t\t\tdirection,\n\t\t\t\t...(options?.persist === true ? { persist: true } : {}),\n\t\t\t}),\n\t\t);\n\t}\n\tasync getAvailableModels(): Promise<ModelInfo[]> {\n\t\treturn this.data<{ models: ModelInfo[] }>(await this.request({ type: \"get_available_models\" })).models;\n\t}\n\tasync loginProvider(provider: string, signal?: AbortSignal): Promise<RpcLoginProviderResult> {\n\t\tconst loginId = randomUUID();\n\t\tif (signal?.aborted) return { provider, cancelled: true };\n\t\tconst cancel = () => {\n\t\t\tvoid this.cancelLoginProvider(provider, loginId).catch(() => {});\n\t\t};\n\t\tsignal?.addEventListener(\"abort\", cancel, { once: true });\n\t\ttry {\n\t\t\treturn this.data(await this.request({ type: \"login_provider\", provider, loginId }));\n\t\t} finally {\n\t\t\tsignal?.removeEventListener(\"abort\", cancel);\n\t\t}\n\t}\n\tasync saveProviderCredential(\n\t\tprovider: string,\n\t\tcredential: Credential,\n\t\toptions: SaveCredentialOptions = {},\n\t): Promise<RpcModelCatalog> {\n\t\treturn this.data(\n\t\t\tawait this.request({\n\t\t\t\ttype: \"save_provider_credential\",\n\t\t\t\tprovider,\n\t\t\t\tcredential,\n\t\t\t\trefreshCatalog: options.refreshCatalog,\n\t\t\t}),\n\t\t);\n\t}\n\tasync cancelLoginProvider(provider: string, loginId?: string): Promise<void> {\n\t\tawait this.request({ type: \"cancel_login_provider\", provider, loginId });\n\t}\n\tasync logoutProvider(provider: string): Promise<RpcLogoutProviderResult> {\n\t\treturn this.data(await this.request({ type: \"logout_provider\", provider }));\n\t}\n\n\tasync refreshModels(\n\t\toptions: { timeoutMs?: number; force?: boolean; allowNetwork?: boolean } = {},\n\t): Promise<RpcModelRefreshResult> {\n\t\treturn this.data(await this.request({ type: \"refresh_models\", ...options }));\n\t}\n\tasync setThinkingLevel(level: ThinkingLevel): Promise<void> {\n\t\tawait this.request({ type: \"set_thinking_level\", level });\n\t}\n\t/**\n\t * Isolated persist path: forwards `persist` and returns the engine's effective\n\t * level plus the provider/model the engine persisted against. Public callers\n\t * must keep using one-argument {@link setThinkingLevel}.\n\t */\n\tasync setThinkingLevelAck(\n\t\tlevel: ThinkingLevel,\n\t\toptions?: { persist?: boolean },\n\t): Promise<{ level: ThinkingLevel; provider?: string; modelId?: string }> {\n\t\tconst response = await this.request({\n\t\t\ttype: \"set_thinking_level\",\n\t\t\tlevel,\n\t\t\t...(options?.persist === true ? { persist: true } : {}),\n\t\t});\n\t\tif (!response.success) {\n\t\t\treturn this.data(response);\n\t\t}\n\t\tif (response.command === \"set_thinking_level\" && \"data\" in response && response.data) {\n\t\t\treturn response.data;\n\t\t}\n\t\treturn { level };\n\t}\n\tasync cycleThinkingLevel(): Promise<{ level: ThinkingLevel } | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_thinking_level\" }));\n\t}\n\tasync getAvailableThinkingLevels(): Promise<ThinkingLevel[]> {\n\t\treturn this.data<{ levels: ThinkingLevel[] }>(await this.request({ type: \"get_available_thinking_levels\" }))\n\t\t\t.levels;\n\t}\n\tasync setSteeringMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> {\n\t\tawait this.request({ type: \"set_steering_mode\", mode });\n\t}\n\tasync setFollowUpMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> {\n\t\tawait this.request({ type: \"set_follow_up_mode\", mode });\n\t}\n\tasync compact(): Promise<VerbatimCompactionResult> {\n\t\treturn this.data(await this.request({ type: \"compact\" }));\n\t}\n\tasync setAutoCompaction(enabled: boolean): Promise<void> {\n\t\tawait this.request({ type: \"set_auto_compaction\", enabled });\n\t}\n\tasync setAutoRetry(enabled: boolean): Promise<void> {\n\t\tawait this.request({ type: \"set_auto_retry\", enabled });\n\t}\n\tasync abortRetry(): Promise<void> {\n\t\tawait this.request({ type: \"abort_retry\" });\n\t}\n\tasync bash(command: string): Promise<BashResult> {\n\t\treturn this.data(await this.request({ type: \"bash\", command }));\n\t}\n\tasync abortBash(requestId?: string): Promise<void> {\n\t\tawait this.request({ type: \"abort_bash\", requestId });\n\t}\n\t/** Recover work an earlier process left unfinished; call once the transcript is shown. */\n\tasync startPendingRecovery(reason?: SessionRecoveryReason): Promise<SessionRecoveryReport> {\n\t\treturn this.data(await this.request({ type: \"start_pending_recovery\", reason }));\n\t}\n\tasync getSessionStats(): Promise<SessionStats> {\n\t\treturn this.data(await this.request({ type: \"get_session_stats\" }));\n\t}\n\t/** Which tools are active, which are not (and why), and which selected names nothing registered. */\n\tasync getTools(): Promise<ToolStatusReport> {\n\t\treturn this.data(await this.request({ type: \"get_tools\" }));\n\t}\n\tasync exportHtml(outputPath?: string): Promise<{ path: string }> {\n\t\treturn this.data(await this.request({ type: \"export_html\", outputPath }));\n\t}\n\tasync switchSession(\n\t\tsessionId: string,\n\t\tcwdOverride?: string,\n\t\tsessionDirectory?: string,\n\t): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"switch_session\", sessionId, cwdOverride, sessionDirectory }));\n\t}\n\tasync fork(entryId: string): Promise<{ text: string; cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"fork\", entryId }));\n\t}\n\tasync clone(): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"clone\" }));\n\t}\n\tasync getForkMessages(): Promise<Array<{ entryId: string; text: string }>> {\n\t\treturn this.data<{ messages: Array<{ entryId: string; text: string }> }>(\n\t\t\tawait this.request({ type: \"get_fork_messages\" }),\n\t\t).messages;\n\t}\n\tasync getEntries(since?: string): Promise<{ entries: SessionEntry[]; leafId: string | null }> {\n\t\treturn this.data(await this.request({ type: \"get_entries\", since }));\n\t}\n\tasync getTree(): Promise<{ tree: SessionTreeNode[]; leafId: string | null }> {\n\t\treturn this.data(await this.request({ type: \"get_tree\" }));\n\t}\n\tasync getLastAssistantText(): Promise<string | null> {\n\t\treturn this.data<{ text: string | null }>(await this.request({ type: \"get_last_assistant_text\" })).text;\n\t}\n\tasync setSessionName(name: string): Promise<void> {\n\t\tawait this.request({ type: \"set_session_name\", name });\n\t}\n\tasync getMessages(): Promise<AgentMessage[]> {\n\t\treturn this.data<{ messages: AgentMessage[] }>(await this.request({ type: \"get_messages\" })).messages;\n\t}\n\tasync getCommands(): Promise<RpcSlashCommand[]> {\n\t\treturn this.data<{ commands: RpcSlashCommand[] }>(await this.request({ type: \"get_commands\" })).commands;\n\t}\n\tasync getCommandCompletions(commandName: string, argumentPrefix: string): Promise<RpcAutocompleteItem[] | null> {\n\t\treturn this.data<{ completions: RpcAutocompleteItem[] | null }>(\n\t\t\tawait this.request({ type: \"get_command_completions\", commandName, argumentPrefix }),\n\t\t).completions;\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-command-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;AAGhG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AAC1F,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG;IAAE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAElG,UAAU,wBAAwB;IACjC,WAAW,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,MAAM,YAAY,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACrD,iBAAiB,CAAC,EAAE,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,2BAA2B,CAAC;IACvD,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC;CACrC;AA0BD,wBAAgB,uBAAuB,CAAC,EACvC,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACpB,EAAE,wBAAwB,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"rpc-command-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;AAGhG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AAC1F,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG;IAAE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAElG,UAAU,wBAAwB;IACjC,WAAW,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,MAAM,YAAY,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,eAAe,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACrD,iBAAiB,CAAC,EAAE,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,2BAA2B,CAAC;IACvD,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC;CACrC;AA0BD,wBAAgB,uBAAuB,CAAC,EACvC,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACpB,EAAE,wBAAwB,GAAG,wBAAwB,CA6iBrD"}
|
|
@@ -455,6 +455,9 @@ export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession
|
|
|
455
455
|
await session.reload();
|
|
456
456
|
return createRpcSuccessResponse(id, "reload");
|
|
457
457
|
}
|
|
458
|
+
case "start_pending_recovery": {
|
|
459
|
+
return createRpcSuccessResponse(id, "start_pending_recovery", await session.startPendingRecovery(command.reason));
|
|
460
|
+
}
|
|
458
461
|
case "get_shortcuts": {
|
|
459
462
|
const effectiveBindings = getShortcutBindings();
|
|
460
463
|
const shortcuts = session.extensionRunner.getShortcuts(effectiveBindings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-command-handler.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { AgentSession } from \"../../core/agent-session.js\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport { runCallback } from \"../../core/callback-activity.ts\";\nimport type { ExtensionUIContext } from \"../../core/extensions/index.js\";\nimport { KeybindingsManager } from \"../../core/keybindings.ts\";\nimport { SessionManager } from \"../../core/session-manager.ts\";\nimport { getSkillCatalog } from \"../../core/skill-catalog.ts\";\nimport { RpcBashRequestOwners } from \"./rpc-bash-request-owners.ts\";\nimport type { RpcPendingExtensionRequests } from \"./rpc-extension-ui.ts\";\nimport type { KeybindingsReloadCoordinator } from \"./rpc-keybindings-reload.ts\";\nimport { rejectUnsupportedProviderPrompt } from \"./rpc-model-fallback-prompt.ts\";\nimport { type ProviderLoginInput, RpcProviderAuth } from \"./rpc-provider-auth.ts\";\nimport {\n\tcreateRpcErrorResponse,\n\tcreateRpcSuccessResponse,\n\tformatRpcErrorMessage,\n\ttype RpcOutput,\n} from \"./rpc-responses.ts\";\nimport type { RpcCommand, RpcResponse, RpcSessionState, RpcSlashCommand } from \"./rpc-types.ts\";\nimport { showEngineTaskInspector } from \"./task-ui-bridge.js\";\n\nexport type RpcCommandHandler = (command: RpcCommand) => Promise<RpcResponse | undefined>;\nexport type ManagedRpcCommandHandler = RpcCommandHandler & { disposeActiveBash(): Promise<void> };\n\ninterface RpcCommandHandlerOptions {\n\truntimeHost: AgentSessionRuntime;\n\tgetSession: () => AgentSession;\n\trebindSession: () => Promise<void>;\n\toutput: RpcOutput;\n\tkeybindings?: KeybindingsManager;\n\ttaskInspectorUi?: Pick<ExtensionUIContext, \"custom\">;\n\treloadCoordinator?: KeybindingsReloadCoordinator<AgentSession>;\n\tinputForm?: ProviderLoginInput;\n\tpendingExtensionRequests?: RpcPendingExtensionRequests;\n\twaitForResources?: () => Promise<void> | undefined;\n\treloadResources?: () => Promise<void>;\n\tshouldRetryResources?: () => boolean;\n}\n\nfunction canRunBeforeOptionalResources(command: RpcCommand): boolean {\n\tswitch (command.type) {\n\t\tcase \"abort\":\n\t\tcase \"abort_bash\":\n\t\tcase \"abort_compaction\":\n\t\tcase \"abort_retry\":\n\t\tcase \"cancel_login_provider\":\n\t\tcase \"clear_queue\":\n\t\tcase \"get_messages\":\n\t\tcase \"get_state\":\n\t\tcase \"pause_queued_messages\":\n\t\tcase \"resume_queued_messages\":\n\t\tcase \"set_auto_compaction\":\n\t\tcase \"set_auto_retry\":\n\t\tcase \"set_follow_up_mode\":\n\t\tcase \"set_steering_mode\":\n\t\t\treturn true;\n\t\tcase \"get_available_models\":\n\t\t\treturn command.allowPartialResources === true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport function createRpcCommandHandler({\n\truntimeHost,\n\tgetSession,\n\trebindSession,\n\toutput,\n\tkeybindings,\n\ttaskInspectorUi,\n\treloadCoordinator,\n\tinputForm,\n\tpendingExtensionRequests,\n\twaitForResources,\n\treloadResources,\n\tshouldRetryResources,\n}: RpcCommandHandlerOptions): ManagedRpcCommandHandler {\n\tlet fallbackShortcutKeybindings: KeybindingsManager | undefined;\n\tconst providerAuth = new RpcProviderAuth(inputForm, {\n\t\toutput,\n\t\tpending: pendingExtensionRequests ?? new Map(),\n\t});\n\tconst bashOwners = new RpcBashRequestOwners(output);\n\tconst getShortcutBindings = () => {\n\t\tif (keybindings) return keybindings.getEffectiveConfig();\n\t\tif (fallbackShortcutKeybindings) fallbackShortcutKeybindings.reload();\n\t\telse fallbackShortcutKeybindings = KeybindingsManager.create(runtimeHost.services.agentDir);\n\t\treturn fallbackShortcutKeybindings.getEffectiveConfig();\n\t};\n\tconst handleCommand = (async (command: RpcCommand): Promise<RpcResponse | undefined> => {\n\t\tconst id = command.id;\n\t\tconst retryFailedResources = command.type === \"reload\" && shouldRetryResources?.() === true;\n\t\tif (command.type !== \"prompt\" && !retryFailedResources && !canRunBeforeOptionalResources(command)) {\n\t\t\tconst pendingResources = waitForResources?.();\n\t\t\tif (pendingResources) await pendingResources;\n\t\t}\n\t\tconst session = getSession();\n\t\tswitch (command.type) {\n\t\t\tcase \"open_task_inspector\": {\n\t\t\t\tif (!keybindings || !taskInspectorUi)\n\t\t\t\t\treturn createRpcErrorResponse(id, command.type, \"Task inspection requires an interactive host\");\n\t\t\t\tvoid showEngineTaskInspector(session, taskInspectorUi, command.taskId).catch((error: Error) =>\n\t\t\t\t\tsession.extensionRunner.getUIContext().notify(error.message, \"error\"),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, command.type);\n\t\t\t}\n\t\t\tcase \"prompt\": {\n\t\t\t\tlet preflightSucceeded = false;\n\t\t\t\tvoid (async () => {\n\t\t\t\t\tconst pendingResources = waitForResources?.();\n\t\t\t\t\tif (pendingResources) await pendingResources;\n\t\t\t\t\tif (rejectUnsupportedProviderPrompt(runtimeHost, output, id)) return;\n\t\t\t\t\tconst promptSession = getSession();\n\t\t\t\t\tawait promptSession.prompt(command.message, {\n\t\t\t\t\t\timages: command.images,\n\t\t\t\t\t\tstreamingBehavior: command.streamingBehavior,\n\t\t\t\t\t\tsource: \"rpc\",\n\t\t\t\t\t\tpreflightResult: (didSucceed, disposition) => {\n\t\t\t\t\t\t\tif (didSucceed) {\n\t\t\t\t\t\t\t\tpreflightSucceeded = true;\n\t\t\t\t\t\t\t\toutput(createRpcSuccessResponse(id, \"prompt\", { disposition }));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t})().catch((promptError: unknown) => {\n\t\t\t\t\tif (!preflightSucceeded) {\n\t\t\t\t\t\toutput(createRpcErrorResponse(id, \"prompt\", formatRpcErrorMessage(promptError), promptError));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcase \"steer\": {\n\t\t\t\tconst disposition = await session.steer(command.message, command.images, { source: \"rpc\" });\n\t\t\t\treturn createRpcSuccessResponse(id, \"steer\", { disposition });\n\t\t\t}\n\n\t\t\tcase \"follow_up\": {\n\t\t\t\tconst disposition = await session.followUp(command.message, command.images, { source: \"rpc\" });\n\t\t\t\treturn createRpcSuccessResponse(id, \"follow_up\", { disposition });\n\t\t\t}\n\n\t\t\tcase \"abort\": {\n\t\t\t\tawait session.abort();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort\");\n\t\t\t}\n\t\t\tcase \"new_session\": {\n\t\t\t\tconst options = command.parentSession !== undefined ? { parentSession: command.parentSession } : undefined;\n\t\t\t\tconst result = await runtimeHost.newSession(options);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"new_session\", result);\n\t\t\t}\n\t\t\tcase \"delete_session\": {\n\t\t\t\tconst sessionId = command.sessionId ?? id;\n\t\t\t\tif (!sessionId) return createRpcErrorResponse(id, \"delete_session\", \"delete_session requires sessionId\");\n\t\t\t\tawait session.sessionManager.deleteSession(sessionId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"delete_session\");\n\t\t\t}\n\n\t\t\tcase \"get_session_summary\":\n\t\t\t\treturn createRpcSuccessResponse(id, command.type, { summary: session.sessionSummary ?? null });\n\t\t\tcase \"list_sessions\": {\n\t\t\t\tconst sessions = await SessionManager.list(\n\t\t\t\t\truntimeHost.services.cwd,\n\t\t\t\t\tsession.sessionManager.getSessionStore(),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, command.type, {\n\t\t\t\t\tsessions: sessions.map((info) => ({\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\tcreated: info.created.toISOString(),\n\t\t\t\t\t\tmodified: info.modified.toISOString(),\n\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t}\n\t\t\tcase \"list_workflow_runs\":\n\t\t\t\treturn createRpcSuccessResponse(id, command.type, {\n\t\t\t\t\truns: await session.workflows.listRuns({ status: command.status, includeDurable: true }),\n\t\t\t\t});\n\t\t\tcase \"get_workflow_run_summary\":\n\t\t\t\treturn createRpcSuccessResponse(id, command.type, await session.workflows.getRun(command.runId));\n\n\t\t\tcase \"get_state\": {\n\t\t\t\tconst extensionResult = session.resourceLoader.getExtensions();\n\t\t\t\tconst state: RpcSessionState = {\n\t\t\t\t\tmodel: session.model,\n\t\t\t\t\tmodelFallbackMessage: runtimeHost.modelFallbackMessage,\n\t\t\t\t\tmodelFallbackReason: runtimeHost.modelFallbackReason,\n\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\tisStreaming: session.isStreaming,\n\t\t\t\t\tisCompacting: session.isCompacting,\n\t\t\t\t\tcompactionReason: session.compactionReason,\n\t\t\t\t\tsteeringMode: session.steeringMode,\n\t\t\t\t\tfollowUpMode: session.followUpMode,\n\t\t\t\t\t...(session.sessionFile ? { sessionLocation: session.sessionFile } : {}),\n\t\t\t\t\tsessionId: session.sessionId,\n\t\t\t\t\tsessionName: session.sessionName,\n\t\t\t\t\tautoCompactionEnabled: session.autoCompactionEnabled,\n\t\t\t\t\tmessageCount: session.messages.length,\n\t\t\t\t\tpendingMessageCount: session.pendingMessageCount,\n\t\t\t\t\tqueuedMessagesPaused: session.queuedMessagesPaused,\n\t\t\t\t\tprojectTrusted: session.settingsManager.isProjectTrusted?.() === true,\n\t\t\t\t\tresourceOverlaps: extensionResult.overlaps ?? [],\n\t\t\t\t\tresourceExtensions: extensionResult.extensions.map((extension) => ({\n\t\t\t\t\t\tpath: extension.path,\n\t\t\t\t\t\tsourceInfo: extension.sourceInfo,\n\t\t\t\t\t\thidden: extension.hidden === true,\n\t\t\t\t\t})),\n\t\t\t\t};\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_state\", state);\n\t\t\t}\n\t\t\tcase \"set_model\": {\n\t\t\t\tconst models = await session.modelRuntime.getAvailableSnapshot();\n\t\t\t\tconst model = models.find(\n\t\t\t\t\t(candidate) => candidate.provider === command.provider && candidate.id === command.modelId,\n\t\t\t\t);\n\t\t\t\tif (!model) {\n\t\t\t\t\treturn createRpcErrorResponse(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t\"set_model\",\n\t\t\t\t\t\t`Model not found: ${command.provider}/${command.modelId}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait session.setModel(model, command.persist === true ? { persist: true } : {});\n\t\t\t\truntimeHost.resolveModelFallback();\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_model\", session.model ?? model);\n\t\t\t}\n\t\t\tcase \"cycle_model\": {\n\t\t\t\tconst previousModel = session.model;\n\t\t\t\tconst result = await session.cycleModel(\n\t\t\t\t\tcommand.direction,\n\t\t\t\t\tcommand.persist === true ? { persist: true } : {},\n\t\t\t\t);\n\t\t\t\truntimeHost.resolveModelFallbackAfterExplicitModelSelection(previousModel, result?.model);\n\t\t\t\treturn createRpcSuccessResponse(id, \"cycle_model\", result ?? null);\n\t\t\t}\n\t\t\tcase \"get_available_models\": {\n\t\t\t\tconst models = await session.modelRuntime.getAvailableSnapshot();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_available_models\", {\n\t\t\t\t\tmodels,\n\t\t\t\t\tscopedModels: session.scopedModels,\n\t\t\t\t\tcustomAuthProviders: [],\n\t\t\t\t\toauthProviders: session.modelRuntime.getOAuthProviderMetadata(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"login_provider\": {\n\t\t\t\tconst result =\n\t\t\t\t\tcommand.authType === \"oauth\"\n\t\t\t\t\t\t? await providerAuth.loginOAuth(session, command.provider, command.loginId)\n\t\t\t\t\t\t: await providerAuth.login(session, command.provider, command.loginId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"login_provider\", result);\n\t\t\t}\n\n\t\t\tcase \"save_provider_credential\":\n\t\t\t\treturn createRpcSuccessResponse(\n\t\t\t\t\tid,\n\t\t\t\t\t\"save_provider_credential\",\n\t\t\t\t\tawait providerAuth.save(session, command.provider, command.credential, {\n\t\t\t\t\t\trefreshCatalog: command.refreshCatalog,\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\tcase \"cancel_login_provider\":\n\t\t\t\tproviderAuth.cancel(command.provider, command.loginId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"cancel_login_provider\");\n\n\t\t\tcase \"logout_provider\": {\n\t\t\t\tconst result = await runtimeHost.logoutProvider(command.provider);\n\t\t\t\treturn createRpcSuccessResponse(id, \"logout_provider\", result);\n\t\t\t}\n\t\t\tcase \"refresh_models\": {\n\t\t\t\tconst controller = command.timeoutMs === undefined ? undefined : new AbortController();\n\t\t\t\tconst timedOut = Symbol(\"model refresh timed out\");\n\t\t\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\t\t\tconst timeoutResult =\n\t\t\t\t\tcontroller && command.timeoutMs !== undefined\n\t\t\t\t\t\t? new Promise<typeof timedOut>((resolve) => {\n\t\t\t\t\t\t\t\ttimeout = setTimeout(() => {\n\t\t\t\t\t\t\t\t\tcontroller.abort();\n\t\t\t\t\t\t\t\t\tresolve(timedOut);\n\t\t\t\t\t\t\t\t}, command.timeoutMs);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: undefined;\n\t\t\t\ttry {\n\t\t\t\t\tconst refresh = (async () => {\n\t\t\t\t\t\tawait session.modelRuntime.reloadCredentials({ refreshAvailability: false });\n\t\t\t\t\t\tif (controller?.signal.aborted) return { aborted: true, errors: new Map<string, Error>() };\n\t\t\t\t\t\treturn session.modelRuntime.refresh({\n\t\t\t\t\t\t\tallowNetwork: command.allowNetwork,\n\t\t\t\t\t\t\tforce: command.force,\n\t\t\t\t\t\t\tsignal: controller?.signal,\n\t\t\t\t\t\t});\n\t\t\t\t\t})();\n\t\t\t\t\tconst outcome = timeoutResult ? await Promise.race([refresh, timeoutResult]) : await refresh;\n\t\t\t\t\tconst result = outcome === timedOut ? { aborted: true, errors: new Map<string, Error>() } : outcome;\n\t\t\t\t\treturn createRpcSuccessResponse(id, \"refresh_models\", {\n\t\t\t\t\t\taborted: result.aborted,\n\t\t\t\t\t\terrors: [...result.errors].map(([provider, error]) => ({ provider, message: error.message })),\n\t\t\t\t\t\tmodels: session.modelRuntime.getAvailableSnapshot(),\n\t\t\t\t\t\tscopedModels: session.scopedModels,\n\t\t\t\t\t\tcustomAuthProviders: [],\n\t\t\t\t\t\toauthProviders: session.modelRuntime.getOAuthProviderMetadata(),\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"set_thinking_level\": {\n\t\t\t\tawait session.setThinkingLevel(command.level, command.persist === true ? { persist: true } : {});\n\t\t\t\tconst model = session.model;\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_thinking_level\", {\n\t\t\t\t\tlevel: session.thinkingLevel,\n\t\t\t\t\t...(model ? { provider: model.provider, modelId: model.id } : {}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"cycle_thinking_level\": {\n\t\t\t\tconst level = await session.cycleThinkingLevel();\n\t\t\t\treturn createRpcSuccessResponse(id, \"cycle_thinking_level\", level ? { level } : null);\n\t\t\t}\n\n\t\t\tcase \"get_available_thinking_levels\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_available_thinking_levels\", {\n\t\t\t\t\tlevels: session.getAvailableThinkingLevels(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"set_steering_mode\": {\n\t\t\t\tsession.setSteeringMode(command.mode);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_steering_mode\");\n\t\t\t}\n\n\t\t\tcase \"set_follow_up_mode\": {\n\t\t\t\tsession.setFollowUpMode(command.mode);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_follow_up_mode\");\n\t\t\t}\n\n\t\t\tcase \"compact\": {\n\t\t\t\tconst result = await session.compact();\n\t\t\t\treturn createRpcSuccessResponse(id, \"compact\", result);\n\t\t\t}\n\n\t\t\tcase \"set_auto_compaction\":\n\t\t\t\tsession.setAutoCompactionEnabled(command.enabled);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_auto_compaction\");\n\t\t\tcase \"abort_compaction\":\n\t\t\t\tsession.abortCompaction();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_compaction\");\n\t\t\tcase \"set_auto_retry\":\n\t\t\t\tsession.setAutoRetryEnabled(command.enabled);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_auto_retry\");\n\t\t\tcase \"abort_retry\":\n\t\t\t\tsession.abortRetry();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_retry\");\n\n\t\t\tcase \"clear_queue\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"clear_queue\", session.clearQueue());\n\t\t\t}\n\t\t\tcase \"pause_queued_messages\":\n\t\t\t\tsession.pauseQueuedMessages();\n\t\t\t\treturn createRpcSuccessResponse(id, \"pause_queued_messages\");\n\t\t\tcase \"resume_queued_messages\":\n\t\t\t\treturn createRpcSuccessResponse(id, \"resume_queued_messages\", {\n\t\t\t\t\treleased: await session.resumeQueuedMessages(),\n\t\t\t\t});\n\t\t\tcase \"bash\": {\n\t\t\t\tconst result = await bashOwners.run(\n\t\t\t\t\t{\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\tisCurrent: () => getSession() === session,\n\t\t\t\t\t},\n\t\t\t\t\t// A `bash` command is still a user-initiated shell request, so it must\n\t\t\t\t\t// reach `user_bash` handlers (sandboxes, remote shells) exactly like the\n\t\t\t\t\t// `user_bash` command does. Ownership, streaming correlation, and result\n\t\t\t\t\t// recording stay with the owning request either way.\n\t\t\t\t\tasync (onUpdate) => {\n\t\t\t\t\t\tconst intercepted = await session.extensionRunner.emitUserBash({\n\t\t\t\t\t\t\ttype: \"user_bash\",\n\t\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext === true,\n\t\t\t\t\t\t\tcwd: session.sessionManager.getCwd(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (intercepted?.result) return intercepted.result;\n\t\t\t\t\t\treturn session.executeBash(command.command, onUpdate, {\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\toperations: intercepted?.operations,\n\t\t\t\t\t\t\temitEvent: false,\n\t\t\t\t\t\t\trecordResult: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"bash\", result);\n\t\t\t}\n\t\t\tcase \"user_bash\": {\n\t\t\t\tconst result = await bashOwners.run(\n\t\t\t\t\t{\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\tisCurrent: () => getSession() === session,\n\t\t\t\t\t},\n\t\t\t\t\tasync (onUpdate) => {\n\t\t\t\t\t\tconst intercepted = await session.extensionRunner.emitUserBash({\n\t\t\t\t\t\t\ttype: \"user_bash\",\n\t\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext === true,\n\t\t\t\t\t\t\tcwd: session.sessionManager.getCwd(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (intercepted?.result) return intercepted.result;\n\t\t\t\t\t\treturn session.executeBash(command.command, onUpdate, {\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\toperations: intercepted?.operations,\n\t\t\t\t\t\t\temitEvent: false,\n\t\t\t\t\t\t\trecordResult: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"user_bash\", result);\n\t\t\t}\n\t\t\tcase \"abort_bash\":\n\t\t\t\tbashOwners.abort(command.requestId);\n\t\t\t\tsession.abortBash(command.requestId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_bash\");\n\n\t\t\tcase \"get_session_stats\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_session_stats\", session.getSessionStats());\n\t\t\t}\n\n\t\t\tcase \"get_tools\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_tools\", session.getToolStatus());\n\t\t\t}\n\n\t\t\tcase \"export_html\": {\n\t\t\t\tconst path = await session.exportToHtml(command.outputPath);\n\t\t\t\treturn createRpcSuccessResponse(id, \"export_html\", { path });\n\t\t\t}\n\n\t\t\tcase \"switch_session\": {\n\t\t\t\tconst result = await runtimeHost.switchSession(command.sessionId, {\n\t\t\t\t\tcwdOverride: command.cwdOverride,\n\t\t\t\t\tsessionDirectory: command.sessionDirectory,\n\t\t\t\t});\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"switch_session\", result);\n\t\t\t}\n\n\t\t\tcase \"import_session\": {\n\t\t\t\tconst result = await runtimeHost.importFromJsonl(command.inputPath, command.cwdOverride);\n\t\t\t\tif (!result.cancelled) await rebindSession();\n\t\t\t\treturn createRpcSuccessResponse(id, \"import_session\", result);\n\t\t\t}\n\n\t\t\tcase \"fork\": {\n\t\t\t\tconst result = await runtimeHost.fork(command.entryId);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"fork\", { text: result.selectedText, cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"clone\": {\n\t\t\t\tconst leafId = session.sessionManager.getLeafId();\n\t\t\t\tif (!leafId) {\n\t\t\t\t\treturn createRpcErrorResponse(id, \"clone\", \"Cannot clone session: no current entry selected\");\n\t\t\t\t}\n\t\t\t\tconst result = await runtimeHost.fork(leafId, { position: \"at\" });\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"clone\", { cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"get_fork_messages\": {\n\t\t\t\tconst messages = session.getUserMessagesForForking();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_fork_messages\", { messages });\n\t\t\t}\n\n\t\t\tcase \"get_entries\": {\n\t\t\t\tconst sessionManager = session.sessionManager;\n\t\t\t\tlet entries = sessionManager.getEntries();\n\t\t\t\tif (command.since !== undefined) {\n\t\t\t\t\tconst sinceIndex = entries.findIndex((e) => e.id === command.since);\n\t\t\t\t\tif (sinceIndex === -1) {\n\t\t\t\t\t\treturn createRpcErrorResponse(id, \"get_entries\", `Entry not found: ${command.since}`);\n\t\t\t\t\t}\n\t\t\t\t\tentries = entries.slice(sinceIndex + 1);\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_entries\", { entries, leafId: sessionManager.getLeafId() });\n\t\t\t}\n\n\t\t\tcase \"get_tree\": {\n\t\t\t\tconst sessionManager = session.sessionManager;\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_tree\", {\n\t\t\t\t\ttree: sessionManager.getTree(),\n\t\t\t\t\tleafId: sessionManager.getLeafId(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_last_assistant_text\": {\n\t\t\t\tconst text = session.getLastAssistantText();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_last_assistant_text\", { text });\n\t\t\t}\n\n\t\t\tcase \"set_session_name\": {\n\t\t\t\tconst name = command.name.trim();\n\t\t\t\tif (!name) {\n\t\t\t\t\treturn createRpcErrorResponse(id, \"set_session_name\", \"Session name cannot be empty\");\n\t\t\t\t}\n\t\t\t\tawait session.setSessionName(name);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_session_name\");\n\t\t\t}\n\n\t\t\tcase \"navigate_tree\": {\n\t\t\t\tconst result = await session.navigateTree(command.targetId, command.options);\n\t\t\t\treturn createRpcSuccessResponse(id, \"navigate_tree\", {\n\t\t\t\t\tcancelled: result.cancelled,\n\t\t\t\t\teditorText: result.editorText,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"set_label\": {\n\t\t\t\tconst entryId = await session.sessionManager.appendLabelChange(command.entryId, command.label);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_label\", { entryId });\n\t\t\t}\n\n\t\t\tcase \"reload\": {\n\t\t\t\tif (retryFailedResources && reloadResources) await reloadResources();\n\t\t\t\telse if (reloadCoordinator) await reloadCoordinator.reload(session);\n\t\t\t\telse await session.reload();\n\t\t\t\treturn createRpcSuccessResponse(id, \"reload\");\n\t\t\t}\n\n\t\t\tcase \"get_shortcuts\": {\n\t\t\t\tconst effectiveBindings = getShortcutBindings();\n\t\t\t\tconst shortcuts = session.extensionRunner.getShortcuts(effectiveBindings);\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_shortcuts\", {\n\t\t\t\t\tshortcuts: [...shortcuts].map(([key, shortcut]) => ({ key, description: shortcut.description })),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"invoke_shortcut\": {\n\t\t\t\tconst shortcut = session.extensionRunner.getShortcuts(getShortcutBindings()).get(command.key as KeyId);\n\t\t\t\tif (!shortcut) return createRpcErrorResponse(id, \"invoke_shortcut\", `Shortcut not found: ${command.key}`);\n\t\t\t\tawait runCallback(\n\t\t\t\t\t{ kind: \"extension.hook\", name: `shortcut:${command.key}`, sourcePath: shortcut.extensionPath },\n\t\t\t\t\t() => shortcut.handler(session.extensionRunner.createContext()),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"invoke_shortcut\");\n\t\t\t}\n\n\t\t\tcase \"get_messages\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_messages\", { messages: session.messages });\n\t\t\t}\n\n\t\t\tcase \"get_command_completions\": {\n\t\t\t\tconst registeredCommand = session.extensionRunner\n\t\t\t\t\t.getRegisteredCommands()\n\t\t\t\t\t.find((candidate) => candidate.invocationName === command.commandName);\n\t\t\t\tconst getArgumentCompletions = registeredCommand?.getArgumentCompletions;\n\t\t\t\tif (registeredCommand === undefined || getArgumentCompletions === undefined) {\n\t\t\t\t\treturn createRpcSuccessResponse(id, \"get_command_completions\", { completions: null });\n\t\t\t\t}\n\t\t\t\tconst completions = await runCallback(\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"extension.hook\",\n\t\t\t\t\t\tname: `command-completions:${command.commandName}`,\n\t\t\t\t\t\tsourcePath: registeredCommand.sourceInfo.path,\n\t\t\t\t\t},\n\t\t\t\t\t() => getArgumentCompletions(command.argumentPrefix),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_command_completions\", { completions });\n\t\t\t}\n\n\t\t\tcase \"get_commands\": {\n\t\t\t\tconst commands: RpcSlashCommand[] = [];\n\n\t\t\t\tfor (const registeredCommand of session.extensionRunner.getRegisteredCommands()) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: registeredCommand.invocationName,\n\t\t\t\t\t\tdescription: registeredCommand.description,\n\t\t\t\t\t\t...(registeredCommand.getArgumentCompletions !== undefined ? { hasArgumentCompletions: true } : {}),\n\t\t\t\t\t\tsource: \"extension\",\n\t\t\t\t\t\tsourceInfo: registeredCommand.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const template of session.promptTemplates) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: template.name,\n\t\t\t\t\t\tdescription: template.description,\n\t\t\t\t\t\tsource: \"prompt\",\n\t\t\t\t\t\tsourceInfo: template.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const skillCommand of getSkillCatalog(session.resourceLoader).commands) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: `skill:${skillCommand.name}`,\n\t\t\t\t\t\tdescription: skillCommand.description,\n\t\t\t\t\t\tsource: \"skill\",\n\t\t\t\t\t\tsourceInfo: skillCommand.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_commands\", { commands });\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tconst unknownCommand = command as { type: string };\n\t\t\t\treturn createRpcErrorResponse(id, unknownCommand.type, `Unknown command: ${unknownCommand.type}`);\n\t\t\t}\n\t\t}\n\t}) as ManagedRpcCommandHandler;\n\thandleCommand.disposeActiveBash = () => bashOwners.dispose();\n\treturn handleCommand;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc-command-handler.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { AgentSession } from \"../../core/agent-session.js\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport { runCallback } from \"../../core/callback-activity.ts\";\nimport type { ExtensionUIContext } from \"../../core/extensions/index.js\";\nimport { KeybindingsManager } from \"../../core/keybindings.ts\";\nimport { SessionManager } from \"../../core/session-manager.ts\";\nimport { getSkillCatalog } from \"../../core/skill-catalog.ts\";\nimport { RpcBashRequestOwners } from \"./rpc-bash-request-owners.ts\";\nimport type { RpcPendingExtensionRequests } from \"./rpc-extension-ui.ts\";\nimport type { KeybindingsReloadCoordinator } from \"./rpc-keybindings-reload.ts\";\nimport { rejectUnsupportedProviderPrompt } from \"./rpc-model-fallback-prompt.ts\";\nimport { type ProviderLoginInput, RpcProviderAuth } from \"./rpc-provider-auth.ts\";\nimport {\n\tcreateRpcErrorResponse,\n\tcreateRpcSuccessResponse,\n\tformatRpcErrorMessage,\n\ttype RpcOutput,\n} from \"./rpc-responses.ts\";\nimport type { RpcCommand, RpcResponse, RpcSessionState, RpcSlashCommand } from \"./rpc-types.ts\";\nimport { showEngineTaskInspector } from \"./task-ui-bridge.js\";\n\nexport type RpcCommandHandler = (command: RpcCommand) => Promise<RpcResponse | undefined>;\nexport type ManagedRpcCommandHandler = RpcCommandHandler & { disposeActiveBash(): Promise<void> };\n\ninterface RpcCommandHandlerOptions {\n\truntimeHost: AgentSessionRuntime;\n\tgetSession: () => AgentSession;\n\trebindSession: () => Promise<void>;\n\toutput: RpcOutput;\n\tkeybindings?: KeybindingsManager;\n\ttaskInspectorUi?: Pick<ExtensionUIContext, \"custom\">;\n\treloadCoordinator?: KeybindingsReloadCoordinator<AgentSession>;\n\tinputForm?: ProviderLoginInput;\n\tpendingExtensionRequests?: RpcPendingExtensionRequests;\n\twaitForResources?: () => Promise<void> | undefined;\n\treloadResources?: () => Promise<void>;\n\tshouldRetryResources?: () => boolean;\n}\n\nfunction canRunBeforeOptionalResources(command: RpcCommand): boolean {\n\tswitch (command.type) {\n\t\tcase \"abort\":\n\t\tcase \"abort_bash\":\n\t\tcase \"abort_compaction\":\n\t\tcase \"abort_retry\":\n\t\tcase \"cancel_login_provider\":\n\t\tcase \"clear_queue\":\n\t\tcase \"get_messages\":\n\t\tcase \"get_state\":\n\t\tcase \"pause_queued_messages\":\n\t\tcase \"resume_queued_messages\":\n\t\tcase \"set_auto_compaction\":\n\t\tcase \"set_auto_retry\":\n\t\tcase \"set_follow_up_mode\":\n\t\tcase \"set_steering_mode\":\n\t\t\treturn true;\n\t\tcase \"get_available_models\":\n\t\t\treturn command.allowPartialResources === true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport function createRpcCommandHandler({\n\truntimeHost,\n\tgetSession,\n\trebindSession,\n\toutput,\n\tkeybindings,\n\ttaskInspectorUi,\n\treloadCoordinator,\n\tinputForm,\n\tpendingExtensionRequests,\n\twaitForResources,\n\treloadResources,\n\tshouldRetryResources,\n}: RpcCommandHandlerOptions): ManagedRpcCommandHandler {\n\tlet fallbackShortcutKeybindings: KeybindingsManager | undefined;\n\tconst providerAuth = new RpcProviderAuth(inputForm, {\n\t\toutput,\n\t\tpending: pendingExtensionRequests ?? new Map(),\n\t});\n\tconst bashOwners = new RpcBashRequestOwners(output);\n\tconst getShortcutBindings = () => {\n\t\tif (keybindings) return keybindings.getEffectiveConfig();\n\t\tif (fallbackShortcutKeybindings) fallbackShortcutKeybindings.reload();\n\t\telse fallbackShortcutKeybindings = KeybindingsManager.create(runtimeHost.services.agentDir);\n\t\treturn fallbackShortcutKeybindings.getEffectiveConfig();\n\t};\n\tconst handleCommand = (async (command: RpcCommand): Promise<RpcResponse | undefined> => {\n\t\tconst id = command.id;\n\t\tconst retryFailedResources = command.type === \"reload\" && shouldRetryResources?.() === true;\n\t\tif (command.type !== \"prompt\" && !retryFailedResources && !canRunBeforeOptionalResources(command)) {\n\t\t\tconst pendingResources = waitForResources?.();\n\t\t\tif (pendingResources) await pendingResources;\n\t\t}\n\t\tconst session = getSession();\n\t\tswitch (command.type) {\n\t\t\tcase \"open_task_inspector\": {\n\t\t\t\tif (!keybindings || !taskInspectorUi)\n\t\t\t\t\treturn createRpcErrorResponse(id, command.type, \"Task inspection requires an interactive host\");\n\t\t\t\tvoid showEngineTaskInspector(session, taskInspectorUi, command.taskId).catch((error: Error) =>\n\t\t\t\t\tsession.extensionRunner.getUIContext().notify(error.message, \"error\"),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, command.type);\n\t\t\t}\n\t\t\tcase \"prompt\": {\n\t\t\t\tlet preflightSucceeded = false;\n\t\t\t\tvoid (async () => {\n\t\t\t\t\tconst pendingResources = waitForResources?.();\n\t\t\t\t\tif (pendingResources) await pendingResources;\n\t\t\t\t\tif (rejectUnsupportedProviderPrompt(runtimeHost, output, id)) return;\n\t\t\t\t\tconst promptSession = getSession();\n\t\t\t\t\tawait promptSession.prompt(command.message, {\n\t\t\t\t\t\timages: command.images,\n\t\t\t\t\t\tstreamingBehavior: command.streamingBehavior,\n\t\t\t\t\t\tsource: \"rpc\",\n\t\t\t\t\t\tpreflightResult: (didSucceed, disposition) => {\n\t\t\t\t\t\t\tif (didSucceed) {\n\t\t\t\t\t\t\t\tpreflightSucceeded = true;\n\t\t\t\t\t\t\t\toutput(createRpcSuccessResponse(id, \"prompt\", { disposition }));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t})().catch((promptError: unknown) => {\n\t\t\t\t\tif (!preflightSucceeded) {\n\t\t\t\t\t\toutput(createRpcErrorResponse(id, \"prompt\", formatRpcErrorMessage(promptError), promptError));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcase \"steer\": {\n\t\t\t\tconst disposition = await session.steer(command.message, command.images, { source: \"rpc\" });\n\t\t\t\treturn createRpcSuccessResponse(id, \"steer\", { disposition });\n\t\t\t}\n\n\t\t\tcase \"follow_up\": {\n\t\t\t\tconst disposition = await session.followUp(command.message, command.images, { source: \"rpc\" });\n\t\t\t\treturn createRpcSuccessResponse(id, \"follow_up\", { disposition });\n\t\t\t}\n\n\t\t\tcase \"abort\": {\n\t\t\t\tawait session.abort();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort\");\n\t\t\t}\n\t\t\tcase \"new_session\": {\n\t\t\t\tconst options = command.parentSession !== undefined ? { parentSession: command.parentSession } : undefined;\n\t\t\t\tconst result = await runtimeHost.newSession(options);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"new_session\", result);\n\t\t\t}\n\t\t\tcase \"delete_session\": {\n\t\t\t\tconst sessionId = command.sessionId ?? id;\n\t\t\t\tif (!sessionId) return createRpcErrorResponse(id, \"delete_session\", \"delete_session requires sessionId\");\n\t\t\t\tawait session.sessionManager.deleteSession(sessionId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"delete_session\");\n\t\t\t}\n\n\t\t\tcase \"get_session_summary\":\n\t\t\t\treturn createRpcSuccessResponse(id, command.type, { summary: session.sessionSummary ?? null });\n\t\t\tcase \"list_sessions\": {\n\t\t\t\tconst sessions = await SessionManager.list(\n\t\t\t\t\truntimeHost.services.cwd,\n\t\t\t\t\tsession.sessionManager.getSessionStore(),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, command.type, {\n\t\t\t\t\tsessions: sessions.map((info) => ({\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\tcreated: info.created.toISOString(),\n\t\t\t\t\t\tmodified: info.modified.toISOString(),\n\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t}\n\t\t\tcase \"list_workflow_runs\":\n\t\t\t\treturn createRpcSuccessResponse(id, command.type, {\n\t\t\t\t\truns: await session.workflows.listRuns({ status: command.status, includeDurable: true }),\n\t\t\t\t});\n\t\t\tcase \"get_workflow_run_summary\":\n\t\t\t\treturn createRpcSuccessResponse(id, command.type, await session.workflows.getRun(command.runId));\n\n\t\t\tcase \"get_state\": {\n\t\t\t\tconst extensionResult = session.resourceLoader.getExtensions();\n\t\t\t\tconst state: RpcSessionState = {\n\t\t\t\t\tmodel: session.model,\n\t\t\t\t\tmodelFallbackMessage: runtimeHost.modelFallbackMessage,\n\t\t\t\t\tmodelFallbackReason: runtimeHost.modelFallbackReason,\n\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\tisStreaming: session.isStreaming,\n\t\t\t\t\tisCompacting: session.isCompacting,\n\t\t\t\t\tcompactionReason: session.compactionReason,\n\t\t\t\t\tsteeringMode: session.steeringMode,\n\t\t\t\t\tfollowUpMode: session.followUpMode,\n\t\t\t\t\t...(session.sessionFile ? { sessionLocation: session.sessionFile } : {}),\n\t\t\t\t\tsessionId: session.sessionId,\n\t\t\t\t\tsessionName: session.sessionName,\n\t\t\t\t\tautoCompactionEnabled: session.autoCompactionEnabled,\n\t\t\t\t\tmessageCount: session.messages.length,\n\t\t\t\t\tpendingMessageCount: session.pendingMessageCount,\n\t\t\t\t\tqueuedMessagesPaused: session.queuedMessagesPaused,\n\t\t\t\t\tprojectTrusted: session.settingsManager.isProjectTrusted?.() === true,\n\t\t\t\t\tresourceOverlaps: extensionResult.overlaps ?? [],\n\t\t\t\t\tresourceExtensions: extensionResult.extensions.map((extension) => ({\n\t\t\t\t\t\tpath: extension.path,\n\t\t\t\t\t\tsourceInfo: extension.sourceInfo,\n\t\t\t\t\t\thidden: extension.hidden === true,\n\t\t\t\t\t})),\n\t\t\t\t};\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_state\", state);\n\t\t\t}\n\t\t\tcase \"set_model\": {\n\t\t\t\tconst models = await session.modelRuntime.getAvailableSnapshot();\n\t\t\t\tconst model = models.find(\n\t\t\t\t\t(candidate) => candidate.provider === command.provider && candidate.id === command.modelId,\n\t\t\t\t);\n\t\t\t\tif (!model) {\n\t\t\t\t\treturn createRpcErrorResponse(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t\"set_model\",\n\t\t\t\t\t\t`Model not found: ${command.provider}/${command.modelId}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait session.setModel(model, command.persist === true ? { persist: true } : {});\n\t\t\t\truntimeHost.resolveModelFallback();\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_model\", session.model ?? model);\n\t\t\t}\n\t\t\tcase \"cycle_model\": {\n\t\t\t\tconst previousModel = session.model;\n\t\t\t\tconst result = await session.cycleModel(\n\t\t\t\t\tcommand.direction,\n\t\t\t\t\tcommand.persist === true ? { persist: true } : {},\n\t\t\t\t);\n\t\t\t\truntimeHost.resolveModelFallbackAfterExplicitModelSelection(previousModel, result?.model);\n\t\t\t\treturn createRpcSuccessResponse(id, \"cycle_model\", result ?? null);\n\t\t\t}\n\t\t\tcase \"get_available_models\": {\n\t\t\t\tconst models = await session.modelRuntime.getAvailableSnapshot();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_available_models\", {\n\t\t\t\t\tmodels,\n\t\t\t\t\tscopedModels: session.scopedModels,\n\t\t\t\t\tcustomAuthProviders: [],\n\t\t\t\t\toauthProviders: session.modelRuntime.getOAuthProviderMetadata(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"login_provider\": {\n\t\t\t\tconst result =\n\t\t\t\t\tcommand.authType === \"oauth\"\n\t\t\t\t\t\t? await providerAuth.loginOAuth(session, command.provider, command.loginId)\n\t\t\t\t\t\t: await providerAuth.login(session, command.provider, command.loginId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"login_provider\", result);\n\t\t\t}\n\n\t\t\tcase \"save_provider_credential\":\n\t\t\t\treturn createRpcSuccessResponse(\n\t\t\t\t\tid,\n\t\t\t\t\t\"save_provider_credential\",\n\t\t\t\t\tawait providerAuth.save(session, command.provider, command.credential, {\n\t\t\t\t\t\trefreshCatalog: command.refreshCatalog,\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\tcase \"cancel_login_provider\":\n\t\t\t\tproviderAuth.cancel(command.provider, command.loginId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"cancel_login_provider\");\n\n\t\t\tcase \"logout_provider\": {\n\t\t\t\tconst result = await runtimeHost.logoutProvider(command.provider);\n\t\t\t\treturn createRpcSuccessResponse(id, \"logout_provider\", result);\n\t\t\t}\n\t\t\tcase \"refresh_models\": {\n\t\t\t\tconst controller = command.timeoutMs === undefined ? undefined : new AbortController();\n\t\t\t\tconst timedOut = Symbol(\"model refresh timed out\");\n\t\t\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\t\t\tconst timeoutResult =\n\t\t\t\t\tcontroller && command.timeoutMs !== undefined\n\t\t\t\t\t\t? new Promise<typeof timedOut>((resolve) => {\n\t\t\t\t\t\t\t\ttimeout = setTimeout(() => {\n\t\t\t\t\t\t\t\t\tcontroller.abort();\n\t\t\t\t\t\t\t\t\tresolve(timedOut);\n\t\t\t\t\t\t\t\t}, command.timeoutMs);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: undefined;\n\t\t\t\ttry {\n\t\t\t\t\tconst refresh = (async () => {\n\t\t\t\t\t\tawait session.modelRuntime.reloadCredentials({ refreshAvailability: false });\n\t\t\t\t\t\tif (controller?.signal.aborted) return { aborted: true, errors: new Map<string, Error>() };\n\t\t\t\t\t\treturn session.modelRuntime.refresh({\n\t\t\t\t\t\t\tallowNetwork: command.allowNetwork,\n\t\t\t\t\t\t\tforce: command.force,\n\t\t\t\t\t\t\tsignal: controller?.signal,\n\t\t\t\t\t\t});\n\t\t\t\t\t})();\n\t\t\t\t\tconst outcome = timeoutResult ? await Promise.race([refresh, timeoutResult]) : await refresh;\n\t\t\t\t\tconst result = outcome === timedOut ? { aborted: true, errors: new Map<string, Error>() } : outcome;\n\t\t\t\t\treturn createRpcSuccessResponse(id, \"refresh_models\", {\n\t\t\t\t\t\taborted: result.aborted,\n\t\t\t\t\t\terrors: [...result.errors].map(([provider, error]) => ({ provider, message: error.message })),\n\t\t\t\t\t\tmodels: session.modelRuntime.getAvailableSnapshot(),\n\t\t\t\t\t\tscopedModels: session.scopedModels,\n\t\t\t\t\t\tcustomAuthProviders: [],\n\t\t\t\t\t\toauthProviders: session.modelRuntime.getOAuthProviderMetadata(),\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"set_thinking_level\": {\n\t\t\t\tawait session.setThinkingLevel(command.level, command.persist === true ? { persist: true } : {});\n\t\t\t\tconst model = session.model;\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_thinking_level\", {\n\t\t\t\t\tlevel: session.thinkingLevel,\n\t\t\t\t\t...(model ? { provider: model.provider, modelId: model.id } : {}),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"cycle_thinking_level\": {\n\t\t\t\tconst level = await session.cycleThinkingLevel();\n\t\t\t\treturn createRpcSuccessResponse(id, \"cycle_thinking_level\", level ? { level } : null);\n\t\t\t}\n\n\t\t\tcase \"get_available_thinking_levels\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_available_thinking_levels\", {\n\t\t\t\t\tlevels: session.getAvailableThinkingLevels(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"set_steering_mode\": {\n\t\t\t\tsession.setSteeringMode(command.mode);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_steering_mode\");\n\t\t\t}\n\n\t\t\tcase \"set_follow_up_mode\": {\n\t\t\t\tsession.setFollowUpMode(command.mode);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_follow_up_mode\");\n\t\t\t}\n\n\t\t\tcase \"compact\": {\n\t\t\t\tconst result = await session.compact();\n\t\t\t\treturn createRpcSuccessResponse(id, \"compact\", result);\n\t\t\t}\n\n\t\t\tcase \"set_auto_compaction\":\n\t\t\t\tsession.setAutoCompactionEnabled(command.enabled);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_auto_compaction\");\n\t\t\tcase \"abort_compaction\":\n\t\t\t\tsession.abortCompaction();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_compaction\");\n\t\t\tcase \"set_auto_retry\":\n\t\t\t\tsession.setAutoRetryEnabled(command.enabled);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_auto_retry\");\n\t\t\tcase \"abort_retry\":\n\t\t\t\tsession.abortRetry();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_retry\");\n\n\t\t\tcase \"clear_queue\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"clear_queue\", session.clearQueue());\n\t\t\t}\n\t\t\tcase \"pause_queued_messages\":\n\t\t\t\tsession.pauseQueuedMessages();\n\t\t\t\treturn createRpcSuccessResponse(id, \"pause_queued_messages\");\n\t\t\tcase \"resume_queued_messages\":\n\t\t\t\treturn createRpcSuccessResponse(id, \"resume_queued_messages\", {\n\t\t\t\t\treleased: await session.resumeQueuedMessages(),\n\t\t\t\t});\n\t\t\tcase \"bash\": {\n\t\t\t\tconst result = await bashOwners.run(\n\t\t\t\t\t{\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\tisCurrent: () => getSession() === session,\n\t\t\t\t\t},\n\t\t\t\t\t// A `bash` command is still a user-initiated shell request, so it must\n\t\t\t\t\t// reach `user_bash` handlers (sandboxes, remote shells) exactly like the\n\t\t\t\t\t// `user_bash` command does. Ownership, streaming correlation, and result\n\t\t\t\t\t// recording stay with the owning request either way.\n\t\t\t\t\tasync (onUpdate) => {\n\t\t\t\t\t\tconst intercepted = await session.extensionRunner.emitUserBash({\n\t\t\t\t\t\t\ttype: \"user_bash\",\n\t\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext === true,\n\t\t\t\t\t\t\tcwd: session.sessionManager.getCwd(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (intercepted?.result) return intercepted.result;\n\t\t\t\t\t\treturn session.executeBash(command.command, onUpdate, {\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\toperations: intercepted?.operations,\n\t\t\t\t\t\t\temitEvent: false,\n\t\t\t\t\t\t\trecordResult: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"bash\", result);\n\t\t\t}\n\t\t\tcase \"user_bash\": {\n\t\t\t\tconst result = await bashOwners.run(\n\t\t\t\t\t{\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\tisCurrent: () => getSession() === session,\n\t\t\t\t\t},\n\t\t\t\t\tasync (onUpdate) => {\n\t\t\t\t\t\tconst intercepted = await session.extensionRunner.emitUserBash({\n\t\t\t\t\t\t\ttype: \"user_bash\",\n\t\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext === true,\n\t\t\t\t\t\t\tcwd: session.sessionManager.getCwd(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (intercepted?.result) return intercepted.result;\n\t\t\t\t\t\treturn session.executeBash(command.command, onUpdate, {\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\toperations: intercepted?.operations,\n\t\t\t\t\t\t\temitEvent: false,\n\t\t\t\t\t\t\trecordResult: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"user_bash\", result);\n\t\t\t}\n\t\t\tcase \"abort_bash\":\n\t\t\t\tbashOwners.abort(command.requestId);\n\t\t\t\tsession.abortBash(command.requestId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_bash\");\n\n\t\t\tcase \"get_session_stats\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_session_stats\", session.getSessionStats());\n\t\t\t}\n\n\t\t\tcase \"get_tools\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_tools\", session.getToolStatus());\n\t\t\t}\n\n\t\t\tcase \"export_html\": {\n\t\t\t\tconst path = await session.exportToHtml(command.outputPath);\n\t\t\t\treturn createRpcSuccessResponse(id, \"export_html\", { path });\n\t\t\t}\n\n\t\t\tcase \"switch_session\": {\n\t\t\t\tconst result = await runtimeHost.switchSession(command.sessionId, {\n\t\t\t\t\tcwdOverride: command.cwdOverride,\n\t\t\t\t\tsessionDirectory: command.sessionDirectory,\n\t\t\t\t});\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"switch_session\", result);\n\t\t\t}\n\n\t\t\tcase \"import_session\": {\n\t\t\t\tconst result = await runtimeHost.importFromJsonl(command.inputPath, command.cwdOverride);\n\t\t\t\tif (!result.cancelled) await rebindSession();\n\t\t\t\treturn createRpcSuccessResponse(id, \"import_session\", result);\n\t\t\t}\n\n\t\t\tcase \"fork\": {\n\t\t\t\tconst result = await runtimeHost.fork(command.entryId);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"fork\", { text: result.selectedText, cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"clone\": {\n\t\t\t\tconst leafId = session.sessionManager.getLeafId();\n\t\t\t\tif (!leafId) {\n\t\t\t\t\treturn createRpcErrorResponse(id, \"clone\", \"Cannot clone session: no current entry selected\");\n\t\t\t\t}\n\t\t\t\tconst result = await runtimeHost.fork(leafId, { position: \"at\" });\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"clone\", { cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"get_fork_messages\": {\n\t\t\t\tconst messages = session.getUserMessagesForForking();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_fork_messages\", { messages });\n\t\t\t}\n\n\t\t\tcase \"get_entries\": {\n\t\t\t\tconst sessionManager = session.sessionManager;\n\t\t\t\tlet entries = sessionManager.getEntries();\n\t\t\t\tif (command.since !== undefined) {\n\t\t\t\t\tconst sinceIndex = entries.findIndex((e) => e.id === command.since);\n\t\t\t\t\tif (sinceIndex === -1) {\n\t\t\t\t\t\treturn createRpcErrorResponse(id, \"get_entries\", `Entry not found: ${command.since}`);\n\t\t\t\t\t}\n\t\t\t\t\tentries = entries.slice(sinceIndex + 1);\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_entries\", { entries, leafId: sessionManager.getLeafId() });\n\t\t\t}\n\n\t\t\tcase \"get_tree\": {\n\t\t\t\tconst sessionManager = session.sessionManager;\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_tree\", {\n\t\t\t\t\ttree: sessionManager.getTree(),\n\t\t\t\t\tleafId: sessionManager.getLeafId(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_last_assistant_text\": {\n\t\t\t\tconst text = session.getLastAssistantText();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_last_assistant_text\", { text });\n\t\t\t}\n\n\t\t\tcase \"set_session_name\": {\n\t\t\t\tconst name = command.name.trim();\n\t\t\t\tif (!name) {\n\t\t\t\t\treturn createRpcErrorResponse(id, \"set_session_name\", \"Session name cannot be empty\");\n\t\t\t\t}\n\t\t\t\tawait session.setSessionName(name);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_session_name\");\n\t\t\t}\n\n\t\t\tcase \"navigate_tree\": {\n\t\t\t\tconst result = await session.navigateTree(command.targetId, command.options);\n\t\t\t\treturn createRpcSuccessResponse(id, \"navigate_tree\", {\n\t\t\t\t\tcancelled: result.cancelled,\n\t\t\t\t\teditorText: result.editorText,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"set_label\": {\n\t\t\t\tconst entryId = await session.sessionManager.appendLabelChange(command.entryId, command.label);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_label\", { entryId });\n\t\t\t}\n\n\t\t\tcase \"reload\": {\n\t\t\t\tif (retryFailedResources && reloadResources) await reloadResources();\n\t\t\t\telse if (reloadCoordinator) await reloadCoordinator.reload(session);\n\t\t\t\telse await session.reload();\n\t\t\t\treturn createRpcSuccessResponse(id, \"reload\");\n\t\t\t}\n\n\t\t\tcase \"start_pending_recovery\": {\n\t\t\t\treturn createRpcSuccessResponse(\n\t\t\t\t\tid,\n\t\t\t\t\t\"start_pending_recovery\",\n\t\t\t\t\tawait session.startPendingRecovery(command.reason),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcase \"get_shortcuts\": {\n\t\t\t\tconst effectiveBindings = getShortcutBindings();\n\t\t\t\tconst shortcuts = session.extensionRunner.getShortcuts(effectiveBindings);\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_shortcuts\", {\n\t\t\t\t\tshortcuts: [...shortcuts].map(([key, shortcut]) => ({ key, description: shortcut.description })),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"invoke_shortcut\": {\n\t\t\t\tconst shortcut = session.extensionRunner.getShortcuts(getShortcutBindings()).get(command.key as KeyId);\n\t\t\t\tif (!shortcut) return createRpcErrorResponse(id, \"invoke_shortcut\", `Shortcut not found: ${command.key}`);\n\t\t\t\tawait runCallback(\n\t\t\t\t\t{ kind: \"extension.hook\", name: `shortcut:${command.key}`, sourcePath: shortcut.extensionPath },\n\t\t\t\t\t() => shortcut.handler(session.extensionRunner.createContext()),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"invoke_shortcut\");\n\t\t\t}\n\n\t\t\tcase \"get_messages\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_messages\", { messages: session.messages });\n\t\t\t}\n\n\t\t\tcase \"get_command_completions\": {\n\t\t\t\tconst registeredCommand = session.extensionRunner\n\t\t\t\t\t.getRegisteredCommands()\n\t\t\t\t\t.find((candidate) => candidate.invocationName === command.commandName);\n\t\t\t\tconst getArgumentCompletions = registeredCommand?.getArgumentCompletions;\n\t\t\t\tif (registeredCommand === undefined || getArgumentCompletions === undefined) {\n\t\t\t\t\treturn createRpcSuccessResponse(id, \"get_command_completions\", { completions: null });\n\t\t\t\t}\n\t\t\t\tconst completions = await runCallback(\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"extension.hook\",\n\t\t\t\t\t\tname: `command-completions:${command.commandName}`,\n\t\t\t\t\t\tsourcePath: registeredCommand.sourceInfo.path,\n\t\t\t\t\t},\n\t\t\t\t\t() => getArgumentCompletions(command.argumentPrefix),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_command_completions\", { completions });\n\t\t\t}\n\n\t\t\tcase \"get_commands\": {\n\t\t\t\tconst commands: RpcSlashCommand[] = [];\n\n\t\t\t\tfor (const registeredCommand of session.extensionRunner.getRegisteredCommands()) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: registeredCommand.invocationName,\n\t\t\t\t\t\tdescription: registeredCommand.description,\n\t\t\t\t\t\t...(registeredCommand.getArgumentCompletions !== undefined ? { hasArgumentCompletions: true } : {}),\n\t\t\t\t\t\tsource: \"extension\",\n\t\t\t\t\t\tsourceInfo: registeredCommand.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const template of session.promptTemplates) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: template.name,\n\t\t\t\t\t\tdescription: template.description,\n\t\t\t\t\t\tsource: \"prompt\",\n\t\t\t\t\t\tsourceInfo: template.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const skillCommand of getSkillCatalog(session.resourceLoader).commands) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: `skill:${skillCommand.name}`,\n\t\t\t\t\t\tdescription: skillCommand.description,\n\t\t\t\t\t\tsource: \"skill\",\n\t\t\t\t\t\tsourceInfo: skillCommand.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_commands\", { commands });\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tconst unknownCommand = command as { type: string };\n\t\t\t\treturn createRpcErrorResponse(id, unknownCommand.type, `Unknown command: ${unknownCommand.type}`);\n\t\t\t}\n\t\t}\n\t}) as ManagedRpcCommandHandler;\n\thandleCommand.disposeActiveBash = () => bashOwners.dispose();\n\treturn handleCommand;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-command-timeouts.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-timeouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"rpc-command-timeouts.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-timeouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAwBlD,CAAC;AAEH,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,yCAAyC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-command-timeouts.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-timeouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAS;IACvE,qDAAqD;IACrD,OAAO;IACP,YAAY;IACZ,kBAAkB;IAClB,aAAa;IACb,uBAAuB;IACvB,mCAAmC;IACnC,QAAQ;IACR,gBAAgB;IAChB,OAAO;IACP,WAAW;IACX,wBAAwB;IACxB,MAAM;IACN,WAAW;IACX,SAAS;IACT,MAAM;IACN,OAAO;IACP,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,iBAAiB;
|
|
1
|
+
{"version":3,"file":"rpc-command-timeouts.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-timeouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAS;IACvE,qDAAqD;IACrD,OAAO;IACP,YAAY;IACZ,kBAAkB;IAClB,aAAa;IACb,uBAAuB;IACvB,mCAAmC;IACnC,QAAQ;IACR,gBAAgB;IAChB,OAAO;IACP,WAAW;IACX,wBAAwB;IACxB,MAAM;IACN,WAAW;IACX,SAAS;IACT,MAAM;IACN,OAAO;IACP,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,wBAAwB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,kFAAkF;AAClF,MAAM,CAAC,MAAM,yBAAyB,GAAG,sCAAsC,CAAC","sourcesContent":["/**\n * Commands exempt from the generic request deadline.\n *\n * Two groups, for two reasons:\n *\n * - Work legitimately gated on human or agent interaction: interactive prompts\n * and custom-UI pickers (routed through `prompt`), queued turn-boundary sends\n * (`steer`/`follow_up`), long-running shell and compaction work, and\n * session-tree navigation or mutation that can open pickers.\n * - Cooperative cancellation. Escape's whole contract is that it asks the\n * engine to stop and waits for as long as the engine takes. A host-side\n * deadline would surface as `Timeout waiting for response to abort…` — a red\n * error about the host's own impatience while the engine is still working —\n * and would not stop anything.\n *\n * Failure detection is unaffected: engine exit, transport violations, generation\n * replacement, and explicit stop all reject pending requests through\n * rejectPendingRequests/failTransport independently of any timer.\n */\nexport const LONG_LIVED_COMMANDS: ReadonlySet<string> = new Set<string>([\n\t// Cooperative cancellation, all unbounded by design.\n\t\"abort\",\n\t\"abort_bash\",\n\t\"abort_compaction\",\n\t\"abort_retry\",\n\t\"cancel_login_provider\",\n\t// Interaction- or turn-gated work.\n\t\"prompt\",\n\t\"login_provider\",\n\t\"steer\",\n\t\"follow_up\",\n\t\"resume_queued_messages\",\n\t\"bash\",\n\t\"user_bash\",\n\t\"compact\",\n\t\"fork\",\n\t\"clone\",\n\t\"switch_session\",\n\t\"new_session\",\n\t\"import_session\",\n\t\"navigate_tree\",\n\t\"invoke_shortcut\",\n\t\"start_pending_recovery\",\n]);\n\nexport const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;\n\n/**\n * How long to wait for a dead child's stdout to drain before failing the\n * requests it never answered. `'close'` normally arrives first; this only\n * bounds the case where a descendant inherited stdout and keeps it open.\n */\nexport const EXIT_DRAIN_TIMEOUT_MS = 500;\n\n/** Rejection message for a restart superseded by an explicit stop or disposal. */\nexport const RESTART_CANCELLED_MESSAGE = \"Interactive engine restart cancelled\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-input-scheduler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-input-scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc-input-scheduler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-input-scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAmB7D,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CASxF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBhE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAgC3G"}
|
|
@@ -9,7 +9,12 @@ const INTERRUPT_COMMANDS = new Set([
|
|
|
9
9
|
"resume_queued_messages",
|
|
10
10
|
"clear_queue",
|
|
11
11
|
]);
|
|
12
|
-
const CONCURRENT_COMMANDS = new Set([
|
|
12
|
+
const CONCURRENT_COMMANDS = new Set([
|
|
13
|
+
"bash",
|
|
14
|
+
"user_bash",
|
|
15
|
+
"refresh_models",
|
|
16
|
+
"start_pending_recovery",
|
|
17
|
+
]);
|
|
13
18
|
export function isRpcExtensionUIResponse(value) {
|
|
14
19
|
return (typeof value === "object" &&
|
|
15
20
|
value !== null &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-input-scheduler.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-input-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAGlH,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACvD,OAAO;IACP,uBAAuB;IACvB,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,uBAAuB;IACvB,wBAAwB;IACxB,aAAa;CACb,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"rpc-input-scheduler.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-input-scheduler.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseEngineExplicitQuitCommand, parseInteractiveEngineCommand } from \"../interactive-engine/protocol.ts\";\nimport type { RpcExtensionUIResponse } from \"./rpc-types.ts\";\n\nconst INTERRUPT_COMMANDS: ReadonlySet<string> = new Set([\n\t\"abort\",\n\t\"cancel_login_provider\",\n\t\"abort_compaction\",\n\t\"abort_retry\",\n\t\"abort_bash\",\n\t\"pause_queued_messages\",\n\t\"resume_queued_messages\",\n\t\"clear_queue\",\n]);\nconst CONCURRENT_COMMANDS: ReadonlySet<string> = new Set([\n\t\"bash\",\n\t\"user_bash\",\n\t\"refresh_models\",\n\t\"start_pending_recovery\",\n]);\n\nexport function isRpcExtensionUIResponse(value: unknown): value is RpcExtensionUIResponse {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"type\" in value &&\n\t\tvalue.type === \"extension_ui_response\" &&\n\t\t\"id\" in value &&\n\t\ttypeof value.id === \"string\"\n\t);\n}\n\n/**\n * Control frames must remain reachable while an ordinary RPC command is\n * pending. Interrupts cancel or adjust queued work for that command, while\n * host responses can unblock UI work awaited by it. Everything else stays on\n * the ordered command lane.\n */\nexport function isConcurrentRpcControlLine(line: string): boolean {\n\tif (parseInteractiveEngineCommand(line) || parseEngineExplicitQuitCommand(line)) return true;\n\tlet value: object | null;\n\ttry {\n\t\tconst parsed = JSON.parse(line) as object | boolean | null | number | string;\n\t\tvalue = typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : null;\n\t} catch {\n\t\treturn false;\n\t}\n\tif (isRpcExtensionUIResponse(value)) return true;\n\treturn (\n\t\tvalue !== null &&\n\t\t\"type\" in value &&\n\t\ttypeof value.type === \"string\" &&\n\t\t(INTERRUPT_COMMANDS.has(value.type) || CONCURRENT_COMMANDS.has(value.type))\n\t);\n}\n\n/**\n * Runs ordinary RPC input one frame at a time while giving validated control\n * frames and independently correlated bash executions a concurrent lane. The\n * first ordinary frame starts synchronously, so a following interrupt cannot\n * overtake initialization of the operation it is intended to cancel.\n */\nexport function createRpcInputScheduler(handleLine: (line: string) => Promise<void>): (line: string) => void {\n\tconst ordinaryQueue: string[] = [];\n\tlet ordinaryActive = false;\n\n\tconst invoke = (line: string): Promise<void> => {\n\t\ttry {\n\t\t\treturn handleLine(line);\n\t\t} catch (error) {\n\t\t\treturn Promise.reject(error);\n\t\t}\n\t};\n\n\tconst startNextOrdinary = (): void => {\n\t\tconst line = ordinaryQueue.shift();\n\t\tif (line === undefined) {\n\t\t\tordinaryActive = false;\n\t\t\treturn;\n\t\t}\n\t\tordinaryActive = true;\n\t\tvoid invoke(line)\n\t\t\t.finally(startNextOrdinary)\n\t\t\t.catch(() => {});\n\t};\n\n\treturn (line: string): void => {\n\t\tif (isConcurrentRpcControlLine(line)) {\n\t\t\tvoid invoke(line).catch(() => {});\n\t\t\treturn;\n\t\t}\n\t\tordinaryQueue.push(line);\n\t\tif (!ordinaryActive) startNextOrdinary();\n\t};\n}\n"]}
|