@bastani/atomic 0.9.39-alpha.2 → 0.9.40-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/dist/builtin/intercom/CHANGELOG.md +20 -0
- package/dist/builtin/intercom/broker/broker.ts +523 -72
- package/dist/builtin/intercom/broker/client.ts +136 -5
- package/dist/builtin/intercom/broker/database-wake-up-bus.ts +274 -0
- package/dist/builtin/intercom/broker/group-membership.ts +2 -2
- package/dist/builtin/intercom/broker/multinode-router.ts +1500 -0
- package/dist/builtin/intercom/broker/multinode-state-store.ts +569 -0
- package/dist/builtin/intercom/broker/open-broker-state.ts +160 -0
- package/dist/builtin/intercom/broker/paths.ts +6 -0
- package/dist/builtin/intercom/broker/pending-send-registry.ts +14 -0
- package/dist/builtin/intercom/broker/recipient-receipts.ts +93 -0
- package/dist/builtin/intercom/broker/restoring-recipients.ts +263 -0
- package/dist/builtin/intercom/broker/send-handler.ts +241 -25
- package/dist/builtin/intercom/broker/session-id-reclaim.ts +41 -0
- package/dist/builtin/intercom/broker/socket-writes.ts +47 -0
- package/dist/builtin/intercom/broker/spawn.ts +10 -2
- package/dist/builtin/intercom/broker/sql-held-send-store.ts +96 -0
- package/dist/builtin/intercom/broker/sql-known-session-store.ts +129 -0
- package/dist/builtin/intercom/broker/sql-lease-store.ts +194 -0
- package/dist/builtin/intercom/broker/sql-outbox-store.ts +249 -0
- package/dist/builtin/intercom/broker/sql-pending-ask-store.ts +105 -0
- package/dist/builtin/intercom/broker/sql-restoring-reservation-store.ts +295 -0
- package/dist/builtin/intercom/broker/sql-sent-message-authority.ts +126 -0
- package/dist/builtin/intercom/broker/supervisor-channel.ts +10 -0
- package/dist/builtin/intercom/broker/wake-up-bus.ts +60 -0
- package/dist/builtin/intercom/index.bundle.mjs +793 -91
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/retry-policy.ts +4 -0
- package/dist/builtin/intercom/session-target.ts +24 -0
- package/dist/builtin/intercom/types.ts +57 -3
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +37 -0
- package/dist/builtin/subagents/README.md +18 -12
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/skills/agent-browser/SKILL.md +1 -1
- package/dist/builtin/subagents/skills/cua-driver/BROWSER.md +55 -8
- package/dist/builtin/subagents/skills/cua-driver/EMBEDDING.md +7 -2
- package/dist/builtin/subagents/skills/cua-driver/LINUX.md +7 -1
- package/dist/builtin/subagents/skills/cua-driver/MACOS.md +151 -27
- package/dist/builtin/subagents/skills/cua-driver/RUNTIME.md +1 -1
- package/dist/builtin/subagents/skills/cua-driver/SKILL.md +33 -17
- package/dist/builtin/subagents/skills/cua-driver/WINDOWS.md +5 -0
- package/dist/builtin/subagents/skills/cua-driver/WORKFLOW.md +46 -8
- package/dist/builtin/subagents/skills/subagent/SKILL.md +18 -20
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +8032 -6034
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +32 -0
- package/dist/builtin/workflows/README.md +1 -1
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/skills/impeccable/SKILL.md +8 -8
- package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/adapt.native.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/audit.md +4 -2
- package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/critique.md +22 -9
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/distill.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/extract.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/harden.md +2 -4
- package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +4 -4
- package/dist/builtin/workflows/skills/impeccable/reference/live.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +6 -6
- package/dist/builtin/workflows/skills/impeccable/reference/onboard.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +10 -0
- package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/VERSION +1 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/impeccable +6 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/impeccable.cmd +47 -22
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +34 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +25 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +33 -8
- package/dist/builtin/workflows/src/durable/journal/resolution.d.ts +7 -7
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +22855 -22308
- package/dist/builtin/workflows/src/index.js +106 -35
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +16 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +2 -0
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +6 -6
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +6 -3
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts +7 -2
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +29 -12
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session-recovery.d.ts +14 -0
- package/dist/core/agent-session-recovery.d.ts.map +1 -0
- package/dist/core/agent-session-recovery.js +83 -0
- package/dist/core/agent-session-recovery.js.map +1 -0
- package/dist/core/agent-session-tasks.d.ts.map +1 -1
- package/dist/core/agent-session-tasks.js +4 -6
- package/dist/core/agent-session-tasks.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +13 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +4 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +6 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/event-results.d.ts +21 -0
- package/dist/core/extensions/event-results.d.ts.map +1 -1
- package/dist/core/extensions/event-results.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +4 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts +9 -2
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +29 -0
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +7 -2
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +1 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/session-events.d.ts +30 -2
- package/dist/core/extensions/session-events.d.ts.map +1 -1
- package/dist/core/extensions/session-events.js.map +1 -1
- package/dist/core/sdk-types.d.ts +3 -2
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +3 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-storage.d.ts.map +1 -1
- package/dist/core/session-storage.js +15 -9
- package/dist/core/session-storage.js.map +1 -1
- package/dist/core/storage/process-selection.d.ts +39 -0
- package/dist/core/storage/process-selection.d.ts.map +1 -0
- package/dist/core/storage/process-selection.js +154 -0
- package/dist/core/storage/process-selection.js.map +1 -0
- package/dist/core/storage/provider.d.ts +6 -1
- package/dist/core/storage/provider.d.ts.map +1 -1
- package/dist/core/storage/provider.js +3 -2
- package/dist/core/storage/provider.js.map +1 -1
- package/dist/core/storage/selection.d.ts +1 -1
- package/dist/core/storage/selection.d.ts.map +1 -1
- package/dist/core/storage/selection.js.map +1 -1
- package/dist/core/storage/session/jsonl-session-store.d.ts +2 -0
- package/dist/core/storage/session/jsonl-session-store.d.ts.map +1 -1
- package/dist/core/storage/session/jsonl-session-store.js +38 -2
- package/dist/core/storage/session/jsonl-session-store.js.map +1 -1
- package/dist/core/tasks/completion.d.ts +11 -2
- package/dist/core/tasks/completion.d.ts.map +1 -1
- package/dist/core/tasks/completion.js +40 -16
- package/dist/core/tasks/completion.js.map +1 -1
- package/dist/core/tasks/pause.d.ts +4 -1
- package/dist/core/tasks/pause.d.ts.map +1 -1
- package/dist/core/tasks/pause.js +8 -5
- package/dist/core/tasks/pause.js.map +1 -1
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +7 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +11 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts +2 -0
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js +2 -0
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +4 -0
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +2 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +3 -0
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +2 -0
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.d.ts +2 -1
- package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +29 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +4 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-args.js +4 -0
- package/dist/modes/interactive-engine/engine-args.js.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.js +4 -4
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +4 -0
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/remote-renderer.js +1 -1
- package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +4 -1
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +4 -0
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +3 -0
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-timeouts.js +1 -0
- package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js +6 -1
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +12 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +44 -11
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/tools-manager.js +1 -1
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/background-tasks.md +5 -3
- package/docs/computer-use.md +2 -2
- package/docs/environment-variables.md +4 -1
- package/docs/extensions/events.md +29 -2
- package/docs/getting-started/first-session.md +1 -1
- package/docs/guides/intercom.md +1 -1
- package/docs/intercom/operations.md +103 -1
- package/docs/intercom/reference.md +10 -3
- package/docs/intercom.md +8 -6
- package/docs/keybindings.md +1 -1
- package/docs/models.md +1 -1
- package/docs/providers.md +4 -2
- package/docs/reference/cli.md +5 -0
- package/docs/rpc/protocol.md +19 -0
- package/docs/rpc.md +3 -0
- package/docs/sdk/web-server.md +1 -1
- package/docs/sdk.md +5 -2
- package/docs/sessions.md +17 -1
- package/docs/settings.md +5 -3
- package/docs/skills.md +1 -1
- package/docs/storage.md +54 -3
- package/docs/subagents.md +49 -9
- package/docs/usage.md +1 -1
- package/docs/windows.md +14 -4
- package/docs/workflows/api-reference.md +1 -1
- package/docs/workflows/authoring.md +1 -1
- package/docs/workflows/operations.md +10 -6
- package/npm-shrinkwrap.json +37 -37
- package/package.json +4 -4
|
@@ -259,6 +259,7 @@ InteractiveModeBase.prototype.handleResumeSession = async function (sessionId, o
|
|
|
259
259
|
this.clearFirstRunOnboardingUi();
|
|
260
260
|
}
|
|
261
261
|
this.showStatus("Resumed session");
|
|
262
|
+
this.startSessionRecovery("resume");
|
|
262
263
|
return result;
|
|
263
264
|
}
|
|
264
265
|
catch (error) {
|
|
@@ -282,6 +283,7 @@ InteractiveModeBase.prototype.handleResumeSession = async function (sessionId, o
|
|
|
282
283
|
this.clearFirstRunOnboardingUi();
|
|
283
284
|
}
|
|
284
285
|
this.showStatus("Resumed session in current cwd");
|
|
286
|
+
this.startSessionRecovery("resume");
|
|
285
287
|
return result;
|
|
286
288
|
}
|
|
287
289
|
return this.handleFatalRuntimeError("Failed to resume session", error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-session-routing.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-session-routing.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname } from \"node:path\";\nimport { canonicalizePath } from \"../../utils/paths.ts\";\nimport { withHostProjectTrustPrompt } from \"../interactive-engine/extension-ui-bridge.ts\";\nimport { mountIdleStatus } from \"./components/idle-status.ts\";\nimport { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport {\n\tAPP_NAME,\n\ttype ExtensionCommandContext,\n\thasTrustRequiringProjectResources,\n\tkeyText,\n\tLoader,\n\tMissingSessionCwdError,\n\tProjectTrustStore,\n\tSessionManager,\n\tSessionSelectorComponent,\n\tSpacer,\n\tTreeSelectorComponent,\n\tTrustSelectorComponent,\n\ttheme,\n} from \"./interactive-mode-deps.ts\";\n\nInteractiveModeBase.prototype.handleCloneCommand = async function (this: InteractiveModeBase): Promise<void> {\n\tawait this.ensureDeferredStartupComplete();\n\tconst leafId = this.sessionManager.getLeafId();\n\tif (!leafId) {\n\t\tthis.showStatus(\"Nothing to clone yet\");\n\t\treturn;\n\t}\n\n\ttry {\n\t\tconst result = await this.runtimeHost.fork(leafId, { position: \"at\" });\n\t\tif (result.cancelled) {\n\t\t\tthis.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderCurrentSessionState();\n\t\tthis.editor.setText(\"\");\n\t\tthis.showStatus(\"Cloned to new session\");\n\t} catch (error: unknown) {\n\t\tthis.showError(error instanceof Error ? error.message : String(error));\n\t}\n};\n\nInteractiveModeBase.prototype.maybeSaveImplicitProjectTrustAfterReload = function (this: InteractiveModeBase): boolean {\n\tconst cwd = this.sessionManager.getCwd();\n\tif (this.autoTrustOnReloadCwd !== cwd) {\n\t\treturn false;\n\t}\n\tif (!this.settingsManager.isProjectTrusted() || !hasTrustRequiringProjectResources(cwd)) {\n\t\treturn false;\n\t}\n\n\tconst trustStore = new ProjectTrustStore(this.runtimeHost.services.agentDir);\n\ttry {\n\t\tif (trustStore.get(cwd) !== null) {\n\t\t\tthis.autoTrustOnReloadCwd = undefined;\n\t\t\treturn false;\n\t\t}\n\t\ttrustStore.set(cwd, true);\n\t\tthis.autoTrustOnReloadCwd = undefined;\n\t\treturn true;\n\t} catch (error) {\n\t\tthis.showWarning(\n\t\t\t`Could not save project trust after reload: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t\treturn false;\n\t}\n};\n\nInteractiveModeBase.prototype.showTrustSelector = function (this: InteractiveModeBase): void {\n\tconst cwd = this.sessionManager.getCwd();\n\tconst trustStore = new ProjectTrustStore(this.runtimeHost.services.agentDir);\n\tconst savedDecision = trustStore.getEntry(cwd);\n\tvoid withHostProjectTrustPrompt(\n\t\tthis.runtimeHost,\n\t\t\"select\",\n\t\t\"Project trust\",\n\t\t() =>\n\t\t\tnew Promise<void>((resolve) => {\n\t\t\t\tthis.showSelector((done) => {\n\t\t\t\t\tconst selector = new TrustSelectorComponent({\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tsavedDecision,\n\t\t\t\t\t\tprojectTrusted: this.settingsManager.isProjectTrusted(),\n\t\t\t\t\t\tonSelect: (selection) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\ttrustStore.setMany(selection.updates);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tthis.showError(error instanceof Error ? error.message : String(error));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t\tthis.showStatus(\n\t\t\t\t\t\t\t\t`Saved trust decision: ${selection.trusted ? \"trusted\" : \"untrusted\"}. Restart ${APP_NAME} for this to take effect.`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonCancel: () => {\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\treturn { component: selector, focus: selector, dispose: resolve };\n\t\t\t\t});\n\t\t\t}),\n\t).catch((error: Error) => this.showError(error.message));\n};\n\nInteractiveModeBase.prototype.showTreeSelector = async function (\n\tthis: InteractiveModeBase,\n\tinitialSelectedId?: string,\n): Promise<void> {\n\tawait this.ensureDeferredStartupComplete();\n\tconst tree = this.sessionManager.getTree();\n\tconst realLeafId = this.sessionManager.getLeafId();\n\tconst initialFilterMode = this.settingsManager.getTreeFilterMode();\n\n\tif (tree.length === 0) {\n\t\tthis.showStatus(\"No entries in session\");\n\t\treturn;\n\t}\n\n\tthis.showSelector((done) => {\n\t\tconst selector = new TreeSelectorComponent(\n\t\t\ttree,\n\t\t\trealLeafId,\n\t\t\tthis.ui.terminal.rows,\n\t\t\tasync (entryId) => {\n\t\t\t\t// Compare against the live leaf: a response that was streaming while the\n\t\t\t\t// selector was open may have advanced it past the captured value.\n\t\t\t\tif (entryId === this.sessionManager.getLeafId()) {\n\t\t\t\t\tdone();\n\t\t\t\t\tthis.showStatus(\"Already at this point\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Ask about summarization\n\t\t\t\tdone(); // Close selector first\n\n\t\t\t\t// Loop until user makes a complete choice or cancels to tree\n\t\t\t\tlet wantsSummary = false;\n\t\t\t\tlet customInstructions: string | undefined;\n\n\t\t\t\t// Check if we should skip the prompt (user preference to always default to no summary)\n\t\t\t\tif (!this.settingsManager.getBranchSummarySkipPrompt()) {\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tconst summaryChoice = await this.showExtensionSelector(\"Summarize branch?\", [\n\t\t\t\t\t\t\t\"No summary\",\n\t\t\t\t\t\t\t\"Summarize\",\n\t\t\t\t\t\t\t\"Summarize with custom prompt\",\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\tif (summaryChoice === undefined) {\n\t\t\t\t\t\t\t// User pressed escape - re-show tree selector with same selection\n\t\t\t\t\t\t\tthis.showTreeSelector(entryId);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twantsSummary = summaryChoice !== \"No summary\";\n\n\t\t\t\t\t\tif (summaryChoice === \"Summarize with custom prompt\") {\n\t\t\t\t\t\t\tcustomInstructions = await this.showExtensionEditor(\"Custom summarization instructions\");\n\t\t\t\t\t\t\tif (customInstructions === undefined) {\n\t\t\t\t\t\t\t\t// User cancelled - loop back to summary selector\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// User made a complete choice\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.session.isStreaming) {\n\t\t\t\t\tthis.restoreQueuedMessagesToEditor();\n\t\t\t\t\tawait this.session.abort();\n\t\t\t\t}\n\t\t\t\tif (this.session.isCompacting) {\n\t\t\t\t\tthis.showError(\n\t\t\t\t\t\t\"Wait for the current compaction or tree navigation to finish before navigating the session tree.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set up escape handler and loader if summarizing\n\t\t\t\tlet summaryLoader: Loader | undefined;\n\t\t\t\tconst originalOnEscape = this.defaultEditor.onEscape;\n\n\t\t\t\tif (wantsSummary) {\n\t\t\t\t\tthis.defaultEditor.onEscape = () => {\n\t\t\t\t\t\tthis.session.abortBranchSummary();\n\t\t\t\t\t};\n\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\tsummaryLoader = new Loader(\n\t\t\t\t\t\tthis.ui,\n\t\t\t\t\t\t(spinner) => theme.fg(\"accent\", spinner),\n\t\t\t\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\t\t\t\t`Summarizing branch... (${keyText(\"app.interrupt\")} Cancel)`,\n\t\t\t\t\t);\n\t\t\t\t\tthis.statusContainer.addChild(summaryLoader);\n\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait this.ensureDeferredStartupComplete();\n\t\t\t\t\tconst result = await this.session.navigateTree(entryId, {\n\t\t\t\t\t\tsummarize: wantsSummary,\n\t\t\t\t\t\tcustomInstructions,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (result.aborted) {\n\t\t\t\t\t\t// Summarization aborted - re-show tree selector with same selection\n\t\t\t\t\t\tthis.showStatus(\"Branch summarization cancelled\");\n\t\t\t\t\t\tthis.showTreeSelector(entryId);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (result.cancelled) {\n\t\t\t\t\t\tthis.showStatus(\"Navigation cancelled\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update UI\n\t\t\t\t\tthis.chatContainer.clear();\n\t\t\t\t\tthis.renderInitialMessages();\n\t\t\t\t\tif (result.editorText && !this.editor.getText().trim()) {\n\t\t\t\t\t\tthis.editor.setText(result.editorText);\n\t\t\t\t\t}\n\t\t\t\t\tthis.showStatus(\"Navigated to selected point\");\n\t\t\t\t\tvoid this.flushCompactionQueue({ willRetry: false });\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.showError(error instanceof Error ? error.message : String(error));\n\t\t\t\t} finally {\n\t\t\t\t\tif (summaryLoader) {\n\t\t\t\t\t\tsummaryLoader.stop();\n\t\t\t\t\t\tthis.statusContainer.clear();\n\t\t\t\t\t\tmountIdleStatus(this.statusContainer, this.settingsManager.getClearOnShrink());\n\t\t\t\t\t}\n\t\t\t\t\tthis.defaultEditor.onEscape = originalOnEscape;\n\t\t\t\t}\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tdone();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t\tasync (entryId, label) => {\n\t\t\t\tawait this.sessionManager.appendLabelChange(entryId, label);\n\t\t\t},\n\t\t\tinitialSelectedId,\n\t\t\tinitialFilterMode,\n\t\t);\n\t\tselector.onLabelError = (error) => this.showError(error.message);\n\t\tselector.onLabelUpdate = () => this.ui.requestRender();\n\t\treturn { component: selector, focus: selector };\n\t});\n};\n\nInteractiveModeBase.prototype.showSessionSelector = function (this: InteractiveModeBase): void {\n\tthis.showSelector((done) => {\n\t\tconst selector = new SessionSelectorComponent(\n\t\t\t(onProgress) =>\n\t\t\t\tSessionManager.list(this.sessionManager.getCwd(), this.sessionManager.getSessionStore(), onProgress),\n\t\t\t(onProgress) => SessionManager.listAll(this.sessionManager.getSessionStore(), onProgress),\n\t\t\tasync (selected) => {\n\t\t\t\tselector.dispose();\n\t\t\t\tdone();\n\t\t\t\tconst directory =\n\t\t\t\t\tthis.sessionManager.getSessionStore().descriptor.adapter === \"jsonl\"\n\t\t\t\t\t\t? dirname(selected.path)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tawait this.handleResumeSession(selected.id, undefined, directory);\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tselector.dispose();\n\t\t\t\tdone();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tselector.dispose();\n\t\t\t\tvoid this.shutdown();\n\t\t\t},\n\t\t\t() => this.ui.requestRender(),\n\t\t\t{\n\t\t\t\tdeleteSession:\n\t\t\t\t\tthis.sessionManager.getSessionStore().descriptor.adapter === \"jsonl\"\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: (id) => this.sessionManager.getSessionStore().delete(id),\n\t\t\t\trenameSession: async (selected, nextName) => {\n\t\t\t\t\tconst next = (nextName ?? \"\").trim();\n\t\t\t\t\tif (!next) return;\n\t\t\t\t\tconst store = this.sessionManager.getSessionStore();\n\t\t\t\t\tconst directory = store.descriptor.adapter === \"jsonl\" ? dirname(selected.path) : undefined;\n\t\t\t\t\tif (\n\t\t\t\t\t\tselected.id === this.sessionManager.getSessionId() &&\n\t\t\t\t\t\t(directory === undefined ||\n\t\t\t\t\t\t\tcanonicalizePath(directory) === canonicalizePath(this.sessionManager.getSessionDir()))\n\t\t\t\t\t) {\n\t\t\t\t\t\tawait this.session.setSessionName(next);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst mgr = await this.sessionManager.openSessionById(selected.id, undefined, directory);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mgr.appendSessionInfo(next);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tif (mgr.getSessionStore() !== store) await mgr.getSessionStore().close();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tshowRenameHint: true,\n\t\t\t\tkeybindings: this.keybindings,\n\t\t\t},\n\n\t\t\t{ id: this.sessionManager.getSessionId(), directory: this.sessionManager.getSessionDir() },\n\t\t);\n\t\treturn { component: selector, focus: selector };\n\t});\n};\n\nInteractiveModeBase.prototype.handleResumeSession = async function (\n\tthis: InteractiveModeBase,\n\tsessionId: string,\n\toptions?: Parameters<ExtensionCommandContext[\"switchSession\"]>[1],\n\tsessionDirectory?: string,\n): Promise<{ cancelled: boolean }> {\n\tawait this.ensureDeferredStartupComplete();\n\tInteractiveModeBase.prototype.clearWorkingLoader.call(this);\n\tmountIdleStatus(this.statusContainer, this.settingsManager.getClearOnShrink());\n\ttry {\n\t\tconst result = await this.runtimeHost.switchSession(sessionId, {\n\t\t\twithSession: options?.withSession,\n\t\t\tsessionDirectory,\n\t\t\tprojectTrustContextFactory: (cwd) => this.createProjectTrustContext(cwd),\n\t\t});\n\t\tif (result.cancelled) {\n\t\t\treturn result;\n\t\t}\n\t\tthis.renderCurrentSessionState();\n\t\tif (this.firstRunNoticeVisible) {\n\t\t\tthis.clearFirstRunOnboardingUi();\n\t\t}\n\t\tthis.showStatus(\"Resumed session\");\n\t\treturn result;\n\t} catch (error: unknown) {\n\t\tif (error instanceof MissingSessionCwdError) {\n\t\t\tconst selectedCwd = await this.promptForMissingSessionCwd(error);\n\t\t\tif (!selectedCwd) {\n\t\t\t\tthis.showStatus(\"Resume cancelled\");\n\t\t\t\treturn { cancelled: true };\n\t\t\t}\n\t\t\tconst result = await this.runtimeHost.switchSession(sessionId, {\n\t\t\t\tcwdOverride: selectedCwd,\n\t\t\t\tsessionDirectory,\n\t\t\t\twithSession: options?.withSession,\n\t\t\t\tprojectTrustContextFactory: (cwd) => this.createProjectTrustContext(cwd),\n\t\t\t});\n\t\t\tif (result.cancelled) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthis.renderCurrentSessionState();\n\t\t\tif (this.firstRunNoticeVisible) {\n\t\t\t\tthis.clearFirstRunOnboardingUi();\n\t\t\t}\n\t\t\tthis.showStatus(\"Resumed session in current cwd\");\n\t\t\treturn result;\n\t\t}\n\t\treturn this.handleFatalRuntimeError(\"Failed to resume session\", error);\n\t}\n};\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-session-routing.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-session-routing.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname } from \"node:path\";\nimport { canonicalizePath } from \"../../utils/paths.ts\";\nimport { withHostProjectTrustPrompt } from \"../interactive-engine/extension-ui-bridge.ts\";\nimport { mountIdleStatus } from \"./components/idle-status.ts\";\nimport { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport {\n\tAPP_NAME,\n\ttype ExtensionCommandContext,\n\thasTrustRequiringProjectResources,\n\tkeyText,\n\tLoader,\n\tMissingSessionCwdError,\n\tProjectTrustStore,\n\tSessionManager,\n\tSessionSelectorComponent,\n\tSpacer,\n\tTreeSelectorComponent,\n\tTrustSelectorComponent,\n\ttheme,\n} from \"./interactive-mode-deps.ts\";\n\nInteractiveModeBase.prototype.handleCloneCommand = async function (this: InteractiveModeBase): Promise<void> {\n\tawait this.ensureDeferredStartupComplete();\n\tconst leafId = this.sessionManager.getLeafId();\n\tif (!leafId) {\n\t\tthis.showStatus(\"Nothing to clone yet\");\n\t\treturn;\n\t}\n\n\ttry {\n\t\tconst result = await this.runtimeHost.fork(leafId, { position: \"at\" });\n\t\tif (result.cancelled) {\n\t\t\tthis.ui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.renderCurrentSessionState();\n\t\tthis.editor.setText(\"\");\n\t\tthis.showStatus(\"Cloned to new session\");\n\t} catch (error: unknown) {\n\t\tthis.showError(error instanceof Error ? error.message : String(error));\n\t}\n};\n\nInteractiveModeBase.prototype.maybeSaveImplicitProjectTrustAfterReload = function (this: InteractiveModeBase): boolean {\n\tconst cwd = this.sessionManager.getCwd();\n\tif (this.autoTrustOnReloadCwd !== cwd) {\n\t\treturn false;\n\t}\n\tif (!this.settingsManager.isProjectTrusted() || !hasTrustRequiringProjectResources(cwd)) {\n\t\treturn false;\n\t}\n\n\tconst trustStore = new ProjectTrustStore(this.runtimeHost.services.agentDir);\n\ttry {\n\t\tif (trustStore.get(cwd) !== null) {\n\t\t\tthis.autoTrustOnReloadCwd = undefined;\n\t\t\treturn false;\n\t\t}\n\t\ttrustStore.set(cwd, true);\n\t\tthis.autoTrustOnReloadCwd = undefined;\n\t\treturn true;\n\t} catch (error) {\n\t\tthis.showWarning(\n\t\t\t`Could not save project trust after reload: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t\treturn false;\n\t}\n};\n\nInteractiveModeBase.prototype.showTrustSelector = function (this: InteractiveModeBase): void {\n\tconst cwd = this.sessionManager.getCwd();\n\tconst trustStore = new ProjectTrustStore(this.runtimeHost.services.agentDir);\n\tconst savedDecision = trustStore.getEntry(cwd);\n\tvoid withHostProjectTrustPrompt(\n\t\tthis.runtimeHost,\n\t\t\"select\",\n\t\t\"Project trust\",\n\t\t() =>\n\t\t\tnew Promise<void>((resolve) => {\n\t\t\t\tthis.showSelector((done) => {\n\t\t\t\t\tconst selector = new TrustSelectorComponent({\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tsavedDecision,\n\t\t\t\t\t\tprojectTrusted: this.settingsManager.isProjectTrusted(),\n\t\t\t\t\t\tonSelect: (selection) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\ttrustStore.setMany(selection.updates);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tthis.showError(error instanceof Error ? error.message : String(error));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t\tthis.showStatus(\n\t\t\t\t\t\t\t\t`Saved trust decision: ${selection.trusted ? \"trusted\" : \"untrusted\"}. Restart ${APP_NAME} for this to take effect.`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonCancel: () => {\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\treturn { component: selector, focus: selector, dispose: resolve };\n\t\t\t\t});\n\t\t\t}),\n\t).catch((error: Error) => this.showError(error.message));\n};\n\nInteractiveModeBase.prototype.showTreeSelector = async function (\n\tthis: InteractiveModeBase,\n\tinitialSelectedId?: string,\n): Promise<void> {\n\tawait this.ensureDeferredStartupComplete();\n\tconst tree = this.sessionManager.getTree();\n\tconst realLeafId = this.sessionManager.getLeafId();\n\tconst initialFilterMode = this.settingsManager.getTreeFilterMode();\n\n\tif (tree.length === 0) {\n\t\tthis.showStatus(\"No entries in session\");\n\t\treturn;\n\t}\n\n\tthis.showSelector((done) => {\n\t\tconst selector = new TreeSelectorComponent(\n\t\t\ttree,\n\t\t\trealLeafId,\n\t\t\tthis.ui.terminal.rows,\n\t\t\tasync (entryId) => {\n\t\t\t\t// Compare against the live leaf: a response that was streaming while the\n\t\t\t\t// selector was open may have advanced it past the captured value.\n\t\t\t\tif (entryId === this.sessionManager.getLeafId()) {\n\t\t\t\t\tdone();\n\t\t\t\t\tthis.showStatus(\"Already at this point\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Ask about summarization\n\t\t\t\tdone(); // Close selector first\n\n\t\t\t\t// Loop until user makes a complete choice or cancels to tree\n\t\t\t\tlet wantsSummary = false;\n\t\t\t\tlet customInstructions: string | undefined;\n\n\t\t\t\t// Check if we should skip the prompt (user preference to always default to no summary)\n\t\t\t\tif (!this.settingsManager.getBranchSummarySkipPrompt()) {\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tconst summaryChoice = await this.showExtensionSelector(\"Summarize branch?\", [\n\t\t\t\t\t\t\t\"No summary\",\n\t\t\t\t\t\t\t\"Summarize\",\n\t\t\t\t\t\t\t\"Summarize with custom prompt\",\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\tif (summaryChoice === undefined) {\n\t\t\t\t\t\t\t// User pressed escape - re-show tree selector with same selection\n\t\t\t\t\t\t\tthis.showTreeSelector(entryId);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twantsSummary = summaryChoice !== \"No summary\";\n\n\t\t\t\t\t\tif (summaryChoice === \"Summarize with custom prompt\") {\n\t\t\t\t\t\t\tcustomInstructions = await this.showExtensionEditor(\"Custom summarization instructions\");\n\t\t\t\t\t\t\tif (customInstructions === undefined) {\n\t\t\t\t\t\t\t\t// User cancelled - loop back to summary selector\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// User made a complete choice\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.session.isStreaming) {\n\t\t\t\t\tthis.restoreQueuedMessagesToEditor();\n\t\t\t\t\tawait this.session.abort();\n\t\t\t\t}\n\t\t\t\tif (this.session.isCompacting) {\n\t\t\t\t\tthis.showError(\n\t\t\t\t\t\t\"Wait for the current compaction or tree navigation to finish before navigating the session tree.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set up escape handler and loader if summarizing\n\t\t\t\tlet summaryLoader: Loader | undefined;\n\t\t\t\tconst originalOnEscape = this.defaultEditor.onEscape;\n\n\t\t\t\tif (wantsSummary) {\n\t\t\t\t\tthis.defaultEditor.onEscape = () => {\n\t\t\t\t\t\tthis.session.abortBranchSummary();\n\t\t\t\t\t};\n\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\tsummaryLoader = new Loader(\n\t\t\t\t\t\tthis.ui,\n\t\t\t\t\t\t(spinner) => theme.fg(\"accent\", spinner),\n\t\t\t\t\t\t(text) => theme.fg(\"muted\", text),\n\t\t\t\t\t\t`Summarizing branch... (${keyText(\"app.interrupt\")} Cancel)`,\n\t\t\t\t\t);\n\t\t\t\t\tthis.statusContainer.addChild(summaryLoader);\n\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait this.ensureDeferredStartupComplete();\n\t\t\t\t\tconst result = await this.session.navigateTree(entryId, {\n\t\t\t\t\t\tsummarize: wantsSummary,\n\t\t\t\t\t\tcustomInstructions,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (result.aborted) {\n\t\t\t\t\t\t// Summarization aborted - re-show tree selector with same selection\n\t\t\t\t\t\tthis.showStatus(\"Branch summarization cancelled\");\n\t\t\t\t\t\tthis.showTreeSelector(entryId);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (result.cancelled) {\n\t\t\t\t\t\tthis.showStatus(\"Navigation cancelled\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update UI\n\t\t\t\t\tthis.chatContainer.clear();\n\t\t\t\t\tthis.renderInitialMessages();\n\t\t\t\t\tif (result.editorText && !this.editor.getText().trim()) {\n\t\t\t\t\t\tthis.editor.setText(result.editorText);\n\t\t\t\t\t}\n\t\t\t\t\tthis.showStatus(\"Navigated to selected point\");\n\t\t\t\t\tvoid this.flushCompactionQueue({ willRetry: false });\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.showError(error instanceof Error ? error.message : String(error));\n\t\t\t\t} finally {\n\t\t\t\t\tif (summaryLoader) {\n\t\t\t\t\t\tsummaryLoader.stop();\n\t\t\t\t\t\tthis.statusContainer.clear();\n\t\t\t\t\t\tmountIdleStatus(this.statusContainer, this.settingsManager.getClearOnShrink());\n\t\t\t\t\t}\n\t\t\t\t\tthis.defaultEditor.onEscape = originalOnEscape;\n\t\t\t\t}\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tdone();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t\tasync (entryId, label) => {\n\t\t\t\tawait this.sessionManager.appendLabelChange(entryId, label);\n\t\t\t},\n\t\t\tinitialSelectedId,\n\t\t\tinitialFilterMode,\n\t\t);\n\t\tselector.onLabelError = (error) => this.showError(error.message);\n\t\tselector.onLabelUpdate = () => this.ui.requestRender();\n\t\treturn { component: selector, focus: selector };\n\t});\n};\n\nInteractiveModeBase.prototype.showSessionSelector = function (this: InteractiveModeBase): void {\n\tthis.showSelector((done) => {\n\t\tconst selector = new SessionSelectorComponent(\n\t\t\t(onProgress) =>\n\t\t\t\tSessionManager.list(this.sessionManager.getCwd(), this.sessionManager.getSessionStore(), onProgress),\n\t\t\t(onProgress) => SessionManager.listAll(this.sessionManager.getSessionStore(), onProgress),\n\t\t\tasync (selected) => {\n\t\t\t\tselector.dispose();\n\t\t\t\tdone();\n\t\t\t\tconst directory =\n\t\t\t\t\tthis.sessionManager.getSessionStore().descriptor.adapter === \"jsonl\"\n\t\t\t\t\t\t? dirname(selected.path)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tawait this.handleResumeSession(selected.id, undefined, directory);\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tselector.dispose();\n\t\t\t\tdone();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tselector.dispose();\n\t\t\t\tvoid this.shutdown();\n\t\t\t},\n\t\t\t() => this.ui.requestRender(),\n\t\t\t{\n\t\t\t\tdeleteSession:\n\t\t\t\t\tthis.sessionManager.getSessionStore().descriptor.adapter === \"jsonl\"\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: (id) => this.sessionManager.getSessionStore().delete(id),\n\t\t\t\trenameSession: async (selected, nextName) => {\n\t\t\t\t\tconst next = (nextName ?? \"\").trim();\n\t\t\t\t\tif (!next) return;\n\t\t\t\t\tconst store = this.sessionManager.getSessionStore();\n\t\t\t\t\tconst directory = store.descriptor.adapter === \"jsonl\" ? dirname(selected.path) : undefined;\n\t\t\t\t\tif (\n\t\t\t\t\t\tselected.id === this.sessionManager.getSessionId() &&\n\t\t\t\t\t\t(directory === undefined ||\n\t\t\t\t\t\t\tcanonicalizePath(directory) === canonicalizePath(this.sessionManager.getSessionDir()))\n\t\t\t\t\t) {\n\t\t\t\t\t\tawait this.session.setSessionName(next);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst mgr = await this.sessionManager.openSessionById(selected.id, undefined, directory);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mgr.appendSessionInfo(next);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tif (mgr.getSessionStore() !== store) await mgr.getSessionStore().close();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tshowRenameHint: true,\n\t\t\t\tkeybindings: this.keybindings,\n\t\t\t},\n\n\t\t\t{ id: this.sessionManager.getSessionId(), directory: this.sessionManager.getSessionDir() },\n\t\t);\n\t\treturn { component: selector, focus: selector };\n\t});\n};\n\nInteractiveModeBase.prototype.handleResumeSession = async function (\n\tthis: InteractiveModeBase,\n\tsessionId: string,\n\toptions?: Parameters<ExtensionCommandContext[\"switchSession\"]>[1],\n\tsessionDirectory?: string,\n): Promise<{ cancelled: boolean }> {\n\tawait this.ensureDeferredStartupComplete();\n\tInteractiveModeBase.prototype.clearWorkingLoader.call(this);\n\tmountIdleStatus(this.statusContainer, this.settingsManager.getClearOnShrink());\n\ttry {\n\t\tconst result = await this.runtimeHost.switchSession(sessionId, {\n\t\t\twithSession: options?.withSession,\n\t\t\tsessionDirectory,\n\t\t\tprojectTrustContextFactory: (cwd) => this.createProjectTrustContext(cwd),\n\t\t});\n\t\tif (result.cancelled) {\n\t\t\treturn result;\n\t\t}\n\t\tthis.renderCurrentSessionState();\n\t\tif (this.firstRunNoticeVisible) {\n\t\t\tthis.clearFirstRunOnboardingUi();\n\t\t}\n\t\tthis.showStatus(\"Resumed session\");\n\t\tthis.startSessionRecovery(\"resume\");\n\t\treturn result;\n\t} catch (error: unknown) {\n\t\tif (error instanceof MissingSessionCwdError) {\n\t\t\tconst selectedCwd = await this.promptForMissingSessionCwd(error);\n\t\t\tif (!selectedCwd) {\n\t\t\t\tthis.showStatus(\"Resume cancelled\");\n\t\t\t\treturn { cancelled: true };\n\t\t\t}\n\t\t\tconst result = await this.runtimeHost.switchSession(sessionId, {\n\t\t\t\tcwdOverride: selectedCwd,\n\t\t\t\tsessionDirectory,\n\t\t\t\twithSession: options?.withSession,\n\t\t\t\tprojectTrustContextFactory: (cwd) => this.createProjectTrustContext(cwd),\n\t\t\t});\n\t\t\tif (result.cancelled) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthis.renderCurrentSessionState();\n\t\t\tif (this.firstRunNoticeVisible) {\n\t\t\t\tthis.clearFirstRunOnboardingUi();\n\t\t\t}\n\t\t\tthis.showStatus(\"Resumed session in current cwd\");\n\t\t\tthis.startSessionRecovery(\"resume\");\n\t\t\treturn result;\n\t\t}\n\t\treturn this.handleFatalRuntimeError(\"Failed to resume session\", error);\n\t}\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-session-runtime.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-session-runtime.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interactive-session-runtime.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-session-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AA2L/E,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAW7F"}
|
|
@@ -166,6 +166,35 @@ InteractiveModeBase.prototype.renderCurrentSessionState = function () {
|
|
|
166
166
|
this.pendingTools.clear();
|
|
167
167
|
this.renderInitialMessages();
|
|
168
168
|
};
|
|
169
|
+
function recoveryCount(count, singular, plural) {
|
|
170
|
+
return `${count} ${count === 1 ? singular : plural}`;
|
|
171
|
+
}
|
|
172
|
+
export function formatSessionRecoveryStatus(report) {
|
|
173
|
+
const parts = [
|
|
174
|
+
report.replayed > 0
|
|
175
|
+
? `replayed ${recoveryCount(report.replayed, "interrupted delivery", "interrupted deliveries")}`
|
|
176
|
+
: "",
|
|
177
|
+
report.dropped > 0 ? `skipped ${recoveryCount(report.dropped, "stale delivery", "stale deliveries")}` : "",
|
|
178
|
+
report.completions > 0
|
|
179
|
+
? `showed ${recoveryCount(report.completions, "background result", "background results")}`
|
|
180
|
+
: "",
|
|
181
|
+
].filter(Boolean);
|
|
182
|
+
return parts.length > 0 ? `Recovered interrupted work: ${parts.join(", ")}` : undefined;
|
|
183
|
+
}
|
|
184
|
+
InteractiveModeBase.prototype.startSessionRecovery = function (reason) {
|
|
185
|
+
const session = this.session;
|
|
186
|
+
void session.startPendingRecovery(reason).then((report) => {
|
|
187
|
+
if (this.session !== session || this.isShuttingDown)
|
|
188
|
+
return;
|
|
189
|
+
const status = formatSessionRecoveryStatus(report);
|
|
190
|
+
if (status)
|
|
191
|
+
this.showStatus(status);
|
|
192
|
+
}, (error) => {
|
|
193
|
+
if (this.session !== session || this.isShuttingDown)
|
|
194
|
+
return;
|
|
195
|
+
this.showError(`Session recovery failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
196
|
+
});
|
|
197
|
+
};
|
|
169
198
|
InteractiveModeBase.prototype.getRegisteredToolDefinition = function (toolName) {
|
|
170
199
|
return this.session.extensionRunner.resolveToolRenderers(toolName, () => this.session.getToolDefinition(toolName));
|
|
171
200
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-session-runtime.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-session-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { setCapabilityOverrides } from \"@earendil-works/pi-tui\";\nimport type { ToolRenderers } from \"../../core/extensions/types.ts\";\nimport { ensurePngTranscoder } from \"../../utils/image-convert.ts\";\nimport { IsolatedInteractiveRuntime } from \"../interactive-engine/isolated-runtime.js\";\nimport { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { setRegisteredThemes, stopThemeWatcher, Text, theme } from \"./interactive-mode-deps.ts\";\n\nInteractiveModeBase.prototype.bindCurrentSessionExtensions = async function (this: InteractiveModeBase): Promise<void> {\n\tconst uiContext = this.createExtensionUIContext();\n\tconst session = this.session;\n\tthis.runtimeHost?.setProjectTrustContextFactory?.((cwd) => this.createProjectTrustContext(cwd));\n\tawait this.session.bindExtensions({\n\t\tonUIPrompt: (event) => {\n\t\t\tif (!(this.runtimeHost instanceof IsolatedInteractiveRuntime) && this.session === session) {\n\t\t\t\tthis.programStatus.handleUIPrompt(event);\n\t\t\t}\n\t\t},\n\t\tuiContext,\n\t\tmode: \"tui\",\n\t\tisPresentationOnly: this.runtimeHost instanceof IsolatedInteractiveRuntime,\n\t\tcommandContextActions: {\n\t\t\twaitForIdle: () => this.session.agent.waitForIdle(),\n\t\t\tnewSession: async (options) => {\n\t\t\t\tInteractiveModeBase.prototype.clearWorkingLoader.call(this);\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await this.runtimeHost.newSession(options);\n\t\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\t\tthis.renderCurrentSessionState();\n\t\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\treturn this.handleFatalRuntimeError(\"Failed to create session\", error);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfork: async (entryId, options) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await this.runtimeHost.fork(entryId, options);\n\t\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\t\tthis.renderCurrentSessionState();\n\t\t\t\t\t\tthis.editor.setText(result.selectedText ?? \"\");\n\t\t\t\t\t\tthis.showStatus(\"Forked to new session\");\n\t\t\t\t\t}\n\t\t\t\t\treturn { cancelled: result.cancelled };\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\treturn this.handleFatalRuntimeError(\"Failed to fork session\", error);\n\t\t\t\t}\n\t\t\t},\n\t\t\tnavigateTree: async (targetId, options) => {\n\t\t\t\tconst result = await this.session.navigateTree(targetId, {\n\t\t\t\t\tsummarize: options?.summarize,\n\t\t\t\t\tcustomInstructions: options?.customInstructions,\n\t\t\t\t\treplaceInstructions: options?.replaceInstructions,\n\t\t\t\t\tlabel: options?.label,\n\t\t\t\t});\n\t\t\t\tif (result.cancelled) {\n\t\t\t\t\treturn { cancelled: true };\n\t\t\t\t}\n\n\t\t\t\tthis.chatContainer.clear();\n\t\t\t\tthis.renderInitialMessages();\n\t\t\t\tif (result.editorText && !this.editor.getText().trim()) {\n\t\t\t\t\tthis.editor.setText(result.editorText);\n\t\t\t\t}\n\t\t\t\tthis.showStatus(\"Navigated to selected point\");\n\t\t\t\tvoid this.flushCompactionQueue({ willRetry: false });\n\t\t\t\treturn { cancelled: false };\n\t\t\t},\n\t\t\tswitchSession: async (sessionPath, options) => {\n\t\t\t\treturn this.handleResumeSession(sessionPath, options);\n\t\t\t},\n\t\t\treload: async () => {\n\t\t\t\tawait this.handleReloadCommand();\n\t\t\t},\n\t\t},\n\t\tshutdownHandler: () => {\n\t\t\tthis.shutdownRequested = true;\n\t\t\tif (!this.session.isStreaming) {\n\t\t\t\tvoid this.shutdown();\n\t\t\t}\n\t\t},\n\t\tonError: (error) => {\n\t\t\tthis.showExtensionError(error.extensionPath, error.error, error.stack);\n\t\t},\n\t});\n\n\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\tthis.setupAutocompleteProvider();\n\n\tconst extensionRunner = this.session.extensionRunner;\n\tthis.setupExtensionShortcuts(extensionRunner);\n\tif (!this.deferredStartupPending && !this.initialStartupBinding) {\n\t\tthis.showLoadedResources({ force: true, showDiagnosticsWhenQuiet: true });\n\t\tthis.showStartupNoticesIfNeeded();\n\t}\n};\n\nInteractiveModeBase.prototype.applyRuntimeSettings = function (this: InteractiveModeBase): void {\n\tsetCapabilityOverrides(this.settingsManager.getTerminalCapabilityOverrides());\n\tensurePngTranscoder(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.ui.requestRender();\n\t});\n\tthis.setFullscreenCopyOnSelect(this.settingsManager.getFullscreenCopyOnSelect());\n\tthis.setFullscreenWheelScrollLines(this.settingsManager.getFullscreenWheelScrollLines());\n\tthis.transcriptScrollView?.setScrollbar(this.settingsManager.getFullscreenScrollbar());\n\tthis.footer.setSession(this.session);\n\tthis.usageMeter.setSession(this.session);\n\tthis.usageMeter.setAutoCompactEnabled(this.session.autoCompactionEnabled);\n\tthis.footerDataProvider.setCwd(this.sessionManager.getCwd());\n\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\tthis.outputPad = this.settingsManager.getOutputPad();\n\tthis.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());\n\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\tthis.defaultEditor.setPaddingX(editorPaddingX);\n\tthis.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);\n\tif (this.editor !== this.defaultEditor) {\n\t\tthis.editor.setPaddingX?.(editorPaddingX);\n\t\tthis.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);\n\t}\n};\n\nInteractiveModeBase.prototype.rebindCurrentSession = async function (this: InteractiveModeBase): Promise<void> {\n\t// The session this rebind was started for. Binding extensions is async, and a\n\t// session replacement (startup switch, /new, resume) can install a different\n\t// session and start its own rebind while this one is still awaiting. Without\n\t// the guard below both rebinds call subscribeToAgent() and every agent event\n\t// is rendered twice.\n\tconst session = this.session;\n\n\tthis.unsubscribe?.();\n\tthis.unsubscribe = undefined;\n\tthis.programStatus.reset();\n\tthis.applyRuntimeSettings();\n\tawait this.bindCurrentSessionExtensions();\n\n\tif (this.session !== session) {\n\t\t// A newer rebind owns the current session; it subscribes and finishes the\n\t\t// remaining runtime updates itself.\n\t\treturn;\n\t}\n\n\tthis.subscribeToAgent();\n\tawait this.updateAvailableProviderCount();\n\tthis.updateEditorBorderColor();\n\tthis.updateTerminalTitle();\n};\n\nInteractiveModeBase.prototype.handleFatalRuntimeError = async function (\n\tthis: InteractiveModeBase,\n\tprefix: string,\n\terror: unknown,\n): Promise<never> {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tthis.showError(`${prefix}: ${message}`);\n\tconst extensionHint = this.getCrashExtensionHint(error);\n\tif (extensionHint) {\n\t\tthis.chatContainer.addChild(new Text(theme.fg(\"warning\", extensionHint), this.outputPad, 0));\n\t}\n\tstopThemeWatcher();\n\t// A fatal exit keeps the transcript visible: the error the user just saw\n\t// must remain on screen after the process dies, whatever the setting says.\n\tthis.stop(\"transcript\");\n\tprocess.exit(1);\n};\n\nInteractiveModeBase.prototype.renderCurrentSessionState = function (this: InteractiveModeBase): void {\n\tthis.managedToolStatusGeneration++;\n\tthis.managedToolStatusStarted = false;\n\tthis.lastStatusSpacer = undefined;\n\tthis.lastStatusText = undefined;\n\tthis.chatContainer.clear();\n\tthis.pendingMessagesContainer.clear();\n\tthis.compactionQueuedMessages = [];\n\tthis.compactionSendFailed = false;\n\tthis.streamingComponent = undefined;\n\tthis.streamingMessage = undefined;\n\tthis.pendingTools.clear();\n\tthis.renderInitialMessages();\n};\n\nInteractiveModeBase.prototype.getRegisteredToolDefinition = function (\n\tthis: InteractiveModeBase,\n\ttoolName: string,\n): ToolRenderers | undefined {\n\treturn this.session.extensionRunner.resolveToolRenderers(toolName, () => this.session.getToolDefinition(toolName));\n};\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-session-runtime.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-session-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { setCapabilityOverrides } from \"@earendil-works/pi-tui\";\nimport type { SessionRecoveryReport } from \"../../core/agent-session-types.js\";\nimport type { SessionRecoveryReason, ToolRenderers } from \"../../core/extensions/types.ts\";\nimport { ensurePngTranscoder } from \"../../utils/image-convert.ts\";\nimport { IsolatedInteractiveRuntime } from \"../interactive-engine/isolated-runtime.js\";\nimport { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { setRegisteredThemes, stopThemeWatcher, Text, theme } from \"./interactive-mode-deps.ts\";\n\nInteractiveModeBase.prototype.bindCurrentSessionExtensions = async function (this: InteractiveModeBase): Promise<void> {\n\tconst uiContext = this.createExtensionUIContext();\n\tconst session = this.session;\n\tthis.runtimeHost?.setProjectTrustContextFactory?.((cwd) => this.createProjectTrustContext(cwd));\n\tawait this.session.bindExtensions({\n\t\tonUIPrompt: (event) => {\n\t\t\tif (!(this.runtimeHost instanceof IsolatedInteractiveRuntime) && this.session === session) {\n\t\t\t\tthis.programStatus.handleUIPrompt(event);\n\t\t\t}\n\t\t},\n\t\tuiContext,\n\t\tmode: \"tui\",\n\t\tisPresentationOnly: this.runtimeHost instanceof IsolatedInteractiveRuntime,\n\t\tcommandContextActions: {\n\t\t\twaitForIdle: () => this.session.agent.waitForIdle(),\n\t\t\tnewSession: async (options) => {\n\t\t\t\tInteractiveModeBase.prototype.clearWorkingLoader.call(this);\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await this.runtimeHost.newSession(options);\n\t\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\t\tthis.renderCurrentSessionState();\n\t\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\treturn this.handleFatalRuntimeError(\"Failed to create session\", error);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfork: async (entryId, options) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await this.runtimeHost.fork(entryId, options);\n\t\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\t\tthis.renderCurrentSessionState();\n\t\t\t\t\t\tthis.editor.setText(result.selectedText ?? \"\");\n\t\t\t\t\t\tthis.showStatus(\"Forked to new session\");\n\t\t\t\t\t}\n\t\t\t\t\treturn { cancelled: result.cancelled };\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\treturn this.handleFatalRuntimeError(\"Failed to fork session\", error);\n\t\t\t\t}\n\t\t\t},\n\t\t\tnavigateTree: async (targetId, options) => {\n\t\t\t\tconst result = await this.session.navigateTree(targetId, {\n\t\t\t\t\tsummarize: options?.summarize,\n\t\t\t\t\tcustomInstructions: options?.customInstructions,\n\t\t\t\t\treplaceInstructions: options?.replaceInstructions,\n\t\t\t\t\tlabel: options?.label,\n\t\t\t\t});\n\t\t\t\tif (result.cancelled) {\n\t\t\t\t\treturn { cancelled: true };\n\t\t\t\t}\n\n\t\t\t\tthis.chatContainer.clear();\n\t\t\t\tthis.renderInitialMessages();\n\t\t\t\tif (result.editorText && !this.editor.getText().trim()) {\n\t\t\t\t\tthis.editor.setText(result.editorText);\n\t\t\t\t}\n\t\t\t\tthis.showStatus(\"Navigated to selected point\");\n\t\t\t\tvoid this.flushCompactionQueue({ willRetry: false });\n\t\t\t\treturn { cancelled: false };\n\t\t\t},\n\t\t\tswitchSession: async (sessionPath, options) => {\n\t\t\t\treturn this.handleResumeSession(sessionPath, options);\n\t\t\t},\n\t\t\treload: async () => {\n\t\t\t\tawait this.handleReloadCommand();\n\t\t\t},\n\t\t},\n\t\tshutdownHandler: () => {\n\t\t\tthis.shutdownRequested = true;\n\t\t\tif (!this.session.isStreaming) {\n\t\t\t\tvoid this.shutdown();\n\t\t\t}\n\t\t},\n\t\tonError: (error) => {\n\t\t\tthis.showExtensionError(error.extensionPath, error.error, error.stack);\n\t\t},\n\t});\n\n\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\tthis.setupAutocompleteProvider();\n\n\tconst extensionRunner = this.session.extensionRunner;\n\tthis.setupExtensionShortcuts(extensionRunner);\n\tif (!this.deferredStartupPending && !this.initialStartupBinding) {\n\t\tthis.showLoadedResources({ force: true, showDiagnosticsWhenQuiet: true });\n\t\tthis.showStartupNoticesIfNeeded();\n\t}\n};\n\nInteractiveModeBase.prototype.applyRuntimeSettings = function (this: InteractiveModeBase): void {\n\tsetCapabilityOverrides(this.settingsManager.getTerminalCapabilityOverrides());\n\tensurePngTranscoder(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.ui.requestRender();\n\t});\n\tthis.setFullscreenCopyOnSelect(this.settingsManager.getFullscreenCopyOnSelect());\n\tthis.setFullscreenWheelScrollLines(this.settingsManager.getFullscreenWheelScrollLines());\n\tthis.transcriptScrollView?.setScrollbar(this.settingsManager.getFullscreenScrollbar());\n\tthis.footer.setSession(this.session);\n\tthis.usageMeter.setSession(this.session);\n\tthis.usageMeter.setAutoCompactEnabled(this.session.autoCompactionEnabled);\n\tthis.footerDataProvider.setCwd(this.sessionManager.getCwd());\n\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\tthis.outputPad = this.settingsManager.getOutputPad();\n\tthis.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());\n\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\tthis.defaultEditor.setPaddingX(editorPaddingX);\n\tthis.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);\n\tif (this.editor !== this.defaultEditor) {\n\t\tthis.editor.setPaddingX?.(editorPaddingX);\n\t\tthis.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);\n\t}\n};\n\nInteractiveModeBase.prototype.rebindCurrentSession = async function (this: InteractiveModeBase): Promise<void> {\n\t// The session this rebind was started for. Binding extensions is async, and a\n\t// session replacement (startup switch, /new, resume) can install a different\n\t// session and start its own rebind while this one is still awaiting. Without\n\t// the guard below both rebinds call subscribeToAgent() and every agent event\n\t// is rendered twice.\n\tconst session = this.session;\n\n\tthis.unsubscribe?.();\n\tthis.unsubscribe = undefined;\n\tthis.programStatus.reset();\n\tthis.applyRuntimeSettings();\n\tawait this.bindCurrentSessionExtensions();\n\n\tif (this.session !== session) {\n\t\t// A newer rebind owns the current session; it subscribes and finishes the\n\t\t// remaining runtime updates itself.\n\t\treturn;\n\t}\n\n\tthis.subscribeToAgent();\n\tawait this.updateAvailableProviderCount();\n\tthis.updateEditorBorderColor();\n\tthis.updateTerminalTitle();\n};\n\nInteractiveModeBase.prototype.handleFatalRuntimeError = async function (\n\tthis: InteractiveModeBase,\n\tprefix: string,\n\terror: unknown,\n): Promise<never> {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tthis.showError(`${prefix}: ${message}`);\n\tconst extensionHint = this.getCrashExtensionHint(error);\n\tif (extensionHint) {\n\t\tthis.chatContainer.addChild(new Text(theme.fg(\"warning\", extensionHint), this.outputPad, 0));\n\t}\n\tstopThemeWatcher();\n\t// A fatal exit keeps the transcript visible: the error the user just saw\n\t// must remain on screen after the process dies, whatever the setting says.\n\tthis.stop(\"transcript\");\n\tprocess.exit(1);\n};\n\nInteractiveModeBase.prototype.renderCurrentSessionState = function (this: InteractiveModeBase): void {\n\tthis.managedToolStatusGeneration++;\n\tthis.managedToolStatusStarted = false;\n\tthis.lastStatusSpacer = undefined;\n\tthis.lastStatusText = undefined;\n\tthis.chatContainer.clear();\n\tthis.pendingMessagesContainer.clear();\n\tthis.compactionQueuedMessages = [];\n\tthis.compactionSendFailed = false;\n\tthis.streamingComponent = undefined;\n\tthis.streamingMessage = undefined;\n\tthis.pendingTools.clear();\n\tthis.renderInitialMessages();\n};\n\nfunction recoveryCount(count: number, singular: string, plural: string): string {\n\treturn `${count} ${count === 1 ? singular : plural}`;\n}\n\nexport function formatSessionRecoveryStatus(report: SessionRecoveryReport): string | undefined {\n\tconst parts = [\n\t\treport.replayed > 0\n\t\t\t? `replayed ${recoveryCount(report.replayed, \"interrupted delivery\", \"interrupted deliveries\")}`\n\t\t\t: \"\",\n\t\treport.dropped > 0 ? `skipped ${recoveryCount(report.dropped, \"stale delivery\", \"stale deliveries\")}` : \"\",\n\t\treport.completions > 0\n\t\t\t? `showed ${recoveryCount(report.completions, \"background result\", \"background results\")}`\n\t\t\t: \"\",\n\t].filter(Boolean);\n\treturn parts.length > 0 ? `Recovered interrupted work: ${parts.join(\", \")}` : undefined;\n}\n\nInteractiveModeBase.prototype.startSessionRecovery = function (\n\tthis: InteractiveModeBase,\n\treason: SessionRecoveryReason,\n): void {\n\tconst session = this.session;\n\tvoid session.startPendingRecovery(reason).then(\n\t\t(report) => {\n\t\t\tif (this.session !== session || this.isShuttingDown) return;\n\t\t\tconst status = formatSessionRecoveryStatus(report);\n\t\t\tif (status) this.showStatus(status);\n\t\t},\n\t\t(error: unknown) => {\n\t\t\tif (this.session !== session || this.isShuttingDown) return;\n\t\t\tthis.showError(`Session recovery failed: ${error instanceof Error ? error.message : String(error)}`);\n\t\t},\n\t);\n};\n\nInteractiveModeBase.prototype.getRegisteredToolDefinition = function (\n\tthis: InteractiveModeBase,\n\ttoolName: string,\n): ToolRenderers | undefined {\n\treturn this.session.extensionRunner.resolveToolRenderers(toolName, () => this.session.getToolDefinition(toolName));\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-startup.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-startup.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,mBAAmB,EAAoB,MAAM,4BAA4B,CAAC;AA4CnF,eAAO,MAAM,8BAA8B,QAAO,OAAkC,CAAC;AA4HrF,wBAAgB,+CAA+C,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"interactive-startup.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-startup.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,mBAAmB,EAAoB,MAAM,4BAA4B,CAAC;AA4CnF,eAAO,MAAM,8BAA8B,QAAO,OAAkC,CAAC;AA4HrF,wBAAgB,+CAA+C,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAWrG"}
|
|
@@ -122,6 +122,8 @@ InteractiveModeBase.prototype.showManagedToolStatus = function (status) {
|
|
|
122
122
|
};
|
|
123
123
|
export function attachInteractiveEngineResourceExtensionRefresh(mode) {
|
|
124
124
|
return onInteractiveEngineResourceExtensionsChanged(mode.runtimeHost, () => {
|
|
125
|
+
mode.chatContainer.invalidate();
|
|
126
|
+
mode.ui.requestRender();
|
|
125
127
|
if (mode.resourceDisclosureContainer.children.length === 0)
|
|
126
128
|
return;
|
|
127
129
|
mode.showLoadedResources({
|
|
@@ -129,7 +131,6 @@ export function attachInteractiveEngineResourceExtensionRefresh(mode) {
|
|
|
129
131
|
showDiagnosticsWhenQuiet: true,
|
|
130
132
|
targetContainer: mode.resourceDisclosureContainer,
|
|
131
133
|
});
|
|
132
|
-
mode.ui.requestRender();
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
136
|
InteractiveModeBase.prototype.init = async function () {
|
|
@@ -250,6 +251,8 @@ InteractiveModeBase.prototype.init = async function () {
|
|
|
250
251
|
this.attachStartupNoticesContainer();
|
|
251
252
|
// Render initial messages AFTER the initial session binding is in place.
|
|
252
253
|
this.renderInitialMessages();
|
|
254
|
+
if (!this.deferredStartupPending)
|
|
255
|
+
this.startSessionRecovery("startup");
|
|
253
256
|
// Set up theme file watcher
|
|
254
257
|
onThemeChange(() => {
|
|
255
258
|
this.ui.invalidate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-startup.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-startup.ts"],"names":[],"mappings":"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","sourcesContent":["import { ScrollView, VStack } from \"@earendil-works/pi-tui\";\nimport { markLifecycleTiming } from \"../../core/lifecycle-timings.ts\";\nimport { isOfflineModeEnabled } from \"../../core/package-manager-env.ts\";\nimport { createChildProcessEnvironment } from \"../../utils/child-process.ts\";\nimport { ensurePngTranscoder } from \"../../utils/image-convert.ts\";\nimport { setMarkitDiagnosticSink } from \"../../utils/markit.js\";\nimport type { ToolStatus } from \"../../utils/tools-manager.ts\";\nimport { renderDiagnosticStatus } from \"../interactive-engine/engine-diagnostic-view.js\";\nimport {\n\tonInteractiveEngineRemoteCommandsChanged,\n\tonInteractiveEngineResourceExtensionsChanged,\n\tonInteractiveEngineSessionStatsChanged,\n\twaitForInteractiveEngineBound,\n} from \"../interactive-engine/extension-ui-bridge.ts\";\nimport {\n\tatomicWordmark,\n\trenderAtomicAssemblyBanner,\n\trenderStartupManifesto,\n\tsupportsAtomicBanner,\n} from \"./components/atomic-banner.ts\";\nimport { StartupIdentityComponent } from \"./components/startup-identity.ts\";\nimport { ThemedText } from \"./components/themed-text.js\";\nimport { bindInitialEagerSession } from \"./interactive-initial-session-binding.ts\";\nimport { InteractiveModeBase, seedStartupInput } from \"./interactive-mode-base.ts\";\nimport {\n\tAPP_NAME,\n\tAPP_TITLE,\n\ttype Container,\n\tcheckForNewPiVersion,\n\tcomposeStartupIdentity,\n\tDefaultPackageManager,\n\tDynamicBorder,\n\tENV_OFFLINE,\n\tensureTool,\n\tgetAgentDir,\n\tgetChangelogPath,\n\tgetCwdRelativePath,\n\tgetEntriesForVersion,\n\tgetEnvValue,\n\tgetMarkdownTheme,\n\tgetNewEntries,\n\tgetPiUserAgent,\n\tisInstallTelemetryEnabled,\n\tMarkdown,\n\ttype MarkdownTheme,\n\tnormalizeChangelogLinks,\n\tonThemeChange,\n\tos,\n\tparseChangelog,\n\tpath,\n\trecordTimeSinceReset,\n\tSpacer,\n\tspawn,\n\tText,\n\ttheme,\n\tVERSION,\n\tVERSION_ADOPTION_ENDPOINT,\n\tvisibleWidth,\n} from \"./interactive-mode-deps.ts\";\nimport {\n\trefreshCatalogsAfterTuiStartup,\n\tupdateProviderCountFromSnapshot,\n} from \"./interactive-model-catalog-startup.ts\";\nimport { ONBOARDING_COPY } from \"./interactive-onboarding.ts\";\nimport { holdTuiForStartupTrust } from \"./interactive-startup-trust.ts\";\nimport { restoreTerminalTitleAfterPackageCheck } from \"./interactive-terminal-title.ts\";\n\nexport const shouldRefreshCatalogsOnStartup = (): boolean => !isOfflineModeEnabled();\n\nfunction prepareStartupNotices(mode: InteractiveModeBase): void {\n\tif (mode.startupNoticesPrepared) return;\n\tmode.startupNoticesPrepared = true;\n\tmode.hadLastChangelogVersionAtStartup = Boolean(mode.settingsManager.getLastChangelogVersion?.());\n\tif (mode.changelogMarkdown === undefined) {\n\t\tmode.changelogMarkdown = mode.getChangelogForDisplay?.();\n\t}\n\tmode.initializeFirstRunOnboardingMarkers?.();\n\tif (!mode.firstRunNoticeVisible) {\n\t\tmode.firstRunNoticeVisible = mode.isFirstRunOnboardingEligible?.() ?? false;\n\t}\n}\n\n/**\n * Show non-fatal model-catalog warnings — today, a derived `-fast` variant suppressed because\n * something already owns that exact model ID.\n *\n * Called unconditionally at startup and again after deferred extension loading, because an extension\n * provider can introduce a collision that did not exist at startup. The last reported text is kept so\n * the second read only speaks when the diagnostic set actually changed.\n */\nInteractiveModeBase.prototype.reportModelCatalogWarning = function (\n\tthis: InteractiveModeBase,\n\ttargetContainer: Container = this.chatContainer,\n): void {\n\tconst warning = this.session.modelRuntime.getWarning?.();\n\tif (!warning || warning === this.reportedModelCatalogWarning) {\n\t\treturn;\n\t}\n\tthis.reportedModelCatalogWarning = warning;\n\tthis.showWarning(warning, targetContainer);\n};\n\nInteractiveModeBase.prototype.showStartupNoticesIfNeeded = function (\n\tthis: InteractiveModeBase,\n\ttargetContainer: Container = this.chatContainer,\n): void {\n\tif (this.startupNoticesShown) {\n\t\treturn;\n\t}\n\tprepareStartupNotices(this);\n\tthis.startupNoticesShown = true;\n\n\tconst changelogMarkdown = this.changelogMarkdown;\n\tif (!changelogMarkdown && !this.firstRunNoticeVisible) {\n\t\treturn;\n\t}\n\n\tif (changelogMarkdown) {\n\t\tif (targetContainer.children.length > 0) {\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t\ttargetContainer.addChild(new DynamicBorder());\n\t\tif (this.settingsManager.getCollapseChangelog()) {\n\t\t\tconst versionMatch = changelogMarkdown.match(\n\t\t\t\t/##\\s+\\[?((?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:alpha\\.)?(?:0|[1-9]\\d*))?)\\]?/,\n\t\t\t);\n\t\t\tconst latestVersion = versionMatch ? versionMatch[1] : this.version;\n\t\t\tconst condensedText = `Updated to v${latestVersion}. Use ${theme.bold(\"/changelog\")} to view full changelog.`;\n\t\t\ttargetContainer.addChild(new Text(condensedText, 1, 0));\n\t\t} else {\n\t\t\ttargetContainer.addChild(new ThemedText(() => theme.bold(theme.fg(\"accent\", \"What's New\")), 1, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t\ttargetContainer.addChild(new Markdown(changelogMarkdown.trim(), 1, 0, this.getMarkdownThemeWithSettings()));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t\ttargetContainer.addChild(new DynamicBorder());\n\t}\n\n\tif (this.firstRunNoticeVisible) {\n\t\tthis.firstRunOnboardingNoticeComponents = [];\n\t\tif (targetContainer.children.length > 0) {\n\t\t\tthis.firstRunOnboardingNoticeComponents.push(new Spacer(1));\n\t\t}\n\t\tthis.firstRunOnboardingNoticeComponents.push(\n\t\t\tnew DynamicBorder(),\n\t\t\tnew Text(ONBOARDING_COPY, 1, 0),\n\t\t\tnew DynamicBorder(),\n\t\t\tnew Spacer(1),\n\t\t);\n\t\tfor (const component of this.firstRunOnboardingNoticeComponents) {\n\t\t\ttargetContainer.addChild(component);\n\t\t}\n\t\t// Mark completion only after queueing the notice in the chat canvas so\n\t\t// launches that skip rendering retry the first-run notice next time.\n\t\tthis.settingsManager.setOnboardedVersion(this.version);\n\t}\n\n\tthis.ui.requestRender();\n};\n\n/** Bring fd and rg to readiness, reporting progress into the transcript. */\nInteractiveModeBase.prototype.ensureManagedToolsReady = function (this: InteractiveModeBase): Promise<void> {\n\tconst statusGeneration = ++this.managedToolStatusGeneration;\n\tconst reportStatus = (status: ToolStatus): void => {\n\t\tif (this.managedToolStatusGeneration === statusGeneration) this.showManagedToolStatus(status);\n\t};\n\treturn Promise.all([ensureTool(\"fd\", reportStatus), ensureTool(\"rg\", reportStatus)])\n\t\t.then(([fdPath]) => {\n\t\t\tthis.fdPath = fdPath;\n\t\t\tthis.setupAutocompleteProvider();\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treportStatus({ type: \"warning\", message: `Tool readiness check failed: ${message}` });\n\t\t});\n};\n\n/** Show a managed-tool status update in the chat, never on the console. */\nInteractiveModeBase.prototype.showManagedToolStatus = function (this: InteractiveModeBase, status: ToolStatus): void {\n\tif (!this.managedToolStatusStarted) {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.managedToolStatusStarted = true;\n\t}\n\tconst message = status.type === \"warning\" ? `Warning: ${status.message}` : status.message;\n\tconst color = status.type === \"warning\" ? \"warning\" : \"dim\";\n\tthis.chatContainer.addChild(new ThemedText(() => theme.fg(color, message), 1, 0));\n\tthis.lastStatusSpacer = undefined;\n\tthis.lastStatusText = undefined;\n\tthis.ui.requestRender();\n};\n\nexport function attachInteractiveEngineResourceExtensionRefresh(mode: InteractiveModeBase): () => void {\n\treturn onInteractiveEngineResourceExtensionsChanged(mode.runtimeHost, () => {\n\t\tif (mode.resourceDisclosureContainer.children.length === 0) return;\n\t\tmode.showLoadedResources({\n\t\t\tforce: true,\n\t\t\tshowDiagnosticsWhenQuiet: true,\n\t\t\ttargetContainer: mode.resourceDisclosureContainer,\n\t\t});\n\t\tmode.ui.requestRender();\n\t});\n}\n\nInteractiveModeBase.prototype.init = async function (this: InteractiveModeBase): Promise<void> {\n\tif (this.isInitialized) return;\n\n\tif (this.options.holdTuiForStartupTrust) await holdTuiForStartupTrust(this);\n\tthis.registerSignalHandlers();\n\n\t// Keep the transcript in its own viewport and reserve the bottom chrome in a\n\t// fixed dock for the fullscreen renderer. The same components also feed the\n\t// internal main-screen fallback used for guarded terminal paths.\n\tthis.renderWidgets(); // Initialize with default spacer\n\tthis.transcriptScrollView = new ScrollView(this.documentContainer, {\n\t\tfollow: \"end\",\n\t\tprimary: true,\n\t\toverscroll: \"chain\",\n\t\tscrollbar: this.settingsManager.getFullscreenScrollbar(),\n\t\tscrollbarThumbStyle: (text) => theme.bg(\"scrollbarThumb\", text),\n\t});\n\tconst dock = new VStack([\n\t\t{ component: this.pendingMessagesContainer, shrink: 1, minSize: 0 },\n\t\t{ component: this.statusContainer, shrink: 1, minSize: 0 },\n\t\t{ component: this.widgetContainerAbove, shrink: 1, minSize: 0 },\n\t\t{ component: this.usageMeter, shrink: 1, minSize: 1 },\n\t\t{ component: this.editorContainer, shrink: 1, minSize: 3 },\n\t\t{ component: this.footerContainer, shrink: 1, minSize: 1 },\n\t\t// Keep widgetContainerBelow after the footer for #1109's stable dock order.\n\t\t{ component: this.widgetContainerBelow, shrink: 1, minSize: 0 },\n\t]);\n\tthis.fullscreenLayoutRoot = new VStack([\n\t\t{ component: this.transcriptScrollView, basis: 0, grow: 1, shrink: 1, minSize: 1 },\n\t\t{ component: dock, basis: \"auto\", grow: 0, shrink: 1, minSize: 1 },\n\t]);\n\tthis.mountInteractiveTui(this.ui, [\n\t\tthis.documentContainer,\n\t\tthis.pendingMessagesContainer,\n\t\tthis.statusContainer,\n\t\tthis.widgetContainerAbove,\n\t\tthis.usageMeter,\n\t\tthis.editorContainer,\n\t\tthis.footerContainer,\n\t\tthis.widgetContainerBelow,\n\t]);\n\tthis.ui.setFocus(this.extensionSelector ?? this.extensionInput ?? this.extensionEditor ?? this.editor);\n\n\tthis.setupKeyHandlers();\n\tthis.setupEditorSubmitHandler();\n\t// Rebuild autocomplete whenever the engine child's command catalog arrives or\n\t// changes (initial bind, engine restart, reload, new/resume/fork). Subscribed\n\t// before bind so the first async catalog fetch can never be missed. No-op when\n\t// the host is not isolated.\n\tonInteractiveEngineRemoteCommandsChanged(this.runtimeHost, () => {\n\t\tthis.setupAutocompleteProvider();\n\t});\n\tattachInteractiveEngineResourceExtensionRefresh(this);\n\t// Engine stats can land after the last event of a run; repaint so the idle footer shows them.\n\tonInteractiveEngineSessionStatsChanged(this.runtimeHost, () => {\n\t\tthis.ui.requestRender();\n\t});\n\n\tseedStartupInput(\n\t\tthis.pendingUserInputs,\n\t\tthis.defaultEditor,\n\t\tthis.options.startupInputCapture?.consume(),\n\t\tthis.startupReplayInputs,\n\t\t(text) => {\n\t\t\tthis.startupDraftText = text;\n\t\t},\n\t\t(text) => {\n\t\t\tthis.startupReplayActiveInput = text;\n\t\t},\n\t);\n\n\t// Start and paint the host-owned TUI before waiting for the isolated engine.\n\t// The editor remains local and responsive; session binding and provider work\n\t// still stay behind the engine-bound gate below.\n\tmarkLifecycleTiming(\"tui-start\");\n\tthis.ui.start();\n\tthis.programStatus.report();\n\tensurePngTranscoder(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.ui.requestRender();\n\t});\n\tthis.disposeMarkitDiagnosticSink = setMarkitDiagnosticSink((message) => renderDiagnosticStatus(message, this));\n\tthis.footerDataProvider.onBranchChange(() => {\n\t\tthis.ui.requestRender();\n\t});\n\n\tawait this.themeController.applyFromSettings();\n\n\t// Add the quiet startup identity unless silenced.\n\tif (this.shouldShowStartupHeader()) {\n\t\tthis.builtInHeader = new StartupIdentityComponent(this.ui, (width, state) =>\n\t\t\tthis.getStartupIdentityText(width, state.gap, state.manifestoPhase),\n\t\t);\n\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t} else {\n\t\t// Minimal header when silenced\n\t\tthis.builtInHeader = new Text(\"\", 0, 0);\n\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t}\n\tmarkLifecycleTiming(\"header-mounted\");\n\tthis.ui.requestRender();\n\t// This legacy mark now means the first requested identity frame. The settled\n\t// animation frame remains the external benchmark's startup-complete mark.\n\trecordTimeSinceReset(\"time-to-first-frame\");\n\n\tawait waitForInteractiveEngineBound(this.runtimeHost);\n\tif (this.isShuttingDown) return;\n\tthis.isInitialized = true;\n\t// The isolated engine may have replaced the preliminary model/provider view.\n\tthis.ui.requestRender();\n\n\t// fd/rg readiness runs after first paint so slow downloads never make\n\t// startup appear frozen. Progress reports land in the transcript: a console\n\t// write here lands in the alternate screen and corrupts the frame.\n\tvoid this.ensureManagedToolsReady();\n\n\t// When startup resources are deferred, keep the already-painted editor responsive.\n\t// Extension UI bindings are installed at the deferred reload boundary, not here,\n\t// so no post-paint resource work can block visible typing.\n\tif (this.deferredStartupPending) {\n\t\tthis.applyRuntimeSettings();\n\t\tthis.subscribeToAgent();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.updateTerminalTitle();\n\t} else {\n\t\tawait bindInitialEagerSession(this);\n\t}\n\n\tthis.attachStartupNoticesContainer();\n\t// Render initial messages AFTER the initial session binding is in place.\n\tthis.renderInitialMessages();\n\t// Set up theme file watcher\n\tonThemeChange(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.ui.requestRender();\n\t});\n\n\tupdateProviderCountFromSnapshot(this);\n};\n\nInteractiveModeBase.prototype.updateTerminalTitle = function (this: InteractiveModeBase): void {\n\tconst cwdBasename = path.basename(this.sessionManager.getCwd());\n\tconst sessionName = this.sessionManager.getSessionName();\n\tif (sessionName) {\n\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${sessionName} - ${cwdBasename}`);\n\t} else {\n\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${cwdBasename}`);\n\t}\n};\n\nInteractiveModeBase.prototype.run = async function (this: InteractiveModeBase): Promise<void> {\n\tawait this.init();\n\tif (this.isShuttingDown) return;\n\n\tif (shouldRefreshCatalogsOnStartup()) void refreshCatalogsAfterTuiStartup(this);\n\n\tsetTimeout(() => {\n\t\tconst startupNoticesContainer = this.startupNoticesContainer;\n\t\tcheckForNewPiVersion(this.version).then((newVersion) => {\n\t\t\tif (newVersion) this.showNewVersionNotification(newVersion, startupNoticesContainer);\n\t\t});\n\t\trestoreTerminalTitleAfterPackageCheck(this.checkForPackageUpdates(), {\n\t\t\tinitialized: () => this.isInitialized,\n\t\t\trestore: () => this.updateTerminalTitle(),\n\t\t}).then((updates) => {\n\t\t\tif (updates.length > 0) this.showPackageUpdateNotification(updates, startupNoticesContainer);\n\t\t});\n\t\tthis.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) this.showWarning(warning, startupNoticesContainer);\n\t\t});\n\t\t// Deferred startup releases chat output immediately after rendering the\n\t\t// disclosure, so wait only while that startup work remains in flight.\n\t\tif (!this.deferredStartupPending && !this.deferredStartupPromise) {\n\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, startupNoticesContainer);\n\t\t}\n\t}, 500);\n\n\t// Show startup warnings\n\tconst { migratedProviders, startupDiagnostics, initialMessage, initialImages, initialMessages } = this.options;\n\n\tfor (const diagnostic of startupDiagnostics ?? []) {\n\t\tif (diagnostic.type === \"error\") this.showError(diagnostic.message);\n\t\telse if (diagnostic.type === \"warning\") this.showWarning(diagnostic.message);\n\t\telse this.showStatus(diagnostic.message);\n\t}\n\n\tif (migratedProviders && migratedProviders.length > 0) {\n\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t}\n\n\tconst modelsJsonError = this.session.modelRuntime.getError();\n\tif (modelsJsonError) {\n\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t}\n\n\tconst modelFallbackMessage = this.runtimeHost.modelFallbackMessage;\n\tif (modelFallbackMessage && !this.deferredStartupPending) {\n\t\tthis.showWarning(modelFallbackMessage, this.startupNoticesContainer);\n\t}\n\n\t// CLI-provided startup prompts need extension tools/resources; wait before sending them,\n\t// but do not block the normal no-prompt input loop from becoming ready.\n\tif (this.deferredStartupPending && (initialMessage || (initialMessages && initialMessages.length > 0))) {\n\t\tawait this.ensureDeferredStartupComplete();\n\t}\n\n\t// Process initial messages\n\tif (initialMessage) {\n\t\ttry {\n\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t} catch (error: unknown) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\tthis.showError(errorMessage);\n\t\t}\n\t}\n\n\tif (initialMessages) {\n\t\tfor (const message of initialMessages) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(message);\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\t// Main interactive loop\n\twhile (true) {\n\t\tconst userInput = await this.getUserInput();\n\t\tawait this.runUserPromptTurn(userInput);\n\t}\n};\n\nInteractiveModeBase.prototype.checkForPackageUpdates = async function (this: InteractiveModeBase): Promise<string[]> {\n\tif (getEnvValue(ENV_OFFLINE)) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst packageManager = new DefaultPackageManager({\n\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\tagentDir: getAgentDir(),\n\t\t\tsettingsManager: this.settingsManager,\n\t\t});\n\t\tconst updates = await packageManager.checkForAvailableUpdates();\n\t\treturn updates.map((update) => update.displayName);\n\t} catch {\n\t\treturn [];\n\t}\n};\n\nInteractiveModeBase.prototype.checkTmuxKeyboardSetup = async function (\n\tthis: InteractiveModeBase,\n): Promise<string | undefined> {\n\tif (!process.env.TMUX) return undefined;\n\n\tconst runTmuxShow = (option: string): Promise<string | undefined> => {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst proc = spawn(\"tmux\", [\"show\", \"-gv\", option], {\n\t\t\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\t\t\tenv: createChildProcessEnvironment(),\n\t\t\t});\n\t\t\tlet stdout = \"\";\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tproc.kill();\n\t\t\t\tresolve(undefined);\n\t\t\t}, 2000);\n\n\t\t\tproc.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\t\t\tproc.on(\"error\", () => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tresolve(undefined);\n\t\t\t});\n\t\t\tproc.on(\"close\", (code) => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tresolve(code === 0 ? stdout.trim() : undefined);\n\t\t\t});\n\t\t});\n\t};\n\n\tconst [extendedKeys, extendedKeysFormat] = await Promise.all([\n\t\trunTmuxShow(\"extended-keys\"),\n\t\trunTmuxShow(\"extended-keys-format\"),\n\t]);\n\n\t// If we couldn't query tmux (timeout, sandbox, etc.), don't warn\n\tif (extendedKeys === undefined) return undefined;\n\n\tif (extendedKeys !== \"on\" && extendedKeys !== \"always\") {\n\t\treturn \"tmux extended-keys is off. Modified enter keys may not work. Add `set -g extended-keys on` to ~/.tmux.conf and restart tmux.\";\n\t}\n\n\tif (extendedKeysFormat === \"xterm\") {\n\t\treturn `tmux extended-keys-format is xterm. ${APP_TITLE} works best with csi-u. Add \\`set -g extended-keys-format csi-u\\` to ~/.tmux.conf and restart tmux.`;\n\t}\n\n\treturn undefined;\n};\n\nInteractiveModeBase.prototype.getChangelogForDisplay = function (this: InteractiveModeBase): string | undefined {\n\t// Skip changelog for resumed/continued sessions (already have messages)\n\tif (this.session.state.messages.length > 0) {\n\t\treturn undefined;\n\t}\n\n\tconst lastVersion = this.settingsManager.getLastChangelogVersion();\n\tconst changelogPath = getChangelogPath();\n\tconst entries = parseChangelog(changelogPath);\n\n\tif (!lastVersion) {\n\t\t// Fresh install - record the version, send telemetry, don't show changelog\n\t\tthis.settingsManager.setLastChangelogVersion(VERSION);\n\t\tthis.reportInstallTelemetry(VERSION);\n\t\treturn undefined;\n\t}\n\n\tconst newEntries = getNewEntries(entries, lastVersion, VERSION);\n\tconst currentEntries = getEntriesForVersion(newEntries, VERSION);\n\tif (currentEntries.length > 0) {\n\t\tthis.settingsManager.setLastChangelogVersion(VERSION);\n\t\tthis.reportInstallTelemetry(VERSION);\n\t\treturn currentEntries.map((e) => normalizeChangelogLinks(e.content, e)).join(\"\\n\\n\");\n\t}\n\n\treturn undefined;\n};\n\nInteractiveModeBase.prototype.reportInstallTelemetry = function (this: InteractiveModeBase, version: string): void {\n\tif (getEnvValue(ENV_OFFLINE)) {\n\t\treturn;\n\t}\n\n\tif (!isInstallTelemetryEnabled(this.settingsManager)) {\n\t\treturn;\n\t}\n\n\tvoid fetch(`${VERSION_ADOPTION_ENDPOINT}?version=${encodeURIComponent(version)}`, {\n\t\theaders: {\n\t\t\t\"User-Agent\": getPiUserAgent(version),\n\t\t},\n\t\tsignal: AbortSignal.timeout(5000),\n\t})\n\t\t.then(() => undefined)\n\t\t.catch(() => undefined);\n};\n\nInteractiveModeBase.prototype.getMarkdownThemeWithSettings = function (this: InteractiveModeBase): MarkdownTheme {\n\treturn {\n\t\t...getMarkdownTheme(),\n\t\tcodeBlockIndent: this.settingsManager.getCodeBlockIndent(),\n\t};\n};\n\nInteractiveModeBase.prototype.formatDisplayPath = function (this: InteractiveModeBase, p: string): string {\n\tconst home = os.homedir();\n\tlet result = p;\n\n\t// Replace home directory with ~\n\tif (result.startsWith(home)) {\n\t\tresult = `~${result.slice(home.length)}`;\n\t}\n\n\treturn result;\n};\n\nInteractiveModeBase.prototype.formatExtensionDisplayPath = function (this: InteractiveModeBase, path: string): string {\n\treturn this.formatDisplayPath(path).replace(/[\\\\/]index\\.(?:ts|js)$/, \"\");\n};\n\nInteractiveModeBase.prototype.formatContextPath = function (this: InteractiveModeBase, p: string): string {\n\tconst cwd = path.resolve(this.sessionManager.getCwd());\n\tconst absolutePath = path.isAbsolute(p) ? path.resolve(p) : path.resolve(cwd, p);\n\tconst relativePath = getCwdRelativePath(absolutePath, cwd);\n\tif (relativePath !== undefined) {\n\t\treturn relativePath;\n\t}\n\n\treturn this.formatDisplayPath(absolutePath);\n};\n\nInteractiveModeBase.prototype.getStartupModelLabel = function (this: InteractiveModeBase): string {\n\tconst model = this.session.state.model;\n\tlet modelLabel = model?.id ?? \"no-model\";\n\n\tif (model?.reasoning) {\n\t\tmodelLabel = `${modelLabel} ${this.session.thinkingLevel || \"off\"}`;\n\t}\n\n\treturn modelLabel;\n};\n\nInteractiveModeBase.prototype.getStartupIdentityText = function (\n\tthis: InteractiveModeBase,\n\tmaxWidth?: number,\n\tgap = 0,\n\tmanifestoPhase = 4,\n): string {\n\tconst appLabel = APP_NAME.length > 0 ? `${APP_NAME[0]!.toUpperCase()}${APP_NAME.slice(1)}` : \"Atomic\";\n\tconst noColor = process.env.NO_COLOR !== undefined;\n\tconst fg = (role: \"text\" | \"muted\" | \"dim\", text: string): string => (noColor ? text : theme.fg(role, text));\n\tconst showMark = supportsAtomicBanner();\n\tconst wordmark = showMark ? \"\" : `${atomicWordmark()} `;\n\tconst title = `${wordmark}${theme.bold(fg(\"text\", appLabel))} ${fg(\"muted\", `v${this.version}`)}`;\n\tconst model = this.session.state.model;\n\tconst provider = model ? fg(\"dim\", `(${model.provider})`) : fg(\"dim\", \"(no-provider)\");\n\tconst modelLine = `${provider} ${fg(\"muted\", this.getStartupModelLabel())}`;\n\tconst markLines = showMark ? this.getAtomicAnsiMarkLines(gap) : [];\n\tconst markWidth = Math.max(0, ...markLines.map(visibleWidth));\n\tconst showMeta = gap === 0 || (maxWidth !== undefined && maxWidth < markWidth);\n\tconst metaLines = showMeta\n\t\t? [title, modelLine, fg(\"muted\", this.formatDisplayPath(this.sessionManager.getCwd()))]\n\t\t: [];\n\treturn composeStartupIdentity(\n\t\tmarkLines,\n\t\tmetaLines,\n\t\tmaxWidth,\n\t\tgap === 0 ? renderStartupManifesto(manifestoPhase) : [],\n\t);\n};\n\nInteractiveModeBase.prototype.getAtomicAnsiMarkLines = function (this: InteractiveModeBase, gap = 0): string[] {\n\treturn renderAtomicAssemblyBanner(gap, theme, this.session.thinkingLevel || \"off\");\n};\n\nInteractiveModeBase.prototype.getStartupExpansionState = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose || this.toolOutputExpanded;\n};\n\nInteractiveModeBase.prototype.shouldShowStartupHeader = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose === true || this.settingsManager.getQuietStartup() !== true;\n};\n\nInteractiveModeBase.prototype.shouldShowStartupDetails = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose === true || this.settingsManager.getQuietStartup() === false;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-startup.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-startup.ts"],"names":[],"mappings":"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","sourcesContent":["import { ScrollView, VStack } from \"@earendil-works/pi-tui\";\nimport { markLifecycleTiming } from \"../../core/lifecycle-timings.ts\";\nimport { isOfflineModeEnabled } from \"../../core/package-manager-env.ts\";\nimport { createChildProcessEnvironment } from \"../../utils/child-process.ts\";\nimport { ensurePngTranscoder } from \"../../utils/image-convert.ts\";\nimport { setMarkitDiagnosticSink } from \"../../utils/markit.js\";\nimport type { ToolStatus } from \"../../utils/tools-manager.ts\";\nimport { renderDiagnosticStatus } from \"../interactive-engine/engine-diagnostic-view.js\";\nimport {\n\tonInteractiveEngineRemoteCommandsChanged,\n\tonInteractiveEngineResourceExtensionsChanged,\n\tonInteractiveEngineSessionStatsChanged,\n\twaitForInteractiveEngineBound,\n} from \"../interactive-engine/extension-ui-bridge.ts\";\nimport {\n\tatomicWordmark,\n\trenderAtomicAssemblyBanner,\n\trenderStartupManifesto,\n\tsupportsAtomicBanner,\n} from \"./components/atomic-banner.ts\";\nimport { StartupIdentityComponent } from \"./components/startup-identity.ts\";\nimport { ThemedText } from \"./components/themed-text.js\";\nimport { bindInitialEagerSession } from \"./interactive-initial-session-binding.ts\";\nimport { InteractiveModeBase, seedStartupInput } from \"./interactive-mode-base.ts\";\nimport {\n\tAPP_NAME,\n\tAPP_TITLE,\n\ttype Container,\n\tcheckForNewPiVersion,\n\tcomposeStartupIdentity,\n\tDefaultPackageManager,\n\tDynamicBorder,\n\tENV_OFFLINE,\n\tensureTool,\n\tgetAgentDir,\n\tgetChangelogPath,\n\tgetCwdRelativePath,\n\tgetEntriesForVersion,\n\tgetEnvValue,\n\tgetMarkdownTheme,\n\tgetNewEntries,\n\tgetPiUserAgent,\n\tisInstallTelemetryEnabled,\n\tMarkdown,\n\ttype MarkdownTheme,\n\tnormalizeChangelogLinks,\n\tonThemeChange,\n\tos,\n\tparseChangelog,\n\tpath,\n\trecordTimeSinceReset,\n\tSpacer,\n\tspawn,\n\tText,\n\ttheme,\n\tVERSION,\n\tVERSION_ADOPTION_ENDPOINT,\n\tvisibleWidth,\n} from \"./interactive-mode-deps.ts\";\nimport {\n\trefreshCatalogsAfterTuiStartup,\n\tupdateProviderCountFromSnapshot,\n} from \"./interactive-model-catalog-startup.ts\";\nimport { ONBOARDING_COPY } from \"./interactive-onboarding.ts\";\nimport { holdTuiForStartupTrust } from \"./interactive-startup-trust.ts\";\nimport { restoreTerminalTitleAfterPackageCheck } from \"./interactive-terminal-title.ts\";\n\nexport const shouldRefreshCatalogsOnStartup = (): boolean => !isOfflineModeEnabled();\n\nfunction prepareStartupNotices(mode: InteractiveModeBase): void {\n\tif (mode.startupNoticesPrepared) return;\n\tmode.startupNoticesPrepared = true;\n\tmode.hadLastChangelogVersionAtStartup = Boolean(mode.settingsManager.getLastChangelogVersion?.());\n\tif (mode.changelogMarkdown === undefined) {\n\t\tmode.changelogMarkdown = mode.getChangelogForDisplay?.();\n\t}\n\tmode.initializeFirstRunOnboardingMarkers?.();\n\tif (!mode.firstRunNoticeVisible) {\n\t\tmode.firstRunNoticeVisible = mode.isFirstRunOnboardingEligible?.() ?? false;\n\t}\n}\n\n/**\n * Show non-fatal model-catalog warnings — today, a derived `-fast` variant suppressed because\n * something already owns that exact model ID.\n *\n * Called unconditionally at startup and again after deferred extension loading, because an extension\n * provider can introduce a collision that did not exist at startup. The last reported text is kept so\n * the second read only speaks when the diagnostic set actually changed.\n */\nInteractiveModeBase.prototype.reportModelCatalogWarning = function (\n\tthis: InteractiveModeBase,\n\ttargetContainer: Container = this.chatContainer,\n): void {\n\tconst warning = this.session.modelRuntime.getWarning?.();\n\tif (!warning || warning === this.reportedModelCatalogWarning) {\n\t\treturn;\n\t}\n\tthis.reportedModelCatalogWarning = warning;\n\tthis.showWarning(warning, targetContainer);\n};\n\nInteractiveModeBase.prototype.showStartupNoticesIfNeeded = function (\n\tthis: InteractiveModeBase,\n\ttargetContainer: Container = this.chatContainer,\n): void {\n\tif (this.startupNoticesShown) {\n\t\treturn;\n\t}\n\tprepareStartupNotices(this);\n\tthis.startupNoticesShown = true;\n\n\tconst changelogMarkdown = this.changelogMarkdown;\n\tif (!changelogMarkdown && !this.firstRunNoticeVisible) {\n\t\treturn;\n\t}\n\n\tif (changelogMarkdown) {\n\t\tif (targetContainer.children.length > 0) {\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t\ttargetContainer.addChild(new DynamicBorder());\n\t\tif (this.settingsManager.getCollapseChangelog()) {\n\t\t\tconst versionMatch = changelogMarkdown.match(\n\t\t\t\t/##\\s+\\[?((?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-(?:alpha\\.)?(?:0|[1-9]\\d*))?)\\]?/,\n\t\t\t);\n\t\t\tconst latestVersion = versionMatch ? versionMatch[1] : this.version;\n\t\t\tconst condensedText = `Updated to v${latestVersion}. Use ${theme.bold(\"/changelog\")} to view full changelog.`;\n\t\t\ttargetContainer.addChild(new Text(condensedText, 1, 0));\n\t\t} else {\n\t\t\ttargetContainer.addChild(new ThemedText(() => theme.bold(theme.fg(\"accent\", \"What's New\")), 1, 0));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t\ttargetContainer.addChild(new Markdown(changelogMarkdown.trim(), 1, 0, this.getMarkdownThemeWithSettings()));\n\t\t\ttargetContainer.addChild(new Spacer(1));\n\t\t}\n\t\ttargetContainer.addChild(new DynamicBorder());\n\t}\n\n\tif (this.firstRunNoticeVisible) {\n\t\tthis.firstRunOnboardingNoticeComponents = [];\n\t\tif (targetContainer.children.length > 0) {\n\t\t\tthis.firstRunOnboardingNoticeComponents.push(new Spacer(1));\n\t\t}\n\t\tthis.firstRunOnboardingNoticeComponents.push(\n\t\t\tnew DynamicBorder(),\n\t\t\tnew Text(ONBOARDING_COPY, 1, 0),\n\t\t\tnew DynamicBorder(),\n\t\t\tnew Spacer(1),\n\t\t);\n\t\tfor (const component of this.firstRunOnboardingNoticeComponents) {\n\t\t\ttargetContainer.addChild(component);\n\t\t}\n\t\t// Mark completion only after queueing the notice in the chat canvas so\n\t\t// launches that skip rendering retry the first-run notice next time.\n\t\tthis.settingsManager.setOnboardedVersion(this.version);\n\t}\n\n\tthis.ui.requestRender();\n};\n\n/** Bring fd and rg to readiness, reporting progress into the transcript. */\nInteractiveModeBase.prototype.ensureManagedToolsReady = function (this: InteractiveModeBase): Promise<void> {\n\tconst statusGeneration = ++this.managedToolStatusGeneration;\n\tconst reportStatus = (status: ToolStatus): void => {\n\t\tif (this.managedToolStatusGeneration === statusGeneration) this.showManagedToolStatus(status);\n\t};\n\treturn Promise.all([ensureTool(\"fd\", reportStatus), ensureTool(\"rg\", reportStatus)])\n\t\t.then(([fdPath]) => {\n\t\t\tthis.fdPath = fdPath;\n\t\t\tthis.setupAutocompleteProvider();\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treportStatus({ type: \"warning\", message: `Tool readiness check failed: ${message}` });\n\t\t});\n};\n\n/** Show a managed-tool status update in the chat, never on the console. */\nInteractiveModeBase.prototype.showManagedToolStatus = function (this: InteractiveModeBase, status: ToolStatus): void {\n\tif (!this.managedToolStatusStarted) {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.managedToolStatusStarted = true;\n\t}\n\tconst message = status.type === \"warning\" ? `Warning: ${status.message}` : status.message;\n\tconst color = status.type === \"warning\" ? \"warning\" : \"dim\";\n\tthis.chatContainer.addChild(new ThemedText(() => theme.fg(color, message), 1, 0));\n\tthis.lastStatusSpacer = undefined;\n\tthis.lastStatusText = undefined;\n\tthis.ui.requestRender();\n};\n\nexport function attachInteractiveEngineResourceExtensionRefresh(mode: InteractiveModeBase): () => void {\n\treturn onInteractiveEngineResourceExtensionsChanged(mode.runtimeHost, () => {\n\t\tmode.chatContainer.invalidate();\n\t\tmode.ui.requestRender();\n\t\tif (mode.resourceDisclosureContainer.children.length === 0) return;\n\t\tmode.showLoadedResources({\n\t\t\tforce: true,\n\t\t\tshowDiagnosticsWhenQuiet: true,\n\t\t\ttargetContainer: mode.resourceDisclosureContainer,\n\t\t});\n\t});\n}\n\nInteractiveModeBase.prototype.init = async function (this: InteractiveModeBase): Promise<void> {\n\tif (this.isInitialized) return;\n\n\tif (this.options.holdTuiForStartupTrust) await holdTuiForStartupTrust(this);\n\tthis.registerSignalHandlers();\n\n\t// Keep the transcript in its own viewport and reserve the bottom chrome in a\n\t// fixed dock for the fullscreen renderer. The same components also feed the\n\t// internal main-screen fallback used for guarded terminal paths.\n\tthis.renderWidgets(); // Initialize with default spacer\n\tthis.transcriptScrollView = new ScrollView(this.documentContainer, {\n\t\tfollow: \"end\",\n\t\tprimary: true,\n\t\toverscroll: \"chain\",\n\t\tscrollbar: this.settingsManager.getFullscreenScrollbar(),\n\t\tscrollbarThumbStyle: (text) => theme.bg(\"scrollbarThumb\", text),\n\t});\n\tconst dock = new VStack([\n\t\t{ component: this.pendingMessagesContainer, shrink: 1, minSize: 0 },\n\t\t{ component: this.statusContainer, shrink: 1, minSize: 0 },\n\t\t{ component: this.widgetContainerAbove, shrink: 1, minSize: 0 },\n\t\t{ component: this.usageMeter, shrink: 1, minSize: 1 },\n\t\t{ component: this.editorContainer, shrink: 1, minSize: 3 },\n\t\t{ component: this.footerContainer, shrink: 1, minSize: 1 },\n\t\t// Keep widgetContainerBelow after the footer for #1109's stable dock order.\n\t\t{ component: this.widgetContainerBelow, shrink: 1, minSize: 0 },\n\t]);\n\tthis.fullscreenLayoutRoot = new VStack([\n\t\t{ component: this.transcriptScrollView, basis: 0, grow: 1, shrink: 1, minSize: 1 },\n\t\t{ component: dock, basis: \"auto\", grow: 0, shrink: 1, minSize: 1 },\n\t]);\n\tthis.mountInteractiveTui(this.ui, [\n\t\tthis.documentContainer,\n\t\tthis.pendingMessagesContainer,\n\t\tthis.statusContainer,\n\t\tthis.widgetContainerAbove,\n\t\tthis.usageMeter,\n\t\tthis.editorContainer,\n\t\tthis.footerContainer,\n\t\tthis.widgetContainerBelow,\n\t]);\n\tthis.ui.setFocus(this.extensionSelector ?? this.extensionInput ?? this.extensionEditor ?? this.editor);\n\n\tthis.setupKeyHandlers();\n\tthis.setupEditorSubmitHandler();\n\t// Rebuild autocomplete whenever the engine child's command catalog arrives or\n\t// changes (initial bind, engine restart, reload, new/resume/fork). Subscribed\n\t// before bind so the first async catalog fetch can never be missed. No-op when\n\t// the host is not isolated.\n\tonInteractiveEngineRemoteCommandsChanged(this.runtimeHost, () => {\n\t\tthis.setupAutocompleteProvider();\n\t});\n\tattachInteractiveEngineResourceExtensionRefresh(this);\n\t// Engine stats can land after the last event of a run; repaint so the idle footer shows them.\n\tonInteractiveEngineSessionStatsChanged(this.runtimeHost, () => {\n\t\tthis.ui.requestRender();\n\t});\n\n\tseedStartupInput(\n\t\tthis.pendingUserInputs,\n\t\tthis.defaultEditor,\n\t\tthis.options.startupInputCapture?.consume(),\n\t\tthis.startupReplayInputs,\n\t\t(text) => {\n\t\t\tthis.startupDraftText = text;\n\t\t},\n\t\t(text) => {\n\t\t\tthis.startupReplayActiveInput = text;\n\t\t},\n\t);\n\n\t// Start and paint the host-owned TUI before waiting for the isolated engine.\n\t// The editor remains local and responsive; session binding and provider work\n\t// still stay behind the engine-bound gate below.\n\tmarkLifecycleTiming(\"tui-start\");\n\tthis.ui.start();\n\tthis.programStatus.report();\n\tensurePngTranscoder(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.ui.requestRender();\n\t});\n\tthis.disposeMarkitDiagnosticSink = setMarkitDiagnosticSink((message) => renderDiagnosticStatus(message, this));\n\tthis.footerDataProvider.onBranchChange(() => {\n\t\tthis.ui.requestRender();\n\t});\n\n\tawait this.themeController.applyFromSettings();\n\n\t// Add the quiet startup identity unless silenced.\n\tif (this.shouldShowStartupHeader()) {\n\t\tthis.builtInHeader = new StartupIdentityComponent(this.ui, (width, state) =>\n\t\t\tthis.getStartupIdentityText(width, state.gap, state.manifestoPhase),\n\t\t);\n\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t} else {\n\t\t// Minimal header when silenced\n\t\tthis.builtInHeader = new Text(\"\", 0, 0);\n\t\tthis.headerContainer.addChild(this.builtInHeader);\n\t}\n\tmarkLifecycleTiming(\"header-mounted\");\n\tthis.ui.requestRender();\n\t// This legacy mark now means the first requested identity frame. The settled\n\t// animation frame remains the external benchmark's startup-complete mark.\n\trecordTimeSinceReset(\"time-to-first-frame\");\n\n\tawait waitForInteractiveEngineBound(this.runtimeHost);\n\tif (this.isShuttingDown) return;\n\tthis.isInitialized = true;\n\t// The isolated engine may have replaced the preliminary model/provider view.\n\tthis.ui.requestRender();\n\n\t// fd/rg readiness runs after first paint so slow downloads never make\n\t// startup appear frozen. Progress reports land in the transcript: a console\n\t// write here lands in the alternate screen and corrupts the frame.\n\tvoid this.ensureManagedToolsReady();\n\n\t// When startup resources are deferred, keep the already-painted editor responsive.\n\t// Extension UI bindings are installed at the deferred reload boundary, not here,\n\t// so no post-paint resource work can block visible typing.\n\tif (this.deferredStartupPending) {\n\t\tthis.applyRuntimeSettings();\n\t\tthis.subscribeToAgent();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.updateTerminalTitle();\n\t} else {\n\t\tawait bindInitialEagerSession(this);\n\t}\n\n\tthis.attachStartupNoticesContainer();\n\t// Render initial messages AFTER the initial session binding is in place.\n\tthis.renderInitialMessages();\n\tif (!this.deferredStartupPending) this.startSessionRecovery(\"startup\");\n\t// Set up theme file watcher\n\tonThemeChange(() => {\n\t\tthis.ui.invalidate();\n\t\tthis.updateEditorBorderColor();\n\t\tthis.ui.requestRender();\n\t});\n\n\tupdateProviderCountFromSnapshot(this);\n};\n\nInteractiveModeBase.prototype.updateTerminalTitle = function (this: InteractiveModeBase): void {\n\tconst cwdBasename = path.basename(this.sessionManager.getCwd());\n\tconst sessionName = this.sessionManager.getSessionName();\n\tif (sessionName) {\n\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${sessionName} - ${cwdBasename}`);\n\t} else {\n\t\tthis.ui.terminal.setTitle(`${APP_TITLE} - ${cwdBasename}`);\n\t}\n};\n\nInteractiveModeBase.prototype.run = async function (this: InteractiveModeBase): Promise<void> {\n\tawait this.init();\n\tif (this.isShuttingDown) return;\n\n\tif (shouldRefreshCatalogsOnStartup()) void refreshCatalogsAfterTuiStartup(this);\n\n\tsetTimeout(() => {\n\t\tconst startupNoticesContainer = this.startupNoticesContainer;\n\t\tcheckForNewPiVersion(this.version).then((newVersion) => {\n\t\t\tif (newVersion) this.showNewVersionNotification(newVersion, startupNoticesContainer);\n\t\t});\n\t\trestoreTerminalTitleAfterPackageCheck(this.checkForPackageUpdates(), {\n\t\t\tinitialized: () => this.isInitialized,\n\t\t\trestore: () => this.updateTerminalTitle(),\n\t\t}).then((updates) => {\n\t\t\tif (updates.length > 0) this.showPackageUpdateNotification(updates, startupNoticesContainer);\n\t\t});\n\t\tthis.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) this.showWarning(warning, startupNoticesContainer);\n\t\t});\n\t\t// Deferred startup releases chat output immediately after rendering the\n\t\t// disclosure, so wait only while that startup work remains in flight.\n\t\tif (!this.deferredStartupPending && !this.deferredStartupPromise) {\n\t\t\tvoid this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, startupNoticesContainer);\n\t\t}\n\t}, 500);\n\n\t// Show startup warnings\n\tconst { migratedProviders, startupDiagnostics, initialMessage, initialImages, initialMessages } = this.options;\n\n\tfor (const diagnostic of startupDiagnostics ?? []) {\n\t\tif (diagnostic.type === \"error\") this.showError(diagnostic.message);\n\t\telse if (diagnostic.type === \"warning\") this.showWarning(diagnostic.message);\n\t\telse this.showStatus(diagnostic.message);\n\t}\n\n\tif (migratedProviders && migratedProviders.length > 0) {\n\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t}\n\n\tconst modelsJsonError = this.session.modelRuntime.getError();\n\tif (modelsJsonError) {\n\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t}\n\n\tconst modelFallbackMessage = this.runtimeHost.modelFallbackMessage;\n\tif (modelFallbackMessage && !this.deferredStartupPending) {\n\t\tthis.showWarning(modelFallbackMessage, this.startupNoticesContainer);\n\t}\n\n\t// CLI-provided startup prompts need extension tools/resources; wait before sending them,\n\t// but do not block the normal no-prompt input loop from becoming ready.\n\tif (this.deferredStartupPending && (initialMessage || (initialMessages && initialMessages.length > 0))) {\n\t\tawait this.ensureDeferredStartupComplete();\n\t}\n\n\t// Process initial messages\n\tif (initialMessage) {\n\t\ttry {\n\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t} catch (error: unknown) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\tthis.showError(errorMessage);\n\t\t}\n\t}\n\n\tif (initialMessages) {\n\t\tfor (const message of initialMessages) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(message);\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\t// Main interactive loop\n\twhile (true) {\n\t\tconst userInput = await this.getUserInput();\n\t\tawait this.runUserPromptTurn(userInput);\n\t}\n};\n\nInteractiveModeBase.prototype.checkForPackageUpdates = async function (this: InteractiveModeBase): Promise<string[]> {\n\tif (getEnvValue(ENV_OFFLINE)) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst packageManager = new DefaultPackageManager({\n\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\tagentDir: getAgentDir(),\n\t\t\tsettingsManager: this.settingsManager,\n\t\t});\n\t\tconst updates = await packageManager.checkForAvailableUpdates();\n\t\treturn updates.map((update) => update.displayName);\n\t} catch {\n\t\treturn [];\n\t}\n};\n\nInteractiveModeBase.prototype.checkTmuxKeyboardSetup = async function (\n\tthis: InteractiveModeBase,\n): Promise<string | undefined> {\n\tif (!process.env.TMUX) return undefined;\n\n\tconst runTmuxShow = (option: string): Promise<string | undefined> => {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst proc = spawn(\"tmux\", [\"show\", \"-gv\", option], {\n\t\t\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\t\t\tenv: createChildProcessEnvironment(),\n\t\t\t});\n\t\t\tlet stdout = \"\";\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tproc.kill();\n\t\t\t\tresolve(undefined);\n\t\t\t}, 2000);\n\n\t\t\tproc.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\t\t\tproc.on(\"error\", () => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tresolve(undefined);\n\t\t\t});\n\t\t\tproc.on(\"close\", (code) => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tresolve(code === 0 ? stdout.trim() : undefined);\n\t\t\t});\n\t\t});\n\t};\n\n\tconst [extendedKeys, extendedKeysFormat] = await Promise.all([\n\t\trunTmuxShow(\"extended-keys\"),\n\t\trunTmuxShow(\"extended-keys-format\"),\n\t]);\n\n\t// If we couldn't query tmux (timeout, sandbox, etc.), don't warn\n\tif (extendedKeys === undefined) return undefined;\n\n\tif (extendedKeys !== \"on\" && extendedKeys !== \"always\") {\n\t\treturn \"tmux extended-keys is off. Modified enter keys may not work. Add `set -g extended-keys on` to ~/.tmux.conf and restart tmux.\";\n\t}\n\n\tif (extendedKeysFormat === \"xterm\") {\n\t\treturn `tmux extended-keys-format is xterm. ${APP_TITLE} works best with csi-u. Add \\`set -g extended-keys-format csi-u\\` to ~/.tmux.conf and restart tmux.`;\n\t}\n\n\treturn undefined;\n};\n\nInteractiveModeBase.prototype.getChangelogForDisplay = function (this: InteractiveModeBase): string | undefined {\n\t// Skip changelog for resumed/continued sessions (already have messages)\n\tif (this.session.state.messages.length > 0) {\n\t\treturn undefined;\n\t}\n\n\tconst lastVersion = this.settingsManager.getLastChangelogVersion();\n\tconst changelogPath = getChangelogPath();\n\tconst entries = parseChangelog(changelogPath);\n\n\tif (!lastVersion) {\n\t\t// Fresh install - record the version, send telemetry, don't show changelog\n\t\tthis.settingsManager.setLastChangelogVersion(VERSION);\n\t\tthis.reportInstallTelemetry(VERSION);\n\t\treturn undefined;\n\t}\n\n\tconst newEntries = getNewEntries(entries, lastVersion, VERSION);\n\tconst currentEntries = getEntriesForVersion(newEntries, VERSION);\n\tif (currentEntries.length > 0) {\n\t\tthis.settingsManager.setLastChangelogVersion(VERSION);\n\t\tthis.reportInstallTelemetry(VERSION);\n\t\treturn currentEntries.map((e) => normalizeChangelogLinks(e.content, e)).join(\"\\n\\n\");\n\t}\n\n\treturn undefined;\n};\n\nInteractiveModeBase.prototype.reportInstallTelemetry = function (this: InteractiveModeBase, version: string): void {\n\tif (getEnvValue(ENV_OFFLINE)) {\n\t\treturn;\n\t}\n\n\tif (!isInstallTelemetryEnabled(this.settingsManager)) {\n\t\treturn;\n\t}\n\n\tvoid fetch(`${VERSION_ADOPTION_ENDPOINT}?version=${encodeURIComponent(version)}`, {\n\t\theaders: {\n\t\t\t\"User-Agent\": getPiUserAgent(version),\n\t\t},\n\t\tsignal: AbortSignal.timeout(5000),\n\t})\n\t\t.then(() => undefined)\n\t\t.catch(() => undefined);\n};\n\nInteractiveModeBase.prototype.getMarkdownThemeWithSettings = function (this: InteractiveModeBase): MarkdownTheme {\n\treturn {\n\t\t...getMarkdownTheme(),\n\t\tcodeBlockIndent: this.settingsManager.getCodeBlockIndent(),\n\t};\n};\n\nInteractiveModeBase.prototype.formatDisplayPath = function (this: InteractiveModeBase, p: string): string {\n\tconst home = os.homedir();\n\tlet result = p;\n\n\t// Replace home directory with ~\n\tif (result.startsWith(home)) {\n\t\tresult = `~${result.slice(home.length)}`;\n\t}\n\n\treturn result;\n};\n\nInteractiveModeBase.prototype.formatExtensionDisplayPath = function (this: InteractiveModeBase, path: string): string {\n\treturn this.formatDisplayPath(path).replace(/[\\\\/]index\\.(?:ts|js)$/, \"\");\n};\n\nInteractiveModeBase.prototype.formatContextPath = function (this: InteractiveModeBase, p: string): string {\n\tconst cwd = path.resolve(this.sessionManager.getCwd());\n\tconst absolutePath = path.isAbsolute(p) ? path.resolve(p) : path.resolve(cwd, p);\n\tconst relativePath = getCwdRelativePath(absolutePath, cwd);\n\tif (relativePath !== undefined) {\n\t\treturn relativePath;\n\t}\n\n\treturn this.formatDisplayPath(absolutePath);\n};\n\nInteractiveModeBase.prototype.getStartupModelLabel = function (this: InteractiveModeBase): string {\n\tconst model = this.session.state.model;\n\tlet modelLabel = model?.id ?? \"no-model\";\n\n\tif (model?.reasoning) {\n\t\tmodelLabel = `${modelLabel} ${this.session.thinkingLevel || \"off\"}`;\n\t}\n\n\treturn modelLabel;\n};\n\nInteractiveModeBase.prototype.getStartupIdentityText = function (\n\tthis: InteractiveModeBase,\n\tmaxWidth?: number,\n\tgap = 0,\n\tmanifestoPhase = 4,\n): string {\n\tconst appLabel = APP_NAME.length > 0 ? `${APP_NAME[0]!.toUpperCase()}${APP_NAME.slice(1)}` : \"Atomic\";\n\tconst noColor = process.env.NO_COLOR !== undefined;\n\tconst fg = (role: \"text\" | \"muted\" | \"dim\", text: string): string => (noColor ? text : theme.fg(role, text));\n\tconst showMark = supportsAtomicBanner();\n\tconst wordmark = showMark ? \"\" : `${atomicWordmark()} `;\n\tconst title = `${wordmark}${theme.bold(fg(\"text\", appLabel))} ${fg(\"muted\", `v${this.version}`)}`;\n\tconst model = this.session.state.model;\n\tconst provider = model ? fg(\"dim\", `(${model.provider})`) : fg(\"dim\", \"(no-provider)\");\n\tconst modelLine = `${provider} ${fg(\"muted\", this.getStartupModelLabel())}`;\n\tconst markLines = showMark ? this.getAtomicAnsiMarkLines(gap) : [];\n\tconst markWidth = Math.max(0, ...markLines.map(visibleWidth));\n\tconst showMeta = gap === 0 || (maxWidth !== undefined && maxWidth < markWidth);\n\tconst metaLines = showMeta\n\t\t? [title, modelLine, fg(\"muted\", this.formatDisplayPath(this.sessionManager.getCwd()))]\n\t\t: [];\n\treturn composeStartupIdentity(\n\t\tmarkLines,\n\t\tmetaLines,\n\t\tmaxWidth,\n\t\tgap === 0 ? renderStartupManifesto(manifestoPhase) : [],\n\t);\n};\n\nInteractiveModeBase.prototype.getAtomicAnsiMarkLines = function (this: InteractiveModeBase, gap = 0): string[] {\n\treturn renderAtomicAssemblyBanner(gap, theme, this.session.thinkingLevel || \"off\");\n};\n\nInteractiveModeBase.prototype.getStartupExpansionState = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose || this.toolOutputExpanded;\n};\n\nInteractiveModeBase.prototype.shouldShowStartupHeader = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose === true || this.settingsManager.getQuietStartup() !== true;\n};\n\nInteractiveModeBase.prototype.shouldShowStartupDetails = function (this: InteractiveModeBase): boolean {\n\treturn this.options.verbose === true || this.settingsManager.getQuietStartup() === false;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-args.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAIpE,MAAM,WAAW,8BAA8B;IAC9C,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAYD,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,IAAI,EACZ,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,8BAA8B,GACvC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"engine-args.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAIpE,MAAM,WAAW,8BAA8B;IAC9C,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAYD,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,IAAI,EACZ,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,8BAA8B,GACvC,MAAM,EAAE,CA+CV"}
|
|
@@ -24,6 +24,10 @@ export function buildInteractiveEngineArgs(parsed, sessionManager, resources) {
|
|
|
24
24
|
const storage = getEngineSessionStorage(sessionManager.getSessionStore());
|
|
25
25
|
if (storage)
|
|
26
26
|
args.push(ENGINE_SESSION_STORAGE_FLAG, JSON.stringify(storage));
|
|
27
|
+
if (parsed.storage) {
|
|
28
|
+
const { flag, value } = parsed.storage;
|
|
29
|
+
args.push(flag, flag === "--storage-file" ? resolvePath(value) : value);
|
|
30
|
+
}
|
|
27
31
|
appendValue(args, "--provider", parsed.provider);
|
|
28
32
|
appendValue(args, "--model", parsed.model);
|
|
29
33
|
appendValue(args, "--thinking", parsed.thinking);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-args.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-args.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Args } from \"../../cli/args.ts\";\nimport type { SessionManager } from \"../../core/session-manager.ts\";\nimport { ENGINE_SESSION_STORAGE_FLAG, getEngineSessionStorage } from \"../../core/session-storage.js\";\nimport { resolvePath } from \"../../utils/paths.ts\";\n\nexport interface InteractiveEngineResourcePaths {\n\textensions?: readonly string[];\n\tpromptTemplates?: readonly string[];\n\tskills?: readonly string[];\n\tthemes?: readonly string[];\n}\n\nfunction appendValue(args: string[], flag: string, value: boolean | number | string | undefined): void {\n\tif (value === undefined || value === false) return;\n\targs.push(flag);\n\tif (value !== true) args.push(String(value));\n}\n\nfunction appendValues(args: string[], flag: string, values: readonly string[] | undefined): void {\n\tfor (const value of values ?? []) args.push(flag, value);\n}\n\nexport function buildInteractiveEngineArgs(\n\tparsed: Args,\n\tsessionManager: SessionManager,\n\tresources: InteractiveEngineResourcePaths,\n): string[] {\n\tconst args: string[] = [];\n\tif (parsed.noSession || !sessionManager.isPersisted()) {\n\t\targs.push(\"--no-session\");\n\t\tif (parsed.import !== undefined) args.push(\"--import\", resolvePath(parsed.import));\n\t} else args.push(\"--session\", sessionManager.getSessionId());\n\tappendValue(\n\t\targs,\n\t\t\"--session-dir\",\n\t\tsessionManager.getSessionStore().descriptor.adapter === \"jsonl\" ? sessionManager.getSessionDir() : undefined,\n\t);\n\tconst storage = getEngineSessionStorage(sessionManager.getSessionStore());\n\tif (storage) args.push(ENGINE_SESSION_STORAGE_FLAG, JSON.stringify(storage));\n\tappendValue(args, \"--provider\", parsed.provider);\n\tappendValue(args, \"--model\", parsed.model);\n\tappendValue(args, \"--thinking\", parsed.thinking);\n\tappendValue(args, \"--system-prompt\", parsed.systemPrompt);\n\tappendValues(args, \"--append-system-prompt\", parsed.appendSystemPrompt);\n\tif (parsed.models) appendValue(args, \"--models\", parsed.models.join(\",\"));\n\tif (parsed.tools) appendValue(args, \"--tools\", parsed.tools.join(\",\"));\n\tif (parsed.excludeTools) appendValue(args, \"--exclude-tools\", parsed.excludeTools.join(\",\"));\n\tappendValue(args, \"--no-tools\", parsed.noTools);\n\tappendValue(args, \"--no-builtin-tools\", parsed.noBuiltinTools);\n\tappendValues(args, \"--extension\", resources.extensions);\n\tappendValue(args, \"--no-extensions\", parsed.noExtensions);\n\tappendValue(args, \"--no-mcp\", parsed.noMcp);\n\tappendValues(args, \"--skill\", resources.skills);\n\tappendValue(args, \"--no-skills\", parsed.noSkills);\n\tappendValues(args, \"--prompt-template\", resources.promptTemplates);\n\tappendValue(args, \"--no-prompt-templates\", parsed.noPromptTemplates);\n\tappendValues(args, \"--theme\", resources.themes);\n\tappendValue(args, \"--no-themes\", parsed.noThemes);\n\tappendValue(args, \"--no-context-files\", parsed.noContextFiles);\n\tappendValue(args, \"--offline\", parsed.offline);\n\tappendValue(args, \"--verbose\", parsed.verbose);\n\tif (parsed.projectTrustOverride !== undefined) {\n\t\targs.push(parsed.projectTrustOverride ? \"--approve\" : \"--no-approve\");\n\t}\n\tfor (const [name, value] of parsed.unknownFlags) {\n\t\targs.push(`--${name}`);\n\t\tif (value !== true) args.push(String(value));\n\t}\n\treturn args;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"engine-args.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-args.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Args } from \"../../cli/args.ts\";\nimport type { SessionManager } from \"../../core/session-manager.ts\";\nimport { ENGINE_SESSION_STORAGE_FLAG, getEngineSessionStorage } from \"../../core/session-storage.js\";\nimport { resolvePath } from \"../../utils/paths.ts\";\n\nexport interface InteractiveEngineResourcePaths {\n\textensions?: readonly string[];\n\tpromptTemplates?: readonly string[];\n\tskills?: readonly string[];\n\tthemes?: readonly string[];\n}\n\nfunction appendValue(args: string[], flag: string, value: boolean | number | string | undefined): void {\n\tif (value === undefined || value === false) return;\n\targs.push(flag);\n\tif (value !== true) args.push(String(value));\n}\n\nfunction appendValues(args: string[], flag: string, values: readonly string[] | undefined): void {\n\tfor (const value of values ?? []) args.push(flag, value);\n}\n\nexport function buildInteractiveEngineArgs(\n\tparsed: Args,\n\tsessionManager: SessionManager,\n\tresources: InteractiveEngineResourcePaths,\n): string[] {\n\tconst args: string[] = [];\n\tif (parsed.noSession || !sessionManager.isPersisted()) {\n\t\targs.push(\"--no-session\");\n\t\tif (parsed.import !== undefined) args.push(\"--import\", resolvePath(parsed.import));\n\t} else args.push(\"--session\", sessionManager.getSessionId());\n\tappendValue(\n\t\targs,\n\t\t\"--session-dir\",\n\t\tsessionManager.getSessionStore().descriptor.adapter === \"jsonl\" ? sessionManager.getSessionDir() : undefined,\n\t);\n\tconst storage = getEngineSessionStorage(sessionManager.getSessionStore());\n\tif (storage) args.push(ENGINE_SESSION_STORAGE_FLAG, JSON.stringify(storage));\n\tif (parsed.storage) {\n\t\tconst { flag, value } = parsed.storage;\n\t\targs.push(flag, flag === \"--storage-file\" ? resolvePath(value) : value);\n\t}\n\tappendValue(args, \"--provider\", parsed.provider);\n\tappendValue(args, \"--model\", parsed.model);\n\tappendValue(args, \"--thinking\", parsed.thinking);\n\tappendValue(args, \"--system-prompt\", parsed.systemPrompt);\n\tappendValues(args, \"--append-system-prompt\", parsed.appendSystemPrompt);\n\tif (parsed.models) appendValue(args, \"--models\", parsed.models.join(\",\"));\n\tif (parsed.tools) appendValue(args, \"--tools\", parsed.tools.join(\",\"));\n\tif (parsed.excludeTools) appendValue(args, \"--exclude-tools\", parsed.excludeTools.join(\",\"));\n\tappendValue(args, \"--no-tools\", parsed.noTools);\n\tappendValue(args, \"--no-builtin-tools\", parsed.noBuiltinTools);\n\tappendValues(args, \"--extension\", resources.extensions);\n\tappendValue(args, \"--no-extensions\", parsed.noExtensions);\n\tappendValue(args, \"--no-mcp\", parsed.noMcp);\n\tappendValues(args, \"--skill\", resources.skills);\n\tappendValue(args, \"--no-skills\", parsed.noSkills);\n\tappendValues(args, \"--prompt-template\", resources.promptTemplates);\n\tappendValue(args, \"--no-prompt-templates\", parsed.noPromptTemplates);\n\tappendValues(args, \"--theme\", resources.themes);\n\tappendValue(args, \"--no-themes\", parsed.noThemes);\n\tappendValue(args, \"--no-context-files\", parsed.noContextFiles);\n\tappendValue(args, \"--offline\", parsed.offline);\n\tappendValue(args, \"--verbose\", parsed.verbose);\n\tif (parsed.projectTrustOverride !== undefined) {\n\t\targs.push(parsed.projectTrustOverride ? \"--approve\" : \"--no-approve\");\n\t}\n\tfor (const [name, value] of parsed.unknownFlags) {\n\t\targs.push(`--${name}`);\n\t\tif (value !== true) args.push(String(value));\n\t}\n\treturn args;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-render-service.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-render-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"engine-render-service.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/engine-render-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA2DhE,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAE/C,YAAY,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAExC;IAED,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAGvC;IAED,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgChC;IAED,OAAO,IAAI,IAAI,CAEd;IAED,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,UAAU;IA8ClB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,IAAI;CAGZ"}
|