wepscli 0.1.0 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -8
- package/dist/WEPSCLI-shell/agent-runtime-events.js +194 -0
- package/dist/WEPSCLI-shell/agent-runtime-events.js.map +1 -0
- package/dist/WEPSCLI-shell/agent-runtime-helpers.js +117 -0
- package/dist/WEPSCLI-shell/agent-runtime-helpers.js.map +1 -0
- package/dist/WEPSCLI-shell/agent-runtime-types.js +1 -0
- package/dist/WEPSCLI-shell/agent-runtime-types.js.map +1 -0
- package/dist/WEPSCLI-shell/agent-runtime.js +42 -294
- package/dist/WEPSCLI-shell/agent-runtime.js.map +1 -1
- package/dist/WEPSCLI-shell/approval-overlay.js.map +1 -1
- package/dist/WEPSCLI-shell/chat-components.js +13 -6
- package/dist/WEPSCLI-shell/chat-components.js.map +1 -1
- package/dist/WEPSCLI-shell/file-change-preview.js.map +1 -1
- package/dist/WEPSCLI-shell/runtime-recovery.js.map +1 -1
- package/dist/WEPSCLI-shell/session-consistency.js +9 -0
- package/dist/WEPSCLI-shell/session-consistency.js.map +1 -0
- package/dist/WEPSCLI-shell/shell-app.js +169 -259
- package/dist/WEPSCLI-shell/shell-app.js.map +1 -1
- package/dist/WEPSCLI-shell/shell-keyboard.js +135 -0
- package/dist/WEPSCLI-shell/shell-keyboard.js.map +1 -0
- package/dist/WEPSCLI-shell/shell-modes.js.map +1 -1
- package/dist/WEPSCLI-shell/shell-prompt-controller.js +93 -0
- package/dist/WEPSCLI-shell/shell-prompt-controller.js.map +1 -0
- package/dist/WEPSCLI-shell/shell-status.js +16 -0
- package/dist/WEPSCLI-shell/shell-status.js.map +1 -0
- package/dist/WEPSCLI-shell/skill-commands.js +7 -0
- package/dist/WEPSCLI-shell/skill-commands.js.map +1 -0
- package/dist/WEPSCLI-shell/slash-commands.js +68 -7
- package/dist/WEPSCLI-shell/slash-commands.js.map +1 -1
- package/dist/WEPSCLI-shell/tool-approval.js.map +1 -1
- package/dist/WEPSCLI-shell/tool-diff.js.map +1 -1
- package/dist/WEPSCLI-shell/tool-file-changes.js.map +1 -1
- package/dist/WEPSCLI-shell/tool-message-detail.js.map +1 -1
- package/dist/WEPSCLI-shell/tool-messages.js.map +1 -1
- package/dist/WEPSCLI-shell/transcript-panel.js.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/main.js.map +1 -1
- package/dist/skills/skill-add-flow.js +88 -0
- package/dist/skills/skill-add-flow.js.map +1 -0
- package/dist/skills/skill-service.js +123 -0
- package/dist/skills/skill-service.js.map +1 -0
- package/package.json +28 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["join","getAgentDir","createCompactingRuntimeState","createErrorRuntimeState","createIdleRuntimeState","createInterruptedRuntimeState","createRetryingRuntimeState","createRunningRuntimeState","getRuntimeRecoveryHint","createToolApprovalRequest","toolApprovalDecisionReason","createToolMessageState","updateToolMessageState","codingAgentRuntimePromise","loadCodingAgentRuntime","then","module","formatTime","timestamp","Date","now","toLocaleTimeString","hour","minute","createMessageId","record","role","sequence","guessReasoningSupport","modelId","value","toLowerCase","some","token","includes","extractTextBlocks","content","map","item","type","text","thinking","filter","Boolean","extractUserText","message","extractAssistantVisibleText","errorMessage","extractAssistantReasoning","formatRuntimeError","error","Error","String","formatCompactionResultMessage","result","tokensBefore","Number","isFinite","toLocaleString","cancellationToolOutput","reason","toModelDefinition","model","id","name","reasoning","input","cost","output","cacheRead","cacheWrite","contextWindow","maxTokens","getRuntimeSessionDir","cwd","agentDir","safePath","replace","installBeforeToolCallHook","session","handler","addBeforeToolCall","agent","setBeforeToolCall","undefined","WepsAgentRuntime","records","Map","pending","pendingApprovals","currentMode","approvalSequence","constructor","profileService","callbacks","options","process","prompt","sessionId","selection","binding","ensureSession","activePrompts","setRuntimeState","applySelection","isStreaming","streamingBehavior","isAbortLikeError","appendSystemMessage","applyRecoveryState","Math","max","resetRuntimeStateAfterActivity","loadSession","abort","get","hasPendingApproval","values","abortCompaction","catch","cleanupAfterInterruption","compact","customInstructions","compactSession","syncSelection","setMode","mode","dispose","requestId","pendingApproval","entries","resolve","closeApproval","delete","unsubscribe","removeBeforeToolCallHook","existing","promise","createSessionRecord","set","finally","codingAgent","resolved","resolveSelection","authStorage","AuthStorage","inMemory","modelRegistry","ModelRegistry","settingsManager","SettingsManager","sessionDir","sessionManager","runtimeSessionFile","SessionManager","open","create","registerProfileProvider","profile","apiKey","find","label","modelFallbackMessage","createAgentSession","bindExtensions","commandContextActions","waitForIdle","newSession","cancelled","fork","navigateTree","switchSession","reload","onError","extensionPath","activeProfileId","activeModelId","streamingAssistantMessageId","streamingReasoningMessageId","toolMessageIds","toolStates","runtimeState","toolCall","args","signal","handleApprovalRequest","subscribe","event","handleSessionEvent","getSessionFile","updateSessionBinding","restoredMessages","rehydrateTranscript","length","replaceMessages","updateRuntimeState","restored","state","messages","push","time","kind","collapsible","expanded","tool","toolCallId","toolName","status","isError","phase","resolveApproval","nextTool","messageId","patchMessage","clear","profileId","getActiveSelection","getProfile","models","getApiKey","selectedModelId","setRuntimeApiKey","family","registerProvider","baseUrl","api","apiDialect","setModel","appendMessage","fallbackLabel","hint","nextStep","appendToolMessage","appendReasoningMessage","insertReasoningMessageBefore","beforeMessageId","insertMessageBefore","decision","createApprovalId","patchToolState","update","currentTool","request","block","openApproval","Promise","onAbort","has","aborted","addEventListener","once","assistantMessageEvent","delta","appendContent","finalMessage","reasoningMessageId","stopReason","partialResult","willRetry","attempt","maxAttempts","success","finalError"],"sources":["agent-runtime.ts"],"sourcesContent":["import { join } from \"node:path\";\r\nimport type {\r\n\tAuthStorage,\r\n\tAgentSession,\r\n\tAgentSessionEvent,\r\n\tModelRegistry,\r\n\tSessionManager,\r\n\tSettingsManager,\r\n} from \"@mariozechner/pi-coding-agent\";\r\nimport type { AssistantMessage, Model, UserMessage } from \"@mariozechner/pi-ai\";\r\nimport { getAgentDir } from \"../config.js\";\r\nimport type { DiscoveredModel, ProviderProfile, ProviderProfileService } from \"../provider-profiles/index.js\";\r\nimport type { ChatMessage } from \"./chat-components.js\";\r\nimport {\n\tcreateCompactingRuntimeState,\n\tcreateErrorRuntimeState,\n\tcreateIdleRuntimeState,\n\tcreateInterruptedRuntimeState,\n\tcreateRetryingRuntimeState,\n\tcreateRunningRuntimeState,\n\ttype RuntimeSessionState,\n} from \"./runtime-status.js\";\nimport { getRuntimeRecoveryHint } from \"./runtime-recovery.js\";\nimport type { ShellModeId } from \"./shell-modes.js\";\nimport type { TranscriptMessagePatch } from \"./transcript-state.js\";\nimport {\n\tcreateToolApprovalRequest,\n\ttoolApprovalDecisionReason,\n\ttype ToolApprovalDecision,\r\n\ttype ToolApprovalRequest,\r\n} from \"./tool-approval.js\";\r\nimport { createToolMessageState, updateToolMessageState, type ToolMessageState } from \"./tool-messages.js\";\r\n\r\nexport interface RuntimeSelection {\r\n\tprofileId?: string;\r\n\tmodelId?: string;\r\n}\r\n\r\ninterface RuntimeCallbacks {\r\n\tappendMessage(sessionId: string, message: ChatMessage): void;\r\n\tinsertMessageBefore(sessionId: string, beforeMessageId: string, message: ChatMessage): void;\r\n\treplaceMessages(sessionId: string, messages: ChatMessage[]): void;\r\n\tpatchMessage(sessionId: string, messageId: string, patch: TranscriptMessagePatch): void;\r\n\topenApproval(sessionId: string, request: ToolApprovalRequest): void;\r\n\tcloseApproval(sessionId: string, requestId: string): void;\r\n\tupdateRuntimeState(sessionId: string, state: RuntimeSessionState): void;\r\n\tupdateSessionBinding(sessionId: string, binding: { runtimeSessionFile?: string }): void;\r\n}\r\n\r\ninterface RuntimeSessionRecord {\r\n\tsession: AgentSession;\r\n\tunsubscribe: () => void;\r\n\tremoveBeforeToolCallHook: () => void;\r\n\tmodelRegistry: ModelRegistry;\r\n\tauthStorage: AuthStorage;\r\n\tactiveProfileId?: string;\r\n\tactiveModelId?: string;\r\n\tstreamingAssistantMessageId?: string;\r\n\tstreamingReasoningMessageId?: string;\r\n\ttoolMessageIds: Map<string, string>;\r\n\ttoolStates: Map<string, ToolMessageState>;\r\n\tactivePrompts: number;\r\n\truntimeState: RuntimeSessionState;\r\n\tsequence: number;\r\n}\r\n\r\ninterface PendingApprovalRecord {\r\n\tsessionId: string;\r\n\tresolve: (decision: ToolApprovalDecision) => void;\r\n}\r\n\r\ninterface RuntimeSessionBinding {\n\truntimeSessionFile?: string;\n}\n\ntype BeforeToolCallHandler = (\n\tcontext: {\n\t\ttoolCall: { id: string; name: string; arguments: unknown };\n\t\targs: unknown;\n\t},\n\tsignal?: AbortSignal,\n) => Promise<{ block?: boolean; reason?: string } | undefined>;\n\r\ntype ProviderRegistrationConfig = Parameters<ModelRegistry[\"registerProvider\"]>[1];\r\ntype ProviderModelDefinition = NonNullable<ProviderRegistrationConfig[\"models\"]>[number];\r\ntype CodingAgentRuntime = {\r\n\tAuthStorage: typeof import(\"@mariozechner/pi-coding-agent\").AuthStorage;\r\n\tcreateAgentSession: typeof import(\"@mariozechner/pi-coding-agent\").createAgentSession;\r\n\tModelRegistry: typeof import(\"@mariozechner/pi-coding-agent\").ModelRegistry;\r\n\tSessionManager: typeof import(\"@mariozechner/pi-coding-agent\").SessionManager;\r\n\tSettingsManager: typeof import(\"@mariozechner/pi-coding-agent\").SettingsManager;\r\n};\r\n\r\nlet codingAgentRuntimePromise: Promise<CodingAgentRuntime> | undefined;\r\n\r\nasync function loadCodingAgentRuntime(): Promise<CodingAgentRuntime> {\n\tif (!codingAgentRuntimePromise) {\n\t\tcodingAgentRuntimePromise = import(\"@mariozechner/pi-coding-agent\").then((module) => module as CodingAgentRuntime);\n\t}\n\treturn codingAgentRuntimePromise;\n}\n\r\nfunction formatTime(timestamp?: number): string {\r\n\treturn new Date(timestamp ?? Date.now()).toLocaleTimeString(\"en-US\", {\r\n\t\thour: \"2-digit\",\r\n\t\tminute: \"2-digit\",\r\n\t});\r\n}\r\n\r\nfunction createMessageId(record: RuntimeSessionRecord, role: ChatMessage[\"role\"]): string {\r\n\trecord.sequence += 1;\r\n\treturn `runtime:${role}:${record.sequence}`;\r\n}\r\n\r\nfunction guessReasoningSupport(modelId: string): boolean {\r\n\tconst value = modelId.toLowerCase();\r\n\treturn [\r\n\t\t\"gpt-5\",\r\n\t\t\"gpt-4.1\",\r\n\t\t\"o1\",\r\n\t\t\"o3\",\r\n\t\t\"o4\",\r\n\t\t\"claude-3-7\",\r\n\t\t\"claude-sonnet-4\",\r\n\t\t\"claude-opus-4\",\r\n\t\t\"gemini-2.5\",\r\n\t\t\"reasoner\",\r\n\t\t\"thinking\",\r\n\t].some((token) => value.includes(token));\r\n}\r\n\r\nfunction extractTextBlocks(content: Array<{ type: string; [key: string]: unknown }>): string {\r\n\treturn content\r\n\t\t.map((item) => {\r\n\t\t\tif (item.type === \"text\" && typeof item.text === \"string\") {\r\n\t\t\t\treturn item.text;\r\n\t\t\t}\r\n\t\t\tif (item.type === \"image\") {\r\n\t\t\t\treturn \"[image]\";\r\n\t\t\t}\r\n\t\t\tif (item.type === \"thinking\" && typeof item.thinking === \"string\") {\r\n\t\t\t\treturn item.thinking;\r\n\t\t\t}\r\n\t\t\treturn \"\";\r\n\t\t})\r\n\t\t.filter(Boolean)\r\n\t\t.join(\"\\n\\n\");\r\n}\r\n\r\nfunction extractUserText(message: UserMessage): string {\r\n\tif (typeof message.content === \"string\") {\r\n\t\treturn message.content;\r\n\t}\r\n\treturn extractTextBlocks(message.content as unknown as Array<{ type: string; [key: string]: unknown }>);\r\n}\r\n\r\nfunction extractAssistantVisibleText(message: AssistantMessage): string {\r\n\tconst text = extractTextBlocks(\r\n\t\tmessage.content\r\n\t\t\t.filter((item): item is Extract<AssistantMessage[\"content\"][number], { type: \"text\" }> => item.type === \"text\")\r\n\t\t\t.map((item) => ({ type: item.type, text: item.text })),\r\n\t);\r\n\tif (text) {\r\n\t\treturn text;\r\n\t}\r\n\tif (message.errorMessage) {\r\n\t\treturn message.errorMessage;\r\n\t}\r\n\treturn \"\";\r\n}\r\n\r\nfunction extractAssistantReasoning(message: AssistantMessage): string {\r\n\treturn extractTextBlocks(\r\n\t\tmessage.content\r\n\t\t\t.filter((item): item is Extract<AssistantMessage[\"content\"][number], { type: \"thinking\" }> => item.type === \"thinking\")\r\n\t\t\t.map((item) => ({ type: item.type, thinking: item.thinking })),\r\n\t);\r\n}\r\n\r\nfunction formatRuntimeError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction formatCompactionResultMessage(result: { tokensBefore?: number }): string {\n\tif (typeof result.tokensBefore === \"number\" && Number.isFinite(result.tokensBefore)) {\n\t\treturn `Context compacted from ${result.tokensBefore.toLocaleString(\"en-US\")} tokens.`;\n\t}\n\treturn \"Context compacted.\";\n}\n\nfunction cancellationToolOutput(reason: string): { content: Array<{ type: \"text\"; text: string }> } {\n\treturn {\n\t\tcontent: [{ type: \"text\", text: reason }],\n\t};\n}\n\r\nfunction toModelDefinition(model: DiscoveredModel): ProviderModelDefinition {\r\n\treturn {\r\n\t\tid: model.id,\r\n\t\tname: model.name,\r\n\t\treasoning: guessReasoningSupport(model.id),\r\n\t\tinput: [\"text\", \"image\"],\r\n\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\r\n\t\tcontextWindow: 128_000,\r\n\t\tmaxTokens: 16_384,\r\n\t};\r\n}\r\n\r\nfunction getRuntimeSessionDir(cwd: string, agentDir: string): string {\n\tconst safePath = `--${cwd.replace(/^[/\\\\]/, \"\").replace(/[/\\\\:]/g, \"-\")}--`;\n\treturn join(agentDir, \"sessions\", safePath);\n}\n\nfunction installBeforeToolCallHook(session: AgentSession, handler: BeforeToolCallHandler): () => void {\n\tif (typeof session.addBeforeToolCall === \"function\") {\n\t\treturn session.addBeforeToolCall(handler);\n\t}\n\n\tif (typeof session.agent?.setBeforeToolCall === \"function\") {\n\t\tsession.agent.setBeforeToolCall(handler);\n\t\treturn () => {\n\t\t\tsession.agent.setBeforeToolCall?.(undefined);\n\t\t};\n\t}\n\n\tthrow new Error(\"The installed pi-coding-agent runtime does not expose a before-tool-call hook API.\");\n}\n\r\nexport class WepsAgentRuntime {\n\tprivate readonly records = new Map<string, RuntimeSessionRecord>();\n\tprivate readonly pending = new Map<string, Promise<RuntimeSessionRecord>>();\n\tprivate readonly pendingApprovals = new Map<string, PendingApprovalRecord>();\n\tprivate readonly cwd: string;\n\tprivate readonly agentDir: string;\n\tprivate currentMode: ShellModeId = \"agent\";\n\tprivate approvalSequence = 0;\n\r\n\tconstructor(\r\n\t\tprivate readonly profileService: ProviderProfileService,\r\n\t\tprivate readonly callbacks: RuntimeCallbacks,\r\n\t\toptions: {\r\n\t\t\tcwd?: string;\r\n\t\t\tagentDir?: string;\r\n\t\t} = {},\r\n\t) {\r\n\t\tthis.cwd = options.cwd ?? process.cwd();\r\n\t\tthis.agentDir = options.agentDir ?? getAgentDir();\r\n\t}\r\n\r\n\tasync prompt(\r\n\t\tsessionId: string,\r\n\t\ttext: string,\r\n\t\tselection: RuntimeSelection,\r\n\t\tbinding: RuntimeSessionBinding = {},\r\n\t): Promise<void> {\r\n\t\tconst record = await this.ensureSession(sessionId, selection, binding);\r\n\t\trecord.activePrompts += 1;\r\n\t\tthis.setRuntimeState(sessionId, record, createRunningRuntimeState());\r\n\t\ttry {\r\n\t\t\tawait this.applySelection(record, selection);\r\n\t\t\tawait record.session.prompt(text, record.session.isStreaming ? { streamingBehavior: \"steer\" } : undefined);\r\n\t\t} catch (error) {\n\t\t\tif (!this.isAbortLikeError(error)) {\n\t\t\t\tconst message = formatRuntimeError(error);\n\t\t\t\tthis.appendSystemMessage(sessionId, record, message);\n\t\t\t\tthis.applyRecoveryState(sessionId, record, message, \"Request failed - ready\");\n\t\t\t}\n\t\t} finally {\n\t\t\trecord.activePrompts = Math.max(0, record.activePrompts - 1);\r\n\t\t\tthis.resetRuntimeStateAfterActivity(sessionId, record);\r\n\t\t}\r\n\t}\r\n\r\n\tasync loadSession(sessionId: string, selection: RuntimeSelection, binding: RuntimeSessionBinding = {}): Promise<void> {\r\n\t\tawait this.ensureSession(sessionId, selection, binding);\r\n\t}\r\n\r\n\tasync abort(sessionId: string): Promise<boolean> {\n\t\tconst record = this.records.get(sessionId);\n\t\tif (!record) {\n\t\t\treturn false;\n\t\t}\r\n\t\tconst hasPendingApproval = [...this.pendingApprovals.values()].some((pending) => pending.sessionId === sessionId);\r\n\t\tif (!hasPendingApproval && record.activePrompts === 0) {\r\n\t\t\treturn false;\r\n\t\t}\n\t\trecord.session.abortCompaction?.();\n\t\tawait record.session.abort().catch(() => {});\n\t\tthis.cleanupAfterInterruption(sessionId, record, \"Cancelled before completion.\");\n\t\tthis.appendSystemMessage(sessionId, record, \"Request interrupted. You can continue with a new prompt.\");\n\t\tthis.setRuntimeState(\n\t\t\tsessionId,\n\t\t\trecord,\n\t\t\tcreateInterruptedRuntimeState(\"Interrupted - ready\", \"The current request was cancelled.\"),\n\t\t);\n\t\trecord.activePrompts = 0;\n\t\treturn true;\n\t}\n\n\tasync compact(\n\t\tsessionId: string,\n\t\tselection: RuntimeSelection,\n\t\tbinding: RuntimeSessionBinding = {},\n\t\tcustomInstructions?: string,\n\t): Promise<boolean> {\n\t\tconst record = await this.ensureSession(sessionId, selection, binding);\n\t\tconst compactSession = record.session as AgentSession & {\n\t\t\tcompact?: (customInstructions?: string) => Promise<{ tokensBefore?: number }>;\n\t\t};\n\n\t\tif (typeof compactSession.compact !== \"function\") {\n\t\t\tthis.appendSystemMessage(sessionId, record, \"Manual compaction is not available in the current runtime.\");\n\t\t\tthis.setRuntimeState(sessionId, record, createErrorRuntimeState(\"Compaction unavailable - ready\"));\n\t\t\treturn false;\n\t\t}\n\n\t\trecord.activePrompts += 1;\n\t\tthis.setRuntimeState(sessionId, record, createCompactingRuntimeState(\"Compacting context\"));\n\t\ttry {\n\t\t\tawait this.applySelection(record, selection);\n\t\t\tconst result = await compactSession.compact(customInstructions);\n\t\t\tthis.appendSystemMessage(sessionId, record, formatCompactionResultMessage(result ?? {}));\n\t\t\tthis.setRuntimeState(sessionId, record, createIdleRuntimeState());\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tif (this.isAbortLikeError(error)) {\n\t\t\t\tthis.appendSystemMessage(sessionId, record, \"Compaction cancelled.\");\n\t\t\t\tthis.setRuntimeState(\n\t\t\t\t\tsessionId,\n\t\t\t\t\trecord,\n\t\t\t\t\tcreateInterruptedRuntimeState(\"Compaction cancelled - ready\", \"You can continue with a new prompt.\"),\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst message = formatRuntimeError(error);\n\t\t\tthis.appendSystemMessage(sessionId, record, `Compaction failed: ${message}`);\n\t\t\tthis.applyRecoveryState(sessionId, record, message, \"Compaction failed - ready\");\n\t\t\treturn false;\n\t\t} finally {\n\t\t\trecord.activePrompts = Math.max(0, record.activePrompts - 1);\n\t\t\tthis.resetRuntimeStateAfterActivity(sessionId, record);\n\t\t}\n\t}\n\n\tasync syncSelection(sessionId: string, selection: RuntimeSelection): Promise<void> {\n\t\tconst record = this.records.get(sessionId);\n\t\tif (!record) {\n\t\t\treturn;\n\t\t}\r\n\t\ttry {\n\t\t\tawait this.applySelection(record, selection);\n\t\t} catch (error) {\n\t\t\tconst message = formatRuntimeError(error);\n\t\t\tthis.appendSystemMessage(sessionId, record, message);\n\t\t\tthis.applyRecoveryState(sessionId, record, message, \"Selection failed - ready\");\n\t\t}\n\t}\n\n\tsetMode(mode: ShellModeId): void {\n\t\tthis.currentMode = mode;\n\t}\n\r\n\tdispose(): void {\r\n\t\tfor (const [requestId, pendingApproval] of this.pendingApprovals.entries()) {\r\n\t\t\tpendingApproval.resolve(\"cancel\");\r\n\t\t\tthis.callbacks.closeApproval(pendingApproval.sessionId, requestId);\r\n\t\t\tthis.pendingApprovals.delete(requestId);\r\n\t\t}\r\n\t\tfor (const [sessionId, record] of this.records.entries()) {\r\n\t\t\trecord.unsubscribe();\r\n\t\t\trecord.removeBeforeToolCallHook();\r\n\t\t\tvoid record.session.abort().catch(() => {});\r\n\t\t\trecord.session.dispose();\r\n\t\t\tthis.records.delete(sessionId);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async ensureSession(\r\n\t\tsessionId: string,\r\n\t\tselection: RuntimeSelection,\r\n\t\tbinding: RuntimeSessionBinding = {},\r\n\t): Promise<RuntimeSessionRecord> {\r\n\t\tconst existing = this.records.get(sessionId);\r\n\t\tif (existing) {\r\n\t\t\treturn existing;\r\n\t\t}\r\n\r\n\t\tconst pending = this.pending.get(sessionId);\r\n\t\tif (pending) {\r\n\t\t\treturn pending;\r\n\t\t}\r\n\r\n\t\tconst promise = this.createSessionRecord(sessionId, selection, binding)\r\n\t\t\t.then((record) => {\r\n\t\t\t\tthis.records.set(sessionId, record);\r\n\t\t\t\treturn record;\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.pending.delete(sessionId);\r\n\t\t\t});\r\n\r\n\t\tthis.pending.set(sessionId, promise);\r\n\t\treturn promise;\r\n\t}\r\n\r\n\tprivate async createSessionRecord(\r\n\t\tsessionId: string,\r\n\t\tselection: RuntimeSelection,\r\n\t\tbinding: RuntimeSessionBinding,\r\n\t): Promise<RuntimeSessionRecord> {\r\n\t\tconst codingAgent = await loadCodingAgentRuntime();\r\n\t\tconst resolved = this.resolveSelection(selection);\r\n\t\tconst authStorage = codingAgent.AuthStorage.inMemory();\r\n\t\tconst modelRegistry = new codingAgent.ModelRegistry(authStorage, join(this.agentDir, \"runtime-models.json\"));\r\n\t\tconst settingsManager = codingAgent.SettingsManager.inMemory();\r\n\t\tconst sessionDir = getRuntimeSessionDir(this.cwd, this.agentDir);\r\n\t\tconst sessionManager = binding.runtimeSessionFile\r\n\t\t\t? codingAgent.SessionManager.open(binding.runtimeSessionFile, sessionDir)\r\n\t\t\t: codingAgent.SessionManager.create(this.cwd, sessionDir);\r\n\r\n\t\tthis.registerProfileProvider(modelRegistry, authStorage, resolved.profile, resolved.modelId, resolved.apiKey);\r\n\r\n\t\tconst model = modelRegistry.find(resolved.profile.id, resolved.modelId);\r\n\t\tif (!model) {\r\n\t\t\tthrow new Error(`Unable to register model ${resolved.modelId} for ${resolved.profile.label}`);\r\n\t\t}\r\n\r\n\t\tconst { session, modelFallbackMessage } = await codingAgent.createAgentSession({\r\n\t\t\tcwd: this.cwd,\r\n\t\t\tagentDir: this.agentDir,\r\n\t\t\tauthStorage,\r\n\t\t\tmodelRegistry,\r\n\t\t\tsettingsManager,\r\n\t\t\tsessionManager,\r\n\t\t\tmodel,\r\n\t\t});\r\n\r\n\t\tawait session.bindExtensions({\r\n\t\t\tcommandContextActions: {\r\n\t\t\t\twaitForIdle: () => session.agent.waitForIdle(),\r\n\t\t\t\tnewSession: async () => ({ cancelled: true }),\r\n\t\t\t\tfork: async () => ({ cancelled: true }),\r\n\t\t\t\tnavigateTree: async () => ({ cancelled: true }),\r\n\t\t\t\tswitchSession: async () => ({ cancelled: true }),\r\n\t\t\t\treload: async () => {},\r\n\t\t\t},\r\n\t\t\tonError: (error) => {\r\n\t\t\t\tconst record = this.records.get(sessionId);\r\n\t\t\t\tif (record) {\r\n\t\t\t\t\tthis.appendSystemMessage(sessionId, record, `Extension error (${error.extensionPath}): ${error.error}`);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tconst record: RuntimeSessionRecord = {\r\n\t\t\tsession,\r\n\t\t\tunsubscribe: () => {},\r\n\t\t\tremoveBeforeToolCallHook: () => {},\r\n\t\t\tmodelRegistry,\r\n\t\t\tauthStorage,\r\n\t\t\tactiveProfileId: resolved.profile.id,\r\n\t\t\tactiveModelId: resolved.modelId,\r\n\t\t\tstreamingAssistantMessageId: undefined,\r\n\t\t\tstreamingReasoningMessageId: undefined,\r\n\t\t\ttoolMessageIds: new Map(),\r\n\t\t\ttoolStates: new Map(),\r\n\t\t\tactivePrompts: 0,\r\n\t\t\truntimeState: createIdleRuntimeState(),\r\n\t\t\tsequence: 0,\r\n\t\t};\r\n\r\n\t\trecord.removeBeforeToolCallHook = installBeforeToolCallHook(session, async ({ toolCall, args }, signal) =>\n\t\t\tthis.handleApprovalRequest(sessionId, record, toolCall.id, toolCall.name, args, signal),\n\t\t);\n\t\trecord.unsubscribe = session.subscribe((event) => {\r\n\t\t\tthis.handleSessionEvent(sessionId, record, event);\r\n\t\t});\r\n\r\n\t\tconst runtimeSessionFile = session.sessionManager.getSessionFile();\r\n\t\tif (runtimeSessionFile && runtimeSessionFile !== binding.runtimeSessionFile) {\r\n\t\t\tthis.callbacks.updateSessionBinding(sessionId, { runtimeSessionFile });\r\n\t\t}\r\n\r\n\t\tconst restoredMessages = this.rehydrateTranscript(record);\r\n\t\tif (restoredMessages.length > 0) {\r\n\t\t\tthis.callbacks.replaceMessages(sessionId, restoredMessages);\r\n\t\t}\r\n\r\n\t\tif (modelFallbackMessage) {\r\n\t\t\tthis.appendSystemMessage(sessionId, record, modelFallbackMessage);\r\n\t\t}\r\n\t\tthis.callbacks.updateRuntimeState(sessionId, record.runtimeState);\r\n\r\n\t\treturn record;\r\n\t}\r\n\r\n\tprivate rehydrateTranscript(record: RuntimeSessionRecord): ChatMessage[] {\r\n\t\tconst restored: ChatMessage[] = [];\r\n\r\n\t\tfor (const message of record.session.state.messages) {\r\n\t\t\tif (message.role === \"user\") {\r\n\t\t\t\tconst text = extractUserText(message);\r\n\t\t\t\tif (!text) continue;\r\n\t\t\t\trestored.push({\r\n\t\t\t\t\tid: createMessageId(record, \"user\"),\r\n\t\t\t\t\trole: \"user\",\r\n\t\t\t\t\tcontent: text,\r\n\t\t\t\t\ttime: formatTime(message.timestamp),\r\n\t\t\t\t});\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (message.role === \"assistant\") {\r\n\t\t\t\tconst reasoning = extractAssistantReasoning(message);\r\n\t\t\t\tif (reasoning) {\r\n\t\t\t\t\trestored.push({\r\n\t\t\t\t\t\tid: createMessageId(record, \"assistant\"),\r\n\t\t\t\t\t\trole: \"assistant\",\r\n\t\t\t\t\t\tcontent: reasoning,\r\n\t\t\t\t\t\ttime: formatTime(message.timestamp),\r\n\t\t\t\t\t\tkind: \"reasoning\",\r\n\t\t\t\t\t\tcollapsible: true,\r\n\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst content = extractAssistantVisibleText(message);\r\n\t\t\t\tif (content) {\r\n\t\t\t\t\trestored.push({\r\n\t\t\t\t\t\tid: createMessageId(record, \"assistant\"),\r\n\t\t\t\t\t\trole: \"assistant\",\r\n\t\t\t\t\t\tcontent,\r\n\t\t\t\t\t\ttime: formatTime(message.timestamp),\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (message.role === \"toolResult\") {\r\n\t\t\t\tconst tool = updateToolMessageState(\r\n\t\t\t\t\tcreateToolMessageState(message.toolCallId, message.toolName, undefined),\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstatus: message.isError ? \"failed\" : \"completed\",\r\n\t\t\t\t\t\toutput: message,\r\n\t\t\t\t\t},\r\n\t\t\t\t);\r\n\t\t\t\trestored.push({\r\n\t\t\t\t\tid: createMessageId(record, \"system\"),\r\n\t\t\t\t\trole: \"system\",\r\n\t\t\t\t\tcontent: \"\",\r\n\t\t\t\t\ttime: formatTime(message.timestamp),\r\n\t\t\t\t\tkind: \"tool\",\r\n\t\t\t\t\tcollapsible: true,\r\n\t\t\t\t\texpanded: false,\r\n\t\t\t\t\ttool,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn restored;\r\n\t}\r\n\r\n\tprivate isAbortLikeError(error: unknown): boolean {\r\n\t\tconst message = formatRuntimeError(error).toLowerCase();\r\n\t\treturn message.includes(\"aborted\") || message.includes(\"cancelled\") || message.includes(\"canceled\");\r\n\t}\r\n\r\n\tprivate setRuntimeState(sessionId: string, record: RuntimeSessionRecord, state: RuntimeSessionState): void {\r\n\t\trecord.runtimeState = state;\r\n\t\tthis.callbacks.updateRuntimeState(sessionId, state);\r\n\t}\r\n\r\n\tprivate resetRuntimeStateAfterActivity(sessionId: string, record: RuntimeSessionRecord): void {\n\t\tif (record.activePrompts > 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (record.runtimeState.phase === \"running\" || record.runtimeState.phase === \"retrying\" || record.runtimeState.phase === \"compacting\") {\n\t\t\tthis.setRuntimeState(sessionId, record, createIdleRuntimeState());\n\t\t}\n\t}\n\n\tprivate cleanupAfterInterruption(sessionId: string, record: RuntimeSessionRecord, reason: string): void {\n\t\tfor (const [requestId, pendingApproval] of [...this.pendingApprovals.entries()]) {\n\t\t\tif (pendingApproval.sessionId !== sessionId) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.resolveApproval(requestId, \"cancel\");\n\t\t}\n\n\t\tfor (const [toolCallId, tool] of record.toolStates.entries()) {\n\t\t\tif (tool.status === \"completed\" || tool.status === \"failed\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nextTool = updateToolMessageState(tool, {\n\t\t\t\tstatus: \"failed\",\n\t\t\t\toutput: cancellationToolOutput(reason),\n\t\t\t});\n\t\t\trecord.toolStates.set(toolCallId, nextTool);\n\t\t\tconst messageId = record.toolMessageIds.get(toolCallId);\n\t\t\tif (messageId) {\n\t\t\t\tthis.callbacks.patchMessage(sessionId, messageId, {\n\t\t\t\t\ttool: nextTool,\n\t\t\t\t\ttime: formatTime(),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\trecord.toolMessageIds.clear();\n\t\trecord.toolStates.clear();\n\t\trecord.streamingAssistantMessageId = undefined;\n\t\trecord.streamingReasoningMessageId = undefined;\n\t}\n\r\n\tprivate resolveSelection(selection: RuntimeSelection): { profile: ProviderProfile; modelId: string; apiKey: string } {\r\n\t\tconst profileId = selection.profileId ?? this.profileService.getActiveSelection().profileId;\r\n\t\tif (!profileId) {\r\n\t\t\tthrow new Error(\"No provider profile selected\");\r\n\t\t}\r\n\r\n\t\tconst profile = this.profileService.getProfile(profileId);\r\n\t\tif (!profile) {\r\n\t\t\tthrow new Error(`Unknown provider profile: ${profileId}`);\r\n\t\t}\r\n\r\n\t\tconst modelId = selection.modelId ?? profile.models[0]?.id;\r\n\t\tif (!modelId) {\r\n\t\t\tthrow new Error(`No model configured for ${profile.label}`);\r\n\t\t}\r\n\r\n\t\tconst apiKey = this.profileService.getApiKey(profile.id);\r\n\t\tif (!apiKey) {\r\n\t\t\tthrow new Error(`No API key configured for ${profile.label}`);\r\n\t\t}\r\n\r\n\t\treturn { profile, modelId, apiKey };\r\n\t}\r\n\r\n\tprivate registerProfileProvider(\r\n\t\tmodelRegistry: ModelRegistry,\r\n\t\tauthStorage: AuthStorage,\r\n\t\tprofile: ProviderProfile,\r\n\t\tselectedModelId: string,\r\n\t\tapiKey: string,\r\n\t): void {\r\n\t\tauthStorage.setRuntimeApiKey(profile.id, apiKey);\r\n\r\n\t\tconst models = [...profile.models];\r\n\t\tif (!models.some((model) => model.id === selectedModelId)) {\r\n\t\t\tmodels.push({\r\n\t\t\t\tid: selectedModelId,\r\n\t\t\t\tname: selectedModelId,\r\n\t\t\t\tfamily: profile.family,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tmodelRegistry.registerProvider(profile.id, {\r\n\t\t\tbaseUrl: profile.baseUrl,\r\n\t\t\tapiKey,\r\n\t\t\tapi: profile.apiDialect,\r\n\t\t\tmodels: models.map((model) => toModelDefinition(model)),\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async applySelection(record: RuntimeSessionRecord, selection: RuntimeSelection): Promise<void> {\r\n\t\tconst resolved = this.resolveSelection(selection);\r\n\t\tif (record.activeProfileId === resolved.profile.id && record.activeModelId === resolved.modelId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.registerProfileProvider(record.modelRegistry, record.authStorage, resolved.profile, resolved.modelId, resolved.apiKey);\r\n\t\tconst model = record.modelRegistry.find(resolved.profile.id, resolved.modelId);\r\n\t\tif (!model) {\r\n\t\t\tthrow new Error(`Model ${resolved.modelId} is unavailable for ${resolved.profile.label}`);\r\n\t\t}\r\n\r\n\t\tawait record.session.setModel(model as Model<any>);\r\n\t\trecord.activeProfileId = resolved.profile.id;\r\n\t\trecord.activeModelId = resolved.modelId;\r\n\t}\r\n\r\n\tprivate appendSystemMessage(sessionId: string, record: RuntimeSessionRecord, content: string): void {\n\t\tthis.callbacks.appendMessage(sessionId, {\n\t\t\tid: createMessageId(record, \"system\"),\r\n\t\t\trole: \"system\",\r\n\t\t\tcontent,\r\n\t\t\ttime: formatTime(),\r\n\t\t\tkind: \"status\",\n\t\t});\n\t}\n\n\tprivate applyRecoveryState(sessionId: string, record: RuntimeSessionRecord, message: string, fallbackLabel: string): void {\n\t\tconst hint = getRuntimeRecoveryHint(message);\n\t\tthis.setRuntimeState(sessionId, record, createErrorRuntimeState(hint?.label ?? fallbackLabel, message));\n\t\tif (hint?.nextStep) {\n\t\t\tthis.appendSystemMessage(sessionId, record, hint.nextStep);\n\t\t}\n\t}\n\r\n\tprivate appendToolMessage(sessionId: string, record: RuntimeSessionRecord, tool: ToolMessageState): string {\r\n\t\tconst id = createMessageId(record, \"system\");\r\n\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\tid,\r\n\t\t\trole: \"system\",\r\n\t\t\tcontent: \"\",\r\n\t\t\ttime: formatTime(),\r\n\t\t\tkind: \"tool\",\r\n\t\t\tcollapsible: true,\r\n\t\t\texpanded: false,\r\n\t\t\ttool,\r\n\t\t});\r\n\t\treturn id;\r\n\t}\r\n\r\n\tprivate appendReasoningMessage(sessionId: string, record: RuntimeSessionRecord, content: string): void {\r\n\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\tid: createMessageId(record, \"assistant\"),\r\n\t\t\trole: \"assistant\",\r\n\t\t\tcontent,\r\n\t\t\ttime: formatTime(),\r\n\t\t\tkind: \"reasoning\",\r\n\t\t\tcollapsible: true,\r\n\t\t\texpanded: false,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate insertReasoningMessageBefore(\r\n\t\tsessionId: string,\r\n\t\trecord: RuntimeSessionRecord,\r\n\t\tbeforeMessageId: string,\r\n\t\tcontent: string,\r\n\t): string {\r\n\t\tconst id = createMessageId(record, \"assistant\");\r\n\t\tthis.callbacks.insertMessageBefore(sessionId, beforeMessageId, {\r\n\t\t\tid,\r\n\t\t\trole: \"assistant\",\r\n\t\t\tcontent,\r\n\t\t\ttime: formatTime(),\r\n\t\t\tkind: \"reasoning\",\r\n\t\t\tcollapsible: true,\r\n\t\t\texpanded: false,\r\n\t\t});\r\n\t\treturn id;\r\n\t}\r\n\r\n\tresolveApproval(requestId: string, decision: ToolApprovalDecision): void {\r\n\t\tconst pendingApproval = this.pendingApprovals.get(requestId);\r\n\t\tif (!pendingApproval) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pendingApprovals.delete(requestId);\r\n\t\tthis.callbacks.closeApproval(pendingApproval.sessionId, requestId);\r\n\t\tpendingApproval.resolve(decision);\r\n\t}\r\n\r\n\tprivate createApprovalId(): string {\r\n\t\tthis.approvalSequence += 1;\r\n\t\treturn `approval:${this.approvalSequence}`;\r\n\t}\r\n\r\n\tprivate patchToolState(\r\n\t\tsessionId: string,\r\n\t\trecord: RuntimeSessionRecord,\r\n\t\ttoolCallId: string,\r\n\t\ttoolName: string,\r\n\t\tupdate: {\r\n\t\t\tstatus?: ToolMessageState[\"status\"];\r\n\t\t\targs?: unknown;\r\n\t\t\toutput?: unknown;\r\n\t\t},\r\n\t): void {\r\n\t\tconst messageId = record.toolMessageIds.get(toolCallId);\r\n\t\tconst currentTool = record.toolStates.get(toolCallId) ?? createToolMessageState(toolCallId, toolName, update.args);\r\n\t\tconst nextTool = updateToolMessageState(currentTool, update);\r\n\t\trecord.toolStates.set(toolCallId, nextTool);\r\n\t\tif (messageId) {\r\n\t\t\tthis.callbacks.patchMessage(sessionId, messageId, {\r\n\t\t\t\ttool: nextTool,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async handleApprovalRequest(\n\t\tsessionId: string,\n\t\trecord: RuntimeSessionRecord,\n\t\ttoolCallId: string,\n\t\ttoolName: string,\n\t\targs: unknown,\r\n\t\tsignal?: AbortSignal,\r\n\t): Promise<{ block?: boolean; reason?: string } | undefined> {\n\t\tconst request = createToolApprovalRequest(this.createApprovalId(), sessionId, toolCallId, toolName, args);\n\t\tif (!request) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (this.currentMode === \"read-only\") {\n\t\t\tconst reason = `${toolName} was blocked because read-only mode is active.`;\n\t\t\tthis.appendSystemMessage(sessionId, record, reason);\n\t\t\tthis.patchToolState(sessionId, record, toolCallId, toolName, {\n\t\t\t\tstatus: \"failed\",\n\t\t\t\targs,\n\t\t\t\toutput: cancellationToolOutput(reason),\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tblock: true,\n\t\t\t\treason,\n\t\t\t};\n\t\t}\n\n\t\tif (this.currentMode === \"auto-approve\") {\n\t\t\tthis.appendSystemMessage(sessionId, record, `Auto-approved ${toolName} in auto-approve mode.`);\n\t\t\treturn undefined;\n\t\t}\n\n\t\tthis.patchToolState(sessionId, record, toolCallId, toolName, {\n\t\t\tstatus: \"awaiting_approval\",\n\t\t\targs,\n\t\t});\r\n\t\tthis.setRuntimeState(\r\n\t\t\tsessionId,\r\n\t\t\trecord,\r\n\t\t\tcreateRunningRuntimeState(`Awaiting approval for ${toolName}`),\r\n\t\t);\r\n\t\tthis.callbacks.openApproval(sessionId, request);\r\n\r\n\t\tconst decision = await new Promise<ToolApprovalDecision>((resolve) => {\r\n\t\t\tthis.pendingApprovals.set(request.id, {\r\n\t\t\t\tsessionId,\r\n\t\t\t\tresolve,\r\n\t\t\t});\r\n\r\n\t\t\tif (!signal) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst onAbort = () => {\r\n\t\t\t\tif (!this.pendingApprovals.has(request.id)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.pendingApprovals.delete(request.id);\r\n\t\t\t\tthis.callbacks.closeApproval(sessionId, request.id);\r\n\t\t\t\tresolve(\"cancel\");\r\n\t\t\t};\r\n\r\n\t\t\tif (signal.aborted) {\r\n\t\t\t\tonAbort();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\r\n\t\t});\r\n\r\n\t\tif (decision === \"allow\") {\n\t\t\tthis.patchToolState(sessionId, record, toolCallId, toolName, {\n\t\t\t\tstatus: \"running\",\n\t\t\t\targs,\n\t\t\t});\n\t\t\tthis.setRuntimeState(sessionId, record, createRunningRuntimeState());\r\n\t\t\treturn undefined;\r\n\t\t}\n\n\t\tthis.patchToolState(sessionId, record, toolCallId, toolName, {\n\t\t\tstatus: \"failed\",\n\t\t\targs,\n\t\t\toutput: cancellationToolOutput(toolApprovalDecisionReason(decision, request)),\n\t\t});\n\n\t\treturn {\n\t\t\tblock: true,\n\t\t\treason: toolApprovalDecisionReason(decision, request),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate handleSessionEvent(sessionId: string, record: RuntimeSessionRecord, event: AgentSessionEvent): void {\r\n\t\tswitch (event.type) {\r\n\t\t\tcase \"message_start\":\r\n\t\t\t\tif (event.message.role === \"user\") {\r\n\t\t\t\t\tconst text = extractUserText(event.message as UserMessage);\r\n\t\t\t\t\tif (text) {\r\n\t\t\t\t\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\t\t\t\t\tid: createMessageId(record, \"user\"),\r\n\t\t\t\t\t\t\trole: \"user\",\r\n\t\t\t\t\t\t\tcontent: text,\r\n\t\t\t\t\t\t\ttime: formatTime((event.message as UserMessage).timestamp),\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (event.message.role === \"assistant\") {\r\n\t\t\t\t\trecord.streamingAssistantMessageId = undefined;\r\n\t\t\t\t\trecord.streamingReasoningMessageId = undefined;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\r\n\t\t\tcase \"message_update\":\r\n\t\t\t\tif (event.assistantMessageEvent.type === \"thinking_delta\") {\r\n\t\t\t\t\tif (!record.streamingReasoningMessageId) {\r\n\t\t\t\t\t\trecord.streamingReasoningMessageId = record.streamingAssistantMessageId\r\n\t\t\t\t\t\t\t? this.insertReasoningMessageBefore(\r\n\t\t\t\t\t\t\t\t\tsessionId,\r\n\t\t\t\t\t\t\t\t\trecord,\r\n\t\t\t\t\t\t\t\t\trecord.streamingAssistantMessageId,\r\n\t\t\t\t\t\t\t\t\tevent.assistantMessageEvent.delta,\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t: (() => {\r\n\t\t\t\t\t\t\t\t\tconst id = createMessageId(record, \"assistant\");\r\n\t\t\t\t\t\t\t\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\t\t\t\t\t\t\t\tid,\r\n\t\t\t\t\t\t\t\t\t\trole: \"assistant\",\r\n\t\t\t\t\t\t\t\t\t\tcontent: event.assistantMessageEvent.delta,\r\n\t\t\t\t\t\t\t\t\t\ttime: formatTime(),\r\n\t\t\t\t\t\t\t\t\t\tkind: \"reasoning\",\r\n\t\t\t\t\t\t\t\t\t\tcollapsible: true,\r\n\t\t\t\t\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\treturn id;\r\n\t\t\t\t\t\t\t\t})();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.callbacks.patchMessage(sessionId, record.streamingReasoningMessageId, {\r\n\t\t\t\t\t\tappendContent: event.assistantMessageEvent.delta,\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (event.assistantMessageEvent.type === \"text_delta\" && record.streamingAssistantMessageId) {\r\n\t\t\t\t\tthis.callbacks.patchMessage(sessionId, record.streamingAssistantMessageId, {\r\n\t\t\t\t\t\tappendContent: event.assistantMessageEvent.delta,\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (event.assistantMessageEvent.type === \"text_delta\") {\r\n\t\t\t\t\tconst messageId = createMessageId(record, \"assistant\");\r\n\t\t\t\t\trecord.streamingAssistantMessageId = messageId;\r\n\t\t\t\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\t\t\t\tid: messageId,\r\n\t\t\t\t\t\trole: \"assistant\",\r\n\t\t\t\t\t\tcontent: event.assistantMessageEvent.delta,\r\n\t\t\t\t\t\ttime: formatTime(),\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\r\n\t\t\tcase \"message_end\":\r\n\t\t\t\tif (event.message.role === \"assistant\") {\r\n\t\t\t\t\tconst finalMessage = event.message as AssistantMessage;\r\n\t\t\t\t\tconst content = extractAssistantVisibleText(finalMessage);\r\n\t\t\t\t\tconst reasoning = extractAssistantReasoning(finalMessage);\r\n\t\t\t\t\tconst messageId = record.streamingAssistantMessageId;\r\n\t\t\t\t\tconst reasoningMessageId = record.streamingReasoningMessageId;\r\n\t\t\t\t\trecord.streamingAssistantMessageId = undefined;\r\n\t\t\t\t\trecord.streamingReasoningMessageId = undefined;\r\n\t\t\t\t\tif (messageId) {\r\n\t\t\t\t\t\tthis.callbacks.patchMessage(sessionId, messageId, {\r\n\t\t\t\t\t\t\tcontent,\r\n\t\t\t\t\t\t\ttime: formatTime(finalMessage.timestamp),\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if (content) {\r\n\t\t\t\t\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\t\t\t\t\tid: createMessageId(record, \"assistant\"),\r\n\t\t\t\t\t\t\trole: \"assistant\",\r\n\t\t\t\t\t\t\tcontent,\r\n\t\t\t\t\t\t\ttime: formatTime(finalMessage.timestamp),\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (reasoning) {\r\n\t\t\t\t\t\tif (reasoningMessageId) {\r\n\t\t\t\t\t\t\tthis.callbacks.patchMessage(sessionId, reasoningMessageId, {\r\n\t\t\t\t\t\t\t\tcontent: reasoning,\r\n\t\t\t\t\t\t\t\ttime: formatTime(finalMessage.timestamp),\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else if (messageId) {\r\n\t\t\t\t\t\t\tthis.insertReasoningMessageBefore(sessionId, record, messageId, reasoning);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.appendReasoningMessage(sessionId, record, reasoning);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (finalMessage.stopReason === \"aborted\") {\n\t\t\t\t\t\tthis.setRuntimeState(\n\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\tcreateInterruptedRuntimeState(\"Interrupted - ready\", \"The current request was cancelled.\"),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (finalMessage.stopReason === \"error\" && finalMessage.errorMessage) {\n\t\t\t\t\t\tthis.applyRecoveryState(sessionId, record, finalMessage.errorMessage, \"Request failed - ready\");\n\t\t\t\t\t}\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\r\n\t\t\tcase \"tool_execution_start\": {\r\n\t\t\t\tconst tool = createToolMessageState(event.toolCallId, event.toolName, event.args);\r\n\t\t\t\tconst messageId = this.appendToolMessage(sessionId, record, tool);\r\n\t\t\t\trecord.toolMessageIds.set(event.toolCallId, messageId);\r\n\t\t\t\trecord.toolStates.set(event.toolCallId, tool);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcase \"tool_execution_update\": {\r\n\t\t\t\tconst messageId = record.toolMessageIds.get(event.toolCallId);\r\n\t\t\t\tconst tool = record.toolStates.get(event.toolCallId);\r\n\t\t\t\tif (!messageId || !tool) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tconst nextTool = updateToolMessageState(tool, {\r\n\t\t\t\t\targs: event.args,\r\n\t\t\t\t\toutput: event.partialResult,\r\n\t\t\t\t});\r\n\t\t\t\trecord.toolStates.set(event.toolCallId, nextTool);\r\n\t\t\t\tthis.callbacks.patchMessage(sessionId, messageId, {\r\n\t\t\t\t\ttool: nextTool,\r\n\t\t\t\t});\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcase \"tool_execution_end\": {\r\n\t\t\t\tconst messageId = record.toolMessageIds.get(event.toolCallId);\r\n\t\t\t\tconst tool = record.toolStates.get(event.toolCallId);\r\n\t\t\t\trecord.toolMessageIds.delete(event.toolCallId);\r\n\t\t\t\trecord.toolStates.delete(event.toolCallId);\r\n\t\t\t\tconst nextTool = updateToolMessageState(\r\n\t\t\t\t\ttool ?? createToolMessageState(event.toolCallId, event.toolName, undefined),\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstatus: event.isError ? \"failed\" : \"completed\",\r\n\t\t\t\t\t\toutput: event.result,\r\n\t\t\t\t\t},\r\n\t\t\t\t);\r\n\t\t\t\tif (messageId) {\r\n\t\t\t\t\tthis.callbacks.patchMessage(sessionId, messageId, {\r\n\t\t\t\t\t\ttool: nextTool,\r\n\t\t\t\t\t\ttime: formatTime(),\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.appendToolMessage(sessionId, record, nextTool);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcase \"auto_compaction_start\":\r\n\t\t\t\tthis.setRuntimeState(\r\n\t\t\t\t\tsessionId,\r\n\t\t\t\t\trecord,\r\n\t\t\t\t\tcreateCompactingRuntimeState(\r\n\t\t\t\t\t\tevent.reason === \"overflow\" ? \"Compacting after overflow\" : \"Compacting context\",\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tthis.appendSystemMessage(sessionId, record, \"Compacting context...\");\r\n\t\t\t\treturn;\r\n\r\n\t\t\tcase \"auto_compaction_end\":\n\t\t\t\tif (event.errorMessage) {\n\t\t\t\t\tthis.applyRecoveryState(sessionId, record, event.errorMessage, \"Compaction failed - ready\");\n\t\t\t\t} else if (event.aborted) {\n\t\t\t\t\tthis.setRuntimeState(\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\trecord,\n\t\t\t\t\t\tcreateInterruptedRuntimeState(\"Compaction cancelled - ready\", \"You can continue with a new prompt.\"),\n\t\t\t\t\t);\n\t\t\t\t} else if (event.willRetry) {\n\t\t\t\t\tthis.setRuntimeState(\r\n\t\t\t\t\t\tsessionId,\r\n\t\t\t\t\t\trecord,\r\n\t\t\t\t\t\tcreateRetryingRuntimeState(\"Retrying after compaction\"),\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (record.activePrompts > 0) {\r\n\t\t\t\t\tthis.setRuntimeState(sessionId, record, createRunningRuntimeState());\r\n\t\t\t\t}\r\n\t\t\t\tthis.appendSystemMessage(\r\n\t\t\t\t\tsessionId,\r\n\t\t\t\t\trecord,\r\n\t\t\t\t\tevent.errorMessage\r\n\t\t\t\t\t\t? `Compaction failed: ${event.errorMessage}`\r\n\t\t\t\t\t\t: event.aborted\r\n\t\t\t\t\t\t\t? \"Compaction aborted.\"\r\n\t\t\t\t\t\t\t: event.result\r\n\t\t\t\t\t\t\t\t? \"Context compacted.\"\r\n\t\t\t\t\t\t\t\t: \"Compaction skipped.\",\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\r\n\t\t\tcase \"auto_retry_start\":\r\n\t\t\t\tthis.setRuntimeState(\r\n\t\t\t\t\tsessionId,\r\n\t\t\t\t\trecord,\r\n\t\t\t\t\tcreateRetryingRuntimeState(\r\n\t\t\t\t\t\t`Retrying (${event.attempt}/${event.maxAttempts})`,\r\n\t\t\t\t\t\tevent.errorMessage,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tthis.appendSystemMessage(\r\n\t\t\t\t\tsessionId,\r\n\t\t\t\t\trecord,\r\n\t\t\t\t\t`Retrying request (${event.attempt}/${event.maxAttempts}) after error: ${event.errorMessage}`,\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\r\n\t\t\tcase \"auto_retry_end\":\n\t\t\t\tif (!event.success) {\n\t\t\t\t\tconst finalError = event.finalError ?? \"Retry cancelled\";\n\t\t\t\t\tthis.setRuntimeState(\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\trecord,\n\t\t\t\t\t\tfinalError.toLowerCase().includes(\"cancel\")\n\t\t\t\t\t\t\t? createInterruptedRuntimeState(\"Retry cancelled - ready\", finalError)\n\t\t\t\t\t\t\t: createErrorRuntimeState(\"Retry failed - ready\", finalError),\n\t\t\t\t\t);\n\t\t\t\t\tthis.appendSystemMessage(sessionId, record, `Retry failed: ${finalError}`);\n\t\t\t\t\tif (!finalError.toLowerCase().includes(\"cancel\")) {\n\t\t\t\t\t\tconst hint = getRuntimeRecoveryHint(finalError);\n\t\t\t\t\t\tif (hint?.nextStep) {\n\t\t\t\t\t\t\tthis.appendSystemMessage(sessionId, record, hint.nextStep);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (record.activePrompts > 0) {\n\t\t\t\t\tthis.setRuntimeState(sessionId, record, createRunningRuntimeState());\n\t\t\t\t}\n\t\t\t\treturn;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t}\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["join","getAgentDir","handleAgentSessionEvent","cancellationToolOutput","createMessageId","extractAssistantReasoning","extractAssistantVisibleText","extractUserText","formatCompactionResultMessage","formatRuntimeError","formatTime","getRuntimeSessionDir","installBeforeToolCallHook","loadCodingAgentRuntime","toModelDefinition","createCompactingRuntimeState","createErrorRuntimeState","createIdleRuntimeState","createInterruptedRuntimeState","createRunningRuntimeState","getRuntimeRecoveryHint","createToolApprovalRequest","toolApprovalDecisionReason","createToolMessageState","updateToolMessageState","WepsAgentRuntime","records","Map","pending","pendingApprovals","currentMode","approvalSequence","constructor","profileService","callbacks","options","cwd","process","agentDir","prompt","sessionId","text","selection","binding","record","ensureSession","activePrompts","setRuntimeState","applySelection","session","isStreaming","streamingBehavior","undefined","error","isAbortLikeError","message","appendSystemMessage","applyRecoveryState","Math","max","resetRuntimeStateAfterActivity","loadSession","abort","get","hasPendingApproval","values","some","abortCompaction","catch","cleanupAfterInterruption","compact","customInstructions","compactSession","result","syncSelection","reload","reloadableSession","setMode","mode","dispose","requestId","pendingApproval","entries","resolve","closeApproval","delete","unsubscribe","removeBeforeToolCallHook","existing","promise","createSessionRecord","then","set","finally","codingAgent","resolved","resolveSelection","authStorage","AuthStorage","inMemory","modelRegistry","ModelRegistry","settingsManager","SettingsManager","sessionDir","sessionManager","runtimeSessionFile","SessionManager","open","create","registerProfileProvider","profile","modelId","apiKey","model","find","id","Error","label","modelFallbackMessage","createAgentSession","bindExtensions","commandContextActions","waitForIdle","agent","newSession","cancelled","fork","navigateTree","switchSession","onError","extensionPath","activeProfileId","activeModelId","streamingAssistantMessageId","streamingReasoningMessageId","toolMessageIds","toolStates","runtimeState","sequence","toolCall","args","signal","handleApprovalRequest","name","subscribe","event","handleSessionEvent","getSessionFile","updateSessionBinding","restoredMessages","rehydrateTranscript","length","replaceMessages","updateRuntimeState","restored","state","messages","role","push","content","time","timestamp","reasoning","kind","collapsible","expanded","tool","toolCallId","toolName","status","isError","output","toLowerCase","includes","phase","reason","resolveApproval","nextTool","messageId","patchMessage","clear","profileId","getActiveSelection","getProfile","models","getApiKey","selectedModelId","setRuntimeApiKey","family","registerProvider","baseUrl","api","apiDialect","map","setModel","appendMessage","fallbackLabel","hint","nextStep","appendToolMessage","appendReasoningMessage","insertReasoningMessageBefore","beforeMessageId","insertMessageBefore","decision","createApprovalId","patchToolState","update","currentTool","request","block","openApproval","Promise","onAbort","has","aborted","addEventListener","once"],"sources":["agent-runtime.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport type { AgentSession, AgentSessionEvent, AuthStorage, ModelRegistry } from \"@mariozechner/pi-coding-agent\";\nimport type { Model } from \"@mariozechner/pi-ai\";\nimport { getAgentDir } from \"../config.js\";\nimport type { DiscoveredModel, ProviderProfile, ProviderProfileService } from \"../provider-profiles/index.js\";\nimport { handleAgentSessionEvent } from \"./agent-runtime-events.js\";\nimport {\n\tcancellationToolOutput,\n\tcreateMessageId,\n\textractAssistantReasoning,\n\textractAssistantVisibleText,\n\textractUserText,\n\tformatCompactionResultMessage,\n\tformatRuntimeError,\n\tformatTime,\n\tgetRuntimeSessionDir,\n\tinstallBeforeToolCallHook,\n\tloadCodingAgentRuntime,\n\ttoModelDefinition,\n} from \"./agent-runtime-helpers.js\";\nimport type {\n\tPendingApprovalRecord,\n\tRuntimeCallbacks,\n\tRuntimeSelection,\n\tRuntimeSessionBinding,\n\tRuntimeSessionRecord,\n} from \"./agent-runtime-types.js\";\nimport type { ChatMessage } from \"./chat-components.js\";\nimport {\n\tcreateCompactingRuntimeState,\n\tcreateErrorRuntimeState,\n\tcreateIdleRuntimeState,\n\tcreateInterruptedRuntimeState,\n\tcreateRunningRuntimeState,\n\ttype RuntimeSessionState,\n} from \"./runtime-status.js\";\nimport { getRuntimeRecoveryHint } from \"./runtime-recovery.js\";\nimport type { ShellModeId } from \"./shell-modes.js\";\nimport {\n\tcreateToolApprovalRequest,\n\ttoolApprovalDecisionReason,\n\ttype ToolApprovalDecision,\n} from \"./tool-approval.js\";\nimport { createToolMessageState, updateToolMessageState, type ToolMessageState } from \"./tool-messages.js\";\n\nexport type { RuntimeSelection } from \"./agent-runtime-types.js\";\n\nexport class WepsAgentRuntime {\n\tprivate readonly records = new Map<string, RuntimeSessionRecord>();\r\n\tprivate readonly pending = new Map<string, Promise<RuntimeSessionRecord>>();\r\n\tprivate readonly pendingApprovals = new Map<string, PendingApprovalRecord>();\r\n\tprivate readonly cwd: string;\r\n\tprivate readonly agentDir: string;\r\n\tprivate currentMode: ShellModeId = \"agent\";\r\n\tprivate approvalSequence = 0;\r\n\r\n\tconstructor(\r\n\t\tprivate readonly profileService: ProviderProfileService,\r\n\t\tprivate readonly callbacks: RuntimeCallbacks,\r\n\t\toptions: {\r\n\t\t\tcwd?: string;\r\n\t\t\tagentDir?: string;\r\n\t\t} = {},\r\n\t) {\r\n\t\tthis.cwd = options.cwd ?? process.cwd();\r\n\t\tthis.agentDir = options.agentDir ?? getAgentDir();\r\n\t}\r\n\r\n\tasync prompt(\r\n\t\tsessionId: string,\r\n\t\ttext: string,\r\n\t\tselection: RuntimeSelection,\r\n\t\tbinding: RuntimeSessionBinding = {},\r\n\t): Promise<void> {\r\n\t\tconst record = await this.ensureSession(sessionId, selection, binding);\r\n\t\trecord.activePrompts += 1;\r\n\t\tthis.setRuntimeState(sessionId, record, createRunningRuntimeState());\r\n\t\ttry {\r\n\t\t\tawait this.applySelection(record, selection);\r\n\t\t\tawait record.session.prompt(text, record.session.isStreaming ? { streamingBehavior: \"steer\" } : undefined);\r\n\t\t} catch (error) {\r\n\t\t\tif (!this.isAbortLikeError(error)) {\r\n\t\t\t\tconst message = formatRuntimeError(error);\r\n\t\t\t\tthis.appendSystemMessage(sessionId, record, message);\r\n\t\t\t\tthis.applyRecoveryState(sessionId, record, message, \"Request failed - ready\");\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\trecord.activePrompts = Math.max(0, record.activePrompts - 1);\r\n\t\t\tthis.resetRuntimeStateAfterActivity(sessionId, record);\r\n\t\t}\r\n\t}\r\n\r\n\tasync loadSession(sessionId: string, selection: RuntimeSelection, binding: RuntimeSessionBinding = {}): Promise<void> {\r\n\t\tawait this.ensureSession(sessionId, selection, binding);\r\n\t}\r\n\r\n\tasync abort(sessionId: string): Promise<boolean> {\r\n\t\tconst record = this.records.get(sessionId);\r\n\t\tif (!record) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tconst hasPendingApproval = [...this.pendingApprovals.values()].some((pending) => pending.sessionId === sessionId);\r\n\t\tif (!hasPendingApproval && record.activePrompts === 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\trecord.session.abortCompaction?.();\r\n\t\tawait record.session.abort().catch(() => {});\r\n\t\tthis.cleanupAfterInterruption(sessionId, record, \"Cancelled before completion.\");\r\n\t\tthis.appendSystemMessage(sessionId, record, \"Request interrupted. You can continue with a new prompt.\");\r\n\t\tthis.setRuntimeState(\r\n\t\t\tsessionId,\r\n\t\t\trecord,\r\n\t\t\tcreateInterruptedRuntimeState(\"Interrupted - ready\", \"The current request was cancelled.\"),\r\n\t\t);\r\n\t\trecord.activePrompts = 0;\r\n\t\treturn true;\r\n\t}\r\n\r\n\tasync compact(\r\n\t\tsessionId: string,\r\n\t\tselection: RuntimeSelection,\r\n\t\tbinding: RuntimeSessionBinding = {},\r\n\t\tcustomInstructions?: string,\r\n\t): Promise<boolean> {\r\n\t\tconst record = await this.ensureSession(sessionId, selection, binding);\r\n\t\tconst compactSession = record.session as AgentSession & {\r\n\t\t\tcompact?: (customInstructions?: string) => Promise<{ tokensBefore?: number }>;\r\n\t\t};\r\n\r\n\t\tif (typeof compactSession.compact !== \"function\") {\r\n\t\t\tthis.appendSystemMessage(sessionId, record, \"Manual compaction is not available in the current runtime.\");\r\n\t\t\tthis.setRuntimeState(sessionId, record, createErrorRuntimeState(\"Compaction unavailable - ready\"));\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\trecord.activePrompts += 1;\r\n\t\tthis.setRuntimeState(sessionId, record, createCompactingRuntimeState(\"Compacting context\"));\r\n\t\ttry {\r\n\t\t\tawait this.applySelection(record, selection);\r\n\t\t\tconst result = await compactSession.compact(customInstructions);\r\n\t\t\tthis.appendSystemMessage(sessionId, record, formatCompactionResultMessage(result ?? {}));\r\n\t\t\tthis.setRuntimeState(sessionId, record, createIdleRuntimeState());\r\n\t\t\treturn true;\r\n\t\t} catch (error) {\r\n\t\t\tif (this.isAbortLikeError(error)) {\r\n\t\t\t\tthis.appendSystemMessage(sessionId, record, \"Compaction cancelled.\");\r\n\t\t\t\tthis.setRuntimeState(\r\n\t\t\t\t\tsessionId,\r\n\t\t\t\t\trecord,\r\n\t\t\t\t\tcreateInterruptedRuntimeState(\"Compaction cancelled - ready\", \"You can continue with a new prompt.\"),\r\n\t\t\t\t);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tconst message = formatRuntimeError(error);\r\n\t\t\tthis.appendSystemMessage(sessionId, record, `Compaction failed: ${message}`);\r\n\t\t\tthis.applyRecoveryState(sessionId, record, message, \"Compaction failed - ready\");\r\n\t\t\treturn false;\r\n\t\t} finally {\r\n\t\t\trecord.activePrompts = Math.max(0, record.activePrompts - 1);\r\n\t\t\tthis.resetRuntimeStateAfterActivity(sessionId, record);\r\n\t\t}\r\n\t}\r\n\r\n\tasync syncSelection(sessionId: string, selection: RuntimeSelection): Promise<void> {\n\t\tconst record = this.records.get(sessionId);\n\t\tif (!record) {\n\t\t\treturn;\n\t\t}\r\n\t\ttry {\r\n\t\t\tawait this.applySelection(record, selection);\r\n\t\t} catch (error) {\r\n\t\t\tconst message = formatRuntimeError(error);\r\n\t\t\tthis.appendSystemMessage(sessionId, record, message);\r\n\t\t\tthis.applyRecoveryState(sessionId, record, message, \"Selection failed - ready\");\r\n\t\t}\n\t}\n\n\tasync reload(sessionId: string, selection: RuntimeSelection, binding: RuntimeSessionBinding = {}): Promise<boolean> {\n\t\tconst record = await this.ensureSession(sessionId, selection, binding);\n\t\tconst reloadableSession = record.session as AgentSession & { reload?: () => Promise<void> };\n\t\tif (typeof reloadableSession.reload !== \"function\") {\n\t\t\tthis.appendSystemMessage(sessionId, record, \"Resource reload is not available in the current runtime.\");\n\t\t\tthis.setRuntimeState(sessionId, record, createErrorRuntimeState(\"Reload unavailable - ready\"));\n\t\t\treturn false;\n\t\t}\n\n\t\trecord.activePrompts += 1;\n\t\tthis.setRuntimeState(sessionId, record, createRunningRuntimeState(\"Reloading resources\"));\n\t\ttry {\n\t\t\tawait this.applySelection(record, selection);\n\t\t\tawait reloadableSession.reload();\n\t\t\tthis.setRuntimeState(sessionId, record, createIdleRuntimeState());\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tconst message = formatRuntimeError(error);\n\t\t\tthis.appendSystemMessage(sessionId, record, `Reload failed: ${message}`);\n\t\t\tthis.applyRecoveryState(sessionId, record, message, \"Reload failed - ready\");\n\t\t\treturn false;\n\t\t} finally {\n\t\t\trecord.activePrompts = Math.max(0, record.activePrompts - 1);\n\t\t\tthis.resetRuntimeStateAfterActivity(sessionId, record);\n\t\t}\n\t}\n\n\tsetMode(mode: ShellModeId): void {\n\t\tthis.currentMode = mode;\n\t}\n\r\n\tdispose(): void {\r\n\t\tfor (const [requestId, pendingApproval] of this.pendingApprovals.entries()) {\r\n\t\t\tpendingApproval.resolve(\"cancel\");\r\n\t\t\tthis.callbacks.closeApproval(pendingApproval.sessionId, requestId);\r\n\t\t\tthis.pendingApprovals.delete(requestId);\r\n\t\t}\r\n\t\tfor (const [sessionId, record] of this.records.entries()) {\r\n\t\t\trecord.unsubscribe();\r\n\t\t\trecord.removeBeforeToolCallHook();\r\n\t\t\tvoid record.session.abort().catch(() => {});\r\n\t\t\trecord.session.dispose();\r\n\t\t\tthis.records.delete(sessionId);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async ensureSession(\r\n\t\tsessionId: string,\r\n\t\tselection: RuntimeSelection,\r\n\t\tbinding: RuntimeSessionBinding = {},\r\n\t): Promise<RuntimeSessionRecord> {\r\n\t\tconst existing = this.records.get(sessionId);\r\n\t\tif (existing) {\r\n\t\t\treturn existing;\r\n\t\t}\r\n\r\n\t\tconst pending = this.pending.get(sessionId);\r\n\t\tif (pending) {\r\n\t\t\treturn pending;\r\n\t\t}\r\n\r\n\t\tconst promise = this.createSessionRecord(sessionId, selection, binding)\r\n\t\t\t.then((record) => {\r\n\t\t\t\tthis.records.set(sessionId, record);\r\n\t\t\t\treturn record;\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.pending.delete(sessionId);\r\n\t\t\t});\r\n\r\n\t\tthis.pending.set(sessionId, promise);\r\n\t\treturn promise;\r\n\t}\r\n\r\n\tprivate async createSessionRecord(\r\n\t\tsessionId: string,\r\n\t\tselection: RuntimeSelection,\r\n\t\tbinding: RuntimeSessionBinding,\r\n\t): Promise<RuntimeSessionRecord> {\r\n\t\tconst codingAgent = await loadCodingAgentRuntime();\r\n\t\tconst resolved = this.resolveSelection(selection);\r\n\t\tconst authStorage = codingAgent.AuthStorage.inMemory();\r\n\t\tconst modelRegistry = new codingAgent.ModelRegistry(authStorage, join(this.agentDir, \"runtime-models.json\"));\r\n\t\tconst settingsManager = codingAgent.SettingsManager.inMemory();\r\n\t\tconst sessionDir = getRuntimeSessionDir(this.cwd, this.agentDir);\r\n\t\tconst sessionManager = binding.runtimeSessionFile\r\n\t\t\t? codingAgent.SessionManager.open(binding.runtimeSessionFile, sessionDir)\r\n\t\t\t: codingAgent.SessionManager.create(this.cwd, sessionDir);\r\n\r\n\t\tthis.registerProfileProvider(modelRegistry, authStorage, resolved.profile, resolved.modelId, resolved.apiKey);\r\n\r\n\t\tconst model = modelRegistry.find(resolved.profile.id, resolved.modelId);\r\n\t\tif (!model) {\r\n\t\t\tthrow new Error(`Unable to register model ${resolved.modelId} for ${resolved.profile.label}`);\r\n\t\t}\r\n\r\n\t\tconst { session, modelFallbackMessage } = await codingAgent.createAgentSession({\r\n\t\t\tcwd: this.cwd,\r\n\t\t\tagentDir: this.agentDir,\r\n\t\t\tauthStorage,\r\n\t\t\tmodelRegistry,\r\n\t\t\tsettingsManager,\r\n\t\t\tsessionManager,\r\n\t\t\tmodel,\r\n\t\t});\r\n\r\n\t\tawait session.bindExtensions({\r\n\t\t\tcommandContextActions: {\r\n\t\t\t\twaitForIdle: () => session.agent.waitForIdle(),\n\t\t\t\tnewSession: async () => ({ cancelled: true }),\n\t\t\t\tfork: async () => ({ cancelled: true }),\n\t\t\t\tnavigateTree: async () => ({ cancelled: true }),\n\t\t\t\tswitchSession: async () => ({ cancelled: true }),\n\t\t\t\treload: async () => {\n\t\t\t\t\tawait (session as AgentSession & { reload?: () => Promise<void> }).reload?.();\n\t\t\t\t},\n\t\t\t},\n\t\t\tonError: (error) => {\r\n\t\t\t\tconst record = this.records.get(sessionId);\r\n\t\t\t\tif (record) {\r\n\t\t\t\t\tthis.appendSystemMessage(sessionId, record, `Extension error (${error.extensionPath}): ${error.error}`);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tconst record: RuntimeSessionRecord = {\r\n\t\t\tsession,\r\n\t\t\tunsubscribe: () => {},\r\n\t\t\tremoveBeforeToolCallHook: () => {},\r\n\t\t\tmodelRegistry,\r\n\t\t\tauthStorage,\r\n\t\t\tactiveProfileId: resolved.profile.id,\r\n\t\t\tactiveModelId: resolved.modelId,\r\n\t\t\tstreamingAssistantMessageId: undefined,\r\n\t\t\tstreamingReasoningMessageId: undefined,\r\n\t\t\ttoolMessageIds: new Map(),\r\n\t\t\ttoolStates: new Map(),\r\n\t\t\tactivePrompts: 0,\r\n\t\t\truntimeState: createIdleRuntimeState(),\r\n\t\t\tsequence: 0,\r\n\t\t};\r\n\r\n\t\trecord.removeBeforeToolCallHook = installBeforeToolCallHook(session, async ({ toolCall, args }, signal) =>\r\n\t\t\tthis.handleApprovalRequest(sessionId, record, toolCall.id, toolCall.name, args, signal),\r\n\t\t);\r\n\t\trecord.unsubscribe = session.subscribe((event) => {\r\n\t\t\tthis.handleSessionEvent(sessionId, record, event);\r\n\t\t});\r\n\r\n\t\tconst runtimeSessionFile = session.sessionManager.getSessionFile();\r\n\t\tif (runtimeSessionFile && runtimeSessionFile !== binding.runtimeSessionFile) {\r\n\t\t\tthis.callbacks.updateSessionBinding(sessionId, { runtimeSessionFile });\r\n\t\t}\r\n\r\n\t\tconst restoredMessages = this.rehydrateTranscript(record);\r\n\t\tif (restoredMessages.length > 0) {\r\n\t\t\tthis.callbacks.replaceMessages(sessionId, restoredMessages);\r\n\t\t}\r\n\r\n\t\tif (modelFallbackMessage) {\r\n\t\t\tthis.appendSystemMessage(sessionId, record, modelFallbackMessage);\r\n\t\t}\r\n\t\tthis.callbacks.updateRuntimeState(sessionId, record.runtimeState);\r\n\r\n\t\treturn record;\r\n\t}\r\n\r\n\tprivate rehydrateTranscript(record: RuntimeSessionRecord): ChatMessage[] {\r\n\t\tconst restored: ChatMessage[] = [];\r\n\r\n\t\tfor (const message of record.session.state.messages) {\r\n\t\t\tif (message.role === \"user\") {\r\n\t\t\t\tconst text = extractUserText(message);\r\n\t\t\t\tif (!text) continue;\r\n\t\t\t\trestored.push({\r\n\t\t\t\t\tid: createMessageId(record, \"user\"),\r\n\t\t\t\t\trole: \"user\",\r\n\t\t\t\t\tcontent: text,\r\n\t\t\t\t\ttime: formatTime(message.timestamp),\r\n\t\t\t\t});\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (message.role === \"assistant\") {\r\n\t\t\t\tconst reasoning = extractAssistantReasoning(message);\r\n\t\t\t\tif (reasoning) {\r\n\t\t\t\t\trestored.push({\r\n\t\t\t\t\t\tid: createMessageId(record, \"assistant\"),\r\n\t\t\t\t\t\trole: \"assistant\",\r\n\t\t\t\t\t\tcontent: reasoning,\r\n\t\t\t\t\t\ttime: formatTime(message.timestamp),\r\n\t\t\t\t\t\tkind: \"reasoning\",\r\n\t\t\t\t\t\tcollapsible: true,\r\n\t\t\t\t\t\texpanded: false,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst content = extractAssistantVisibleText(message);\r\n\t\t\t\tif (content) {\r\n\t\t\t\t\trestored.push({\r\n\t\t\t\t\t\tid: createMessageId(record, \"assistant\"),\r\n\t\t\t\t\t\trole: \"assistant\",\r\n\t\t\t\t\t\tcontent,\r\n\t\t\t\t\t\ttime: formatTime(message.timestamp),\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (message.role === \"toolResult\") {\r\n\t\t\t\tconst tool = updateToolMessageState(\r\n\t\t\t\t\tcreateToolMessageState(message.toolCallId, message.toolName, undefined),\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstatus: message.isError ? \"failed\" : \"completed\",\r\n\t\t\t\t\t\toutput: message,\r\n\t\t\t\t\t},\r\n\t\t\t\t);\r\n\t\t\t\trestored.push({\r\n\t\t\t\t\tid: createMessageId(record, \"system\"),\r\n\t\t\t\t\trole: \"system\",\r\n\t\t\t\t\tcontent: \"\",\r\n\t\t\t\t\ttime: formatTime(message.timestamp),\r\n\t\t\t\t\tkind: \"tool\",\r\n\t\t\t\t\tcollapsible: true,\r\n\t\t\t\t\texpanded: false,\r\n\t\t\t\t\ttool,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn restored;\r\n\t}\r\n\r\n\tprivate isAbortLikeError(error: unknown): boolean {\r\n\t\tconst message = formatRuntimeError(error).toLowerCase();\r\n\t\treturn message.includes(\"aborted\") || message.includes(\"cancelled\") || message.includes(\"canceled\");\r\n\t}\r\n\r\n\tprivate setRuntimeState(sessionId: string, record: RuntimeSessionRecord, state: RuntimeSessionState): void {\r\n\t\trecord.runtimeState = state;\r\n\t\tthis.callbacks.updateRuntimeState(sessionId, state);\r\n\t}\r\n\r\n\tprivate resetRuntimeStateAfterActivity(sessionId: string, record: RuntimeSessionRecord): void {\r\n\t\tif (record.activePrompts > 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (record.runtimeState.phase === \"running\" || record.runtimeState.phase === \"retrying\" || record.runtimeState.phase === \"compacting\") {\r\n\t\t\tthis.setRuntimeState(sessionId, record, createIdleRuntimeState());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate cleanupAfterInterruption(sessionId: string, record: RuntimeSessionRecord, reason: string): void {\r\n\t\tfor (const [requestId, pendingApproval] of [...this.pendingApprovals.entries()]) {\r\n\t\t\tif (pendingApproval.sessionId !== sessionId) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tthis.resolveApproval(requestId, \"cancel\");\r\n\t\t}\r\n\r\n\t\tfor (const [toolCallId, tool] of record.toolStates.entries()) {\r\n\t\t\tif (tool.status === \"completed\" || tool.status === \"failed\") {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst nextTool = updateToolMessageState(tool, {\r\n\t\t\t\tstatus: \"failed\",\r\n\t\t\t\toutput: cancellationToolOutput(reason),\r\n\t\t\t});\r\n\t\t\trecord.toolStates.set(toolCallId, nextTool);\r\n\t\t\tconst messageId = record.toolMessageIds.get(toolCallId);\r\n\t\t\tif (messageId) {\r\n\t\t\t\tthis.callbacks.patchMessage(sessionId, messageId, {\r\n\t\t\t\t\ttool: nextTool,\r\n\t\t\t\t\ttime: formatTime(),\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trecord.toolMessageIds.clear();\r\n\t\trecord.toolStates.clear();\r\n\t\trecord.streamingAssistantMessageId = undefined;\r\n\t\trecord.streamingReasoningMessageId = undefined;\r\n\t}\r\n\r\n\tprivate resolveSelection(selection: RuntimeSelection): { profile: ProviderProfile; modelId: string; apiKey: string } {\r\n\t\tconst profileId = selection.profileId ?? this.profileService.getActiveSelection().profileId;\r\n\t\tif (!profileId) {\r\n\t\t\tthrow new Error(\"No provider profile selected\");\r\n\t\t}\r\n\r\n\t\tconst profile = this.profileService.getProfile(profileId);\r\n\t\tif (!profile) {\r\n\t\t\tthrow new Error(`Unknown provider profile: ${profileId}`);\r\n\t\t}\r\n\r\n\t\tconst modelId = selection.modelId ?? profile.models[0]?.id;\r\n\t\tif (!modelId) {\r\n\t\t\tthrow new Error(`No model configured for ${profile.label}`);\r\n\t\t}\r\n\r\n\t\tconst apiKey = this.profileService.getApiKey(profile.id);\r\n\t\tif (!apiKey) {\r\n\t\t\tthrow new Error(`No API key configured for ${profile.label}`);\r\n\t\t}\r\n\r\n\t\treturn { profile, modelId, apiKey };\r\n\t}\r\n\r\n\tprivate registerProfileProvider(\r\n\t\tmodelRegistry: ModelRegistry,\r\n\t\tauthStorage: AuthStorage,\r\n\t\tprofile: ProviderProfile,\r\n\t\tselectedModelId: string,\r\n\t\tapiKey: string,\r\n\t): void {\r\n\t\tauthStorage.setRuntimeApiKey(profile.id, apiKey);\r\n\r\n\t\tconst models = [...profile.models];\r\n\t\tif (!models.some((model) => model.id === selectedModelId)) {\r\n\t\t\tmodels.push({\r\n\t\t\t\tid: selectedModelId,\r\n\t\t\t\tname: selectedModelId,\r\n\t\t\t\tfamily: profile.family,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tmodelRegistry.registerProvider(profile.id, {\r\n\t\t\tbaseUrl: profile.baseUrl,\r\n\t\t\tapiKey,\r\n\t\t\tapi: profile.apiDialect,\r\n\t\t\tmodels: models.map((model) => toModelDefinition(model)),\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async applySelection(record: RuntimeSessionRecord, selection: RuntimeSelection): Promise<void> {\r\n\t\tconst resolved = this.resolveSelection(selection);\r\n\t\tif (record.activeProfileId === resolved.profile.id && record.activeModelId === resolved.modelId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.registerProfileProvider(record.modelRegistry, record.authStorage, resolved.profile, resolved.modelId, resolved.apiKey);\r\n\t\tconst model = record.modelRegistry.find(resolved.profile.id, resolved.modelId);\r\n\t\tif (!model) {\r\n\t\t\tthrow new Error(`Model ${resolved.modelId} is unavailable for ${resolved.profile.label}`);\r\n\t\t}\r\n\r\n\t\tawait record.session.setModel(model as Model<any>);\r\n\t\trecord.activeProfileId = resolved.profile.id;\r\n\t\trecord.activeModelId = resolved.modelId;\r\n\t}\r\n\r\n\tprivate appendSystemMessage(sessionId: string, record: RuntimeSessionRecord, content: string): void {\r\n\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\tid: createMessageId(record, \"system\"),\r\n\t\t\trole: \"system\",\r\n\t\t\tcontent,\r\n\t\t\ttime: formatTime(),\r\n\t\t\tkind: \"status\",\r\n\t\t});\r\n\t}\r\n\r\n\tprivate applyRecoveryState(sessionId: string, record: RuntimeSessionRecord, message: string, fallbackLabel: string): void {\r\n\t\tconst hint = getRuntimeRecoveryHint(message);\r\n\t\tthis.setRuntimeState(sessionId, record, createErrorRuntimeState(hint?.label ?? fallbackLabel, message));\r\n\t\tif (hint?.nextStep) {\r\n\t\t\tthis.appendSystemMessage(sessionId, record, hint.nextStep);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate appendToolMessage(sessionId: string, record: RuntimeSessionRecord, tool: ToolMessageState): string {\r\n\t\tconst id = createMessageId(record, \"system\");\r\n\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\tid,\r\n\t\t\trole: \"system\",\r\n\t\t\tcontent: \"\",\r\n\t\t\ttime: formatTime(),\r\n\t\t\tkind: \"tool\",\r\n\t\t\tcollapsible: true,\r\n\t\t\texpanded: false,\r\n\t\t\ttool,\r\n\t\t});\r\n\t\treturn id;\r\n\t}\r\n\r\n\tprivate appendReasoningMessage(sessionId: string, record: RuntimeSessionRecord, content: string): void {\r\n\t\tthis.callbacks.appendMessage(sessionId, {\r\n\t\t\tid: createMessageId(record, \"assistant\"),\r\n\t\t\trole: \"assistant\",\r\n\t\t\tcontent,\r\n\t\t\ttime: formatTime(),\r\n\t\t\tkind: \"reasoning\",\r\n\t\t\tcollapsible: true,\r\n\t\t\texpanded: false,\r\n\t\t});\r\n\t}\r\n\r\n\tprivate insertReasoningMessageBefore(\r\n\t\tsessionId: string,\r\n\t\trecord: RuntimeSessionRecord,\r\n\t\tbeforeMessageId: string,\r\n\t\tcontent: string,\r\n\t): string {\r\n\t\tconst id = createMessageId(record, \"assistant\");\r\n\t\tthis.callbacks.insertMessageBefore(sessionId, beforeMessageId, {\r\n\t\t\tid,\r\n\t\t\trole: \"assistant\",\r\n\t\t\tcontent,\r\n\t\t\ttime: formatTime(),\r\n\t\t\tkind: \"reasoning\",\r\n\t\t\tcollapsible: true,\r\n\t\t\texpanded: false,\r\n\t\t});\r\n\t\treturn id;\r\n\t}\r\n\r\n\tresolveApproval(requestId: string, decision: ToolApprovalDecision): void {\r\n\t\tconst pendingApproval = this.pendingApprovals.get(requestId);\r\n\t\tif (!pendingApproval) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pendingApprovals.delete(requestId);\r\n\t\tthis.callbacks.closeApproval(pendingApproval.sessionId, requestId);\r\n\t\tpendingApproval.resolve(decision);\r\n\t}\r\n\r\n\tprivate createApprovalId(): string {\r\n\t\tthis.approvalSequence += 1;\r\n\t\treturn `approval:${this.approvalSequence}`;\r\n\t}\r\n\r\n\tprivate patchToolState(\r\n\t\tsessionId: string,\r\n\t\trecord: RuntimeSessionRecord,\r\n\t\ttoolCallId: string,\r\n\t\ttoolName: string,\r\n\t\tupdate: {\r\n\t\t\tstatus?: ToolMessageState[\"status\"];\r\n\t\t\targs?: unknown;\r\n\t\t\toutput?: unknown;\r\n\t\t},\r\n\t): void {\r\n\t\tconst messageId = record.toolMessageIds.get(toolCallId);\r\n\t\tconst currentTool = record.toolStates.get(toolCallId) ?? createToolMessageState(toolCallId, toolName, update.args);\r\n\t\tconst nextTool = updateToolMessageState(currentTool, update);\r\n\t\trecord.toolStates.set(toolCallId, nextTool);\r\n\t\tif (messageId) {\r\n\t\t\tthis.callbacks.patchMessage(sessionId, messageId, {\r\n\t\t\t\ttool: nextTool,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async handleApprovalRequest(\r\n\t\tsessionId: string,\r\n\t\trecord: RuntimeSessionRecord,\r\n\t\ttoolCallId: string,\r\n\t\ttoolName: string,\r\n\t\targs: unknown,\r\n\t\tsignal?: AbortSignal,\r\n\t): Promise<{ block?: boolean; reason?: string } | undefined> {\r\n\t\tconst request = createToolApprovalRequest(this.createApprovalId(), sessionId, toolCallId, toolName, args);\r\n\t\tif (!request) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tif (this.currentMode === \"read-only\") {\r\n\t\t\tconst reason = `${toolName} was blocked because read-only mode is active.`;\r\n\t\t\tthis.appendSystemMessage(sessionId, record, reason);\r\n\t\t\tthis.patchToolState(sessionId, record, toolCallId, toolName, {\r\n\t\t\t\tstatus: \"failed\",\r\n\t\t\t\targs,\r\n\t\t\t\toutput: cancellationToolOutput(reason),\r\n\t\t\t});\r\n\t\t\treturn {\r\n\t\t\t\tblock: true,\r\n\t\t\t\treason,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (this.currentMode === \"auto-approve\") {\r\n\t\t\tthis.appendSystemMessage(sessionId, record, `Auto-approved ${toolName} in auto-approve mode.`);\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tthis.patchToolState(sessionId, record, toolCallId, toolName, {\r\n\t\t\tstatus: \"awaiting_approval\",\r\n\t\t\targs,\r\n\t\t});\r\n\t\tthis.setRuntimeState(\r\n\t\t\tsessionId,\r\n\t\t\trecord,\r\n\t\t\tcreateRunningRuntimeState(`Awaiting approval for ${toolName}`),\r\n\t\t);\r\n\t\tthis.callbacks.openApproval(sessionId, request);\r\n\r\n\t\tconst decision = await new Promise<ToolApprovalDecision>((resolve) => {\r\n\t\t\tthis.pendingApprovals.set(request.id, {\r\n\t\t\t\tsessionId,\r\n\t\t\t\tresolve,\r\n\t\t\t});\r\n\r\n\t\t\tif (!signal) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst onAbort = () => {\r\n\t\t\t\tif (!this.pendingApprovals.has(request.id)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.pendingApprovals.delete(request.id);\r\n\t\t\t\tthis.callbacks.closeApproval(sessionId, request.id);\r\n\t\t\t\tresolve(\"cancel\");\r\n\t\t\t};\r\n\r\n\t\t\tif (signal.aborted) {\r\n\t\t\t\tonAbort();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\r\n\t\t});\r\n\r\n\t\tif (decision === \"allow\") {\r\n\t\t\tthis.patchToolState(sessionId, record, toolCallId, toolName, {\r\n\t\t\t\tstatus: \"running\",\r\n\t\t\t\targs,\r\n\t\t\t});\r\n\t\t\tthis.setRuntimeState(sessionId, record, createRunningRuntimeState());\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tthis.patchToolState(sessionId, record, toolCallId, toolName, {\r\n\t\t\tstatus: \"failed\",\r\n\t\t\targs,\r\n\t\t\toutput: cancellationToolOutput(toolApprovalDecisionReason(decision, request)),\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tblock: true,\r\n\t\t\treason: toolApprovalDecisionReason(decision, request),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate handleSessionEvent(sessionId: string, record: RuntimeSessionRecord, event: AgentSessionEvent): void {\n\t\thandleAgentSessionEvent(event, {\n\t\t\tsessionId,\n\t\t\trecord,\n\t\t\tcallbacks: this.callbacks,\n\t\t\tappendToolMessage: (tool) => this.appendToolMessage(sessionId, record, tool),\n\t\t\tappendReasoningMessage: (content) => this.appendReasoningMessage(sessionId, record, content),\n\t\t\tinsertReasoningMessageBefore: (beforeMessageId, content) =>\n\t\t\t\tthis.insertReasoningMessageBefore(sessionId, record, beforeMessageId, content),\n\t\t\tappendSystemMessage: (content) => this.appendSystemMessage(sessionId, record, content),\n\t\t\tapplyRecoveryState: (message, fallbackLabel) =>\n\t\t\t\tthis.applyRecoveryState(sessionId, record, message, fallbackLabel),\n\t\t\tsetRuntimeState: (state) => this.setRuntimeState(sessionId, record, state),\n\t\t});\n\t}\n}\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,WAAW;AAGhC,SAASC,WAAW,QAAQ,cAAc;AAE1C,SAASC,uBAAuB,QAAQ,2BAA2B;AACnE,SACCC,sBAAsB,EACtBC,eAAe,EACfC,yBAAyB,EACzBC,2BAA2B,EAC3BC,eAAe,EACfC,6BAA6B,EAC7BC,kBAAkB,EAClBC,UAAU,EACVC,oBAAoB,EACpBC,yBAAyB,EACzBC,sBAAsB,EACtBC,iBAAiB,QACX,4BAA4B;AASnC,SACCC,4BAA4B,EAC5BC,uBAAuB,EACvBC,sBAAsB,EACtBC,6BAA6B,EAC7BC,yBAAyB,QAEnB,qBAAqB;AAC5B,SAASC,sBAAsB,QAAQ,uBAAuB;AAE9D,SACCC,yBAAyB,EACzBC,0BAA0B,QAEpB,oBAAoB;AAC3B,SAASC,sBAAsB,EAAEC,sBAAsB,QAA+B,oBAAoB;AAI1G,OAAO,MAAMC,gBAAgB,CAAC;EACZC,OAAO,GAAG,IAAIC,GAAG,CAA+B,CAAC;EACjDC,OAAO,GAAG,IAAID,GAAG,CAAwC,CAAC;EAC1DE,gBAAgB,GAAG,IAAIF,GAAG,CAAgC,CAAC;EAGpEG,WAAW,GAAgB,OAAO;EAClCC,gBAAgB,GAAG,CAAC;EAE5BC,WAAWA,CACOC,cAAsC,EACtCC,SAA2B,EAC5CC,OAGC,GAAG,CAAC,CAAC,EACL;IAAA,KANgBF,cAAsC,GAAtCA,cAAsC;IAAA,KACtCC,SAA2B,GAA3BA,SAA2B;IAM5C,IAAI,CAACE,GAAG,GAAGD,OAAO,CAACC,GAAG,IAAIC,OAAO,CAACD,GAAG,CAAC,CAAC;IACvC,IAAI,CAACE,QAAQ,GAAGH,OAAO,CAACG,QAAQ,IAAIrC,WAAW,CAAC,CAAC;EAClD;EAEA,MAAMsC,MAAMA,CACXC,SAAiB,EACjBC,IAAY,EACZC,SAA2B,EAC3BC,OAA8B,GAAG,CAAC,CAAC,EACnB;IAChB,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACC,aAAa,CAACL,SAAS,EAAEE,SAAS,EAAEC,OAAO,CAAC;IACtEC,MAAM,CAACE,aAAa,IAAI,CAAC;IACzB,IAAI,CAACC,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAEzB,yBAAyB,CAAC,CAAC,CAAC;IACpE,IAAI;MACH,MAAM,IAAI,CAAC6B,cAAc,CAACJ,MAAM,EAAEF,SAAS,CAAC;MAC5C,MAAME,MAAM,CAACK,OAAO,CAACV,MAAM,CAACE,IAAI,EAAEG,MAAM,CAACK,OAAO,CAACC,WAAW,GAAG;QAAEC,iBAAiB,EAAE;MAAQ,CAAC,GAAGC,SAAS,CAAC;IAC3G,CAAC,CAAC,OAAOC,KAAK,EAAE;MACf,IAAI,CAAC,IAAI,CAACC,gBAAgB,CAACD,KAAK,CAAC,EAAE;QAClC,MAAME,OAAO,GAAG9C,kBAAkB,CAAC4C,KAAK,CAAC;QACzC,IAAI,CAACG,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAEW,OAAO,CAAC;QACpD,IAAI,CAACE,kBAAkB,CAACjB,SAAS,EAAEI,MAAM,EAAEW,OAAO,EAAE,wBAAwB,CAAC;MAC9E;IACD,CAAC,SAAS;MACTX,MAAM,CAACE,aAAa,GAAGY,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEf,MAAM,CAACE,aAAa,GAAG,CAAC,CAAC;MAC5D,IAAI,CAACc,8BAA8B,CAACpB,SAAS,EAAEI,MAAM,CAAC;IACvD;EACD;EAEA,MAAMiB,WAAWA,CAACrB,SAAiB,EAAEE,SAA2B,EAAEC,OAA8B,GAAG,CAAC,CAAC,EAAiB;IACrH,MAAM,IAAI,CAACE,aAAa,CAACL,SAAS,EAAEE,SAAS,EAAEC,OAAO,CAAC;EACxD;EAEA,MAAMmB,KAAKA,CAACtB,SAAiB,EAAoB;IAChD,MAAMI,MAAM,GAAG,IAAI,CAAClB,OAAO,CAACqC,GAAG,CAACvB,SAAS,CAAC;IAC1C,IAAI,CAACI,MAAM,EAAE;MACZ,OAAO,KAAK;IACb;IACA,MAAMoB,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAACnC,gBAAgB,CAACoC,MAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAAEtC,OAAO,IAAKA,OAAO,CAACY,SAAS,KAAKA,SAAS,CAAC;IACjH,IAAI,CAACwB,kBAAkB,IAAIpB,MAAM,CAACE,aAAa,KAAK,CAAC,EAAE;MACtD,OAAO,KAAK;IACb;IACAF,MAAM,CAACK,OAAO,CAACkB,eAAe,GAAG,CAAC;IAClC,MAAMvB,MAAM,CAACK,OAAO,CAACa,KAAK,CAAC,CAAC,CAACM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,IAAI,CAACC,wBAAwB,CAAC7B,SAAS,EAAEI,MAAM,EAAE,8BAA8B,CAAC;IAChF,IAAI,CAACY,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE,0DAA0D,CAAC;IACvG,IAAI,CAACG,eAAe,CACnBP,SAAS,EACTI,MAAM,EACN1B,6BAA6B,CAAC,qBAAqB,EAAE,oCAAoC,CAC1F,CAAC;IACD0B,MAAM,CAACE,aAAa,GAAG,CAAC;IACxB,OAAO,IAAI;EACZ;EAEA,MAAMwB,OAAOA,CACZ9B,SAAiB,EACjBE,SAA2B,EAC3BC,OAA8B,GAAG,CAAC,CAAC,EACnC4B,kBAA2B,EACR;IACnB,MAAM3B,MAAM,GAAG,MAAM,IAAI,CAACC,aAAa,CAACL,SAAS,EAAEE,SAAS,EAAEC,OAAO,CAAC;IACtE,MAAM6B,cAAc,GAAG5B,MAAM,CAACK,OAE7B;IAED,IAAI,OAAOuB,cAAc,CAACF,OAAO,KAAK,UAAU,EAAE;MACjD,IAAI,CAACd,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE,4DAA4D,CAAC;MACzG,IAAI,CAACG,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAE5B,uBAAuB,CAAC,gCAAgC,CAAC,CAAC;MAClG,OAAO,KAAK;IACb;IAEA4B,MAAM,CAACE,aAAa,IAAI,CAAC;IACzB,IAAI,CAACC,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAE7B,4BAA4B,CAAC,oBAAoB,CAAC,CAAC;IAC3F,IAAI;MACH,MAAM,IAAI,CAACiC,cAAc,CAACJ,MAAM,EAAEF,SAAS,CAAC;MAC5C,MAAM+B,MAAM,GAAG,MAAMD,cAAc,CAACF,OAAO,CAACC,kBAAkB,CAAC;MAC/D,IAAI,CAACf,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAEpC,6BAA6B,CAACiE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;MACxF,IAAI,CAAC1B,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAE3B,sBAAsB,CAAC,CAAC,CAAC;MACjE,OAAO,IAAI;IACZ,CAAC,CAAC,OAAOoC,KAAK,EAAE;MACf,IAAI,IAAI,CAACC,gBAAgB,CAACD,KAAK,CAAC,EAAE;QACjC,IAAI,CAACG,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE,uBAAuB,CAAC;QACpE,IAAI,CAACG,eAAe,CACnBP,SAAS,EACTI,MAAM,EACN1B,6BAA6B,CAAC,8BAA8B,EAAE,qCAAqC,CACpG,CAAC;QACD,OAAO,KAAK;MACb;MAEA,MAAMqC,OAAO,GAAG9C,kBAAkB,CAAC4C,KAAK,CAAC;MACzC,IAAI,CAACG,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE,sBAAsBW,OAAO,EAAE,CAAC;MAC5E,IAAI,CAACE,kBAAkB,CAACjB,SAAS,EAAEI,MAAM,EAAEW,OAAO,EAAE,2BAA2B,CAAC;MAChF,OAAO,KAAK;IACb,CAAC,SAAS;MACTX,MAAM,CAACE,aAAa,GAAGY,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEf,MAAM,CAACE,aAAa,GAAG,CAAC,CAAC;MAC5D,IAAI,CAACc,8BAA8B,CAACpB,SAAS,EAAEI,MAAM,CAAC;IACvD;EACD;EAEA,MAAM8B,aAAaA,CAAClC,SAAiB,EAAEE,SAA2B,EAAiB;IAClF,MAAME,MAAM,GAAG,IAAI,CAAClB,OAAO,CAACqC,GAAG,CAACvB,SAAS,CAAC;IAC1C,IAAI,CAACI,MAAM,EAAE;MACZ;IACD;IACA,IAAI;MACH,MAAM,IAAI,CAACI,cAAc,CAACJ,MAAM,EAAEF,SAAS,CAAC;IAC7C,CAAC,CAAC,OAAOW,KAAK,EAAE;MACf,MAAME,OAAO,GAAG9C,kBAAkB,CAAC4C,KAAK,CAAC;MACzC,IAAI,CAACG,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAEW,OAAO,CAAC;MACpD,IAAI,CAACE,kBAAkB,CAACjB,SAAS,EAAEI,MAAM,EAAEW,OAAO,EAAE,0BAA0B,CAAC;IAChF;EACD;EAEA,MAAMoB,MAAMA,CAACnC,SAAiB,EAAEE,SAA2B,EAAEC,OAA8B,GAAG,CAAC,CAAC,EAAoB;IACnH,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACC,aAAa,CAACL,SAAS,EAAEE,SAAS,EAAEC,OAAO,CAAC;IACtE,MAAMiC,iBAAiB,GAAGhC,MAAM,CAACK,OAA0D;IAC3F,IAAI,OAAO2B,iBAAiB,CAACD,MAAM,KAAK,UAAU,EAAE;MACnD,IAAI,CAACnB,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE,0DAA0D,CAAC;MACvG,IAAI,CAACG,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAE5B,uBAAuB,CAAC,4BAA4B,CAAC,CAAC;MAC9F,OAAO,KAAK;IACb;IAEA4B,MAAM,CAACE,aAAa,IAAI,CAAC;IACzB,IAAI,CAACC,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAEzB,yBAAyB,CAAC,qBAAqB,CAAC,CAAC;IACzF,IAAI;MACH,MAAM,IAAI,CAAC6B,cAAc,CAACJ,MAAM,EAAEF,SAAS,CAAC;MAC5C,MAAMkC,iBAAiB,CAACD,MAAM,CAAC,CAAC;MAChC,IAAI,CAAC5B,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAE3B,sBAAsB,CAAC,CAAC,CAAC;MACjE,OAAO,IAAI;IACZ,CAAC,CAAC,OAAOoC,KAAK,EAAE;MACf,MAAME,OAAO,GAAG9C,kBAAkB,CAAC4C,KAAK,CAAC;MACzC,IAAI,CAACG,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE,kBAAkBW,OAAO,EAAE,CAAC;MACxE,IAAI,CAACE,kBAAkB,CAACjB,SAAS,EAAEI,MAAM,EAAEW,OAAO,EAAE,uBAAuB,CAAC;MAC5E,OAAO,KAAK;IACb,CAAC,SAAS;MACTX,MAAM,CAACE,aAAa,GAAGY,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEf,MAAM,CAACE,aAAa,GAAG,CAAC,CAAC;MAC5D,IAAI,CAACc,8BAA8B,CAACpB,SAAS,EAAEI,MAAM,CAAC;IACvD;EACD;EAEAiC,OAAOA,CAACC,IAAiB,EAAQ;IAChC,IAAI,CAAChD,WAAW,GAAGgD,IAAI;EACxB;EAEAC,OAAOA,CAAA,EAAS;IACf,KAAK,MAAM,CAACC,SAAS,EAAEC,eAAe,CAAC,IAAI,IAAI,CAACpD,gBAAgB,CAACqD,OAAO,CAAC,CAAC,EAAE;MAC3ED,eAAe,CAACE,OAAO,CAAC,QAAQ,CAAC;MACjC,IAAI,CAACjD,SAAS,CAACkD,aAAa,CAACH,eAAe,CAACzC,SAAS,EAAEwC,SAAS,CAAC;MAClE,IAAI,CAACnD,gBAAgB,CAACwD,MAAM,CAACL,SAAS,CAAC;IACxC;IACA,KAAK,MAAM,CAACxC,SAAS,EAAEI,MAAM,CAAC,IAAI,IAAI,CAAClB,OAAO,CAACwD,OAAO,CAAC,CAAC,EAAE;MACzDtC,MAAM,CAAC0C,WAAW,CAAC,CAAC;MACpB1C,MAAM,CAAC2C,wBAAwB,CAAC,CAAC;MACjC,KAAK3C,MAAM,CAACK,OAAO,CAACa,KAAK,CAAC,CAAC,CAACM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MAC3CxB,MAAM,CAACK,OAAO,CAAC8B,OAAO,CAAC,CAAC;MACxB,IAAI,CAACrD,OAAO,CAAC2D,MAAM,CAAC7C,SAAS,CAAC;IAC/B;EACD;EAEA,MAAcK,aAAaA,CAC1BL,SAAiB,EACjBE,SAA2B,EAC3BC,OAA8B,GAAG,CAAC,CAAC,EACH;IAChC,MAAM6C,QAAQ,GAAG,IAAI,CAAC9D,OAAO,CAACqC,GAAG,CAACvB,SAAS,CAAC;IAC5C,IAAIgD,QAAQ,EAAE;MACb,OAAOA,QAAQ;IAChB;IAEA,MAAM5D,OAAO,GAAG,IAAI,CAACA,OAAO,CAACmC,GAAG,CAACvB,SAAS,CAAC;IAC3C,IAAIZ,OAAO,EAAE;MACZ,OAAOA,OAAO;IACf;IAEA,MAAM6D,OAAO,GAAG,IAAI,CAACC,mBAAmB,CAAClD,SAAS,EAAEE,SAAS,EAAEC,OAAO,CAAC,CACrEgD,IAAI,CAAE/C,MAAM,IAAK;MACjB,IAAI,CAAClB,OAAO,CAACkE,GAAG,CAACpD,SAAS,EAAEI,MAAM,CAAC;MACnC,OAAOA,MAAM;IACd,CAAC,CAAC,CACDiD,OAAO,CAAC,MAAM;MACd,IAAI,CAACjE,OAAO,CAACyD,MAAM,CAAC7C,SAAS,CAAC;IAC/B,CAAC,CAAC;IAEH,IAAI,CAACZ,OAAO,CAACgE,GAAG,CAACpD,SAAS,EAAEiD,OAAO,CAAC;IACpC,OAAOA,OAAO;EACf;EAEA,MAAcC,mBAAmBA,CAChClD,SAAiB,EACjBE,SAA2B,EAC3BC,OAA8B,EACE;IAChC,MAAMmD,WAAW,GAAG,MAAMjF,sBAAsB,CAAC,CAAC;IAClD,MAAMkF,QAAQ,GAAG,IAAI,CAACC,gBAAgB,CAACtD,SAAS,CAAC;IACjD,MAAMuD,WAAW,GAAGH,WAAW,CAACI,WAAW,CAACC,QAAQ,CAAC,CAAC;IACtD,MAAMC,aAAa,GAAG,IAAIN,WAAW,CAACO,aAAa,CAACJ,WAAW,EAAEjG,IAAI,CAAC,IAAI,CAACsC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAC5G,MAAMgE,eAAe,GAAGR,WAAW,CAACS,eAAe,CAACJ,QAAQ,CAAC,CAAC;IAC9D,MAAMK,UAAU,GAAG7F,oBAAoB,CAAC,IAAI,CAACyB,GAAG,EAAE,IAAI,CAACE,QAAQ,CAAC;IAChE,MAAMmE,cAAc,GAAG9D,OAAO,CAAC+D,kBAAkB,GAC9CZ,WAAW,CAACa,cAAc,CAACC,IAAI,CAACjE,OAAO,CAAC+D,kBAAkB,EAAEF,UAAU,CAAC,GACvEV,WAAW,CAACa,cAAc,CAACE,MAAM,CAAC,IAAI,CAACzE,GAAG,EAAEoE,UAAU,CAAC;IAE1D,IAAI,CAACM,uBAAuB,CAACV,aAAa,EAAEH,WAAW,EAAEF,QAAQ,CAACgB,OAAO,EAAEhB,QAAQ,CAACiB,OAAO,EAAEjB,QAAQ,CAACkB,MAAM,CAAC;IAE7G,MAAMC,KAAK,GAAGd,aAAa,CAACe,IAAI,CAACpB,QAAQ,CAACgB,OAAO,CAACK,EAAE,EAAErB,QAAQ,CAACiB,OAAO,CAAC;IACvE,IAAI,CAACE,KAAK,EAAE;MACX,MAAM,IAAIG,KAAK,CAAC,4BAA4BtB,QAAQ,CAACiB,OAAO,QAAQjB,QAAQ,CAACgB,OAAO,CAACO,KAAK,EAAE,CAAC;IAC9F;IAEA,MAAM;MAAErE,OAAO;MAAEsE;IAAqB,CAAC,GAAG,MAAMzB,WAAW,CAAC0B,kBAAkB,CAAC;MAC9EpF,GAAG,EAAE,IAAI,CAACA,GAAG;MACbE,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvB2D,WAAW;MACXG,aAAa;MACbE,eAAe;MACfG,cAAc;MACdS;IACD,CAAC,CAAC;IAEF,MAAMjE,OAAO,CAACwE,cAAc,CAAC;MAC5BC,qBAAqB,EAAE;QACtBC,WAAW,EAAEA,CAAA,KAAM1E,OAAO,CAAC2E,KAAK,CAACD,WAAW,CAAC,CAAC;QAC9CE,UAAU,EAAE,MAAAA,CAAA,MAAa;UAAEC,SAAS,EAAE;QAAK,CAAC,CAAC;QAC7CC,IAAI,EAAE,MAAAA,CAAA,MAAa;UAAED,SAAS,EAAE;QAAK,CAAC,CAAC;QACvCE,YAAY,EAAE,MAAAA,CAAA,MAAa;UAAEF,SAAS,EAAE;QAAK,CAAC,CAAC;QAC/CG,aAAa,EAAE,MAAAA,CAAA,MAAa;UAAEH,SAAS,EAAE;QAAK,CAAC,CAAC;QAChDnD,MAAM,EAAE,MAAAA,CAAA,KAAY;UACnB,MAAO1B,OAAO,CAAqD0B,MAAM,GAAG,CAAC;QAC9E;MACD,CAAC;MACDuD,OAAO,EAAG7E,KAAK,IAAK;QACnB,MAAMT,MAAM,GAAG,IAAI,CAAClB,OAAO,CAACqC,GAAG,CAACvB,SAAS,CAAC;QAC1C,IAAII,MAAM,EAAE;UACX,IAAI,CAACY,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE,oBAAoBS,KAAK,CAAC8E,aAAa,MAAM9E,KAAK,CAACA,KAAK,EAAE,CAAC;QACxG;MACD;IACD,CAAC,CAAC;IAEF,MAAMT,MAA4B,GAAG;MACpCK,OAAO;MACPqC,WAAW,EAAEA,CAAA,KAAM,CAAC,CAAC;MACrBC,wBAAwB,EAAEA,CAAA,KAAM,CAAC,CAAC;MAClCa,aAAa;MACbH,WAAW;MACXmC,eAAe,EAAErC,QAAQ,CAACgB,OAAO,CAACK,EAAE;MACpCiB,aAAa,EAAEtC,QAAQ,CAACiB,OAAO;MAC/BsB,2BAA2B,EAAElF,SAAS;MACtCmF,2BAA2B,EAAEnF,SAAS;MACtCoF,cAAc,EAAE,IAAI7G,GAAG,CAAC,CAAC;MACzB8G,UAAU,EAAE,IAAI9G,GAAG,CAAC,CAAC;MACrBmB,aAAa,EAAE,CAAC;MAChB4F,YAAY,EAAEzH,sBAAsB,CAAC,CAAC;MACtC0H,QAAQ,EAAE;IACX,CAAC;IAED/F,MAAM,CAAC2C,wBAAwB,GAAG3E,yBAAyB,CAACqC,OAAO,EAAE,OAAO;MAAE2F,QAAQ;MAAEC;IAAK,CAAC,EAAEC,MAAM,KACrG,IAAI,CAACC,qBAAqB,CAACvG,SAAS,EAAEI,MAAM,EAAEgG,QAAQ,CAACxB,EAAE,EAAEwB,QAAQ,CAACI,IAAI,EAAEH,IAAI,EAAEC,MAAM,CACvF,CAAC;IACDlG,MAAM,CAAC0C,WAAW,GAAGrC,OAAO,CAACgG,SAAS,CAAEC,KAAK,IAAK;MACjD,IAAI,CAACC,kBAAkB,CAAC3G,SAAS,EAAEI,MAAM,EAAEsG,KAAK,CAAC;IAClD,CAAC,CAAC;IAEF,MAAMxC,kBAAkB,GAAGzD,OAAO,CAACwD,cAAc,CAAC2C,cAAc,CAAC,CAAC;IAClE,IAAI1C,kBAAkB,IAAIA,kBAAkB,KAAK/D,OAAO,CAAC+D,kBAAkB,EAAE;MAC5E,IAAI,CAACxE,SAAS,CAACmH,oBAAoB,CAAC7G,SAAS,EAAE;QAAEkE;MAAmB,CAAC,CAAC;IACvE;IAEA,MAAM4C,gBAAgB,GAAG,IAAI,CAACC,mBAAmB,CAAC3G,MAAM,CAAC;IACzD,IAAI0G,gBAAgB,CAACE,MAAM,GAAG,CAAC,EAAE;MAChC,IAAI,CAACtH,SAAS,CAACuH,eAAe,CAACjH,SAAS,EAAE8G,gBAAgB,CAAC;IAC5D;IAEA,IAAI/B,oBAAoB,EAAE;MACzB,IAAI,CAAC/D,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE2E,oBAAoB,CAAC;IAClE;IACA,IAAI,CAACrF,SAAS,CAACwH,kBAAkB,CAAClH,SAAS,EAAEI,MAAM,CAAC8F,YAAY,CAAC;IAEjE,OAAO9F,MAAM;EACd;EAEQ2G,mBAAmBA,CAAC3G,MAA4B,EAAiB;IACxE,MAAM+G,QAAuB,GAAG,EAAE;IAElC,KAAK,MAAMpG,OAAO,IAAIX,MAAM,CAACK,OAAO,CAAC2G,KAAK,CAACC,QAAQ,EAAE;MACpD,IAAItG,OAAO,CAACuG,IAAI,KAAK,MAAM,EAAE;QAC5B,MAAMrH,IAAI,GAAGlC,eAAe,CAACgD,OAAO,CAAC;QACrC,IAAI,CAACd,IAAI,EAAE;QACXkH,QAAQ,CAACI,IAAI,CAAC;UACb3C,EAAE,EAAEhH,eAAe,CAACwC,MAAM,EAAE,MAAM,CAAC;UACnCkH,IAAI,EAAE,MAAM;UACZE,OAAO,EAAEvH,IAAI;UACbwH,IAAI,EAAEvJ,UAAU,CAAC6C,OAAO,CAAC2G,SAAS;QACnC,CAAC,CAAC;QACF;MACD;MAEA,IAAI3G,OAAO,CAACuG,IAAI,KAAK,WAAW,EAAE;QACjC,MAAMK,SAAS,GAAG9J,yBAAyB,CAACkD,OAAO,CAAC;QACpD,IAAI4G,SAAS,EAAE;UACdR,QAAQ,CAACI,IAAI,CAAC;YACb3C,EAAE,EAAEhH,eAAe,CAACwC,MAAM,EAAE,WAAW,CAAC;YACxCkH,IAAI,EAAE,WAAW;YACjBE,OAAO,EAAEG,SAAS;YAClBF,IAAI,EAAEvJ,UAAU,CAAC6C,OAAO,CAAC2G,SAAS,CAAC;YACnCE,IAAI,EAAE,WAAW;YACjBC,WAAW,EAAE,IAAI;YACjBC,QAAQ,EAAE;UACX,CAAC,CAAC;QACH;QAEA,MAAMN,OAAO,GAAG1J,2BAA2B,CAACiD,OAAO,CAAC;QACpD,IAAIyG,OAAO,EAAE;UACZL,QAAQ,CAACI,IAAI,CAAC;YACb3C,EAAE,EAAEhH,eAAe,CAACwC,MAAM,EAAE,WAAW,CAAC;YACxCkH,IAAI,EAAE,WAAW;YACjBE,OAAO;YACPC,IAAI,EAAEvJ,UAAU,CAAC6C,OAAO,CAAC2G,SAAS;UACnC,CAAC,CAAC;QACH;QACA;MACD;MAEA,IAAI3G,OAAO,CAACuG,IAAI,KAAK,YAAY,EAAE;QAClC,MAAMS,IAAI,GAAG/I,sBAAsB,CAClCD,sBAAsB,CAACgC,OAAO,CAACiH,UAAU,EAAEjH,OAAO,CAACkH,QAAQ,EAAErH,SAAS,CAAC,EACvE;UACCsH,MAAM,EAAEnH,OAAO,CAACoH,OAAO,GAAG,QAAQ,GAAG,WAAW;UAChDC,MAAM,EAAErH;QACT,CACD,CAAC;QACDoG,QAAQ,CAACI,IAAI,CAAC;UACb3C,EAAE,EAAEhH,eAAe,CAACwC,MAAM,EAAE,QAAQ,CAAC;UACrCkH,IAAI,EAAE,QAAQ;UACdE,OAAO,EAAE,EAAE;UACXC,IAAI,EAAEvJ,UAAU,CAAC6C,OAAO,CAAC2G,SAAS,CAAC;UACnCE,IAAI,EAAE,MAAM;UACZC,WAAW,EAAE,IAAI;UACjBC,QAAQ,EAAE,KAAK;UACfC;QACD,CAAC,CAAC;MACH;IACD;IAEA,OAAOZ,QAAQ;EAChB;EAEQrG,gBAAgBA,CAACD,KAAc,EAAW;IACjD,MAAME,OAAO,GAAG9C,kBAAkB,CAAC4C,KAAK,CAAC,CAACwH,WAAW,CAAC,CAAC;IACvD,OAAOtH,OAAO,CAACuH,QAAQ,CAAC,SAAS,CAAC,IAAIvH,OAAO,CAACuH,QAAQ,CAAC,WAAW,CAAC,IAAIvH,OAAO,CAACuH,QAAQ,CAAC,UAAU,CAAC;EACpG;EAEQ/H,eAAeA,CAACP,SAAiB,EAAEI,MAA4B,EAAEgH,KAA0B,EAAQ;IAC1GhH,MAAM,CAAC8F,YAAY,GAAGkB,KAAK;IAC3B,IAAI,CAAC1H,SAAS,CAACwH,kBAAkB,CAAClH,SAAS,EAAEoH,KAAK,CAAC;EACpD;EAEQhG,8BAA8BA,CAACpB,SAAiB,EAAEI,MAA4B,EAAQ;IAC7F,IAAIA,MAAM,CAACE,aAAa,GAAG,CAAC,EAAE;MAC7B;IACD;IACA,IAAIF,MAAM,CAAC8F,YAAY,CAACqC,KAAK,KAAK,SAAS,IAAInI,MAAM,CAAC8F,YAAY,CAACqC,KAAK,KAAK,UAAU,IAAInI,MAAM,CAAC8F,YAAY,CAACqC,KAAK,KAAK,YAAY,EAAE;MACtI,IAAI,CAAChI,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAE3B,sBAAsB,CAAC,CAAC,CAAC;IAClE;EACD;EAEQoD,wBAAwBA,CAAC7B,SAAiB,EAAEI,MAA4B,EAAEoI,MAAc,EAAQ;IACvG,KAAK,MAAM,CAAChG,SAAS,EAAEC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAACpD,gBAAgB,CAACqD,OAAO,CAAC,CAAC,CAAC,EAAE;MAChF,IAAID,eAAe,CAACzC,SAAS,KAAKA,SAAS,EAAE;QAC5C;MACD;MACA,IAAI,CAACyI,eAAe,CAACjG,SAAS,EAAE,QAAQ,CAAC;IAC1C;IAEA,KAAK,MAAM,CAACwF,UAAU,EAAED,IAAI,CAAC,IAAI3H,MAAM,CAAC6F,UAAU,CAACvD,OAAO,CAAC,CAAC,EAAE;MAC7D,IAAIqF,IAAI,CAACG,MAAM,KAAK,WAAW,IAAIH,IAAI,CAACG,MAAM,KAAK,QAAQ,EAAE;QAC5D;MACD;MAEA,MAAMQ,QAAQ,GAAG1J,sBAAsB,CAAC+I,IAAI,EAAE;QAC7CG,MAAM,EAAE,QAAQ;QAChBE,MAAM,EAAEzK,sBAAsB,CAAC6K,MAAM;MACtC,CAAC,CAAC;MACFpI,MAAM,CAAC6F,UAAU,CAAC7C,GAAG,CAAC4E,UAAU,EAAEU,QAAQ,CAAC;MAC3C,MAAMC,SAAS,GAAGvI,MAAM,CAAC4F,cAAc,CAACzE,GAAG,CAACyG,UAAU,CAAC;MACvD,IAAIW,SAAS,EAAE;QACd,IAAI,CAACjJ,SAAS,CAACkJ,YAAY,CAAC5I,SAAS,EAAE2I,SAAS,EAAE;UACjDZ,IAAI,EAAEW,QAAQ;UACdjB,IAAI,EAAEvJ,UAAU,CAAC;QAClB,CAAC,CAAC;MACH;IACD;IAEAkC,MAAM,CAAC4F,cAAc,CAAC6C,KAAK,CAAC,CAAC;IAC7BzI,MAAM,CAAC6F,UAAU,CAAC4C,KAAK,CAAC,CAAC;IACzBzI,MAAM,CAAC0F,2BAA2B,GAAGlF,SAAS;IAC9CR,MAAM,CAAC2F,2BAA2B,GAAGnF,SAAS;EAC/C;EAEQ4C,gBAAgBA,CAACtD,SAA2B,EAAiE;IACpH,MAAM4I,SAAS,GAAG5I,SAAS,CAAC4I,SAAS,IAAI,IAAI,CAACrJ,cAAc,CAACsJ,kBAAkB,CAAC,CAAC,CAACD,SAAS;IAC3F,IAAI,CAACA,SAAS,EAAE;MACf,MAAM,IAAIjE,KAAK,CAAC,8BAA8B,CAAC;IAChD;IAEA,MAAMN,OAAO,GAAG,IAAI,CAAC9E,cAAc,CAACuJ,UAAU,CAACF,SAAS,CAAC;IACzD,IAAI,CAACvE,OAAO,EAAE;MACb,MAAM,IAAIM,KAAK,CAAC,6BAA6BiE,SAAS,EAAE,CAAC;IAC1D;IAEA,MAAMtE,OAAO,GAAGtE,SAAS,CAACsE,OAAO,IAAID,OAAO,CAAC0E,MAAM,CAAC,CAAC,CAAC,EAAErE,EAAE;IAC1D,IAAI,CAACJ,OAAO,EAAE;MACb,MAAM,IAAIK,KAAK,CAAC,2BAA2BN,OAAO,CAACO,KAAK,EAAE,CAAC;IAC5D;IAEA,MAAML,MAAM,GAAG,IAAI,CAAChF,cAAc,CAACyJ,SAAS,CAAC3E,OAAO,CAACK,EAAE,CAAC;IACxD,IAAI,CAACH,MAAM,EAAE;MACZ,MAAM,IAAII,KAAK,CAAC,6BAA6BN,OAAO,CAACO,KAAK,EAAE,CAAC;IAC9D;IAEA,OAAO;MAAEP,OAAO;MAAEC,OAAO;MAAEC;IAAO,CAAC;EACpC;EAEQH,uBAAuBA,CAC9BV,aAA4B,EAC5BH,WAAwB,EACxBc,OAAwB,EACxB4E,eAAuB,EACvB1E,MAAc,EACP;IACPhB,WAAW,CAAC2F,gBAAgB,CAAC7E,OAAO,CAACK,EAAE,EAAEH,MAAM,CAAC;IAEhD,MAAMwE,MAAM,GAAG,CAAC,GAAG1E,OAAO,CAAC0E,MAAM,CAAC;IAClC,IAAI,CAACA,MAAM,CAACvH,IAAI,CAAEgD,KAAK,IAAKA,KAAK,CAACE,EAAE,KAAKuE,eAAe,CAAC,EAAE;MAC1DF,MAAM,CAAC1B,IAAI,CAAC;QACX3C,EAAE,EAAEuE,eAAe;QACnB3C,IAAI,EAAE2C,eAAe;QACrBE,MAAM,EAAE9E,OAAO,CAAC8E;MACjB,CAAC,CAAC;IACH;IAEAzF,aAAa,CAAC0F,gBAAgB,CAAC/E,OAAO,CAACK,EAAE,EAAE;MAC1C2E,OAAO,EAAEhF,OAAO,CAACgF,OAAO;MACxB9E,MAAM;MACN+E,GAAG,EAAEjF,OAAO,CAACkF,UAAU;MACvBR,MAAM,EAAEA,MAAM,CAACS,GAAG,CAAEhF,KAAK,IAAKpG,iBAAiB,CAACoG,KAAK,CAAC;IACvD,CAAC,CAAC;EACH;EAEA,MAAclE,cAAcA,CAACJ,MAA4B,EAAEF,SAA2B,EAAiB;IACtG,MAAMqD,QAAQ,GAAG,IAAI,CAACC,gBAAgB,CAACtD,SAAS,CAAC;IACjD,IAAIE,MAAM,CAACwF,eAAe,KAAKrC,QAAQ,CAACgB,OAAO,CAACK,EAAE,IAAIxE,MAAM,CAACyF,aAAa,KAAKtC,QAAQ,CAACiB,OAAO,EAAE;MAChG;IACD;IAEA,IAAI,CAACF,uBAAuB,CAAClE,MAAM,CAACwD,aAAa,EAAExD,MAAM,CAACqD,WAAW,EAAEF,QAAQ,CAACgB,OAAO,EAAEhB,QAAQ,CAACiB,OAAO,EAAEjB,QAAQ,CAACkB,MAAM,CAAC;IAC3H,MAAMC,KAAK,GAAGtE,MAAM,CAACwD,aAAa,CAACe,IAAI,CAACpB,QAAQ,CAACgB,OAAO,CAACK,EAAE,EAAErB,QAAQ,CAACiB,OAAO,CAAC;IAC9E,IAAI,CAACE,KAAK,EAAE;MACX,MAAM,IAAIG,KAAK,CAAC,SAAStB,QAAQ,CAACiB,OAAO,uBAAuBjB,QAAQ,CAACgB,OAAO,CAACO,KAAK,EAAE,CAAC;IAC1F;IAEA,MAAM1E,MAAM,CAACK,OAAO,CAACkJ,QAAQ,CAACjF,KAAmB,CAAC;IAClDtE,MAAM,CAACwF,eAAe,GAAGrC,QAAQ,CAACgB,OAAO,CAACK,EAAE;IAC5CxE,MAAM,CAACyF,aAAa,GAAGtC,QAAQ,CAACiB,OAAO;EACxC;EAEQxD,mBAAmBA,CAAChB,SAAiB,EAAEI,MAA4B,EAAEoH,OAAe,EAAQ;IACnG,IAAI,CAAC9H,SAAS,CAACkK,aAAa,CAAC5J,SAAS,EAAE;MACvC4E,EAAE,EAAEhH,eAAe,CAACwC,MAAM,EAAE,QAAQ,CAAC;MACrCkH,IAAI,EAAE,QAAQ;MACdE,OAAO;MACPC,IAAI,EAAEvJ,UAAU,CAAC,CAAC;MAClB0J,IAAI,EAAE;IACP,CAAC,CAAC;EACH;EAEQ3G,kBAAkBA,CAACjB,SAAiB,EAAEI,MAA4B,EAAEW,OAAe,EAAE8I,aAAqB,EAAQ;IACzH,MAAMC,IAAI,GAAGlL,sBAAsB,CAACmC,OAAO,CAAC;IAC5C,IAAI,CAACR,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAE5B,uBAAuB,CAACsL,IAAI,EAAEhF,KAAK,IAAI+E,aAAa,EAAE9I,OAAO,CAAC,CAAC;IACvG,IAAI+I,IAAI,EAAEC,QAAQ,EAAE;MACnB,IAAI,CAAC/I,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE0J,IAAI,CAACC,QAAQ,CAAC;IAC3D;EACD;EAEQC,iBAAiBA,CAAChK,SAAiB,EAAEI,MAA4B,EAAE2H,IAAsB,EAAU;IAC1G,MAAMnD,EAAE,GAAGhH,eAAe,CAACwC,MAAM,EAAE,QAAQ,CAAC;IAC5C,IAAI,CAACV,SAAS,CAACkK,aAAa,CAAC5J,SAAS,EAAE;MACvC4E,EAAE;MACF0C,IAAI,EAAE,QAAQ;MACdE,OAAO,EAAE,EAAE;MACXC,IAAI,EAAEvJ,UAAU,CAAC,CAAC;MAClB0J,IAAI,EAAE,MAAM;MACZC,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE,KAAK;MACfC;IACD,CAAC,CAAC;IACF,OAAOnD,EAAE;EACV;EAEQqF,sBAAsBA,CAACjK,SAAiB,EAAEI,MAA4B,EAAEoH,OAAe,EAAQ;IACtG,IAAI,CAAC9H,SAAS,CAACkK,aAAa,CAAC5J,SAAS,EAAE;MACvC4E,EAAE,EAAEhH,eAAe,CAACwC,MAAM,EAAE,WAAW,CAAC;MACxCkH,IAAI,EAAE,WAAW;MACjBE,OAAO;MACPC,IAAI,EAAEvJ,UAAU,CAAC,CAAC;MAClB0J,IAAI,EAAE,WAAW;MACjBC,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE;IACX,CAAC,CAAC;EACH;EAEQoC,4BAA4BA,CACnClK,SAAiB,EACjBI,MAA4B,EAC5B+J,eAAuB,EACvB3C,OAAe,EACN;IACT,MAAM5C,EAAE,GAAGhH,eAAe,CAACwC,MAAM,EAAE,WAAW,CAAC;IAC/C,IAAI,CAACV,SAAS,CAAC0K,mBAAmB,CAACpK,SAAS,EAAEmK,eAAe,EAAE;MAC9DvF,EAAE;MACF0C,IAAI,EAAE,WAAW;MACjBE,OAAO;MACPC,IAAI,EAAEvJ,UAAU,CAAC,CAAC;MAClB0J,IAAI,EAAE,WAAW;MACjBC,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE;IACX,CAAC,CAAC;IACF,OAAOlD,EAAE;EACV;EAEA6D,eAAeA,CAACjG,SAAiB,EAAE6H,QAA8B,EAAQ;IACxE,MAAM5H,eAAe,GAAG,IAAI,CAACpD,gBAAgB,CAACkC,GAAG,CAACiB,SAAS,CAAC;IAC5D,IAAI,CAACC,eAAe,EAAE;MACrB;IACD;IACA,IAAI,CAACpD,gBAAgB,CAACwD,MAAM,CAACL,SAAS,CAAC;IACvC,IAAI,CAAC9C,SAAS,CAACkD,aAAa,CAACH,eAAe,CAACzC,SAAS,EAAEwC,SAAS,CAAC;IAClEC,eAAe,CAACE,OAAO,CAAC0H,QAAQ,CAAC;EAClC;EAEQC,gBAAgBA,CAAA,EAAW;IAClC,IAAI,CAAC/K,gBAAgB,IAAI,CAAC;IAC1B,OAAO,YAAY,IAAI,CAACA,gBAAgB,EAAE;EAC3C;EAEQgL,cAAcA,CACrBvK,SAAiB,EACjBI,MAA4B,EAC5B4H,UAAkB,EAClBC,QAAgB,EAChBuC,MAIC,EACM;IACP,MAAM7B,SAAS,GAAGvI,MAAM,CAAC4F,cAAc,CAACzE,GAAG,CAACyG,UAAU,CAAC;IACvD,MAAMyC,WAAW,GAAGrK,MAAM,CAAC6F,UAAU,CAAC1E,GAAG,CAACyG,UAAU,CAAC,IAAIjJ,sBAAsB,CAACiJ,UAAU,EAAEC,QAAQ,EAAEuC,MAAM,CAACnE,IAAI,CAAC;IAClH,MAAMqC,QAAQ,GAAG1J,sBAAsB,CAACyL,WAAW,EAAED,MAAM,CAAC;IAC5DpK,MAAM,CAAC6F,UAAU,CAAC7C,GAAG,CAAC4E,UAAU,EAAEU,QAAQ,CAAC;IAC3C,IAAIC,SAAS,EAAE;MACd,IAAI,CAACjJ,SAAS,CAACkJ,YAAY,CAAC5I,SAAS,EAAE2I,SAAS,EAAE;QACjDZ,IAAI,EAAEW;MACP,CAAC,CAAC;IACH;EACD;EAEA,MAAcnC,qBAAqBA,CAClCvG,SAAiB,EACjBI,MAA4B,EAC5B4H,UAAkB,EAClBC,QAAgB,EAChB5B,IAAa,EACbC,MAAoB,EACwC;IAC5D,MAAMoE,OAAO,GAAG7L,yBAAyB,CAAC,IAAI,CAACyL,gBAAgB,CAAC,CAAC,EAAEtK,SAAS,EAAEgI,UAAU,EAAEC,QAAQ,EAAE5B,IAAI,CAAC;IACzG,IAAI,CAACqE,OAAO,EAAE;MACb,OAAO9J,SAAS;IACjB;IAEA,IAAI,IAAI,CAACtB,WAAW,KAAK,WAAW,EAAE;MACrC,MAAMkJ,MAAM,GAAG,GAAGP,QAAQ,gDAAgD;MAC1E,IAAI,CAACjH,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAEoI,MAAM,CAAC;MACnD,IAAI,CAAC+B,cAAc,CAACvK,SAAS,EAAEI,MAAM,EAAE4H,UAAU,EAAEC,QAAQ,EAAE;QAC5DC,MAAM,EAAE,QAAQ;QAChB7B,IAAI;QACJ+B,MAAM,EAAEzK,sBAAsB,CAAC6K,MAAM;MACtC,CAAC,CAAC;MACF,OAAO;QACNmC,KAAK,EAAE,IAAI;QACXnC;MACD,CAAC;IACF;IAEA,IAAI,IAAI,CAAClJ,WAAW,KAAK,cAAc,EAAE;MACxC,IAAI,CAAC0B,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAE,iBAAiB6H,QAAQ,wBAAwB,CAAC;MAC9F,OAAOrH,SAAS;IACjB;IAEA,IAAI,CAAC2J,cAAc,CAACvK,SAAS,EAAEI,MAAM,EAAE4H,UAAU,EAAEC,QAAQ,EAAE;MAC5DC,MAAM,EAAE,mBAAmB;MAC3B7B;IACD,CAAC,CAAC;IACF,IAAI,CAAC9F,eAAe,CACnBP,SAAS,EACTI,MAAM,EACNzB,yBAAyB,CAAC,yBAAyBsJ,QAAQ,EAAE,CAC9D,CAAC;IACD,IAAI,CAACvI,SAAS,CAACkL,YAAY,CAAC5K,SAAS,EAAE0K,OAAO,CAAC;IAE/C,MAAML,QAAQ,GAAG,MAAM,IAAIQ,OAAO,CAAwBlI,OAAO,IAAK;MACrE,IAAI,CAACtD,gBAAgB,CAAC+D,GAAG,CAACsH,OAAO,CAAC9F,EAAE,EAAE;QACrC5E,SAAS;QACT2C;MACD,CAAC,CAAC;MAEF,IAAI,CAAC2D,MAAM,EAAE;QACZ;MACD;MAEA,MAAMwE,OAAO,GAAGA,CAAA,KAAM;QACrB,IAAI,CAAC,IAAI,CAACzL,gBAAgB,CAAC0L,GAAG,CAACL,OAAO,CAAC9F,EAAE,CAAC,EAAE;UAC3C;QACD;QACA,IAAI,CAACvF,gBAAgB,CAACwD,MAAM,CAAC6H,OAAO,CAAC9F,EAAE,CAAC;QACxC,IAAI,CAAClF,SAAS,CAACkD,aAAa,CAAC5C,SAAS,EAAE0K,OAAO,CAAC9F,EAAE,CAAC;QACnDjC,OAAO,CAAC,QAAQ,CAAC;MAClB,CAAC;MAED,IAAI2D,MAAM,CAAC0E,OAAO,EAAE;QACnBF,OAAO,CAAC,CAAC;QACT;MACD;MAEAxE,MAAM,CAAC2E,gBAAgB,CAAC,OAAO,EAAEH,OAAO,EAAE;QAAEI,IAAI,EAAE;MAAK,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,IAAIb,QAAQ,KAAK,OAAO,EAAE;MACzB,IAAI,CAACE,cAAc,CAACvK,SAAS,EAAEI,MAAM,EAAE4H,UAAU,EAAEC,QAAQ,EAAE;QAC5DC,MAAM,EAAE,SAAS;QACjB7B;MACD,CAAC,CAAC;MACF,IAAI,CAAC9F,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAEzB,yBAAyB,CAAC,CAAC,CAAC;MACpE,OAAOiC,SAAS;IACjB;IAEA,IAAI,CAAC2J,cAAc,CAACvK,SAAS,EAAEI,MAAM,EAAE4H,UAAU,EAAEC,QAAQ,EAAE;MAC5DC,MAAM,EAAE,QAAQ;MAChB7B,IAAI;MACJ+B,MAAM,EAAEzK,sBAAsB,CAACmB,0BAA0B,CAACuL,QAAQ,EAAEK,OAAO,CAAC;IAC7E,CAAC,CAAC;IAEF,OAAO;MACNC,KAAK,EAAE,IAAI;MACXnC,MAAM,EAAE1J,0BAA0B,CAACuL,QAAQ,EAAEK,OAAO;IACrD,CAAC;EACF;EAEQ/D,kBAAkBA,CAAC3G,SAAiB,EAAEI,MAA4B,EAAEsG,KAAwB,EAAQ;IAC3GhJ,uBAAuB,CAACgJ,KAAK,EAAE;MAC9B1G,SAAS;MACTI,MAAM;MACNV,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBsK,iBAAiB,EAAGjC,IAAI,IAAK,IAAI,CAACiC,iBAAiB,CAAChK,SAAS,EAAEI,MAAM,EAAE2H,IAAI,CAAC;MAC5EkC,sBAAsB,EAAGzC,OAAO,IAAK,IAAI,CAACyC,sBAAsB,CAACjK,SAAS,EAAEI,MAAM,EAAEoH,OAAO,CAAC;MAC5F0C,4BAA4B,EAAEA,CAACC,eAAe,EAAE3C,OAAO,KACtD,IAAI,CAAC0C,4BAA4B,CAAClK,SAAS,EAAEI,MAAM,EAAE+J,eAAe,EAAE3C,OAAO,CAAC;MAC/ExG,mBAAmB,EAAGwG,OAAO,IAAK,IAAI,CAACxG,mBAAmB,CAAChB,SAAS,EAAEI,MAAM,EAAEoH,OAAO,CAAC;MACtFvG,kBAAkB,EAAEA,CAACF,OAAO,EAAE8I,aAAa,KAC1C,IAAI,CAAC5I,kBAAkB,CAACjB,SAAS,EAAEI,MAAM,EAAEW,OAAO,EAAE8I,aAAa,CAAC;MACnEtJ,eAAe,EAAG6G,KAAK,IAAK,IAAI,CAAC7G,eAAe,CAACP,SAAS,EAAEI,MAAM,EAAEgH,KAAK;IAC1E,CAAC,CAAC;EACH;AACD","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Show","FileChangeCardList","wepscliShellTheme","theme","APPROVAL_OPTIONS","id","label","description","color","success","danger","warning","ApprovalOverlay","props","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_el$8","_el$9","_el$0","_el$10","_el$25","_el$26","_$insertNode","_$setProp","_$createTextNode","_$insert","request","riskLabel","toolName","reason","summary","_$createComponent","when","commandText","children","_el$11","_el$12","_el$14","_el$15","_el$16","_$effect","_p$","_v$","panel","_v$2","border","_v$3","accent","_v$4","text","e","t","a","o","undefined","fileChanges","length","_el$17","_el$18","changes","title","_v$5","_v$6","_$memo","_el$19","_el$20","_el$22","_el$23","_el$24","argsText","_v$7","_v$8","_v$9","_v$0","map","option","index","_el$28","_el$29","_el$30","onSelectIndex","onResolve","_v$20","selectedIndex","_v$21","_v$22","background","_v$23","muted","_v$1","panelAlt","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","i","n","s","h","r","d","l"],"sources":["approval-overlay.tsx"],"sourcesContent":["import { Show } from \"solid-js\";\nimport { FileChangeCardList } from \"./file-change-preview.js\";\nimport type { ToolApprovalDecision, ToolApprovalRequest } from \"./tool-approval.js\";\nimport { wepscliShellTheme as theme } from \"./theme.js\";\n\r\nconst APPROVAL_OPTIONS: Array<{ id: ToolApprovalDecision; label: string; description: string; color: string }> = [\r\n\t{\r\n\t\tid: \"allow\",\r\n\t\tlabel: \"Allow\",\r\n\t\tdescription: \"Approve this tool call and continue execution.\",\r\n\t\tcolor: theme.success,\r\n\t},\r\n\t{\r\n\t\tid: \"reject\",\r\n\t\tlabel: \"Reject\",\r\n\t\tdescription: \"Block this tool call and return an error to the agent.\",\r\n\t\tcolor: theme.danger,\r\n\t},\r\n\t{\r\n\t\tid: \"cancel\",\r\n\t\tlabel: \"Cancel\",\r\n\t\tdescription: \"Cancel this request without allowing the tool to run.\",\r\n\t\tcolor: theme.warning,\r\n\t},\r\n];\r\n\r\nexport function ApprovalOverlay(props: {\r\n\trequest: ToolApprovalRequest;\r\n\tselectedIndex: number;\r\n\tonSelectIndex: (index: number) => void;\r\n\tonResolve: (decision: ToolApprovalDecision) => void;\r\n}) {\r\n\treturn (\r\n\t\t<box position=\"absolute\" width=\"100%\" height=\"100%\" alignItems=\"center\" justifyContent=\"center\">\r\n\t\t\t<box width=\"76%\" maxWidth={100} backgroundColor={theme.panelAlt} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.warning} padding={1} flexDirection=\"column\" gap={1}>\r\n\t\t\t\t<box flexDirection=\"row\" justifyContent=\"space-between\" gap={1}>\r\n\t\t\t\t\t<text fg={theme.warning}>Approve Tool Execution</text>\r\n\t\t\t\t\t<text fg={theme.danger}>{props.request.riskLabel}</text>\r\n\t\t\t\t</box>\r\n\t\t\t\t<text fg={theme.text}>{props.request.toolName}</text>\r\n\t\t\t\t<text fg={theme.muted} wrapMode=\"word\">{props.request.reason}</text>\r\n\t\t\t\t<box backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\n\t\t\t\t\t<text fg={theme.accent}>Request Summary</text>\n\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">{props.request.summary}</text>\n\t\t\t\t</box>\n\t\t\t\t<Show when={props.request.commandText}>\n\t\t\t\t\t<box backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\n\t\t\t\t\t\t<text fg={theme.accent}>Command</text>\n\t\t\t\t\t\t<scrollbox maxHeight={8}>\n\t\t\t\t\t\t\t<box flexDirection=\"column\" gap={1}>\n\t\t\t\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">{props.request.commandText}</text>\n\t\t\t\t\t\t\t</box>\n\t\t\t\t\t\t</scrollbox>\n\t\t\t\t\t</box>\n\t\t\t\t</Show>\n\t\t\t\t<Show when={props.request.fileChanges.length > 0}>\n\t\t\t\t\t<box backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\n\t\t\t\t\t\t<scrollbox maxHeight={18}>\n\t\t\t\t\t\t\t<FileChangeCardList changes={props.request.fileChanges} title=\"File Changes\" />\n\t\t\t\t\t\t</scrollbox>\n\t\t\t\t\t</box>\n\t\t\t\t</Show>\n\t\t\t\t<Show when={!props.request.commandText && props.request.fileChanges.length === 0}>\n\t\t\t\t\t<box backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\n\t\t\t\t\t\t<text fg={theme.accent}>Arguments</text>\n\t\t\t\t\t\t<scrollbox maxHeight={12}>\n\t\t\t\t\t\t\t<box flexDirection=\"column\" gap={1}>\n\t\t\t\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">{props.request.argsText}</text>\n\t\t\t\t\t\t\t</box>\n\t\t\t\t\t\t</scrollbox>\n\t\t\t\t\t</box>\n\t\t\t\t</Show>\n\t\t\t\t<box flexDirection=\"row\" gap={1}>\n\t\t\t\t\t{APPROVAL_OPTIONS.map((option, index) => (\n\t\t\t\t\t\t<box\n\t\t\t\t\t\t\tflexGrow={1}\r\n\t\t\t\t\t\t\tbackgroundColor={props.selectedIndex === index ? option.color : theme.panel}\r\n\t\t\t\t\t\t\tborder={[\"top\", \"right\", \"bottom\", \"left\"]}\r\n\t\t\t\t\t\tborderColor={option.color}\r\n\t\t\t\t\t\tpadding={1}\r\n\t\t\t\t\t\tflexDirection=\"column\"\r\n\t\t\t\t\t\tgap={1}\r\n\t\t\t\t\t\tonMouseUp={() => {\r\n\t\t\t\t\t\t\tprops.onSelectIndex(index);\r\n\t\t\t\t\t\t\tprops.onResolve(option.id);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<text fg={props.selectedIndex === index ? theme.background : option.color}>{option.label}</text>\r\n\t\t\t\t\t\t\t<text fg={props.selectedIndex === index ? theme.background : theme.muted} wrapMode=\"word\">\r\n\t\t\t\t\t\t\t\t{option.description}\r\n\t\t\t\t\t\t\t</text>\r\n\t\t\t\t\t\t</box>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</box>\r\n\t\t\t\t<text fg={theme.muted}>Left/Right select | Enter confirm | Esc cancel</text>\r\n\t\t\t</box>\r\n\t\t</box>\r\n\t);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Show","FileChangeCardList","wepscliShellTheme","theme","APPROVAL_OPTIONS","id","label","description","color","success","danger","warning","ApprovalOverlay","props","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_el$8","_el$9","_el$0","_el$10","_el$25","_el$26","_$insertNode","_$setProp","_$createTextNode","_$insert","request","riskLabel","toolName","reason","summary","_$createComponent","when","commandText","children","_el$11","_el$12","_el$14","_el$15","_el$16","_$effect","_p$","_v$","panel","_v$2","border","_v$3","accent","_v$4","text","e","t","a","o","undefined","fileChanges","length","_el$17","_el$18","changes","title","_v$5","_v$6","_$memo","_el$19","_el$20","_el$22","_el$23","_el$24","argsText","_v$7","_v$8","_v$9","_v$0","map","option","index","_el$28","_el$29","_el$30","onSelectIndex","onResolve","_v$20","selectedIndex","_v$21","_v$22","background","_v$23","muted","_v$1","panelAlt","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","i","n","s","h","r","d","l"],"sources":["approval-overlay.tsx"],"sourcesContent":["import { Show } from \"solid-js\";\r\nimport { FileChangeCardList } from \"./file-change-preview.js\";\r\nimport type { ToolApprovalDecision, ToolApprovalRequest } from \"./tool-approval.js\";\r\nimport { wepscliShellTheme as theme } from \"./theme.js\";\r\n\r\nconst APPROVAL_OPTIONS: Array<{ id: ToolApprovalDecision; label: string; description: string; color: string }> = [\r\n\t{\r\n\t\tid: \"allow\",\r\n\t\tlabel: \"Allow\",\r\n\t\tdescription: \"Approve this tool call and continue execution.\",\r\n\t\tcolor: theme.success,\r\n\t},\r\n\t{\r\n\t\tid: \"reject\",\r\n\t\tlabel: \"Reject\",\r\n\t\tdescription: \"Block this tool call and return an error to the agent.\",\r\n\t\tcolor: theme.danger,\r\n\t},\r\n\t{\r\n\t\tid: \"cancel\",\r\n\t\tlabel: \"Cancel\",\r\n\t\tdescription: \"Cancel this request without allowing the tool to run.\",\r\n\t\tcolor: theme.warning,\r\n\t},\r\n];\r\n\r\nexport function ApprovalOverlay(props: {\r\n\trequest: ToolApprovalRequest;\r\n\tselectedIndex: number;\r\n\tonSelectIndex: (index: number) => void;\r\n\tonResolve: (decision: ToolApprovalDecision) => void;\r\n}) {\r\n\treturn (\r\n\t\t<box position=\"absolute\" width=\"100%\" height=\"100%\" alignItems=\"center\" justifyContent=\"center\">\r\n\t\t\t<box width=\"76%\" maxWidth={100} backgroundColor={theme.panelAlt} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.warning} padding={1} flexDirection=\"column\" gap={1}>\r\n\t\t\t\t<box flexDirection=\"row\" justifyContent=\"space-between\" gap={1}>\r\n\t\t\t\t\t<text fg={theme.warning}>Approve Tool Execution</text>\r\n\t\t\t\t\t<text fg={theme.danger}>{props.request.riskLabel}</text>\r\n\t\t\t\t</box>\r\n\t\t\t\t<text fg={theme.text}>{props.request.toolName}</text>\r\n\t\t\t\t<text fg={theme.muted} wrapMode=\"word\">{props.request.reason}</text>\r\n\t\t\t\t<box backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\r\n\t\t\t\t\t<text fg={theme.accent}>Request Summary</text>\r\n\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">{props.request.summary}</text>\r\n\t\t\t\t</box>\r\n\t\t\t\t<Show when={props.request.commandText}>\r\n\t\t\t\t\t<box backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\r\n\t\t\t\t\t\t<text fg={theme.accent}>Command</text>\r\n\t\t\t\t\t\t<scrollbox maxHeight={8}>\r\n\t\t\t\t\t\t\t<box flexDirection=\"column\" gap={1}>\r\n\t\t\t\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">{props.request.commandText}</text>\r\n\t\t\t\t\t\t\t</box>\r\n\t\t\t\t\t\t</scrollbox>\r\n\t\t\t\t\t</box>\r\n\t\t\t\t</Show>\r\n\t\t\t\t<Show when={props.request.fileChanges.length > 0}>\r\n\t\t\t\t\t<box backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\r\n\t\t\t\t\t\t<scrollbox maxHeight={18}>\r\n\t\t\t\t\t\t\t<FileChangeCardList changes={props.request.fileChanges} title=\"File Changes\" />\r\n\t\t\t\t\t\t</scrollbox>\r\n\t\t\t\t\t</box>\r\n\t\t\t\t</Show>\r\n\t\t\t\t<Show when={!props.request.commandText && props.request.fileChanges.length === 0}>\r\n\t\t\t\t\t<box backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\r\n\t\t\t\t\t\t<text fg={theme.accent}>Arguments</text>\r\n\t\t\t\t\t\t<scrollbox maxHeight={12}>\r\n\t\t\t\t\t\t\t<box flexDirection=\"column\" gap={1}>\r\n\t\t\t\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">{props.request.argsText}</text>\r\n\t\t\t\t\t\t\t</box>\r\n\t\t\t\t\t\t</scrollbox>\r\n\t\t\t\t\t</box>\r\n\t\t\t\t</Show>\r\n\t\t\t\t<box flexDirection=\"row\" gap={1}>\r\n\t\t\t\t\t{APPROVAL_OPTIONS.map((option, index) => (\r\n\t\t\t\t\t\t<box\r\n\t\t\t\t\t\t\tflexGrow={1}\r\n\t\t\t\t\t\t\tbackgroundColor={props.selectedIndex === index ? option.color : theme.panel}\r\n\t\t\t\t\t\t\tborder={[\"top\", \"right\", \"bottom\", \"left\"]}\r\n\t\t\t\t\t\tborderColor={option.color}\r\n\t\t\t\t\t\tpadding={1}\r\n\t\t\t\t\t\tflexDirection=\"column\"\r\n\t\t\t\t\t\tgap={1}\r\n\t\t\t\t\t\tonMouseUp={() => {\r\n\t\t\t\t\t\t\tprops.onSelectIndex(index);\r\n\t\t\t\t\t\t\tprops.onResolve(option.id);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<text fg={props.selectedIndex === index ? theme.background : option.color}>{option.label}</text>\r\n\t\t\t\t\t\t\t<text fg={props.selectedIndex === index ? theme.background : theme.muted} wrapMode=\"word\">\r\n\t\t\t\t\t\t\t\t{option.description}\r\n\t\t\t\t\t\t\t</text>\r\n\t\t\t\t\t\t</box>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</box>\r\n\t\t\t\t<text fg={theme.muted}>Left/Right select | Enter confirm | Esc cancel</text>\r\n\t\t\t</box>\r\n\t\t</box>\r\n\t);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ import { setProp as _$setProp } from "@opentui/solid";
|
|
|
9
9
|
import { createElement as _$createElement } from "@opentui/solid";
|
|
10
10
|
import { useKeyboard } from "@opentui/solid";
|
|
11
11
|
import { For, Show, createEffect, createMemo, createSignal } from "solid-js";
|
|
12
|
-
import { getSlashCommands } from "./slash-commands.js";
|
|
12
|
+
import { getSlashCommands, shouldInsertSlashCommand } from "./slash-commands.js";
|
|
13
13
|
import { wepscliShellTheme as theme } from "./theme.js";
|
|
14
14
|
export function ChatTopBar(props) {
|
|
15
15
|
return (() => {
|
|
@@ -194,7 +194,7 @@ export function ChatComposer(props) {
|
|
|
194
194
|
let inputRef;
|
|
195
195
|
const [draftValue, setDraftValue] = createSignal(props.value);
|
|
196
196
|
const [slashIndex, setSlashIndex] = createSignal(0);
|
|
197
|
-
const slashOptions = createMemo(() => getSlashCommands(draftValue()));
|
|
197
|
+
const slashOptions = createMemo(() => getSlashCommands(draftValue(), props.slashCommands ?? []));
|
|
198
198
|
const visibleSlashOptions = createMemo(() => slashOptions().slice(0, 6));
|
|
199
199
|
createEffect(() => {
|
|
200
200
|
const nextValue = props.value;
|
|
@@ -221,7 +221,7 @@ export function ChatComposer(props) {
|
|
|
221
221
|
return;
|
|
222
222
|
}
|
|
223
223
|
evt.preventDefault();
|
|
224
|
-
|
|
224
|
+
selectSlashCommand(command.id);
|
|
225
225
|
}
|
|
226
226
|
});
|
|
227
227
|
function updateValue(nextValue) {
|
|
@@ -229,12 +229,19 @@ export function ChatComposer(props) {
|
|
|
229
229
|
if (!nextValue.trim().startsWith("/")) setSlashIndex(0);
|
|
230
230
|
props.onInput(nextValue);
|
|
231
231
|
}
|
|
232
|
+
function selectSlashCommand(commandId) {
|
|
233
|
+
if (shouldInsertSlashCommand(commandId)) {
|
|
234
|
+
updateValue(`${commandId} `);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
props.onSelectSlashCommand(commandId);
|
|
238
|
+
}
|
|
232
239
|
function submitCurrentValue(value) {
|
|
233
|
-
const matchingCommands = getSlashCommands(value).slice(0, 6);
|
|
240
|
+
const matchingCommands = getSlashCommands(value, props.slashCommands ?? []).slice(0, 6);
|
|
234
241
|
if (value.trim().startsWith("/") && matchingCommands.length > 0) {
|
|
235
242
|
const command = matchingCommands[slashIndex()] ?? matchingCommands[0];
|
|
236
243
|
if (command) {
|
|
237
|
-
|
|
244
|
+
selectSlashCommand(command.id);
|
|
238
245
|
return;
|
|
239
246
|
}
|
|
240
247
|
}
|
|
@@ -278,7 +285,7 @@ export function ChatComposer(props) {
|
|
|
278
285
|
_$setProp(_el$26, "paddingLeft", 1);
|
|
279
286
|
_$setProp(_el$26, "paddingRight", 1);
|
|
280
287
|
_$setProp(_el$26, "flexDirection", "row");
|
|
281
|
-
_$setProp(_el$26, "onMouseUp", () =>
|
|
288
|
+
_$setProp(_el$26, "onMouseUp", () => selectSlashCommand(option.id));
|
|
282
289
|
_$insert(_el$27, () => truncateText(option.label, 24));
|
|
283
290
|
_$effect(_p$ => {
|
|
284
291
|
var _v$30 = slashIndex() === index() ? theme.accent : theme.panelAlt,
|