@dyyz1993/pi-coding-agent 0.74.45 → 0.74.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-mode.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-mode.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * RPC mode: Headless operation with JSON stdin/stdout protocol.\n *\n * Used for embedding the agent in other applications.\n * Receives commands as JSON on stdin, outputs events and responses as JSON on stdout.\n *\n * Protocol:\n * - Commands: JSON objects with `type` field, optional `id` for correlation\n * - Responses: JSON objects with `type: \"response\"`, `command`, `success`, and optional `data`/`error`\n * - Events: AgentSessionEvent objects streamed as they occur\n * - Extension UI: Extension UI requests are emitted, client responds with extension_ui_response\n */\n\nimport * as crypto from \"node:crypto\";\nimport type { AgentMessage } from \"@dyyz1993/pi-agent-core\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.js\";\nimport { discoverAgents, getBuiltinAgents } from \"../../core/agent-types.js\";\nimport { DEFAULT_TIER_ALIASES } from \"../../core/defaults.js\";\nimport { ChannelManager } from \"../../core/extensions/channel-manager.js\";\nimport type { ChannelDataMessage } from \"../../core/extensions/channel-types.js\";\nimport type {\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tWorkingIndicatorOptions,\n} from \"../../core/extensions/index.js\";\nimport { resolveModelAlias } from \"../../core/model-resolver.js\";\nimport { takeOverStdout, writeRawStdout } from \"../../core/output-guard.js\";\nimport { killTrackedDetachedChildren } from \"../../utils/shell.js\";\nimport { type Theme, theme } from \"../interactive/theme/theme.js\";\nimport { attachJsonlLineReader, serializeJsonLine } from \"./jsonl.js\";\nimport type {\n\tRpcCommand,\n\tRpcExtension,\n\tRpcExtensionUIRequest,\n\tRpcExtensionUIResponse,\n\tRpcMcpServer,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcSkill,\n\tRpcSlashCommand,\n\tRpcTool,\n} from \"./rpc-types.js\";\n\n// Re-export types for consumers\nexport type {\n\tRpcCommand,\n\tRpcExtension,\n\tRpcExtensionUIRequest,\n\tRpcExtensionUIResponse,\n\tRpcMcpServer,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcSkill,\n\tRpcSlashCommand,\n\tRpcTool,\n} from \"./rpc-types.js\";\n\n/**\n * Run in RPC mode.\n * Listens for JSON commands on stdin, outputs events and responses on stdout.\n */\nexport async function runRpcMode(runtimeHost: AgentSessionRuntime): Promise<never> {\n\ttakeOverStdout();\n\tlet session = runtimeHost.session;\n\tlet unsubscribe: (() => void) | undefined;\n\n\tconst output = (obj: RpcResponse | RpcExtensionUIRequest | object) => {\n\t\twriteRawStdout(serializeJsonLine(obj));\n\t};\n\n\tconst channelManager = new ChannelManager((message: ChannelDataMessage) => {\n\t\toutput(message);\n\t});\n\n\tconst success = <T extends RpcCommand[\"type\"]>(\n\t\tid: string | undefined,\n\t\tcommand: T,\n\t\tdata?: object | null,\n\t): RpcResponse => {\n\t\tif (data === undefined) {\n\t\t\treturn { id, type: \"response\", command, success: true } as RpcResponse;\n\t\t}\n\t\treturn { id, type: \"response\", command, success: true, data } as RpcResponse;\n\t};\n\n\tconst error = (id: string | undefined, command: string, message: string): RpcResponse => {\n\t\treturn { id, type: \"response\", command, success: false, error: message };\n\t};\n\n\t// Pending extension UI requests waiting for response\n\tconst pendingExtensionRequests = new Map<\n\t\tstring,\n\t\t{ resolve: (value: any) => void; reject: (error: Error) => void }\n\t>();\n\n\t// Shutdown request flag\n\tlet shutdownRequested = false;\n\tlet shuttingDown = false;\n\tconst signalCleanupHandlers: Array<() => void> = [];\n\n\t/** Helper for dialog methods with signal/timeout support */\n\tfunction createDialogPromise<T>(\n\t\topts: ExtensionUIDialogOptions | undefined,\n\t\tdefaultValue: T,\n\t\trequest: Record<string, unknown>,\n\t\tparseResponse: (response: RpcExtensionUIResponse) => T,\n\t): Promise<T> {\n\t\tif (opts?.signal?.aborted) return Promise.resolve(defaultValue);\n\n\t\tconst id = crypto.randomUUID();\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n\t\t\tconst cleanup = () => {\n\t\t\t\tif (timeoutId) clearTimeout(timeoutId);\n\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\tpendingExtensionRequests.delete(id);\n\t\t\t};\n\n\t\t\tconst onAbort = () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(defaultValue);\n\t\t\t};\n\t\t\topts?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\t\t\tif (opts?.timeout) {\n\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\tcleanup();\n\t\t\t\t\tresolve(defaultValue);\n\t\t\t\t}, opts.timeout);\n\t\t\t}\n\n\t\t\tpendingExtensionRequests.set(id, {\n\t\t\t\tresolve: (response: RpcExtensionUIResponse) => {\n\t\t\t\t\tcleanup();\n\t\t\t\t\tresolve(parseResponse(response));\n\t\t\t\t},\n\t\t\t\treject,\n\t\t\t});\n\t\t\toutput({ type: \"extension_ui_request\", id, ...request } as RpcExtensionUIRequest);\n\t\t});\n\t}\n\n\t/**\n\t * Create an extension UI context that uses the RPC protocol.\n\t */\n\tconst createExtensionUIContext = (): ExtensionUIContext => ({\n\t\tselect: (title, options, opts) =>\n\t\t\tcreateDialogPromise(\n\t\t\t\topts,\n\t\t\t\tundefined,\n\t\t\t\t{ method: \"select\", title, options, multiple: opts?.multiple, timeout: opts?.timeout },\n\t\t\t\t(r) => (\"cancelled\" in r && r.cancelled ? undefined : \"value\" in r ? r.value : undefined),\n\t\t\t),\n\n\t\tconfirm: (title, message, opts) =>\n\t\t\tcreateDialogPromise(opts, false, { method: \"confirm\", title, message, timeout: opts?.timeout }, (r) =>\n\t\t\t\t\"cancelled\" in r && r.cancelled ? false : \"confirmed\" in r ? r.confirmed : false,\n\t\t\t),\n\n\t\tinput: (title, placeholder, opts) =>\n\t\t\tcreateDialogPromise(opts, undefined, { method: \"input\", title, placeholder, timeout: opts?.timeout }, (r) =>\n\t\t\t\t\"cancelled\" in r && r.cancelled ? undefined : \"value\" in r ? r.value : undefined,\n\t\t\t),\n\n\t\tnotify(message: string, type?: \"info\" | \"warning\" | \"error\"): void {\n\t\t\t// Fire and forget - no response needed\n\t\t\toutput({\n\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tmethod: \"notify\",\n\t\t\t\tmessage,\n\t\t\t\tnotifyType: type,\n\t\t\t} as RpcExtensionUIRequest);\n\t\t},\n\n\t\tonTerminalInput(): () => void {\n\t\t\t// Raw terminal input not supported in RPC mode\n\t\t\treturn () => {};\n\t\t},\n\n\t\tsetStatus(key: string, text: string | undefined): void {\n\t\t\t// Fire and forget - no response needed\n\t\t\toutput({\n\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tmethod: \"setStatus\",\n\t\t\t\tstatusKey: key,\n\t\t\t\tstatusText: text,\n\t\t\t} as RpcExtensionUIRequest);\n\t\t},\n\n\t\tsetWorkingMessage(_message?: string): void {\n\t\t\t// Working message not supported in RPC mode - requires TUI loader access\n\t\t},\n\n\t\tsetWorkingVisible(_visible: boolean): void {\n\t\t\t// Working visibility not supported in RPC mode - requires TUI loader access\n\t\t},\n\n\t\tsetWorkingIndicator(_options?: WorkingIndicatorOptions): void {\n\t\t\t// Working indicator customization not supported in RPC mode - requires TUI loader access\n\t\t},\n\n\t\tsetHiddenThinkingLabel(_label?: string): void {\n\t\t\t// Hidden thinking label not supported in RPC mode - requires TUI message rendering access\n\t\t},\n\n\t\tsetWidget(key: string, content: unknown, options?: ExtensionWidgetOptions): void {\n\t\t\t// Only support string arrays in RPC mode - factory functions are ignored\n\t\t\tif (content === undefined || Array.isArray(content)) {\n\t\t\t\toutput({\n\t\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\tmethod: \"setWidget\",\n\t\t\t\t\twidgetKey: key,\n\t\t\t\t\twidgetLines: content as string[] | undefined,\n\t\t\t\t\twidgetPlacement: options?.placement,\n\t\t\t\t} as RpcExtensionUIRequest);\n\t\t\t}\n\t\t\t// Component factories are not supported in RPC mode - would need TUI access\n\t\t},\n\n\t\tsetFooter(_factory: unknown): void {\n\t\t\t// Custom footer not supported in RPC mode - requires TUI access\n\t\t},\n\n\t\tsetHeader(_factory: unknown): void {\n\t\t\t// Custom header not supported in RPC mode - requires TUI access\n\t\t},\n\n\t\tsetTitle(title: string): void {\n\t\t\t// Fire and forget - host can implement terminal title control\n\t\t\toutput({\n\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tmethod: \"setTitle\",\n\t\t\t\ttitle,\n\t\t\t} as RpcExtensionUIRequest);\n\t\t},\n\n\t\tasync custom() {\n\t\t\t// Custom UI not supported in RPC mode\n\t\t\treturn undefined as never;\n\t\t},\n\n\t\tpasteToEditor(text: string): void {\n\t\t\t// Paste handling not supported in RPC mode - falls back to setEditorText\n\t\t\tthis.setEditorText(text);\n\t\t},\n\n\t\tsetEditorText(text: string): void {\n\t\t\t// Fire and forget - host can implement editor control\n\t\t\toutput({\n\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tmethod: \"set_editor_text\",\n\t\t\t\ttext,\n\t\t\t} as RpcExtensionUIRequest);\n\t\t},\n\n\t\tgetEditorText(): string {\n\t\t\t// Synchronous method can't wait for RPC response\n\t\t\t// Host should track editor state locally if needed\n\t\t\treturn \"\";\n\t\t},\n\n\t\tasync editor(title: string, prefill?: string): Promise<string | undefined> {\n\t\t\tconst id = crypto.randomUUID();\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tpendingExtensionRequests.set(id, {\n\t\t\t\t\tresolve: (response: RpcExtensionUIResponse) => {\n\t\t\t\t\t\tif (\"cancelled\" in response && response.cancelled) {\n\t\t\t\t\t\t\tresolve(undefined);\n\t\t\t\t\t\t} else if (\"value\" in response) {\n\t\t\t\t\t\t\tresolve(response.value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\treject,\n\t\t\t\t});\n\t\t\t\toutput({ type: \"extension_ui_request\", id, method: \"editor\", title, prefill } as RpcExtensionUIRequest);\n\t\t\t});\n\t\t},\n\n\t\taddAutocompleteProvider(): void {\n\t\t\t// Autocomplete provider composition is not supported in RPC mode\n\t\t},\n\n\t\tsetEditorComponent(): void {\n\t\t\t// Custom editor components not supported in RPC mode\n\t\t},\n\n\t\tgetEditorComponent() {\n\t\t\t// Custom editor components not supported in RPC mode\n\t\t\treturn undefined;\n\t\t},\n\n\t\tget theme() {\n\t\t\treturn theme;\n\t\t},\n\n\t\tgetAllThemes() {\n\t\t\treturn [];\n\t\t},\n\n\t\tgetTheme(_name: string) {\n\t\t\treturn undefined;\n\t\t},\n\n\t\tsetTheme(_theme: string | Theme) {\n\t\t\t// Theme switching not supported in RPC mode\n\t\t\treturn { success: false, error: \"Theme switching not supported in RPC mode\" };\n\t\t},\n\n\t\tgetToolsExpanded() {\n\t\t\t// Tool expansion not supported in RPC mode - no TUI\n\t\t\treturn false;\n\t\t},\n\n\t\tsetToolsExpanded(_expanded: boolean) {\n\t\t\t// Tool expansion not supported in RPC mode - no TUI\n\t\t},\n\t});\n\n\truntimeHost.setRebindSession(async () => {\n\t\tawait rebindSession();\n\t});\n\n\tlet rebindDone: Promise<void>;\n\tconst rebindSession = async (): Promise<void> => {\n\t\tsession = runtimeHost.session;\n\t\tawait session.bindExtensions({\n\t\t\tuiContext: createExtensionUIContext(),\n\t\t\tcommandContextActions: {\n\t\t\t\twaitForIdle: () => session.agent.waitForIdle(),\n\t\t\t\tnewSession: async (options) => runtimeHost.newSession(options),\n\t\t\t\tfork: async (entryId, forkOptions) => {\n\t\t\t\t\tconst result = await runtimeHost.fork(entryId, forkOptions);\n\t\t\t\t\treturn { cancelled: result.cancelled };\n\t\t\t\t},\n\t\t\t\tnavigateTree: async (targetId, options) => {\n\t\t\t\t\tconst result = await session.navigateTree(targetId, {\n\t\t\t\t\t\tsummarize: options?.summarize,\n\t\t\t\t\t\tcustomInstructions: options?.customInstructions,\n\t\t\t\t\t\treplaceInstructions: options?.replaceInstructions,\n\t\t\t\t\t\tlabel: options?.label,\n\t\t\t\t\t});\n\t\t\t\t\treturn { cancelled: result.cancelled };\n\t\t\t\t},\n\t\t\t\tswitchSession: async (sessionPath, options) => {\n\t\t\t\t\treturn runtimeHost.switchSession(sessionPath, options);\n\t\t\t\t},\n\t\t\t\treload: async () => {\n\t\t\t\t\tawait session.reload();\n\t\t\t\t},\n\t\t\t},\n\t\t\tshutdownHandler: () => {\n\t\t\t\tshutdownRequested = true;\n\t\t\t},\n\t\t\tonError: (err) => {\n\t\t\t\toutput({ type: \"extension_error\", extensionPath: err.extensionPath, event: err.event, error: err.error });\n\t\t\t},\n\t\t\tregisterChannel: (name: string) => channelManager.register(name),\n\t\t});\n\n\t\tunsubscribe?.();\n\t\tunsubscribe = session.subscribe((event) => {\n\t\t\toutput(event);\n\t\t});\n\t};\n\n\tconst registerSignalHandlers = (): void => {\n\t\tconst signals: NodeJS.Signals[] = [\"SIGTERM\"];\n\t\tif (process.platform !== \"win32\") {\n\t\t\tsignals.push(\"SIGHUP\");\n\t\t}\n\n\t\tfor (const signal of signals) {\n\t\t\tconst handler = () => {\n\t\t\t\tkillTrackedDetachedChildren();\n\t\t\t\tvoid shutdown(signal === \"SIGHUP\" ? 129 : 143);\n\t\t\t};\n\t\t\tprocess.on(signal, handler);\n\t\t\tsignalCleanupHandlers.push(() => process.off(signal, handler));\n\t\t}\n\t};\n\n\trebindDone = rebindSession();\n\tregisterSignalHandlers();\n\toutput({ type: \"ready\" });\n\n\t// Handle a single command\n\tconst handleCommand = async (command: RpcCommand): Promise<RpcResponse | undefined> => {\n\t\tawait rebindDone;\n\t\tconst id = command.id;\n\n\t\tswitch (command.type) {\n\t\t\t// =================================================================\n\t\t\t// Prompting\n\t\t\t// =================================================================\n\n\t\t\tcase \"prompt\": {\n\t\t\t\t// Start prompt handling immediately, but emit the authoritative response only after\n\t\t\t\t// prompt preflight succeeds. Queued and immediately handled prompts also count as success.\n\t\t\t\tlet preflightSucceeded = false;\n\t\t\t\tvoid session\n\t\t\t\t\t.prompt(command.message, {\n\t\t\t\t\t\timages: command.images,\n\t\t\t\t\t\tstreamingBehavior: command.streamingBehavior,\n\t\t\t\t\t\tsource: \"rpc\",\n\t\t\t\t\t\tpreflightResult: (didSucceed) => {\n\t\t\t\t\t\t\tif (didSucceed) {\n\t\t\t\t\t\t\t\tpreflightSucceeded = true;\n\t\t\t\t\t\t\t\toutput(success(id, \"prompt\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\tif (!preflightSucceeded) {\n\t\t\t\t\t\t\toutput(error(id, \"prompt\", e.message));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcase \"steer\": {\n\t\t\t\tawait session.steer(command.message, command.images);\n\t\t\t\treturn success(id, \"steer\");\n\t\t\t}\n\n\t\t\tcase \"follow_up\": {\n\t\t\t\tawait session.followUp(command.message, command.images);\n\t\t\t\treturn success(id, \"follow_up\");\n\t\t\t}\n\n\t\t\tcase \"abort\": {\n\t\t\t\tawait session.abort();\n\t\t\t\treturn success(id, \"abort\");\n\t\t\t}\n\n\t\t\tcase \"new_session\": {\n\t\t\t\tconst options = command.parentSession ? { parentSession: command.parentSession } : undefined;\n\t\t\t\tconst result = await runtimeHost.newSession(options);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn success(id, \"new_session\", result);\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// State\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_state\": {\n\t\t\t\tconst state: RpcSessionState = {\n\t\t\t\t\tmodel: session.model,\n\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\tisStreaming: session.isStreaming,\n\t\t\t\t\tisCompacting: session.isCompacting,\n\t\t\t\t\tsteeringMode: session.steeringMode,\n\t\t\t\t\tfollowUpMode: session.followUpMode,\n\t\t\t\t\tsessionFile: session.sessionFile,\n\t\t\t\t\tsessionId: session.sessionId,\n\t\t\t\t\tsessionName: session.sessionName,\n\t\t\t\t\tautoCompactionEnabled: session.autoCompactionEnabled,\n\t\t\t\t\tmessageCount: session.messages.length,\n\t\t\t\t\tpendingMessageCount: session.pendingMessageCount,\n\t\t\t\t};\n\t\t\t\treturn success(id, \"get_state\", state);\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Model\n\t\t\t// =================================================================\n\n\t\t\tcase \"set_model\": {\n\t\t\t\tlet provider = command.provider;\n\t\t\t\tlet modelId = command.modelId;\n\n\t\t\t\tconst tierModels = session.getTierModels();\n\t\t\t\tconst aliasTarget = resolveModelAlias(modelId, tierModels);\n\t\t\t\tif (aliasTarget) {\n\t\t\t\t\tconst slashIndex = aliasTarget.indexOf(\"/\");\n\t\t\t\t\tif (slashIndex !== -1) {\n\t\t\t\t\t\tprovider = aliasTarget.substring(0, slashIndex);\n\t\t\t\t\t\tmodelId = aliasTarget.substring(slashIndex + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmodelId = aliasTarget;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst models = await session.modelRegistry.getAvailable();\n\t\t\t\tconst model = models.find((m) => m.provider === provider && m.id === modelId);\n\t\t\t\tif (!model) {\n\t\t\t\t\treturn error(id, \"set_model\", `Model not found: ${provider}/${modelId}`);\n\t\t\t\t}\n\t\t\t\tawait session.setModel(model);\n\t\t\t\treturn success(id, \"set_model\", model);\n\t\t\t}\n\n\t\t\tcase \"cycle_model\": {\n\t\t\t\tconst result = await session.cycleModel();\n\t\t\t\tif (!result) {\n\t\t\t\t\treturn success(id, \"cycle_model\", null);\n\t\t\t\t}\n\t\t\t\treturn success(id, \"cycle_model\", result);\n\t\t\t}\n\n\t\t\tcase \"get_available_models\": {\n\t\t\t\tconst models = await session.modelRegistry.getAvailable();\n\t\t\t\treturn success(id, \"get_available_models\", { models });\n\t\t\t}\n\n\t\t\tcase \"get_tier_models\": {\n\t\t\t\tconst tierModels = session.getTierModels();\n\t\t\t\tconst merged = { ...DEFAULT_TIER_ALIASES, ...tierModels };\n\t\t\t\treturn success(id, \"get_tier_models\", { models: merged });\n\t\t\t}\n\n\t\t\tcase \"set_tier_models\": {\n\t\t\t\tconst { models } = command;\n\t\t\t\tconst validTiers = new Set([\"fast\", \"pro\", \"max\"]);\n\t\t\t\tfor (const key of Object.keys(models)) {\n\t\t\t\t\tif (!validTiers.has(key)) {\n\t\t\t\t\t\treturn error(id, \"set_tier_models\", `Invalid tier name: \"${key}\". Valid tiers are: fast, pro, max`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst mapping: Record<string, string> = {};\n\t\t\t\tif (models.fast !== undefined) mapping.fast = models.fast;\n\t\t\t\tif (models.pro !== undefined) mapping.pro = models.pro;\n\t\t\t\tif (models.max !== undefined) mapping.max = models.max;\n\t\t\t\tsession.setTierModels(mapping);\n\t\t\t\treturn success(id, \"set_tier_models\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Thinking\n\t\t\t// =================================================================\n\n\t\t\tcase \"set_thinking_level\": {\n\t\t\t\tsession.setThinkingLevel(command.level);\n\t\t\t\treturn success(id, \"set_thinking_level\");\n\t\t\t}\n\n\t\t\tcase \"cycle_thinking_level\": {\n\t\t\t\tconst level = session.cycleThinkingLevel();\n\t\t\t\tif (!level) {\n\t\t\t\t\treturn success(id, \"cycle_thinking_level\", null);\n\t\t\t\t}\n\t\t\t\treturn success(id, \"cycle_thinking_level\", { level });\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Queue Modes\n\t\t\t// =================================================================\n\n\t\t\tcase \"set_steering_mode\": {\n\t\t\t\tsession.setSteeringMode(command.mode);\n\t\t\t\treturn success(id, \"set_steering_mode\");\n\t\t\t}\n\n\t\t\tcase \"set_follow_up_mode\": {\n\t\t\t\tsession.setFollowUpMode(command.mode);\n\t\t\t\treturn success(id, \"set_follow_up_mode\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Compaction\n\t\t\t// =================================================================\n\n\t\t\tcase \"compact\": {\n\t\t\t\tconst result = await session.compact(command.customInstructions);\n\t\t\t\treturn success(id, \"compact\", result);\n\t\t\t}\n\n\t\t\tcase \"set_auto_compaction\": {\n\t\t\t\tsession.setAutoCompactionEnabled(command.enabled);\n\t\t\t\treturn success(id, \"set_auto_compaction\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Retry\n\t\t\t// =================================================================\n\n\t\t\tcase \"set_auto_retry\": {\n\t\t\t\tsession.setAutoRetryEnabled(command.enabled);\n\t\t\t\treturn success(id, \"set_auto_retry\");\n\t\t\t}\n\n\t\t\tcase \"abort_retry\": {\n\t\t\t\tsession.abortRetry();\n\t\t\t\treturn success(id, \"abort_retry\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Bash\n\t\t\t// =================================================================\n\n\t\t\tcase \"bash\": {\n\t\t\t\tconst result = await session.executeBash(command.command);\n\t\t\t\treturn success(id, \"bash\", result);\n\t\t\t}\n\n\t\t\tcase \"abort_bash\": {\n\t\t\t\tsession.abortBash();\n\t\t\t\treturn success(id, \"abort_bash\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Session\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_session_stats\": {\n\t\t\t\tconst stats = session.getSessionStats();\n\t\t\t\treturn success(id, \"get_session_stats\", stats);\n\t\t\t}\n\n\t\t\tcase \"export_html\": {\n\t\t\t\tconst path = await session.exportToHtml(command.outputPath);\n\t\t\t\treturn success(id, \"export_html\", { path });\n\t\t\t}\n\n\t\t\tcase \"switch_session\": {\n\t\t\t\tconst result = await runtimeHost.switchSession(command.sessionPath);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tsession = runtimeHost.session;\n\t\t\t\t}\n\t\t\t\treturn success(id, \"switch_session\", result);\n\t\t\t}\n\n\t\t\tcase \"fork\": {\n\t\t\t\tconst previousName = session.sessionManager.getSessionName();\n\t\t\t\tconst forkPosition = (command as any).position === \"at\" ? { position: \"at\" as const } : undefined;\n\t\t\t\tconst result = await runtimeHost.fork(command.entryId, forkPosition);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tconst newName = previousName ? `fork: ${previousName}` : \"fork\";\n\t\t\t\t\tsession = runtimeHost.session;\n\t\t\t\t\tsession.sessionManager.appendSessionInfo(newName);\n\t\t\t\t\tsession.sessionManager.flush();\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn success(id, \"fork\", {\n\t\t\t\t\ttext: result.selectedText,\n\t\t\t\t\tcancelled: result.cancelled,\n\t\t\t\t\tnewSessionFile: session.sessionManager.getSessionFile(),\n\t\t\t\t\tnewSessionId: session.sessionManager.getSessionId(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"navigate_tree\": {\n\t\t\t\tconst navResult = await session.navigateTree(command.targetId, {\n\t\t\t\t\tsummarize: command.summarize ?? false,\n\t\t\t\t\tskipFiles: command.skipFiles,\n\t\t\t\t});\n\t\t\t\treturn success(id, \"navigate_tree\", { cancelled: navResult.cancelled, reason: navResult.reason });\n\t\t\t}\n\n\t\t\tcase \"rollback_preview\": {\n\t\t\t\tconst previewResult = await session.previewRollback(command.targetId);\n\t\t\t\treturn success(id, \"rollback_preview\", previewResult);\n\t\t\t}\n\n\t\t\tcase \"clone\": {\n\t\t\t\tconst leafId = session.sessionManager.getLeafId();\n\t\t\t\tif (!leafId) {\n\t\t\t\t\treturn error(id, \"clone\", \"Cannot clone session: no current entry selected\");\n\t\t\t\t}\n\t\t\t\tconst result = await runtimeHost.fork(leafId, { position: \"at\" });\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn success(id, \"clone\", { cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"get_fork_messages\": {\n\t\t\t\tconst messages = session.getUserMessagesForForking();\n\t\t\t\treturn success(id, \"get_fork_messages\", { messages });\n\t\t\t}\n\n\t\t\tcase \"get_last_assistant_text\": {\n\t\t\t\tconst text = session.getLastAssistantText();\n\t\t\t\treturn success(id, \"get_last_assistant_text\", { text });\n\t\t\t}\n\n\t\t\tcase \"set_session_name\": {\n\t\t\t\tconst name = command.name.trim();\n\t\t\t\tif (!name) {\n\t\t\t\t\treturn error(id, \"set_session_name\", \"Session name cannot be empty\");\n\t\t\t\t}\n\t\t\t\tsession.setSessionName(name);\n\t\t\t\treturn success(id, \"set_session_name\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Messages\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_messages\": {\n\t\t\t\treturn success(id, \"get_messages\", { messages: session.messages });\n\t\t\t}\n\n\t\t\tcase \"get_full_messages\": {\n\t\t\t\tconst allEntries = session.sessionManager.getEntries();\n\t\t\t\tconst messageEntries = allEntries.filter((e) => e.type === \"message\");\n\t\t\t\tconst persistedMessages = messageEntries.map((e) => (e as { message: AgentMessage }).message);\n\t\t\t\tconst persistedSet = new Set(persistedMessages);\n\n\t\t\t\tconst memoryMessages = session.messages;\n\t\t\t\tconst unPersisted: AgentMessage[] = [];\n\t\t\t\tfor (let i = memoryMessages.length - 1; i >= 0; i--) {\n\t\t\t\t\tconst msg = memoryMessages[i];\n\t\t\t\t\tif (persistedSet.has(msg)) break;\n\t\t\t\t\tif (msg.role === \"compactionSummary\") continue;\n\t\t\t\t\tunPersisted.unshift(msg);\n\t\t\t\t}\n\n\t\t\t\tconst allMessages = [...persistedMessages, ...unPersisted];\n\t\t\t\tconst totalCount = allMessages.length;\n\n\t\t\t\tconst leafId = session.sessionManager.getLeafId();\n\n\t\t\t\tconst treeEntries = allEntries.map((e) => ({\n\t\t\t\t\tid: e.id,\n\t\t\t\t\tparentId: e.parentId,\n\t\t\t\t\ttype: e.type,\n\t\t\t\t\tlabel:\n\t\t\t\t\t\te.type === \"message\"\n\t\t\t\t\t\t\t? (e as any).message?.role\n\t\t\t\t\t\t\t: e.type === \"custom\"\n\t\t\t\t\t\t\t\t? (e as any).customType\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}));\n\n\t\t\t\tconst customEntries = allEntries\n\t\t\t\t\t.filter((e) => e.type === \"custom\")\n\t\t\t\t\t.map((e) => ({\n\t\t\t\t\t\tid: e.id,\n\t\t\t\t\t\tcustomType: (e as any).customType ?? \"unknown\",\n\t\t\t\t\t\tdata: (e as any).data,\n\t\t\t\t\t\ttimestamp: new Date(e.timestamp).getTime(),\n\t\t\t\t\t}));\n\n\t\t\t\tconst compactionEntries = allEntries\n\t\t\t\t\t.filter((e) => e.type === \"compaction\")\n\t\t\t\t\t.map((e) => ({\n\t\t\t\t\t\tid: e.id,\n\t\t\t\t\t\tsummary: (e as any).summary ?? \"\",\n\t\t\t\t\t\ttokensBefore: (e as any).tokensBefore,\n\t\t\t\t\t\ttimestamp: new Date(e.timestamp).getTime(),\n\t\t\t\t\t}));\n\n\t\t\t\tif (command.limit !== undefined) {\n\t\t\t\t\tconst limit = command.limit;\n\t\t\t\t\tlet startIndex = 0;\n\t\t\t\t\tif (command.afterEntryId) {\n\t\t\t\t\t\tconst idx = messageEntries.findIndex((e) => e.id === command.afterEntryId);\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\tstartIndex = idx + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst page = allMessages.slice(startIndex, startIndex + limit);\n\t\t\t\t\tconst hasMore = startIndex + limit < totalCount;\n\t\t\t\t\tconst lastPersisted = messageEntries[Math.min(startIndex + limit, messageEntries.length) - 1];\n\t\t\t\t\treturn success(id, \"get_full_messages\", {\n\t\t\t\t\t\tmessages: page,\n\t\t\t\t\t\thasMore,\n\t\t\t\t\t\ttotalCount,\n\t\t\t\t\t\tnextCursor: hasMore && lastPersisted ? lastPersisted.id : null,\n\t\t\t\t\t\ttree: { entries: treeEntries, leafId },\n\t\t\t\t\t\tcustomEntries,\n\t\t\t\t\t\tcompactionEntries,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn success(id, \"get_full_messages\", {\n\t\t\t\t\tmessages: allMessages,\n\t\t\t\t\thasMore: false,\n\t\t\t\t\ttotalCount,\n\t\t\t\t\tnextCursor: null,\n\t\t\t\t\ttree: { entries: treeEntries, leafId },\n\t\t\t\t\tcustomEntries,\n\t\t\t\t\tcompactionEntries,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_tree\": {\n\t\t\t\tconst entries = session.sessionManager.getEntries();\n\t\t\t\tconst treeEntries = entries.map((e) => ({\n\t\t\t\t\tid: e.id,\n\t\t\t\t\tparentId: e.parentId,\n\t\t\t\t\ttype: e.type,\n\t\t\t\t\tlabel:\n\t\t\t\t\t\te.type === \"message\"\n\t\t\t\t\t\t\t? (e as any).message?.role\n\t\t\t\t\t\t\t: e.type === \"custom\"\n\t\t\t\t\t\t\t\t? (e as any).customType\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_tree\", { entries: treeEntries, leafId: session.sessionManager.getLeafId() });\n\t\t\t}\n\t\t\tcase \"get_tree_with_leaf\": {\n\t\t\t\tconst entries = session.sessionManager.getEntries();\n\t\t\t\tconst treeEntries = entries.map((e) => ({\n\t\t\t\t\tid: e.id,\n\t\t\t\t\tparentId: e.parentId,\n\t\t\t\t\ttype: e.type,\n\t\t\t\t\tlabel:\n\t\t\t\t\t\te.type === \"message\"\n\t\t\t\t\t\t\t? (e as any).message?.role\n\t\t\t\t\t\t\t: e.type === \"custom\"\n\t\t\t\t\t\t\t\t? (e as any).customType\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_tree_with_leaf\", {\n\t\t\t\t\tentries: treeEntries,\n\t\t\t\t\tleafId: session.sessionManager.getLeafId(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Resources (skills, extensions, tools)\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_skills\": {\n\t\t\t\tconst { skills } = session.resourceLoader.getSkills();\n\t\t\t\tconst rpcSkills: RpcSkill[] = skills.map((s) => ({\n\t\t\t\t\tname: s.name,\n\t\t\t\t\tdescription: s.description,\n\t\t\t\t\tfilePath: s.filePath,\n\t\t\t\t\tbaseDir: s.baseDir,\n\t\t\t\t\tsourceInfo: s.sourceInfo,\n\t\t\t\t\tdisableModelInvocation: s.disableModelInvocation,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_skills\", { skills: rpcSkills });\n\t\t\t}\n\n\t\t\tcase \"get_extensions\": {\n\t\t\t\tconst { extensions } = session.resourceLoader.getExtensions();\n\t\t\t\tconst rpcExtensions: RpcExtension[] = extensions.map((e) => ({\n\t\t\t\t\tpath: e.path,\n\t\t\t\t\tresolvedPath: e.resolvedPath,\n\t\t\t\t\tsourceInfo: e.sourceInfo,\n\t\t\t\t\ttoolNames: Array.from(e.tools.keys()),\n\t\t\t\t\tcommandNames: Array.from(e.commands.keys()),\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_extensions\", { extensions: rpcExtensions });\n\t\t\t}\n\n\t\t\tcase \"get_tools\": {\n\t\t\t\tconst allTools = session.extensionRunner.getAllRegisteredTools();\n\t\t\t\tconst rpcTools: RpcTool[] = allTools.map((t) => ({\n\t\t\t\t\tname: t.definition.name,\n\t\t\t\t\tlabel: t.definition.label,\n\t\t\t\t\tdescription: t.definition.description,\n\t\t\t\t\tsourceInfo: t.sourceInfo,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_tools\", { tools: rpcTools });\n\t\t\t}\n\n\t\t\tcase \"get_mcp_servers\": {\n\t\t\t\tconst servers: RpcMcpServer[] = session.getMcpConnections();\n\t\t\t\treturn success(id, \"get_mcp_servers\", { servers });\n\t\t\t}\n\n\t\t\tcase \"mcp_toggle_server\": {\n\t\t\t\ttry {\n\t\t\t\t\tawait session.toggleMcpServer(command.name, command.enabled);\n\t\t\t\t\treturn success(id, \"mcp_toggle_server\");\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn error(id, \"mcp_toggle_server\", e instanceof Error ? e.message : String(e));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"mcp_restart_server\": {\n\t\t\t\ttry {\n\t\t\t\t\tawait session.restartMcpServer(command.name);\n\t\t\t\t\treturn success(id, \"mcp_restart_server\");\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn error(id, \"mcp_restart_server\", e instanceof Error ? e.message : String(e));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Commands (available for invocation via prompt)\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_commands\": {\n\t\t\t\tconst commands: RpcSlashCommand[] = [];\n\n\t\t\t\tfor (const command of session.extensionRunner.getRegisteredCommands()) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: command.invocationName,\n\t\t\t\t\t\tdescription: command.description,\n\t\t\t\t\t\tsource: \"extension\",\n\t\t\t\t\t\tsourceInfo: command.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const template of session.promptTemplates) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: template.name,\n\t\t\t\t\t\tdescription: template.description,\n\t\t\t\t\t\tsource: \"prompt\",\n\t\t\t\t\t\tsourceInfo: template.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const skill of session.resourceLoader.getSkills().skills) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: `skill:${skill.name}`,\n\t\t\t\t\t\tdescription: skill.description,\n\t\t\t\t\t\tsource: \"skill\",\n\t\t\t\t\t\tsourceInfo: skill.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn success(id, \"get_commands\", { commands });\n\t\t\t}\n\n\t\t\tcase \"get_settings\": {\n\t\t\t\tconst scope = command.scope;\n\t\t\t\tlet data: import(\"../../core/settings-manager.js\").Settings;\n\t\t\t\tif (scope === \"global\") {\n\t\t\t\t\tdata = session.settingsManager.getGlobalSettings();\n\t\t\t\t} else if (scope === \"project\") {\n\t\t\t\t\tdata = session.settingsManager.getProjectSettings();\n\t\t\t\t} else {\n\t\t\t\t\tdata = session.settingsManager.getGlobalSettings();\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_settings\", data);\n\t\t\t}\n\n\t\t\tcase \"set_settings\": {\n\t\t\t\ttype Scope = import(\"../../core/settings-manager.js\").SettingsScope;\n\t\t\t\tconst setScope = (command.scope as Scope | undefined) ?? \"global\";\n\t\t\t\tsession.settingsManager.applyOverrides(command.settings, setScope);\n\t\t\t\treturn success(id, \"set_settings\");\n\t\t\t}\n\n\t\t\tcase \"get_context_usage\": {\n\t\t\t\tconst usage = session.getContextUsage();\n\t\t\t\tif (!usage) {\n\t\t\t\t\treturn success(id, \"get_context_usage\", {\n\t\t\t\t\t\ttokens: null,\n\t\t\t\t\t\tcontextWindow: session.model?.contextWindow ?? 0,\n\t\t\t\t\t\tpercent: null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_context_usage\", usage);\n\t\t\t}\n\n\t\t\tcase \"get_system_prompt\": {\n\t\t\t\tconst systemPrompt = session.resourceLoader.getSystemPrompt() ?? \"\";\n\t\t\t\tconst appendSystemPrompt = session.resourceLoader.getAppendSystemPrompt();\n\t\t\t\treturn success(id, \"get_system_prompt\", { systemPrompt, appendSystemPrompt });\n\t\t\t}\n\n\t\t\tcase \"get_active_tools\": {\n\t\t\t\tconst toolNames = session.getActiveToolNames();\n\t\t\t\treturn success(id, \"get_active_tools\", { toolNames });\n\t\t\t}\n\n\t\t\tcase \"set_active_tools\": {\n\t\t\t\tsession.setActiveToolsByName(command.toolNames);\n\t\t\t\treturn success(id, \"set_active_tools\");\n\t\t\t}\n\n\t\t\tcase \"get_queue\": {\n\t\t\t\treturn success(id, \"get_queue\", {\n\t\t\t\t\tsteering: [...session.getSteeringMessages()],\n\t\t\t\t\tfollowUp: [...session.getFollowUpMessages()],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"clear_queue\": {\n\t\t\t\tconst cleared = session.clearQueue();\n\t\t\t\treturn success(id, \"clear_queue\", cleared);\n\t\t\t}\n\n\t\t\tcase \"get_flags\": {\n\t\t\t\tconst flagsMap = session.extensionRunner.getFlags();\n\t\t\t\tconst flags: Array<{\n\t\t\t\t\tname: string;\n\t\t\t\t\tdescription?: string;\n\t\t\t\t\ttype: \"boolean\" | \"string\";\n\t\t\t\t\tdefault?: boolean | string;\n\t\t\t\t\textensionPath: string;\n\t\t\t\t}> = [];\n\t\t\t\tfor (const [name, flag] of flagsMap) {\n\t\t\t\t\tflags.push({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tdescription: flag.description,\n\t\t\t\t\t\ttype: flag.type,\n\t\t\t\t\t\tdefault: flag.default,\n\t\t\t\t\t\textensionPath: flag.extensionPath,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_flags\", { flags });\n\t\t\t}\n\n\t\t\tcase \"get_flag_values\": {\n\t\t\t\tconst valuesMap = session.extensionRunner.getFlagValues();\n\t\t\t\tconst values: Record<string, boolean | string> = {};\n\t\t\t\tfor (const [name, value] of valuesMap) {\n\t\t\t\t\tvalues[name] = value;\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_flag_values\", { values });\n\t\t\t}\n\n\t\t\tcase \"set_flag\": {\n\t\t\t\tsession.extensionRunner.setFlagValue(command.name, command.value);\n\t\t\t\treturn success(id, \"set_flag\");\n\t\t\t}\n\n\t\t\tcase \"reload\": {\n\t\t\t\tawait session.reload();\n\t\t\t\tsession = runtimeHost.session;\n\t\t\t\treturn success(id, \"reload\");\n\t\t\t}\n\n\t\t\tcase \"set_cwd\": {\n\t\t\t\tawait session.setCwd(command.cwd);\n\t\t\t\treturn success(id, \"set_cwd\");\n\t\t\t}\n\n\t\t\tcase \"get_agents_files\": {\n\t\t\t\tconst result = session.resourceLoader.getAgentsFiles();\n\t\t\t\treturn success(id, \"get_agents_files\", { agentsFiles: result.agentsFiles });\n\t\t\t}\n\n\t\t\tcase \"get_agents\": {\n\t\t\t\tconst discovery = discoverAgents(runtimeHost.cwd, \"both\");\n\t\t\t\tconst agents = discovery.agents.map((a) => ({\n\t\t\t\t\tname: a.name,\n\t\t\t\t\tdescription: a.description,\n\t\t\t\t\ttier: a.tier,\n\t\t\t\t\ttools: a.tools,\n\t\t\t\t\tpermissionMode: a.permissionMode,\n\t\t\t\t\tsource: a.source,\n\t\t\t\t\tfilePath: a.filePath,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_agents\", { agents });\n\t\t\t}\n\n\t\t\tcase \"switch_agent\": {\n\t\t\t\tconst agentName = (command as { agentName: string }).agentName;\n\t\t\t\tconst discovery = discoverAgents(runtimeHost.cwd, \"both\");\n\t\t\t\tconst agent = discovery.agents.find((a) => a.name === agentName);\n\t\t\t\tif (!agent) {\n\t\t\t\t\treturn error(id, \"switch_agent\", `Agent \"${agentName}\" not found`);\n\t\t\t\t}\n\t\t\t\tawait session.applyAgentConfig(agent);\n\t\t\t\treturn success(id, \"switch_agent\", {\n\t\t\t\t\tagentName: agent.name,\n\t\t\t\t\ttools: agent.tools ?? [],\n\t\t\t\t\ttier: agent.tier,\n\t\t\t\t\tthinkingLevel: agent.thinkingLevel,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_current_agent\": {\n\t\t\t\tconst currentAgent = session.getCurrentAgent();\n\t\t\t\treturn success(id, \"get_current_agent\", { agentName: currentAgent });\n\t\t\t}\n\n\t\t\tcase \"get_agent_detail\": {\n\t\t\t\tconst agentName = (command as { agentName: string }).agentName;\n\t\t\t\tconst discovery = discoverAgents(runtimeHost.cwd, \"both\");\n\t\t\t\tconst agent = discovery.agents.find((a) => a.name === agentName);\n\t\t\t\tif (!agent) {\n\t\t\t\t\treturn error(id, \"get_agent_detail\", `Agent \"${agentName}\" not found`);\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_agent_detail\", { agent });\n\t\t\t}\n\n\t\t\tcase \"get_all_tools\": {\n\t\t\t\tconst allTools = session.getAllTools();\n\t\t\t\treturn success(id, \"get_all_tools\", {\n\t\t\t\t\ttools: allTools.map((t) => ({\n\t\t\t\t\t\tname: t.name,\n\t\t\t\t\t\tdescription: t.description,\n\t\t\t\t\t\tsourceInfo: t.sourceInfo,\n\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_modified_files\": {\n\t\t\t\tconst fileSnapshotManager = (session as any).fileSnapshotManager;\n\t\t\t\tif (!fileSnapshotManager) {\n\t\t\t\t\treturn success(id, \"get_modified_files\", { files: [] });\n\t\t\t\t}\n\t\t\t\tconst files = fileSnapshotManager.getModifiedFiles({\n\t\t\t\t\tfromEntryId: command.fromEntryId,\n\t\t\t\t\ttoEntryId: command.toEntryId,\n\t\t\t\t});\n\t\t\t\treturn success(id, \"get_modified_files\", { files });\n\t\t\t}\n\n\t\t\tcase \"get_file_diff\": {\n\t\t\t\tconst fileSnapshotManager = (session as any).fileSnapshotManager;\n\t\t\t\tif (!fileSnapshotManager) {\n\t\t\t\t\treturn success(id, \"get_file_diff\", null);\n\t\t\t\t}\n\t\t\t\tconst diff = fileSnapshotManager.getFileDiff({\n\t\t\t\t\tfilePath: command.filePath,\n\t\t\t\t\tfromEntryId: command.fromEntryId,\n\t\t\t\t\ttoEntryId: command.toEntryId,\n\t\t\t\t});\n\t\t\t\tif (!diff) {\n\t\t\t\t\treturn success(id, \"get_file_diff\", null);\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_file_diff\", {\n\t\t\t\t\tpath: diff.path,\n\t\t\t\t\toldContent: diff.oldContent,\n\t\t\t\t\tnewContent: diff.newContent,\n\t\t\t\t\tunifiedDiff: diff.unifiedDiff,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_batch_diffs\": {\n\t\t\t\tconst fileSnapshotManager = (session as any).fileSnapshotManager;\n\t\t\t\tif (!fileSnapshotManager) {\n\t\t\t\t\treturn success(id, \"get_batch_diffs\", {\n\t\t\t\t\t\tfiles: [],\n\t\t\t\t\t\tsummary: { totalFiles: 0, added: 0, modified: 0, deleted: 0 },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst result = fileSnapshotManager.getBatchDiffs({\n\t\t\t\t\tfromEntryId: command.fromEntryId,\n\t\t\t\t\ttoEntryId: command.toEntryId,\n\t\t\t\t});\n\t\t\t\tconst serializedFiles = result.files.map((f: any) => ({\n\t\t\t\t\tpath: f.path,\n\t\t\t\t\tstatus: f.status,\n\t\t\t\t\tdiff: f.diff\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpath: f.diff.path,\n\t\t\t\t\t\t\t\toldContent: f.diff.oldContent,\n\t\t\t\t\t\t\t\tnewContent: f.diff.newContent,\n\t\t\t\t\t\t\t\tunifiedDiff: f.diff.unifiedDiff,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: null,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_batch_diffs\", {\n\t\t\t\t\tfiles: serializedFiles,\n\t\t\t\t\tsummary: result.summary,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_file_history\": {\n\t\t\t\tconst fileSnapshotManager = (session as any).fileSnapshotManager;\n\t\t\t\tif (!fileSnapshotManager) {\n\t\t\t\t\treturn success(id, \"get_file_history\", { history: [] });\n\t\t\t\t}\n\t\t\t\tconst result = fileSnapshotManager.getFileHistory({\n\t\t\t\t\tfilePath: command.filePath,\n\t\t\t\t});\n\t\t\t\treturn success(id, \"get_file_history\", { history: result });\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tconst unknownCommand = command as { type: string };\n\t\t\t\treturn error(undefined, unknownCommand.type, `Unknown command: ${unknownCommand.type}`);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Check if shutdown was requested and perform shutdown if so.\n\t * Called after handling each command when waiting for the next command.\n\t */\n\tlet detachInput = () => {};\n\n\tasync function shutdown(exitCode = 0): Promise<never> {\n\t\tif (shuttingDown) {\n\t\t\tprocess.exit(exitCode);\n\t\t}\n\t\tshuttingDown = true;\n\t\tfor (const cleanup of signalCleanupHandlers) {\n\t\t\tcleanup();\n\t\t}\n\t\tunsubscribe?.();\n\t\tawait runtimeHost.dispose();\n\t\tdetachInput();\n\t\tprocess.stdin.pause();\n\t\tprocess.exit(exitCode);\n\t}\n\n\tasync function checkShutdownRequested(): Promise<void> {\n\t\tif (!shutdownRequested) return;\n\t\tawait shutdown();\n\t}\n\n\tconst handleInputLine = async (line: string) => {\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(line);\n\t\t} catch (parseError: unknown) {\n\t\t\toutput(\n\t\t\t\terror(\n\t\t\t\t\tundefined,\n\t\t\t\t\t\"parse\",\n\t\t\t\t\t`Failed to parse command: ${parseError instanceof Error ? parseError.message : String(parseError)}`,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle extension UI responses\n\t\tif (\n\t\t\ttypeof parsed === \"object\" &&\n\t\t\tparsed !== null &&\n\t\t\t\"type\" in parsed &&\n\t\t\tparsed.type === \"extension_ui_response\"\n\t\t) {\n\t\t\tconst response = parsed as RpcExtensionUIResponse;\n\t\t\tconst pending = pendingExtensionRequests.get(response.id);\n\t\t\tif (pending) {\n\t\t\t\tpendingExtensionRequests.delete(response.id);\n\t\t\t\tpending.resolve(response);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle channel data from RPC Client\n\t\tif (\n\t\t\ttypeof parsed === \"object\" &&\n\t\t\tparsed !== null &&\n\t\t\t\"type\" in parsed &&\n\t\t\tparsed.type === \"channel_data\" &&\n\t\t\t\"name\" in parsed\n\t\t) {\n\t\t\tchannelManager.handleInbound(parsed as ChannelDataMessage);\n\t\t\treturn;\n\t\t}\n\n\t\tconst command = parsed as RpcCommand;\n\t\ttry {\n\t\t\tconst response = await handleCommand(command);\n\t\t\tif (response) {\n\t\t\t\toutput(response);\n\t\t\t}\n\t\t\tawait checkShutdownRequested();\n\t\t} catch (commandError: unknown) {\n\t\t\toutput(\n\t\t\t\terror(\n\t\t\t\t\tcommand.id,\n\t\t\t\t\tcommand.type,\n\t\t\t\t\tcommandError instanceof Error ? commandError.message : String(commandError),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t};\n\n\tconst onInputEnd = () => {\n\t\tvoid shutdown();\n\t};\n\tprocess.stdin.on(\"end\", onInputEnd);\n\n\tdetachInput = (() => {\n\t\tconst detachJsonl = attachJsonlLineReader(process.stdin, (line) => {\n\t\t\tvoid handleInputLine(line);\n\t\t});\n\t\treturn () => {\n\t\t\tdetachJsonl();\n\t\t\tprocess.stdin.off(\"end\", onInputEnd);\n\t\t};\n\t})();\n\n\t// Keep process alive forever\n\treturn new Promise(() => {});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc-mode.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-mode.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * RPC mode: Headless operation with JSON stdin/stdout protocol.\n *\n * Used for embedding the agent in other applications.\n * Receives commands as JSON on stdin, outputs events and responses as JSON on stdout.\n *\n * Protocol:\n * - Commands: JSON objects with `type` field, optional `id` for correlation\n * - Responses: JSON objects with `type: \"response\"`, `command`, `success`, and optional `data`/`error`\n * - Events: AgentSessionEvent objects streamed as they occur\n * - Extension UI: Extension UI requests are emitted, client responds with extension_ui_response\n */\n\nimport * as crypto from \"node:crypto\";\nimport type { AgentMessage } from \"@dyyz1993/pi-agent-core\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.js\";\nimport { discoverAgents, getBuiltinAgents } from \"../../core/agent-types.js\";\nimport { DEFAULT_TIER_ALIASES } from \"../../core/defaults.js\";\nimport { ChannelManager } from \"../../core/extensions/channel-manager.js\";\nimport type { ChannelDataMessage } from \"../../core/extensions/channel-types.js\";\nimport type {\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tWorkingIndicatorOptions,\n} from \"../../core/extensions/index.js\";\nimport { resolveModelAlias } from \"../../core/model-resolver.js\";\nimport { takeOverStdout, writeRawStdout } from \"../../core/output-guard.js\";\nimport { killTrackedDetachedChildren } from \"../../utils/shell.js\";\nimport { type Theme, theme } from \"../interactive/theme/theme.js\";\nimport { attachJsonlLineReader, serializeJsonLine } from \"./jsonl.js\";\nimport type {\n\tRpcCommand,\n\tRpcExtension,\n\tRpcExtensionUIRequest,\n\tRpcExtensionUIResponse,\n\tRpcMcpServer,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcSkill,\n\tRpcSlashCommand,\n\tRpcTool,\n} from \"./rpc-types.js\";\n\n// Re-export types for consumers\nexport type {\n\tRpcCommand,\n\tRpcExtension,\n\tRpcExtensionUIRequest,\n\tRpcExtensionUIResponse,\n\tRpcMcpServer,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcSkill,\n\tRpcSlashCommand,\n\tRpcTool,\n} from \"./rpc-types.js\";\n\n/**\n * Run in RPC mode.\n * Listens for JSON commands on stdin, outputs events and responses on stdout.\n */\nexport async function runRpcMode(runtimeHost: AgentSessionRuntime): Promise<never> {\n\ttakeOverStdout();\n\tlet session = runtimeHost.session;\n\tlet unsubscribe: (() => void) | undefined;\n\n\tconst output = (obj: RpcResponse | RpcExtensionUIRequest | object) => {\n\t\twriteRawStdout(serializeJsonLine(obj));\n\t};\n\n\tconst channelManager = new ChannelManager((message: ChannelDataMessage) => {\n\t\toutput(message);\n\t});\n\n\tconst success = <T extends RpcCommand[\"type\"]>(\n\t\tid: string | undefined,\n\t\tcommand: T,\n\t\tdata?: object | null,\n\t): RpcResponse => {\n\t\tif (data === undefined) {\n\t\t\treturn { id, type: \"response\", command, success: true } as RpcResponse;\n\t\t}\n\t\treturn { id, type: \"response\", command, success: true, data } as RpcResponse;\n\t};\n\n\tconst error = (id: string | undefined, command: string, message: string): RpcResponse => {\n\t\treturn { id, type: \"response\", command, success: false, error: message };\n\t};\n\n\t// Pending extension UI requests waiting for response\n\tconst pendingExtensionRequests = new Map<\n\t\tstring,\n\t\t{ resolve: (value: any) => void; reject: (error: Error) => void }\n\t>();\n\n\t// Shutdown request flag\n\tlet shutdownRequested = false;\n\tlet shuttingDown = false;\n\tconst signalCleanupHandlers: Array<() => void> = [];\n\n\t/** Helper for dialog methods with signal/timeout support */\n\tfunction createDialogPromise<T>(\n\t\topts: ExtensionUIDialogOptions | undefined,\n\t\tdefaultValue: T,\n\t\trequest: Record<string, unknown>,\n\t\tparseResponse: (response: RpcExtensionUIResponse) => T,\n\t): Promise<T> {\n\t\tif (opts?.signal?.aborted) return Promise.resolve(defaultValue);\n\n\t\tconst id = crypto.randomUUID();\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n\t\t\tconst cleanup = () => {\n\t\t\t\tif (timeoutId) clearTimeout(timeoutId);\n\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\tpendingExtensionRequests.delete(id);\n\t\t\t};\n\n\t\t\tconst onAbort = () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(defaultValue);\n\t\t\t};\n\t\t\topts?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\t\t\tif (opts?.timeout) {\n\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\tcleanup();\n\t\t\t\t\tresolve(defaultValue);\n\t\t\t\t}, opts.timeout);\n\t\t\t}\n\n\t\t\tpendingExtensionRequests.set(id, {\n\t\t\t\tresolve: (response: RpcExtensionUIResponse) => {\n\t\t\t\t\tcleanup();\n\t\t\t\t\tresolve(parseResponse(response));\n\t\t\t\t},\n\t\t\t\treject,\n\t\t\t});\n\t\t\toutput({ type: \"extension_ui_request\", id, ...request } as RpcExtensionUIRequest);\n\t\t});\n\t}\n\n\t/**\n\t * Create an extension UI context that uses the RPC protocol.\n\t */\n\tconst createExtensionUIContext = (): ExtensionUIContext => ({\n\t\tselect: (title, options, opts) =>\n\t\t\tcreateDialogPromise(\n\t\t\t\topts,\n\t\t\t\tundefined,\n\t\t\t\t{ method: \"select\", title, options, multiple: opts?.multiple, timeout: opts?.timeout },\n\t\t\t\t(r) => (\"cancelled\" in r && r.cancelled ? undefined : \"value\" in r ? r.value : undefined),\n\t\t\t),\n\n\t\tconfirm: (title, message, opts) =>\n\t\t\tcreateDialogPromise(opts, false, { method: \"confirm\", title, message, timeout: opts?.timeout }, (r) =>\n\t\t\t\t\"cancelled\" in r && r.cancelled ? false : \"confirmed\" in r ? r.confirmed : false,\n\t\t\t),\n\n\t\tinput: (title, placeholder, opts) =>\n\t\t\tcreateDialogPromise(opts, undefined, { method: \"input\", title, placeholder, timeout: opts?.timeout }, (r) =>\n\t\t\t\t\"cancelled\" in r && r.cancelled ? undefined : \"value\" in r ? r.value : undefined,\n\t\t\t),\n\n\t\tnotify(message: string, type?: \"info\" | \"warning\" | \"error\"): void {\n\t\t\t// Fire and forget - no response needed\n\t\t\toutput({\n\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tmethod: \"notify\",\n\t\t\t\tmessage,\n\t\t\t\tnotifyType: type,\n\t\t\t} as RpcExtensionUIRequest);\n\t\t},\n\n\t\tonTerminalInput(): () => void {\n\t\t\t// Raw terminal input not supported in RPC mode\n\t\t\treturn () => {};\n\t\t},\n\n\t\tsetStatus(key: string, text: string | undefined): void {\n\t\t\t// Fire and forget - no response needed\n\t\t\toutput({\n\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tmethod: \"setStatus\",\n\t\t\t\tstatusKey: key,\n\t\t\t\tstatusText: text,\n\t\t\t} as RpcExtensionUIRequest);\n\t\t},\n\n\t\tsetWorkingMessage(_message?: string): void {\n\t\t\t// Working message not supported in RPC mode - requires TUI loader access\n\t\t},\n\n\t\tsetWorkingVisible(_visible: boolean): void {\n\t\t\t// Working visibility not supported in RPC mode - requires TUI loader access\n\t\t},\n\n\t\tsetWorkingIndicator(_options?: WorkingIndicatorOptions): void {\n\t\t\t// Working indicator customization not supported in RPC mode - requires TUI loader access\n\t\t},\n\n\t\tsetHiddenThinkingLabel(_label?: string): void {\n\t\t\t// Hidden thinking label not supported in RPC mode - requires TUI message rendering access\n\t\t},\n\n\t\tsetWidget(key: string, content: unknown, options?: ExtensionWidgetOptions): void {\n\t\t\t// Only support string arrays in RPC mode - factory functions are ignored\n\t\t\tif (content === undefined || Array.isArray(content)) {\n\t\t\t\toutput({\n\t\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\tmethod: \"setWidget\",\n\t\t\t\t\twidgetKey: key,\n\t\t\t\t\twidgetLines: content as string[] | undefined,\n\t\t\t\t\twidgetPlacement: options?.placement,\n\t\t\t\t} as RpcExtensionUIRequest);\n\t\t\t}\n\t\t\t// Component factories are not supported in RPC mode - would need TUI access\n\t\t},\n\n\t\tsetFooter(_factory: unknown): void {\n\t\t\t// Custom footer not supported in RPC mode - requires TUI access\n\t\t},\n\n\t\tsetHeader(_factory: unknown): void {\n\t\t\t// Custom header not supported in RPC mode - requires TUI access\n\t\t},\n\n\t\tsetTitle(title: string): void {\n\t\t\t// Fire and forget - host can implement terminal title control\n\t\t\toutput({\n\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tmethod: \"setTitle\",\n\t\t\t\ttitle,\n\t\t\t} as RpcExtensionUIRequest);\n\t\t},\n\n\t\tasync custom() {\n\t\t\t// Custom UI not supported in RPC mode\n\t\t\treturn undefined as never;\n\t\t},\n\n\t\tpasteToEditor(text: string): void {\n\t\t\t// Paste handling not supported in RPC mode - falls back to setEditorText\n\t\t\tthis.setEditorText(text);\n\t\t},\n\n\t\tsetEditorText(text: string): void {\n\t\t\t// Fire and forget - host can implement editor control\n\t\t\toutput({\n\t\t\t\ttype: \"extension_ui_request\",\n\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\tmethod: \"set_editor_text\",\n\t\t\t\ttext,\n\t\t\t} as RpcExtensionUIRequest);\n\t\t},\n\n\t\tgetEditorText(): string {\n\t\t\t// Synchronous method can't wait for RPC response\n\t\t\t// Host should track editor state locally if needed\n\t\t\treturn \"\";\n\t\t},\n\n\t\tasync editor(title: string, prefill?: string): Promise<string | undefined> {\n\t\t\tconst id = crypto.randomUUID();\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tpendingExtensionRequests.set(id, {\n\t\t\t\t\tresolve: (response: RpcExtensionUIResponse) => {\n\t\t\t\t\t\tif (\"cancelled\" in response && response.cancelled) {\n\t\t\t\t\t\t\tresolve(undefined);\n\t\t\t\t\t\t} else if (\"value\" in response) {\n\t\t\t\t\t\t\tresolve(response.value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\treject,\n\t\t\t\t});\n\t\t\t\toutput({ type: \"extension_ui_request\", id, method: \"editor\", title, prefill } as RpcExtensionUIRequest);\n\t\t\t});\n\t\t},\n\n\t\taddAutocompleteProvider(): void {\n\t\t\t// Autocomplete provider composition is not supported in RPC mode\n\t\t},\n\n\t\tsetEditorComponent(): void {\n\t\t\t// Custom editor components not supported in RPC mode\n\t\t},\n\n\t\tgetEditorComponent() {\n\t\t\t// Custom editor components not supported in RPC mode\n\t\t\treturn undefined;\n\t\t},\n\n\t\tget theme() {\n\t\t\treturn theme;\n\t\t},\n\n\t\tgetAllThemes() {\n\t\t\treturn [];\n\t\t},\n\n\t\tgetTheme(_name: string) {\n\t\t\treturn undefined;\n\t\t},\n\n\t\tsetTheme(_theme: string | Theme) {\n\t\t\t// Theme switching not supported in RPC mode\n\t\t\treturn { success: false, error: \"Theme switching not supported in RPC mode\" };\n\t\t},\n\n\t\tgetToolsExpanded() {\n\t\t\t// Tool expansion not supported in RPC mode - no TUI\n\t\t\treturn false;\n\t\t},\n\n\t\tsetToolsExpanded(_expanded: boolean) {\n\t\t\t// Tool expansion not supported in RPC mode - no TUI\n\t\t},\n\t});\n\n\truntimeHost.setRebindSession(async () => {\n\t\tawait rebindSession();\n\t});\n\n\tlet rebindDone: Promise<void>;\n\tconst rebindSession = async (): Promise<void> => {\n\t\tsession = runtimeHost.session;\n\t\tawait session.bindExtensions({\n\t\t\tuiContext: createExtensionUIContext(),\n\t\t\tcommandContextActions: {\n\t\t\t\twaitForIdle: () => session.agent.waitForIdle(),\n\t\t\t\tnewSession: async (options) => runtimeHost.newSession(options),\n\t\t\t\tfork: async (entryId, forkOptions) => {\n\t\t\t\t\tconst result = await runtimeHost.fork(entryId, forkOptions);\n\t\t\t\t\treturn { cancelled: result.cancelled };\n\t\t\t\t},\n\t\t\t\tnavigateTree: async (targetId, options) => {\n\t\t\t\t\tconst result = await session.navigateTree(targetId, {\n\t\t\t\t\t\tsummarize: options?.summarize,\n\t\t\t\t\t\tcustomInstructions: options?.customInstructions,\n\t\t\t\t\t\treplaceInstructions: options?.replaceInstructions,\n\t\t\t\t\t\tlabel: options?.label,\n\t\t\t\t\t});\n\t\t\t\t\treturn { cancelled: result.cancelled };\n\t\t\t\t},\n\t\t\t\tswitchSession: async (sessionPath, options) => {\n\t\t\t\t\treturn runtimeHost.switchSession(sessionPath, options);\n\t\t\t\t},\n\t\t\t\treload: async () => {\n\t\t\t\t\tawait session.reload();\n\t\t\t\t},\n\t\t\t},\n\t\t\tshutdownHandler: () => {\n\t\t\t\tshutdownRequested = true;\n\t\t\t},\n\t\t\tonError: (err) => {\n\t\t\t\toutput({ type: \"extension_error\", extensionPath: err.extensionPath, event: err.event, error: err.error });\n\t\t\t},\n\t\t\tregisterChannel: (name: string) => channelManager.register(name),\n\t\t});\n\n\t\tunsubscribe?.();\n\t\tunsubscribe = session.subscribe((event) => {\n\t\t\toutput(event);\n\t\t});\n\t};\n\n\tconst registerSignalHandlers = (): void => {\n\t\tconst signals: NodeJS.Signals[] = [\"SIGTERM\"];\n\t\tif (process.platform !== \"win32\") {\n\t\t\tsignals.push(\"SIGHUP\");\n\t\t}\n\n\t\tfor (const signal of signals) {\n\t\t\tconst handler = () => {\n\t\t\t\tkillTrackedDetachedChildren();\n\t\t\t\tvoid shutdown(signal === \"SIGHUP\" ? 129 : 143);\n\t\t\t};\n\t\t\tprocess.on(signal, handler);\n\t\t\tsignalCleanupHandlers.push(() => process.off(signal, handler));\n\t\t}\n\t};\n\n\trebindDone = rebindSession();\n\tregisterSignalHandlers();\n\toutput({ type: \"ready\" });\n\n\t// Handle a single command\n\tconst handleCommand = async (command: RpcCommand): Promise<RpcResponse | undefined> => {\n\t\tawait rebindDone;\n\t\tconst id = command.id;\n\n\t\tswitch (command.type) {\n\t\t\t// =================================================================\n\t\t\t// Prompting\n\t\t\t// =================================================================\n\n\t\t\tcase \"prompt\": {\n\t\t\t\t// Start prompt handling immediately, but emit the authoritative response only after\n\t\t\t\t// prompt preflight succeeds. Queued and immediately handled prompts also count as success.\n\t\t\t\tlet preflightSucceeded = false;\n\t\t\t\tvoid session\n\t\t\t\t\t.prompt(command.message, {\n\t\t\t\t\t\timages: command.images,\n\t\t\t\t\t\tstreamingBehavior: command.streamingBehavior,\n\t\t\t\t\t\tsource: \"rpc\",\n\t\t\t\t\t\tpreflightResult: (didSucceed) => {\n\t\t\t\t\t\t\tif (didSucceed) {\n\t\t\t\t\t\t\t\tpreflightSucceeded = true;\n\t\t\t\t\t\t\t\toutput(success(id, \"prompt\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\tif (!preflightSucceeded) {\n\t\t\t\t\t\t\toutput(error(id, \"prompt\", e.message));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcase \"steer\": {\n\t\t\t\tawait session.steer(command.message, command.images);\n\t\t\t\treturn success(id, \"steer\");\n\t\t\t}\n\n\t\t\tcase \"follow_up\": {\n\t\t\t\tawait session.followUp(command.message, command.images);\n\t\t\t\treturn success(id, \"follow_up\");\n\t\t\t}\n\n\t\t\tcase \"abort\": {\n\t\t\t\tawait session.abort();\n\t\t\t\treturn success(id, \"abort\");\n\t\t\t}\n\n\t\t\tcase \"new_session\": {\n\t\t\t\tconst options = command.parentSession ? { parentSession: command.parentSession } : undefined;\n\t\t\t\tconst result = await runtimeHost.newSession(options);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn success(id, \"new_session\", result);\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// State\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_state\": {\n\t\t\t\tconst state: RpcSessionState = {\n\t\t\t\t\tmodel: session.model,\n\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\tisStreaming: session.isStreaming,\n\t\t\t\t\tisCompacting: session.isCompacting,\n\t\t\t\t\tsteeringMode: session.steeringMode,\n\t\t\t\t\tfollowUpMode: session.followUpMode,\n\t\t\t\t\tsessionFile: session.sessionFile,\n\t\t\t\t\tsessionId: session.sessionId,\n\t\t\t\t\tsessionName: session.sessionName,\n\t\t\t\t\tautoCompactionEnabled: session.autoCompactionEnabled,\n\t\t\t\t\tmessageCount: session.messages.length,\n\t\t\t\t\tpendingMessageCount: session.pendingMessageCount,\n\t\t\t\t};\n\t\t\t\treturn success(id, \"get_state\", state);\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Model\n\t\t\t// =================================================================\n\n\t\t\tcase \"set_model\": {\n\t\t\t\tlet provider = command.provider;\n\t\t\t\tlet modelId = command.modelId;\n\n\t\t\t\tconst tierModels = session.getTierModels();\n\t\t\t\tconst aliasTarget = resolveModelAlias(modelId, tierModels);\n\t\t\t\tif (aliasTarget) {\n\t\t\t\t\tconst slashIndex = aliasTarget.indexOf(\"/\");\n\t\t\t\t\tif (slashIndex !== -1) {\n\t\t\t\t\t\tprovider = aliasTarget.substring(0, slashIndex);\n\t\t\t\t\t\tmodelId = aliasTarget.substring(slashIndex + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmodelId = aliasTarget;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst models = await session.modelRegistry.getAvailable();\n\t\t\t\tconst model = models.find((m) => m.provider === provider && m.id === modelId);\n\t\t\t\tif (!model) {\n\t\t\t\t\treturn error(id, \"set_model\", `Model not found: ${provider}/${modelId}`);\n\t\t\t\t}\n\t\t\t\tawait session.setModel(model);\n\t\t\t\treturn success(id, \"set_model\", model);\n\t\t\t}\n\n\t\t\tcase \"cycle_model\": {\n\t\t\t\tconst result = await session.cycleModel();\n\t\t\t\tif (!result) {\n\t\t\t\t\treturn success(id, \"cycle_model\", null);\n\t\t\t\t}\n\t\t\t\treturn success(id, \"cycle_model\", result);\n\t\t\t}\n\n\t\t\tcase \"get_available_models\": {\n\t\t\t\tconst models = await session.modelRegistry.getAvailable();\n\t\t\t\treturn success(id, \"get_available_models\", { models });\n\t\t\t}\n\n\t\t\tcase \"get_tier_models\": {\n\t\t\t\tconst tierModels = session.getTierModels();\n\t\t\t\tconst merged = { ...DEFAULT_TIER_ALIASES, ...tierModels };\n\t\t\t\treturn success(id, \"get_tier_models\", { models: merged });\n\t\t\t}\n\n\t\t\tcase \"set_tier_models\": {\n\t\t\t\tconst { models } = command;\n\t\t\t\tconst validTiers = new Set([\"fast\", \"pro\", \"max\"]);\n\t\t\t\tfor (const key of Object.keys(models)) {\n\t\t\t\t\tif (!validTiers.has(key)) {\n\t\t\t\t\t\treturn error(id, \"set_tier_models\", `Invalid tier name: \"${key}\". Valid tiers are: fast, pro, max`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst mapping: Record<string, string> = {};\n\t\t\t\tif (models.fast !== undefined) mapping.fast = models.fast;\n\t\t\t\tif (models.pro !== undefined) mapping.pro = models.pro;\n\t\t\t\tif (models.max !== undefined) mapping.max = models.max;\n\t\t\t\tsession.setTierModels(mapping);\n\t\t\t\treturn success(id, \"set_tier_models\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Thinking\n\t\t\t// =================================================================\n\n\t\t\tcase \"set_thinking_level\": {\n\t\t\t\tsession.setThinkingLevel(command.level);\n\t\t\t\treturn success(id, \"set_thinking_level\");\n\t\t\t}\n\n\t\t\tcase \"cycle_thinking_level\": {\n\t\t\t\tconst level = session.cycleThinkingLevel();\n\t\t\t\tif (!level) {\n\t\t\t\t\treturn success(id, \"cycle_thinking_level\", null);\n\t\t\t\t}\n\t\t\t\treturn success(id, \"cycle_thinking_level\", { level });\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Queue Modes\n\t\t\t// =================================================================\n\n\t\t\tcase \"set_steering_mode\": {\n\t\t\t\tsession.setSteeringMode(command.mode);\n\t\t\t\treturn success(id, \"set_steering_mode\");\n\t\t\t}\n\n\t\t\tcase \"set_follow_up_mode\": {\n\t\t\t\tsession.setFollowUpMode(command.mode);\n\t\t\t\treturn success(id, \"set_follow_up_mode\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Compaction\n\t\t\t// =================================================================\n\n\t\t\tcase \"compact\": {\n\t\t\t\tconst result = await session.compact(command.customInstructions);\n\t\t\t\treturn success(id, \"compact\", result);\n\t\t\t}\n\n\t\t\tcase \"set_auto_compaction\": {\n\t\t\t\tsession.setAutoCompactionEnabled(command.enabled);\n\t\t\t\treturn success(id, \"set_auto_compaction\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Retry\n\t\t\t// =================================================================\n\n\t\t\tcase \"set_auto_retry\": {\n\t\t\t\tsession.setAutoRetryEnabled(command.enabled);\n\t\t\t\treturn success(id, \"set_auto_retry\");\n\t\t\t}\n\n\t\t\tcase \"abort_retry\": {\n\t\t\t\tsession.abortRetry();\n\t\t\t\treturn success(id, \"abort_retry\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Bash\n\t\t\t// =================================================================\n\n\t\t\tcase \"bash\": {\n\t\t\t\tconst result = await session.executeBash(command.command);\n\t\t\t\treturn success(id, \"bash\", result);\n\t\t\t}\n\n\t\t\tcase \"abort_bash\": {\n\t\t\t\tsession.abortBash();\n\t\t\t\treturn success(id, \"abort_bash\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Session\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_session_stats\": {\n\t\t\t\tconst stats = session.getSessionStats();\n\t\t\t\treturn success(id, \"get_session_stats\", stats);\n\t\t\t}\n\n\t\t\tcase \"export_html\": {\n\t\t\t\tconst path = await session.exportToHtml(command.outputPath);\n\t\t\t\treturn success(id, \"export_html\", { path });\n\t\t\t}\n\n\t\t\tcase \"switch_session\": {\n\t\t\t\tconst result = await runtimeHost.switchSession(command.sessionPath);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tsession = runtimeHost.session;\n\t\t\t\t}\n\t\t\t\treturn success(id, \"switch_session\", result);\n\t\t\t}\n\n\t\t\tcase \"fork\": {\n\t\t\t\tconst previousName = session.sessionManager.getSessionName();\n\t\t\t\tconst forkPosition = (command as any).position === \"at\" ? { position: \"at\" as const } : undefined;\n\t\t\t\tconst result = await runtimeHost.fork(command.entryId, forkPosition);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tconst newName = previousName ? `fork: ${previousName}` : \"fork\";\n\t\t\t\t\tsession = runtimeHost.session;\n\t\t\t\t\tsession.sessionManager.appendSessionInfo(newName);\n\t\t\t\t\tsession.sessionManager.flush();\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn success(id, \"fork\", {\n\t\t\t\t\ttext: result.selectedText,\n\t\t\t\t\tcancelled: result.cancelled,\n\t\t\t\t\tnewSessionFile: session.sessionManager.getSessionFile(),\n\t\t\t\t\tnewSessionId: session.sessionManager.getSessionId(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"navigate_tree\": {\n\t\t\t\tconst navResult = await session.navigateTree(command.targetId, {\n\t\t\t\t\tsummarize: command.summarize ?? false,\n\t\t\t\t\tskipFiles: command.skipFiles,\n\t\t\t\t});\n\t\t\t\treturn success(id, \"navigate_tree\", { cancelled: navResult.cancelled, reason: navResult.reason });\n\t\t\t}\n\n\t\t\tcase \"rollback_preview\": {\n\t\t\t\tconst previewResult = await session.previewRollback(command.targetId);\n\t\t\t\treturn success(id, \"rollback_preview\", previewResult);\n\t\t\t}\n\n\t\t\tcase \"clone\": {\n\t\t\t\tconst leafId = session.sessionManager.getLeafId();\n\t\t\t\tif (!leafId) {\n\t\t\t\t\treturn error(id, \"clone\", \"Cannot clone session: no current entry selected\");\n\t\t\t\t}\n\t\t\t\tconst result = await runtimeHost.fork(leafId, { position: \"at\" });\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn success(id, \"clone\", { cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"get_fork_messages\": {\n\t\t\t\tconst messages = session.getUserMessagesForForking();\n\t\t\t\treturn success(id, \"get_fork_messages\", { messages });\n\t\t\t}\n\n\t\t\tcase \"get_last_assistant_text\": {\n\t\t\t\tconst text = session.getLastAssistantText();\n\t\t\t\treturn success(id, \"get_last_assistant_text\", { text });\n\t\t\t}\n\n\t\t\tcase \"set_session_name\": {\n\t\t\t\tconst name = command.name.trim();\n\t\t\t\tif (!name) {\n\t\t\t\t\treturn error(id, \"set_session_name\", \"Session name cannot be empty\");\n\t\t\t\t}\n\t\t\t\tsession.setSessionName(name);\n\t\t\t\treturn success(id, \"set_session_name\");\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Messages\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_messages\": {\n\t\t\t\treturn success(id, \"get_messages\", { messages: session.messages });\n\t\t\t}\n\n\t\t\tcase \"get_full_messages\": {\n\t\t\t\tconst allEntries = session.sessionManager.getEntries();\n\t\t\t\tconst messageEntries = allEntries.filter((e) => e.type === \"message\");\n\t\t\t\tconst persistedMessages = messageEntries.map((e) => (e as { message: AgentMessage }).message);\n\t\t\t\tconst persistedSet = new Set(persistedMessages);\n\n\t\t\t\tconst memoryMessages = session.messages;\n\t\t\t\tconst unPersisted: AgentMessage[] = [];\n\t\t\t\tfor (let i = memoryMessages.length - 1; i >= 0; i--) {\n\t\t\t\t\tconst msg = memoryMessages[i];\n\t\t\t\t\tif (persistedSet.has(msg)) break;\n\t\t\t\t\tif (msg.role === \"compactionSummary\") continue;\n\t\t\t\t\tunPersisted.unshift(msg);\n\t\t\t\t}\n\n\t\t\t\tconst allMessages = [...persistedMessages, ...unPersisted];\n\t\t\t\tconst totalCount = allMessages.length;\n\n\t\t\t\tconst leafId = session.sessionManager.getLeafId();\n\n\t\t\t\tconst treeEntries = allEntries.map((e) => ({\n\t\t\t\t\tid: e.id,\n\t\t\t\t\tparentId: e.parentId,\n\t\t\t\t\ttype: e.type,\n\t\t\t\t\tlabel:\n\t\t\t\t\t\te.type === \"message\"\n\t\t\t\t\t\t\t? (e as any).message?.role\n\t\t\t\t\t\t\t: e.type === \"custom\"\n\t\t\t\t\t\t\t\t? (e as any).customType\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}));\n\n\t\t\t\tconst customEntries = allEntries\n\t\t\t\t\t.filter((e) => e.type === \"custom\")\n\t\t\t\t\t.map((e) => ({\n\t\t\t\t\t\tid: e.id,\n\t\t\t\t\t\tcustomType: (e as any).customType ?? \"unknown\",\n\t\t\t\t\t\tdata: (e as any).data,\n\t\t\t\t\t\ttimestamp: new Date(e.timestamp).getTime(),\n\t\t\t\t\t}));\n\n\t\t\t\tconst compactionEntries = allEntries\n\t\t\t\t\t.filter((e) => e.type === \"compaction\")\n\t\t\t\t\t.map((e) => ({\n\t\t\t\t\t\tid: e.id,\n\t\t\t\t\t\tsummary: (e as any).summary ?? \"\",\n\t\t\t\t\t\ttokensBefore: (e as any).tokensBefore,\n\t\t\t\t\t\ttimestamp: new Date(e.timestamp).getTime(),\n\t\t\t\t\t}));\n\n\t\t\t\tif (command.limit !== undefined) {\n\t\t\t\t\tconst limit = command.limit;\n\t\t\t\t\tlet startIndex = 0;\n\t\t\t\t\tif (command.afterEntryId) {\n\t\t\t\t\t\tconst idx = messageEntries.findIndex((e) => e.id === command.afterEntryId);\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\tstartIndex = idx + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst page = allMessages.slice(startIndex, startIndex + limit);\n\t\t\t\t\tconst hasMore = startIndex + limit < totalCount;\n\t\t\t\t\tconst lastPersisted = messageEntries[Math.min(startIndex + limit, messageEntries.length) - 1];\n\t\t\t\t\treturn success(id, \"get_full_messages\", {\n\t\t\t\t\t\tmessages: page,\n\t\t\t\t\t\thasMore,\n\t\t\t\t\t\ttotalCount,\n\t\t\t\t\t\tnextCursor: hasMore && lastPersisted ? lastPersisted.id : null,\n\t\t\t\t\t\ttree: { entries: treeEntries, leafId },\n\t\t\t\t\t\tcustomEntries,\n\t\t\t\t\t\tcompactionEntries,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn success(id, \"get_full_messages\", {\n\t\t\t\t\tmessages: allMessages,\n\t\t\t\t\thasMore: false,\n\t\t\t\t\ttotalCount,\n\t\t\t\t\tnextCursor: null,\n\t\t\t\t\ttree: { entries: treeEntries, leafId },\n\t\t\t\t\tcustomEntries,\n\t\t\t\t\tcompactionEntries,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_tree\": {\n\t\t\t\tconst entries = session.sessionManager.getEntries();\n\t\t\t\tconst treeEntries = entries.map((e) => ({\n\t\t\t\t\tid: e.id,\n\t\t\t\t\tparentId: e.parentId,\n\t\t\t\t\ttype: e.type,\n\t\t\t\t\tlabel:\n\t\t\t\t\t\te.type === \"message\"\n\t\t\t\t\t\t\t? (e as any).message?.role\n\t\t\t\t\t\t\t: e.type === \"custom\"\n\t\t\t\t\t\t\t\t? (e as any).customType\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_tree\", { entries: treeEntries, leafId: session.sessionManager.getLeafId() });\n\t\t\t}\n\t\t\tcase \"get_tree_with_leaf\": {\n\t\t\t\tconst entries = session.sessionManager.getEntries();\n\t\t\t\tconst treeEntries = entries.map((e) => ({\n\t\t\t\t\tid: e.id,\n\t\t\t\t\tparentId: e.parentId,\n\t\t\t\t\ttype: e.type,\n\t\t\t\t\tlabel:\n\t\t\t\t\t\te.type === \"message\"\n\t\t\t\t\t\t\t? (e as any).message?.role\n\t\t\t\t\t\t\t: e.type === \"custom\"\n\t\t\t\t\t\t\t\t? (e as any).customType\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_tree_with_leaf\", {\n\t\t\t\t\tentries: treeEntries,\n\t\t\t\t\tleafId: session.sessionManager.getLeafId(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Resources (skills, extensions, tools)\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_skills\": {\n\t\t\t\tconst { skills } = session.resourceLoader.getSkills();\n\t\t\t\tconst rpcSkills: RpcSkill[] = skills.map((s) => ({\n\t\t\t\t\tname: s.name,\n\t\t\t\t\tdescription: s.description,\n\t\t\t\t\tfilePath: s.filePath,\n\t\t\t\t\tbaseDir: s.baseDir,\n\t\t\t\t\tsourceInfo: s.sourceInfo,\n\t\t\t\t\tdisableModelInvocation: s.disableModelInvocation,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_skills\", { skills: rpcSkills });\n\t\t\t}\n\n\t\t\tcase \"get_extensions\": {\n\t\t\t\tconst { extensions } = session.resourceLoader.getExtensions();\n\t\t\t\tconst rpcExtensions: RpcExtension[] = extensions.map((e) => ({\n\t\t\t\t\tpath: e.path,\n\t\t\t\t\tresolvedPath: e.resolvedPath,\n\t\t\t\t\tsourceInfo: e.sourceInfo,\n\t\t\t\t\ttoolNames: Array.from(e.tools.keys()),\n\t\t\t\t\tcommandNames: Array.from(e.commands.keys()),\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_extensions\", { extensions: rpcExtensions });\n\t\t\t}\n\n\t\t\tcase \"get_tools\": {\n\t\t\t\tconst allTools = session.extensionRunner.getAllRegisteredTools();\n\t\t\t\tconst rpcTools: RpcTool[] = allTools.map((t) => ({\n\t\t\t\t\tname: t.definition.name,\n\t\t\t\t\tlabel: t.definition.label,\n\t\t\t\t\tdescription: t.definition.description,\n\t\t\t\t\tsourceInfo: t.sourceInfo,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_tools\", { tools: rpcTools });\n\t\t\t}\n\n\t\t\tcase \"get_mcp_servers\": {\n\t\t\t\tconst servers: RpcMcpServer[] = session.getMcpConnections();\n\t\t\t\treturn success(id, \"get_mcp_servers\", { servers });\n\t\t\t}\n\n\t\t\tcase \"mcp_toggle_server\": {\n\t\t\t\ttry {\n\t\t\t\t\tawait session.toggleMcpServer(command.name, command.enabled);\n\t\t\t\t\treturn success(id, \"mcp_toggle_server\");\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn error(id, \"mcp_toggle_server\", e instanceof Error ? e.message : String(e));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"mcp_restart_server\": {\n\t\t\t\ttry {\n\t\t\t\t\tawait session.restartMcpServer(command.name);\n\t\t\t\t\treturn success(id, \"mcp_restart_server\");\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn error(id, \"mcp_restart_server\", e instanceof Error ? e.message : String(e));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// =================================================================\n\t\t\t// Commands (available for invocation via prompt)\n\t\t\t// =================================================================\n\n\t\t\tcase \"get_commands\": {\n\t\t\t\tconst commands: RpcSlashCommand[] = [];\n\n\t\t\t\tfor (const command of session.extensionRunner.getRegisteredCommands()) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: command.invocationName,\n\t\t\t\t\t\tdescription: command.description,\n\t\t\t\t\t\tsource: \"extension\",\n\t\t\t\t\t\tsourceInfo: command.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const template of session.promptTemplates) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: template.name,\n\t\t\t\t\t\tdescription: template.description,\n\t\t\t\t\t\tsource: \"prompt\",\n\t\t\t\t\t\tsourceInfo: template.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const skill of session.resourceLoader.getSkills().skills) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: `skill:${skill.name}`,\n\t\t\t\t\t\tdescription: skill.description,\n\t\t\t\t\t\tsource: \"skill\",\n\t\t\t\t\t\tsourceInfo: skill.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn success(id, \"get_commands\", { commands });\n\t\t\t}\n\n\t\t\tcase \"get_settings\": {\n\t\t\t\tconst scope = command.scope;\n\t\t\t\tlet data: import(\"../../core/settings-manager.js\").Settings;\n\t\t\t\tif (scope === \"global\") {\n\t\t\t\t\tdata = session.settingsManager.getGlobalSettings();\n\t\t\t\t} else if (scope === \"project\") {\n\t\t\t\t\tdata = session.settingsManager.getProjectSettings();\n\t\t\t\t} else {\n\t\t\t\t\tdata = session.settingsManager.getGlobalSettings();\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_settings\", data);\n\t\t\t}\n\n\t\t\tcase \"set_settings\": {\n\t\t\t\ttype Scope = import(\"../../core/settings-manager.js\").SettingsScope;\n\t\t\t\tconst setScope = (command.scope as Scope | undefined) ?? \"global\";\n\t\t\t\tsession.settingsManager.applyOverrides(command.settings, setScope);\n\t\t\t\treturn success(id, \"set_settings\");\n\t\t\t}\n\n\t\t\tcase \"get_context_usage\": {\n\t\t\t\tconst usage = session.getContextUsage();\n\t\t\t\tif (!usage) {\n\t\t\t\t\treturn success(id, \"get_context_usage\", {\n\t\t\t\t\t\ttokens: null,\n\t\t\t\t\t\tcontextWindow: session.model?.contextWindow ?? 0,\n\t\t\t\t\t\tpercent: null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_context_usage\", usage);\n\t\t\t}\n\n\t\t\tcase \"get_system_prompt\": {\n\t\t\t\t// Return the fully-constructed system prompt (or raw if not yet built)\n\t\t\t\tconst systemPrompt = session.agent.state.systemPrompt || session.systemPrompt || \"\";\n\t\t\t\tconst appendSystemPrompt = session.resourceLoader.getAppendSystemPrompt();\n\t\t\t\treturn success(id, \"get_system_prompt\", { systemPrompt, appendSystemPrompt });\n\t\t\t}\n\n\t\t\tcase \"get_active_tools\": {\n\t\t\t\tconst toolNames = session.getActiveToolNames();\n\t\t\t\treturn success(id, \"get_active_tools\", { toolNames });\n\t\t\t}\n\n\t\t\tcase \"set_active_tools\": {\n\t\t\t\tsession.setActiveToolsByName(command.toolNames);\n\t\t\t\treturn success(id, \"set_active_tools\");\n\t\t\t}\n\n\t\t\tcase \"get_queue\": {\n\t\t\t\treturn success(id, \"get_queue\", {\n\t\t\t\t\tsteering: [...session.getSteeringMessages()],\n\t\t\t\t\tfollowUp: [...session.getFollowUpMessages()],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"clear_queue\": {\n\t\t\t\tconst cleared = session.clearQueue();\n\t\t\t\treturn success(id, \"clear_queue\", cleared);\n\t\t\t}\n\n\t\t\tcase \"get_flags\": {\n\t\t\t\tconst flagsMap = session.extensionRunner.getFlags();\n\t\t\t\tconst flags: Array<{\n\t\t\t\t\tname: string;\n\t\t\t\t\tdescription?: string;\n\t\t\t\t\ttype: \"boolean\" | \"string\";\n\t\t\t\t\tdefault?: boolean | string;\n\t\t\t\t\textensionPath: string;\n\t\t\t\t}> = [];\n\t\t\t\tfor (const [name, flag] of flagsMap) {\n\t\t\t\t\tflags.push({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tdescription: flag.description,\n\t\t\t\t\t\ttype: flag.type,\n\t\t\t\t\t\tdefault: flag.default,\n\t\t\t\t\t\textensionPath: flag.extensionPath,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_flags\", { flags });\n\t\t\t}\n\n\t\t\tcase \"get_flag_values\": {\n\t\t\t\tconst valuesMap = session.extensionRunner.getFlagValues();\n\t\t\t\tconst values: Record<string, boolean | string> = {};\n\t\t\t\tfor (const [name, value] of valuesMap) {\n\t\t\t\t\tvalues[name] = value;\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_flag_values\", { values });\n\t\t\t}\n\n\t\t\tcase \"set_flag\": {\n\t\t\t\tsession.extensionRunner.setFlagValue(command.name, command.value);\n\t\t\t\treturn success(id, \"set_flag\");\n\t\t\t}\n\n\t\t\tcase \"reload\": {\n\t\t\t\tawait session.reload();\n\t\t\t\tsession = runtimeHost.session;\n\t\t\t\treturn success(id, \"reload\");\n\t\t\t}\n\n\t\t\tcase \"set_cwd\": {\n\t\t\t\tawait session.setCwd(command.cwd);\n\t\t\t\treturn success(id, \"set_cwd\");\n\t\t\t}\n\n\t\t\tcase \"get_agents_files\": {\n\t\t\t\tconst result = session.resourceLoader.getAgentsFiles();\n\t\t\t\treturn success(id, \"get_agents_files\", { agentsFiles: result.agentsFiles });\n\t\t\t}\n\n\t\t\tcase \"get_agents\": {\n\t\t\t\tconst discovery = discoverAgents(runtimeHost.cwd, \"both\");\n\t\t\t\tconst agents = discovery.agents.map((a) => ({\n\t\t\t\t\tname: a.name,\n\t\t\t\t\tdescription: a.description,\n\t\t\t\t\ttier: a.tier,\n\t\t\t\t\ttools: a.tools,\n\t\t\t\t\tpermissionMode: a.permissionMode,\n\t\t\t\t\tsource: a.source,\n\t\t\t\t\tfilePath: a.filePath,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_agents\", { agents });\n\t\t\t}\n\n\t\t\tcase \"switch_agent\": {\n\t\t\t\tconst agentName = (command as { agentName: string }).agentName;\n\t\t\t\tconst discovery = discoverAgents(runtimeHost.cwd, \"both\");\n\t\t\t\tconst agent = discovery.agents.find((a) => a.name === agentName);\n\t\t\t\tif (!agent) {\n\t\t\t\t\treturn error(id, \"switch_agent\", `Agent \"${agentName}\" not found`);\n\t\t\t\t}\n\t\t\t\tawait session.applyAgentConfig(agent);\n\t\t\t\treturn success(id, \"switch_agent\", {\n\t\t\t\t\tagentName: agent.name,\n\t\t\t\t\ttools: agent.tools ?? [],\n\t\t\t\t\ttier: agent.tier,\n\t\t\t\t\tthinkingLevel: agent.thinkingLevel,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_current_agent\": {\n\t\t\t\tconst currentAgent = session.getCurrentAgent();\n\t\t\t\treturn success(id, \"get_current_agent\", { agentName: currentAgent });\n\t\t\t}\n\n\t\t\tcase \"get_agent_detail\": {\n\t\t\t\tconst agentName = (command as { agentName: string }).agentName;\n\t\t\t\tconst discovery = discoverAgents(runtimeHost.cwd, \"both\");\n\t\t\t\tconst agent = discovery.agents.find((a) => a.name === agentName);\n\t\t\t\tif (!agent) {\n\t\t\t\t\treturn error(id, \"get_agent_detail\", `Agent \"${agentName}\" not found`);\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_agent_detail\", { agent });\n\t\t\t}\n\n\t\t\tcase \"get_all_tools\": {\n\t\t\t\tconst allTools = session.getAllTools();\n\t\t\t\treturn success(id, \"get_all_tools\", {\n\t\t\t\t\ttools: allTools.map((t) => ({\n\t\t\t\t\t\tname: t.name,\n\t\t\t\t\t\tdescription: t.description,\n\t\t\t\t\t\tsourceInfo: t.sourceInfo,\n\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_modified_files\": {\n\t\t\t\tconst fileSnapshotManager = (session as any).fileSnapshotManager;\n\t\t\t\tif (!fileSnapshotManager) {\n\t\t\t\t\treturn success(id, \"get_modified_files\", { files: [] });\n\t\t\t\t}\n\t\t\t\tconst files = fileSnapshotManager.getModifiedFiles({\n\t\t\t\t\tfromEntryId: command.fromEntryId,\n\t\t\t\t\ttoEntryId: command.toEntryId,\n\t\t\t\t});\n\t\t\t\treturn success(id, \"get_modified_files\", { files });\n\t\t\t}\n\n\t\t\tcase \"get_file_diff\": {\n\t\t\t\tconst fileSnapshotManager = (session as any).fileSnapshotManager;\n\t\t\t\tif (!fileSnapshotManager) {\n\t\t\t\t\treturn success(id, \"get_file_diff\", null);\n\t\t\t\t}\n\t\t\t\tconst diff = fileSnapshotManager.getFileDiff({\n\t\t\t\t\tfilePath: command.filePath,\n\t\t\t\t\tfromEntryId: command.fromEntryId,\n\t\t\t\t\ttoEntryId: command.toEntryId,\n\t\t\t\t});\n\t\t\t\tif (!diff) {\n\t\t\t\t\treturn success(id, \"get_file_diff\", null);\n\t\t\t\t}\n\t\t\t\treturn success(id, \"get_file_diff\", {\n\t\t\t\t\tpath: diff.path,\n\t\t\t\t\toldContent: diff.oldContent,\n\t\t\t\t\tnewContent: diff.newContent,\n\t\t\t\t\tunifiedDiff: diff.unifiedDiff,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_batch_diffs\": {\n\t\t\t\tconst fileSnapshotManager = (session as any).fileSnapshotManager;\n\t\t\t\tif (!fileSnapshotManager) {\n\t\t\t\t\treturn success(id, \"get_batch_diffs\", {\n\t\t\t\t\t\tfiles: [],\n\t\t\t\t\t\tsummary: { totalFiles: 0, added: 0, modified: 0, deleted: 0 },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst result = fileSnapshotManager.getBatchDiffs({\n\t\t\t\t\tfromEntryId: command.fromEntryId,\n\t\t\t\t\ttoEntryId: command.toEntryId,\n\t\t\t\t});\n\t\t\t\tconst serializedFiles = result.files.map((f: any) => ({\n\t\t\t\t\tpath: f.path,\n\t\t\t\t\tstatus: f.status,\n\t\t\t\t\tdiff: f.diff\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tpath: f.diff.path,\n\t\t\t\t\t\t\t\toldContent: f.diff.oldContent,\n\t\t\t\t\t\t\t\tnewContent: f.diff.newContent,\n\t\t\t\t\t\t\t\tunifiedDiff: f.diff.unifiedDiff,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: null,\n\t\t\t\t}));\n\t\t\t\treturn success(id, \"get_batch_diffs\", {\n\t\t\t\t\tfiles: serializedFiles,\n\t\t\t\t\tsummary: result.summary,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_file_history\": {\n\t\t\t\tconst fileSnapshotManager = (session as any).fileSnapshotManager;\n\t\t\t\tif (!fileSnapshotManager) {\n\t\t\t\t\treturn success(id, \"get_file_history\", { history: [] });\n\t\t\t\t}\n\t\t\t\tconst result = fileSnapshotManager.getFileHistory({\n\t\t\t\t\tfilePath: command.filePath,\n\t\t\t\t});\n\t\t\t\treturn success(id, \"get_file_history\", { history: result });\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tconst unknownCommand = command as { type: string };\n\t\t\t\treturn error(undefined, unknownCommand.type, `Unknown command: ${unknownCommand.type}`);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Check if shutdown was requested and perform shutdown if so.\n\t * Called after handling each command when waiting for the next command.\n\t */\n\tlet detachInput = () => {};\n\n\tasync function shutdown(exitCode = 0): Promise<never> {\n\t\tif (shuttingDown) {\n\t\t\tprocess.exit(exitCode);\n\t\t}\n\t\tshuttingDown = true;\n\t\tfor (const cleanup of signalCleanupHandlers) {\n\t\t\tcleanup();\n\t\t}\n\t\tunsubscribe?.();\n\t\tawait runtimeHost.dispose();\n\t\tdetachInput();\n\t\tprocess.stdin.pause();\n\t\tprocess.exit(exitCode);\n\t}\n\n\tasync function checkShutdownRequested(): Promise<void> {\n\t\tif (!shutdownRequested) return;\n\t\tawait shutdown();\n\t}\n\n\tconst handleInputLine = async (line: string) => {\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(line);\n\t\t} catch (parseError: unknown) {\n\t\t\toutput(\n\t\t\t\terror(\n\t\t\t\t\tundefined,\n\t\t\t\t\t\"parse\",\n\t\t\t\t\t`Failed to parse command: ${parseError instanceof Error ? parseError.message : String(parseError)}`,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle extension UI responses\n\t\tif (\n\t\t\ttypeof parsed === \"object\" &&\n\t\t\tparsed !== null &&\n\t\t\t\"type\" in parsed &&\n\t\t\tparsed.type === \"extension_ui_response\"\n\t\t) {\n\t\t\tconst response = parsed as RpcExtensionUIResponse;\n\t\t\tconst pending = pendingExtensionRequests.get(response.id);\n\t\t\tif (pending) {\n\t\t\t\tpendingExtensionRequests.delete(response.id);\n\t\t\t\tpending.resolve(response);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle channel data from RPC Client\n\t\tif (\n\t\t\ttypeof parsed === \"object\" &&\n\t\t\tparsed !== null &&\n\t\t\t\"type\" in parsed &&\n\t\t\tparsed.type === \"channel_data\" &&\n\t\t\t\"name\" in parsed\n\t\t) {\n\t\t\tchannelManager.handleInbound(parsed as ChannelDataMessage);\n\t\t\treturn;\n\t\t}\n\n\t\tconst command = parsed as RpcCommand;\n\t\ttry {\n\t\t\tconst response = await handleCommand(command);\n\t\t\tif (response) {\n\t\t\t\toutput(response);\n\t\t\t}\n\t\t\tawait checkShutdownRequested();\n\t\t} catch (commandError: unknown) {\n\t\t\toutput(\n\t\t\t\terror(\n\t\t\t\t\tcommand.id,\n\t\t\t\t\tcommand.type,\n\t\t\t\t\tcommandError instanceof Error ? commandError.message : String(commandError),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t};\n\n\tconst onInputEnd = () => {\n\t\tvoid shutdown();\n\t};\n\tprocess.stdin.on(\"end\", onInputEnd);\n\n\tdetachInput = (() => {\n\t\tconst detachJsonl = attachJsonlLineReader(process.stdin, (line) => {\n\t\t\tvoid handleInputLine(line);\n\t\t});\n\t\treturn () => {\n\t\t\tdetachJsonl();\n\t\t\tprocess.stdin.off(\"end\", onInputEnd);\n\t\t};\n\t})();\n\n\t// Keep process alive forever\n\treturn new Promise(() => {});\n}\n"]}
|