@code-yeongyu/senpi 2026.8.30-3 → 2026.8.31
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 +34 -0
- package/README.md +3 -0
- package/dist/core/agent-session.d.ts +26 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +67 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts +9 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js +10 -3
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js +4 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative-summary.d.ts +1 -0
- package/dist/core/extensions/builtin/compaction/speculative-summary.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative-summary.js +1 -0
- package/dist/core/extensions/builtin/compaction/speculative-summary.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.js +14 -1
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/trust-state-json.d.ts +5 -0
- package/dist/core/extensions/builtin/hooks/trust-state-json.d.ts.map +1 -0
- package/dist/core/extensions/builtin/hooks/trust-state-json.js +76 -0
- package/dist/core/extensions/builtin/hooks/trust-state-json.js.map +1 -0
- package/dist/core/extensions/builtin/hooks/trust-storage.d.ts +7 -1
- package/dist/core/extensions/builtin/hooks/trust-storage.d.ts.map +1 -1
- package/dist/core/extensions/builtin/hooks/trust-storage.js +60 -8
- package/dist/core/extensions/builtin/hooks/trust-storage.js.map +1 -1
- package/dist/core/extensions/builtin/hooks/trust.d.ts +1 -2
- package/dist/core/extensions/builtin/hooks/trust.d.ts.map +1 -1
- package/dist/core/extensions/builtin/hooks/trust.js +1 -72
- package/dist/core/extensions/builtin/hooks/trust.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/index.js +4 -0
- package/dist/core/extensions/builtin/ttsr/index.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.d.ts +2 -0
- package/dist/core/extensions/builtin/ttsr/manager.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/manager.js +28 -1
- package/dist/core/extensions/builtin/ttsr/manager.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +7 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/retry-fallback/controller.d.ts +14 -0
- package/dist/core/retry-fallback/controller.d.ts.map +1 -1
- package/dist/core/retry-fallback/controller.js +33 -3
- package/dist/core/retry-fallback/controller.js.map +1 -1
- package/dist/core/retry-fallback/log.js +1 -1
- package/dist/core/retry-fallback/log.js.map +1 -1
- package/dist/core/session-activity.d.ts +47 -0
- package/dist/core/session-activity.d.ts.map +1 -0
- package/dist/core/session-activity.js +58 -0
- package/dist/core/session-activity.js.map +1 -0
- package/dist/core/session-manager.d.ts +8 -12
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +118 -7
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-resident-store.d.ts +8 -1
- package/dist/core/session-resident-store.d.ts.map +1 -1
- package/dist/core/session-resident-store.js +12 -5
- package/dist/core/session-resident-store.js.map +1 -1
- package/dist/modes/app-server/daemon.js +3 -3
- package/dist/modes/app-server/daemon.js.map +1 -1
- package/dist/modes/interactive/interactive-host-runtime.d.ts +3 -1
- package/dist/modes/interactive/interactive-host-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-host-runtime.js +26 -4
- package/dist/modes/interactive/interactive-host-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +24 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/connection-handler.d.ts +12 -5
- package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
- package/dist/modes/rpc/connection-handler.js +149 -12
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/dist/modes/rpc/custom-capability.d.ts +1 -0
- package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
- package/dist/modes/rpc/custom-capability.js +1 -0
- package/dist/modes/rpc/custom-capability.js.map +1 -1
- package/dist/modes/rpc/host-ensure.d.ts.map +1 -1
- package/dist/modes/rpc/host-ensure.js +3 -3
- package/dist/modes/rpc/host-ensure.js.map +1 -1
- package/dist/modes/rpc/host-lifecycle.d.ts +10 -0
- package/dist/modes/rpc/host-lifecycle.d.ts.map +1 -1
- package/dist/modes/rpc/host-lifecycle.js +15 -2
- package/dist/modes/rpc/host-lifecycle.js.map +1 -1
- package/dist/modes/rpc/multi-session-host.d.ts +38 -0
- package/dist/modes/rpc/multi-session-host.d.ts.map +1 -1
- package/dist/modes/rpc/multi-session-host.js +55 -5
- package/dist/modes/rpc/multi-session-host.js.map +1 -1
- package/dist/modes/rpc/ownership-safe-lock.d.ts +14 -0
- package/dist/modes/rpc/ownership-safe-lock.d.ts.map +1 -0
- package/dist/modes/rpc/ownership-safe-lock.js +87 -0
- package/dist/modes/rpc/ownership-safe-lock.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +1 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +3 -0
- package/dist/modes/rpc/rpc-client.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 +1 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modes/rpc/session-binding.d.ts +2 -1
- package/dist/modes/rpc/session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/session-binding.js +1 -0
- package/dist/modes/rpc/session-binding.js.map +1 -1
- package/dist/modes/rpc/session-command-router.d.ts +54 -1
- package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
- package/dist/modes/rpc/session-command-router.js +174 -2
- package/dist/modes/rpc/session-command-router.js.map +1 -1
- package/dist/modes/rpc/session-event-writer.d.ts +18 -0
- package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
- package/dist/modes/rpc/session-event-writer.js +88 -8
- package/dist/modes/rpc/session-event-writer.js.map +1 -1
- package/dist/modes/rpc/session-registry.d.ts +11 -1
- package/dist/modes/rpc/session-registry.d.ts.map +1 -1
- package/dist/modes/rpc/session-registry.js +25 -0
- package/dist/modes/rpc/session-registry.js.map +1 -1
- package/dist/modes/rpc/widget-line-renderer.d.ts +17 -0
- package/dist/modes/rpc/widget-line-renderer.d.ts.map +1 -0
- package/dist/modes/rpc/widget-line-renderer.js +73 -0
- package/dist/modes/rpc/widget-line-renderer.js.map +1 -0
- package/dist/utils/fs-watch.d.ts.map +1 -1
- package/dist/utils/fs-watch.js +11 -2
- package/dist/utils/fs-watch.js.map +1 -1
- package/docs/app-server.md +2 -2
- package/docs/containerization.md +2 -2
- package/docs/development.md +7 -7
- package/docs/extensions.md +4 -4
- package/docs/grok-neo.md +1 -1
- package/docs/index.md +1 -1
- package/docs/packages.md +2 -2
- package/docs/quickstart.md +4 -4
- package/docs/release-guide.md +21 -21
- package/docs/rpc.md +59 -4
- package/docs/sdk.md +1 -1
- package/docs/skills.md +2 -2
- package/docs/terminal-tools.md +1 -1
- package/docs/termux.md +1 -1
- package/docs/tui.md +1 -1
- package/examples/AGENTS.md +1 -1
- package/examples/sdk/README.md +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +16 -0
- package/node_modules/@code-yeongyu/senpi-codemode/README.md +2 -2
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/skill-contribution.ts +71 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +3 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/SKILL.md +44 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/breaking-changes.md +75 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/build.md +114 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/dev-tooling.md +34 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/http-networking.md +113 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/install.md +93 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/node-compat-platforms.md +36 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/performance.md +33 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/runtime-apis.md +156 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/security.md +52 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/skill/bun-1-4/references/test.md +103 -0
- package/node_modules/@earendil-works/pi-agent-core/README.md +3 -0
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/README.md +6 -3
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +15 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts +7 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js +316 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-conversation-rotation.d.ts +4 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-conversation-rotation.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-conversation-rotation.js +23 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-conversation-rotation.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts +24 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +20 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-telemetry/README.md +6 -3
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/README.md +5 -4
- package/node_modules/@earendil-works/pi-tui/native/darwin/README.md +2 -2
- package/node_modules/@earendil-works/pi-tui/native/win32/README.md +2 -2
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-host-runtime.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-host-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { rm } from \"node:fs/promises\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { AgentSession, AgentSessionEvent, AgentSessionEventListener } from \"../../core/agent-session.ts\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport type { AgentSessionRuntimeDiagnostic } from \"../../core/agent-session-services.ts\";\nimport { executeBashWithOperations } from \"../../core/bash-executor.ts\";\nimport type { ProjectTrustContext, ReplacedSessionContext } from \"../../core/extensions/index.ts\";\nimport { SessionManager } from \"../../core/session-manager.ts\";\nimport { SettingsManager } from \"../../core/settings-manager.ts\";\nimport type { BashOperations } from \"../../core/tools/bash.ts\";\nimport { type EnsuredHost, ensureHost } from \"../rpc/host-ensure.ts\";\nimport { isTransportGoneError, RpcClient, type RpcClientEvent } from \"../rpc/rpc-client.ts\";\n\nexport const INTERACTIVE_HOST_FALLBACK_WARNING = \"Warning: shared interactive host unavailable; continuing locally\";\nexport const INTERACTIVE_HOST_RECONNECTING_WARNING = \"Warning: shared interactive host connection lost; reconnecting\";\n\nexport interface InteractiveHostWarning {\n\treadonly type: \"interactive_host_fallback\" | \"interactive_host_action_failed\";\n\treadonly message: string;\n\treadonly cause: unknown;\n}\n\n/**\n * The session contract InteractiveMode actually runs against. The local\n * AgentSession answers these reads synchronously; the shared-host proxy answers\n * them over RPC. Declaring the union here keeps the proxy honest (no more\n * `as unknown as` lie at the boundary) and lets the compiler find every TUI\n * call site that must await.\n */\nexport type InteractiveSession = Omit<\n\tAgentSession,\n\t\"cycleThinkingLevel\" | \"getAvailableThinkingLevels\" | \"getSessionStats\" | \"getUserMessagesForForking\"\n> & {\n\tcycleThinkingLevel(): ThinkingLevel | undefined | Promise<ThinkingLevel | undefined>;\n\tgetAvailableThinkingLevels(): ThinkingLevel[] | Promise<ThinkingLevel[]>;\n\tgetSessionStats():\n\t\t| ReturnType<AgentSession[\"getSessionStats\"]>\n\t\t| Promise<ReturnType<AgentSession[\"getSessionStats\"]>>;\n\tgetUserMessagesForForking():\n\t\t| ReturnType<AgentSession[\"getUserMessagesForForking\"]>\n\t\t| Promise<ReturnType<AgentSession[\"getUserMessagesForForking\"]>>;\n};\n\nexport type InteractiveHostUiHandler = (\n\trequest: import(\"../rpc/rpc-types.ts\").RpcExtensionUIRequest,\n) =>\n\t| Promise<import(\"../rpc/rpc-types.ts\").RpcExtensionUIResponse | undefined>\n\t| import(\"../rpc/rpc-types.ts\").RpcExtensionUIResponse\n\t| undefined;\n\nexport interface InteractiveHostRuntimeOptions {\n\treadonly socket: string;\n\treadonly agentDir?: string;\n\treadonly ensureHost?: (options: { socket: string; agentDir?: string }) => Promise<EnsuredHost | undefined>;\n\tonWarning?: (warning: InteractiveHostWarning) => void;\n}\n\n/**\n * Replace only the transport-facing session operations. The object returned is\n * deliberately still an AgentSessionRuntime: InteractiveMode and extensions\n * retain their existing runtime seam, while the authoritative prompt/session\n * state is hosted by the shared RPC process.\n */\nexport async function createInteractiveHostRuntime(\n\tlocalRuntime: AgentSessionRuntime,\n\toptions: InteractiveHostRuntimeOptions,\n): Promise<AgentSessionRuntime> {\n\tconst sessionPath = localRuntime.session.sessionFile;\n\tif (!sessionPath) return localRuntime;\n\tconst startHost = options.ensureHost ?? ((hostOptions) => ensureHost(hostOptions));\n\tlet remoteSession: RemoteSessionProxy | undefined;\n\tlet remoteRuntime: RemoteInteractiveRuntime | undefined;\n\tlet reconnecting: Promise<void> | undefined;\n\tlet disconnectQueued = false;\n\tlet disposed = false;\n\tlet fallbackWarned = false;\n\tlet reconnectWarningShown = false;\n\tconst warnReconnect = (cause: unknown) => {\n\t\tif (reconnectWarningShown) return;\n\t\treconnectWarningShown = true;\n\t\toptions.onWarning?.({\n\t\t\ttype: \"interactive_host_action_failed\",\n\t\t\tmessage: INTERACTIVE_HOST_RECONNECTING_WARNING,\n\t\t\tcause,\n\t\t});\n\t};\n\tconst warnFallback = (cause: unknown) => {\n\t\tif (fallbackWarned) return;\n\t\tfallbackWarned = true;\n\t\toptions.onWarning?.({ type: \"interactive_host_fallback\", message: INTERACTIVE_HOST_FALLBACK_WARNING, cause });\n\t};\n\tlet scheduleReconnect: () => void = () => {};\n\tconst client = new RpcClient({\n\t\tsocketPath: options.socket,\n\t\tonDisconnect: () => {\n\t\t\tdisconnectQueued = true;\n\t\t\tscheduleReconnect();\n\t\t},\n\t});\n\tscheduleReconnect = () => {\n\t\tif (!remoteSession || reconnecting || disposed || remoteRuntime?.isFallback) return;\n\t\tremoteRuntime?.enterReconnecting();\n\t\treconnecting = (async () => {\n\t\t\tlet cause: unknown;\n\t\t\tfor (let attempt = 0; attempt < 3; attempt++) {\n\t\t\t\tif (disposed) return;\n\t\t\t\tdisconnectQueued = false;\n\t\t\t\ttry {\n\t\t\t\t\tawait startHost({ socket: options.socket, agentDir: options.agentDir });\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tawait client.start();\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tawait client.openSession({ sessionPath, cwd: localRuntime.cwd });\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tawait remoteSession.refresh();\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tfallbackWarned = false;\n\t\t\t\t\treconnectWarningShown = false;\n\t\t\t\t\tremoteRuntime?.enterConnected();\n\t\t\t\t\treturn;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tcause = error;\n\t\t\t\t\tawait client.stop().catch(() => {});\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!disposed) {\n\t\t\t\tawait remoteRuntime?.enterFallback();\n\t\t\t\twarnFallback(cause);\n\t\t\t}\n\t\t})().finally(() => {\n\t\t\treconnecting = undefined;\n\t\t\tif (disconnectQueued && !disposed && !remoteRuntime?.isFallback) scheduleReconnect();\n\t\t});\n\t};\n\ttry {\n\t\tawait startHost({ socket: options.socket, agentDir: options.agentDir });\n\t\tawait client.start();\n\t\tconst opened = await client.openSession({\n\t\t\tsessionPath,\n\t\t\tcwd: localRuntime.cwd,\n\t\t\tprovider: localRuntime.session.model?.provider,\n\t\t\tmodelId: localRuntime.session.model?.id,\n\t\t\tthinkingLevel: localRuntime.session.thinkingLevel,\n\t\t});\n\t\tremoteSession = createRemoteSessionProxy(\n\t\t\tlocalRuntime.session,\n\t\t\tlocalRuntime.services.agentDir,\n\t\t\tclient,\n\t\t\topened.state,\n\t\t\toptions.onWarning,\n\t\t\t(cause) => {\n\t\t\t\tif (remoteRuntime?.isReconnecting) warnReconnect(cause);\n\t\t\t\telse warnFallback(cause);\n\t\t\t},\n\t\t);\n\t\tif (opened.state.isBashRunning && !opened.attached) {\n\t\t\t// Only a newly opened session can have an execution orphaned by a\n\t\t\t// previous connection. An attach is an observer of the same live runtime;\n\t\t\t// aborting it would cancel work owned by the surviving attachment.\n\t\t\tawait client.abortBash().catch(() => {});\n\t\t}\n\t\tif (opened.attached) await remoteSession.refresh();\n\t\tremoteRuntime = new RemoteInteractiveRuntime(localRuntime, remoteSession, client, {\n\t\t\tonTransportGone: (cause) => {\n\t\t\t\tif (remoteRuntime?.isReconnecting) warnReconnect(cause);\n\t\t\t\telse warnFallback(cause);\n\t\t\t},\n\t\t\tget reconnecting() {\n\t\t\t\treturn reconnecting;\n\t\t\t},\n\t\t\tdispose: () => {\n\t\t\t\tdisposed = true;\n\t\t\t},\n\t\t});\n\t\treturn remoteRuntime as unknown as AgentSessionRuntime;\n\t} catch (cause) {\n\t\tawait client.stop().catch(() => {});\n\t\twarnFallback(cause);\n\t\treturn localRuntime;\n\t}\n}\n\nexport class RemoteInteractiveRuntime {\n\treadonly #local: AgentSessionRuntime;\n\treadonly #remoteSession: RemoteSessionProxy;\n\treadonly #client: RpcClient;\n\treadonly #lifecycle?: { readonly reconnecting: Promise<void> | undefined; readonly dispose: () => void };\n\treadonly #onTransportGone: (cause: unknown) => void;\n\t#rebindSession: (() => Promise<void>) | undefined;\n\t#beforeSessionInvalidate: (() => void) | undefined;\n\t#state: \"connected\" | \"reconnecting\" | \"fallback\" | \"disposed\" = \"connected\";\n\t#fallbackHandoff: Promise<void> | undefined;\n\tget isReconnecting(): boolean {\n\t\treturn this.#state === \"reconnecting\";\n\t}\n\tget isFallback(): boolean {\n\t\treturn this.#state === \"fallback\";\n\t}\n\n\tconstructor(\n\t\tlocal: AgentSessionRuntime,\n\t\tremoteSession: RemoteSessionProxy,\n\t\tclient: RpcClient,\n\t\tlifecycle?: { readonly reconnecting: Promise<void> | undefined; readonly dispose: () => void } & {\n\t\t\tonTransportGone: (cause: unknown) => void;\n\t\t},\n\t) {\n\t\tthis.#local = local;\n\t\tthis.#remoteSession = remoteSession;\n\t\tthis.#client = client;\n\t\tthis.#lifecycle = lifecycle;\n\t\tthis.#onTransportGone = lifecycle?.onTransportGone ?? (() => {});\n\t}\n\n\tasync #call<T>(call: () => Promise<T>): Promise<T> {\n\t\ttry {\n\t\t\treturn await call();\n\t\t} catch (error) {\n\t\t\tif (isTransportGoneError(error)) {\n\t\t\t\tthis.#onTransportGone(error);\n\t\t\t\treturn { cancelled: true } as T;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tenterConnected(): void {\n\t\tif (this.#state !== \"disposed\" && this.#state !== \"fallback\") this.#state = \"connected\";\n\t}\n\n\tenterReconnecting(): void {\n\t\tif (this.#state !== \"disposed\" && this.#state !== \"fallback\") this.#state = \"reconnecting\";\n\t}\n\n\tasync enterFallback(): Promise<void> {\n\t\tif (this.#state === \"disposed\" || this.#state === \"fallback\") return;\n\t\tthis.#state = \"fallback\";\n\t\tthis.#beforeSessionInvalidate?.();\n\t\tconst rebind = this.#rebindSession?.();\n\t\tif (rebind) {\n\t\t\tthis.#fallbackHandoff = rebind.catch((error) => {\n\t\t\t\tthis.#onTransportGone(error);\n\t\t\t});\n\t\t\tawait this.#fallbackHandoff;\n\t\t}\n\t}\n\n\tget session(): AgentSession {\n\t\treturn this.#state === \"fallback\" || this.#state === \"disposed\"\n\t\t\t? this.#local.session\n\t\t\t: this.#remoteSession.session;\n\t}\n\tget services(): AgentSessionRuntime[\"services\"] {\n\t\treturn this.#local.services;\n\t}\n\tget cwd(): string {\n\t\treturn this.session.sessionManager.getCwd();\n\t}\n\tget diagnostics(): readonly AgentSessionRuntimeDiagnostic[] {\n\t\treturn this.#local.diagnostics;\n\t}\n\tget modelFallbackMessage(): string | undefined {\n\t\treturn this.#local.modelFallbackMessage;\n\t}\n\tget launchProfile(): AgentSessionRuntime[\"launchProfile\"] {\n\t\treturn this.#local.launchProfile;\n\t}\n\tsetBeforeSessionInvalidate(callback?: () => void): void {\n\t\tthis.#beforeSessionInvalidate = callback;\n\t\tthis.#local.setBeforeSessionInvalidate(callback);\n\t}\n\tsetRebindSession(callback?: () => Promise<void>): void {\n\t\tthis.#rebindSession = callback;\n\t\tthis.#local.setRebindSession(callback);\n\t\tif (callback && this.#state === \"fallback\" && !this.#fallbackHandoff) {\n\t\t\tthis.#fallbackHandoff = callback().catch((error) => {\n\t\t\t\tthis.#onTransportGone(error);\n\t\t\t});\n\t\t}\n\t}\n\tsetHostUiHandler(callback?: InteractiveHostUiHandler): void {\n\t\tthis.#remoteSession.setHostUiHandler(callback);\n\t}\n\tasync dispose(): Promise<void> {\n\t\tif (this.#state === \"disposed\") return;\n\t\tthis.#state = \"disposed\";\n\t\tthis.#lifecycle?.dispose();\n\t\tawait this.#lifecycle?.reconnecting?.catch(() => {});\n\t\tawait this.#fallbackHandoff?.catch(() => {});\n\t\tconst errors: unknown[] = [];\n\t\tfor (const cleanup of [\n\t\t\t() => this.#remoteSession.abortLocalBash(),\n\t\t\t() => this.#client.closeSession(),\n\t\t\t() => this.#client.stop(),\n\t\t\t() => this.#local.dispose(),\n\t\t]) {\n\t\t\ttry {\n\t\t\t\tawait cleanup();\n\t\t\t} catch (error) {\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t}\n\t\tif (errors.length > 0) throw errors[0];\n\t}\n\tasync newSession(options?: {\n\t\tparentSession?: string;\n\t\tsetup?: (sessionManager: SessionManager) => Promise<void>;\n\t\twithSession?: (ctx: ReplacedSessionContext) => Promise<void>;\n\t}): Promise<{ cancelled: boolean }> {\n\t\tif (this.#state === \"fallback\") return this.#local.newSession(options);\n\t\t// Suppresses for the ENTIRE command, not just the refresh tail: a\n\t\t// multi-session host emits session_replaced while completing it, so the echo\n\t\t// can arrive before the refresh/rebind sequence below starts and race it -\n\t\t// newSession transports setup entries between two refreshes.\n\t\treturn this.#remoteSession\n\t\t\t.aroundLocalReplacement(async () => {\n\t\t\t\tconst result = await this.#call(() => this.#client.newSession(options?.parentSession));\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tthis.#beforeSessionInvalidate?.();\n\t\t\t\t\tthis.#remoteSession.abortLocalBash();\n\t\t\t\t\tawait this.#remoteSession.refresh();\n\t\t\t\t\tif (options?.setup) {\n\t\t\t\t\t\tconst capture = SessionManager.inMemory(this.#remoteSession.session.sessionManager.getCwd());\n\t\t\t\t\t\tawait options.setup(capture);\n\t\t\t\t\t\tfor (const entry of capture.getEntries()) await this.#client.appendSessionEntry(entry);\n\t\t\t\t\t\tawait this.#remoteSession.refresh();\n\t\t\t\t\t}\n\t\t\t\t\tawait this.#rebindSession?.();\n\t\t\t\t\tif (options?.withSession) await options.withSession(this.#remoteSession.createReplacedSessionContext());\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (isTransportGoneError(error)) return { cancelled: true };\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\tasync switchSession(\n\t\tsessionPath: string,\n\t\toptions?: {\n\t\t\tcwdOverride?: string;\n\t\t\twithSession?: (ctx: ReplacedSessionContext) => Promise<void>;\n\t\t\tprojectTrustContextFactory?: (cwd: string) => ProjectTrustContext;\n\t\t},\n\t): Promise<{ cancelled: boolean }> {\n\t\tif (this.#state === \"fallback\") return this.#local.switchSession(sessionPath, options);\n\t\t// See newSession: the suppression must cover the command itself, since the\n\t\t// host emits session_replaced while completing it.\n\t\treturn this.#remoteSession\n\t\t\t.aroundLocalReplacement(async () => {\n\t\t\t\tconst result = await this.#call(() =>\n\t\t\t\t\tthis.#client.switchSession(\n\t\t\t\t\t\tsessionPath,\n\t\t\t\t\t\toptions?.cwdOverride === undefined ? undefined : { cwdOverride: options.cwdOverride },\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tthis.#beforeSessionInvalidate?.();\n\t\t\t\t\tthis.#remoteSession.abortLocalBash();\n\t\t\t\t\tawait this.#remoteSession.refresh();\n\t\t\t\t\tawait this.#rebindSession?.();\n\t\t\t\t\t// The shared host already resolved trust; this callback is retained for\n\t\t\t\t\t// compatibility, but its result cannot override host-authoritative state.\n\t\t\t\t\toptions?.projectTrustContextFactory?.(this.#remoteSession.session.sessionManager.getCwd());\n\t\t\t\t\tif (options?.withSession) await options.withSession(this.#remoteSession.createReplacedSessionContext());\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (isTransportGoneError(error)) return { cancelled: true };\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\tasync fork(\n\t\tentryId: string,\n\t\toptions?: { position?: \"before\" | \"at\"; withSession?: (ctx: ReplacedSessionContext) => Promise<void> },\n\t): Promise<{ cancelled: boolean; selectedText?: string }> {\n\t\tif (this.#state === \"fallback\") return this.#local.fork(entryId, options);\n\t\t// See newSession: the suppression must cover the command itself.\n\t\treturn this.#remoteSession\n\t\t\t.aroundLocalReplacement(async () => {\n\t\t\t\tconst result = await this.#call(() => this.#client.fork(entryId, options));\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tthis.#beforeSessionInvalidate?.();\n\t\t\t\t\tthis.#remoteSession.abortLocalBash();\n\t\t\t\t\tawait this.#refreshAndRebind();\n\t\t\t\t\tif (options?.withSession) await options.withSession(this.#remoteSession.createReplacedSessionContext());\n\t\t\t\t}\n\t\t\t\treturn { cancelled: result.cancelled, selectedText: result.text };\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (isTransportGoneError(error)) return { cancelled: true };\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\tasync importFromJsonl(inputPath: string, cwdOverride?: string): Promise<{ cancelled: boolean }> {\n\t\tif (this.#state === \"fallback\") return this.#local.importFromJsonl(inputPath, cwdOverride);\n\t\t// See newSession: the suppression must cover the command itself.\n\t\treturn this.#remoteSession\n\t\t\t.aroundLocalReplacement(async () => {\n\t\t\t\tconst result = await this.#call(() => this.#client.importJsonl(inputPath, cwdOverride));\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tthis.#beforeSessionInvalidate?.();\n\t\t\t\t\tthis.#remoteSession.abortLocalBash();\n\t\t\t\t\tawait this.#refreshAndRebind();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (isTransportGoneError(error)) return { cancelled: true };\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\tasync #refreshAndRebind(): Promise<void> {\n\t\tawait this.#remoteSession.refresh();\n\t\tawait this.#rebindSession?.();\n\t}\n}\n\ninterface RemoteSessionProxy {\n\treadonly session: AgentSession;\n\tsetHostUiHandler(callback?: InteractiveHostUiHandler): void;\n\trefresh(): Promise<void>;\n\t/**\n\t * Run a replacement this runtime is driving itself, suppressing the refresh\n\t * that the host's broadcast `session_replaced` would otherwise trigger. The\n\t * caller owns the refresh/rebind ordering for its own replacements, so the\n\t * scope must cover the command itself, not just its refresh tail.\n\t */\n\taroundLocalReplacement<T>(body: () => Promise<T>): Promise<T>;\n\tabortLocalBash(): void;\n\tcreateReplacedSessionContext(): ReplacedSessionContext;\n}\n\n/** Exported for direct coverage of the wire-event handling below. */\nexport function createRemoteSessionProxy(\n\tlocal: AgentSession,\n\tagentDir: string,\n\tclient: RpcClient,\n\tinitialState: ReturnType<typeof stateFromRpc>,\n\tonWarning?: (warning: InteractiveHostWarning) => void,\n\tonTransportGone?: (cause: unknown) => void,\n): RemoteSessionProxy {\n\t// Fire-and-forget setters keep the sync AgentSession signature, but their RPC\n\t// failures must not vanish: the matching *_changed wire event confirms success,\n\t// and a rejection here is the only signal of failure.\n\tconst reportActionFailure = (action: string) => (error: unknown) => {\n\t\tconst transportGone = isTransportGoneError(error);\n\t\tif (transportGone) onTransportGone?.(error);\n\t\telse\n\t\t\tonWarning?.({\n\t\t\t\ttype: \"interactive_host_action_failed\",\n\t\t\t\tmessage: `Warning: shared interactive host ${action} failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\tcause: error,\n\t\t\t});\n\t};\n\tconst transportCall = async <T>(action: string, call: () => Promise<T>, cancelledValue?: T): Promise<T> => {\n\t\ttry {\n\t\t\treturn await call();\n\t\t} catch (error) {\n\t\t\tif (!isTransportGoneError(error)) throw error;\n\t\t\treportActionFailure(action)(error);\n\t\t\treturn cancelledValue as T;\n\t\t}\n\t};\n\tlet state = { ...initialState };\n\tconst waitForBashCallbacks = async (promises: Set<Promise<void>>, allowAbandonment: boolean): Promise<boolean> => {\n\t\tif (promises.size === 0) return true;\n\t\tconst settled = Promise.allSettled([...promises]).then(() => true);\n\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\tconst bounded = new Promise<false>((resolve) => {\n\t\t\ttimeout = setTimeout(resolve, allowAbandonment ? 100 : 5_000, false);\n\t\t\ttimeout.unref?.();\n\t\t});\n\t\ttry {\n\t\t\treturn await Promise.race([settled, bounded]);\n\t\t} finally {\n\t\t\tif (timeout) clearTimeout(timeout);\n\t\t}\n\t};\n\tconst executionNamespace = randomUUID();\n\tconst cleanupRemoteBashOutput = async (path: string): Promise<void> => {\n\t\tlet cleanupTimeout: ReturnType<typeof setTimeout> | undefined;\n\t\ttry {\n\t\t\tawait Promise.race([\n\t\t\t\tclient.cleanupBashOutput(path),\n\t\t\t\tnew Promise<never>((_, reject) => {\n\t\t\t\t\tcleanupTimeout = setTimeout(() => reject(new Error(\"RPC cleanup timed out\")), 1_000);\n\t\t\t\t}),\n\t\t\t]);\n\t\t\treturn;\n\t\t} catch (transportError) {\n\t\t\t// Spill paths are shared host filesystem paths. If the RPC transport is\n\t\t\t// already unavailable, remove locally as a bounded best-effort fallback;\n\t\t\t// a later reconnect is not required to prevent this callback failure from\n\t\t\t// permanently leaking the host-owned artifact.\n\t\t\ttry {\n\t\t\t\tawait rm(path, { force: true });\n\t\t\t\treturn;\n\t\t\t} catch (localError) {\n\t\t\t\tonWarning?.({\n\t\t\t\t\ttype: \"interactive_host_action_failed\",\n\t\t\t\t\tmessage: `Warning: failed to clean up shared bash output spill: ${localError instanceof Error ? localError.message : String(localError)}`,\n\t\t\t\t\tcause: new AggregateError([transportError, localError]),\n\t\t\t\t});\n\t\t\t}\n\t\t} finally {\n\t\t\tif (cleanupTimeout) clearTimeout(cleanupTimeout);\n\t\t}\n\t};\n\tlet nextBashExecutionId = 0;\n\tconst bashExecutions = new Map<\n\t\tstring,\n\t\t{\n\t\t\tchunk?: (chunk: string) => void | PromiseLike<void>;\n\t\t\tpromises: Set<Promise<void>>;\n\t\t\terror: unknown;\n\t\t\thasError: boolean;\n\t\t}\n\t>();\n\tlet hostUiHandler: InteractiveHostUiHandler | undefined;\n\tconst pendingUiRequests: import(\"../rpc/rpc-types.ts\").RpcExtensionUIRequest[] = [];\n\tlet localBashAbortController: AbortController | undefined;\n\tlet localBashRunning = false;\n\tlet hostBashRunning = initialState.isBashRunning;\n\tlet nextQueuedInputOrder = Math.max(0, ...initialState.ordered.map((item) => item.enqueueOrder));\n\tlet sessionManager = local.sessionManager;\n\tlet settingsManager = SettingsManager.create(initialState.cwd, agentDir, {\n\t\tprojectTrusted: initialState.projectTrusted,\n\t});\n\tconst updateBashState = () => {\n\t\tstate = { ...state, isBashRunning: localBashRunning || hostBashRunning };\n\t};\n\tconst remoteSessionManager = new Proxy({} as SessionManager, {\n\t\tget(_target, property, _receiver) {\n\t\t\tif (property === \"appendLabelChange\") {\n\t\t\t\treturn (entryId: string, label?: string) =>\n\t\t\t\t\tvoid client.setLabel(entryId, label).catch(reportActionFailure(\"appendLabelChange\"));\n\t\t\t}\n\t\t\tif (property === \"getCwd\") return () => state.cwd;\n\t\t\tif (property === \"getSessionName\") return () => state.sessionName;\n\t\t\tif (property === \"getUsageTotals\") return () => state.usageTotals;\n\t\t\tconst value = Reflect.get(sessionManager, property, sessionManager);\n\t\t\treturn typeof value === \"function\" ? value.bind(sessionManager) : value;\n\t\t},\n\t});\n\tlet streamingAssistant: Extract<AgentSession[\"messages\"][number], { role: \"assistant\" }> | undefined;\n\tlet mirroredCurrentAssistantUsage = false;\n\t/** Non-zero while this runtime is driving its own replacement sequence. */\n\tlet localReplacementDepth = 0;\n\tconst listeners = new Set<AgentSessionEventListener>();\n\tclient.onEvent((wireEvent) => {\n\t\tif ((wireEvent as { type?: string }).type === \"extension_ui_request\") {\n\t\t\tconst request = wireEvent as import(\"../rpc/rpc-types.ts\").RpcExtensionUIRequest;\n\t\t\tif (hostUiHandler)\n\t\t\t\tvoid Promise.resolve(hostUiHandler(request))\n\t\t\t\t\t.then((response) => response && client.sendExtensionUIResponse(response))\n\t\t\t\t\t.catch(reportActionFailure(\"host UI response\"));\n\t\t\telse pendingUiRequests.push(request);\n\t\t\treturn;\n\t\t}\n\t\tif (wireEvent.type === \"session_replaced\") {\n\t\t\t// The host swapped the live session behind this connection - another\n\t\t\t// attached client issued the replacement, or an extension drove one that no\n\t\t\t// client issued. Nothing else re-reads the binding, so without this the\n\t\t\t// proxy keeps serving the previous session's manager, settings and message\n\t\t\t// mirror while the host has already moved on. The command response carries\n\t\t\t// only `{ cancelled }`, so this event is the only signal available here.\n\t\t\t//\n\t\t\t// A multi-session host broadcasts the event to every connection including\n\t\t\t// the one that issued the replacement, and this runtime's own replacement\n\t\t\t// methods already run an ordered refresh/rebind - newSession additionally\n\t\t\t// transports setup entries between two refreshes. Refreshing again from\n\t\t\t// here would race that sequence, so self-driven replacements are skipped.\n\t\t\tif (localReplacementDepth === 0) {\n\t\t\t\tvoid refresh().catch(reportActionFailure(\"session refresh after replacement\"));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (wireEvent.type === \"agent_settled\") state = { ...state, isStreaming: false, retryAttempt: 0 };\n\t\tif (wireEvent.type === \"bash_start\") {\n\t\t\thostBashRunning = true;\n\t\t\tupdateBashState();\n\t\t}\n\t\tif (wireEvent.type === \"bash_end\") {\n\t\t\thostBashRunning = false;\n\t\t\tupdateBashState();\n\t\t}\n\t\tif (wireEvent.type === \"bash_execution_update\" && wireEvent.id) {\n\t\t\tconst execution = bashExecutions.get(wireEvent.id);\n\t\t\tif (execution?.chunk && !execution.hasError) {\n\t\t\t\ttry {\n\t\t\t\t\tconst callbackPromise = Promise.resolve(execution.chunk(wireEvent.delta)).catch((error) => {\n\t\t\t\t\t\tif (!execution.hasError) {\n\t\t\t\t\t\t\texecution.error = error;\n\t\t\t\t\t\t\texecution.hasError = true;\n\t\t\t\t\t\t\tvoid client.abortBash().catch(() => {});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t\t\texecution.promises.add(callbackPromise);\n\t\t\t\t\tvoid callbackPromise.catch(() => {}).finally(() => execution.promises.delete(callbackPromise));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!execution.hasError) {\n\t\t\t\t\t\texecution.error = error;\n\t\t\t\t\t\texecution.hasError = true;\n\t\t\t\t\t\tvoid client.abortBash().catch(() => {});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (wireEvent.type === \"agent_start\") state = { ...state, isStreaming: true };\n\t\tif (wireEvent.type === \"compaction_start\") state = { ...state, isCompacting: true };\n\t\tif (wireEvent.type === \"compaction_end\") state = { ...state, isCompacting: false };\n\t\tif (wireEvent.type === \"auto_retry_start\") state = { ...state, retryAttempt: wireEvent.attempt };\n\t\tif (wireEvent.type === \"auto_retry_end\") state = { ...state, retryAttempt: 0 };\n\t\tif (wireEvent.type === \"queue_update\") {\n\t\t\tnextQueuedInputOrder = Math.max(nextQueuedInputOrder, ...wireEvent.ordered.map((item) => item.enqueueOrder));\n\t\t\tstate = {\n\t\t\t\t...state,\n\t\t\t\tsteering: [...wireEvent.steering],\n\t\t\t\tfollowUp: [...wireEvent.followUp],\n\t\t\t\tordered: [...wireEvent.ordered],\n\t\t\t\tpendingMessageCount: wireEvent.steering.length + wireEvent.followUp.length,\n\t\t\t};\n\t\t}\n\t\tif (wireEvent.type === \"model_changed\") {\n\t\t\tstate = { ...state, model: wireEvent.model, thinkingLevel: wireEvent.thinkingLevel };\n\t\t}\n\t\tif (wireEvent.type === \"thinking_level_changed\") state = { ...state, thinkingLevel: wireEvent.level };\n\t\tif (wireEvent.type === \"service_tier_changed\") {\n\t\t\tstate = { ...state, serviceTier: wireEvent.tier, fastMode: wireEvent.fastMode };\n\t\t}\n\t\tif (wireEvent.type === \"session_settings_changed\") {\n\t\t\tstate = {\n\t\t\t\t...state,\n\t\t\t\tsteeringMode: wireEvent.steeringMode,\n\t\t\t\tfollowUpMode: wireEvent.followUpMode,\n\t\t\t\tautoCompactionEnabled: wireEvent.autoCompactionEnabled,\n\t\t\t};\n\t\t}\n\t\tif (wireEvent.type === \"entry_appended\") {\n\t\t\ttry {\n\t\t\t\tsessionManager.appendEntry(wireEvent.entry);\n\t\t\t\tlocal.agent.state.messages = sessionManager.buildSessionContext().messages;\n\t\t\t} catch {\n\t\t\t\t// Non-fatal if the local snapshot cannot accept a concurrent entry.\n\t\t\t}\n\t\t}\n\t\tif (wireEvent.type === \"session_info_changed\") state = { ...state, sessionName: wireEvent.name };\n\t\tif (wireEvent.type === \"message_start\") {\n\t\t\tif (wireEvent.message.role === \"assistant\") {\n\t\t\t\tstreamingAssistant = structuredClone(wireEvent.message);\n\t\t\t\tmirroredCurrentAssistantUsage = false;\n\t\t\t}\n\t\t\tlocal.agent.state.messages.push(structuredClone(wireEvent.message));\n\t\t}\n\t\tif (wireEvent.type === \"message_end\") {\n\t\t\tif (wireEvent.message.role === \"assistant\") {\n\t\t\t\tstreamingAssistant = structuredClone(wireEvent.message);\n\t\t\t\tconst usage = wireEvent.message.usage;\n\t\t\t\tif (usage && !mirroredCurrentAssistantUsage) {\n\t\t\t\t\tmirroredCurrentAssistantUsage = true;\n\t\t\t\t\tconst latestPromptTokens = usage.input + usage.cacheRead + usage.cacheWrite;\n\t\t\t\t\tconst contextWindow = state.model?.contextWindow ?? 0;\n\t\t\t\t\tconst contextTokens = usage.input + usage.cacheRead + usage.cacheWrite;\n\t\t\t\t\tstate = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tcontextUsage:\n\t\t\t\t\t\t\tcontextWindow > 0\n\t\t\t\t\t\t\t\t? { tokens: contextTokens, contextWindow, percent: (contextTokens / contextWindow) * 100 }\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\tusageTotals: {\n\t\t\t\t\t\t\t...state.usageTotals,\n\t\t\t\t\t\t\tinput: state.usageTotals.input + usage.input,\n\t\t\t\t\t\t\toutput: state.usageTotals.output + usage.output,\n\t\t\t\t\t\t\tcacheRead: state.usageTotals.cacheRead + usage.cacheRead,\n\t\t\t\t\t\t\tcacheWrite: state.usageTotals.cacheWrite + usage.cacheWrite,\n\t\t\t\t\t\t\tcost: state.usageTotals.cost + (usage.cost?.total ?? 0),\n\t\t\t\t\t\t\tlatestCacheHitRate:\n\t\t\t\t\t\t\t\tlatestPromptTokens > 0 ? (usage.cacheRead / latestPromptTokens) * 100 : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst messages = local.agent.state.messages;\n\t\t\tconst previous = messages.at(-1);\n\t\t\tif (previous?.role === wireEvent.message.role)\n\t\t\t\tmessages[messages.length - 1] = structuredClone(wireEvent.message);\n\t\t}\n\t\tif (wireEvent.type === \"compaction_end\" && wireEvent.accepted && !wireEvent.aborted) {\n\t\t\ttry {\n\t\t\t\tlocal.sessionManager.reloadFromDisk?.();\n\t\t\t\tif (sessionManager !== local.sessionManager) sessionManager.reloadFromDisk?.();\n\t\t\t\tlocal.agent.state.messages = sessionManager.buildSessionContext().messages;\n\t\t\t} catch {\n\t\t\t\t// Non-fatal if session file is transiently locked or unavailable\n\t\t\t}\n\t\t}\n\t\tconst event = hydrateMessageUpdate(wireEvent, streamingAssistant);\n\t\tfor (const listener of listeners) listener(event);\n\t});\n\tconst performRefresh = async (): Promise<void> => {\n\t\t// Captured before the first await: entries that arrive via `entry_appended`\n\t\t// while this refresh is in flight are newer than the snapshot it reconciles\n\t\t// against, and must survive the rebuild below.\n\t\tconst idsAtRefreshStart = new Set(sessionManager.getEntries().map((entry) => entry.id));\n\t\tconst nextState = await transportCall(\"refresh\", () => client.getState());\n\t\tif (!nextState) return;\n\t\tstate = { ...stateFromRpc(nextState) };\n\t\tnextQueuedInputOrder = Math.max(0, ...nextState.ordered.map((item) => item.enqueueOrder));\n\t\tlet messages: AgentSession[\"messages\"];\n\t\tsettingsManager = SettingsManager.create(nextState.cwd, agentDir, {\n\t\t\tprojectTrusted: nextState.projectTrusted,\n\t\t});\n\t\tif (nextState.sessionFile) {\n\t\t\t// Keep the caller-owned manager identity when refreshing the same session.\n\t\t\t// Navigation and host-side mutations must update every existing mirror, not\n\t\t\t// leave the interactive runtime holding the pre-refresh snapshot.\n\t\t\tif (sessionManager.getSessionFile() === nextState.sessionFile) {\n\t\t\t\tsessionManager.reloadFromDisk?.();\n\t\t\t} else {\n\t\t\t\t// SessionManager.open retains the explicit path even when the host has\n\t\t\t\t// deferred creating the file for a setup-only session.\n\t\t\t\tsessionManager = SessionManager.open(nextState.sessionFile, undefined, nextState.cwd);\n\t\t\t}\n\t\t\t// The host ships its complete entry list while the session file is still\n\t\t\t// deferred (no assistant message yet, so nothing has been written), which\n\t\t\t// makes that list the only authoritative view of the session. Reconcile the\n\t\t\t// mirror to it exactly: `entry_appended` notifications that cross a\n\t\t\t// concurrent refresh land on whichever manager is current, so the mirror\n\t\t\t// can hold an arbitrary partial set rather than a prefix, and a snapshot\n\t\t\t// taken mid-bind can simply be short. Backfilling only an empty mirror\n\t\t\t// wedged it at whatever partial set it happened to hold.\n\t\t\tconst authoritative = nextState.entries;\n\t\t\tif (authoritative?.length) {\n\t\t\t\tconst mirror = sessionManager.getEntries();\n\t\t\t\tconst matches =\n\t\t\t\t\tmirror.length === authoritative.length &&\n\t\t\t\t\tmirror.every((entry, index) => entry.id === authoritative[index]?.id);\n\t\t\t\tif (!matches) {\n\t\t\t\t\tconst rebuilt = SessionManager.open(nextState.sessionFile, undefined, nextState.cwd);\n\t\t\t\t\tfor (const entry of authoritative) rebuilt.appendEntry(entry);\n\t\t\t\t\t// A notification that crossed this refresh refers to an entry the\n\t\t\t\t\t// snapshot predates, so it is newer than the snapshot; dropping it\n\t\t\t\t\t// would strand the entry until an unrelated refresh happened to\n\t\t\t\t\t// run. Keep it, in arrival order, after the authoritative list.\n\t\t\t\t\tconst authoritativeIds = new Set(authoritative.map((entry) => entry.id));\n\t\t\t\t\tfor (const entry of mirror) {\n\t\t\t\t\t\tif (!idsAtRefreshStart.has(entry.id) && !authoritativeIds.has(entry.id)) {\n\t\t\t\t\t\t\trebuilt.appendEntry(entry);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsessionManager = rebuilt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmessages = sessionManager.buildSessionContext().messages;\n\t\t} else {\n\t\t\tmessages = await transportCall(\"refresh\", () => client.getMessages(), []);\n\t\t}\n\t\tlocal.agent.state.messages.splice(0, local.agent.state.messages.length, ...structuredClone(messages));\n\t\tstreamingAssistant = undefined;\n\t};\n\t// Refreshes must not interleave: each one reassigns sessionManager,\n\t// settingsManager and the mirrored message list, so two in flight can commit a\n\t// mixed snapshot of two different sessions. A replacement-driven refresh races\n\t// exactly that way against a caller-driven one, so run them in order.\n\tlet refreshChain: Promise<void> = Promise.resolve();\n\tconst refresh = (): Promise<void> => {\n\t\tconst next = refreshChain.then(performRefresh, performRefresh);\n\t\trefreshChain = next.then(\n\t\t\t() => {},\n\t\t\t() => {},\n\t\t);\n\t\treturn next;\n\t};\n\tconst session = new Proxy(local, {\n\t\tget(target, property, receiver) {\n\t\t\tif (property === \"prompt\")\n\t\t\t\treturn async (message: string, options?: Parameters<AgentSession[\"prompt\"]>[1]) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait client.prompt(message, {\n\t\t\t\t\t\t\t...(options?.images ? { images: options.images } : {}),\n\t\t\t\t\t\t\t...(options?.streamingBehavior ? { streamingBehavior: options.streamingBehavior } : {}),\n\t\t\t\t\t\t\t...(options?.thinkingLevel ? { thinkingLevel: options.thinkingLevel } : {}),\n\t\t\t\t\t\t\t...(options?.sessionTitlePrompt !== undefined\n\t\t\t\t\t\t\t\t? { sessionTitlePrompt: options.sessionTitlePrompt }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t...(options?.expandPromptTemplates !== undefined\n\t\t\t\t\t\t\t\t? { expandPromptTemplates: options.expandPromptTemplates }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t...(options?.promptDisposition ? { promptDisposition: options.promptDisposition } : {}),\n\t\t\t\t\t\t\t...(options?.preflightResult ? { preflightResult: options.preflightResult } : {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (!isTransportGoneError(error)) throw error;\n\t\t\t\t\t\treportActionFailure(\"prompt\")(error);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tif (property === \"abort\") return () => client.abort();\n\t\t\tif (property === \"abortCompaction\")\n\t\t\t\treturn () => void client.abortCompaction().catch(reportActionFailure(\"abortCompaction\"));\n\t\t\tif (property === \"steer\")\n\t\t\t\treturn (\n\t\t\t\t\tmessage: string,\n\t\t\t\t\timages?: Parameters<AgentSession[\"steer\"]>[1],\n\t\t\t\t\trecovery?: { enqueueOrder?: number },\n\t\t\t\t) => {\n\t\t\t\t\tconst enqueueOrder =\n\t\t\t\t\t\trecovery?.enqueueOrder ?? Math.max(0, ...state.ordered.map((item) => item.enqueueOrder)) + 1;\n\t\t\t\t\tstate = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tsteering: [...state.steering, message],\n\t\t\t\t\t\tordered: [...state.ordered, { text: message, mode: \"steer\", enqueueOrder }],\n\t\t\t\t\t\tpendingMessageCount: state.pendingMessageCount + 1,\n\t\t\t\t\t};\n\t\t\t\t\treturn transportCall(\"steer\", () => client.steer(message, images, { ...recovery, enqueueOrder }));\n\t\t\t\t};\n\t\t\tif (property === \"followUp\")\n\t\t\t\treturn (\n\t\t\t\t\tmessage: string,\n\t\t\t\t\timages?: Parameters<AgentSession[\"followUp\"]>[1],\n\t\t\t\t\trecovery?: { enqueueOrder?: number },\n\t\t\t\t) => {\n\t\t\t\t\tconst enqueueOrder =\n\t\t\t\t\t\trecovery?.enqueueOrder ?? Math.max(0, ...state.ordered.map((item) => item.enqueueOrder)) + 1;\n\t\t\t\t\tstate = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tfollowUp: [...state.followUp, message],\n\t\t\t\t\t\tordered: [...state.ordered, { text: message, mode: \"followUp\", enqueueOrder }],\n\t\t\t\t\t\tpendingMessageCount: state.pendingMessageCount + 1,\n\t\t\t\t\t};\n\t\t\t\t\treturn transportCall(\"followUp\", () => client.followUp(message, images, { ...recovery, enqueueOrder }));\n\t\t\t\t};\n\t\t\tif (property === \"waitForIdle\") return () => client.waitForIdle();\n\t\t\tif (property === \"getLastAssistantText\") return () => target.getLastAssistantText();\n\t\t\tif (property === \"setModel\" || property === \"setSessionModel\")\n\t\t\t\treturn async (model: NonNullable<AgentSession[\"model\"]>) => {\n\t\t\t\t\tconst next = await transportCall(\"setModel\", () => client.setModel(model.provider, model.id), undefined);\n\t\t\t\t\treturn next ? { systemPromptName: next.systemPromptName, model: next } : undefined;\n\t\t\t\t};\n\t\t\tif (property === \"setSessionThinkingLevel\")\n\t\t\t\treturn (level: AgentSession[\"thinkingLevel\"]) =>\n\t\t\t\t\tvoid client\n\t\t\t\t\t\t.setThinkingLevel(level, { scope: \"turn\" })\n\t\t\t\t\t\t.catch(reportActionFailure(\"setSessionThinkingLevel\"));\n\t\t\tif (property === \"setSessionFastMode\")\n\t\t\t\treturn (enabled: boolean) =>\n\t\t\t\t\tvoid client.setFastMode(enabled).catch(reportActionFailure(\"setSessionFastMode\"));\n\t\t\tif (property === \"abortRetry\") return () => void client.abortRetry().catch(reportActionFailure(\"abortRetry\"));\n\t\t\tif (property === \"setAutoRetryEnabled\")\n\t\t\t\treturn (enabled: boolean) =>\n\t\t\t\t\tvoid client.setAutoRetry(enabled).catch(reportActionFailure(\"setAutoRetryEnabled\"));\n\t\t\tif (property === \"reserveQueuedInputOrder\") return () => ++nextQueuedInputOrder;\n\t\t\tif (property === \"setFavoriteModels\")\n\t\t\t\treturn (models: Parameters<AgentSession[\"setFavoriteModels\"]>[0]) => {\n\t\t\t\t\tstate = { ...state, favoriteModels: [...models] };\n\t\t\t\t\tvoid client.setFavoriteModels(models).catch(reportActionFailure(\"setFavoriteModels\"));\n\t\t\t\t};\n\t\t\tif (property === \"setScopedModels\")\n\t\t\t\treturn (models: Parameters<AgentSession[\"setScopedModels\"]>[0]) => {\n\t\t\t\t\tstate = { ...state, scopedModels: [...models] };\n\t\t\t\t\tvoid client.setScopedModels(models).catch(reportActionFailure(\"setScopedModels\"));\n\t\t\t\t};\n\t\t\tif (property === \"cycleModel\")\n\t\t\t\treturn (direction?: \"forward\" | \"backward\") =>\n\t\t\t\t\ttransportCall(\"cycleModel\", () => client.cycleModel(direction), undefined);\n\t\t\tif (property === \"setThinkingLevel\")\n\t\t\t\treturn (level: AgentSession[\"thinkingLevel\"]) =>\n\t\t\t\t\tvoid client.setThinkingLevel(level).catch(reportActionFailure(\"setThinkingLevel\"));\n\t\t\tif (property === \"cycleThinkingLevel\")\n\t\t\t\treturn () =>\n\t\t\t\t\ttransportCall(\"cycleThinkingLevel\", () => client.cycleThinkingLevel(), undefined).then(\n\t\t\t\t\t\t(result) => result?.level,\n\t\t\t\t\t);\n\t\t\tif (property === \"getAvailableThinkingLevels\")\n\t\t\t\treturn () => transportCall(\"getAvailableThinkingLevels\", () => client.getAvailableThinkingLevels(), []);\n\t\t\tif (property === \"setSteeringMode\")\n\t\t\t\treturn (mode: AgentSession[\"steeringMode\"]) =>\n\t\t\t\t\tvoid client.setSteeringMode(mode).catch(reportActionFailure(\"setSteeringMode\"));\n\t\t\tif (property === \"setFollowUpMode\")\n\t\t\t\treturn (mode: AgentSession[\"followUpMode\"]) =>\n\t\t\t\t\tvoid client.setFollowUpMode(mode).catch(reportActionFailure(\"setFollowUpMode\"));\n\t\t\tif (property === \"compact\")\n\t\t\t\treturn (instructions?: string) => transportCall(\"compact\", () => client.compact(instructions));\n\t\t\tif (property === \"setAutoCompactionEnabled\")\n\t\t\t\treturn (enabled: boolean) =>\n\t\t\t\t\tvoid client.setAutoCompaction(enabled).catch(reportActionFailure(\"setAutoCompaction\"));\n\t\t\tif (property === \"executeBash\")\n\t\t\t\treturn async (\n\t\t\t\t\tcommand: string,\n\t\t\t\t\tonChunk?: (chunk: string) => void | PromiseLike<void>,\n\t\t\t\t\toptions?: { excludeFromContext?: boolean; operations?: BashOperations | Record<string, unknown> },\n\t\t\t\t) => {\n\t\t\t\t\tif (options?.operations && typeof options.operations.exec === \"function\") {\n\t\t\t\t\t\tconst abortController = new AbortController();\n\t\t\t\t\t\tlocalBashAbortController = abortController;\n\t\t\t\t\t\tlocalBashRunning = true;\n\t\t\t\t\t\tupdateBashState();\n\t\t\t\t\t\tconst sessionAtStart = state.sessionId;\n\t\t\t\t\t\tconst prefix = settingsManager.getShellCommandPrefix();\n\t\t\t\t\t\tconst resolvedCommand = prefix ? `${prefix}\\n${command}` : command;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await executeBashWithOperations(\n\t\t\t\t\t\t\t\tresolvedCommand,\n\t\t\t\t\t\t\t\tstate.cwd,\n\t\t\t\t\t\t\t\toptions.operations as BashOperations,\n\t\t\t\t\t\t\t\t{ onChunk, signal: abortController.signal },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (state.sessionId === sessionAtStart) {\n\t\t\t\t\t\t\t\tawait transportCall(\"recordBashResult\", () =>\n\t\t\t\t\t\t\t\t\tclient.recordBashResult(command, result, options.excludeFromContext),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tlocalBashAbortController = undefined;\n\t\t\t\t\t\t\tlocalBashRunning = false;\n\t\t\t\t\t\t\tupdateBashState();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst executionId = `bash-${executionNamespace}-${++nextBashExecutionId}`;\n\t\t\t\t\tconst execution = {\n\t\t\t\t\t\tchunk: onChunk,\n\t\t\t\t\t\tpromises: new Set<Promise<void>>(),\n\t\t\t\t\t\terror: undefined as unknown,\n\t\t\t\t\t\thasError: false,\n\t\t\t\t\t};\n\t\t\t\t\tbashExecutions.set(executionId, execution);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await transportCall(\n\t\t\t\t\t\t\t\"bash\",\n\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\tclient.bash(command, {\n\t\t\t\t\t\t\t\t\texcludeFromContext: options?.excludeFromContext,\n\t\t\t\t\t\t\t\t\texecutionId,\n\t\t\t\t\t\t\t\t\toperations: options?.operations as Record<string, unknown> | undefined,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{ output: \"\", exitCode: undefined, cancelled: true, truncated: false },\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst callbacksSettled = await waitForBashCallbacks(execution.promises, false);\n\t\t\t\t\t\tif (!callbacksSettled) {\n\t\t\t\t\t\t\tif (result.fullOutputPath) await cleanupRemoteBashOutput(result.fullOutputPath);\n\t\t\t\t\t\t\tthrow new Error(\"Bash output callback did not settle within 5000ms\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (execution.hasError) {\n\t\t\t\t\t\t\tif (result.fullOutputPath) await cleanupRemoteBashOutput(result.fullOutputPath);\n\t\t\t\t\t\t\tthrow execution.error;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tbashExecutions.delete(executionId);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tif (property === \"abortBash\")\n\t\t\t\treturn () => {\n\t\t\t\t\tif (localBashAbortController) localBashAbortController.abort();\n\t\t\t\t\telse void client.abortBash().catch(reportActionFailure(\"abortBash\"));\n\t\t\t\t};\n\t\t\tif (property === \"getContextUsage\") return () => state.contextUsage;\n\t\t\tif (property === \"getSessionStats\")\n\t\t\t\treturn () => transportCall(\"getSessionStats\", () => client.getSessionStats(), local.getSessionStats());\n\t\t\tif (property === \"exportToHtml\")\n\t\t\t\treturn (outputPath?: string, options?: { themeName?: string }) =>\n\t\t\t\t\ttransportCall(\"exportToHtml\", () => client.exportHtml(outputPath, options?.themeName)).then(\n\t\t\t\t\t\t(result) => result?.path,\n\t\t\t\t\t);\n\t\t\tif (property === \"setSessionName\")\n\t\t\t\treturn (name: string) => client.setSessionName(name).catch(reportActionFailure(\"setSessionName\"));\n\t\t\tif (property === \"navigateTree\")\n\t\t\t\treturn async (targetId: string, options?: Parameters<AgentSession[\"navigateTree\"]>[1]) => {\n\t\t\t\t\tconst result = await transportCall(\"navigateTree\", () => client.navigateTree(targetId, options), {\n\t\t\t\t\t\tcancelled: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (!result.cancelled) await refresh();\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\tif (property === \"getUserMessagesForForking\")\n\t\t\t\treturn () => transportCall(\"getUserMessagesForForking\", () => client.getForkMessages(), []);\n\t\t\tif (property === \"subscribe\")\n\t\t\t\treturn (listener: AgentSessionEventListener) => {\n\t\t\t\t\tlisteners.add(listener);\n\t\t\t\t\tconst localUnsubscribe = target.subscribe(listener);\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tlisteners.delete(listener);\n\t\t\t\t\t\tlocalUnsubscribe();\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\tif (property === \"isStreaming\") return state.isStreaming;\n\t\t\tif (property === \"isIdle\") return !state.isStreaming;\n\t\t\tif (property === \"isCompacting\") return state.isCompacting;\n\t\t\tif (property === \"pendingMessageCount\") return state.pendingMessageCount;\n\t\t\tif (property === \"getSteeringMessages\") return () => state.steering;\n\t\t\tif (property === \"getFollowUpMessages\") return () => state.followUp;\n\t\t\tif (property === \"clearQueue\")\n\t\t\t\treturn (options?: { abortWillFollow: boolean }) => {\n\t\t\t\t\tconst result = {\n\t\t\t\t\t\tsteering: [...state.steering],\n\t\t\t\t\t\tfollowUp: [...state.followUp],\n\t\t\t\t\t\tordered: [...state.ordered],\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(result, \"ordered\", { value: result.ordered, enumerable: false });\n\t\t\t\t\tvoid client.clearQueue(options).catch(reportActionFailure(\"clearQueue\"));\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\tif (property === \"abortBranchSummary\")\n\t\t\t\treturn () => void client.abortBranchSummary().catch(reportActionFailure(\"abortBranchSummary\"));\n\t\t\tif (property === \"recordBashResult\")\n\t\t\t\treturn (\n\t\t\t\t\tcommand: string,\n\t\t\t\t\tresult: Parameters<AgentSession[\"recordBashResult\"]>[1],\n\t\t\t\t\toptions?: { excludeFromContext?: boolean },\n\t\t\t\t) =>\n\t\t\t\t\tvoid client\n\t\t\t\t\t\t.recordBashResult(command, result, options?.excludeFromContext)\n\t\t\t\t\t\t.catch(reportActionFailure(\"recordBashResult\"));\n\t\t\tif (property === \"set_label\") return undefined;\n\t\t\tif (property === \"retryAttempt\") return state.retryAttempt;\n\t\t\tif (property === \"isBashRunning\") return state.isBashRunning;\n\t\t\tif (property === \"reload\")\n\t\t\t\treturn (_options?: Parameters<AgentSession[\"reload\"]>[0]) =>\n\t\t\t\t\ttransportCall(\"reload\", () => client.reload(), { cancelled: true });\n\t\t\tif (property === \"checkReloadVeto\")\n\t\t\t\treturn () => transportCall(\"checkReloadVeto\", () => client.checkReloadVeto(), { cancelled: true });\n\t\t\tif (property === \"exportToJsonl\")\n\t\t\t\treturn (outputPath?: string) =>\n\t\t\t\t\ttransportCall(\"exportToJsonl\", () => client.exportJsonl(outputPath)).then((result) => result?.path);\n\t\t\t// The footer and other renderers read session.state.*; surface the\n\t\t\t// host-authoritative fields there too, not only via the direct getters.\n\t\t\tif (property === \"state\") {\n\t\t\t\tconst localState = target.state;\n\t\t\t\treturn {\n\t\t\t\t\t...localState,\n\t\t\t\t\tmodel: state.model ?? localState.model,\n\t\t\t\t\tthinkingLevel: state.thinkingLevel,\n\t\t\t\t\tisStreaming: state.isStreaming,\n\t\t\t\t\tisCompacting: state.isCompacting,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (property === \"sessionFile\") return state.sessionFile;\n\t\t\tif (property === \"sessionId\") return state.sessionId;\n\t\t\tif (property === \"sessionName\") return state.sessionName;\n\t\t\tif (property === \"serviceTier\") return state.serviceTier;\n\t\t\tif (property === \"steeringMode\") return state.steeringMode;\n\t\t\tif (property === \"followUpMode\") return state.followUpMode;\n\t\t\tif (property === \"autoCompactionEnabled\") return state.autoCompactionEnabled;\n\t\t\tif (property === \"isFastModeActive\") return () => state.fastMode;\n\t\t\tif (property === \"sessionManager\") return remoteSessionManager;\n\t\t\tif (property === \"settingsManager\") return settingsManager;\n\t\t\tif (property === \"messages\") return target.messages;\n\t\t\tif (property === \"favoriteModels\") return state.favoriteModels;\n\t\t\tif (property === \"scopedModels\") return state.scopedModels;\n\t\t\tif (property === \"model\") return state.model ?? target.model;\n\t\t\tif (property === \"thinkingLevel\") return state.thinkingLevel;\n\t\t\treturn Reflect.get(target, property, receiver);\n\t\t},\n\t});\n\treturn {\n\t\tsession,\n\t\tsetHostUiHandler: (callback) => {\n\t\t\thostUiHandler = callback;\n\t\t\tif (callback)\n\t\t\t\tfor (const request of pendingUiRequests.splice(0))\n\t\t\t\t\tvoid Promise.resolve(callback(request))\n\t\t\t\t\t\t.then((response) => response && client.sendExtensionUIResponse(response))\n\t\t\t\t\t\t.catch(reportActionFailure(\"host UI response\"));\n\t\t},\n\t\trefresh,\n\t\taroundLocalReplacement: async (body) => {\n\t\t\tlocalReplacementDepth++;\n\t\t\ttry {\n\t\t\t\treturn await body();\n\t\t\t} finally {\n\t\t\t\tlocalReplacementDepth--;\n\t\t\t}\n\t\t},\n\t\tabortLocalBash: () => localBashAbortController?.abort(),\n\t\tcreateReplacedSessionContext: () => {\n\t\t\tconst context = local.createReplacedSessionContext();\n\t\t\tObject.defineProperty(context, \"cwd\", { value: state.cwd });\n\t\t\tObject.defineProperty(context, \"sessionManager\", { value: remoteSessionManager });\n\t\t\tcontext.sendMessage = (message, options) =>\n\t\t\t\ttransportCall(\"sendMessage\", () =>\n\t\t\t\t\tclient.sendCustomMessage(message, {\n\t\t\t\t\t\ttriggerTurn: options?.triggerTurn,\n\t\t\t\t\t\tdeliverAs: options?.deliverAs,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\tcontext.sendUserMessage = (content, options) => {\n\t\t\t\tif (typeof content === \"string\")\n\t\t\t\t\treturn transportCall(\"sendUserMessage\", () =>\n\t\t\t\t\t\tclient.prompt(content, {\n\t\t\t\t\t\t\tstreamingBehavior: options?.deliverAs,\n\t\t\t\t\t\t\texpandPromptTemplates: options?.expandPromptTemplates,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\tconst text = content\n\t\t\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t\t\t.map((part) => part.text)\n\t\t\t\t\t.join(\"\\n\");\n\t\t\t\tconst images = content.filter((part) => part.type === \"image\");\n\t\t\t\treturn transportCall(\"sendUserMessage\", () =>\n\t\t\t\t\tclient.prompt(text, {\n\t\t\t\t\t\timages,\n\t\t\t\t\t\tstreamingBehavior: options?.deliverAs,\n\t\t\t\t\t\texpandPromptTemplates: options?.expandPromptTemplates,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t};\n\t\t\treturn context;\n\t\t},\n\t};\n}\n\nfunction hydrateMessageUpdate(\n\tevent: RpcClientEvent,\n\tstreamingAssistant: Extract<AgentSession[\"messages\"][number], { role: \"assistant\" }> | undefined,\n): AgentSessionEvent {\n\tif (event.type !== \"message_update\" || !streamingAssistant) return event as unknown as AgentSessionEvent;\n\tconst update = event.assistantMessageEvent;\n\tif (update.type !== \"text_delta\" && update.type !== \"thinking_delta\" && update.type !== \"toolcall_delta\") {\n\t\treturn event as unknown as AgentSessionEvent;\n\t}\n\tconst content = streamingAssistant.content[update.contentIndex];\n\tif (update.type === \"text_delta\" && content?.type === \"text\") content.text += update.delta;\n\tif (update.type === \"thinking_delta\" && content?.type === \"thinking\") content.thinking += update.delta;\n\tif (update.type === \"toolcall_delta\" && content?.type === \"toolCall\") {\n\t\tconst raw = JSON.stringify(content.arguments) + update.delta;\n\t\ttry {\n\t\t\tconst parsed: unknown = JSON.parse(raw);\n\t\t\tif (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n\t\t\t\tcontent.arguments = parsed as Record<string, unknown>;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Keep the last valid arguments until the next complete update.\n\t\t}\n\t}\n\tstreamingAssistant.usage = event.usage;\n\treturn {\n\t\ttype: \"message_update\",\n\t\tmessage: structuredClone(streamingAssistant),\n\t\tassistantMessageEvent: { ...update, partial: structuredClone(streamingAssistant) },\n\t} as AgentSessionEvent;\n}\n\nfunction stateFromRpc(state: {\n\tmodel?: AgentSession[\"model\"];\n\tthinkingLevel: AgentSession[\"thinkingLevel\"];\n\tisStreaming: boolean;\n\tisCompacting: boolean;\n\tpendingMessageCount: number;\n\tusageTotals: import(\"../../core/session-manager.ts\").UsageTotals;\n\tcontextUsage?: import(\"../../core/extensions/types.ts\").ContextUsage;\n\tretryAttempt: number;\n\tisBashRunning: boolean;\n\tsessionFile?: string;\n\tsessionId: string;\n\tsessionName?: string;\n\tcwd: string;\n\tprojectTrusted: boolean;\n\tserviceTier?: AgentSession[\"serviceTier\"];\n\tfastMode: boolean;\n\tsteeringMode: AgentSession[\"steeringMode\"];\n\tfollowUpMode: AgentSession[\"followUpMode\"];\n\tautoCompactionEnabled: boolean;\n\tentries?: import(\"../../core/session-manager.ts\").SessionEntry[];\n\tfavoriteModels: import(\"../rpc/rpc-types.ts\").RpcSessionModelEntry[];\n\tscopedModels: import(\"../rpc/rpc-types.ts\").RpcSessionModelEntry[];\n\tsteering: string[];\n\tfollowUp: string[];\n\tordered: Array<{ text: string; mode: \"steer\" | \"followUp\"; enqueueOrder: number }>;\n}) {\n\treturn state;\n}\n\nexport function isInteractiveHostEvent(event: RpcClientEvent): event is Extract<RpcClientEvent, { type: string }> {\n\treturn typeof event === \"object\" && event !== null && \"type\" in event;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-host-runtime.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-host-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { rm } from \"node:fs/promises\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { AgentSession, AgentSessionEvent, AgentSessionEventListener } from \"../../core/agent-session.ts\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport type { AgentSessionRuntimeDiagnostic } from \"../../core/agent-session-services.ts\";\nimport { executeBashWithOperations } from \"../../core/bash-executor.ts\";\nimport type { ProjectTrustContext, ReplacedSessionContext } from \"../../core/extensions/index.ts\";\nimport { SessionManager } from \"../../core/session-manager.ts\";\nimport { SettingsManager } from \"../../core/settings-manager.ts\";\nimport type { BashOperations } from \"../../core/tools/bash.ts\";\nimport { type EnsuredHost, ensureHost } from \"../rpc/host-ensure.ts\";\nimport { isTransportGoneError, RpcClient, type RpcClientEvent } from \"../rpc/rpc-client.ts\";\n\nexport const INTERACTIVE_HOST_FALLBACK_WARNING = \"Warning: shared interactive host unavailable; continuing locally\";\nexport const INTERACTIVE_HOST_RECONNECTING_WARNING = \"Warning: shared interactive host connection lost; reconnecting\";\n\nexport interface InteractiveHostWarning {\n\treadonly type: \"interactive_host_fallback\" | \"interactive_host_action_failed\";\n\treadonly message: string;\n\treadonly cause: unknown;\n}\n\n/**\n * The session contract InteractiveMode actually runs against. The local\n * AgentSession answers these reads synchronously; the shared-host proxy answers\n * them over RPC. Declaring the union here keeps the proxy honest (no more\n * `as unknown as` lie at the boundary) and lets the compiler find every TUI\n * call site that must await.\n */\nexport type InteractiveSession = Omit<\n\tAgentSession,\n\t\"cycleThinkingLevel\" | \"getAvailableThinkingLevels\" | \"getSessionStats\" | \"getUserMessagesForForking\"\n> & {\n\tcycleThinkingLevel(): ThinkingLevel | undefined | Promise<ThinkingLevel | undefined>;\n\tgetAvailableThinkingLevels(): ThinkingLevel[] | Promise<ThinkingLevel[]>;\n\tgetSessionStats():\n\t\t| ReturnType<AgentSession[\"getSessionStats\"]>\n\t\t| Promise<ReturnType<AgentSession[\"getSessionStats\"]>>;\n\tgetUserMessagesForForking():\n\t\t| ReturnType<AgentSession[\"getUserMessagesForForking\"]>\n\t\t| Promise<ReturnType<AgentSession[\"getUserMessagesForForking\"]>>;\n};\n\nexport type InteractiveHostUiHandler = (\n\trequest: import(\"../rpc/rpc-types.ts\").RpcExtensionUIRequest,\n) =>\n\t| Promise<import(\"../rpc/rpc-types.ts\").RpcExtensionUIResponse | undefined>\n\t| import(\"../rpc/rpc-types.ts\").RpcExtensionUIResponse\n\t| undefined;\n\nexport interface InteractiveHostRuntimeOptions {\n\treadonly socket: string;\n\treadonly agentDir?: string;\n\treadonly ensureHost?: (options: { socket: string; agentDir?: string }) => Promise<EnsuredHost | undefined>;\n\tonWarning?: (warning: InteractiveHostWarning) => void;\n}\n\n/**\n * Replace only the transport-facing session operations. The object returned is\n * deliberately still an AgentSessionRuntime: InteractiveMode and extensions\n * retain their existing runtime seam, while the authoritative prompt/session\n * state is hosted by the shared RPC process.\n */\nexport async function createInteractiveHostRuntime(\n\tlocalRuntime: AgentSessionRuntime,\n\toptions: InteractiveHostRuntimeOptions,\n): Promise<AgentSessionRuntime> {\n\tconst sessionPath = localRuntime.session.sessionFile;\n\tif (!sessionPath) return localRuntime;\n\tconst startHost = options.ensureHost ?? ((hostOptions) => ensureHost(hostOptions));\n\tlet remoteSession: RemoteSessionProxy | undefined;\n\tlet remoteRuntime: RemoteInteractiveRuntime | undefined;\n\tlet reconnecting: Promise<void> | undefined;\n\tlet disconnectQueued = false;\n\tlet disposed = false;\n\tlet fallbackWarned = false;\n\tlet reconnectWarningShown = false;\n\tconst warnReconnect = (cause: unknown) => {\n\t\tif (reconnectWarningShown) return;\n\t\treconnectWarningShown = true;\n\t\toptions.onWarning?.({\n\t\t\ttype: \"interactive_host_action_failed\",\n\t\t\tmessage: INTERACTIVE_HOST_RECONNECTING_WARNING,\n\t\t\tcause,\n\t\t});\n\t};\n\tconst warnFallback = (cause: unknown) => {\n\t\tif (fallbackWarned) return;\n\t\tfallbackWarned = true;\n\t\toptions.onWarning?.({ type: \"interactive_host_fallback\", message: INTERACTIVE_HOST_FALLBACK_WARNING, cause });\n\t};\n\tlet scheduleReconnect: () => void = () => {};\n\tconst client = new RpcClient({\n\t\tsocketPath: options.socket,\n\t\tonDisconnect: () => {\n\t\t\tdisconnectQueued = true;\n\t\t\tscheduleReconnect();\n\t\t},\n\t});\n\tscheduleReconnect = () => {\n\t\tif (!remoteSession || reconnecting || disposed || remoteRuntime?.isFallback) return;\n\t\tremoteRuntime?.enterReconnecting();\n\t\treconnecting = (async () => {\n\t\t\tlet cause: unknown;\n\t\t\tfor (let attempt = 0; attempt < 3; attempt++) {\n\t\t\t\tif (disposed) return;\n\t\t\t\tdisconnectQueued = false;\n\t\t\t\ttry {\n\t\t\t\t\tawait startHost({ socket: options.socket, agentDir: options.agentDir });\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tawait client.start();\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tawait client.openSession({ sessionPath, cwd: localRuntime.cwd });\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tif (remoteRuntime) await remoteRuntime.reRegisterClientInfo();\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tawait remoteSession.refresh();\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t\tfallbackWarned = false;\n\t\t\t\t\treconnectWarningShown = false;\n\t\t\t\t\tremoteRuntime?.enterConnected();\n\t\t\t\t\treturn;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tcause = error;\n\t\t\t\t\tawait client.stop().catch(() => {});\n\t\t\t\t\tif (disposed) return;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!disposed) {\n\t\t\t\tawait remoteRuntime?.enterFallback();\n\t\t\t\twarnFallback(cause);\n\t\t\t}\n\t\t})().finally(() => {\n\t\t\treconnecting = undefined;\n\t\t\tif (disconnectQueued && !disposed && !remoteRuntime?.isFallback) scheduleReconnect();\n\t\t});\n\t};\n\ttry {\n\t\tawait startHost({ socket: options.socket, agentDir: options.agentDir });\n\t\tawait client.start();\n\t\tawait client.setClientInfo(80, [\"rendered_components\"]);\n\t\tconst startupEvents: import(\"../rpc/rpc-client.ts\").RpcClientEvent[] = [];\n\t\tconst stopBuffering = client.onEvent((event) => startupEvents.push(event));\n\t\tconst opened = await client.openSession({\n\t\t\tsessionPath,\n\t\t\tcwd: localRuntime.cwd,\n\t\t\tprovider: localRuntime.session.model?.provider,\n\t\t\tmodelId: localRuntime.session.model?.id,\n\t\t\tthinkingLevel: localRuntime.session.thinkingLevel,\n\t\t});\n\t\tremoteSession = createRemoteSessionProxy(\n\t\t\tlocalRuntime.session,\n\t\t\tlocalRuntime.services.agentDir,\n\t\t\tclient,\n\t\t\topened.state,\n\t\t\toptions.onWarning,\n\t\t\t(cause) => {\n\t\t\t\tif (remoteRuntime?.isReconnecting) warnReconnect(cause);\n\t\t\t\telse warnFallback(cause);\n\t\t\t},\n\t\t\tstartupEvents.filter((event) => !(\"sessionId\" in event) || event.sessionId === opened.sessionId),\n\t\t);\n\t\tstopBuffering();\n\t\tif (opened.state.isBashRunning && !opened.attached) {\n\t\t\t// Only a newly opened session can have an execution orphaned by a\n\t\t\t// previous connection. An attach is an observer of the same live runtime;\n\t\t\t// aborting it would cancel work owned by the surviving attachment.\n\t\t\tawait client.abortBash().catch(() => {});\n\t\t}\n\t\tif (opened.attached) await remoteSession.refresh();\n\t\tremoteRuntime = new RemoteInteractiveRuntime(localRuntime, remoteSession, client, {\n\t\t\tonTransportGone: (cause) => {\n\t\t\t\tif (remoteRuntime?.isReconnecting) warnReconnect(cause);\n\t\t\t\telse warnFallback(cause);\n\t\t\t},\n\t\t\tget reconnecting() {\n\t\t\t\treturn reconnecting;\n\t\t\t},\n\t\t\tdispose: () => {\n\t\t\t\tdisposed = true;\n\t\t\t},\n\t\t});\n\t\treturn remoteRuntime as unknown as AgentSessionRuntime;\n\t} catch (cause) {\n\t\tawait client.stop().catch(() => {});\n\t\twarnFallback(cause);\n\t\treturn localRuntime;\n\t}\n}\n\nexport class RemoteInteractiveRuntime {\n\treadonly #local: AgentSessionRuntime;\n\treadonly #remoteSession: RemoteSessionProxy;\n\treadonly #client: RpcClient;\n\treadonly #lifecycle?: { readonly reconnecting: Promise<void> | undefined; readonly dispose: () => void };\n\treadonly #onTransportGone: (cause: unknown) => void;\n\t#rebindSession: (() => Promise<void>) | undefined;\n\t#beforeSessionInvalidate: (() => void) | undefined;\n\t#state: \"connected\" | \"reconnecting\" | \"fallback\" | \"disposed\" = \"connected\";\n\t#fallbackHandoff: Promise<void> | undefined;\n\tget isReconnecting(): boolean {\n\t\treturn this.#state === \"reconnecting\";\n\t}\n\tget isFallback(): boolean {\n\t\treturn this.#state === \"fallback\";\n\t}\n\n\tconstructor(\n\t\tlocal: AgentSessionRuntime,\n\t\tremoteSession: RemoteSessionProxy,\n\t\tclient: RpcClient,\n\t\tlifecycle?: { readonly reconnecting: Promise<void> | undefined; readonly dispose: () => void } & {\n\t\t\tonTransportGone: (cause: unknown) => void;\n\t\t},\n\t) {\n\t\tthis.#local = local;\n\t\tthis.#remoteSession = remoteSession;\n\t\tthis.#client = client;\n\t\tthis.#lifecycle = lifecycle;\n\t\tthis.#onTransportGone = lifecycle?.onTransportGone ?? (() => {});\n\t}\n\n\tasync #call<T>(call: () => Promise<T>): Promise<T> {\n\t\ttry {\n\t\t\treturn await call();\n\t\t} catch (error) {\n\t\t\tif (isTransportGoneError(error)) {\n\t\t\t\tthis.#onTransportGone(error);\n\t\t\t\treturn { cancelled: true } as T;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tenterConnected(): void {\n\t\tif (this.#state !== \"disposed\" && this.#state !== \"fallback\") this.#state = \"connected\";\n\t}\n\n\tenterReconnecting(): void {\n\t\tif (this.#state !== \"disposed\" && this.#state !== \"fallback\") this.#state = \"reconnecting\";\n\t}\n\n\tasync enterFallback(): Promise<void> {\n\t\tif (this.#state === \"disposed\" || this.#state === \"fallback\") return;\n\t\tthis.#state = \"fallback\";\n\t\tthis.#beforeSessionInvalidate?.();\n\t\tconst rebind = this.#rebindSession?.();\n\t\tif (rebind) {\n\t\t\tthis.#fallbackHandoff = rebind.catch((error) => {\n\t\t\t\tthis.#onTransportGone(error);\n\t\t\t});\n\t\t\tawait this.#fallbackHandoff;\n\t\t}\n\t}\n\n\tget session(): AgentSession {\n\t\treturn this.#state === \"fallback\" || this.#state === \"disposed\"\n\t\t\t? this.#local.session\n\t\t\t: this.#remoteSession.session;\n\t}\n\tget services(): AgentSessionRuntime[\"services\"] {\n\t\treturn this.#local.services;\n\t}\n\tget cwd(): string {\n\t\treturn this.session.sessionManager.getCwd();\n\t}\n\tget diagnostics(): readonly AgentSessionRuntimeDiagnostic[] {\n\t\treturn this.#local.diagnostics;\n\t}\n\tget modelFallbackMessage(): string | undefined {\n\t\treturn this.#local.modelFallbackMessage;\n\t}\n\tget launchProfile(): AgentSessionRuntime[\"launchProfile\"] {\n\t\treturn this.#local.launchProfile;\n\t}\n\tsetBeforeSessionInvalidate(callback?: () => void): void {\n\t\tthis.#beforeSessionInvalidate = callback;\n\t\tthis.#local.setBeforeSessionInvalidate(callback);\n\t}\n\tsetRebindSession(callback?: () => Promise<void>): void {\n\t\tthis.#rebindSession = callback;\n\t\tthis.#local.setRebindSession(callback);\n\t\tif (callback && this.#state === \"fallback\" && !this.#fallbackHandoff) {\n\t\t\tthis.#fallbackHandoff = callback().catch((error) => {\n\t\t\t\tthis.#onTransportGone(error);\n\t\t\t});\n\t\t}\n\t}\n\tsetHostUiHandler(callback?: InteractiveHostUiHandler): void {\n\t\tthis.#remoteSession.setHostUiHandler(callback);\n\t}\n\t#clientInfoSent = false;\n\t#lastClientWidth = 80;\n\tsetClientInfo(width: number): void {\n\t\tthis.#lastClientWidth = width;\n\t\tconst capabilities = this.#clientInfoSent ? undefined : [\"rendered_components\"];\n\t\tthis.#clientInfoSent = true;\n\t\tvoid this.#client.setClientInfo(width, capabilities).catch(() => {});\n\t}\n\tasync reRegisterClientInfo(): Promise<void> {\n\t\tawait this.#client.setClientInfo(this.#lastClientWidth, [\"rendered_components\"]);\n\t}\n\tasync dispose(): Promise<void> {\n\t\tif (this.#state === \"disposed\") return;\n\t\tthis.#state = \"disposed\";\n\t\tthis.#lifecycle?.dispose();\n\t\tawait this.#lifecycle?.reconnecting?.catch(() => {});\n\t\tawait this.#fallbackHandoff?.catch(() => {});\n\t\tconst errors: unknown[] = [];\n\t\tfor (const cleanup of [\n\t\t\t() => this.#remoteSession.abortLocalBash(),\n\t\t\t() => this.#client.closeSession(),\n\t\t\t() => this.#client.stop(),\n\t\t\t() => this.#local.dispose(),\n\t\t]) {\n\t\t\ttry {\n\t\t\t\tawait cleanup();\n\t\t\t} catch (error) {\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t}\n\t\tif (errors.length > 0) throw errors[0];\n\t}\n\tasync newSession(options?: {\n\t\tparentSession?: string;\n\t\tsetup?: (sessionManager: SessionManager) => Promise<void>;\n\t\twithSession?: (ctx: ReplacedSessionContext) => Promise<void>;\n\t}): Promise<{ cancelled: boolean }> {\n\t\tif (this.#state === \"fallback\") return this.#local.newSession(options);\n\t\t// Suppresses for the ENTIRE command, not just the refresh tail: a\n\t\t// multi-session host emits session_replaced while completing it, so the echo\n\t\t// can arrive before the refresh/rebind sequence below starts and race it -\n\t\t// newSession transports setup entries between two refreshes.\n\t\treturn this.#remoteSession\n\t\t\t.aroundLocalReplacement(async () => {\n\t\t\t\tconst result = await this.#call(() => this.#client.newSession(options?.parentSession));\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tthis.#beforeSessionInvalidate?.();\n\t\t\t\t\tthis.#remoteSession.abortLocalBash();\n\t\t\t\t\tawait this.#remoteSession.refresh();\n\t\t\t\t\tif (options?.setup) {\n\t\t\t\t\t\tconst capture = SessionManager.inMemory(this.#remoteSession.session.sessionManager.getCwd());\n\t\t\t\t\t\tawait options.setup(capture);\n\t\t\t\t\t\tfor (const entry of capture.getEntries()) await this.#client.appendSessionEntry(entry);\n\t\t\t\t\t\tawait this.#remoteSession.refresh();\n\t\t\t\t\t}\n\t\t\t\t\tawait this.#rebindSession?.();\n\t\t\t\t\tif (options?.withSession) await options.withSession(this.#remoteSession.createReplacedSessionContext());\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (isTransportGoneError(error)) return { cancelled: true };\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\tasync switchSession(\n\t\tsessionPath: string,\n\t\toptions?: {\n\t\t\tcwdOverride?: string;\n\t\t\twithSession?: (ctx: ReplacedSessionContext) => Promise<void>;\n\t\t\tprojectTrustContextFactory?: (cwd: string) => ProjectTrustContext;\n\t\t},\n\t): Promise<{ cancelled: boolean }> {\n\t\tif (this.#state === \"fallback\") return this.#local.switchSession(sessionPath, options);\n\t\t// See newSession: the suppression must cover the command itself, since the\n\t\t// host emits session_replaced while completing it.\n\t\treturn this.#remoteSession\n\t\t\t.aroundLocalReplacement(async () => {\n\t\t\t\tconst result = await this.#call(() =>\n\t\t\t\t\tthis.#client.switchSession(\n\t\t\t\t\t\tsessionPath,\n\t\t\t\t\t\toptions?.cwdOverride === undefined ? undefined : { cwdOverride: options.cwdOverride },\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tthis.#beforeSessionInvalidate?.();\n\t\t\t\t\tthis.#remoteSession.abortLocalBash();\n\t\t\t\t\tawait this.#remoteSession.refresh();\n\t\t\t\t\tawait this.#rebindSession?.();\n\t\t\t\t\t// The shared host already resolved trust; this callback is retained for\n\t\t\t\t\t// compatibility, but its result cannot override host-authoritative state.\n\t\t\t\t\toptions?.projectTrustContextFactory?.(this.#remoteSession.session.sessionManager.getCwd());\n\t\t\t\t\tif (options?.withSession) await options.withSession(this.#remoteSession.createReplacedSessionContext());\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (isTransportGoneError(error)) return { cancelled: true };\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\tasync fork(\n\t\tentryId: string,\n\t\toptions?: { position?: \"before\" | \"at\"; withSession?: (ctx: ReplacedSessionContext) => Promise<void> },\n\t): Promise<{ cancelled: boolean; selectedText?: string }> {\n\t\tif (this.#state === \"fallback\") return this.#local.fork(entryId, options);\n\t\t// See newSession: the suppression must cover the command itself.\n\t\treturn this.#remoteSession\n\t\t\t.aroundLocalReplacement(async () => {\n\t\t\t\tconst result = await this.#call(() => this.#client.fork(entryId, options));\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tthis.#beforeSessionInvalidate?.();\n\t\t\t\t\tthis.#remoteSession.abortLocalBash();\n\t\t\t\t\tawait this.#refreshAndRebind();\n\t\t\t\t\tif (options?.withSession) await options.withSession(this.#remoteSession.createReplacedSessionContext());\n\t\t\t\t}\n\t\t\t\treturn { cancelled: result.cancelled, selectedText: result.text };\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (isTransportGoneError(error)) return { cancelled: true };\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\tasync importFromJsonl(inputPath: string, cwdOverride?: string): Promise<{ cancelled: boolean }> {\n\t\tif (this.#state === \"fallback\") return this.#local.importFromJsonl(inputPath, cwdOverride);\n\t\t// See newSession: the suppression must cover the command itself.\n\t\treturn this.#remoteSession\n\t\t\t.aroundLocalReplacement(async () => {\n\t\t\t\tconst result = await this.#call(() => this.#client.importJsonl(inputPath, cwdOverride));\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tthis.#beforeSessionInvalidate?.();\n\t\t\t\t\tthis.#remoteSession.abortLocalBash();\n\t\t\t\t\tawait this.#refreshAndRebind();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (isTransportGoneError(error)) return { cancelled: true };\n\t\t\t\tthrow error;\n\t\t\t});\n\t}\n\n\tasync #refreshAndRebind(): Promise<void> {\n\t\tawait this.#remoteSession.refresh();\n\t\tawait this.#rebindSession?.();\n\t}\n}\n\ninterface RemoteSessionProxy {\n\treadonly session: AgentSession;\n\tsetHostUiHandler(callback?: InteractiveHostUiHandler): void;\n\trefresh(): Promise<void>;\n\t/**\n\t * Run a replacement this runtime is driving itself, suppressing the refresh\n\t * that the host's broadcast `session_replaced` would otherwise trigger. The\n\t * caller owns the refresh/rebind ordering for its own replacements, so the\n\t * scope must cover the command itself, not just its refresh tail.\n\t */\n\taroundLocalReplacement<T>(body: () => Promise<T>): Promise<T>;\n\tabortLocalBash(): void;\n\tcreateReplacedSessionContext(): ReplacedSessionContext;\n}\n\n/** Exported for direct coverage of the wire-event handling below. */\nexport function createRemoteSessionProxy(\n\tlocal: AgentSession,\n\tagentDir: string,\n\tclient: RpcClient,\n\tinitialState: ReturnType<typeof stateFromRpc>,\n\tonWarning?: (warning: InteractiveHostWarning) => void,\n\tonTransportGone?: (cause: unknown) => void,\n\tstartupEvents: readonly import(\"../rpc/rpc-client.ts\").RpcClientEvent[] = [],\n): RemoteSessionProxy {\n\t// Fire-and-forget setters keep the sync AgentSession signature, but their RPC\n\t// failures must not vanish: the matching *_changed wire event confirms success,\n\t// and a rejection here is the only signal of failure.\n\tconst reportActionFailure = (action: string) => (error: unknown) => {\n\t\tconst transportGone = isTransportGoneError(error);\n\t\tif (transportGone) onTransportGone?.(error);\n\t\telse\n\t\t\tonWarning?.({\n\t\t\t\ttype: \"interactive_host_action_failed\",\n\t\t\t\tmessage: `Warning: shared interactive host ${action} failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\tcause: error,\n\t\t\t});\n\t};\n\tconst transportCall = async <T>(action: string, call: () => Promise<T>, cancelledValue?: T): Promise<T> => {\n\t\ttry {\n\t\t\treturn await call();\n\t\t} catch (error) {\n\t\t\tif (!isTransportGoneError(error)) throw error;\n\t\t\treportActionFailure(action)(error);\n\t\t\treturn cancelledValue as T;\n\t\t}\n\t};\n\tlet state = { ...initialState };\n\tconst waitForBashCallbacks = async (promises: Set<Promise<void>>, allowAbandonment: boolean): Promise<boolean> => {\n\t\tif (promises.size === 0) return true;\n\t\tconst settled = Promise.allSettled([...promises]).then(() => true);\n\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\tconst bounded = new Promise<false>((resolve) => {\n\t\t\ttimeout = setTimeout(resolve, allowAbandonment ? 100 : 5_000, false);\n\t\t\ttimeout.unref?.();\n\t\t});\n\t\ttry {\n\t\t\treturn await Promise.race([settled, bounded]);\n\t\t} finally {\n\t\t\tif (timeout) clearTimeout(timeout);\n\t\t}\n\t};\n\tconst executionNamespace = randomUUID();\n\tconst cleanupRemoteBashOutput = async (path: string): Promise<void> => {\n\t\tlet cleanupTimeout: ReturnType<typeof setTimeout> | undefined;\n\t\ttry {\n\t\t\tawait Promise.race([\n\t\t\t\tclient.cleanupBashOutput(path),\n\t\t\t\tnew Promise<never>((_, reject) => {\n\t\t\t\t\tcleanupTimeout = setTimeout(() => reject(new Error(\"RPC cleanup timed out\")), 1_000);\n\t\t\t\t}),\n\t\t\t]);\n\t\t\treturn;\n\t\t} catch (transportError) {\n\t\t\t// Spill paths are shared host filesystem paths. If the RPC transport is\n\t\t\t// already unavailable, remove locally as a bounded best-effort fallback;\n\t\t\t// a later reconnect is not required to prevent this callback failure from\n\t\t\t// permanently leaking the host-owned artifact.\n\t\t\ttry {\n\t\t\t\tawait rm(path, { force: true });\n\t\t\t\treturn;\n\t\t\t} catch (localError) {\n\t\t\t\tonWarning?.({\n\t\t\t\t\ttype: \"interactive_host_action_failed\",\n\t\t\t\t\tmessage: `Warning: failed to clean up shared bash output spill: ${localError instanceof Error ? localError.message : String(localError)}`,\n\t\t\t\t\tcause: new AggregateError([transportError, localError]),\n\t\t\t\t});\n\t\t\t}\n\t\t} finally {\n\t\t\tif (cleanupTimeout) clearTimeout(cleanupTimeout);\n\t\t}\n\t};\n\tlet nextBashExecutionId = 0;\n\tconst bashExecutions = new Map<\n\t\tstring,\n\t\t{\n\t\t\tchunk?: (chunk: string) => void | PromiseLike<void>;\n\t\t\tpromises: Set<Promise<void>>;\n\t\t\terror: unknown;\n\t\t\thasError: boolean;\n\t\t}\n\t>();\n\tlet hostUiHandler: InteractiveHostUiHandler | undefined;\n\tconst pendingUiRequests: import(\"../rpc/rpc-types.ts\").RpcExtensionUIRequest[] = [];\n\tlet localBashAbortController: AbortController | undefined;\n\tlet localBashRunning = false;\n\tlet hostBashRunning = initialState.isBashRunning;\n\tlet nextQueuedInputOrder = Math.max(0, ...initialState.ordered.map((item) => item.enqueueOrder));\n\tlet sessionManager = local.sessionManager;\n\tlet settingsManager = SettingsManager.create(initialState.cwd, agentDir, {\n\t\tprojectTrusted: initialState.projectTrusted,\n\t});\n\tconst updateBashState = () => {\n\t\tstate = { ...state, isBashRunning: localBashRunning || hostBashRunning };\n\t};\n\tconst remoteSessionManager = new Proxy({} as SessionManager, {\n\t\tget(_target, property, _receiver) {\n\t\t\tif (property === \"appendLabelChange\") {\n\t\t\t\treturn (entryId: string, label?: string) =>\n\t\t\t\t\tvoid client.setLabel(entryId, label).catch(reportActionFailure(\"appendLabelChange\"));\n\t\t\t}\n\t\t\tif (property === \"getCwd\") return () => state.cwd;\n\t\t\tif (property === \"getSessionName\") return () => state.sessionName;\n\t\t\tif (property === \"getUsageTotals\") return () => state.usageTotals;\n\t\t\tconst value = Reflect.get(sessionManager, property, sessionManager);\n\t\t\treturn typeof value === \"function\" ? value.bind(sessionManager) : value;\n\t\t},\n\t});\n\tlet streamingAssistant: Extract<AgentSession[\"messages\"][number], { role: \"assistant\" }> | undefined;\n\tlet mirroredCurrentAssistantUsage = false;\n\t/** Non-zero while this runtime is driving its own replacement sequence. */\n\tlet localReplacementDepth = 0;\n\tconst listeners = new Set<AgentSessionEventListener>();\n\tconst handleWireEvent = (wireEvent: import(\"../rpc/rpc-client.ts\").RpcClientEvent) => {\n\t\tif ((wireEvent as { type?: string }).type === \"extension_ui_request\") {\n\t\t\tconst request = wireEvent as import(\"../rpc/rpc-types.ts\").RpcExtensionUIRequest;\n\t\t\tif (hostUiHandler)\n\t\t\t\tvoid Promise.resolve(hostUiHandler(request))\n\t\t\t\t\t.then((response) => response && client.sendExtensionUIResponse(response))\n\t\t\t\t\t.catch(reportActionFailure(\"host UI response\"));\n\t\t\telse pendingUiRequests.push(request);\n\t\t\treturn;\n\t\t}\n\t\tif (wireEvent.type === \"session_replaced\") {\n\t\t\t// The host swapped the live session behind this connection - another\n\t\t\t// attached client issued the replacement, or an extension drove one that no\n\t\t\t// client issued. Nothing else re-reads the binding, so without this the\n\t\t\t// proxy keeps serving the previous session's manager, settings and message\n\t\t\t// mirror while the host has already moved on. The command response carries\n\t\t\t// only `{ cancelled }`, so this event is the only signal available here.\n\t\t\t//\n\t\t\t// A multi-session host broadcasts the event to every connection including\n\t\t\t// the one that issued the replacement, and this runtime's own replacement\n\t\t\t// methods already run an ordered refresh/rebind - newSession additionally\n\t\t\t// transports setup entries between two refreshes. Refreshing again from\n\t\t\t// here would race that sequence, so self-driven replacements are skipped.\n\t\t\tif (localReplacementDepth === 0) {\n\t\t\t\tvoid refresh().catch(reportActionFailure(\"session refresh after replacement\"));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (wireEvent.type === \"agent_settled\") state = { ...state, isStreaming: false, retryAttempt: 0 };\n\t\tif (wireEvent.type === \"bash_start\") {\n\t\t\thostBashRunning = true;\n\t\t\tupdateBashState();\n\t\t}\n\t\tif (wireEvent.type === \"bash_end\") {\n\t\t\thostBashRunning = false;\n\t\t\tupdateBashState();\n\t\t}\n\t\tif (wireEvent.type === \"bash_execution_update\" && wireEvent.id) {\n\t\t\tconst execution = bashExecutions.get(wireEvent.id);\n\t\t\tif (execution?.chunk && !execution.hasError) {\n\t\t\t\ttry {\n\t\t\t\t\tconst callbackPromise = Promise.resolve(execution.chunk(wireEvent.delta)).catch((error) => {\n\t\t\t\t\t\tif (!execution.hasError) {\n\t\t\t\t\t\t\texecution.error = error;\n\t\t\t\t\t\t\texecution.hasError = true;\n\t\t\t\t\t\t\tvoid client.abortBash().catch(() => {});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t});\n\t\t\t\t\texecution.promises.add(callbackPromise);\n\t\t\t\t\tvoid callbackPromise.catch(() => {}).finally(() => execution.promises.delete(callbackPromise));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!execution.hasError) {\n\t\t\t\t\t\texecution.error = error;\n\t\t\t\t\t\texecution.hasError = true;\n\t\t\t\t\t\tvoid client.abortBash().catch(() => {});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (wireEvent.type === \"agent_start\") state = { ...state, isStreaming: true };\n\t\tif (wireEvent.type === \"compaction_start\") state = { ...state, isCompacting: true };\n\t\tif (wireEvent.type === \"compaction_end\") state = { ...state, isCompacting: false };\n\t\tif (wireEvent.type === \"auto_retry_start\") state = { ...state, retryAttempt: wireEvent.attempt };\n\t\tif (wireEvent.type === \"auto_retry_end\") state = { ...state, retryAttempt: 0 };\n\t\tif (wireEvent.type === \"queue_update\") {\n\t\t\tnextQueuedInputOrder = Math.max(nextQueuedInputOrder, ...wireEvent.ordered.map((item) => item.enqueueOrder));\n\t\t\tstate = {\n\t\t\t\t...state,\n\t\t\t\tsteering: [...wireEvent.steering],\n\t\t\t\tfollowUp: [...wireEvent.followUp],\n\t\t\t\tordered: [...wireEvent.ordered],\n\t\t\t\tpendingMessageCount: wireEvent.steering.length + wireEvent.followUp.length,\n\t\t\t};\n\t\t}\n\t\tif (wireEvent.type === \"model_changed\") {\n\t\t\tstate = { ...state, model: wireEvent.model, thinkingLevel: wireEvent.thinkingLevel };\n\t\t}\n\t\tif (wireEvent.type === \"thinking_level_changed\") state = { ...state, thinkingLevel: wireEvent.level };\n\t\tif (wireEvent.type === \"service_tier_changed\") {\n\t\t\tstate = { ...state, serviceTier: wireEvent.tier, fastMode: wireEvent.fastMode };\n\t\t}\n\t\tif (wireEvent.type === \"session_settings_changed\") {\n\t\t\tstate = {\n\t\t\t\t...state,\n\t\t\t\tsteeringMode: wireEvent.steeringMode,\n\t\t\t\tfollowUpMode: wireEvent.followUpMode,\n\t\t\t\tautoCompactionEnabled: wireEvent.autoCompactionEnabled,\n\t\t\t};\n\t\t}\n\t\tif (wireEvent.type === \"entry_appended\") {\n\t\t\ttry {\n\t\t\t\tsessionManager.appendEntry(wireEvent.entry);\n\t\t\t\tlocal.agent.state.messages = sessionManager.buildSessionContext().messages;\n\t\t\t} catch {\n\t\t\t\t// Non-fatal if the local snapshot cannot accept a concurrent entry.\n\t\t\t}\n\t\t}\n\t\tif (wireEvent.type === \"session_info_changed\") state = { ...state, sessionName: wireEvent.name };\n\t\tif (wireEvent.type === \"message_start\") {\n\t\t\tif (wireEvent.message.role === \"assistant\") {\n\t\t\t\tstreamingAssistant = structuredClone(wireEvent.message);\n\t\t\t\tmirroredCurrentAssistantUsage = false;\n\t\t\t}\n\t\t\tlocal.agent.state.messages.push(structuredClone(wireEvent.message));\n\t\t}\n\t\tif (wireEvent.type === \"message_end\") {\n\t\t\tif (wireEvent.message.role === \"assistant\") {\n\t\t\t\tstreamingAssistant = structuredClone(wireEvent.message);\n\t\t\t\tconst usage = wireEvent.message.usage;\n\t\t\t\tif (usage && !mirroredCurrentAssistantUsage) {\n\t\t\t\t\tmirroredCurrentAssistantUsage = true;\n\t\t\t\t\tconst latestPromptTokens = usage.input + usage.cacheRead + usage.cacheWrite;\n\t\t\t\t\tconst contextWindow = state.model?.contextWindow ?? 0;\n\t\t\t\t\tconst contextTokens = usage.input + usage.cacheRead + usage.cacheWrite;\n\t\t\t\t\tstate = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tcontextUsage:\n\t\t\t\t\t\t\tcontextWindow > 0\n\t\t\t\t\t\t\t\t? { tokens: contextTokens, contextWindow, percent: (contextTokens / contextWindow) * 100 }\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\tusageTotals: {\n\t\t\t\t\t\t\t...state.usageTotals,\n\t\t\t\t\t\t\tinput: state.usageTotals.input + usage.input,\n\t\t\t\t\t\t\toutput: state.usageTotals.output + usage.output,\n\t\t\t\t\t\t\tcacheRead: state.usageTotals.cacheRead + usage.cacheRead,\n\t\t\t\t\t\t\tcacheWrite: state.usageTotals.cacheWrite + usage.cacheWrite,\n\t\t\t\t\t\t\tcost: state.usageTotals.cost + (usage.cost?.total ?? 0),\n\t\t\t\t\t\t\tlatestCacheHitRate:\n\t\t\t\t\t\t\t\tlatestPromptTokens > 0 ? (usage.cacheRead / latestPromptTokens) * 100 : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst messages = local.agent.state.messages;\n\t\t\tconst previous = messages.at(-1);\n\t\t\tif (previous?.role === wireEvent.message.role)\n\t\t\t\tmessages[messages.length - 1] = structuredClone(wireEvent.message);\n\t\t}\n\t\tif (wireEvent.type === \"compaction_end\" && wireEvent.accepted && !wireEvent.aborted) {\n\t\t\ttry {\n\t\t\t\tlocal.sessionManager.reloadFromDisk?.();\n\t\t\t\tif (sessionManager !== local.sessionManager) sessionManager.reloadFromDisk?.();\n\t\t\t\tlocal.agent.state.messages = sessionManager.buildSessionContext().messages;\n\t\t\t} catch {\n\t\t\t\t// Non-fatal if session file is transiently locked or unavailable\n\t\t\t}\n\t\t}\n\t\tconst event = hydrateMessageUpdate(wireEvent, streamingAssistant);\n\t\tfor (const listener of listeners) listener(event);\n\t};\n\tclient.onEvent(handleWireEvent);\n\tfor (const event of startupEvents) handleWireEvent(event);\n\tconst performRefresh = async (): Promise<void> => {\n\t\t// Captured before the first await: entries that arrive via `entry_appended`\n\t\t// while this refresh is in flight are newer than the snapshot it reconciles\n\t\t// against, and must survive the rebuild below.\n\t\tconst idsAtRefreshStart = new Set(sessionManager.getEntries().map((entry) => entry.id));\n\t\tconst nextState = await transportCall(\"refresh\", () => client.getState());\n\t\tif (!nextState) return;\n\t\tstate = { ...stateFromRpc(nextState) };\n\t\tnextQueuedInputOrder = Math.max(0, ...nextState.ordered.map((item) => item.enqueueOrder));\n\t\tlet messages: AgentSession[\"messages\"];\n\t\tsettingsManager = SettingsManager.create(nextState.cwd, agentDir, {\n\t\t\tprojectTrusted: nextState.projectTrusted,\n\t\t});\n\t\tif (nextState.sessionFile) {\n\t\t\t// Keep the caller-owned manager identity when refreshing the same session.\n\t\t\t// Navigation and host-side mutations must update every existing mirror, not\n\t\t\t// leave the interactive runtime holding the pre-refresh snapshot.\n\t\t\tif (sessionManager.getSessionFile() === nextState.sessionFile) {\n\t\t\t\tsessionManager.reloadFromDisk?.();\n\t\t\t} else {\n\t\t\t\t// SessionManager.open retains the explicit path even when the host has\n\t\t\t\t// deferred creating the file for a setup-only session.\n\t\t\t\tsessionManager = SessionManager.open(nextState.sessionFile, undefined, nextState.cwd);\n\t\t\t}\n\t\t\t// The host ships its complete entry list while the session file is still\n\t\t\t// deferred (no assistant message yet, so nothing has been written), which\n\t\t\t// makes that list the only authoritative view of the session. Reconcile the\n\t\t\t// mirror to it exactly: `entry_appended` notifications that cross a\n\t\t\t// concurrent refresh land on whichever manager is current, so the mirror\n\t\t\t// can hold an arbitrary partial set rather than a prefix, and a snapshot\n\t\t\t// taken mid-bind can simply be short. Backfilling only an empty mirror\n\t\t\t// wedged it at whatever partial set it happened to hold.\n\t\t\tconst authoritative = nextState.entries;\n\t\t\tif (authoritative?.length) {\n\t\t\t\tconst mirror = sessionManager.getEntries();\n\t\t\t\tconst matches =\n\t\t\t\t\tmirror.length === authoritative.length &&\n\t\t\t\t\tmirror.every((entry, index) => entry.id === authoritative[index]?.id);\n\t\t\t\tif (!matches) {\n\t\t\t\t\tconst rebuilt = SessionManager.open(nextState.sessionFile, undefined, nextState.cwd);\n\t\t\t\t\tfor (const entry of authoritative) rebuilt.appendEntry(entry);\n\t\t\t\t\t// A notification that crossed this refresh refers to an entry the\n\t\t\t\t\t// snapshot predates, so it is newer than the snapshot; dropping it\n\t\t\t\t\t// would strand the entry until an unrelated refresh happened to\n\t\t\t\t\t// run. Keep it, in arrival order, after the authoritative list.\n\t\t\t\t\tconst authoritativeIds = new Set(authoritative.map((entry) => entry.id));\n\t\t\t\t\tfor (const entry of mirror) {\n\t\t\t\t\t\tif (!idsAtRefreshStart.has(entry.id) && !authoritativeIds.has(entry.id)) {\n\t\t\t\t\t\t\trebuilt.appendEntry(entry);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsessionManager = rebuilt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmessages = sessionManager.buildSessionContext().messages;\n\t\t} else {\n\t\t\tmessages = await transportCall(\"refresh\", () => client.getMessages(), []);\n\t\t}\n\t\tlocal.agent.state.messages.splice(0, local.agent.state.messages.length, ...structuredClone(messages));\n\t\tstreamingAssistant = undefined;\n\t};\n\t// Refreshes must not interleave: each one reassigns sessionManager,\n\t// settingsManager and the mirrored message list, so two in flight can commit a\n\t// mixed snapshot of two different sessions. A replacement-driven refresh races\n\t// exactly that way against a caller-driven one, so run them in order.\n\tlet refreshChain: Promise<void> = Promise.resolve();\n\tconst refresh = (): Promise<void> => {\n\t\tconst next = refreshChain.then(performRefresh, performRefresh);\n\t\trefreshChain = next.then(\n\t\t\t() => {},\n\t\t\t() => {},\n\t\t);\n\t\treturn next;\n\t};\n\tconst session = new Proxy(local, {\n\t\tget(target, property, receiver) {\n\t\t\tif (property === \"prompt\")\n\t\t\t\treturn async (message: string, options?: Parameters<AgentSession[\"prompt\"]>[1]) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait client.prompt(message, {\n\t\t\t\t\t\t\t...(options?.images ? { images: options.images } : {}),\n\t\t\t\t\t\t\t...(options?.streamingBehavior ? { streamingBehavior: options.streamingBehavior } : {}),\n\t\t\t\t\t\t\t...(options?.thinkingLevel ? { thinkingLevel: options.thinkingLevel } : {}),\n\t\t\t\t\t\t\t...(options?.sessionTitlePrompt !== undefined\n\t\t\t\t\t\t\t\t? { sessionTitlePrompt: options.sessionTitlePrompt }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t...(options?.expandPromptTemplates !== undefined\n\t\t\t\t\t\t\t\t? { expandPromptTemplates: options.expandPromptTemplates }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t...(options?.promptDisposition ? { promptDisposition: options.promptDisposition } : {}),\n\t\t\t\t\t\t\t...(options?.preflightResult ? { preflightResult: options.preflightResult } : {}),\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (!isTransportGoneError(error)) throw error;\n\t\t\t\t\t\treportActionFailure(\"prompt\")(error);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tif (property === \"abort\") return () => client.abort();\n\t\t\tif (property === \"abortCompaction\")\n\t\t\t\treturn () => void client.abortCompaction().catch(reportActionFailure(\"abortCompaction\"));\n\t\t\tif (property === \"steer\")\n\t\t\t\treturn (\n\t\t\t\t\tmessage: string,\n\t\t\t\t\timages?: Parameters<AgentSession[\"steer\"]>[1],\n\t\t\t\t\trecovery?: { enqueueOrder?: number },\n\t\t\t\t) => {\n\t\t\t\t\tconst enqueueOrder =\n\t\t\t\t\t\trecovery?.enqueueOrder ?? Math.max(0, ...state.ordered.map((item) => item.enqueueOrder)) + 1;\n\t\t\t\t\tstate = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tsteering: [...state.steering, message],\n\t\t\t\t\t\tordered: [...state.ordered, { text: message, mode: \"steer\", enqueueOrder }],\n\t\t\t\t\t\tpendingMessageCount: state.pendingMessageCount + 1,\n\t\t\t\t\t};\n\t\t\t\t\treturn transportCall(\"steer\", () => client.steer(message, images, { ...recovery, enqueueOrder }));\n\t\t\t\t};\n\t\t\tif (property === \"followUp\")\n\t\t\t\treturn (\n\t\t\t\t\tmessage: string,\n\t\t\t\t\timages?: Parameters<AgentSession[\"followUp\"]>[1],\n\t\t\t\t\trecovery?: { enqueueOrder?: number },\n\t\t\t\t) => {\n\t\t\t\t\tconst enqueueOrder =\n\t\t\t\t\t\trecovery?.enqueueOrder ?? Math.max(0, ...state.ordered.map((item) => item.enqueueOrder)) + 1;\n\t\t\t\t\tstate = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tfollowUp: [...state.followUp, message],\n\t\t\t\t\t\tordered: [...state.ordered, { text: message, mode: \"followUp\", enqueueOrder }],\n\t\t\t\t\t\tpendingMessageCount: state.pendingMessageCount + 1,\n\t\t\t\t\t};\n\t\t\t\t\treturn transportCall(\"followUp\", () => client.followUp(message, images, { ...recovery, enqueueOrder }));\n\t\t\t\t};\n\t\t\tif (property === \"waitForIdle\") return () => client.waitForIdle();\n\t\t\tif (property === \"getLastAssistantText\") return () => target.getLastAssistantText();\n\t\t\tif (property === \"setModel\" || property === \"setSessionModel\")\n\t\t\t\treturn async (model: NonNullable<AgentSession[\"model\"]>) => {\n\t\t\t\t\tconst next = await transportCall(\"setModel\", () => client.setModel(model.provider, model.id), undefined);\n\t\t\t\t\treturn next ? { systemPromptName: next.systemPromptName, model: next } : undefined;\n\t\t\t\t};\n\t\t\tif (property === \"setSessionThinkingLevel\")\n\t\t\t\treturn (level: AgentSession[\"thinkingLevel\"]) =>\n\t\t\t\t\tvoid client\n\t\t\t\t\t\t.setThinkingLevel(level, { scope: \"turn\" })\n\t\t\t\t\t\t.catch(reportActionFailure(\"setSessionThinkingLevel\"));\n\t\t\tif (property === \"setSessionFastMode\")\n\t\t\t\treturn (enabled: boolean) =>\n\t\t\t\t\tvoid client.setFastMode(enabled).catch(reportActionFailure(\"setSessionFastMode\"));\n\t\t\tif (property === \"abortRetry\") return () => void client.abortRetry().catch(reportActionFailure(\"abortRetry\"));\n\t\t\tif (property === \"setAutoRetryEnabled\")\n\t\t\t\treturn (enabled: boolean) =>\n\t\t\t\t\tvoid client.setAutoRetry(enabled).catch(reportActionFailure(\"setAutoRetryEnabled\"));\n\t\t\tif (property === \"reserveQueuedInputOrder\") return () => ++nextQueuedInputOrder;\n\t\t\tif (property === \"setFavoriteModels\")\n\t\t\t\treturn (models: Parameters<AgentSession[\"setFavoriteModels\"]>[0]) => {\n\t\t\t\t\tstate = { ...state, favoriteModels: [...models] };\n\t\t\t\t\tvoid client.setFavoriteModels(models).catch(reportActionFailure(\"setFavoriteModels\"));\n\t\t\t\t};\n\t\t\tif (property === \"setScopedModels\")\n\t\t\t\treturn (models: Parameters<AgentSession[\"setScopedModels\"]>[0]) => {\n\t\t\t\t\tstate = { ...state, scopedModels: [...models] };\n\t\t\t\t\tvoid client.setScopedModels(models).catch(reportActionFailure(\"setScopedModels\"));\n\t\t\t\t};\n\t\t\tif (property === \"cycleModel\")\n\t\t\t\treturn (direction?: \"forward\" | \"backward\") =>\n\t\t\t\t\ttransportCall(\"cycleModel\", () => client.cycleModel(direction), undefined);\n\t\t\tif (property === \"setThinkingLevel\")\n\t\t\t\treturn (level: AgentSession[\"thinkingLevel\"]) =>\n\t\t\t\t\tvoid client.setThinkingLevel(level).catch(reportActionFailure(\"setThinkingLevel\"));\n\t\t\tif (property === \"cycleThinkingLevel\")\n\t\t\t\treturn () =>\n\t\t\t\t\ttransportCall(\"cycleThinkingLevel\", () => client.cycleThinkingLevel(), undefined).then(\n\t\t\t\t\t\t(result) => result?.level,\n\t\t\t\t\t);\n\t\t\tif (property === \"getAvailableThinkingLevels\")\n\t\t\t\treturn () => transportCall(\"getAvailableThinkingLevels\", () => client.getAvailableThinkingLevels(), []);\n\t\t\tif (property === \"setSteeringMode\")\n\t\t\t\treturn (mode: AgentSession[\"steeringMode\"]) =>\n\t\t\t\t\tvoid client.setSteeringMode(mode).catch(reportActionFailure(\"setSteeringMode\"));\n\t\t\tif (property === \"setFollowUpMode\")\n\t\t\t\treturn (mode: AgentSession[\"followUpMode\"]) =>\n\t\t\t\t\tvoid client.setFollowUpMode(mode).catch(reportActionFailure(\"setFollowUpMode\"));\n\t\t\tif (property === \"compact\")\n\t\t\t\treturn (instructions?: string) => transportCall(\"compact\", () => client.compact(instructions));\n\t\t\tif (property === \"setAutoCompactionEnabled\")\n\t\t\t\treturn (enabled: boolean) =>\n\t\t\t\t\tvoid client.setAutoCompaction(enabled).catch(reportActionFailure(\"setAutoCompaction\"));\n\t\t\tif (property === \"executeBash\")\n\t\t\t\treturn async (\n\t\t\t\t\tcommand: string,\n\t\t\t\t\tonChunk?: (chunk: string) => void | PromiseLike<void>,\n\t\t\t\t\toptions?: { excludeFromContext?: boolean; operations?: BashOperations | Record<string, unknown> },\n\t\t\t\t) => {\n\t\t\t\t\tif (options?.operations && typeof options.operations.exec === \"function\") {\n\t\t\t\t\t\tconst abortController = new AbortController();\n\t\t\t\t\t\tlocalBashAbortController = abortController;\n\t\t\t\t\t\tlocalBashRunning = true;\n\t\t\t\t\t\tupdateBashState();\n\t\t\t\t\t\tconst sessionAtStart = state.sessionId;\n\t\t\t\t\t\tconst prefix = settingsManager.getShellCommandPrefix();\n\t\t\t\t\t\tconst resolvedCommand = prefix ? `${prefix}\\n${command}` : command;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst result = await executeBashWithOperations(\n\t\t\t\t\t\t\t\tresolvedCommand,\n\t\t\t\t\t\t\t\tstate.cwd,\n\t\t\t\t\t\t\t\toptions.operations as BashOperations,\n\t\t\t\t\t\t\t\t{ onChunk, signal: abortController.signal },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (state.sessionId === sessionAtStart) {\n\t\t\t\t\t\t\t\tawait transportCall(\"recordBashResult\", () =>\n\t\t\t\t\t\t\t\t\tclient.recordBashResult(command, result, options.excludeFromContext),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tlocalBashAbortController = undefined;\n\t\t\t\t\t\t\tlocalBashRunning = false;\n\t\t\t\t\t\t\tupdateBashState();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst executionId = `bash-${executionNamespace}-${++nextBashExecutionId}`;\n\t\t\t\t\tconst execution = {\n\t\t\t\t\t\tchunk: onChunk,\n\t\t\t\t\t\tpromises: new Set<Promise<void>>(),\n\t\t\t\t\t\terror: undefined as unknown,\n\t\t\t\t\t\thasError: false,\n\t\t\t\t\t};\n\t\t\t\t\tbashExecutions.set(executionId, execution);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await transportCall(\n\t\t\t\t\t\t\t\"bash\",\n\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\tclient.bash(command, {\n\t\t\t\t\t\t\t\t\texcludeFromContext: options?.excludeFromContext,\n\t\t\t\t\t\t\t\t\texecutionId,\n\t\t\t\t\t\t\t\t\toperations: options?.operations as Record<string, unknown> | undefined,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{ output: \"\", exitCode: undefined, cancelled: true, truncated: false },\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst callbacksSettled = await waitForBashCallbacks(execution.promises, false);\n\t\t\t\t\t\tif (!callbacksSettled) {\n\t\t\t\t\t\t\tif (result.fullOutputPath) await cleanupRemoteBashOutput(result.fullOutputPath);\n\t\t\t\t\t\t\tthrow new Error(\"Bash output callback did not settle within 5000ms\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (execution.hasError) {\n\t\t\t\t\t\t\tif (result.fullOutputPath) await cleanupRemoteBashOutput(result.fullOutputPath);\n\t\t\t\t\t\t\tthrow execution.error;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tbashExecutions.delete(executionId);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\tif (property === \"abortBash\")\n\t\t\t\treturn () => {\n\t\t\t\t\tif (localBashAbortController) localBashAbortController.abort();\n\t\t\t\t\telse void client.abortBash().catch(reportActionFailure(\"abortBash\"));\n\t\t\t\t};\n\t\t\tif (property === \"getContextUsage\") return () => state.contextUsage;\n\t\t\tif (property === \"getSessionStats\")\n\t\t\t\treturn () => transportCall(\"getSessionStats\", () => client.getSessionStats(), local.getSessionStats());\n\t\t\tif (property === \"exportToHtml\")\n\t\t\t\treturn (outputPath?: string, options?: { themeName?: string }) =>\n\t\t\t\t\ttransportCall(\"exportToHtml\", () => client.exportHtml(outputPath, options?.themeName)).then(\n\t\t\t\t\t\t(result) => result?.path,\n\t\t\t\t\t);\n\t\t\tif (property === \"setSessionName\")\n\t\t\t\treturn (name: string) => client.setSessionName(name).catch(reportActionFailure(\"setSessionName\"));\n\t\t\tif (property === \"navigateTree\")\n\t\t\t\treturn async (targetId: string, options?: Parameters<AgentSession[\"navigateTree\"]>[1]) => {\n\t\t\t\t\tconst result = await transportCall(\"navigateTree\", () => client.navigateTree(targetId, options), {\n\t\t\t\t\t\tcancelled: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (!result.cancelled) await refresh();\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\tif (property === \"getUserMessagesForForking\")\n\t\t\t\treturn () => transportCall(\"getUserMessagesForForking\", () => client.getForkMessages(), []);\n\t\t\tif (property === \"subscribe\")\n\t\t\t\treturn (listener: AgentSessionEventListener) => {\n\t\t\t\t\tlisteners.add(listener);\n\t\t\t\t\tconst localUnsubscribe = target.subscribe(listener);\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tlisteners.delete(listener);\n\t\t\t\t\t\tlocalUnsubscribe();\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\tif (property === \"isStreaming\") return state.isStreaming;\n\t\t\tif (property === \"isIdle\") return !state.isStreaming;\n\t\t\tif (property === \"isCompacting\") return state.isCompacting;\n\t\t\tif (property === \"pendingMessageCount\") return state.pendingMessageCount;\n\t\t\tif (property === \"getSteeringMessages\") return () => state.steering;\n\t\t\tif (property === \"getFollowUpMessages\") return () => state.followUp;\n\t\t\tif (property === \"clearQueue\")\n\t\t\t\treturn (options?: { abortWillFollow: boolean }) => {\n\t\t\t\t\tconst result = {\n\t\t\t\t\t\tsteering: [...state.steering],\n\t\t\t\t\t\tfollowUp: [...state.followUp],\n\t\t\t\t\t\tordered: [...state.ordered],\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(result, \"ordered\", { value: result.ordered, enumerable: false });\n\t\t\t\t\tvoid client.clearQueue(options).catch(reportActionFailure(\"clearQueue\"));\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\tif (property === \"abortBranchSummary\")\n\t\t\t\treturn () => void client.abortBranchSummary().catch(reportActionFailure(\"abortBranchSummary\"));\n\t\t\tif (property === \"recordBashResult\")\n\t\t\t\treturn (\n\t\t\t\t\tcommand: string,\n\t\t\t\t\tresult: Parameters<AgentSession[\"recordBashResult\"]>[1],\n\t\t\t\t\toptions?: { excludeFromContext?: boolean },\n\t\t\t\t) =>\n\t\t\t\t\tvoid client\n\t\t\t\t\t\t.recordBashResult(command, result, options?.excludeFromContext)\n\t\t\t\t\t\t.catch(reportActionFailure(\"recordBashResult\"));\n\t\t\tif (property === \"set_label\") return undefined;\n\t\t\tif (property === \"retryAttempt\") return state.retryAttempt;\n\t\t\tif (property === \"isBashRunning\") return state.isBashRunning;\n\t\t\tif (property === \"reload\")\n\t\t\t\treturn (_options?: Parameters<AgentSession[\"reload\"]>[0]) =>\n\t\t\t\t\ttransportCall(\"reload\", () => client.reload(), { cancelled: true });\n\t\t\tif (property === \"checkReloadVeto\")\n\t\t\t\treturn () => transportCall(\"checkReloadVeto\", () => client.checkReloadVeto(), { cancelled: true });\n\t\t\tif (property === \"exportToJsonl\")\n\t\t\t\treturn (outputPath?: string) =>\n\t\t\t\t\ttransportCall(\"exportToJsonl\", () => client.exportJsonl(outputPath)).then((result) => result?.path);\n\t\t\t// The footer and other renderers read session.state.*; surface the\n\t\t\t// host-authoritative fields there too, not only via the direct getters.\n\t\t\tif (property === \"state\") {\n\t\t\t\tconst localState = target.state;\n\t\t\t\treturn {\n\t\t\t\t\t...localState,\n\t\t\t\t\tmodel: state.model ?? localState.model,\n\t\t\t\t\tthinkingLevel: state.thinkingLevel,\n\t\t\t\t\tisStreaming: state.isStreaming,\n\t\t\t\t\tisCompacting: state.isCompacting,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (property === \"sessionFile\") return state.sessionFile;\n\t\t\tif (property === \"sessionId\") return state.sessionId;\n\t\t\tif (property === \"sessionName\") return state.sessionName;\n\t\t\tif (property === \"serviceTier\") return state.serviceTier;\n\t\t\tif (property === \"steeringMode\") return state.steeringMode;\n\t\t\tif (property === \"followUpMode\") return state.followUpMode;\n\t\t\tif (property === \"autoCompactionEnabled\") return state.autoCompactionEnabled;\n\t\t\tif (property === \"isFastModeActive\") return () => state.fastMode;\n\t\t\tif (property === \"sessionManager\") return remoteSessionManager;\n\t\t\tif (property === \"settingsManager\") return settingsManager;\n\t\t\tif (property === \"messages\") return target.messages;\n\t\t\tif (property === \"favoriteModels\") return state.favoriteModels;\n\t\t\tif (property === \"scopedModels\") return state.scopedModels;\n\t\t\tif (property === \"model\") return state.model ?? target.model;\n\t\t\tif (property === \"thinkingLevel\") return state.thinkingLevel;\n\t\t\treturn Reflect.get(target, property, receiver);\n\t\t},\n\t});\n\treturn {\n\t\tsession,\n\t\tsetHostUiHandler: (callback) => {\n\t\t\thostUiHandler = callback;\n\t\t\tif (callback)\n\t\t\t\tfor (const request of pendingUiRequests.splice(0))\n\t\t\t\t\tvoid Promise.resolve(callback(request))\n\t\t\t\t\t\t.then((response) => response && client.sendExtensionUIResponse(response))\n\t\t\t\t\t\t.catch(reportActionFailure(\"host UI response\"));\n\t\t},\n\t\trefresh,\n\t\taroundLocalReplacement: async (body) => {\n\t\t\tlocalReplacementDepth++;\n\t\t\ttry {\n\t\t\t\treturn await body();\n\t\t\t} finally {\n\t\t\t\tlocalReplacementDepth--;\n\t\t\t}\n\t\t},\n\t\tabortLocalBash: () => localBashAbortController?.abort(),\n\t\tcreateReplacedSessionContext: () => {\n\t\t\tconst context = local.createReplacedSessionContext();\n\t\t\tObject.defineProperty(context, \"cwd\", { value: state.cwd });\n\t\t\tObject.defineProperty(context, \"sessionManager\", { value: remoteSessionManager });\n\t\t\tcontext.sendMessage = (message, options) =>\n\t\t\t\ttransportCall(\"sendMessage\", () =>\n\t\t\t\t\tclient.sendCustomMessage(message, {\n\t\t\t\t\t\ttriggerTurn: options?.triggerTurn,\n\t\t\t\t\t\tdeliverAs: options?.deliverAs,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\tcontext.sendUserMessage = (content, options) => {\n\t\t\t\tif (typeof content === \"string\")\n\t\t\t\t\treturn transportCall(\"sendUserMessage\", () =>\n\t\t\t\t\t\tclient.prompt(content, {\n\t\t\t\t\t\t\tstreamingBehavior: options?.deliverAs,\n\t\t\t\t\t\t\texpandPromptTemplates: options?.expandPromptTemplates,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\tconst text = content\n\t\t\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t\t\t.map((part) => part.text)\n\t\t\t\t\t.join(\"\\n\");\n\t\t\t\tconst images = content.filter((part) => part.type === \"image\");\n\t\t\t\treturn transportCall(\"sendUserMessage\", () =>\n\t\t\t\t\tclient.prompt(text, {\n\t\t\t\t\t\timages,\n\t\t\t\t\t\tstreamingBehavior: options?.deliverAs,\n\t\t\t\t\t\texpandPromptTemplates: options?.expandPromptTemplates,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t};\n\t\t\treturn context;\n\t\t},\n\t};\n}\n\nfunction hydrateMessageUpdate(\n\tevent: RpcClientEvent,\n\tstreamingAssistant: Extract<AgentSession[\"messages\"][number], { role: \"assistant\" }> | undefined,\n): AgentSessionEvent {\n\tif (event.type !== \"message_update\" || !streamingAssistant) return event as unknown as AgentSessionEvent;\n\tconst update = event.assistantMessageEvent;\n\tif (update.type !== \"text_delta\" && update.type !== \"thinking_delta\" && update.type !== \"toolcall_delta\") {\n\t\treturn event as unknown as AgentSessionEvent;\n\t}\n\tconst content = streamingAssistant.content[update.contentIndex];\n\tif (update.type === \"text_delta\" && content?.type === \"text\") content.text += update.delta;\n\tif (update.type === \"thinking_delta\" && content?.type === \"thinking\") content.thinking += update.delta;\n\tif (update.type === \"toolcall_delta\" && content?.type === \"toolCall\") {\n\t\tconst raw = JSON.stringify(content.arguments) + update.delta;\n\t\ttry {\n\t\t\tconst parsed: unknown = JSON.parse(raw);\n\t\t\tif (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n\t\t\t\tcontent.arguments = parsed as Record<string, unknown>;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Keep the last valid arguments until the next complete update.\n\t\t}\n\t}\n\tstreamingAssistant.usage = event.usage;\n\treturn {\n\t\ttype: \"message_update\",\n\t\tmessage: structuredClone(streamingAssistant),\n\t\tassistantMessageEvent: { ...update, partial: structuredClone(streamingAssistant) },\n\t} as AgentSessionEvent;\n}\n\nfunction stateFromRpc(state: {\n\tmodel?: AgentSession[\"model\"];\n\tthinkingLevel: AgentSession[\"thinkingLevel\"];\n\tisStreaming: boolean;\n\tisCompacting: boolean;\n\tpendingMessageCount: number;\n\tusageTotals: import(\"../../core/session-manager.ts\").UsageTotals;\n\tcontextUsage?: import(\"../../core/extensions/types.ts\").ContextUsage;\n\tretryAttempt: number;\n\tisBashRunning: boolean;\n\tsessionFile?: string;\n\tsessionId: string;\n\tsessionName?: string;\n\tcwd: string;\n\tprojectTrusted: boolean;\n\tserviceTier?: AgentSession[\"serviceTier\"];\n\tfastMode: boolean;\n\tsteeringMode: AgentSession[\"steeringMode\"];\n\tfollowUpMode: AgentSession[\"followUpMode\"];\n\tautoCompactionEnabled: boolean;\n\tentries?: import(\"../../core/session-manager.ts\").SessionEntry[];\n\tfavoriteModels: import(\"../rpc/rpc-types.ts\").RpcSessionModelEntry[];\n\tscopedModels: import(\"../rpc/rpc-types.ts\").RpcSessionModelEntry[];\n\tsteering: string[];\n\tfollowUp: string[];\n\tordered: Array<{ text: string; mode: \"steer\" | \"followUp\"; enqueueOrder: number }>;\n}) {\n\treturn state;\n}\n\nexport function isInteractiveHostEvent(event: RpcClientEvent): event is Extract<RpcClientEvent, { type: string }> {\n\treturn typeof event === \"object\" && event !== null && \"type\" in event;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -431,6 +431,16 @@ async function attachClipboardImage(deps, image) {
|
|
|
431
431
|
deps.requestRender();
|
|
432
432
|
return true;
|
|
433
433
|
}
|
|
434
|
+
function linesFactory(lines) {
|
|
435
|
+
if (lines === undefined)
|
|
436
|
+
return undefined;
|
|
437
|
+
return () => {
|
|
438
|
+
const container = new Container();
|
|
439
|
+
for (const line of lines)
|
|
440
|
+
container.addChild(new Text(line, 1, 0));
|
|
441
|
+
return container;
|
|
442
|
+
};
|
|
443
|
+
}
|
|
434
444
|
/** Composition root for selecting the interactive terminal renderer. */
|
|
435
445
|
export function createInteractiveTui(options) {
|
|
436
446
|
const terminal = options.terminal ?? new ProcessTerminal({ onExternalStdoutWrite: appendHiddenTuiStdout });
|
|
@@ -1028,6 +1038,7 @@ export class InteractiveMode {
|
|
|
1028
1038
|
throw error;
|
|
1029
1039
|
}
|
|
1030
1040
|
this.isInitialized = true;
|
|
1041
|
+
this.runtimeHost?.setClientInfo?.(this.ui.terminal.columns);
|
|
1031
1042
|
await this.themeController.applyFromSettings();
|
|
1032
1043
|
// Add header with keybindings from config (unless silenced)
|
|
1033
1044
|
if (this.chrome) {
|
|
@@ -2172,6 +2183,12 @@ export class InteractiveMode {
|
|
|
2172
2183
|
placement: request.widgetPlacement,
|
|
2173
2184
|
});
|
|
2174
2185
|
return undefined;
|
|
2186
|
+
case "setHeader":
|
|
2187
|
+
this.setExtensionHeader(linesFactory(request.widgetLines));
|
|
2188
|
+
return undefined;
|
|
2189
|
+
case "setFooter":
|
|
2190
|
+
this.setExtensionFooter(linesFactory(request.widgetLines));
|
|
2191
|
+
return undefined;
|
|
2175
2192
|
case "custom_unsupported":
|
|
2176
2193
|
this.showExtensionNotify(`${request.extensionName ?? "This extension"} requires the classic TUI; its component widget cannot be rendered in the shared host.`, "warning");
|
|
2177
2194
|
return undefined;
|
|
@@ -4718,6 +4735,13 @@ export class InteractiveMode {
|
|
|
4718
4735
|
if (process.platform !== "win32") {
|
|
4719
4736
|
signals.push("SIGHUP");
|
|
4720
4737
|
}
|
|
4738
|
+
if (process.platform !== "win32") {
|
|
4739
|
+
const resizeHandler = () => {
|
|
4740
|
+
this.runtimeHost?.setClientInfo?.(this.ui.terminal.columns);
|
|
4741
|
+
};
|
|
4742
|
+
process.on("SIGWINCH", resizeHandler);
|
|
4743
|
+
this.signalCleanupHandlers.push(() => process.off("SIGWINCH", resizeHandler));
|
|
4744
|
+
}
|
|
4721
4745
|
for (const signal of signals) {
|
|
4722
4746
|
const handler = () => {
|
|
4723
4747
|
// SIGHUP no longer hard-exits: graceful shutdown emits session_shutdown
|