@opengsd/gsd-pi 1.1.1-dev.616a1a1 → 1.1.1-dev.74e8dd1
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/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +167 -16
- package/dist/resources/extensions/gsd/auto/phases.js +4 -3
- package/dist/resources/extensions/gsd/auto-dashboard.js +15 -4
- package/dist/resources/extensions/gsd/auto-dispatch.js +39 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +113 -7
- package/dist/resources/extensions/gsd/auto-prompts.js +9 -0
- package/dist/resources/extensions/gsd/auto-recovery.js +4 -4
- package/dist/resources/extensions/gsd/auto-start.js +94 -15
- package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +2 -1
- package/dist/resources/extensions/gsd/auto.js +22 -4
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +79 -0
- package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +43 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +30 -9
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +16 -10
- package/dist/resources/extensions/gsd/commands/catalog.js +6 -1
- package/dist/resources/extensions/gsd/commands/handlers/core.js +6 -2
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +7 -3
- package/dist/resources/extensions/gsd/commands-maintenance.js +172 -2
- package/dist/resources/extensions/gsd/commands-mcp-status.js +107 -59
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +3 -1
- package/dist/resources/extensions/gsd/commands-verdict.js +1 -1
- package/dist/resources/extensions/gsd/config-overlay.js +2 -1
- package/dist/resources/extensions/gsd/error-classifier.js +2 -1
- package/dist/resources/extensions/gsd/exec-sandbox.js +2 -0
- package/dist/resources/extensions/gsd/gsd-db.js +37 -4
- package/dist/resources/extensions/gsd/guided-flow.js +1 -1
- package/dist/resources/extensions/gsd/mcp-filter.js +3 -0
- package/dist/resources/extensions/gsd/mcp-project-config.js +67 -8
- package/dist/resources/extensions/gsd/migration-auto-check.js +2 -2
- package/dist/resources/extensions/gsd/prompts/run-uat.md +10 -4
- package/dist/resources/extensions/gsd/prompts/system.md +3 -1
- package/dist/resources/extensions/gsd/safety/destructive-guard.js +3 -0
- package/dist/resources/extensions/gsd/skill-activation.js +20 -3
- package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +4 -2
- package/dist/resources/extensions/gsd/state-reconciliation/drift/project-md.js +1 -1
- package/dist/resources/extensions/gsd/state-reconciliation/drift/roadmap.js +18 -1
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +6 -0
- package/dist/resources/extensions/gsd/state.js +15 -12
- package/dist/resources/extensions/gsd/tool-presentation-plan.js +120 -0
- package/dist/resources/extensions/gsd/tools/exec-tool.js +109 -0
- package/dist/resources/extensions/gsd/tools/plan-slice.js +14 -9
- package/dist/resources/extensions/gsd/tools/reopen-milestone.js +2 -2
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +366 -3
- package/dist/resources/extensions/gsd/unit-context-manifest.js +8 -3
- package/dist/resources/extensions/gsd/validation-block-guard.js +2 -0
- package/dist/resources/extensions/gsd/workflow-mcp-auto-prep.js +3 -1
- package/dist/resources/extensions/gsd/workflow-mcp.js +5 -1
- package/dist/resources/extensions/gsd/worktree-lifecycle.js +24 -0
- package/dist/resources/extensions/mcp-client/manager.js +31 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +4 -4
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +4 -4
- package/dist/web/standalone/.next/server/chunks/8357.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/package.json +2 -2
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/dist/workflow.d.ts +14 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -1
- package/packages/contracts/dist/workflow.js +16 -0
- package/packages/contracts/dist/workflow.js.map +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/package.json +5 -5
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +10 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +72 -31
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js +5 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +82 -0
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +3 -3
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/dist/image-models.generated.d.ts +15 -0
- package/packages/pi-ai/dist/image-models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/image-models.generated.js +15 -0
- package/packages/pi-ai/dist/image-models.generated.js.map +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +338 -17
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +412 -112
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +11 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/dist/terminal.d.ts +1 -0
- package/packages/pi-tui/dist/terminal.d.ts.map +1 -1
- package/packages/pi-tui/dist/terminal.js +8 -4
- package/packages/pi-tui/dist/terminal.js.map +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +196 -16
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +239 -63
- package/src/resources/extensions/gsd/auto/phases.ts +5 -3
- package/src/resources/extensions/gsd/auto-dashboard.ts +16 -4
- package/src/resources/extensions/gsd/auto-dispatch.ts +48 -0
- package/src/resources/extensions/gsd/auto-post-unit.ts +138 -7
- package/src/resources/extensions/gsd/auto-prompts.ts +9 -0
- package/src/resources/extensions/gsd/auto-recovery.ts +4 -4
- package/src/resources/extensions/gsd/auto-start.ts +112 -17
- package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +2 -1
- package/src/resources/extensions/gsd/auto.ts +35 -3
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +86 -0
- package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +51 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +51 -14
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +21 -10
- package/src/resources/extensions/gsd/commands/catalog.ts +6 -1
- package/src/resources/extensions/gsd/commands/handlers/core.ts +6 -2
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +7 -3
- package/src/resources/extensions/gsd/commands-maintenance.ts +197 -2
- package/src/resources/extensions/gsd/commands-mcp-status.ts +134 -57
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +4 -1
- package/src/resources/extensions/gsd/commands-verdict.ts +1 -1
- package/src/resources/extensions/gsd/config-overlay.ts +3 -1
- package/src/resources/extensions/gsd/error-classifier.ts +2 -1
- package/src/resources/extensions/gsd/exec-sandbox.ts +4 -0
- package/src/resources/extensions/gsd/gsd-db.ts +41 -6
- package/src/resources/extensions/gsd/guided-flow.ts +1 -1
- package/src/resources/extensions/gsd/mcp-filter.ts +3 -0
- package/src/resources/extensions/gsd/mcp-project-config.ts +92 -10
- package/src/resources/extensions/gsd/migration-auto-check.ts +2 -2
- package/src/resources/extensions/gsd/preferences-types.ts +1 -1
- package/src/resources/extensions/gsd/prompts/run-uat.md +10 -4
- package/src/resources/extensions/gsd/prompts/system.md +3 -1
- package/src/resources/extensions/gsd/safety/destructive-guard.ts +3 -0
- package/src/resources/extensions/gsd/skill-activation.ts +20 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +4 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/project-md.ts +1 -1
- package/src/resources/extensions/gsd/state-reconciliation/drift/roadmap.ts +20 -0
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +6 -0
- package/src/resources/extensions/gsd/state-reconciliation/types.ts +1 -0
- package/src/resources/extensions/gsd/state.ts +16 -12
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +86 -0
- package/src/resources/extensions/gsd/tests/auto-start-orphan-bootstrap.test.ts +143 -2
- package/src/resources/extensions/gsd/tests/auto-start-project-milestone-reconcile.test.ts +24 -2
- package/src/resources/extensions/gsd/tests/commands-dispatcher-validation-block.test.ts +38 -3
- package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +50 -13
- package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +60 -0
- package/src/resources/extensions/gsd/tests/exec-sandbox.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/exec-tool.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/gsd-rebuild.test.ts +199 -0
- package/src/resources/extensions/gsd/tests/gsd-recover.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +13 -6
- package/src/resources/extensions/gsd/tests/mcp-filter.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/mcp-project-config.test.ts +68 -0
- package/src/resources/extensions/gsd/tests/mcp-status.test.ts +177 -0
- package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +54 -7
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +39 -1
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +10 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +18 -1
- package/src/resources/extensions/gsd/tests/reactive-executor.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/restore-tools-after-discuss.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/skill-activation.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +52 -0
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +84 -10
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +12 -2
- package/src/resources/extensions/gsd/tests/tui-header-lifecycle.test.ts +29 -6
- package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +29 -6
- package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +21 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp-auto-prep.test.ts +17 -2
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +83 -0
- package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +25 -0
- package/src/resources/extensions/gsd/tool-presentation-plan.ts +167 -0
- package/src/resources/extensions/gsd/tools/exec-tool.ts +130 -0
- package/src/resources/extensions/gsd/tools/plan-slice.ts +14 -9
- package/src/resources/extensions/gsd/tools/reopen-milestone.ts +2 -2
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +440 -2
- package/src/resources/extensions/gsd/unit-context-manifest.ts +14 -5
- package/src/resources/extensions/gsd/validation-block-guard.ts +2 -0
- package/src/resources/extensions/gsd/workflow-mcp-auto-prep.ts +2 -1
- package/src/resources/extensions/gsd/workflow-mcp.ts +5 -1
- package/src/resources/extensions/gsd/worktree-lifecycle.ts +26 -0
- package/src/resources/extensions/mcp-client/manager.ts +33 -1
- package/src/resources/extensions/mcp-client/tests/manager.test.ts +35 -0
- /package/dist/web/standalone/.next/static/{L9N5SPFi7f-Ne4u2uXzCe → eRWf-RI9bzbrwEurm_3uI}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{L9N5SPFi7f-Ne4u2uXzCe → eRWf-RI9bzbrwEurm_3uI}/_ssgManifest.js +0 -0
package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-extension-dialogs.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-extension-dialogs.ts"],"names":[],"mappings":"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","sourcesContent":["// Project/App: gsd-pi\n// File Purpose: Extracted from interactive-mode.ts (Phase E2 seam remediation).\n// @ts-nocheck\n\nimport type { KeyId } from \"@gsd/pi-tui\";\nimport { Container, matchesKey, Spacer, Text, type Component, type TUI } from \"@gsd/pi-tui\";\nimport type { ExtensionContext, ExtensionRunner, ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetOptions } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport { FooterDataProvider, type ReadonlyFooterDataProvider } from \"@gsd/pi-coding-agent/core/footer-data-provider.js\";\nimport { setRegisteredThemes, setTheme, Theme, theme } from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport { appKey } from \"./components/keybinding-hints.js\";\nimport { ExtensionEditorComponent } from \"./components/extension-editor.js\";\nimport { ExtensionInputComponent } from \"./components/extension-input.js\";\nimport { ExtensionSelectorComponent } from \"./components/extension-selector.js\";\nimport type { ExtensionNotifyType } from \"./interactive-notify-render.js\";\nimport { renderBlockingErrorBanner, renderExtensionNotifyInChat } from \"./interactive-notify-render.js\";\nimport { createExtensionUIContext as buildExtensionUIContext } from \"./controllers/extension-ui-controller.js\";\nimport { MAX_WIDGET_LINES } from \"./interactive-mode-class-constants.js\";\nimport type { InteractiveModeDelegateHost } from \"./interactive-mode-delegate-host.js\";\nimport { getEditorTheme } from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport type { EditorComponent, EditorTheme, KeybindingsManager, OverlayHandle, OverlayOptions } from \"@gsd/pi-tui\";\n\nexport function createExtensionUIContext(host: InteractiveModeDelegateHost): ExtensionUIContext {\n\t\treturn buildExtensionUIContext(host);\n\t}\n\n\t/**\n\t * Show a selector for extensions.\n\t */\nexport function showExtensionSelector(\n\thost: InteractiveModeDelegateHost,\n\ttitle: string,\n\toptions: string[],\n\topts?: ExtensionUIDialogOptions,\n): Promise<string | undefined> {\n\t\t// If a previous selector is still active, dispose it before creating a\n\t\t// new one. This avoids leaking the previous promise and DOM state when\n\t\t// showExtensionSelector is called rapidly.\n\t\tif (host.extensionSelector) {\n\t\t\thideExtensionSelector(host, );\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tif (opts?.signal?.aborted) {\n\t\t\t\tresolve(undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst onAbort = () => {\n\t\t\t\thideExtensionSelector(host, );\n\t\t\t\tresolve(undefined);\n\t\t\t};\n\t\t\topts?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\t\t\thost.extensionSelector = new ExtensionSelectorComponent(\n\t\t\t\ttitle,\n\t\t\t\toptions,\n\t\t\t\t(option) => {\n\t\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\thideExtensionSelector(host, );\n\t\t\t\t\tresolve(option);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\thideExtensionSelector(host, );\n\t\t\t\t\tresolve(undefined);\n\t\t\t\t},\n\t\t\t\t{ tui: host.ui, timeout: opts?.timeout },\n\t\t\t);\n\n\t\t\thost.editorContainer.clear();\n\t\t\thost.editorContainer.addChild(host.extensionSelector);\n\t\t\thost.ui.setFocus(host.extensionSelector);\n\t\t\thost.ui.requestRender();\n\t\t});\n\t}\n\n\t/**\n\t * Hide the extension selector.\n\t */\nexport function hideExtensionSelector(host: InteractiveModeDelegateHost): void {\n\t\thost.extensionSelector?.dispose();\n\t\thost.editorContainer.clear();\n\t\thost.editorContainer.addChild(host.editor);\n\t\thost.extensionSelector = undefined;\n\t\thost.ui.setFocus(host.editor);\n\t\thost.ui.requestRender();\n\t}\n\n\t/**\n\t * Show a confirmation dialog for extensions.\n\t */\nexport async function showExtensionConfirm(host: InteractiveModeDelegateHost, \n\t\ttitle: string,\n\t\tmessage: string,\n\t\topts?: ExtensionUIDialogOptions,\n\t): Promise<boolean> {\n\t\tconst result = await host.showExtensionSelector(`${title}\\n${message}`, [\"Yes\", \"No\"], opts);\n\t\treturn result === \"Yes\";\n\t}\n\n\t/**\n\t * Show a text input for extensions.\n\t */\nexport function showExtensionInput(host: InteractiveModeDelegateHost, \n\t\ttitle: string,\n\t\tplaceholder?: string,\n\t\topts?: ExtensionUIDialogOptions,\n\t): Promise<string | undefined> {\n\t\treturn new Promise((resolve) => {\n\t\t\tif (opts?.signal?.aborted) {\n\t\t\t\tresolve(undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst onAbort = () => {\n\t\t\t\thideExtensionInput(host, );\n\t\t\t\tresolve(undefined);\n\t\t\t};\n\t\t\topts?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\t\t\thost.extensionInput = new ExtensionInputComponent(\n\t\t\t\ttitle,\n\t\t\t\tplaceholder,\n\t\t\t\t(value) => {\n\t\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\thideExtensionInput(host, );\n\t\t\t\t\tresolve(value);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\thideExtensionInput(host, );\n\t\t\t\t\tresolve(undefined);\n\t\t\t\t},\n\t\t\t\t{ tui: host.ui, timeout: opts?.timeout, secure: opts?.secure },\n\t\t\t);\n\n\t\t\thost.editorContainer.clear();\n\t\t\thost.editorContainer.addChild(host.extensionInput);\n\t\t\thost.ui.setFocus(host.extensionInput);\n\t\t\thost.ui.requestRender();\n\t\t});\n\t}\n\n\t/**\n\t * Hide the extension input.\n\t */\nexport function hideExtensionInput(host: InteractiveModeDelegateHost): void {\n\t\thost.extensionInput?.dispose();\n\t\thost.editorContainer.clear();\n\t\thost.editorContainer.addChild(host.editor);\n\t\thost.extensionInput = undefined;\n\t\thost.ui.setFocus(host.editor);\n\t\thost.ui.requestRender();\n\t}\n\n\t/**\n\t * Show a multi-line editor for extensions (with Ctrl+G support).\n\t */\nexport function showExtensionEditor(host: InteractiveModeDelegateHost, title: string, prefill?: string): Promise<string | undefined> {\n\t\treturn new Promise((resolve) => {\n\t\t\thost.extensionEditor = new ExtensionEditorComponent(\n\t\t\t\thost.ui,\n\t\t\t\thost.keybindings,\n\t\t\t\ttitle,\n\t\t\t\tprefill,\n\t\t\t\t(value) => {\n\t\t\t\t\thideExtensionEditor(host, );\n\t\t\t\t\tresolve(value);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\thideExtensionEditor(host, );\n\t\t\t\t\tresolve(undefined);\n\t\t\t\t},\n\t\t\t);\n\n\t\t\thost.editorContainer.clear();\n\t\t\thost.editorContainer.addChild(host.extensionEditor);\n\t\t\thost.ui.setFocus(host.extensionEditor);\n\t\t\thost.ui.requestRender();\n\t\t});\n\t}\n\n\t/**\n\t * Hide the extension editor.\n\t */\nexport function hideExtensionEditor(host: InteractiveModeDelegateHost): void {\n\t\thost.editorContainer.clear();\n\t\thost.editorContainer.addChild(host.editor);\n\t\thost.extensionEditor = undefined;\n\t\thost.ui.setFocus(host.editor);\n\t\thost.ui.requestRender();\n\t}\n\n\t/**\n\t * Set a custom editor component from an extension.\n\t * Pass undefined to restore the default editor.\n\t */\nexport function setCustomEditorComponent(\n\thost: InteractiveModeDelegateHost,\n\tfactory: ((tui: TUI, theme: EditorTheme, keybindings: KeybindingsManager) => EditorComponent) | undefined,\n): void {\n\t\t// Save text from current editor before switching\n\t\tconst currentText = host.editor.getText();\n\n\t\thost.editorContainer.clear();\n\n\t\tif (factory) {\n\t\t\t// Create the custom editor with tui, theme, and keybindings\n\t\t\tconst newEditor = factory(host.ui, getEditorTheme(), host.keybindings);\n\n\t\t\t// Wire up callbacks from the default editor\n\t\t\tnewEditor.onSubmit = host.defaultEditor.onSubmit;\n\t\t\tnewEditor.onChange = host.defaultEditor.onChange;\n\n\t\t\t// Copy text from previous editor\n\t\t\tnewEditor.setText(currentText);\n\n\t\t\t// Copy appearance settings if supported\n\t\t\tif (newEditor.borderColor !== undefined) {\n\t\t\t\tnewEditor.borderColor = host.defaultEditor.borderColor;\n\t\t\t}\n\t\t\tif (newEditor.setPaddingX !== undefined) {\n\t\t\t\tnewEditor.setPaddingX(host.defaultEditor.getPaddingX());\n\t\t\t}\n\n\t\t\t// Set autocomplete if supported\n\t\t\tif (newEditor.setAutocompleteProvider && host.autocompleteProvider) {\n\t\t\t\tnewEditor.setAutocompleteProvider(host.autocompleteProvider);\n\t\t\t}\n\n\t\t\t// If extending CustomEditor, copy app-level handlers\n\t\t\t// Use duck typing since instanceof fails across jiti module boundaries\n\t\t\tconst customEditor = newEditor as unknown as Record<string, unknown>;\n\t\t\tif (\"actionHandlers\" in customEditor && customEditor.actionHandlers instanceof Map) {\n\t\t\t\tif (!customEditor.onEscape) {\n\t\t\t\t\tcustomEditor.onEscape = () => host.defaultEditor.onEscape?.();\n\t\t\t\t}\n\t\t\t\tif (!customEditor.onCtrlD) {\n\t\t\t\t\tcustomEditor.onCtrlD = () => host.defaultEditor.onCtrlD?.();\n\t\t\t\t}\n\t\t\t\tif (!customEditor.onPasteImage) {\n\t\t\t\t\tcustomEditor.onPasteImage = () => host.defaultEditor.onPasteImage?.();\n\t\t\t\t}\n\t\t\t\tif (!customEditor.onExtensionShortcut) {\n\t\t\t\t\tcustomEditor.onExtensionShortcut = (data: string) => host.defaultEditor.onExtensionShortcut?.(data);\n\t\t\t\t}\n\t\t\t\t// Copy action handlers (clear, suspend, model switching, etc.)\n\t\t\t\tfor (const [action, handler] of host.defaultEditor.actionHandlers) {\n\t\t\t\t\t(customEditor.actionHandlers as Map<string, () => void>).set(action, handler);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thost.editor = newEditor;\n\t\t} else {\n\t\t\t// Restore default editor with text from custom editor\n\t\t\thost.defaultEditor.setText(currentText);\n\t\t\thost.editor = host.defaultEditor;\n\t\t}\n\n\t\t// Ensure pasted image path handler is set on the active editor\n\t\tif (!host.editor.onPasteImagePath) {\n\t\t\thost.editor.onPasteImagePath = (filePath: string) => {\n\t\t\t\thost.handlePastedImagePath(filePath);\n\t\t\t};\n\t\t}\n\n\t\thost.editorContainer.addChild(host.editor as Component);\n\t\thost.ui.setFocus(host.editor as Component);\n\t\thost.ui.requestRender();\n\t}\n\n\t/**\n\t * Show a notification for extensions.\n\t */\nexport function showExtensionNotify(host: InteractiveModeDelegateHost, message: string, type?: ExtensionNotifyType): void {\n\t\tif (type === \"error\") {\n\t\t\thost.lastBlockingError = message;\n\t\t\trenderBlockingErrorBanner(host.blockingErrorContainer, host.lastBlockingError);\n\t\t}\n\t\tconst result = renderExtensionNotifyInChat(host.chatContainer, message, type);\n\t\tif (!result.rendered) {\n\t\t\t// Warnings are intentionally excluded from the dim status-card path\n\t\t\t// but must still be visible — route them through the warning renderer.\n\t\t\tif (type === \"warning\") {\n\t\t\t\thost.showWarning(message);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (result.statusSpacer && result.statusText) {\n\t\t\thost.lastStatusSpacer = result.statusSpacer;\n\t\t\thost.lastStatusText = result.statusText;\n\t\t}\n\t\thost.ui.requestRender();\n\t}\n\n\t/** Show a custom component with keyboard focus. Overlay mode renders on top of existing content. */\nexport async function showExtensionCustom<T>(\n\thost: InteractiveModeDelegateHost,\n\tfactory: (\n\t\ttui: TUI,\n\t\ttheme: Theme,\n\t\tkeybindings: KeybindingsManager,\n\t\tdone: (result: T) => void,\n\t) => (Component & { dispose?(): void }) | Promise<Component & { dispose?(): void }>,\n\toptions?: {\n\t\toverlay?: boolean;\n\t\toverlayOptions?: OverlayOptions | (() => OverlayOptions);\n\t\tonHandle?: (handle: OverlayHandle) => void;\n\t},\n): Promise<T> {\n\t\tconst savedText = host.editor.getText();\n\t\tconst isOverlay = options?.overlay ?? false;\n\n\t\tconst restoreEditor = () => {\n\t\t\thost.editorContainer.clear();\n\t\t\thost.editorContainer.addChild(host.editor);\n\t\t\thost.editor.setText(savedText);\n\t\t\thost.ui.setFocus(host.editor);\n\t\t\thost.ui.requestRender();\n\t\t};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet component: Component & { dispose?(): void };\n\t\t\tlet closed = false;\n\n\t\t\tconst close = (result: T) => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tif (isOverlay) host.ui.hideOverlay();\n\t\t\t\telse restoreEditor();\n\t\t\t\t// Note: both branches above already call requestRender\n\t\t\t\tresolve(result);\n\t\t\t\ttry {\n\t\t\t\t\tcomponent?.dispose?.();\n\t\t\t\t} catch {\n\t\t\t\t\t/* ignore dispose errors */\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tPromise.resolve(factory(host.ui, theme, host.keybindings, close))\n\t\t\t\t.then((c) => {\n\t\t\t\t\tif (closed) return;\n\t\t\t\t\tcomponent = c;\n\t\t\t\t\tif (isOverlay) {\n\t\t\t\t\t\t// Resolve overlay options - can be static or dynamic function\n\t\t\t\t\t\tconst resolveOptions = (): OverlayOptions | undefined => {\n\t\t\t\t\t\t\tif (options?.overlayOptions) {\n\t\t\t\t\t\t\t\tconst opts =\n\t\t\t\t\t\t\t\t\ttypeof options.overlayOptions === \"function\"\n\t\t\t\t\t\t\t\t\t\t? options.overlayOptions()\n\t\t\t\t\t\t\t\t\t\t: options.overlayOptions;\n\t\t\t\t\t\t\t\treturn opts;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Fallback: use component's width property if available\n\t\t\t\t\t\t\tconst w = (component as { width?: number }).width;\n\t\t\t\t\t\t\treturn w ? { width: w } : undefined;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst handle = host.ui.showOverlay(component, resolveOptions());\n\t\t\t\t\t\t// Expose handle to caller for visibility control\n\t\t\t\t\t\toptions?.onHandle?.(handle);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thost.editorContainer.clear();\n\t\t\t\t\t\thost.editorContainer.addChild(component);\n\t\t\t\t\t\thost.ui.setFocus(component);\n\t\t\t\t\t\thost.ui.requestRender();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tif (closed) return;\n\t\t\t\t\tif (!isOverlay) restoreEditor();\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Show an extension error in the UI.\n\t */\nexport function showExtensionError(host: InteractiveModeDelegateHost, extensionPath: string, error: string, stack?: string): void {\n\t\tconst errorMsg = `Extension \"${extensionPath}\" error: ${error}`;\n\t\tconst errorText = new Text(theme.fg(\"error\", errorMsg), 1, 0);\n\t\thost.chatContainer.addChild(errorText);\n\t\tif (stack) {\n\t\t\t// Show stack trace in dim color, indented\n\t\t\tconst stackLines = stack\n\t\t\t\t.split(\"\\n\")\n\t\t\t\t.slice(1) // Skip first line (duplicates error message)\n\t\t\t\t.map((line) => theme.fg(\"dim\", ` ${line.trim()}`))\n\t\t\t\t.join(\"\\n\");\n\t\t\tif (stackLines) {\n\t\t\t\thost.chatContainer.addChild(new Text(stackLines, 1, 0));\n\t\t\t}\n\t\t}\n\t\thost.ui.requestRender();\n\t}\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-extension-dialogs.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-extension-dialogs.ts"],"names":[],"mappings":"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","sourcesContent":["// Project/App: gsd-pi\n// File Purpose: Extracted from interactive-mode.ts (Phase E2 seam remediation).\n// @ts-nocheck\n\nimport type { KeyId } from \"@gsd/pi-tui\";\nimport { Container, matchesKey, Spacer, Text, type Component, type TUI } from \"@gsd/pi-tui\";\nimport type { ExtensionContext, ExtensionRunner, ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetOptions } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport { FooterDataProvider, type ReadonlyFooterDataProvider } from \"@gsd/pi-coding-agent/core/footer-data-provider.js\";\nimport { setRegisteredThemes, setTheme, Theme, theme } from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport { appKey } from \"./components/keybinding-hints.js\";\nimport { ExtensionEditorComponent } from \"./components/extension-editor.js\";\nimport { ExtensionInputComponent } from \"./components/extension-input.js\";\nimport { ExtensionSelectorComponent } from \"./components/extension-selector.js\";\nimport type { ExtensionNotifyType } from \"./interactive-notify-render.js\";\nimport { renderBlockingErrorBanner, renderExtensionNotifyInChat } from \"./interactive-notify-render.js\";\nimport { createExtensionUIContext as buildExtensionUIContext } from \"./controllers/extension-ui-controller.js\";\nimport { MAX_WIDGET_LINES } from \"./interactive-mode-class-constants.js\";\nimport type { InteractiveModeDelegateHost } from \"./interactive-mode-delegate-host.js\";\nimport { getEditorTheme } from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport type { EditorComponent, EditorTheme, KeybindingsManager, OverlayHandle, OverlayOptions } from \"@gsd/pi-tui\";\n\nexport function createExtensionUIContext(host: InteractiveModeDelegateHost): ExtensionUIContext {\n\t\treturn buildExtensionUIContext(host);\n\t}\n\n\t/**\n\t * Show a selector for extensions.\n\t */\nexport function showExtensionSelector(\n\thost: InteractiveModeDelegateHost,\n\ttitle: string,\n\toptions: string[],\n\topts?: ExtensionUIDialogOptions,\n): Promise<string | undefined> {\n\t\t// If a previous selector is still active, dispose it before creating a\n\t\t// new one. This avoids leaking the previous promise and DOM state when\n\t\t// showExtensionSelector is called rapidly.\n\t\tif (host.extensionSelector) {\n\t\t\thideExtensionSelector(host, );\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tif (opts?.signal?.aborted) {\n\t\t\t\tresolve(undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst onAbort = () => {\n\t\t\t\thideExtensionSelector(host, );\n\t\t\t\tresolve(undefined);\n\t\t\t};\n\t\t\topts?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\t\t\thost.extensionSelector = new ExtensionSelectorComponent(\n\t\t\t\ttitle,\n\t\t\t\toptions,\n\t\t\t\t(option) => {\n\t\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\thideExtensionSelector(host, );\n\t\t\t\t\tresolve(option);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\thideExtensionSelector(host, );\n\t\t\t\t\tresolve(undefined);\n\t\t\t\t},\n\t\t\t\t{ tui: host.ui, timeout: opts?.timeout },\n\t\t\t);\n\n\t\t\thost.editorContainer.clear();\n\t\t\thost.editorContainer.addChild(host.extensionSelector);\n\t\t\thost.ui.setFocus(host.extensionSelector);\n\t\t\thost.ui.requestRender();\n\t\t});\n\t}\n\n\t/**\n\t * Hide the extension selector.\n\t */\nexport function hideExtensionSelector(host: InteractiveModeDelegateHost): void {\n\t\thost.extensionSelector?.dispose();\n\t\thost.editorContainer.clear();\n\t\thost.editorContainer.addChild(host.editor);\n\t\thost.extensionSelector = undefined;\n\t\thost.ui.setFocus(host.editor);\n\t\thost.ui.requestRender();\n\t}\n\n\t/**\n\t * Show a confirmation dialog for extensions.\n\t */\nexport async function showExtensionConfirm(host: InteractiveModeDelegateHost, \n\t\ttitle: string,\n\t\tmessage: string,\n\t\topts?: ExtensionUIDialogOptions,\n\t): Promise<boolean> {\n\t\tconst result = await host.showExtensionSelector(`${title}\\n${message}`, [\"Yes\", \"No\"], opts);\n\t\treturn result === \"Yes\";\n\t}\n\n\t/**\n\t * Show a text input for extensions.\n\t */\nexport function showExtensionInput(host: InteractiveModeDelegateHost, \n\t\ttitle: string,\n\t\tplaceholder?: string,\n\t\topts?: ExtensionUIDialogOptions,\n\t): Promise<string | undefined> {\n\t\treturn new Promise((resolve) => {\n\t\t\tif (opts?.signal?.aborted) {\n\t\t\t\tresolve(undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst onAbort = () => {\n\t\t\t\thideExtensionInput(host, );\n\t\t\t\tresolve(undefined);\n\t\t\t};\n\t\t\topts?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n\t\t\thost.extensionInput = new ExtensionInputComponent(\n\t\t\t\ttitle,\n\t\t\t\tplaceholder,\n\t\t\t\t(value) => {\n\t\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\thideExtensionInput(host, );\n\t\t\t\t\tresolve(value);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\topts?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\thideExtensionInput(host, );\n\t\t\t\t\tresolve(undefined);\n\t\t\t\t},\n\t\t\t\t{ tui: host.ui, timeout: opts?.timeout, secure: opts?.secure },\n\t\t\t);\n\n\t\t\thost.editorContainer.clear();\n\t\t\thost.editorContainer.addChild(host.extensionInput);\n\t\t\thost.ui.setFocus(host.extensionInput);\n\t\t\thost.ui.requestRender();\n\t\t});\n\t}\n\n\t/**\n\t * Hide the extension input.\n\t */\nexport function hideExtensionInput(host: InteractiveModeDelegateHost): void {\n\t\thost.extensionInput?.dispose();\n\t\thost.editorContainer.clear();\n\t\thost.editorContainer.addChild(host.editor);\n\t\thost.extensionInput = undefined;\n\t\thost.ui.setFocus(host.editor);\n\t\thost.ui.requestRender();\n\t}\n\n\t/**\n\t * Show a multi-line editor for extensions (with Ctrl+G support).\n\t */\nexport function showExtensionEditor(host: InteractiveModeDelegateHost, title: string, prefill?: string): Promise<string | undefined> {\n\t\treturn new Promise((resolve) => {\n\t\t\thost.extensionEditor = new ExtensionEditorComponent(\n\t\t\t\thost.ui,\n\t\t\t\thost.keybindings,\n\t\t\t\ttitle,\n\t\t\t\tprefill,\n\t\t\t\t(value) => {\n\t\t\t\t\thideExtensionEditor(host, );\n\t\t\t\t\tresolve(value);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\thideExtensionEditor(host, );\n\t\t\t\t\tresolve(undefined);\n\t\t\t\t},\n\t\t\t);\n\n\t\t\thost.editorContainer.clear();\n\t\t\thost.editorContainer.addChild(host.extensionEditor);\n\t\t\thost.ui.setFocus(host.extensionEditor);\n\t\t\thost.ui.requestRender();\n\t\t});\n\t}\n\n\t/**\n\t * Hide the extension editor.\n\t */\nexport function hideExtensionEditor(host: InteractiveModeDelegateHost): void {\n\t\thost.editorContainer.clear();\n\t\thost.editorContainer.addChild(host.editor);\n\t\thost.extensionEditor = undefined;\n\t\thost.ui.setFocus(host.editor);\n\t\thost.ui.requestRender();\n\t}\n\n\t/**\n\t * Set a custom editor component from an extension.\n\t * Pass undefined to restore the default editor.\n\t */\nexport function setCustomEditorComponent(\n\thost: InteractiveModeDelegateHost,\n\tfactory: ((tui: TUI, theme: EditorTheme, keybindings: KeybindingsManager) => EditorComponent) | undefined,\n): void {\n\t\t// Save text from current editor before switching\n\t\tconst currentText = host.editor.getText();\n\n\t\thost.editorContainer.clear();\n\n\t\tif (factory) {\n\t\t\t// Create the custom editor with tui, theme, and keybindings\n\t\t\tconst newEditor = factory(host.ui, getEditorTheme(), host.keybindings);\n\n\t\t\t// Wire up callbacks from the default editor\n\t\t\tnewEditor.onSubmit = host.defaultEditor.onSubmit;\n\t\t\tnewEditor.onChange = host.defaultEditor.onChange;\n\n\t\t\t// Copy text from previous editor\n\t\t\tnewEditor.setText(currentText);\n\n\t\t\t// Copy appearance settings if supported\n\t\t\tif (newEditor.borderColor !== undefined) {\n\t\t\t\tnewEditor.borderColor = host.defaultEditor.borderColor;\n\t\t\t}\n\t\t\tif (newEditor.setPaddingX !== undefined) {\n\t\t\t\tnewEditor.setPaddingX(host.defaultEditor.getPaddingX());\n\t\t\t}\n\n\t\t\t// Set autocomplete if supported\n\t\t\tif (newEditor.setAutocompleteProvider && host.autocompleteProvider) {\n\t\t\t\tnewEditor.setAutocompleteProvider(host.autocompleteProvider);\n\t\t\t}\n\n\t\t\t// If extending CustomEditor, copy app-level handlers\n\t\t\t// Use duck typing since instanceof fails across jiti module boundaries\n\t\t\tconst customEditor = newEditor as unknown as Record<string, unknown>;\n\t\t\tif (\"actionHandlers\" in customEditor && customEditor.actionHandlers instanceof Map) {\n\t\t\t\tif (!customEditor.onEscape) {\n\t\t\t\t\tcustomEditor.onEscape = () => host.defaultEditor.onEscape?.();\n\t\t\t\t}\n\t\t\t\tif (!customEditor.onCtrlD) {\n\t\t\t\t\tcustomEditor.onCtrlD = () => host.defaultEditor.onCtrlD?.();\n\t\t\t\t}\n\t\t\t\tif (!customEditor.onPasteImage) {\n\t\t\t\t\tcustomEditor.onPasteImage = () => host.defaultEditor.onPasteImage?.();\n\t\t\t\t}\n\t\t\t\tif (!customEditor.onExtensionShortcut) {\n\t\t\t\t\tcustomEditor.onExtensionShortcut = (data: string) => host.defaultEditor.onExtensionShortcut?.(data);\n\t\t\t\t}\n\t\t\t\t// Copy action handlers (clear, suspend, model switching, etc.)\n\t\t\t\tfor (const [action, handler] of host.defaultEditor.actionHandlers) {\n\t\t\t\t\t(customEditor.actionHandlers as Map<string, () => void>).set(action, handler);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thost.editor = newEditor;\n\t\t} else {\n\t\t\t// Restore default editor with text from custom editor\n\t\t\thost.defaultEditor.setText(currentText);\n\t\t\thost.editor = host.defaultEditor;\n\t\t}\n\n\t\t// Ensure pasted image path handler is set on the active editor\n\t\tif (!host.editor.onPasteImagePath) {\n\t\t\thost.editor.onPasteImagePath = (filePath: string) => {\n\t\t\t\thost.handlePastedImagePath(filePath);\n\t\t\t};\n\t\t}\n\n\t\thost.editorContainer.addChild(host.editor as Component);\n\t\thost.ui.setFocus(host.editor as Component);\n\t\thost.ui.requestRender();\n\t}\n\n\t/**\n\t * Show a notification for extensions.\n\t */\nexport function showExtensionNotify(host: InteractiveModeDelegateHost, message: string, type?: ExtensionNotifyType): void {\n\t\tif (type === \"error\") {\n\t\t\thost.lastBlockingError = message;\n\t\t\trenderBlockingErrorBanner(host.blockingErrorContainer, host.lastBlockingError);\n\t\t\thost.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\t\tconst result = renderExtensionNotifyInChat(host.chatContainer, message, type);\n\t\tif (!result.rendered) {\n\t\t\t// Warnings are intentionally excluded from the dim status-card path\n\t\t\t// but must still be visible — route them through the warning renderer.\n\t\t\tif (type === \"warning\") {\n\t\t\t\thost.showWarning(message);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (result.statusSpacer && result.statusText) {\n\t\t\thost.lastStatusSpacer = result.statusSpacer;\n\t\t\thost.lastStatusText = result.statusText;\n\t\t}\n\t\thost.ui.requestRender();\n\t}\n\n\t/** Show a custom component with keyboard focus. Overlay mode renders on top of existing content. */\nexport async function showExtensionCustom<T>(\n\thost: InteractiveModeDelegateHost,\n\tfactory: (\n\t\ttui: TUI,\n\t\ttheme: Theme,\n\t\tkeybindings: KeybindingsManager,\n\t\tdone: (result: T) => void,\n\t) => (Component & { dispose?(): void }) | Promise<Component & { dispose?(): void }>,\n\toptions?: {\n\t\toverlay?: boolean;\n\t\toverlayOptions?: OverlayOptions | (() => OverlayOptions);\n\t\tonHandle?: (handle: OverlayHandle) => void;\n\t},\n): Promise<T> {\n\t\tconst savedText = host.editor.getText();\n\t\tconst isOverlay = options?.overlay ?? false;\n\n\t\tconst restoreEditor = () => {\n\t\t\thost.editorContainer.clear();\n\t\t\thost.editorContainer.addChild(host.editor);\n\t\t\thost.editor.setText(savedText);\n\t\t\thost.ui.setFocus(host.editor);\n\t\t\thost.ui.requestRender();\n\t\t};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet component: Component & { dispose?(): void };\n\t\t\tlet closed = false;\n\n\t\t\tconst close = (result: T) => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tif (isOverlay) host.ui.hideOverlay();\n\t\t\t\telse restoreEditor();\n\t\t\t\t// Note: both branches above already call requestRender\n\t\t\t\tresolve(result);\n\t\t\t\ttry {\n\t\t\t\t\tcomponent?.dispose?.();\n\t\t\t\t} catch {\n\t\t\t\t\t/* ignore dispose errors */\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tPromise.resolve(factory(host.ui, theme, host.keybindings, close))\n\t\t\t\t.then((c) => {\n\t\t\t\t\tif (closed) return;\n\t\t\t\t\tcomponent = c;\n\t\t\t\t\tif (isOverlay) {\n\t\t\t\t\t\t// Resolve overlay options - can be static or dynamic function\n\t\t\t\t\t\tconst resolveOptions = (): OverlayOptions | undefined => {\n\t\t\t\t\t\t\tif (options?.overlayOptions) {\n\t\t\t\t\t\t\t\tconst opts =\n\t\t\t\t\t\t\t\t\ttypeof options.overlayOptions === \"function\"\n\t\t\t\t\t\t\t\t\t\t? options.overlayOptions()\n\t\t\t\t\t\t\t\t\t\t: options.overlayOptions;\n\t\t\t\t\t\t\t\treturn opts;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Fallback: use component's width property if available\n\t\t\t\t\t\t\tconst w = (component as { width?: number }).width;\n\t\t\t\t\t\t\treturn w ? { width: w } : undefined;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst handle = host.ui.showOverlay(component, resolveOptions());\n\t\t\t\t\t\t// Expose handle to caller for visibility control\n\t\t\t\t\t\toptions?.onHandle?.(handle);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thost.editorContainer.clear();\n\t\t\t\t\t\thost.editorContainer.addChild(component);\n\t\t\t\t\t\thost.ui.setFocus(component);\n\t\t\t\t\t\thost.ui.requestRender();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tif (closed) return;\n\t\t\t\t\tif (!isOverlay) restoreEditor();\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Show an extension error in the UI.\n\t */\nexport function showExtensionError(host: InteractiveModeDelegateHost, extensionPath: string, error: string, stack?: string): void {\n\t\tconst errorMsg = `Extension \"${extensionPath}\" error: ${error}`;\n\t\tconst errorText = new Text(theme.fg(\"error\", errorMsg), 1, 0);\n\t\thost.chatContainer.addChild(errorText);\n\t\tif (stack) {\n\t\t\t// Show stack trace in dim color, indented\n\t\t\tconst stackLines = stack\n\t\t\t\t.split(\"\\n\")\n\t\t\t\t.slice(1) // Skip first line (duplicates error message)\n\t\t\t\t.map((line) => theme.fg(\"dim\", ` ${line.trim()}`))\n\t\t\t\t.join(\"\\n\");\n\t\t\tif (stackLines) {\n\t\t\t\thost.chatContainer.addChild(new Text(stackLines, 1, 0));\n\t\t\t}\n\t\t}\n\t\thost.ui.requestRender();\n\t}\n"]}
|
package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Shared constants and helpers extracted from InteractiveMode (Phase E2). */
|
|
2
2
|
export declare const MAX_CHAT_COMPONENTS = 100;
|
|
3
3
|
export declare const MAX_WIDGET_LINES = 10;
|
|
4
|
-
export declare const DEFAULT_TOOL_OUTPUT_EXPANDED =
|
|
4
|
+
export declare const DEFAULT_TOOL_OUTPUT_EXPANDED = true;
|
|
5
5
|
export declare const MIME_BY_EXT: Record<string, string>;
|
|
6
6
|
export declare function matchesImageSignature(buf: Buffer, mimeType: string): boolean;
|
|
7
7
|
//# sourceMappingURL=interactive-mode-class-constants.d.ts.map
|
package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode-class-constants.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-class-constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,4BAA4B,
|
|
1
|
+
{"version":3,"file":"interactive-mode-class-constants.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-class-constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM9C,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAoB5E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Shared constants and helpers extracted from InteractiveMode (Phase E2). */
|
|
2
2
|
export const MAX_CHAT_COMPONENTS = 100;
|
|
3
3
|
export const MAX_WIDGET_LINES = 10;
|
|
4
|
-
export const DEFAULT_TOOL_OUTPUT_EXPANDED =
|
|
4
|
+
export const DEFAULT_TOOL_OUTPUT_EXPANDED = true;
|
|
5
5
|
export const MIME_BY_EXT = {
|
|
6
6
|
png: "image/png",
|
|
7
7
|
jpg: "image/jpeg",
|
package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode-class-constants.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-class-constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,4BAA4B,GAAG,
|
|
1
|
+
{"version":3,"file":"interactive-mode-class-constants.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-class-constants.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAA2B;IAClD,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,QAAgB;IAClE,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IAClC,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,WAAW;YACf,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QACjF,KAAK,YAAY;YAChB,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAC9D,KAAK,WAAW;YACf,OAAO,CACN,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;gBACxE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CACvD,CAAC;QACH,KAAK,YAAY;YAChB,OAAO,CACN,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;gBACxE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,CAC1E,CAAC;QACH;YACC,OAAO,KAAK,CAAC;IACf,CAAC;AACF,CAAC","sourcesContent":["/** Shared constants and helpers extracted from InteractiveMode (Phase E2). */\n\nexport const MAX_CHAT_COMPONENTS = 100;\nexport const MAX_WIDGET_LINES = 10;\nexport const DEFAULT_TOOL_OUTPUT_EXPANDED = true;\n\nexport const MIME_BY_EXT: Record<string, string> = {\n\tpng: \"image/png\",\n\tjpg: \"image/jpeg\",\n\tjpeg: \"image/jpeg\",\n\tgif: \"image/gif\",\n\twebp: \"image/webp\",\n};\n\nexport function matchesImageSignature(buf: Buffer, mimeType: string): boolean {\n\tif (buf.length < 12) return false;\n\tswitch (mimeType) {\n\t\tcase \"image/png\":\n\t\t\treturn buf[0] === 0x89 && buf[1] === 0x50 && buf[2] === 0x4e && buf[3] === 0x47;\n\t\tcase \"image/jpeg\":\n\t\t\treturn buf[0] === 0xff && buf[1] === 0xd8 && buf[2] === 0xff;\n\t\tcase \"image/gif\":\n\t\t\treturn (\n\t\t\t\tbuf[0] === 0x47 && buf[1] === 0x49 && buf[2] === 0x46 && buf[3] === 0x38 &&\n\t\t\t\t(buf[4] === 0x37 || buf[4] === 0x39) && buf[5] === 0x61\n\t\t\t);\n\t\tcase \"image/webp\":\n\t\t\treturn (\n\t\t\t\tbuf[0] === 0x52 && buf[1] === 0x49 && buf[2] === 0x46 && buf[3] === 0x46 &&\n\t\t\t\tbuf[8] === 0x57 && buf[9] === 0x45 && buf[10] === 0x42 && buf[11] === 0x50\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,7 @@ export class InteractiveMode {
|
|
|
110
110
|
this.footerDataProvider = new FooterDataProvider(process.cwd());
|
|
111
111
|
this.footer = new FooterComponent(session, this.footerDataProvider);
|
|
112
112
|
this.footer.setAutoCompactEnabled(session.autoCompactionEnabled);
|
|
113
|
+
this.toolOutputExpanded = this.settingsManager.getToolsExpanded();
|
|
113
114
|
this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
|
|
114
115
|
setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
|
|
115
116
|
initTheme(this.settingsManager.getTheme(), true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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","sourcesContent":["// Project/App: gsd-pi\n// File Purpose: Interactive TUI mode and session UI rendering.\n// gsd-pi - Interactive TUI mode for coding-agent sessions.\n/**\n * Interactive mode for the coding agent.\n * Handles TUI rendering and user interaction, delegating business logic to AgentSession.\n */\n\nimport type { ImageContent } from \"@gsd/pi-ai\";\nimport type { EditorComponent, MarkdownTheme, Spacer, Text } from \"@gsd/pi-tui\";\nimport {\n\tCombinedAutocompleteProvider,\n\tContainer,\n\tLoader,\n\tProcessTerminal,\n\ttype Terminal as TuiTerminal,\n\tTUI,\n} from \"@gsd/pi-tui\";\nimport { VERSION } from \"@gsd/pi-coding-agent/config.js\";\nimport { type AgentSession, type AgentSessionEvent } from \"@gsd/agent-core\";\nimport type { ExtensionRunner } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport { FooterDataProvider } from \"@gsd/pi-coding-agent/core/footer-data-provider.js\";\nimport { KeybindingsManager } from \"@gsd/agent-core\";\nimport { ensureTool } from \"@gsd/pi-coding-agent/utils/tools-manager.js\";\nimport { AdaptiveLayoutComponent } from \"./components/adaptive-layout.js\";\nimport { AssistantMessageComponent } from \"./components/assistant-message.js\";\nimport { BashExecutionComponent } from \"./components/bash-execution.js\";\nimport { CustomEditor } from \"./components/custom-editor.js\";\nimport { ExtensionEditorComponent } from \"./components/extension-editor.js\";\nimport { ExtensionInputComponent } from \"./components/extension-input.js\";\nimport { ExtensionSelectorComponent } from \"./components/extension-selector.js\";\nimport { FooterComponent } from \"./components/footer.js\";\nimport { ToolExecutionComponent } from \"./components/tool-execution.js\";\nimport { ContextualTips } from \"@gsd/agent-core\";\nimport { handleAgentEvent } from \"./controllers/chat-controller.js\";\nimport { setupEditorSubmitHandler as setupEditorSubmitHandlerController } from \"./controllers/input-controller.js\";\nimport {\n\tgetEditorTheme,\n\tinitTheme,\n\tonThemeChange,\n\tsetRegisteredThemes,\n\tstopThemeWatcher,\n} from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport * as chatRender from \"./interactive-chat-render.js\";\nimport * as commandHandlers from \"./interactive-command-handlers.js\";\nimport * as extensionSystem from \"./interactive-extension-system.js\";\nimport * as inputRouter from \"./interactive-input-router.js\";\nimport * as keyHandlers from \"./interactive-key-handlers.js\";\nimport * as modeInit from \"./interactive-mode-init.js\";\nimport type { CompactionQueuedMessage } from \"./interactive-notify-render.js\";\nimport * as resourceDisplay from \"./interactive-resource-display.js\";\nimport * as selectors from \"./interactive-selectors.js\";\nimport { clearMarkdownThemeCache, getMarkdownThemeWithSettings as getMarkdownThemeWithSettingsModule } from \"./interactive-theme-cache.js\";\nimport * as uiMessaging from \"./interactive-ui-messaging.js\";\nimport { DEFAULT_TOOL_OUTPUT_EXPANDED } from \"./interactive-mode-class-constants.js\";\n\nexport type {\n\tAssistantReplaySegment,\n\tExtensionNotifyType,\n\tExtensionNotifyRenderResult,\n\tCompactionQueuedMessage,\n} from \"./interactive-notify-render.js\";\nexport {\n\tbuildAssistantReplaySegments,\n\tgetToolExpansionStartupHint,\n\tshouldRenderExtensionNotifyInChat,\n\trenderExtensionNotifyInChat,\n\trenderBlockingErrorBanner,\n} from \"./interactive-notify-render.js\";\n\nexport interface InteractiveModeOptions {\n\t/** Providers that were migrated to auth.json (shows warning) */\n\tmigratedProviders?: string[];\n\t/** Warning message if session model couldn't be restored */\n\tmodelFallbackMessage?: string;\n\t/** Initial message to send on startup (can include @file content) */\n\tinitialMessage?: string;\n\t/** Images to attach to the initial message */\n\tinitialImages?: ImageContent[];\n\t/** Additional messages to send after the initial message */\n\tinitialMessages?: string[];\n\t/** Force verbose startup (overrides quietStartup setting) */\n\tverbose?: boolean;\n\t/** Override the terminal implementation used by the TUI. */\n\tterminal?: TuiTerminal;\n\t/** When false, reuse the session's existing extension bindings instead of rebinding them for TUI mode. */\n\tbindExtensions?: boolean;\n\t/** Submit editor prompts directly to AgentSession instead of using the interactive prompt loop. */\n\tsubmitPromptsDirectly?: boolean;\n\t/** Control what happens when the user requests shutdown from the TUI. */\n\tshutdownBehavior?: \"exit_process\" | \"stop_ui\" | \"ignore\";\n}\n\nexport class InteractiveMode {\n\tprivate session: AgentSession;\n\tprivate ui: TUI;\n\tprivate chatContainer: Container;\n\tprivate pendingMessagesContainer: Container;\n\tprivate adaptiveLayout: AdaptiveLayoutComponent;\n\tprivate statusContainer: Container;\n\tprivate pinnedMessageContainer: Container;\n\tprivate blockingErrorContainer: Container;\n\tprivate defaultEditor: CustomEditor;\n\tprivate editor: EditorComponent;\n\tprivate autocompleteProvider: CombinedAutocompleteProvider | undefined;\n\tprivate editorContainer: Container;\n\tprivate footer: FooterComponent;\n\tprivate footerDataProvider: FooterDataProvider;\n\tprivate keybindings: KeybindingsManager;\n\tprivate version: string;\n\tprivate isInitialized = false;\n\tprivate onInputCallback?: (text: string) => void;\n\tprivate loadingAnimation: Loader | undefined = undefined;\n\tprivate pendingWorkingMessage: string | null | undefined = undefined;\n\tprivate readonly defaultWorkingMessage = \"Working...\";\n\tprivate lastBlockingError: string | undefined = undefined;\n\n\tprivate lastSigintTime = 0;\n\tprivate lastEscapeTime = 0;\n\tprivate changelogMarkdown: string | undefined = undefined;\n\n\tprivate lastStatusSpacer: Spacer | undefined = undefined;\n\tprivate lastStatusText: Text | undefined = undefined;\n\n\tprivate streamingComponent: AssistantMessageComponent | undefined = undefined;\n\tprivate streamingMessage: import(\"@gsd/pi-ai\").AssistantMessage | undefined = undefined;\n\n\tprivate pendingTools = new Map<string, ToolExecutionComponent>();\n\tprivate toolOutputExpanded = DEFAULT_TOOL_OUTPUT_EXPANDED;\n\tprivate pendingImages: ImageContent[] = [];\n\tprivate hideThinkingBlock = false;\n\tprivate skillCommands = new Map<string, string>();\n\tprivate unsubscribe?: () => void;\n\tprivate _branchChangeUnsub?: () => void;\n\tprivate _themeChangeUnsub?: () => void;\n\tprivate markdownThemeCache?: MarkdownTheme;\n\tprivate markdownThemeCacheIndent?: string;\n\tprivate isBashMode = false;\n\tprivate contextualTips = new ContextualTips();\n\tprivate bashComponent: BashExecutionComponent | undefined = undefined;\n\tprivate pendingBashComponents: BashExecutionComponent[] = [];\n\tprivate autoCompactionLoader: Loader | undefined = undefined;\n\tprivate autoCompactionEscapeHandler?: () => void;\n\tprivate retryLoader: Loader | undefined = undefined;\n\tprivate retryEscapeHandler?: () => void;\n\tprivate compactionQueuedMessages: CompactionQueuedMessage[] = [];\n\tprivate shutdownRequested = false;\n\tprivate extensionSelector: ExtensionSelectorComponent | undefined = undefined;\n\tprivate extensionInput: ExtensionInputComponent | undefined = undefined;\n\tprivate extensionEditor: ExtensionEditorComponent | undefined = undefined;\n\tprivate extensionTerminalInputUnsubscribers = new Set<() => void>();\n\tprivate stdinErrorHandler: ((err: Error) => void) | undefined = undefined;\n\tprivate extensionWidgetsAbove = new Map<string, import(\"@gsd/pi-tui\").Component & { dispose?(): void }>();\n\tprivate extensionWidgetsBelow = new Map<string, import(\"@gsd/pi-tui\").Component & { dispose?(): void }>();\n\tprivate widgetContainerAbove!: Container;\n\tprivate widgetContainerBelow!: Container;\n\tprivate customFooter: (import(\"@gsd/pi-tui\").Component & { dispose?(): void }) | undefined = undefined;\n\tprivate headerContainer: Container;\n\tprivate builtInHeader: import(\"@gsd/pi-tui\").Component | undefined = undefined;\n\tprivate customHeader: (import(\"@gsd/pi-tui\").Component & { dispose?(): void }) | undefined = undefined;\n\n\tprivate get agent() {\n\t\treturn this.session.agent;\n\t}\n\tprivate get sessionManager() {\n\t\treturn this.session.sessionManager;\n\t}\n\tprivate get settingsManager() {\n\t\treturn this.session.settingsManager;\n\t}\n\n\tconstructor(\n\t\tsession: AgentSession,\n\t\tprivate options: InteractiveModeOptions = {},\n\t) {\n\t\tthis.session = session;\n\t\tthis.version = VERSION;\n\t\tthis.ui = new TUI(options.terminal ?? new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());\n\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\tthis.headerContainer = new Container();\n\t\tthis.chatContainer = new Container();\n\t\tthis.pendingMessagesContainer = new Container();\n\t\tthis.adaptiveLayout = new AdaptiveLayoutComponent(() => ({\n\t\t\toverride: this.settingsManager.getAdaptiveMode(),\n\t\t\tactiveToolCount: this.pendingTools.size,\n\t\t\tgsdPhase: this.pendingWorkingMessage ?? undefined,\n\t\t\tlastError: this.lastBlockingError,\n\t\t\tsessionName: this.sessionManager.getSessionName(),\n\t\t\tcwd: process.cwd(),\n\t\t}));\n\t\tthis.statusContainer = new Container();\n\t\tthis.pinnedMessageContainer = new Container();\n\t\tthis.blockingErrorContainer = new Container();\n\t\tthis.widgetContainerAbove = new Container();\n\t\tthis.widgetContainerBelow = new Container();\n\t\tthis.keybindings = KeybindingsManager.create();\n\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\tthis.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {\n\t\t\tpaddingX: editorPaddingX,\n\t\t\tautocompleteMaxVisible,\n\t\t});\n\t\tthis.editor = this.defaultEditor;\n\t\tthis.editorContainer = new Container();\n\t\tthis.editorContainer.addChild(this.editor as import(\"@gsd/pi-tui\").Component);\n\t\tthis.footerDataProvider = new FooterDataProvider(process.cwd());\n\t\tthis.footer = new FooterComponent(session, this.footerDataProvider);\n\t\tthis.footer.setAutoCompactEnabled(session.autoCompactionEnabled);\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tinitTheme(this.settingsManager.getTheme(), true);\n\t}\n\n\tprivate setupAutocomplete(): void {\n\t\tinputRouter.setupAutocomplete(this);\n\t}\n\n\tprivate installStdinErrorRecovery(): void {\n\t\tmodeInit.installStdinErrorRecovery(this);\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this.isInitialized) return;\n\n\t\tthis.changelogMarkdown = modeInit.getChangelogForDisplay(this);\n\t\tawait ensureTool(\"rg\");\n\n\t\tthis.ui.addChild(this.headerContainer);\n\t\tmodeInit.mountStartupHeader(this);\n\n\t\tthis.ui.addChild(this.adaptiveLayout);\n\t\tthis.ui.addChild(this.chatContainer);\n\t\tthis.ui.addChild(this.pendingMessagesContainer);\n\t\tthis.ui.addChild(this.statusContainer);\n\t\tthis.ui.addChild(this.pinnedMessageContainer);\n\t\tthis.ui.addChild(this.blockingErrorContainer);\n\t\tthis.renderWidgets();\n\t\tthis.ui.addChild(this.widgetContainerAbove);\n\t\tthis.ui.addChild(this.editorContainer);\n\t\tthis.ui.addChild(this.widgetContainerBelow);\n\t\tthis.ui.addChild(this.footer);\n\t\tthis.ui.setFocus(this.editor);\n\n\t\tthis.setupKeyHandlers();\n\t\tthis.setupEditorSubmitHandler();\n\t\tawait this.initExtensions();\n\t\tthis.renderInitialMessages();\n\n\t\tthis.ui.start();\n\t\tthis.installStdinErrorRecovery();\n\t\tthis.isInitialized = true;\n\n\t\tmodeInit.updateTerminalTitle(this);\n\t\tthis.subscribeToAgent();\n\n\t\tthis._themeChangeUnsub = onThemeChange(() => {\n\t\t\tthis.clearMarkdownThemeCache();\n\t\t\tthis.ui.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\tthis._branchChangeUnsub = this.footerDataProvider.onBranchChange(() => {\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\tawait this.updateAvailableProviderCount();\n\t}\n\n\tasync run(): Promise<void> {\n\t\tawait this.init();\n\n\t\tmodeInit.checkForNewVersion(this).then((newVersion) => {\n\t\t\tif (newVersion) {\n\t\t\t\tmodeInit.showNewVersionNotification(this, newVersion);\n\t\t\t}\n\t\t});\n\n\t\tmodeInit.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) {\n\t\t\t\tthis.showWarning(warning);\n\t\t\t}\n\t\t});\n\n\t\tconst { migratedProviders, modelFallbackMessage, initialMessage, initialImages, initialMessages } = this.options;\n\n\t\tif (migratedProviders && migratedProviders.length > 0) {\n\t\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t\t}\n\n\t\tconst modelsJsonError = this.session.modelRegistry.getError();\n\t\tif (modelsJsonError) {\n\t\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t\t}\n\n\t\tif (modelFallbackMessage) {\n\t\t\tthis.showWarning(modelFallbackMessage);\n\t\t}\n\n\t\tif (initialMessage) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\n\t\tif (initialMessages) {\n\t\t\tfor (const message of initialMessages) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(message);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\t\tthis.showError(errorMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\tconst userInput = await this.getUserInput();\n\t\t\tconst images = this.pendingImages.length > 0 ? [...this.pendingImages] : undefined;\n\t\t\tthis.pendingImages.length = 0;\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(userInput, { images });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMarkdownThemeWithSettings(): MarkdownTheme {\n\t\treturn getMarkdownThemeWithSettingsModule(this);\n\t}\n\n\tprivate clearMarkdownThemeCache(): void {\n\t\tclearMarkdownThemeCache(this);\n\t}\n\n\tprivate setupEditorSubmitHandler(): void {\n\t\tsetupEditorSubmitHandlerController(this as any);\n\t}\n\n\tprivate subscribeToAgent(): void {\n\t\tlet eventQueue: Promise<void> = Promise.resolve();\n\t\tthis.unsubscribe = this.session.subscribe((event) => {\n\t\t\teventQueue = eventQueue.then(() => this.handleEvent(event)).catch(() => {});\n\t\t});\n\t}\n\n\tprivate async handleEvent(event: AgentSessionEvent): Promise<void> {\n\t\tawait handleAgentEvent(this as any, event);\n\t}\n\n\tclearEditor(): void {\n\t\tuiMessaging.clearEditor(this);\n\t}\n\n\tshowError(errorMessage: string): void {\n\t\tuiMessaging.showError(this, errorMessage);\n\t}\n\n\tclearBlockingError(): void {\n\t\tuiMessaging.clearBlockingError(this);\n\t}\n\n\tshowWarning(warningMessage: string): void {\n\t\tuiMessaging.showWarning(this, warningMessage);\n\t}\n\n\tshowSuccess(successMessage: string): void {\n\t\tuiMessaging.showSuccess(this, successMessage);\n\t}\n\n\tshowTip(message: string): void {\n\t\tuiMessaging.showTip(this, message);\n\t}\n\n\tgetContextPercent(): number | undefined {\n\t\treturn this.session.getContextUsage()?.percent ?? undefined;\n\t}\n\n\trenderInitialMessages(): void {\n\t\tchatRender.renderInitialMessages(this);\n\t}\n\n\tasync getUserInput(): Promise<string> {\n\t\treturn chatRender.getUserInput(this);\n\t}\n\n\tgetExtensionUIContext() {\n\t\treturn extensionSystem.createExtensionUIContext(this);\n\t}\n\n\trequestRender(force = false): void {\n\t\tif (!this.isInitialized) return;\n\t\tthis.ui.requestRender(force);\n\t}\n\n\tstop(): void {\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.clearExtensionTerminalInputListeners();\n\t\tthis._branchChangeUnsub?.();\n\t\tthis._branchChangeUnsub = undefined;\n\t\tthis._themeChangeUnsub?.();\n\t\tthis._themeChangeUnsub = undefined;\n\t\tstopThemeWatcher();\n\n\t\tif (this.onInputCallback) {\n\t\t\tthis.onInputCallback(\"\");\n\t\t\tthis.onInputCallback = undefined;\n\t\t}\n\n\t\tthis.clearExtensionWidgets();\n\t\tif (this.customFooter?.dispose) {\n\t\t\tthis.customFooter.dispose();\n\t\t}\n\t\tthis.customFooter = undefined;\n\t\tif (this.customHeader?.dispose) {\n\t\t\tthis.customHeader.dispose();\n\t\t}\n\t\tthis.customHeader = undefined;\n\t\tthis.autocompleteProvider = undefined;\n\n\t\tthis.footer.dispose();\n\t\tthis.footerDataProvider.dispose();\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t}\n\t\tif (this.stdinErrorHandler) {\n\t\t\tprocess.stdin.removeListener(\"error\", this.stdinErrorHandler);\n\t\t\tthis.stdinErrorHandler = undefined;\n\t\t}\n\t\tif (this.isInitialized) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.isInitialized = false;\n\t\t}\n\t}\n\n\t// Delegates (Phase E2 extracted modules)\n\tprivate formatDisplayPath(p: string): string { return resourceDisplay.formatDisplayPath(this, p); }\n\tprivate getShortPath(fullPath: string, source: string): string { return resourceDisplay.getShortPath(this, fullPath, source); }\n\tprivate showLoadedResources(options?: Parameters<typeof resourceDisplay.showLoadedResources>[1]): void { resourceDisplay.showLoadedResources(this, options); }\n\n\tprivate async initExtensions(): Promise<void> { return extensionSystem.initExtensions(this); }\n\tprivate getRegisteredToolDefinition(toolName: string) { return extensionSystem.getRegisteredToolDefinition(this, toolName); }\n\tprivate formatWebSearchResult(content: unknown): string { return extensionSystem.formatWebSearchResult(this, content); }\n\tprivate setupExtensionShortcuts(extensionRunner: ExtensionRunner): void { extensionSystem.setupExtensionShortcuts(this, extensionRunner); }\n\tprivate setExtensionStatus(key: string, text: string | undefined): void { extensionSystem.setExtensionStatus(this, key, text); }\n\tprivate setExtensionWidget(key: string, content: Parameters<typeof extensionSystem.setExtensionWidget>[2], options?: Parameters<typeof extensionSystem.setExtensionWidget>[3]): void { extensionSystem.setExtensionWidget(this, key, content, options); }\n\tprivate clearExtensionWidgets(): void { extensionSystem.clearExtensionWidgets(this); }\n\tprivate resetExtensionUI(): void { extensionSystem.resetExtensionUI(this); }\n\tprivate renderWidgets(): void { extensionSystem.renderWidgets(this); }\n\tprivate setExtensionFooter(factory: Parameters<typeof extensionSystem.setExtensionFooter>[1]): void { extensionSystem.setExtensionFooter(this, factory); }\n\tprivate setExtensionHeader(factory: Parameters<typeof extensionSystem.setExtensionHeader>[1]): void { extensionSystem.setExtensionHeader(this, factory); }\n\tprivate addExtensionTerminalInputListener(handler: Parameters<typeof extensionSystem.addExtensionTerminalInputListener>[1]): () => void { return extensionSystem.addExtensionTerminalInputListener(this, handler); }\n\tprivate clearExtensionTerminalInputListeners(): void { extensionSystem.clearExtensionTerminalInputListeners(this); }\n\tprivate createExtensionUIContext() { return extensionSystem.createExtensionUIContext(this); }\n\tprivate showExtensionSelector(title: string, options: string[], opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<string | undefined> { return extensionSystem.showExtensionSelector(this, title, options, opts); }\n\tprivate hideExtensionSelector(): void { extensionSystem.hideExtensionSelector(this); }\n\tprivate showExtensionConfirm(title: string, message: string, opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<boolean> { return extensionSystem.showExtensionConfirm(this, title, message, opts); }\n\tprivate showExtensionInput(title: string, placeholder?: string, opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<string | undefined> { return extensionSystem.showExtensionInput(this, title, placeholder, opts); }\n\tprivate hideExtensionInput(): void { extensionSystem.hideExtensionInput(this); }\n\tprivate showExtensionEditor(title: string, prefill?: string): Promise<string | undefined> { return extensionSystem.showExtensionEditor(this, title, prefill); }\n\tprivate hideExtensionEditor(): void { extensionSystem.hideExtensionEditor(this); }\n\tprivate setCustomEditorComponent(factory: Parameters<typeof extensionSystem.setCustomEditorComponent>[1]): void { extensionSystem.setCustomEditorComponent(this, factory); }\n\tprivate showExtensionNotify(message: string, type?: import(\"./interactive-notify-render.js\").ExtensionNotifyType): void { extensionSystem.showExtensionNotify(this, message, type); }\n\tprivate showExtensionCustom<T>(factory: Parameters<typeof extensionSystem.showExtensionCustom<T>>[1], options?: Parameters<typeof extensionSystem.showExtensionCustom<T>>[2]): Promise<T> { return extensionSystem.showExtensionCustom(this, factory, options); }\n\tprivate showExtensionError(extensionPath: string, error: string, stack?: string): void { extensionSystem.showExtensionError(this, extensionPath, error, stack); }\n\n\tprivate setupKeyHandlers(): void { keyHandlers.setupKeyHandlers(this); }\n\tprivate handleClipboardImagePaste(): Promise<void> { return keyHandlers.handleClipboardImagePaste(this); }\n\tprivate handlePastedImagePath(filePath: string): void { keyHandlers.handlePastedImagePath(this, filePath); }\n\tprivate getSlashCommandContext() { return inputRouter.getSlashCommandContext(this); }\n\tprivate getAllQueuedMessages() { return inputRouter.getAllQueuedMessages(this); }\n\tprivate clearAllQueues() { return inputRouter.clearAllQueues(this); }\n\tprivate updatePendingMessagesDisplay(): void { inputRouter.updatePendingMessagesDisplay(this); }\n\tprivate restoreQueuedMessagesToEditor(options?: Parameters<typeof inputRouter.restoreQueuedMessagesToEditor>[1]): number { return inputRouter.restoreQueuedMessagesToEditor(this, options); }\n\tprivate queueCompactionMessage(text: string, mode: \"steer\" | \"followUp\"): void { inputRouter.queueCompactionMessage(this, text, mode); }\n\tprivate isExtensionCommand(text: string): boolean { return inputRouter.isExtensionCommand(this, text); }\n\tprivate isKnownSlashCommand(text: string): boolean { return inputRouter.isKnownSlashCommand(this, text); }\n\tprivate async flushCompactionQueue(options?: Parameters<typeof inputRouter.flushCompactionQueue>[1]): Promise<void> { return inputRouter.flushCompactionQueue(this, options); }\n\tprivate flushPendingBashComponents(): void { inputRouter.flushPendingBashComponents(this); }\n\tprivate updateTerminalTitle(): void { modeInit.updateTerminalTitle(this); }\n\n\tprivate getUserMessageText(message: import(\"@gsd/pi-ai\").Message): string { return chatRender.getUserMessageText(this, message); }\n\tprivate showStatus(message: string, options?: { append?: boolean }): void { chatRender.showStatus(this, message, options); }\n\tprivate addMessageToChat(message: import(\"@gsd/pi-agent-core\").AgentMessage, options?: { populateHistory?: boolean }): void { chatRender.addMessageToChat(this, message, options); }\n\tprivate trimChatHistory(): void { chatRender.trimChatHistory(this); }\n\tprivate renderSessionContext(sessionContext: import(\"@gsd/pi-coding-agent/core/session-manager.js\").SessionContext, options?: Parameters<typeof chatRender.renderSessionContext>[2]): void { chatRender.renderSessionContext(this, sessionContext, options); }\n\tprivate rebuildChatFromMessages(): void { chatRender.rebuildChatFromMessages(this); }\n\tprivate populatePinnedFromMessages(messages: import(\"@gsd/pi-agent-core\").AgentMessage[]): void { chatRender.populatePinnedFromMessages(this, messages); }\n\n\tprivate handleCtrlC(): void { keyHandlers.handleCtrlC(this); }\n\tprivate handleCtrlD(): void { keyHandlers.handleCtrlD(this); }\n\tprivate isShuttingDown = false;\n\tprivate async shutdown(): Promise<void> { return keyHandlers.shutdown(this); }\n\tprivate async checkShutdownRequested(): Promise<void> { return keyHandlers.checkShutdownRequested(this); }\n\tprivate handleCtrlZ(): void { keyHandlers.handleCtrlZ(this); }\n\tprivate async handleFollowUp(): Promise<void> { return keyHandlers.handleFollowUp(this); }\n\tprivate handleDequeue(): void { keyHandlers.handleDequeue(this); }\n\tprivate updateEditorBorderColor(): void { keyHandlers.updateEditorBorderColor(this); }\n\tprivate cycleThinkingLevel(): void { keyHandlers.cycleThinkingLevel(this); }\n\tprivate async cycleModel(direction: \"forward\" | \"backward\"): Promise<void> { return keyHandlers.cycleModel(this, direction); }\n\tprivate toggleToolOutputExpansion(): void { keyHandlers.toggleToolOutputExpansion(this); }\n\tprivate setToolsExpanded(expanded: boolean): void { keyHandlers.setToolsExpanded(this, expanded); }\n\tprivate toggleThinkingBlockVisibility(): void { keyHandlers.toggleThinkingBlockVisibility(this); }\n\tprivate openExternalEditor(): void { keyHandlers.openExternalEditor(this); }\n\n\tprivate showSelector(create: Parameters<typeof selectors.showSelector>[1]): void { selectors.showSelector(this, create); }\n\tprivate showSettingsSelector(): void { selectors.showSettingsSelector(this); }\n\tprivate async handleModelCommand(searchTerm?: string): Promise<void> { return selectors.handleModelCommand(this, searchTerm); }\n\tprivate async findExactModelMatch(searchTerm: string) { return selectors.findExactModelMatch(this, searchTerm); }\n\tprivate async getModelCandidates() { return selectors.getModelCandidates(this); }\n\tprivate async updateAvailableProviderCount(): Promise<void> { return selectors.updateAvailableProviderCount(this); }\n\tprivate showModelSelector(initialSearchInput?: string): void { selectors.showModelSelector(this, initialSearchInput); }\n\tprivate async showModelsSelector(): Promise<void> { return selectors.showModelsSelector(this); }\n\tprivate showUserMessageSelector(): void { selectors.showUserMessageSelector(this); }\n\tprivate showTreeSelector(initialSelectedId?: string): void { selectors.showTreeSelector(this, initialSelectedId); }\n\tprivate showSessionSelector(): void { selectors.showSessionSelector(this); }\n\tprivate async handleResumeSession(sessionPath: string): Promise<void> { return selectors.handleResumeSession(this, sessionPath); }\n\tprivate showProviderManager(): void { selectors.showProviderManager(this); }\n\tprivate async showOAuthSelector(mode: \"login\" | \"logout\"): Promise<void> { return selectors.showOAuthSelector(this, mode); }\n\tprivate async showLoginDialog(providerId: string): Promise<void> { return selectors.showLoginDialog(this, providerId); }\n\n\tprivate async handleReloadCommand(): Promise<void> { return commandHandlers.handleReloadCommand(this); }\n\tprivate async handleClearCommand(): Promise<void> { return commandHandlers.handleClearCommand(this); }\n\tprivate handleDebugCommand(): void { commandHandlers.handleDebugCommand(this); }\n\tprivate handleDaxnuts(): void { commandHandlers.handleDaxnuts(this); }\n\tprivate checkDaxnutsEasterEgg(model: { provider: string; id: string }): void { commandHandlers.checkDaxnutsEasterEgg(this, model); }\n\tprivate async handleBashCommand(command: string, excludeFromContext?: boolean, displayCommand?: string, loginShell?: boolean): Promise<void> { return commandHandlers.handleBashCommand(this, command, excludeFromContext, displayCommand, loginShell); }\n\tprivate async executeCompaction(customInstructions?: string, isAuto?: boolean) { return commandHandlers.executeCompaction(this, customInstructions, isAuto); }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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","sourcesContent":["// Project/App: gsd-pi\n// File Purpose: Interactive TUI mode and session UI rendering.\n// gsd-pi - Interactive TUI mode for coding-agent sessions.\n/**\n * Interactive mode for the coding agent.\n * Handles TUI rendering and user interaction, delegating business logic to AgentSession.\n */\n\nimport type { ImageContent } from \"@gsd/pi-ai\";\nimport type { EditorComponent, MarkdownTheme, Spacer, Text } from \"@gsd/pi-tui\";\nimport {\n\tCombinedAutocompleteProvider,\n\tContainer,\n\tLoader,\n\tProcessTerminal,\n\ttype Terminal as TuiTerminal,\n\tTUI,\n} from \"@gsd/pi-tui\";\nimport { VERSION } from \"@gsd/pi-coding-agent/config.js\";\nimport { type AgentSession, type AgentSessionEvent } from \"@gsd/agent-core\";\nimport type { ExtensionRunner } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport { FooterDataProvider } from \"@gsd/pi-coding-agent/core/footer-data-provider.js\";\nimport { KeybindingsManager } from \"@gsd/agent-core\";\nimport { ensureTool } from \"@gsd/pi-coding-agent/utils/tools-manager.js\";\nimport { AdaptiveLayoutComponent } from \"./components/adaptive-layout.js\";\nimport { AssistantMessageComponent } from \"./components/assistant-message.js\";\nimport { BashExecutionComponent } from \"./components/bash-execution.js\";\nimport { CustomEditor } from \"./components/custom-editor.js\";\nimport { ExtensionEditorComponent } from \"./components/extension-editor.js\";\nimport { ExtensionInputComponent } from \"./components/extension-input.js\";\nimport { ExtensionSelectorComponent } from \"./components/extension-selector.js\";\nimport { FooterComponent } from \"./components/footer.js\";\nimport { ToolExecutionComponent } from \"./components/tool-execution.js\";\nimport { ContextualTips } from \"@gsd/agent-core\";\nimport { handleAgentEvent } from \"./controllers/chat-controller.js\";\nimport { setupEditorSubmitHandler as setupEditorSubmitHandlerController } from \"./controllers/input-controller.js\";\nimport {\n\tgetEditorTheme,\n\tinitTheme,\n\tonThemeChange,\n\tsetRegisteredThemes,\n\tstopThemeWatcher,\n} from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport * as chatRender from \"./interactive-chat-render.js\";\nimport * as commandHandlers from \"./interactive-command-handlers.js\";\nimport * as extensionSystem from \"./interactive-extension-system.js\";\nimport * as inputRouter from \"./interactive-input-router.js\";\nimport * as keyHandlers from \"./interactive-key-handlers.js\";\nimport * as modeInit from \"./interactive-mode-init.js\";\nimport type { CompactionQueuedMessage } from \"./interactive-notify-render.js\";\nimport * as resourceDisplay from \"./interactive-resource-display.js\";\nimport * as selectors from \"./interactive-selectors.js\";\nimport { clearMarkdownThemeCache, getMarkdownThemeWithSettings as getMarkdownThemeWithSettingsModule } from \"./interactive-theme-cache.js\";\nimport * as uiMessaging from \"./interactive-ui-messaging.js\";\nimport { DEFAULT_TOOL_OUTPUT_EXPANDED } from \"./interactive-mode-class-constants.js\";\n\nexport type {\n\tAssistantReplaySegment,\n\tExtensionNotifyType,\n\tExtensionNotifyRenderResult,\n\tCompactionQueuedMessage,\n} from \"./interactive-notify-render.js\";\nexport {\n\tbuildAssistantReplaySegments,\n\tgetToolExpansionStartupHint,\n\tshouldRenderExtensionNotifyInChat,\n\trenderExtensionNotifyInChat,\n\trenderBlockingErrorBanner,\n} from \"./interactive-notify-render.js\";\n\nexport interface InteractiveModeOptions {\n\t/** Providers that were migrated to auth.json (shows warning) */\n\tmigratedProviders?: string[];\n\t/** Warning message if session model couldn't be restored */\n\tmodelFallbackMessage?: string;\n\t/** Initial message to send on startup (can include @file content) */\n\tinitialMessage?: string;\n\t/** Images to attach to the initial message */\n\tinitialImages?: ImageContent[];\n\t/** Additional messages to send after the initial message */\n\tinitialMessages?: string[];\n\t/** Force verbose startup (overrides quietStartup setting) */\n\tverbose?: boolean;\n\t/** Override the terminal implementation used by the TUI. */\n\tterminal?: TuiTerminal;\n\t/** When false, reuse the session's existing extension bindings instead of rebinding them for TUI mode. */\n\tbindExtensions?: boolean;\n\t/** Submit editor prompts directly to AgentSession instead of using the interactive prompt loop. */\n\tsubmitPromptsDirectly?: boolean;\n\t/** Control what happens when the user requests shutdown from the TUI. */\n\tshutdownBehavior?: \"exit_process\" | \"stop_ui\" | \"ignore\";\n}\n\nexport class InteractiveMode {\n\tprivate session: AgentSession;\n\tprivate ui: TUI;\n\tprivate chatContainer: Container;\n\tprivate pendingMessagesContainer: Container;\n\tprivate adaptiveLayout: AdaptiveLayoutComponent;\n\tprivate statusContainer: Container;\n\tprivate pinnedMessageContainer: Container;\n\tprivate blockingErrorContainer: Container;\n\tprivate defaultEditor: CustomEditor;\n\tprivate editor: EditorComponent;\n\tprivate autocompleteProvider: CombinedAutocompleteProvider | undefined;\n\tprivate editorContainer: Container;\n\tprivate footer: FooterComponent;\n\tprivate footerDataProvider: FooterDataProvider;\n\tprivate keybindings: KeybindingsManager;\n\tprivate version: string;\n\tprivate isInitialized = false;\n\tprivate onInputCallback?: (text: string) => void;\n\tprivate loadingAnimation: Loader | undefined = undefined;\n\tprivate pendingWorkingMessage: string | null | undefined = undefined;\n\tprivate readonly defaultWorkingMessage = \"Working...\";\n\tprivate lastBlockingError: string | undefined = undefined;\n\n\tprivate lastSigintTime = 0;\n\tprivate lastEscapeTime = 0;\n\tprivate changelogMarkdown: string | undefined = undefined;\n\n\tprivate lastStatusSpacer: Spacer | undefined = undefined;\n\tprivate lastStatusText: Text | undefined = undefined;\n\n\tprivate streamingComponent: AssistantMessageComponent | undefined = undefined;\n\tprivate streamingMessage: import(\"@gsd/pi-ai\").AssistantMessage | undefined = undefined;\n\n\tprivate pendingTools = new Map<string, ToolExecutionComponent>();\n\tprivate toolOutputExpanded = DEFAULT_TOOL_OUTPUT_EXPANDED;\n\tprivate pendingImages: ImageContent[] = [];\n\tprivate hideThinkingBlock = false;\n\tprivate skillCommands = new Map<string, string>();\n\tprivate unsubscribe?: () => void;\n\tprivate _branchChangeUnsub?: () => void;\n\tprivate _themeChangeUnsub?: () => void;\n\tprivate markdownThemeCache?: MarkdownTheme;\n\tprivate markdownThemeCacheIndent?: string;\n\tprivate isBashMode = false;\n\tprivate contextualTips = new ContextualTips();\n\tprivate bashComponent: BashExecutionComponent | undefined = undefined;\n\tprivate pendingBashComponents: BashExecutionComponent[] = [];\n\tprivate autoCompactionLoader: Loader | undefined = undefined;\n\tprivate autoCompactionEscapeHandler?: () => void;\n\tprivate retryLoader: Loader | undefined = undefined;\n\tprivate retryEscapeHandler?: () => void;\n\tprivate compactionQueuedMessages: CompactionQueuedMessage[] = [];\n\tprivate shutdownRequested = false;\n\tprivate extensionSelector: ExtensionSelectorComponent | undefined = undefined;\n\tprivate extensionInput: ExtensionInputComponent | undefined = undefined;\n\tprivate extensionEditor: ExtensionEditorComponent | undefined = undefined;\n\tprivate extensionTerminalInputUnsubscribers = new Set<() => void>();\n\tprivate stdinErrorHandler: ((err: Error) => void) | undefined = undefined;\n\tprivate extensionWidgetsAbove = new Map<string, import(\"@gsd/pi-tui\").Component & { dispose?(): void }>();\n\tprivate extensionWidgetsBelow = new Map<string, import(\"@gsd/pi-tui\").Component & { dispose?(): void }>();\n\tprivate widgetContainerAbove!: Container;\n\tprivate widgetContainerBelow!: Container;\n\tprivate customFooter: (import(\"@gsd/pi-tui\").Component & { dispose?(): void }) | undefined = undefined;\n\tprivate headerContainer: Container;\n\tprivate builtInHeader: import(\"@gsd/pi-tui\").Component | undefined = undefined;\n\tprivate customHeader: (import(\"@gsd/pi-tui\").Component & { dispose?(): void }) | undefined = undefined;\n\n\tprivate get agent() {\n\t\treturn this.session.agent;\n\t}\n\tprivate get sessionManager() {\n\t\treturn this.session.sessionManager;\n\t}\n\tprivate get settingsManager() {\n\t\treturn this.session.settingsManager;\n\t}\n\n\tconstructor(\n\t\tsession: AgentSession,\n\t\tprivate options: InteractiveModeOptions = {},\n\t) {\n\t\tthis.session = session;\n\t\tthis.version = VERSION;\n\t\tthis.ui = new TUI(options.terminal ?? new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());\n\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\tthis.headerContainer = new Container();\n\t\tthis.chatContainer = new Container();\n\t\tthis.pendingMessagesContainer = new Container();\n\t\tthis.adaptiveLayout = new AdaptiveLayoutComponent(() => ({\n\t\t\toverride: this.settingsManager.getAdaptiveMode(),\n\t\t\tactiveToolCount: this.pendingTools.size,\n\t\t\tgsdPhase: this.pendingWorkingMessage ?? undefined,\n\t\t\tlastError: this.lastBlockingError,\n\t\t\tsessionName: this.sessionManager.getSessionName(),\n\t\t\tcwd: process.cwd(),\n\t\t}));\n\t\tthis.statusContainer = new Container();\n\t\tthis.pinnedMessageContainer = new Container();\n\t\tthis.blockingErrorContainer = new Container();\n\t\tthis.widgetContainerAbove = new Container();\n\t\tthis.widgetContainerBelow = new Container();\n\t\tthis.keybindings = KeybindingsManager.create();\n\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\tthis.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {\n\t\t\tpaddingX: editorPaddingX,\n\t\t\tautocompleteMaxVisible,\n\t\t});\n\t\tthis.editor = this.defaultEditor;\n\t\tthis.editorContainer = new Container();\n\t\tthis.editorContainer.addChild(this.editor as import(\"@gsd/pi-tui\").Component);\n\t\tthis.footerDataProvider = new FooterDataProvider(process.cwd());\n\t\tthis.footer = new FooterComponent(session, this.footerDataProvider);\n\t\tthis.footer.setAutoCompactEnabled(session.autoCompactionEnabled);\n\t\tthis.toolOutputExpanded = this.settingsManager.getToolsExpanded();\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tinitTheme(this.settingsManager.getTheme(), true);\n\t}\n\n\tprivate setupAutocomplete(): void {\n\t\tinputRouter.setupAutocomplete(this);\n\t}\n\n\tprivate installStdinErrorRecovery(): void {\n\t\tmodeInit.installStdinErrorRecovery(this);\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this.isInitialized) return;\n\n\t\tthis.changelogMarkdown = modeInit.getChangelogForDisplay(this);\n\t\tawait ensureTool(\"rg\");\n\n\t\tthis.ui.addChild(this.headerContainer);\n\t\tmodeInit.mountStartupHeader(this);\n\n\t\tthis.ui.addChild(this.adaptiveLayout);\n\t\tthis.ui.addChild(this.chatContainer);\n\t\tthis.ui.addChild(this.pendingMessagesContainer);\n\t\tthis.ui.addChild(this.statusContainer);\n\t\tthis.ui.addChild(this.pinnedMessageContainer);\n\t\tthis.ui.addChild(this.blockingErrorContainer);\n\t\tthis.renderWidgets();\n\t\tthis.ui.addChild(this.widgetContainerAbove);\n\t\tthis.ui.addChild(this.editorContainer);\n\t\tthis.ui.addChild(this.widgetContainerBelow);\n\t\tthis.ui.addChild(this.footer);\n\t\tthis.ui.setFocus(this.editor);\n\n\t\tthis.setupKeyHandlers();\n\t\tthis.setupEditorSubmitHandler();\n\t\tawait this.initExtensions();\n\t\tthis.renderInitialMessages();\n\n\t\tthis.ui.start();\n\t\tthis.installStdinErrorRecovery();\n\t\tthis.isInitialized = true;\n\n\t\tmodeInit.updateTerminalTitle(this);\n\t\tthis.subscribeToAgent();\n\n\t\tthis._themeChangeUnsub = onThemeChange(() => {\n\t\t\tthis.clearMarkdownThemeCache();\n\t\t\tthis.ui.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\tthis._branchChangeUnsub = this.footerDataProvider.onBranchChange(() => {\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\tawait this.updateAvailableProviderCount();\n\t}\n\n\tasync run(): Promise<void> {\n\t\tawait this.init();\n\n\t\tmodeInit.checkForNewVersion(this).then((newVersion) => {\n\t\t\tif (newVersion) {\n\t\t\t\tmodeInit.showNewVersionNotification(this, newVersion);\n\t\t\t}\n\t\t});\n\n\t\tmodeInit.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) {\n\t\t\t\tthis.showWarning(warning);\n\t\t\t}\n\t\t});\n\n\t\tconst { migratedProviders, modelFallbackMessage, initialMessage, initialImages, initialMessages } = this.options;\n\n\t\tif (migratedProviders && migratedProviders.length > 0) {\n\t\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t\t}\n\n\t\tconst modelsJsonError = this.session.modelRegistry.getError();\n\t\tif (modelsJsonError) {\n\t\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t\t}\n\n\t\tif (modelFallbackMessage) {\n\t\t\tthis.showWarning(modelFallbackMessage);\n\t\t}\n\n\t\tif (initialMessage) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\n\t\tif (initialMessages) {\n\t\t\tfor (const message of initialMessages) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(message);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\t\tthis.showError(errorMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\tconst userInput = await this.getUserInput();\n\t\t\tconst images = this.pendingImages.length > 0 ? [...this.pendingImages] : undefined;\n\t\t\tthis.pendingImages.length = 0;\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(userInput, { images });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMarkdownThemeWithSettings(): MarkdownTheme {\n\t\treturn getMarkdownThemeWithSettingsModule(this);\n\t}\n\n\tprivate clearMarkdownThemeCache(): void {\n\t\tclearMarkdownThemeCache(this);\n\t}\n\n\tprivate setupEditorSubmitHandler(): void {\n\t\tsetupEditorSubmitHandlerController(this as any);\n\t}\n\n\tprivate subscribeToAgent(): void {\n\t\tlet eventQueue: Promise<void> = Promise.resolve();\n\t\tthis.unsubscribe = this.session.subscribe((event) => {\n\t\t\teventQueue = eventQueue.then(() => this.handleEvent(event)).catch(() => {});\n\t\t});\n\t}\n\n\tprivate async handleEvent(event: AgentSessionEvent): Promise<void> {\n\t\tawait handleAgentEvent(this as any, event);\n\t}\n\n\tclearEditor(): void {\n\t\tuiMessaging.clearEditor(this);\n\t}\n\n\tshowError(errorMessage: string): void {\n\t\tuiMessaging.showError(this, errorMessage);\n\t}\n\n\tclearBlockingError(): void {\n\t\tuiMessaging.clearBlockingError(this);\n\t}\n\n\tshowWarning(warningMessage: string): void {\n\t\tuiMessaging.showWarning(this, warningMessage);\n\t}\n\n\tshowSuccess(successMessage: string): void {\n\t\tuiMessaging.showSuccess(this, successMessage);\n\t}\n\n\tshowTip(message: string): void {\n\t\tuiMessaging.showTip(this, message);\n\t}\n\n\tgetContextPercent(): number | undefined {\n\t\treturn this.session.getContextUsage()?.percent ?? undefined;\n\t}\n\n\trenderInitialMessages(): void {\n\t\tchatRender.renderInitialMessages(this);\n\t}\n\n\tasync getUserInput(): Promise<string> {\n\t\treturn chatRender.getUserInput(this);\n\t}\n\n\tgetExtensionUIContext() {\n\t\treturn extensionSystem.createExtensionUIContext(this);\n\t}\n\n\trequestRender(force = false): void {\n\t\tif (!this.isInitialized) return;\n\t\tthis.ui.requestRender(force);\n\t}\n\n\tstop(): void {\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.clearExtensionTerminalInputListeners();\n\t\tthis._branchChangeUnsub?.();\n\t\tthis._branchChangeUnsub = undefined;\n\t\tthis._themeChangeUnsub?.();\n\t\tthis._themeChangeUnsub = undefined;\n\t\tstopThemeWatcher();\n\n\t\tif (this.onInputCallback) {\n\t\t\tthis.onInputCallback(\"\");\n\t\t\tthis.onInputCallback = undefined;\n\t\t}\n\n\t\tthis.clearExtensionWidgets();\n\t\tif (this.customFooter?.dispose) {\n\t\t\tthis.customFooter.dispose();\n\t\t}\n\t\tthis.customFooter = undefined;\n\t\tif (this.customHeader?.dispose) {\n\t\t\tthis.customHeader.dispose();\n\t\t}\n\t\tthis.customHeader = undefined;\n\t\tthis.autocompleteProvider = undefined;\n\n\t\tthis.footer.dispose();\n\t\tthis.footerDataProvider.dispose();\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t}\n\t\tif (this.stdinErrorHandler) {\n\t\t\tprocess.stdin.removeListener(\"error\", this.stdinErrorHandler);\n\t\t\tthis.stdinErrorHandler = undefined;\n\t\t}\n\t\tif (this.isInitialized) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.isInitialized = false;\n\t\t}\n\t}\n\n\t// Delegates (Phase E2 extracted modules)\n\tprivate formatDisplayPath(p: string): string { return resourceDisplay.formatDisplayPath(this, p); }\n\tprivate getShortPath(fullPath: string, source: string): string { return resourceDisplay.getShortPath(this, fullPath, source); }\n\tprivate showLoadedResources(options?: Parameters<typeof resourceDisplay.showLoadedResources>[1]): void { resourceDisplay.showLoadedResources(this, options); }\n\n\tprivate async initExtensions(): Promise<void> { return extensionSystem.initExtensions(this); }\n\tprivate getRegisteredToolDefinition(toolName: string) { return extensionSystem.getRegisteredToolDefinition(this, toolName); }\n\tprivate formatWebSearchResult(content: unknown): string { return extensionSystem.formatWebSearchResult(this, content); }\n\tprivate setupExtensionShortcuts(extensionRunner: ExtensionRunner): void { extensionSystem.setupExtensionShortcuts(this, extensionRunner); }\n\tprivate setExtensionStatus(key: string, text: string | undefined): void { extensionSystem.setExtensionStatus(this, key, text); }\n\tprivate setExtensionWidget(key: string, content: Parameters<typeof extensionSystem.setExtensionWidget>[2], options?: Parameters<typeof extensionSystem.setExtensionWidget>[3]): void { extensionSystem.setExtensionWidget(this, key, content, options); }\n\tprivate clearExtensionWidgets(): void { extensionSystem.clearExtensionWidgets(this); }\n\tprivate resetExtensionUI(): void { extensionSystem.resetExtensionUI(this); }\n\tprivate renderWidgets(): void { extensionSystem.renderWidgets(this); }\n\tprivate setExtensionFooter(factory: Parameters<typeof extensionSystem.setExtensionFooter>[1]): void { extensionSystem.setExtensionFooter(this, factory); }\n\tprivate setExtensionHeader(factory: Parameters<typeof extensionSystem.setExtensionHeader>[1]): void { extensionSystem.setExtensionHeader(this, factory); }\n\tprivate addExtensionTerminalInputListener(handler: Parameters<typeof extensionSystem.addExtensionTerminalInputListener>[1]): () => void { return extensionSystem.addExtensionTerminalInputListener(this, handler); }\n\tprivate clearExtensionTerminalInputListeners(): void { extensionSystem.clearExtensionTerminalInputListeners(this); }\n\tprivate createExtensionUIContext() { return extensionSystem.createExtensionUIContext(this); }\n\tprivate showExtensionSelector(title: string, options: string[], opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<string | undefined> { return extensionSystem.showExtensionSelector(this, title, options, opts); }\n\tprivate hideExtensionSelector(): void { extensionSystem.hideExtensionSelector(this); }\n\tprivate showExtensionConfirm(title: string, message: string, opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<boolean> { return extensionSystem.showExtensionConfirm(this, title, message, opts); }\n\tprivate showExtensionInput(title: string, placeholder?: string, opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<string | undefined> { return extensionSystem.showExtensionInput(this, title, placeholder, opts); }\n\tprivate hideExtensionInput(): void { extensionSystem.hideExtensionInput(this); }\n\tprivate showExtensionEditor(title: string, prefill?: string): Promise<string | undefined> { return extensionSystem.showExtensionEditor(this, title, prefill); }\n\tprivate hideExtensionEditor(): void { extensionSystem.hideExtensionEditor(this); }\n\tprivate setCustomEditorComponent(factory: Parameters<typeof extensionSystem.setCustomEditorComponent>[1]): void { extensionSystem.setCustomEditorComponent(this, factory); }\n\tprivate showExtensionNotify(message: string, type?: import(\"./interactive-notify-render.js\").ExtensionNotifyType): void { extensionSystem.showExtensionNotify(this, message, type); }\n\tprivate showExtensionCustom<T>(factory: Parameters<typeof extensionSystem.showExtensionCustom<T>>[1], options?: Parameters<typeof extensionSystem.showExtensionCustom<T>>[2]): Promise<T> { return extensionSystem.showExtensionCustom(this, factory, options); }\n\tprivate showExtensionError(extensionPath: string, error: string, stack?: string): void { extensionSystem.showExtensionError(this, extensionPath, error, stack); }\n\n\tprivate setupKeyHandlers(): void { keyHandlers.setupKeyHandlers(this); }\n\tprivate handleClipboardImagePaste(): Promise<void> { return keyHandlers.handleClipboardImagePaste(this); }\n\tprivate handlePastedImagePath(filePath: string): void { keyHandlers.handlePastedImagePath(this, filePath); }\n\tprivate getSlashCommandContext() { return inputRouter.getSlashCommandContext(this); }\n\tprivate getAllQueuedMessages() { return inputRouter.getAllQueuedMessages(this); }\n\tprivate clearAllQueues() { return inputRouter.clearAllQueues(this); }\n\tprivate updatePendingMessagesDisplay(): void { inputRouter.updatePendingMessagesDisplay(this); }\n\tprivate restoreQueuedMessagesToEditor(options?: Parameters<typeof inputRouter.restoreQueuedMessagesToEditor>[1]): number { return inputRouter.restoreQueuedMessagesToEditor(this, options); }\n\tprivate queueCompactionMessage(text: string, mode: \"steer\" | \"followUp\"): void { inputRouter.queueCompactionMessage(this, text, mode); }\n\tprivate isExtensionCommand(text: string): boolean { return inputRouter.isExtensionCommand(this, text); }\n\tprivate isKnownSlashCommand(text: string): boolean { return inputRouter.isKnownSlashCommand(this, text); }\n\tprivate async flushCompactionQueue(options?: Parameters<typeof inputRouter.flushCompactionQueue>[1]): Promise<void> { return inputRouter.flushCompactionQueue(this, options); }\n\tprivate flushPendingBashComponents(): void { inputRouter.flushPendingBashComponents(this); }\n\tprivate updateTerminalTitle(): void { modeInit.updateTerminalTitle(this); }\n\n\tprivate getUserMessageText(message: import(\"@gsd/pi-ai\").Message): string { return chatRender.getUserMessageText(this, message); }\n\tprivate showStatus(message: string, options?: { append?: boolean }): void { chatRender.showStatus(this, message, options); }\n\tprivate addMessageToChat(message: import(\"@gsd/pi-agent-core\").AgentMessage, options?: { populateHistory?: boolean }): void { chatRender.addMessageToChat(this, message, options); }\n\tprivate trimChatHistory(): void { chatRender.trimChatHistory(this); }\n\tprivate renderSessionContext(sessionContext: import(\"@gsd/pi-coding-agent/core/session-manager.js\").SessionContext, options?: Parameters<typeof chatRender.renderSessionContext>[2]): void { chatRender.renderSessionContext(this, sessionContext, options); }\n\tprivate rebuildChatFromMessages(): void { chatRender.rebuildChatFromMessages(this); }\n\tprivate populatePinnedFromMessages(messages: import(\"@gsd/pi-agent-core\").AgentMessage[]): void { chatRender.populatePinnedFromMessages(this, messages); }\n\n\tprivate handleCtrlC(): void { keyHandlers.handleCtrlC(this); }\n\tprivate handleCtrlD(): void { keyHandlers.handleCtrlD(this); }\n\tprivate isShuttingDown = false;\n\tprivate async shutdown(): Promise<void> { return keyHandlers.shutdown(this); }\n\tprivate async checkShutdownRequested(): Promise<void> { return keyHandlers.checkShutdownRequested(this); }\n\tprivate handleCtrlZ(): void { keyHandlers.handleCtrlZ(this); }\n\tprivate async handleFollowUp(): Promise<void> { return keyHandlers.handleFollowUp(this); }\n\tprivate handleDequeue(): void { keyHandlers.handleDequeue(this); }\n\tprivate updateEditorBorderColor(): void { keyHandlers.updateEditorBorderColor(this); }\n\tprivate cycleThinkingLevel(): void { keyHandlers.cycleThinkingLevel(this); }\n\tprivate async cycleModel(direction: \"forward\" | \"backward\"): Promise<void> { return keyHandlers.cycleModel(this, direction); }\n\tprivate toggleToolOutputExpansion(): void { keyHandlers.toggleToolOutputExpansion(this); }\n\tprivate setToolsExpanded(expanded: boolean): void { keyHandlers.setToolsExpanded(this, expanded); }\n\tprivate toggleThinkingBlockVisibility(): void { keyHandlers.toggleThinkingBlockVisibility(this); }\n\tprivate openExternalEditor(): void { keyHandlers.openExternalEditor(this); }\n\n\tprivate showSelector(create: Parameters<typeof selectors.showSelector>[1]): void { selectors.showSelector(this, create); }\n\tprivate showSettingsSelector(): void { selectors.showSettingsSelector(this); }\n\tprivate async handleModelCommand(searchTerm?: string): Promise<void> { return selectors.handleModelCommand(this, searchTerm); }\n\tprivate async findExactModelMatch(searchTerm: string) { return selectors.findExactModelMatch(this, searchTerm); }\n\tprivate async getModelCandidates() { return selectors.getModelCandidates(this); }\n\tprivate async updateAvailableProviderCount(): Promise<void> { return selectors.updateAvailableProviderCount(this); }\n\tprivate showModelSelector(initialSearchInput?: string): void { selectors.showModelSelector(this, initialSearchInput); }\n\tprivate async showModelsSelector(): Promise<void> { return selectors.showModelsSelector(this); }\n\tprivate showUserMessageSelector(): void { selectors.showUserMessageSelector(this); }\n\tprivate showTreeSelector(initialSelectedId?: string): void { selectors.showTreeSelector(this, initialSelectedId); }\n\tprivate showSessionSelector(): void { selectors.showSessionSelector(this); }\n\tprivate async handleResumeSession(sessionPath: string): Promise<void> { return selectors.handleResumeSession(this, sessionPath); }\n\tprivate showProviderManager(): void { selectors.showProviderManager(this); }\n\tprivate async showOAuthSelector(mode: \"login\" | \"logout\"): Promise<void> { return selectors.showOAuthSelector(this, mode); }\n\tprivate async showLoginDialog(providerId: string): Promise<void> { return selectors.showLoginDialog(this, providerId); }\n\n\tprivate async handleReloadCommand(): Promise<void> { return commandHandlers.handleReloadCommand(this); }\n\tprivate async handleClearCommand(): Promise<void> { return commandHandlers.handleClearCommand(this); }\n\tprivate handleDebugCommand(): void { commandHandlers.handleDebugCommand(this); }\n\tprivate handleDaxnuts(): void { commandHandlers.handleDaxnuts(this); }\n\tprivate checkDaxnutsEasterEgg(model: { provider: string; id: string }): void { commandHandlers.checkDaxnutsEasterEgg(this, model); }\n\tprivate async handleBashCommand(command: string, excludeFromContext?: boolean, displayCommand?: string, loginShell?: boolean): Promise<void> { return commandHandlers.handleBashCommand(this, command, excludeFromContext, displayCommand, loginShell); }\n\tprivate async executeCompaction(customInstructions?: string, isAuto?: boolean) { return commandHandlers.executeCompaction(this, customInstructions, isAuto); }\n}\n"]}
|
package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-selectors-settings.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-selectors-settings.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAmB,MAAM,YAAY,CAAC;AAuBzD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AA8BvF,wBAAgB,YAAY,CAAC,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,IAAI,CAW7I;AAEF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"interactive-selectors-settings.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-selectors-settings.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAmB,MAAM,YAAY,CAAC;AAuBzD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AA8BvF,wBAAgB,YAAY,CAAC,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,IAAI,CAW7I;AAEF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAyJ3E;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,2BAA2B,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7G;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAE/H;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAEhG;AAED,iFAAiF;AAClF,wBAAsB,4BAA4B,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAElG;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,2BAA2B,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CA6BrG;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHxF"}
|
|
@@ -37,6 +37,7 @@ export function showSettingsSelector(host) {
|
|
|
37
37
|
currentTheme: host.settingsManager.getTheme() || "dark",
|
|
38
38
|
availableThemes: getAvailableThemes(),
|
|
39
39
|
hideThinkingBlock: host.hideThinkingBlock,
|
|
40
|
+
toolsExpanded: host.toolOutputExpanded,
|
|
40
41
|
collapseChangelog: host.settingsManager.getCollapseChangelog(),
|
|
41
42
|
doubleEscapeAction: host.settingsManager.getDoubleEscapeAction(),
|
|
42
43
|
treeFilterMode: host.settingsManager.getTreeFilterMode(),
|
|
@@ -114,6 +115,10 @@ export function showSettingsSelector(host) {
|
|
|
114
115
|
host.chatContainer.clear();
|
|
115
116
|
host.rebuildChatFromMessages();
|
|
116
117
|
},
|
|
118
|
+
onToolsExpandedChange: (expanded) => {
|
|
119
|
+
host.settingsManager.setToolsExpanded(expanded);
|
|
120
|
+
host.setToolsExpanded(expanded);
|
|
121
|
+
},
|
|
117
122
|
onCollapseChangelogChange: (collapsed) => {
|
|
118
123
|
host.settingsManager.setCollapseChangelog(collapsed);
|
|
119
124
|
},
|