@opengsd/gsd-pi 1.1.1-dev.616a1a1 → 1.1.1-dev.9bb7453
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +3 -2
- package/dist/help-text.js +10 -6
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/browser-tools/engine/managed-gsd-browser.js +495 -0
- package/dist/resources/extensions/browser-tools/engine/selection.js +16 -0
- package/dist/resources/extensions/browser-tools/extension-manifest.json +2 -2
- package/dist/resources/extensions/browser-tools/index.js +57 -9
- package/dist/resources/extensions/browser-tools/package.json +5 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +167 -16
- package/dist/resources/extensions/gsd/auto/orchestrator.js +0 -1
- package/dist/resources/extensions/gsd/auto/phases.js +4 -3
- package/dist/resources/extensions/gsd/auto-dashboard.js +92 -17
- package/dist/resources/extensions/gsd/auto-dispatch.js +44 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +134 -10
- package/dist/resources/extensions/gsd/auto-prompts.js +68 -22
- package/dist/resources/extensions/gsd/auto-recovery.js +4 -4
- package/dist/resources/extensions/gsd/auto-runtime-state.js +3 -0
- package/dist/resources/extensions/gsd/auto-start.js +94 -15
- package/dist/resources/extensions/gsd/auto-tool-tracking.js +1 -1
- package/dist/resources/extensions/gsd/auto-unit-tool-scope.js +2 -1
- package/dist/resources/extensions/gsd/auto.js +31 -6
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +83 -4
- package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +43 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +39 -14
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +16 -10
- package/dist/resources/extensions/gsd/browser-evidence.js +29 -2
- package/dist/resources/extensions/gsd/commands/catalog.js +6 -1
- package/dist/resources/extensions/gsd/commands/handlers/core.js +6 -2
- package/dist/resources/extensions/gsd/commands/handlers/ops.js +9 -5
- package/dist/resources/extensions/gsd/commands-handlers.js +76 -11
- package/dist/resources/extensions/gsd/commands-maintenance.js +172 -2
- package/dist/resources/extensions/gsd/commands-mcp-status.js +109 -60
- package/dist/resources/extensions/gsd/commands-prefs-wizard.js +3 -1
- package/dist/resources/extensions/gsd/commands-verdict.js +1 -1
- package/dist/resources/extensions/gsd/config-overlay.js +2 -1
- package/dist/resources/extensions/gsd/dashboard-overlay.js +21 -7
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +8 -0
- package/dist/resources/extensions/gsd/doctor-runtime-checks.js +2 -2
- package/dist/resources/extensions/gsd/error-classifier.js +2 -1
- package/dist/resources/extensions/gsd/escalation.js +4 -4
- package/dist/resources/extensions/gsd/exec-sandbox.js +2 -0
- package/dist/resources/extensions/gsd/forensics.js +74 -2
- package/dist/resources/extensions/gsd/gsd-db.js +42 -6
- package/dist/resources/extensions/gsd/guided-flow.js +30 -69
- package/dist/resources/extensions/gsd/mcp-filter.js +3 -0
- package/dist/resources/extensions/gsd/mcp-project-config.js +76 -84
- package/dist/resources/extensions/gsd/memory-store.js +4 -1
- package/dist/resources/extensions/gsd/migration-auto-check.js +2 -2
- package/dist/resources/extensions/gsd/post-unit-hooks.js +9 -0
- package/dist/resources/extensions/gsd/preferences-validation.js +39 -0
- package/dist/resources/extensions/gsd/prompt-loader.js +7 -0
- package/dist/resources/extensions/gsd/prompts/forensics.md +61 -1
- package/dist/resources/extensions/gsd/prompts/gate-evaluate.md +3 -1
- package/dist/resources/extensions/gsd/prompts/parallel-research-slices.md +3 -1
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/dist/resources/extensions/gsd/prompts/reactive-execute.md +3 -1
- package/dist/resources/extensions/gsd/prompts/run-uat.md +48 -24
- package/dist/resources/extensions/gsd/prompts/system.md +3 -1
- package/dist/resources/extensions/gsd/prompts/validate-milestone.md +3 -3
- package/dist/resources/extensions/gsd/rule-registry.js +428 -52
- package/dist/resources/extensions/gsd/safety/destructive-guard.js +3 -0
- package/dist/resources/extensions/gsd/skill-activation.js +20 -3
- package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +4 -2
- package/dist/resources/extensions/gsd/state-reconciliation/drift/project-md.js +1 -1
- package/dist/resources/extensions/gsd/state-reconciliation/drift/roadmap.js +18 -1
- package/dist/resources/extensions/gsd/state-reconciliation/index.js +6 -0
- package/dist/resources/extensions/gsd/state.js +17 -14
- package/dist/resources/extensions/gsd/templates/plan.md +3 -1
- package/dist/resources/extensions/gsd/tool-presentation-plan.js +120 -0
- package/dist/resources/extensions/gsd/tools/complete-slice.js +15 -1
- package/dist/resources/extensions/gsd/tools/complete-task.js +11 -1
- package/dist/resources/extensions/gsd/tools/exec-tool.js +109 -0
- package/dist/resources/extensions/gsd/tools/plan-slice.js +14 -9
- package/dist/resources/extensions/gsd/tools/reopen-milestone.js +2 -2
- package/dist/resources/extensions/gsd/tools/validate-milestone.js +46 -16
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +403 -3
- package/dist/resources/extensions/gsd/unit-context-manifest.js +8 -3
- package/dist/resources/extensions/gsd/validation-block-guard.js +2 -0
- package/dist/resources/extensions/gsd/verdict-parser.js +59 -15
- package/dist/resources/extensions/gsd/verification-gate.js +72 -1
- package/dist/resources/extensions/gsd/workflow-mcp-auto-prep.js +3 -1
- package/dist/resources/extensions/gsd/workflow-mcp.js +5 -1
- package/dist/resources/extensions/gsd/worktree-lifecycle.js +24 -0
- package/dist/resources/extensions/mcp-client/manager.js +31 -1
- package/dist/resources/extensions/shared/gsd-browser-cli.js +145 -0
- package/dist/rtk.d.ts +7 -1
- package/dist/rtk.js +27 -11
- package/dist/update-check.d.ts +15 -1
- package/dist/update-check.js +87 -12
- package/dist/update-cmd.d.ts +1 -0
- package/dist/update-cmd.js +53 -2
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +6 -6
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +6 -6
- package/dist/web/standalone/.next/server/chunks/8357.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/package.json +5 -3
- package/packages/cloud-mcp-gateway/package.json +2 -2
- package/packages/contracts/dist/workflow.d.ts +14 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -1
- package/packages/contracts/dist/workflow.js +16 -0
- package/packages/contracts/dist/workflow.js.map +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/daemon/package.json +4 -4
- package/packages/gsd-agent-core/dist/agent-session.d.ts +9 -0
- package/packages/gsd-agent-core/dist/agent-session.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/agent-session.js +32 -0
- package/packages/gsd-agent-core/dist/agent-session.js.map +1 -1
- package/packages/gsd-agent-core/dist/index.d.ts +1 -0
- package/packages/gsd-agent-core/dist/index.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/index.js +1 -0
- package/packages/gsd-agent-core/dist/index.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-compaction.d.ts +2 -0
- package/packages/gsd-agent-core/dist/session/agent-session-compaction.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-compaction.js +8 -2
- package/packages/gsd-agent-core/dist/session/agent-session-compaction.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts +7 -0
- package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-host.js.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts.map +1 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js +69 -1
- package/packages/gsd-agent-core/dist/session/agent-session-prompt.js.map +1 -1
- package/packages/gsd-agent-core/dist/turn-latency.d.ts +47 -0
- package/packages/gsd-agent-core/dist/turn-latency.d.ts.map +1 -0
- package/packages/gsd-agent-core/dist/turn-latency.js +123 -0
- package/packages/gsd-agent-core/dist/turn-latency.js.map +1 -0
- package/packages/gsd-agent-core/package.json +6 -6
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts +21 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.d.ts.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js +213 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/__prototype__/gsd-widget-prototype.js.map +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js +10 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +92 -31
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js +7 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/controllers/input-controller.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-command-handlers.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-command-handlers.js +6 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-command-handlers.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js +2 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +1 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.d.ts.map +1 -1
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js +5 -0
- package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-settings.js.map +1 -1
- package/packages/gsd-agent-modes/package.json +7 -7
- package/packages/mcp-server/dist/remote-questions.d.ts.map +1 -1
- package/packages/mcp-server/dist/remote-questions.js +23 -9
- package/packages/mcp-server/dist/remote-questions.js.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +84 -2
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +3 -3
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/dist/agent-loop.js +38 -0
- package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/packages/pi-agent-core/dist/agent.d.ts +5 -1
- package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/agent.js +2 -0
- package/packages/pi-agent-core/dist/agent.js.map +1 -1
- package/packages/pi-agent-core/dist/types.d.ts +3 -0
- package/packages/pi-agent-core/dist/types.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/types.js.map +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/dist/api-registry.d.ts +2 -0
- package/packages/pi-ai/dist/api-registry.d.ts.map +1 -1
- package/packages/pi-ai/dist/api-registry.js +23 -0
- package/packages/pi-ai/dist/api-registry.js.map +1 -1
- package/packages/pi-ai/dist/image-models.generated.d.ts +15 -0
- package/packages/pi-ai/dist/image-models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/image-models.generated.js +15 -0
- package/packages/pi-ai/dist/image-models.generated.js.map +1 -1
- package/packages/pi-ai/dist/models.generated.d.ts +406 -17
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +484 -116
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/dist/stream.js +6 -6
- package/packages/pi-ai/dist/stream.js.map +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.js +2 -2
- package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +11 -0
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/package.json +7 -7
- package/packages/pi-tui/dist/terminal.d.ts +1 -0
- package/packages/pi-tui/dist/terminal.d.ts.map +1 -1
- package/packages/pi-tui/dist/terminal.js +8 -4
- package/packages/pi-tui/dist/terminal.js.map +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/rpc-client/package.json +2 -2
- package/pkg/package.json +1 -1
- package/src/resources/extensions/browser-tools/engine/managed-gsd-browser.ts +579 -0
- package/src/resources/extensions/browser-tools/engine/selection.ts +19 -0
- package/src/resources/extensions/browser-tools/extension-manifest.json +2 -2
- package/src/resources/extensions/browser-tools/index.ts +60 -9
- package/src/resources/extensions/browser-tools/package.json +5 -1
- package/src/resources/extensions/browser-tools/tests/browser-engine-selection.test.mjs +35 -0
- package/src/resources/extensions/browser-tools/tests/managed-gsd-browser-tools.test.mjs +33 -0
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +196 -16
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +239 -63
- package/src/resources/extensions/gsd/auto/orchestrator.ts +0 -1
- package/src/resources/extensions/gsd/auto/phases.ts +5 -3
- package/src/resources/extensions/gsd/auto-dashboard.ts +98 -18
- package/src/resources/extensions/gsd/auto-dispatch.ts +53 -0
- package/src/resources/extensions/gsd/auto-post-unit.ts +166 -9
- package/src/resources/extensions/gsd/auto-prompts.ts +102 -15
- package/src/resources/extensions/gsd/auto-recovery.ts +4 -4
- package/src/resources/extensions/gsd/auto-runtime-state.ts +4 -0
- package/src/resources/extensions/gsd/auto-start.ts +112 -17
- package/src/resources/extensions/gsd/auto-tool-tracking.ts +1 -1
- package/src/resources/extensions/gsd/auto-unit-tool-scope.ts +2 -1
- package/src/resources/extensions/gsd/auto.ts +47 -5
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +90 -4
- package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +51 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +60 -19
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +21 -10
- package/src/resources/extensions/gsd/browser-evidence.ts +26 -2
- package/src/resources/extensions/gsd/commands/catalog.ts +6 -1
- package/src/resources/extensions/gsd/commands/handlers/core.ts +6 -2
- package/src/resources/extensions/gsd/commands/handlers/ops.ts +9 -5
- package/src/resources/extensions/gsd/commands-handlers.ts +76 -11
- package/src/resources/extensions/gsd/commands-maintenance.ts +197 -2
- package/src/resources/extensions/gsd/commands-mcp-status.ts +136 -58
- package/src/resources/extensions/gsd/commands-prefs-wizard.ts +4 -1
- package/src/resources/extensions/gsd/commands-verdict.ts +1 -1
- package/src/resources/extensions/gsd/config-overlay.ts +3 -1
- package/src/resources/extensions/gsd/dashboard-overlay.ts +28 -7
- package/src/resources/extensions/gsd/docs/preferences-reference.md +8 -0
- package/src/resources/extensions/gsd/doctor-runtime-checks.ts +2 -2
- package/src/resources/extensions/gsd/error-classifier.ts +2 -1
- package/src/resources/extensions/gsd/escalation.ts +4 -4
- package/src/resources/extensions/gsd/exec-sandbox.ts +4 -0
- package/src/resources/extensions/gsd/forensics.ts +99 -5
- package/src/resources/extensions/gsd/gsd-db.ts +46 -8
- package/src/resources/extensions/gsd/guided-flow.ts +91 -83
- package/src/resources/extensions/gsd/mcp-filter.ts +3 -0
- package/src/resources/extensions/gsd/mcp-project-config.ts +105 -88
- package/src/resources/extensions/gsd/memory-store.ts +4 -1
- package/src/resources/extensions/gsd/migration-auto-check.ts +2 -2
- package/src/resources/extensions/gsd/post-unit-hooks.ts +14 -1
- package/src/resources/extensions/gsd/preferences-types.ts +1 -1
- package/src/resources/extensions/gsd/preferences-validation.ts +36 -0
- package/src/resources/extensions/gsd/prompt-loader.ts +8 -0
- package/src/resources/extensions/gsd/prompts/forensics.md +61 -1
- package/src/resources/extensions/gsd/prompts/gate-evaluate.md +3 -1
- package/src/resources/extensions/gsd/prompts/parallel-research-slices.md +3 -1
- package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
- package/src/resources/extensions/gsd/prompts/reactive-execute.md +3 -1
- package/src/resources/extensions/gsd/prompts/run-uat.md +48 -24
- package/src/resources/extensions/gsd/prompts/system.md +3 -1
- package/src/resources/extensions/gsd/prompts/validate-milestone.md +3 -3
- package/src/resources/extensions/gsd/rule-registry.ts +558 -58
- package/src/resources/extensions/gsd/rule-types.ts +2 -0
- package/src/resources/extensions/gsd/safety/destructive-guard.ts +3 -0
- package/src/resources/extensions/gsd/skill-activation.ts +20 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +4 -2
- package/src/resources/extensions/gsd/state-reconciliation/drift/project-md.ts +1 -1
- package/src/resources/extensions/gsd/state-reconciliation/drift/roadmap.ts +20 -0
- package/src/resources/extensions/gsd/state-reconciliation/index.ts +6 -0
- package/src/resources/extensions/gsd/state-reconciliation/types.ts +1 -0
- package/src/resources/extensions/gsd/state.ts +18 -14
- package/src/resources/extensions/gsd/templates/plan.md +3 -1
- package/src/resources/extensions/gsd/tests/auto-dashboard.test.ts +156 -4
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +123 -0
- package/src/resources/extensions/gsd/tests/auto-start-orphan-bootstrap.test.ts +143 -2
- package/src/resources/extensions/gsd/tests/auto-start-project-milestone-reconcile.test.ts +24 -2
- package/src/resources/extensions/gsd/tests/browser-evidence.test.ts +142 -0
- package/src/resources/extensions/gsd/tests/commands-dispatcher-validation-block.test.ts +38 -3
- package/src/resources/extensions/gsd/tests/commands-verdict.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/complete-milestone-excerpt.test.ts +30 -0
- package/src/resources/extensions/gsd/tests/complete-slice-verification-gate.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +45 -0
- package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +53 -0
- package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +50 -13
- package/src/resources/extensions/gsd/tests/discuss-milestone-structured-questions.test.ts +31 -0
- package/src/resources/extensions/gsd/tests/dispatch-missing-task-plans.test.ts +60 -0
- package/src/resources/extensions/gsd/tests/doctor-runtime-checks.test.ts +27 -0
- package/src/resources/extensions/gsd/tests/escalation.test.ts +16 -27
- package/src/resources/extensions/gsd/tests/exec-sandbox.test.ts +18 -0
- package/src/resources/extensions/gsd/tests/exec-tool.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/forensics-issue-routing.test.ts +20 -0
- package/src/resources/extensions/gsd/tests/forensics-prompt-rendering.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/forensics-tool-scope.test.ts +69 -0
- package/src/resources/extensions/gsd/tests/gsd-rebuild.test.ts +199 -0
- package/src/resources/extensions/gsd/tests/gsd-recover.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +40 -1
- package/src/resources/extensions/gsd/tests/guided-dispatch-root.test.ts +86 -0
- package/src/resources/extensions/gsd/tests/guided-flow.test.ts +12 -9
- package/src/resources/extensions/gsd/tests/integration/auto-recovery.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/integration/run-uat.test.ts +66 -10
- package/src/resources/extensions/gsd/tests/integration/state-machine-live-validation.test.ts +13 -6
- package/src/resources/extensions/gsd/tests/mcp-filter.test.ts +15 -0
- package/src/resources/extensions/gsd/tests/mcp-project-config.test.ts +100 -0
- package/src/resources/extensions/gsd/tests/mcp-status.test.ts +179 -0
- package/src/resources/extensions/gsd/tests/memory-maintenance.test.ts +39 -8
- package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/new-milestone-discuss-routing.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +54 -7
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +9 -0
- package/src/resources/extensions/gsd/tests/plan-slice.test.ts +39 -1
- package/src/resources/extensions/gsd/tests/post-unit-hooks.test.ts +157 -0
- package/src/resources/extensions/gsd/tests/post-unit-retry-on-orchestrator-bridge.test.ts +179 -0
- package/src/resources/extensions/gsd/tests/preferences.test.ts +29 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +53 -1
- package/src/resources/extensions/gsd/tests/prompt-loader-extension-dir.test.ts +14 -0
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +18 -1
- package/src/resources/extensions/gsd/tests/queued-discuss-fast-path.test.ts +7 -8
- package/src/resources/extensions/gsd/tests/reactive-executor.test.ts +36 -0
- package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +35 -0
- package/src/resources/extensions/gsd/tests/restore-tools-after-discuss.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/rule-registry.test.ts +75 -0
- package/src/resources/extensions/gsd/tests/session-start-footer.test.ts +100 -0
- package/src/resources/extensions/gsd/tests/skill-activation.test.ts +55 -0
- package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +6 -2
- package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +191 -0
- package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +84 -10
- package/src/resources/extensions/gsd/tests/tool-invocation-error-loop-break.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/tool-naming.test.ts +12 -2
- package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +7 -1
- package/src/resources/extensions/gsd/tests/tui-header-lifecycle.test.ts +29 -6
- package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +29 -6
- package/src/resources/extensions/gsd/tests/validate-milestone-prompt-verification-classes.test.ts +6 -3
- package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +133 -0
- package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +21 -0
- package/src/resources/extensions/gsd/tests/verification-gate.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp-auto-prep.test.ts +17 -2
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +213 -0
- package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +25 -0
- package/src/resources/extensions/gsd/tool-presentation-plan.ts +167 -0
- package/src/resources/extensions/gsd/tools/complete-slice.ts +14 -1
- package/src/resources/extensions/gsd/tools/complete-task.ts +20 -2
- package/src/resources/extensions/gsd/tools/exec-tool.ts +130 -0
- package/src/resources/extensions/gsd/tools/plan-slice.ts +14 -9
- package/src/resources/extensions/gsd/tools/reopen-milestone.ts +2 -2
- package/src/resources/extensions/gsd/tools/validate-milestone.ts +46 -15
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +489 -3
- package/src/resources/extensions/gsd/types.ts +69 -5
- package/src/resources/extensions/gsd/unit-context-manifest.ts +14 -5
- package/src/resources/extensions/gsd/validation-block-guard.ts +2 -0
- package/src/resources/extensions/gsd/verdict-parser.ts +54 -13
- package/src/resources/extensions/gsd/verification-gate.ts +87 -1
- package/src/resources/extensions/gsd/workflow-mcp-auto-prep.ts +2 -1
- package/src/resources/extensions/gsd/workflow-mcp.ts +5 -1
- package/src/resources/extensions/gsd/worktree-lifecycle.ts +26 -0
- package/src/resources/extensions/mcp-client/manager.ts +33 -1
- package/src/resources/extensions/mcp-client/tests/manager.test.ts +35 -0
- package/src/resources/extensions/shared/gsd-browser-cli.ts +172 -0
- /package/dist/web/standalone/.next/static/{L9N5SPFi7f-Ne4u2uXzCe → jBtwT9v1u2lUA3UEOy_ZH}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{L9N5SPFi7f-Ne4u2uXzCe → jBtwT9v1u2lUA3UEOy_ZH}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../src/agent-session.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AgentSession - Core abstraction for agent lifecycle and session management.\n *\n * This class is shared between all run modes (interactive, print, rpc).\n * It encapsulates:\n * - Agent state access\n * - Event subscription with automatic session persistence\n * - Model and thinking level management\n * - Compaction (manual and auto)\n * - Bash execution\n * - Session switching and branching\n *\n * Modes use this class and add their own I/O layer on top.\n */\n\nimport type {\n\tAgent,\n\tAgentMessage,\n\tAgentState,\n\tAgentTool,\n\tThinkingLevel,\n} from \"@gsd/pi-agent-core\";\nimport type { AssistantMessage, ImageContent, Model, TextContent } from \"@gsd/pi-ai\";\nimport type { BashResult } from \"./bash-executor.js\";\nimport type { CompactionResult } from \"./compaction/index.js\";\nimport type {\n\tContextUsage,\n\tExtensionCommandContextActions,\n\tExtensionErrorListener,\n\tExtensionRunner,\n\tExtensionUIContext,\n\tReplacedSessionContext,\n\tSessionStartEvent,\n\tShutdownHandler,\n\tToolDefinition,\n\tToolInfo,\n} from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport type { BashExecutionMessage, CustomMessage } from \"@gsd/pi-coding-agent/core/messages.js\";\nimport type { ModelRegistry } from \"@gsd/pi-coding-agent/core/model-registry.js\";\nimport type { PromptTemplate } from \"@gsd/pi-coding-agent/core/prompt-templates.js\";\nimport type { ResourceLoader } from \"@gsd/pi-coding-agent/core/resource-loader.js\";\nimport type { BranchSummaryEntry, SessionManager } from \"@gsd/pi-coding-agent/core/session-manager.js\";\nimport type { SettingsManager } from \"@gsd/pi-coding-agent/core/settings-manager.js\";\nimport type { BuildSystemPromptOptions } from \"./system-prompt.js\";\nimport type { BashOperations } from \"@gsd/pi-coding-agent/core/tools/bash.js\";\nimport {\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ExtensionBindings,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\ttype SessionStateChangeReason,\n\ttype SessionStats,\n\ttype ToolDefinitionEntry,\n\tparseSkillBlock,\n} from \"./session/agent-session-types.js\";\nimport type { AgentSessionHost } from \"./session/agent-session-host.js\";\nimport { AgentSessionEventsModule } from \"./session/agent-session-events.js\";\nimport { AgentSessionPromptModule } from \"./session/agent-session-prompt.js\";\nimport { AgentSessionModelModule } from \"./session/agent-session-model.js\";\nimport { AgentSessionCompactionModule } from \"./session/agent-session-compaction.js\";\nimport { AgentSessionNavigationModule } from \"./session/agent-session-navigation.js\";\nimport { AgentSessionExtensionsModule } from \"./session/agent-session-extensions.js\";\nimport { AgentSessionBashModule } from \"./session/agent-session-bash.js\";\n\nexport type {\n\tAgentSessionConfig,\n\tAgentSessionEvent,\n\tAgentSessionEventListener,\n\tExtensionBindings,\n\tModelCycleResult,\n\tParsedSkillBlock,\n\tPromptOptions,\n\tSessionStateChangeReason,\n\tSessionStats,\n} from \"./session/agent-session-types.js\";\nexport { parseSkillBlock } from \"./session/agent-session-types.js\";\n\nexport class AgentSession implements AgentSessionHost {\n\treadonly agent: Agent;\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\n\t_scopedModels: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\n\t_unsubscribeAgent: (() => void) | undefined;\n\t_eventListeners: AgentSessionEventListener[] = [];\n\t_steeringMessages: string[] = [];\n\t_followUpMessages: string[] = [];\n\t_pendingNextTurnMessages: CustomMessage[] = [];\n\n\t_compactionAbortController: AbortController | undefined = undefined;\n\t_autoCompactionAbortController: AbortController | undefined = undefined;\n\t_overflowRecoveryAttempted = false;\n\t_branchSummaryAbortController: AbortController | undefined = undefined;\n\n\t_retryAbortController: AbortController | undefined = undefined;\n\t_retryAttempt = 0;\n\t_lastTurnCost = 0;\n\n\t_bashAbortController: AbortController | undefined = undefined;\n\t_pendingBashMessages: BashExecutionMessage[] = [];\n\n\t_extensionRunner!: ExtensionRunner;\n\t_turnIndex = 0;\n\n\t_resourceLoader: ResourceLoader;\n\t_customTools: ToolDefinition[];\n\t_baseToolDefinitions: Map<string, ToolDefinition> = new Map();\n\t_cwd: string;\n\t_extensionRunnerRef: { current?: ExtensionRunner } | undefined;\n\t_initialActiveToolNames: string[] | undefined;\n\t_allowedToolNames: Set<string> | undefined;\n\t_baseToolsOverride: Record<string, AgentTool> | undefined;\n\t_sessionStartEvent: SessionStartEvent;\n\t_extensionUIContext: ExtensionUIContext | undefined;\n\t_extensionCommandContextActions: ExtensionCommandContextActions | undefined;\n\t_extensionAbortHandler: (() => void) | undefined;\n\t_extensionShutdownHandler: ShutdownHandler | undefined;\n\t_extensionErrorListener: ExtensionErrorListener | undefined;\n\t_extensionErrorUnsubscriber: (() => void) | undefined;\n\t_visibleSkillNames: string[] | undefined;\n\n\t_modelRegistry: ModelRegistry;\n\n\t_toolRegistry: Map<string, AgentTool> = new Map();\n\t_toolDefinitions: Map<string, ToolDefinitionEntry> = new Map();\n\t_toolPromptSnippets: Map<string, string> = new Map();\n\t_toolPromptGuidelines: Map<string, string[]> = new Map();\n\n\t_baseSystemPrompt = \"\";\n\t_baseSystemPromptOptions!: BuildSystemPromptOptions;\n\t_lastAssistantMessage: AssistantMessage | undefined = undefined;\n\n\tprivate readonly _events = new AgentSessionEventsModule(this);\n\tprivate readonly _prompt = new AgentSessionPromptModule(this);\n\tprivate readonly _model = new AgentSessionModelModule(this);\n\tprivate readonly _compaction = new AgentSessionCompactionModule(this);\n\tprivate readonly _navigation = new AgentSessionNavigationModule(this);\n\tprivate readonly _extensions = new AgentSessionExtensionsModule(this);\n\tprivate readonly _bash = new AgentSessionBashModule(this);\n\n\tconstructor(config: AgentSessionConfig) {\n\t\tthis.agent = config.agent;\n\t\tthis.sessionManager = config.sessionManager;\n\t\tthis.settingsManager = config.settingsManager;\n\t\tthis._scopedModels = config.scopedModels ?? [];\n\t\tthis._resourceLoader = config.resourceLoader;\n\t\tthis._customTools = config.customTools ?? [];\n\t\tthis._cwd = config.cwd;\n\t\tthis._modelRegistry = config.modelRegistry;\n\t\tthis._extensionRunnerRef = config.extensionRunnerRef;\n\t\tthis._initialActiveToolNames = config.initialActiveToolNames;\n\t\tthis._allowedToolNames = config.allowedToolNames ? new Set(config.allowedToolNames) : undefined;\n\t\tthis._baseToolsOverride = config.baseToolsOverride;\n\t\tthis._sessionStartEvent = config.sessionStartEvent ?? { type: \"session_start\", reason: \"startup\" };\n\n\t\tthis._unsubscribeAgent = this.agent.subscribe(this._events.handleAgentEvent);\n\t\tthis._extensions.installAgentToolHooks();\n\t\tthis._extensions.buildRuntime({\n\t\t\tactiveToolNames: this._initialActiveToolNames,\n\t\t\tincludeAllExtensionTools: true,\n\t\t});\n\t}\n\n\tget modelRegistry(): ModelRegistry {\n\t\treturn this._modelRegistry;\n\t}\n\n\tget state(): AgentState {\n\t\treturn this.agent.state;\n\t}\n\n\tget model(): Model<any> | undefined {\n\t\treturn this.agent.state.model;\n\t}\n\n\tget thinkingLevel(): ThinkingLevel {\n\t\treturn this.agent.state.thinkingLevel;\n\t}\n\n\tget isStreaming(): boolean {\n\t\treturn this.agent.state.isStreaming;\n\t}\n\n\tget systemPrompt(): string {\n\t\treturn this.agent.state.systemPrompt;\n\t}\n\n\tget retryAttempt(): number {\n\t\treturn this._retryAttempt;\n\t}\n\n\tget isCompacting(): boolean {\n\t\treturn (\n\t\t\tthis._autoCompactionAbortController !== undefined ||\n\t\t\tthis._compactionAbortController !== undefined ||\n\t\t\tthis._branchSummaryAbortController !== undefined\n\t\t);\n\t}\n\n\tget messages(): AgentMessage[] {\n\t\treturn this.agent.state.messages;\n\t}\n\n\tget steeringMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.agent.steeringMode;\n\t}\n\n\tget followUpMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.agent.followUpMode;\n\t}\n\n\tget sessionFile(): string | undefined {\n\t\treturn this.sessionManager.getSessionFile();\n\t}\n\n\tget sessionId(): string {\n\t\treturn this.sessionManager.getSessionId();\n\t}\n\n\tget sessionName(): string | undefined {\n\t\treturn this.sessionManager.getSessionName();\n\t}\n\n\tget scopedModels(): ReadonlyArray<{ model: Model<any>; thinkingLevel?: ThinkingLevel }> {\n\t\treturn this._scopedModels;\n\t}\n\n\tget promptTemplates(): ReadonlyArray<PromptTemplate> {\n\t\treturn this._resourceLoader.getPrompts().prompts;\n\t}\n\n\tget pendingMessageCount(): number {\n\t\treturn this._steeringMessages.length + this._followUpMessages.length;\n\t}\n\n\tget resourceLoader(): ResourceLoader {\n\t\treturn this._resourceLoader;\n\t}\n\n\tget extensionRunner(): ExtensionRunner {\n\t\treturn this._extensionRunner;\n\t}\n\n\t// AgentSessionHost cross-module surface\n\temit(event: AgentSessionEvent): void {\n\t\tthis._events.emit(event);\n\t}\n\n\temitQueueUpdate(): void {\n\t\tthis._events.emitQueueUpdate();\n\t}\n\n\tdisconnectFromAgent(): void {\n\t\tthis._events.disconnectFromAgent();\n\t}\n\n\treconnectToAgent(): void {\n\t\tthis._events.reconnectToAgent();\n\t}\n\n\tisRetryableError(message: AssistantMessage): boolean {\n\t\treturn this._prompt.isRetryableError(message);\n\t}\n\n\trunAgentPrompt(messages: AgentMessage | AgentMessage[]): Promise<void> {\n\t\treturn this._prompt.runAgentPrompt(messages);\n\t}\n\n\thandlePostAgentRun(): Promise<boolean> {\n\t\treturn this._prompt.handlePostAgentRun();\n\t}\n\n\tflushPendingBashMessages(): void {\n\t\tthis._bash.flushPendingBashMessages();\n\t}\n\n\tcheckCompaction(assistantMessage: AssistantMessage, skipAbortedCheck?: boolean): Promise<boolean> {\n\t\treturn this._compaction.checkCompaction(assistantMessage, skipAbortedCheck);\n\t}\n\n\tgetCompactionRequestAuth(model: Model<any>): Promise<{ apiKey?: string; headers?: Record<string, string> }> {\n\t\treturn this._model.getCompactionRequestAuth(model);\n\t}\n\n\tgetRequiredRequestAuth(model: Model<any>): Promise<{ apiKey: string; headers?: Record<string, string> }> {\n\t\treturn this._model.getRequiredRequestAuth(model);\n\t}\n\n\temitModelSelect(\n\t\tnextModel: Model<any>,\n\t\tpreviousModel: Model<any> | undefined,\n\t\tsource: \"set\" | \"cycle\" | \"restore\",\n\t): Promise<void> {\n\t\treturn this._model.emitModelSelect(nextModel, previousModel, source);\n\t}\n\n\tfindLastAssistantMessage(): AssistantMessage | undefined {\n\t\treturn this._events.findLastAssistantMessage();\n\t}\n\n\tsetThinkingLevel(level: ThinkingLevel): void {\n\t\tthis._model.setThinkingLevel(level);\n\t}\n\n\tgetAvailableThinkingLevels(): ThinkingLevel[] {\n\t\treturn this._model.getAvailableThinkingLevels();\n\t}\n\n\tclampThinkingLevel(level: ThinkingLevel, availableLevels: ThinkingLevel[]): ThinkingLevel {\n\t\treturn this._model.clampThinkingLevel(level, availableLevels);\n\t}\n\n\tsupportsThinking(): boolean {\n\t\treturn this._model.supportsThinking();\n\t}\n\n\tgetActiveToolNames(): string[] {\n\t\treturn this._extensions.getActiveToolNames();\n\t}\n\n\tsetActiveToolsByName(toolNames: string[]): void {\n\t\tthis._extensions.setActiveToolsByName(toolNames);\n\t}\n\n\trebuildSystemPrompt(toolNames: string[]): string {\n\t\treturn this._extensions.rebuildSystemPrompt(toolNames);\n\t}\n\n\trefreshToolRegistry(options?: { activeToolNames?: string[]; includeAllExtensionTools?: boolean }): void {\n\t\tthis._extensions.refreshToolRegistry(options);\n\t}\n\n\tbuildRuntime(options: {\n\t\tactiveToolNames?: string[];\n\t\tflagValues?: Map<string, boolean | string>;\n\t\tincludeAllExtensionTools?: boolean;\n\t}): void {\n\t\tthis._extensions.buildRuntime(options);\n\t}\n\n\tinstallAgentToolHooks(): void {\n\t\tthis._extensions.installAgentToolHooks();\n\t}\n\n\temitSessionStartWithLegacySwitch(event: SessionStartEvent & { reason: \"new\" | \"resume\" }): Promise<void> {\n\t\treturn this._extensions.emitSessionStartWithLegacySwitch(event);\n\t}\n\n\textendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void> {\n\t\treturn this._extensions.extendResourcesFromExtensions(reason);\n\t}\n\n\t// Public API\n\tsubscribe(listener: AgentSessionEventListener): () => void {\n\t\treturn this._events.subscribe(listener);\n\t}\n\n\tdispose(): void {\n\t\tthis._events.dispose();\n\t}\n\n\tgetAllTools(): ToolInfo[] {\n\t\treturn this._extensions.getAllTools();\n\t}\n\n\tgetToolDefinition(name: string): ToolDefinition | undefined {\n\t\treturn this._extensions.getToolDefinition(name);\n\t}\n\n\tsetScopedModels(scopedModels: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>): void {\n\t\tthis._model.setScopedModels(scopedModels);\n\t}\n\n\tprompt(text: string, options?: PromptOptions): Promise<void> {\n\t\treturn this._prompt.prompt(text, options);\n\t}\n\n\tsteer(text: string, images?: ImageContent[]): Promise<void> {\n\t\treturn this._prompt.steer(text, images);\n\t}\n\n\tfollowUp(text: string, images?: ImageContent[]): Promise<void> {\n\t\treturn this._prompt.followUp(text, images);\n\t}\n\n\tsendCustomMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void> {\n\t\treturn this._prompt.sendCustomMessage(message, options);\n\t}\n\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\" },\n\t): Promise<void> {\n\t\treturn this._prompt.sendUserMessage(content, options);\n\t}\n\n\tclearQueue(): { steering: string[]; followUp: string[] } {\n\t\treturn this._prompt.clearQueue();\n\t}\n\n\tgetSteeringMessages(): readonly string[] {\n\t\treturn this._prompt.getSteeringMessages();\n\t}\n\n\tgetFollowUpMessages(): readonly string[] {\n\t\treturn this._prompt.getFollowUpMessages();\n\t}\n\n\tabort(): Promise<void> {\n\t\treturn this._prompt.abort();\n\t}\n\n\tabortRetry(): void {\n\t\tthis._prompt.abortRetry();\n\t}\n\n\tsetModel(model: Model<any>): Promise<void> {\n\t\treturn this._model.setModel(model);\n\t}\n\n\tcycleModel(direction?: \"forward\" | \"backward\"): Promise<ModelCycleResult | undefined> {\n\t\treturn this._model.cycleModel(direction);\n\t}\n\n\tcycleThinkingLevel(): ThinkingLevel | undefined {\n\t\treturn this._model.cycleThinkingLevel();\n\t}\n\n\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis._prompt.setSteeringMode(mode);\n\t}\n\n\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis._prompt.setFollowUpMode(mode);\n\t}\n\n\tcompact(customInstructions?: string): Promise<CompactionResult> {\n\t\treturn this._compaction.compact(customInstructions);\n\t}\n\n\tabortCompaction(): void {\n\t\tthis._compaction.abortCompaction();\n\t}\n\n\tabortBranchSummary(): void {\n\t\tthis._compaction.abortBranchSummary();\n\t}\n\n\tsetAutoCompactionEnabled(enabled: boolean): void {\n\t\tthis._compaction.setAutoCompactionEnabled(enabled);\n\t}\n\n\tget autoCompactionEnabled(): boolean {\n\t\treturn this._compaction.autoCompactionEnabled;\n\t}\n\n\tbindExtensions(bindings: ExtensionBindings): Promise<void> {\n\t\treturn this._extensions.bindExtensions(bindings);\n\t}\n\n\treload(): Promise<void> {\n\t\treturn this._extensions.reload();\n\t}\n\n\tget isRetrying(): boolean {\n\t\treturn this._prompt.isRetrying;\n\t}\n\n\tget autoRetryEnabled(): boolean {\n\t\treturn this._prompt.autoRetryEnabled;\n\t}\n\n\tsetAutoRetryEnabled(enabled: boolean): void {\n\t\tthis._prompt.setAutoRetryEnabled(enabled);\n\t}\n\n\texecuteBash(\n\t\tcommand: string,\n\t\tonChunk?: (chunk: string) => void,\n\t\toptions?: { excludeFromContext?: boolean; operations?: BashOperations; loginShell?: boolean },\n\t): Promise<BashResult> {\n\t\treturn this._bash.executeBash(command, onChunk, options);\n\t}\n\n\trecordBashResult(command: string, result: BashResult, options?: { excludeFromContext?: boolean }): void {\n\t\tthis._bash.recordBashResult(command, result, options);\n\t}\n\n\tabortBash(): void {\n\t\tthis._bash.abortBash();\n\t}\n\n\tget isBashRunning(): boolean {\n\t\treturn this._bash.isBashRunning;\n\t}\n\n\tget hasPendingBashMessages(): boolean {\n\t\treturn this._bash.hasPendingBashMessages;\n\t}\n\n\tsetSessionName(name: string): void {\n\t\tthis._navigation.setSessionName(name);\n\t}\n\n\tnewSession(options?: {\n\t\tparentSession?: string;\n\t\tsetup?: (sessionManager: SessionManager) => Promise<void>;\n\t\tworkspaceRoot?: string;\n\t\tabortSignal?: AbortSignal;\n\t}): Promise<boolean> {\n\t\treturn this._navigation.newSession(options);\n\t}\n\n\tswitchSession(sessionPath: string): Promise<boolean> {\n\t\treturn this._navigation.switchSession(sessionPath);\n\t}\n\n\tfork(entryId: string): Promise<{ selectedText: string; cancelled: boolean }> {\n\t\treturn this._navigation.fork(entryId);\n\t}\n\n\tgetLastTurnCost(): number {\n\t\treturn this._navigation.getLastTurnCost();\n\t}\n\n\tget editMode(): \"standard\" | \"hashline\" {\n\t\treturn this._navigation.editMode;\n\t}\n\n\tsetEditMode(mode: \"standard\" | \"hashline\"): void {\n\t\tthis._navigation.setEditMode(mode);\n\t}\n\n\tnavigateTree(\n\t\ttargetId: string,\n\t\toptions?: {\n\t\t\tsummarize?: boolean;\n\t\t\tcustomInstructions?: string;\n\t\t\treplaceInstructions?: boolean;\n\t\t\tlabel?: string;\n\t\t},\n\t): Promise<{ editorText?: string; cancelled: boolean; aborted?: boolean; summaryEntry?: BranchSummaryEntry }> {\n\t\treturn this._navigation.navigateTree(targetId, options);\n\t}\n\n\tgetUserMessagesForForking(): Array<{ entryId: string; text: string }> {\n\t\treturn this._navigation.getUserMessagesForForking();\n\t}\n\n\tgetSessionStats(): SessionStats {\n\t\treturn this._navigation.getSessionStats();\n\t}\n\n\tgetContextUsage(): ContextUsage | undefined {\n\t\treturn this._navigation.getContextUsage();\n\t}\n\n\texportToHtml(outputPath?: string): Promise<string> {\n\t\treturn this._navigation.exportToHtml(outputPath);\n\t}\n\n\texportToJsonl(outputPath?: string): string {\n\t\treturn this._navigation.exportToJsonl(outputPath);\n\t}\n\n\tgetLastAssistantText(): string | undefined {\n\t\treturn this._navigation.getLastAssistantText();\n\t}\n\n\tcreateReplacedSessionContext(): ReplacedSessionContext {\n\t\treturn this._extensions.createReplacedSessionContext();\n\t}\n\n\thasExtensionHandlers(eventType: string): boolean {\n\t\treturn this._extensions.hasExtensionHandlers(eventType);\n\t}\n\n\tgetRenderableToolDefinition(toolName: string): ToolDefinition | undefined {\n\t\treturn this._extensions.getRenderableToolDefinition(toolName);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../src/agent-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA6CH,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,GAKtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAazE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,OAAO,YAAY;IACf,KAAK,CAAQ;IACb,cAAc,CAAiB;IAC/B,eAAe,CAAkB;IAE1C,aAAa,CAA8D;IAE3E,iBAAiB,CAA2B;IAC5C,eAAe,GAAgC,EAAE,CAAC;IAClD,iBAAiB,GAAa,EAAE,CAAC;IACjC,iBAAiB,GAAa,EAAE,CAAC;IACjC,wBAAwB,GAAoB,EAAE,CAAC;IAE/C,0BAA0B,GAAgC,SAAS,CAAC;IACpE,8BAA8B,GAAgC,SAAS,CAAC;IACxE,0BAA0B,GAAG,KAAK,CAAC;IACnC,6BAA6B,GAAgC,SAAS,CAAC;IAEvE,qBAAqB,GAAgC,SAAS,CAAC;IAC/D,aAAa,GAAG,CAAC,CAAC;IAClB,aAAa,GAAG,CAAC,CAAC;IAElB,oBAAoB,GAAgC,SAAS,CAAC;IAC9D,oBAAoB,GAA2B,EAAE,CAAC;IAElD,gBAAgB,CAAmB;IACnC,UAAU,GAAG,CAAC,CAAC;IAEf,eAAe,CAAiB;IAChC,YAAY,CAAmB;IAC/B,oBAAoB,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC9D,IAAI,CAAS;IACb,mBAAmB,CAA4C;IAC/D,uBAAuB,CAAuB;IAC9C,iBAAiB,CAA0B;IAC3C,kBAAkB,CAAwC;IAC1D,kBAAkB,CAAoB;IACtC,mBAAmB,CAAiC;IACpD,+BAA+B,CAA6C;IAC5E,sBAAsB,CAA2B;IACjD,yBAAyB,CAA8B;IACvD,uBAAuB,CAAqC;IAC5D,2BAA2B,CAA2B;IACtD,kBAAkB,CAAuB;IAEzC,cAAc,CAAgB;IAE9B,aAAa,GAA2B,IAAI,GAAG,EAAE,CAAC;IAClD,gBAAgB,GAAqC,IAAI,GAAG,EAAE,CAAC;IAC/D,mBAAmB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACrD,qBAAqB,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEzD,iBAAiB,GAAG,EAAE,CAAC;IACvB,wBAAwB,CAA4B;IACpD,qBAAqB,GAAiC,SAAS,CAAC;IAChE,kBAAkB,GAAkC,SAAS,CAAC;IAE7C,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC3C,WAAW,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACrD,WAAW,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACrD,WAAW,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAE1D,YAAY,MAA0B;QACrC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAEnG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAC7B,eAAe,EAAE,IAAI,CAAC,uBAAuB;YAC7C,wBAAwB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;IACvC,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;IACrC,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;IACtC,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY;QACf,OAAO,CACN,IAAI,CAAC,8BAA8B,KAAK,SAAS;YACjD,IAAI,CAAC,0BAA0B,KAAK,SAAS;YAC7C,IAAI,CAAC,6BAA6B,KAAK,SAAS,CAChD,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IAChC,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IAChC,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;IAClD,CAAC;IAED,IAAI,mBAAmB;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACtE,CAAC;IAED,gBAAgB,CAAC,UAAmC,EAAE;QACrD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAChF,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7E,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,kBAAkB,CAAC;IAChC,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,IAA8B;QAC5D,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,uBAAuB,CAAC,IAAY,EAAE,IAA8B;QACnE,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,2BAA2B,CAAC,IAA4B,EAAE,IAA8B;QACvF,2BAA2B,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,iBAAiB,CAAC,MAAyB;QAC1C,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACrC,CAAC;IAED,qBAAqB;QACpB,OAAO,qBAAqB,EAAE,CAAC;IAChC,CAAC;IAED,wBAAwB;QACvB,OAAO,wBAAwB,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC9B,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC,KAAwB;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,eAAe;QACd,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED,mBAAmB;QAClB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACpC,CAAC;IAED,gBAAgB;QACf,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;IAED,gBAAgB,CAAC,OAAyB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,QAAuC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IAED,wBAAwB;QACvB,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;IACvC,CAAC;IAED,eAAe,CAAC,gBAAkC,EAAE,gBAA0B;QAC7E,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC7E,CAAC;IAED,wBAAwB,CAAC,KAAiB;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,sBAAsB,CAAC,KAAiB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,eAAe,CACd,SAAqB,EACrB,aAAqC,EACrC,MAAmC;QAEnC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,wBAAwB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,KAAoB;QACpC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,0BAA0B;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IACjD,CAAC;IAED,kBAAkB,CAAC,KAAoB,EAAE,eAAgC;QACxE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACvC,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;IAC9C,CAAC;IAED,oBAAoB,CAAC,SAAmB;QACvC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,mBAAmB,CAAC,SAAmB;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,mBAAmB,CAAC,OAA4E;QAC/F,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY,CAAC,OAIZ;QACA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,qBAAqB;QACpB,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;IAC1C,CAAC;IAED,gCAAgC,CAAC,KAAuD;QACvF,OAAO,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,6BAA6B,CAAC,MAA4B;QACzD,OAAO,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,aAAa;IACb,SAAS,CAAC,QAAmC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACN,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;IAED,iBAAiB,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,eAAe,CAAC,YAAyE;QACxF,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,OAAuB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,MAAuB;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,MAAuB;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,iBAAiB,CAChB,OAAiF,EACjF,OAAkF;QAElF,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,eAAe,CACd,OAAgD,EAChD,OAA8C;QAE9C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,mBAAmB;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAED,mBAAmB;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU;QACT,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,KAAiB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,UAAU,CAAC,SAAkC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IACzC,CAAC;IAED,eAAe,CAAC,IAA6B;QAC5C,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,IAA6B;QAC5C,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,kBAA2B;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAED,eAAe;QACd,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IACpC,CAAC;IAED,kBAAkB;QACjB,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;IACvC,CAAC;IAED,wBAAwB,CAAC,OAAgB;QACxC,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,qBAAqB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,QAA2B;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAChC,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED,mBAAmB,CAAC,OAAgB;QACnC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,WAAW,CACV,OAAe,EACf,OAAiC,EACjC,OAA6F;QAE7F,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,gBAAgB,CAAC,OAAe,EAAE,MAAkB,EAAE,OAA0C;QAC/F,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,SAAS;QACR,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IACjC,CAAC;IAED,IAAI,sBAAsB;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,IAAY;QAC1B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,OAKV;QACA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,WAAmB;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,IAA6B;QACxC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,CACX,QAAgB,EAChB,OAKC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,yBAAyB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAC;IACrD,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAED,YAAY,CAAC,UAAmB;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,aAAa,CAAC,UAAmB;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,oBAAoB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;IAChD,CAAC;IAED,4BAA4B;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC;IACxD,CAAC;IAED,oBAAoB,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,2BAA2B,CAAC,QAAgB;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;CACD","sourcesContent":["/**\n * AgentSession - Core abstraction for agent lifecycle and session management.\n *\n * This class is shared between all run modes (interactive, print, rpc).\n * It encapsulates:\n * - Agent state access\n * - Event subscription with automatic session persistence\n * - Model and thinking level management\n * - Compaction (manual and auto)\n * - Bash execution\n * - Session switching and branching\n *\n * Modes use this class and add their own I/O layer on top.\n */\n\nimport type {\n\tAgent,\n\tAgentMessage,\n\tAgentState,\n\tAgentTool,\n\tThinkingLevel,\n} from \"@gsd/pi-agent-core\";\nimport type { AssistantMessage, ImageContent, Model, TextContent } from \"@gsd/pi-ai\";\nimport type { BashResult } from \"./bash-executor.js\";\nimport type { CompactionResult } from \"./compaction/index.js\";\nimport type {\n\tContextUsage,\n\tExtensionCommandContextActions,\n\tExtensionErrorListener,\n\tExtensionRunner,\n\tExtensionUIContext,\n\tReplacedSessionContext,\n\tSessionStartEvent,\n\tShutdownHandler,\n\tToolDefinition,\n\tToolInfo,\n} from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport type { BashExecutionMessage, CustomMessage } from \"@gsd/pi-coding-agent/core/messages.js\";\nimport type { ModelRegistry } from \"@gsd/pi-coding-agent/core/model-registry.js\";\nimport type { PromptTemplate } from \"@gsd/pi-coding-agent/core/prompt-templates.js\";\nimport type { ResourceLoader } from \"@gsd/pi-coding-agent/core/resource-loader.js\";\nimport type { BranchSummaryEntry, SessionManager } from \"@gsd/pi-coding-agent/core/session-manager.js\";\nimport type { SettingsManager } from \"@gsd/pi-coding-agent/core/settings-manager.js\";\nimport type { BuildSystemPromptOptions } from \"./system-prompt.js\";\nimport type { BashOperations } from \"@gsd/pi-coding-agent/core/tools/bash.js\";\nimport {\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ExtensionBindings,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\ttype SessionStateChangeReason,\n\ttype SessionStats,\n\ttype ToolDefinitionEntry,\n\tparseSkillBlock,\n} from \"./session/agent-session-types.js\";\nimport {\n\tbeginTurnLatency,\n\tfinishTurnLatency,\n\tformatTurnLatencyRecords,\n\tgetTurnLatencyRecords,\n\tmarkFirstStreamActivity,\n\tmarkFirstVisibleTurnLatency,\n\tmarkTurnLatency,\n\tupdateTurnLatencyModel,\n\ttype BeginTurnLatencyOptions,\n\ttype TurnLatencyRecord,\n\ttype TurnLatencyStatus,\n\ttype TurnLatencyVisibleKind,\n} from \"./turn-latency.js\";\nimport type { AgentSessionHost } from \"./session/agent-session-host.js\";\nimport { AgentSessionEventsModule } from \"./session/agent-session-events.js\";\nimport { AgentSessionPromptModule } from \"./session/agent-session-prompt.js\";\nimport { AgentSessionModelModule } from \"./session/agent-session-model.js\";\nimport { AgentSessionCompactionModule } from \"./session/agent-session-compaction.js\";\nimport { AgentSessionNavigationModule } from \"./session/agent-session-navigation.js\";\nimport { AgentSessionExtensionsModule } from \"./session/agent-session-extensions.js\";\nimport { AgentSessionBashModule } from \"./session/agent-session-bash.js\";\n\nexport type {\n\tAgentSessionConfig,\n\tAgentSessionEvent,\n\tAgentSessionEventListener,\n\tExtensionBindings,\n\tModelCycleResult,\n\tParsedSkillBlock,\n\tPromptOptions,\n\tSessionStateChangeReason,\n\tSessionStats,\n} from \"./session/agent-session-types.js\";\nexport { parseSkillBlock } from \"./session/agent-session-types.js\";\n\nexport class AgentSession implements AgentSessionHost {\n\treadonly agent: Agent;\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\n\t_scopedModels: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\n\t_unsubscribeAgent: (() => void) | undefined;\n\t_eventListeners: AgentSessionEventListener[] = [];\n\t_steeringMessages: string[] = [];\n\t_followUpMessages: string[] = [];\n\t_pendingNextTurnMessages: CustomMessage[] = [];\n\n\t_compactionAbortController: AbortController | undefined = undefined;\n\t_autoCompactionAbortController: AbortController | undefined = undefined;\n\t_overflowRecoveryAttempted = false;\n\t_branchSummaryAbortController: AbortController | undefined = undefined;\n\n\t_retryAbortController: AbortController | undefined = undefined;\n\t_retryAttempt = 0;\n\t_lastTurnCost = 0;\n\n\t_bashAbortController: AbortController | undefined = undefined;\n\t_pendingBashMessages: BashExecutionMessage[] = [];\n\n\t_extensionRunner!: ExtensionRunner;\n\t_turnIndex = 0;\n\n\t_resourceLoader: ResourceLoader;\n\t_customTools: ToolDefinition[];\n\t_baseToolDefinitions: Map<string, ToolDefinition> = new Map();\n\t_cwd: string;\n\t_extensionRunnerRef: { current?: ExtensionRunner } | undefined;\n\t_initialActiveToolNames: string[] | undefined;\n\t_allowedToolNames: Set<string> | undefined;\n\t_baseToolsOverride: Record<string, AgentTool> | undefined;\n\t_sessionStartEvent: SessionStartEvent;\n\t_extensionUIContext: ExtensionUIContext | undefined;\n\t_extensionCommandContextActions: ExtensionCommandContextActions | undefined;\n\t_extensionAbortHandler: (() => void) | undefined;\n\t_extensionShutdownHandler: ShutdownHandler | undefined;\n\t_extensionErrorListener: ExtensionErrorListener | undefined;\n\t_extensionErrorUnsubscriber: (() => void) | undefined;\n\t_visibleSkillNames: string[] | undefined;\n\n\t_modelRegistry: ModelRegistry;\n\n\t_toolRegistry: Map<string, AgentTool> = new Map();\n\t_toolDefinitions: Map<string, ToolDefinitionEntry> = new Map();\n\t_toolPromptSnippets: Map<string, string> = new Map();\n\t_toolPromptGuidelines: Map<string, string[]> = new Map();\n\n\t_baseSystemPrompt = \"\";\n\t_baseSystemPromptOptions!: BuildSystemPromptOptions;\n\t_lastAssistantMessage: AssistantMessage | undefined = undefined;\n\t_activeTurnLatency: TurnLatencyRecord | undefined = undefined;\n\n\tprivate readonly _events = new AgentSessionEventsModule(this);\n\tprivate readonly _prompt = new AgentSessionPromptModule(this);\n\tprivate readonly _model = new AgentSessionModelModule(this);\n\tprivate readonly _compaction = new AgentSessionCompactionModule(this);\n\tprivate readonly _navigation = new AgentSessionNavigationModule(this);\n\tprivate readonly _extensions = new AgentSessionExtensionsModule(this);\n\tprivate readonly _bash = new AgentSessionBashModule(this);\n\n\tconstructor(config: AgentSessionConfig) {\n\t\tthis.agent = config.agent;\n\t\tthis.sessionManager = config.sessionManager;\n\t\tthis.settingsManager = config.settingsManager;\n\t\tthis._scopedModels = config.scopedModels ?? [];\n\t\tthis._resourceLoader = config.resourceLoader;\n\t\tthis._customTools = config.customTools ?? [];\n\t\tthis._cwd = config.cwd;\n\t\tthis._modelRegistry = config.modelRegistry;\n\t\tthis._extensionRunnerRef = config.extensionRunnerRef;\n\t\tthis._initialActiveToolNames = config.initialActiveToolNames;\n\t\tthis._allowedToolNames = config.allowedToolNames ? new Set(config.allowedToolNames) : undefined;\n\t\tthis._baseToolsOverride = config.baseToolsOverride;\n\t\tthis._sessionStartEvent = config.sessionStartEvent ?? { type: \"session_start\", reason: \"startup\" };\n\n\t\tthis._unsubscribeAgent = this.agent.subscribe(this._events.handleAgentEvent);\n\t\tthis._extensions.installAgentToolHooks();\n\t\tthis._extensions.buildRuntime({\n\t\t\tactiveToolNames: this._initialActiveToolNames,\n\t\t\tincludeAllExtensionTools: true,\n\t\t});\n\t}\n\n\tget modelRegistry(): ModelRegistry {\n\t\treturn this._modelRegistry;\n\t}\n\n\tget state(): AgentState {\n\t\treturn this.agent.state;\n\t}\n\n\tget model(): Model<any> | undefined {\n\t\treturn this.agent.state.model;\n\t}\n\n\tget thinkingLevel(): ThinkingLevel {\n\t\treturn this.agent.state.thinkingLevel;\n\t}\n\n\tget isStreaming(): boolean {\n\t\treturn this.agent.state.isStreaming;\n\t}\n\n\tget systemPrompt(): string {\n\t\treturn this.agent.state.systemPrompt;\n\t}\n\n\tget retryAttempt(): number {\n\t\treturn this._retryAttempt;\n\t}\n\n\tget isCompacting(): boolean {\n\t\treturn (\n\t\t\tthis._autoCompactionAbortController !== undefined ||\n\t\t\tthis._compactionAbortController !== undefined ||\n\t\t\tthis._branchSummaryAbortController !== undefined\n\t\t);\n\t}\n\n\tget messages(): AgentMessage[] {\n\t\treturn this.agent.state.messages;\n\t}\n\n\tget steeringMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.agent.steeringMode;\n\t}\n\n\tget followUpMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.agent.followUpMode;\n\t}\n\n\tget sessionFile(): string | undefined {\n\t\treturn this.sessionManager.getSessionFile();\n\t}\n\n\tget sessionId(): string {\n\t\treturn this.sessionManager.getSessionId();\n\t}\n\n\tget sessionName(): string | undefined {\n\t\treturn this.sessionManager.getSessionName();\n\t}\n\n\tget scopedModels(): ReadonlyArray<{ model: Model<any>; thinkingLevel?: ThinkingLevel }> {\n\t\treturn this._scopedModels;\n\t}\n\n\tget promptTemplates(): ReadonlyArray<PromptTemplate> {\n\t\treturn this._resourceLoader.getPrompts().prompts;\n\t}\n\n\tget pendingMessageCount(): number {\n\t\treturn this._steeringMessages.length + this._followUpMessages.length;\n\t}\n\n\tbeginTurnLatency(options: BeginTurnLatencyOptions = {}): TurnLatencyRecord | undefined {\n\t\tif (this._activeTurnLatency && this._activeTurnLatency.endedAtMs === undefined) {\n\t\t\tupdateTurnLatencyModel(this._activeTurnLatency, options.model ?? this.model);\n\t\t\tif (options.trigger) {\n\t\t\t\tmarkTurnLatency(this._activeTurnLatency, \"turn.trigger\", { trigger: options.trigger });\n\t\t\t}\n\t\t\treturn this._activeTurnLatency;\n\t\t}\n\t\tthis._activeTurnLatency = beginTurnLatency({ ...options, model: options.model ?? this.model });\n\t\treturn this._activeTurnLatency;\n\t}\n\n\tmarkTurnLatency(phase: string, data?: Record<string, unknown>): void {\n\t\tmarkTurnLatency(this._activeTurnLatency, phase, data);\n\t}\n\n\tmarkFirstStreamActivity(kind: string, data?: Record<string, unknown>): void {\n\t\tmarkFirstStreamActivity(this._activeTurnLatency, kind, data);\n\t}\n\n\tmarkFirstVisibleTurnLatency(kind: TurnLatencyVisibleKind, data?: Record<string, unknown>): void {\n\t\tmarkFirstVisibleTurnLatency(this._activeTurnLatency, kind, data);\n\t}\n\n\tfinishTurnLatency(status: TurnLatencyStatus): void {\n\t\tfinishTurnLatency(this._activeTurnLatency, status);\n\t\tthis._activeTurnLatency = undefined;\n\t}\n\n\tgetTurnLatencyRecords(): readonly TurnLatencyRecord[] {\n\t\treturn getTurnLatencyRecords();\n\t}\n\n\tformatTurnLatencyRecords(): string {\n\t\treturn formatTurnLatencyRecords();\n\t}\n\n\tget resourceLoader(): ResourceLoader {\n\t\treturn this._resourceLoader;\n\t}\n\n\tget extensionRunner(): ExtensionRunner {\n\t\treturn this._extensionRunner;\n\t}\n\n\t// AgentSessionHost cross-module surface\n\temit(event: AgentSessionEvent): void {\n\t\tthis._events.emit(event);\n\t}\n\n\temitQueueUpdate(): void {\n\t\tthis._events.emitQueueUpdate();\n\t}\n\n\tdisconnectFromAgent(): void {\n\t\tthis._events.disconnectFromAgent();\n\t}\n\n\treconnectToAgent(): void {\n\t\tthis._events.reconnectToAgent();\n\t}\n\n\tisRetryableError(message: AssistantMessage): boolean {\n\t\treturn this._prompt.isRetryableError(message);\n\t}\n\n\trunAgentPrompt(messages: AgentMessage | AgentMessage[]): Promise<void> {\n\t\treturn this._prompt.runAgentPrompt(messages);\n\t}\n\n\thandlePostAgentRun(): Promise<boolean> {\n\t\treturn this._prompt.handlePostAgentRun();\n\t}\n\n\tflushPendingBashMessages(): void {\n\t\tthis._bash.flushPendingBashMessages();\n\t}\n\n\tcheckCompaction(assistantMessage: AssistantMessage, skipAbortedCheck?: boolean): Promise<boolean> {\n\t\treturn this._compaction.checkCompaction(assistantMessage, skipAbortedCheck);\n\t}\n\n\tgetCompactionRequestAuth(model: Model<any>): Promise<{ apiKey?: string; headers?: Record<string, string> }> {\n\t\treturn this._model.getCompactionRequestAuth(model);\n\t}\n\n\tgetRequiredRequestAuth(model: Model<any>): Promise<{ apiKey: string; headers?: Record<string, string> }> {\n\t\treturn this._model.getRequiredRequestAuth(model);\n\t}\n\n\temitModelSelect(\n\t\tnextModel: Model<any>,\n\t\tpreviousModel: Model<any> | undefined,\n\t\tsource: \"set\" | \"cycle\" | \"restore\",\n\t): Promise<void> {\n\t\treturn this._model.emitModelSelect(nextModel, previousModel, source);\n\t}\n\n\tfindLastAssistantMessage(): AssistantMessage | undefined {\n\t\treturn this._events.findLastAssistantMessage();\n\t}\n\n\tsetThinkingLevel(level: ThinkingLevel): void {\n\t\tthis._model.setThinkingLevel(level);\n\t}\n\n\tgetAvailableThinkingLevels(): ThinkingLevel[] {\n\t\treturn this._model.getAvailableThinkingLevels();\n\t}\n\n\tclampThinkingLevel(level: ThinkingLevel, availableLevels: ThinkingLevel[]): ThinkingLevel {\n\t\treturn this._model.clampThinkingLevel(level, availableLevels);\n\t}\n\n\tsupportsThinking(): boolean {\n\t\treturn this._model.supportsThinking();\n\t}\n\n\tgetActiveToolNames(): string[] {\n\t\treturn this._extensions.getActiveToolNames();\n\t}\n\n\tsetActiveToolsByName(toolNames: string[]): void {\n\t\tthis._extensions.setActiveToolsByName(toolNames);\n\t}\n\n\trebuildSystemPrompt(toolNames: string[]): string {\n\t\treturn this._extensions.rebuildSystemPrompt(toolNames);\n\t}\n\n\trefreshToolRegistry(options?: { activeToolNames?: string[]; includeAllExtensionTools?: boolean }): void {\n\t\tthis._extensions.refreshToolRegistry(options);\n\t}\n\n\tbuildRuntime(options: {\n\t\tactiveToolNames?: string[];\n\t\tflagValues?: Map<string, boolean | string>;\n\t\tincludeAllExtensionTools?: boolean;\n\t}): void {\n\t\tthis._extensions.buildRuntime(options);\n\t}\n\n\tinstallAgentToolHooks(): void {\n\t\tthis._extensions.installAgentToolHooks();\n\t}\n\n\temitSessionStartWithLegacySwitch(event: SessionStartEvent & { reason: \"new\" | \"resume\" }): Promise<void> {\n\t\treturn this._extensions.emitSessionStartWithLegacySwitch(event);\n\t}\n\n\textendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void> {\n\t\treturn this._extensions.extendResourcesFromExtensions(reason);\n\t}\n\n\t// Public API\n\tsubscribe(listener: AgentSessionEventListener): () => void {\n\t\treturn this._events.subscribe(listener);\n\t}\n\n\tdispose(): void {\n\t\tthis._events.dispose();\n\t}\n\n\tgetAllTools(): ToolInfo[] {\n\t\treturn this._extensions.getAllTools();\n\t}\n\n\tgetToolDefinition(name: string): ToolDefinition | undefined {\n\t\treturn this._extensions.getToolDefinition(name);\n\t}\n\n\tsetScopedModels(scopedModels: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>): void {\n\t\tthis._model.setScopedModels(scopedModels);\n\t}\n\n\tprompt(text: string, options?: PromptOptions): Promise<void> {\n\t\treturn this._prompt.prompt(text, options);\n\t}\n\n\tsteer(text: string, images?: ImageContent[]): Promise<void> {\n\t\treturn this._prompt.steer(text, images);\n\t}\n\n\tfollowUp(text: string, images?: ImageContent[]): Promise<void> {\n\t\treturn this._prompt.followUp(text, images);\n\t}\n\n\tsendCustomMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void> {\n\t\treturn this._prompt.sendCustomMessage(message, options);\n\t}\n\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\" },\n\t): Promise<void> {\n\t\treturn this._prompt.sendUserMessage(content, options);\n\t}\n\n\tclearQueue(): { steering: string[]; followUp: string[] } {\n\t\treturn this._prompt.clearQueue();\n\t}\n\n\tgetSteeringMessages(): readonly string[] {\n\t\treturn this._prompt.getSteeringMessages();\n\t}\n\n\tgetFollowUpMessages(): readonly string[] {\n\t\treturn this._prompt.getFollowUpMessages();\n\t}\n\n\tabort(): Promise<void> {\n\t\treturn this._prompt.abort();\n\t}\n\n\tabortRetry(): void {\n\t\tthis._prompt.abortRetry();\n\t}\n\n\tsetModel(model: Model<any>): Promise<void> {\n\t\treturn this._model.setModel(model);\n\t}\n\n\tcycleModel(direction?: \"forward\" | \"backward\"): Promise<ModelCycleResult | undefined> {\n\t\treturn this._model.cycleModel(direction);\n\t}\n\n\tcycleThinkingLevel(): ThinkingLevel | undefined {\n\t\treturn this._model.cycleThinkingLevel();\n\t}\n\n\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis._prompt.setSteeringMode(mode);\n\t}\n\n\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis._prompt.setFollowUpMode(mode);\n\t}\n\n\tcompact(customInstructions?: string): Promise<CompactionResult> {\n\t\treturn this._compaction.compact(customInstructions);\n\t}\n\n\tabortCompaction(): void {\n\t\tthis._compaction.abortCompaction();\n\t}\n\n\tabortBranchSummary(): void {\n\t\tthis._compaction.abortBranchSummary();\n\t}\n\n\tsetAutoCompactionEnabled(enabled: boolean): void {\n\t\tthis._compaction.setAutoCompactionEnabled(enabled);\n\t}\n\n\tget autoCompactionEnabled(): boolean {\n\t\treturn this._compaction.autoCompactionEnabled;\n\t}\n\n\tbindExtensions(bindings: ExtensionBindings): Promise<void> {\n\t\treturn this._extensions.bindExtensions(bindings);\n\t}\n\n\treload(): Promise<void> {\n\t\treturn this._extensions.reload();\n\t}\n\n\tget isRetrying(): boolean {\n\t\treturn this._prompt.isRetrying;\n\t}\n\n\tget autoRetryEnabled(): boolean {\n\t\treturn this._prompt.autoRetryEnabled;\n\t}\n\n\tsetAutoRetryEnabled(enabled: boolean): void {\n\t\tthis._prompt.setAutoRetryEnabled(enabled);\n\t}\n\n\texecuteBash(\n\t\tcommand: string,\n\t\tonChunk?: (chunk: string) => void,\n\t\toptions?: { excludeFromContext?: boolean; operations?: BashOperations; loginShell?: boolean },\n\t): Promise<BashResult> {\n\t\treturn this._bash.executeBash(command, onChunk, options);\n\t}\n\n\trecordBashResult(command: string, result: BashResult, options?: { excludeFromContext?: boolean }): void {\n\t\tthis._bash.recordBashResult(command, result, options);\n\t}\n\n\tabortBash(): void {\n\t\tthis._bash.abortBash();\n\t}\n\n\tget isBashRunning(): boolean {\n\t\treturn this._bash.isBashRunning;\n\t}\n\n\tget hasPendingBashMessages(): boolean {\n\t\treturn this._bash.hasPendingBashMessages;\n\t}\n\n\tsetSessionName(name: string): void {\n\t\tthis._navigation.setSessionName(name);\n\t}\n\n\tnewSession(options?: {\n\t\tparentSession?: string;\n\t\tsetup?: (sessionManager: SessionManager) => Promise<void>;\n\t\tworkspaceRoot?: string;\n\t\tabortSignal?: AbortSignal;\n\t}): Promise<boolean> {\n\t\treturn this._navigation.newSession(options);\n\t}\n\n\tswitchSession(sessionPath: string): Promise<boolean> {\n\t\treturn this._navigation.switchSession(sessionPath);\n\t}\n\n\tfork(entryId: string): Promise<{ selectedText: string; cancelled: boolean }> {\n\t\treturn this._navigation.fork(entryId);\n\t}\n\n\tgetLastTurnCost(): number {\n\t\treturn this._navigation.getLastTurnCost();\n\t}\n\n\tget editMode(): \"standard\" | \"hashline\" {\n\t\treturn this._navigation.editMode;\n\t}\n\n\tsetEditMode(mode: \"standard\" | \"hashline\"): void {\n\t\tthis._navigation.setEditMode(mode);\n\t}\n\n\tnavigateTree(\n\t\ttargetId: string,\n\t\toptions?: {\n\t\t\tsummarize?: boolean;\n\t\t\tcustomInstructions?: string;\n\t\t\treplaceInstructions?: boolean;\n\t\t\tlabel?: string;\n\t\t},\n\t): Promise<{ editorText?: string; cancelled: boolean; aborted?: boolean; summaryEntry?: BranchSummaryEntry }> {\n\t\treturn this._navigation.navigateTree(targetId, options);\n\t}\n\n\tgetUserMessagesForForking(): Array<{ entryId: string; text: string }> {\n\t\treturn this._navigation.getUserMessagesForForking();\n\t}\n\n\tgetSessionStats(): SessionStats {\n\t\treturn this._navigation.getSessionStats();\n\t}\n\n\tgetContextUsage(): ContextUsage | undefined {\n\t\treturn this._navigation.getContextUsage();\n\t}\n\n\texportToHtml(outputPath?: string): Promise<string> {\n\t\treturn this._navigation.exportToHtml(outputPath);\n\t}\n\n\texportToJsonl(outputPath?: string): string {\n\t\treturn this._navigation.exportToJsonl(outputPath);\n\t}\n\n\tgetLastAssistantText(): string | undefined {\n\t\treturn this._navigation.getLastAssistantText();\n\t}\n\n\tcreateReplacedSessionContext(): ReplacedSessionContext {\n\t\treturn this._extensions.createReplacedSessionContext();\n\t}\n\n\thasExtensionHandlers(eventType: string): boolean {\n\t\treturn this._extensions.hasExtensionHandlers(eventType);\n\t}\n\n\tgetRenderableToolDefinition(toolName: string): ToolDefinition | undefined {\n\t\treturn this._extensions.getRenderableToolDefinition(toolName);\n\t}\n}\n"]}
|
|
@@ -12,4 +12,5 @@ export { exportFromFile, exportSessionToHtml } from "./export-html/index.js";
|
|
|
12
12
|
export { type CreateAgentSessionOptions, type CreateAgentSessionResult, createAgentSession, } from "./sdk.js";
|
|
13
13
|
export { ContextualTips } from "./contextual-tips.js";
|
|
14
14
|
export * from "./agent-session-runtime.js";
|
|
15
|
+
export { formatTurnLatencyRecords, getTurnLatencyRecords, type TurnLatencyRecord, type TurnLatencyStatus, type TurnLatencyVisibleKind, } from "./turn-latency.js";
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,YAAY,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,sBAAsB,EACtB,8BAA8B,EAC9B,OAAO,EACP,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,KAAK,cAAc,EACnB,YAAY,EACZ,kBAAkB,EAClB,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,KAAK,UAAU,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EACN,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,kBAAkB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACN,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,KAAK,aAAa,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,4BAA4B,GACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACN,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,kBAAkB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,YAAY,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,sBAAsB,EACtB,8BAA8B,EAC9B,OAAO,EACP,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,KAAK,cAAc,EACnB,YAAY,EACZ,kBAAkB,EAClB,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,KAAK,UAAU,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EACN,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,kBAAkB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACN,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,KAAK,aAAa,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,4BAA4B,GACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACN,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,kBAAkB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACN,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,GAC3B,MAAM,mBAAmB,CAAC"}
|
|
@@ -11,4 +11,5 @@ export { exportFromFile, exportSessionToHtml } from "./export-html/index.js";
|
|
|
11
11
|
export { createAgentSession, } from "./sdk.js";
|
|
12
12
|
export { ContextualTips } from "./contextual-tips.js";
|
|
13
13
|
export * from "./agent-session-runtime.js";
|
|
14
|
+
export { formatTurnLatencyRecords, getTurnLatencyRecords, } from "./turn-latency.js";
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EAOZ,eAAe,GAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAMN,sBAAsB,EACtB,8BAA8B,EAC9B,OAAO,EACP,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EAEd,YAAY,EACZ,kBAAkB,EAElB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAmB,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAiC,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAGN,kBAAkB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAuB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACN,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,gBAAgB,GAEhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,GAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAGN,kBAAkB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,cAAc,4BAA4B,CAAC","sourcesContent":["export {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./agent-session.js\";\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateContextTokens,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tprepareCompaction,\n\tserializeConversation,\n\tshouldCompact,\n\ttruncateForSummary,\n} from \"./compaction/index.js\";\nexport type { CompactionPreparation } from \"./compaction/compaction.js\";\nexport { type BashResult, executeBashWithOperations } from \"./bash-executor.js\";\nexport { buildSystemPrompt, type BuildSystemPromptOptions } from \"./system-prompt.js\";\nexport {\n\ttype AppAction,\n\ttype AppKeybinding,\n\tKeybindingsManager,\n} from \"./keybindings.js\";\nexport { FallbackResolver, type FallbackResult } from \"./fallback-resolver.js\";\nexport {\n\tArtifactManager,\n} from \"./artifact-manager.js\";\nexport {\n\tBlobStore,\n\texternalizeImageData,\n\tisBlobRef,\n\tparseBlobRef,\n\tresolveImageData,\n\ttype BlobPutResult,\n} from \"./blob-store.js\";\nexport {\n\tprepareLifecycleHooks,\n\trunLifecycleHooks,\n\treadManifestRuntimeDeps,\n\tcollectRuntimeDependencies,\n\tverifyRuntimeDependencies,\n\tresolveLocalSourcePath,\n\ttype PackageLifecycleHooksOptions,\n} from \"./lifecycle-hooks.js\";\nexport { exportFromFile, exportSessionToHtml } from \"./export-html/index.js\";\nexport {\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\tcreateAgentSession,\n} from \"./sdk.js\";\nexport { ContextualTips } from \"./contextual-tips.js\";\nexport * from \"./agent-session-runtime.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EAOZ,eAAe,GAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAMN,sBAAsB,EACtB,8BAA8B,EAC9B,OAAO,EACP,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EAEd,YAAY,EACZ,kBAAkB,EAElB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAmB,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAiC,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAGN,kBAAkB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAuB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACN,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,gBAAgB,GAEhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,GAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAGN,kBAAkB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACN,wBAAwB,EACxB,qBAAqB,GAIrB,MAAM,mBAAmB,CAAC","sourcesContent":["export {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./agent-session.js\";\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateContextTokens,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tprepareCompaction,\n\tserializeConversation,\n\tshouldCompact,\n\ttruncateForSummary,\n} from \"./compaction/index.js\";\nexport type { CompactionPreparation } from \"./compaction/compaction.js\";\nexport { type BashResult, executeBashWithOperations } from \"./bash-executor.js\";\nexport { buildSystemPrompt, type BuildSystemPromptOptions } from \"./system-prompt.js\";\nexport {\n\ttype AppAction,\n\ttype AppKeybinding,\n\tKeybindingsManager,\n} from \"./keybindings.js\";\nexport { FallbackResolver, type FallbackResult } from \"./fallback-resolver.js\";\nexport {\n\tArtifactManager,\n} from \"./artifact-manager.js\";\nexport {\n\tBlobStore,\n\texternalizeImageData,\n\tisBlobRef,\n\tparseBlobRef,\n\tresolveImageData,\n\ttype BlobPutResult,\n} from \"./blob-store.js\";\nexport {\n\tprepareLifecycleHooks,\n\trunLifecycleHooks,\n\treadManifestRuntimeDeps,\n\tcollectRuntimeDependencies,\n\tverifyRuntimeDependencies,\n\tresolveLocalSourcePath,\n\ttype PackageLifecycleHooksOptions,\n} from \"./lifecycle-hooks.js\";\nexport { exportFromFile, exportSessionToHtml } from \"./export-html/index.js\";\nexport {\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\tcreateAgentSession,\n} from \"./sdk.js\";\nexport { ContextualTips } from \"./contextual-tips.js\";\nexport * from \"./agent-session-runtime.js\";\nexport {\n\tformatTurnLatencyRecords,\n\tgetTurnLatencyRecords,\n\ttype TurnLatencyRecord,\n\ttype TurnLatencyStatus,\n\ttype TurnLatencyVisibleKind,\n} from \"./turn-latency.js\";\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { AssistantMessage } from "@gsd/pi-ai";
|
|
2
|
+
import type { AgentMessage } from "@gsd/pi-agent-core";
|
|
2
3
|
import { type CompactionResult } from "../compaction/index.js";
|
|
3
4
|
import type { AgentSessionHost } from "./agent-session-host.js";
|
|
5
|
+
export declare function resolveThresholdContextTokens(assistantMessage: AssistantMessage, messages: AgentMessage[]): number;
|
|
4
6
|
export declare class AgentSessionCompactionModule {
|
|
5
7
|
readonly host: AgentSessionHost;
|
|
6
8
|
constructor(host: AgentSessionHost);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-compaction.d.ts","sourceRoot":"","sources":["../../src/session/agent-session-compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD,OAAO,EACN,KAAK,gBAAgB,EAMrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,qBAAa,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB;IAErC,OAAO,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmIrE,eAAe,IAAI,IAAI;IAKvB,kBAAkB,IAAI,IAAI;IAIpB,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-compaction.d.ts","sourceRoot":"","sources":["../../src/session/agent-session-compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACN,KAAK,gBAAgB,EAMrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,wBAAgB,6BAA6B,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAGlH;AAED,qBAAa,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB;IAErC,OAAO,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmIrE,eAAe,IAAI,IAAI;IAKvB,kBAAkB,IAAI,IAAI;IAIpB,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAkF9F,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA0L/F,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhD,IAAI,qBAAqB,IAAI,OAAO,CAEnC;CAED"}
|
|
@@ -2,6 +2,10 @@ import { isContextOverflow, streamSimple } from "@gsd/pi-ai";
|
|
|
2
2
|
import { formatNoModelSelectedMessage } from "@gsd/pi-coding-agent/core/auth-guidance.js";
|
|
3
3
|
import { getLatestCompactionEntry } from "@gsd/pi-coding-agent/core/session-manager.js";
|
|
4
4
|
import { calculateContextTokens, compact, estimateContextTokens, prepareCompaction, shouldCompact, } from "../compaction/index.js";
|
|
5
|
+
export function resolveThresholdContextTokens(assistantMessage, messages) {
|
|
6
|
+
const estimate = estimateContextTokens(messages);
|
|
7
|
+
return Math.max(calculateContextTokens(assistantMessage.usage), estimate.tokens);
|
|
8
|
+
}
|
|
5
9
|
export class AgentSessionCompactionModule {
|
|
6
10
|
host;
|
|
7
11
|
constructor(host) {
|
|
@@ -164,7 +168,9 @@ export class AgentSessionCompactionModule {
|
|
|
164
168
|
}
|
|
165
169
|
return await this.runAutoCompaction("overflow", true);
|
|
166
170
|
}
|
|
167
|
-
// Case 2: Threshold - context is getting large
|
|
171
|
+
// Case 2: Threshold - context is getting large.
|
|
172
|
+
// Use the same session estimate as the footer so trailing tool/custom
|
|
173
|
+
// messages after the last provider usage can still trigger compaction.
|
|
168
174
|
// For error messages (no usage data), estimate from last successful response.
|
|
169
175
|
// This ensures sessions that hit persistent API errors (e.g. 529) can still compact.
|
|
170
176
|
let contextTokens;
|
|
@@ -185,7 +191,7 @@ export class AgentSessionCompactionModule {
|
|
|
185
191
|
contextTokens = estimate.tokens;
|
|
186
192
|
}
|
|
187
193
|
else {
|
|
188
|
-
contextTokens =
|
|
194
|
+
contextTokens = resolveThresholdContextTokens(assistantMessage, this.host.agent.state.messages);
|
|
189
195
|
}
|
|
190
196
|
if (shouldCompact(contextTokens, contextWindow, settings)) {
|
|
191
197
|
return await this.runAutoCompaction("threshold", false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-compaction.js","sourceRoot":"","sources":["../../src/session/agent-session-compaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage } from \"@gsd/pi-ai\";\nimport { isContextOverflow, streamSimple } from \"@gsd/pi-ai\";\nimport { formatNoModelSelectedMessage } from \"@gsd/pi-coding-agent/core/auth-guidance.js\";\nimport type { CompactionEntry } from \"@gsd/pi-coding-agent/core/session-manager.js\";\nimport { getLatestCompactionEntry } from \"@gsd/pi-coding-agent/core/session-manager.js\";\nimport type { SessionBeforeCompactResult } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport {\n\ttype CompactionResult,\n\tcalculateContextTokens,\n\tcompact,\n\testimateContextTokens,\n\tprepareCompaction,\n\tshouldCompact,\n} from \"../compaction/index.js\";\nimport type { AgentSessionHost } from \"./agent-session-host.js\";\n\nexport class AgentSessionCompactionModule {\n\tconstructor(readonly host: AgentSessionHost) {}\n\n\tasync compact(customInstructions?: string): Promise<CompactionResult> {\n\t\tthis.host.disconnectFromAgent();\n\t\tawait this.host.abort();\n\t\tthis.host._compactionAbortController = new AbortController();\n\t\tthis.host.emit({ type: \"compaction_start\", reason: \"manual\" });\n\n\t\ttry {\n\t\t\tif (!this.host.model) {\n\t\t\t\tthrow new Error(formatNoModelSelectedMessage());\n\t\t\t}\n\n\t\t\tconst { apiKey, headers } = await this.host.getCompactionRequestAuth(this.host.model);\n\n\t\t\tconst pathEntries = this.host.sessionManager.getBranch();\n\t\t\tconst settings = this.host.settingsManager.getCompactionSettings();\n\n\t\t\tconst preparation = prepareCompaction(pathEntries, settings);\n\t\t\tif (!preparation) {\n\t\t\t\t// Check why we can't compact\n\t\t\t\tconst lastEntry = pathEntries[pathEntries.length - 1];\n\t\t\t\tif (lastEntry?.type === \"compaction\") {\n\t\t\t\t\tthrow new Error(\"Already compacted\");\n\t\t\t\t}\n\t\t\t\tthrow new Error(\"Nothing to compact (session too small)\");\n\t\t\t}\n\n\t\t\tlet extensionCompaction: CompactionResult | undefined;\n\t\t\tlet fromExtension = false;\n\n\t\t\tif (this.host._extensionRunner.hasHandlers(\"session_before_compact\")) {\n\t\t\t\tconst result = (await this.host._extensionRunner.emit({\n\t\t\t\t\ttype: \"session_before_compact\",\n\t\t\t\t\tpreparation,\n\t\t\t\t\tbranchEntries: pathEntries,\n\t\t\t\t\tcustomInstructions,\n\t\t\t\t\tsignal: this.host._compactionAbortController.signal,\n\t\t\t\t})) as SessionBeforeCompactResult | undefined;\n\n\t\t\t\tif (result?.cancel) {\n\t\t\t\t\tthrow new Error(\"Compaction cancelled\");\n\t\t\t\t}\n\n\t\t\t\tif (result?.compaction) {\n\t\t\t\t\textensionCompaction = result.compaction;\n\t\t\t\t\tfromExtension = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet summary: string;\n\t\t\tlet firstKeptEntryId: string;\n\t\t\tlet tokensBefore: number;\n\t\t\tlet details: unknown;\n\n\t\t\tif (extensionCompaction) {\n\t\t\t\t// Extension provided compaction content\n\t\t\t\tsummary = extensionCompaction.summary;\n\t\t\t\tfirstKeptEntryId = extensionCompaction.firstKeptEntryId;\n\t\t\t\ttokensBefore = extensionCompaction.tokensBefore;\n\t\t\t\tdetails = extensionCompaction.details;\n\t\t\t} else {\n\t\t\t\t// Generate compaction result\n\t\t\t\tconst result = await compact(\n\t\t\t\t\tpreparation,\n\t\t\t\t\tthis.host.model,\n\t\t\t\t\tapiKey,\n\t\t\t\t\theaders,\n\t\t\t\t\tcustomInstructions,\n\t\t\t\t\tthis.host._compactionAbortController.signal,\n\t\t\t\t\tthis.host.thinkingLevel,\n\t\t\t\t\tthis.host.agent.streamFn,\n\t\t\t\t);\n\t\t\t\tsummary = result.summary;\n\t\t\t\tfirstKeptEntryId = result.firstKeptEntryId;\n\t\t\t\ttokensBefore = result.tokensBefore;\n\t\t\t\tdetails = result.details;\n\t\t\t}\n\n\t\t\tif (this.host._compactionAbortController.signal.aborted) {\n\t\t\t\tthrow new Error(\"Compaction cancelled\");\n\t\t\t}\n\n\t\t\tthis.host.sessionManager.appendCompaction(summary, firstKeptEntryId, tokensBefore, details, fromExtension);\n\t\t\tconst newEntries = this.host.sessionManager.getEntries();\n\t\t\tconst sessionContext = this.host.sessionManager.buildSessionContext();\n\t\t\tthis.host.agent.state.messages = sessionContext.messages;\n\n\t\t\t// Get the saved compaction entry for the extension event\n\t\t\tconst savedCompactionEntry = newEntries.find((e) => e.type === \"compaction\" && e.summary === summary) as\n\t\t\t\t| CompactionEntry\n\t\t\t\t| undefined;\n\n\t\t\tif (this.host._extensionRunner && savedCompactionEntry) {\n\t\t\t\tawait this.host._extensionRunner.emit({\n\t\t\t\t\ttype: \"session_compact\",\n\t\t\t\t\tcompactionEntry: savedCompactionEntry,\n\t\t\t\t\tfromExtension,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst compactionResult = {\n\t\t\t\tsummary,\n\t\t\t\tfirstKeptEntryId,\n\t\t\t\ttokensBefore,\n\t\t\t\tdetails,\n\t\t\t};\n\t\t\tthis.host.emit({\n\t\t\t\ttype: \"compaction_end\",\n\t\t\t\treason: \"manual\",\n\t\t\t\tresult: compactionResult,\n\t\t\t\taborted: false,\n\t\t\t\twillRetry: false,\n\t\t\t});\n\t\t\treturn compactionResult;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconst aborted = message === \"Compaction cancelled\" || (error instanceof Error && error.name === \"AbortError\");\n\t\t\tthis.host.emit({\n\t\t\t\ttype: \"compaction_end\",\n\t\t\t\treason: \"manual\",\n\t\t\t\tresult: undefined,\n\t\t\t\taborted,\n\t\t\t\twillRetry: false,\n\t\t\t\terrorMessage: aborted ? undefined : `Compaction failed: ${message}`,\n\t\t\t});\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tthis.host._compactionAbortController = undefined;\n\t\t\tthis.host.reconnectToAgent();\n\t\t}\n\t}\n\n\tabortCompaction(): void {\n\t\tthis.host._compactionAbortController?.abort();\n\t\tthis.host._autoCompactionAbortController?.abort();\n\t}\n\n\tabortBranchSummary(): void {\n\t\tthis.host._branchSummaryAbortController?.abort();\n\t}\n\n\tasync checkCompaction(assistantMessage: AssistantMessage, skipAbortedCheck = true): Promise<boolean> {\n\t\tconst settings = this.host.settingsManager.getCompactionSettings();\n\t\tif (!settings.enabled) return false;\n\n\t\t// Skip if message was aborted (user cancelled) - unless skipAbortedCheck is false\n\t\tif (skipAbortedCheck && assistantMessage.stopReason === \"aborted\") return false;\n\n\t\tconst contextWindow = this.host.model?.contextWindow ?? 0;\n\n\t\t// Skip overflow check if the message came from a different model.\n\t\t// This handles the case where user switched from a smaller-context model (e.g. opus)\n\t\t// to a larger-context model (e.g. codex) - the overflow error from the old model\n\t\t// shouldn't trigger compaction for the new model.\n\t\tconst sameModel =\n\t\t\tthis.host.model && assistantMessage.provider === this.host.model.provider && assistantMessage.model === this.host.model.id;\n\n\t\t// Skip compaction checks if this assistant message is older than the latest\n\t\t// compaction boundary. This prevents a stale pre-compaction usage/error\n\t\t// from retriggering compaction on the first prompt after compaction.\n\t\tconst compactionEntry = getLatestCompactionEntry(this.host.sessionManager.getBranch());\n\t\tconst assistantIsFromBeforeCompaction =\n\t\t\tcompactionEntry !== null && assistantMessage.timestamp <= new Date(compactionEntry.timestamp).getTime();\n\t\tif (assistantIsFromBeforeCompaction) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Case 1: Overflow - LLM returned context overflow error\n\t\tif (sameModel && isContextOverflow(assistantMessage, contextWindow)) {\n\t\t\tif (this.host._overflowRecoveryAttempted) {\n\t\t\t\tthis.host.emit({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\treason: \"overflow\",\n\t\t\t\t\tresult: undefined,\n\t\t\t\t\taborted: false,\n\t\t\t\t\twillRetry: false,\n\t\t\t\t\terrorMessage:\n\t\t\t\t\t\t\"Context overflow recovery failed after one compact-and-retry attempt. Try reducing context or switching to a larger-context model.\",\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.host._overflowRecoveryAttempted = true;\n\t\t\t// Remove the error message from agent state (it IS saved to session for history,\n\t\t\t// but we don't want it in context for the retry)\n\t\t\tconst messages = this.host.agent.state.messages;\n\t\t\tif (messages.length > 0 && messages[messages.length - 1].role === \"assistant\") {\n\t\t\t\tthis.host.agent.state.messages = messages.slice(0, -1);\n\t\t\t}\n\t\t\treturn await this.runAutoCompaction(\"overflow\", true);\n\t\t}\n\n\t\t// Case 2: Threshold - context is getting large\n\t\t// For error messages (no usage data), estimate from last successful response.\n\t\t// This ensures sessions that hit persistent API errors (e.g. 529) can still compact.\n\t\tlet contextTokens: number;\n\t\tif (assistantMessage.stopReason === \"error\") {\n\t\t\tconst messages = this.host.agent.state.messages;\n\t\t\tconst estimate = estimateContextTokens(messages);\n\t\t\tif (estimate.lastUsageIndex === null) return false; // No usage data at all\n\t\t\t// Verify the usage source is post-compaction. Kept pre-compaction messages\n\t\t\t// have stale usage reflecting the old (larger) context and would falsely\n\t\t\t// trigger compaction right after one just finished.\n\t\t\tconst usageMsg = messages[estimate.lastUsageIndex];\n\t\t\tif (\n\t\t\t\tcompactionEntry &&\n\t\t\t\tusageMsg.role === \"assistant\" &&\n\t\t\t\t(usageMsg as AssistantMessage).timestamp <= new Date(compactionEntry.timestamp).getTime()\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcontextTokens = estimate.tokens;\n\t\t} else {\n\t\t\tcontextTokens = calculateContextTokens(assistantMessage.usage);\n\t\t}\n\t\tif (shouldCompact(contextTokens, contextWindow, settings)) {\n\t\t\treturn await this.runAutoCompaction(\"threshold\", false);\n\t\t}\n\t\treturn false;\n\t}\n\n\tasync runAutoCompaction(reason: \"overflow\" | \"threshold\", willRetry: boolean): Promise<boolean> {\n\t\tconst settings = this.host.settingsManager.getCompactionSettings();\n\n\t\tthis.host.emit({ type: \"compaction_start\", reason });\n\t\tthis.host._autoCompactionAbortController = new AbortController();\n\n\t\ttry {\n\t\t\tif (!this.host.model) {\n\t\t\t\tthis.host.emit({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\treason,\n\t\t\t\t\tresult: undefined,\n\t\t\t\t\taborted: false,\n\t\t\t\t\twillRetry: false,\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet apiKey: string | undefined;\n\t\t\tlet headers: Record<string, string> | undefined;\n\t\t\tif (this.host.agent.streamFn === streamSimple) {\n\t\t\t\tconst authResult = await this.host.modelRegistry.getApiKeyAndHeaders(this.host.model);\n\t\t\t\tif (!authResult.ok || !authResult.apiKey) {\n\t\t\t\t\tthis.host.emit({\n\t\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\t\treason,\n\t\t\t\t\t\tresult: undefined,\n\t\t\t\t\t\taborted: false,\n\t\t\t\t\t\twillRetry: false,\n\t\t\t\t\t});\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tapiKey = authResult.apiKey;\n\t\t\t\theaders = authResult.headers;\n\t\t\t} else {\n\t\t\t\t({ apiKey, headers } = await this.host.getCompactionRequestAuth(this.host.model));\n\t\t\t}\n\n\t\t\tconst pathEntries = this.host.sessionManager.getBranch();\n\n\t\t\tconst preparation = prepareCompaction(pathEntries, settings);\n\t\t\tif (!preparation) {\n\t\t\t\tthis.host.emit({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\treason,\n\t\t\t\t\tresult: undefined,\n\t\t\t\t\taborted: false,\n\t\t\t\t\twillRetry: false,\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet extensionCompaction: CompactionResult | undefined;\n\t\t\tlet fromExtension = false;\n\n\t\t\tif (this.host._extensionRunner.hasHandlers(\"session_before_compact\")) {\n\t\t\t\tconst extensionResult = (await this.host._extensionRunner.emit({\n\t\t\t\t\ttype: \"session_before_compact\",\n\t\t\t\t\tpreparation,\n\t\t\t\t\tbranchEntries: pathEntries,\n\t\t\t\t\tcustomInstructions: undefined,\n\t\t\t\t\tsignal: this.host._autoCompactionAbortController.signal,\n\t\t\t\t})) as SessionBeforeCompactResult | undefined;\n\n\t\t\t\tif (extensionResult?.cancel) {\n\t\t\t\t\tthis.host.emit({\n\t\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\t\treason,\n\t\t\t\t\t\tresult: undefined,\n\t\t\t\t\t\taborted: true,\n\t\t\t\t\t\twillRetry,\n\t\t\t\t\t});\n\t\t\t\t\tif (willRetry) {\n\t\t\t\t\t\tconst messages = this.host.agent.state.messages;\n\t\t\t\t\t\tconst lastMsg = messages[messages.length - 1];\n\t\t\t\t\t\tif (lastMsg?.role === \"assistant\" && (lastMsg as AssistantMessage).stopReason === \"error\") {\n\t\t\t\t\t\t\tthis.host.agent.state.messages = messages.slice(0, -1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn this.host.agent.hasQueuedMessages();\n\t\t\t\t}\n\n\t\t\t\tif (extensionResult?.compaction) {\n\t\t\t\t\textensionCompaction = extensionResult.compaction;\n\t\t\t\t\tfromExtension = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet summary: string;\n\t\t\tlet firstKeptEntryId: string;\n\t\t\tlet tokensBefore: number;\n\t\t\tlet details: unknown;\n\n\t\t\tif (extensionCompaction) {\n\t\t\t\t// Extension provided compaction content\n\t\t\t\tsummary = extensionCompaction.summary;\n\t\t\t\tfirstKeptEntryId = extensionCompaction.firstKeptEntryId;\n\t\t\t\ttokensBefore = extensionCompaction.tokensBefore;\n\t\t\t\tdetails = extensionCompaction.details;\n\t\t\t} else {\n\t\t\t\t// Generate compaction result\n\t\t\t\tconst compactResult = await compact(\n\t\t\t\t\tpreparation,\n\t\t\t\t\tthis.host.model,\n\t\t\t\t\tapiKey,\n\t\t\t\t\theaders,\n\t\t\t\t\tundefined,\n\t\t\t\t\tthis.host._autoCompactionAbortController.signal,\n\t\t\t\t\tthis.host.thinkingLevel,\n\t\t\t\t\tthis.host.agent.streamFn,\n\t\t\t\t);\n\t\t\t\tsummary = compactResult.summary;\n\t\t\t\tfirstKeptEntryId = compactResult.firstKeptEntryId;\n\t\t\t\ttokensBefore = compactResult.tokensBefore;\n\t\t\t\tdetails = compactResult.details;\n\t\t\t}\n\n\t\t\tif (this.host._autoCompactionAbortController.signal.aborted) {\n\t\t\t\tthis.host.emit({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\treason,\n\t\t\t\t\tresult: undefined,\n\t\t\t\t\taborted: true,\n\t\t\t\t\twillRetry: false,\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.host.sessionManager.appendCompaction(summary, firstKeptEntryId, tokensBefore, details, fromExtension);\n\t\t\tconst newEntries = this.host.sessionManager.getEntries();\n\t\t\tconst sessionContext = this.host.sessionManager.buildSessionContext();\n\t\t\tthis.host.agent.state.messages = sessionContext.messages;\n\n\t\t\t// Get the saved compaction entry for the extension event\n\t\t\tconst savedCompactionEntry = newEntries.find((e) => e.type === \"compaction\" && e.summary === summary) as\n\t\t\t\t| CompactionEntry\n\t\t\t\t| undefined;\n\n\t\t\tif (this.host._extensionRunner && savedCompactionEntry) {\n\t\t\t\tawait this.host._extensionRunner.emit({\n\t\t\t\t\ttype: \"session_compact\",\n\t\t\t\t\tcompactionEntry: savedCompactionEntry,\n\t\t\t\t\tfromExtension,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result: CompactionResult = {\n\t\t\t\tsummary,\n\t\t\t\tfirstKeptEntryId,\n\t\t\t\ttokensBefore,\n\t\t\t\tdetails,\n\t\t\t};\n\t\t\tthis.host.emit({ type: \"compaction_end\", reason, result, aborted: false, willRetry });\n\n\t\t\tif (willRetry) {\n\t\t\t\tconst messages = this.host.agent.state.messages;\n\t\t\t\tconst lastMsg = messages[messages.length - 1];\n\t\t\t\tif (lastMsg?.role === \"assistant\" && (lastMsg as AssistantMessage).stopReason === \"error\") {\n\t\t\t\t\tthis.host.agent.state.messages = messages.slice(0, -1);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Auto-compaction can complete while follow-up/steering/custom messages are waiting.\n\t\t\t// Continue once so queued messages are delivered.\n\t\t\treturn this.host.agent.hasQueuedMessages();\n\t\t} catch (error) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : \"compaction failed\";\n\t\t\tthis.host.emit({\n\t\t\t\ttype: \"compaction_end\",\n\t\t\t\treason,\n\t\t\t\tresult: undefined,\n\t\t\t\taborted: false,\n\t\t\t\twillRetry: false,\n\t\t\t\terrorMessage:\n\t\t\t\t\treason === \"overflow\"\n\t\t\t\t\t\t? `Context overflow recovery failed: ${errorMessage}`\n\t\t\t\t\t\t: `Auto-compaction failed: ${errorMessage}`,\n\t\t\t});\n\t\t\treturn false;\n\t\t} finally {\n\t\t\tthis.host._autoCompactionAbortController = undefined;\n\t\t}\n\t}\n\n\tsetAutoCompactionEnabled(enabled: boolean): void {\n\t\tthis.host.settingsManager.setCompactionEnabled(enabled);\n\t}\n\n\tget autoCompactionEnabled(): boolean {\n\t\treturn this.host.settingsManager.getCompactionEnabled();\n\t}\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-compaction.js","sourceRoot":"","sources":["../../src/session/agent-session-compaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage } from \"@gsd/pi-ai\";\nimport { isContextOverflow, streamSimple } from \"@gsd/pi-ai\";\nimport { formatNoModelSelectedMessage } from \"@gsd/pi-coding-agent/core/auth-guidance.js\";\nimport type { CompactionEntry } from \"@gsd/pi-coding-agent/core/session-manager.js\";\nimport { getLatestCompactionEntry } from \"@gsd/pi-coding-agent/core/session-manager.js\";\nimport type { SessionBeforeCompactResult } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport type { AgentMessage } from \"@gsd/pi-agent-core\";\nimport {\n\ttype CompactionResult,\n\tcalculateContextTokens,\n\tcompact,\n\testimateContextTokens,\n\tprepareCompaction,\n\tshouldCompact,\n} from \"../compaction/index.js\";\nimport type { AgentSessionHost } from \"./agent-session-host.js\";\n\nexport function resolveThresholdContextTokens(assistantMessage: AssistantMessage, messages: AgentMessage[]): number {\n\tconst estimate = estimateContextTokens(messages);\n\treturn Math.max(calculateContextTokens(assistantMessage.usage), estimate.tokens);\n}\n\nexport class AgentSessionCompactionModule {\n\tconstructor(readonly host: AgentSessionHost) {}\n\n\tasync compact(customInstructions?: string): Promise<CompactionResult> {\n\t\tthis.host.disconnectFromAgent();\n\t\tawait this.host.abort();\n\t\tthis.host._compactionAbortController = new AbortController();\n\t\tthis.host.emit({ type: \"compaction_start\", reason: \"manual\" });\n\n\t\ttry {\n\t\t\tif (!this.host.model) {\n\t\t\t\tthrow new Error(formatNoModelSelectedMessage());\n\t\t\t}\n\n\t\t\tconst { apiKey, headers } = await this.host.getCompactionRequestAuth(this.host.model);\n\n\t\t\tconst pathEntries = this.host.sessionManager.getBranch();\n\t\t\tconst settings = this.host.settingsManager.getCompactionSettings();\n\n\t\t\tconst preparation = prepareCompaction(pathEntries, settings);\n\t\t\tif (!preparation) {\n\t\t\t\t// Check why we can't compact\n\t\t\t\tconst lastEntry = pathEntries[pathEntries.length - 1];\n\t\t\t\tif (lastEntry?.type === \"compaction\") {\n\t\t\t\t\tthrow new Error(\"Already compacted\");\n\t\t\t\t}\n\t\t\t\tthrow new Error(\"Nothing to compact (session too small)\");\n\t\t\t}\n\n\t\t\tlet extensionCompaction: CompactionResult | undefined;\n\t\t\tlet fromExtension = false;\n\n\t\t\tif (this.host._extensionRunner.hasHandlers(\"session_before_compact\")) {\n\t\t\t\tconst result = (await this.host._extensionRunner.emit({\n\t\t\t\t\ttype: \"session_before_compact\",\n\t\t\t\t\tpreparation,\n\t\t\t\t\tbranchEntries: pathEntries,\n\t\t\t\t\tcustomInstructions,\n\t\t\t\t\tsignal: this.host._compactionAbortController.signal,\n\t\t\t\t})) as SessionBeforeCompactResult | undefined;\n\n\t\t\t\tif (result?.cancel) {\n\t\t\t\t\tthrow new Error(\"Compaction cancelled\");\n\t\t\t\t}\n\n\t\t\t\tif (result?.compaction) {\n\t\t\t\t\textensionCompaction = result.compaction;\n\t\t\t\t\tfromExtension = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet summary: string;\n\t\t\tlet firstKeptEntryId: string;\n\t\t\tlet tokensBefore: number;\n\t\t\tlet details: unknown;\n\n\t\t\tif (extensionCompaction) {\n\t\t\t\t// Extension provided compaction content\n\t\t\t\tsummary = extensionCompaction.summary;\n\t\t\t\tfirstKeptEntryId = extensionCompaction.firstKeptEntryId;\n\t\t\t\ttokensBefore = extensionCompaction.tokensBefore;\n\t\t\t\tdetails = extensionCompaction.details;\n\t\t\t} else {\n\t\t\t\t// Generate compaction result\n\t\t\t\tconst result = await compact(\n\t\t\t\t\tpreparation,\n\t\t\t\t\tthis.host.model,\n\t\t\t\t\tapiKey,\n\t\t\t\t\theaders,\n\t\t\t\t\tcustomInstructions,\n\t\t\t\t\tthis.host._compactionAbortController.signal,\n\t\t\t\t\tthis.host.thinkingLevel,\n\t\t\t\t\tthis.host.agent.streamFn,\n\t\t\t\t);\n\t\t\t\tsummary = result.summary;\n\t\t\t\tfirstKeptEntryId = result.firstKeptEntryId;\n\t\t\t\ttokensBefore = result.tokensBefore;\n\t\t\t\tdetails = result.details;\n\t\t\t}\n\n\t\t\tif (this.host._compactionAbortController.signal.aborted) {\n\t\t\t\tthrow new Error(\"Compaction cancelled\");\n\t\t\t}\n\n\t\t\tthis.host.sessionManager.appendCompaction(summary, firstKeptEntryId, tokensBefore, details, fromExtension);\n\t\t\tconst newEntries = this.host.sessionManager.getEntries();\n\t\t\tconst sessionContext = this.host.sessionManager.buildSessionContext();\n\t\t\tthis.host.agent.state.messages = sessionContext.messages;\n\n\t\t\t// Get the saved compaction entry for the extension event\n\t\t\tconst savedCompactionEntry = newEntries.find((e) => e.type === \"compaction\" && e.summary === summary) as\n\t\t\t\t| CompactionEntry\n\t\t\t\t| undefined;\n\n\t\t\tif (this.host._extensionRunner && savedCompactionEntry) {\n\t\t\t\tawait this.host._extensionRunner.emit({\n\t\t\t\t\ttype: \"session_compact\",\n\t\t\t\t\tcompactionEntry: savedCompactionEntry,\n\t\t\t\t\tfromExtension,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst compactionResult = {\n\t\t\t\tsummary,\n\t\t\t\tfirstKeptEntryId,\n\t\t\t\ttokensBefore,\n\t\t\t\tdetails,\n\t\t\t};\n\t\t\tthis.host.emit({\n\t\t\t\ttype: \"compaction_end\",\n\t\t\t\treason: \"manual\",\n\t\t\t\tresult: compactionResult,\n\t\t\t\taborted: false,\n\t\t\t\twillRetry: false,\n\t\t\t});\n\t\t\treturn compactionResult;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconst aborted = message === \"Compaction cancelled\" || (error instanceof Error && error.name === \"AbortError\");\n\t\t\tthis.host.emit({\n\t\t\t\ttype: \"compaction_end\",\n\t\t\t\treason: \"manual\",\n\t\t\t\tresult: undefined,\n\t\t\t\taborted,\n\t\t\t\twillRetry: false,\n\t\t\t\terrorMessage: aborted ? undefined : `Compaction failed: ${message}`,\n\t\t\t});\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tthis.host._compactionAbortController = undefined;\n\t\t\tthis.host.reconnectToAgent();\n\t\t}\n\t}\n\n\tabortCompaction(): void {\n\t\tthis.host._compactionAbortController?.abort();\n\t\tthis.host._autoCompactionAbortController?.abort();\n\t}\n\n\tabortBranchSummary(): void {\n\t\tthis.host._branchSummaryAbortController?.abort();\n\t}\n\n\tasync checkCompaction(assistantMessage: AssistantMessage, skipAbortedCheck = true): Promise<boolean> {\n\t\tconst settings = this.host.settingsManager.getCompactionSettings();\n\t\tif (!settings.enabled) return false;\n\n\t\t// Skip if message was aborted (user cancelled) - unless skipAbortedCheck is false\n\t\tif (skipAbortedCheck && assistantMessage.stopReason === \"aborted\") return false;\n\n\t\tconst contextWindow = this.host.model?.contextWindow ?? 0;\n\n\t\t// Skip overflow check if the message came from a different model.\n\t\t// This handles the case where user switched from a smaller-context model (e.g. opus)\n\t\t// to a larger-context model (e.g. codex) - the overflow error from the old model\n\t\t// shouldn't trigger compaction for the new model.\n\t\tconst sameModel =\n\t\t\tthis.host.model && assistantMessage.provider === this.host.model.provider && assistantMessage.model === this.host.model.id;\n\n\t\t// Skip compaction checks if this assistant message is older than the latest\n\t\t// compaction boundary. This prevents a stale pre-compaction usage/error\n\t\t// from retriggering compaction on the first prompt after compaction.\n\t\tconst compactionEntry = getLatestCompactionEntry(this.host.sessionManager.getBranch());\n\t\tconst assistantIsFromBeforeCompaction =\n\t\t\tcompactionEntry !== null && assistantMessage.timestamp <= new Date(compactionEntry.timestamp).getTime();\n\t\tif (assistantIsFromBeforeCompaction) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Case 1: Overflow - LLM returned context overflow error\n\t\tif (sameModel && isContextOverflow(assistantMessage, contextWindow)) {\n\t\t\tif (this.host._overflowRecoveryAttempted) {\n\t\t\t\tthis.host.emit({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\treason: \"overflow\",\n\t\t\t\t\tresult: undefined,\n\t\t\t\t\taborted: false,\n\t\t\t\t\twillRetry: false,\n\t\t\t\t\terrorMessage:\n\t\t\t\t\t\t\"Context overflow recovery failed after one compact-and-retry attempt. Try reducing context or switching to a larger-context model.\",\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.host._overflowRecoveryAttempted = true;\n\t\t\t// Remove the error message from agent state (it IS saved to session for history,\n\t\t\t// but we don't want it in context for the retry)\n\t\t\tconst messages = this.host.agent.state.messages;\n\t\t\tif (messages.length > 0 && messages[messages.length - 1].role === \"assistant\") {\n\t\t\t\tthis.host.agent.state.messages = messages.slice(0, -1);\n\t\t\t}\n\t\t\treturn await this.runAutoCompaction(\"overflow\", true);\n\t\t}\n\n\t\t// Case 2: Threshold - context is getting large.\n\t\t// Use the same session estimate as the footer so trailing tool/custom\n\t\t// messages after the last provider usage can still trigger compaction.\n\t\t// For error messages (no usage data), estimate from last successful response.\n\t\t// This ensures sessions that hit persistent API errors (e.g. 529) can still compact.\n\t\tlet contextTokens: number;\n\t\tif (assistantMessage.stopReason === \"error\") {\n\t\t\tconst messages = this.host.agent.state.messages;\n\t\t\tconst estimate = estimateContextTokens(messages);\n\t\t\tif (estimate.lastUsageIndex === null) return false; // No usage data at all\n\t\t\t// Verify the usage source is post-compaction. Kept pre-compaction messages\n\t\t\t// have stale usage reflecting the old (larger) context and would falsely\n\t\t\t// trigger compaction right after one just finished.\n\t\t\tconst usageMsg = messages[estimate.lastUsageIndex];\n\t\t\tif (\n\t\t\t\tcompactionEntry &&\n\t\t\t\tusageMsg.role === \"assistant\" &&\n\t\t\t\t(usageMsg as AssistantMessage).timestamp <= new Date(compactionEntry.timestamp).getTime()\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcontextTokens = estimate.tokens;\n\t\t} else {\n\t\t\tcontextTokens = resolveThresholdContextTokens(assistantMessage, this.host.agent.state.messages);\n\t\t}\n\t\tif (shouldCompact(contextTokens, contextWindow, settings)) {\n\t\t\treturn await this.runAutoCompaction(\"threshold\", false);\n\t\t}\n\t\treturn false;\n\t}\n\n\tasync runAutoCompaction(reason: \"overflow\" | \"threshold\", willRetry: boolean): Promise<boolean> {\n\t\tconst settings = this.host.settingsManager.getCompactionSettings();\n\n\t\tthis.host.emit({ type: \"compaction_start\", reason });\n\t\tthis.host._autoCompactionAbortController = new AbortController();\n\n\t\ttry {\n\t\t\tif (!this.host.model) {\n\t\t\t\tthis.host.emit({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\treason,\n\t\t\t\t\tresult: undefined,\n\t\t\t\t\taborted: false,\n\t\t\t\t\twillRetry: false,\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet apiKey: string | undefined;\n\t\t\tlet headers: Record<string, string> | undefined;\n\t\t\tif (this.host.agent.streamFn === streamSimple) {\n\t\t\t\tconst authResult = await this.host.modelRegistry.getApiKeyAndHeaders(this.host.model);\n\t\t\t\tif (!authResult.ok || !authResult.apiKey) {\n\t\t\t\t\tthis.host.emit({\n\t\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\t\treason,\n\t\t\t\t\t\tresult: undefined,\n\t\t\t\t\t\taborted: false,\n\t\t\t\t\t\twillRetry: false,\n\t\t\t\t\t});\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tapiKey = authResult.apiKey;\n\t\t\t\theaders = authResult.headers;\n\t\t\t} else {\n\t\t\t\t({ apiKey, headers } = await this.host.getCompactionRequestAuth(this.host.model));\n\t\t\t}\n\n\t\t\tconst pathEntries = this.host.sessionManager.getBranch();\n\n\t\t\tconst preparation = prepareCompaction(pathEntries, settings);\n\t\t\tif (!preparation) {\n\t\t\t\tthis.host.emit({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\treason,\n\t\t\t\t\tresult: undefined,\n\t\t\t\t\taborted: false,\n\t\t\t\t\twillRetry: false,\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet extensionCompaction: CompactionResult | undefined;\n\t\t\tlet fromExtension = false;\n\n\t\t\tif (this.host._extensionRunner.hasHandlers(\"session_before_compact\")) {\n\t\t\t\tconst extensionResult = (await this.host._extensionRunner.emit({\n\t\t\t\t\ttype: \"session_before_compact\",\n\t\t\t\t\tpreparation,\n\t\t\t\t\tbranchEntries: pathEntries,\n\t\t\t\t\tcustomInstructions: undefined,\n\t\t\t\t\tsignal: this.host._autoCompactionAbortController.signal,\n\t\t\t\t})) as SessionBeforeCompactResult | undefined;\n\n\t\t\t\tif (extensionResult?.cancel) {\n\t\t\t\t\tthis.host.emit({\n\t\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\t\treason,\n\t\t\t\t\t\tresult: undefined,\n\t\t\t\t\t\taborted: true,\n\t\t\t\t\t\twillRetry,\n\t\t\t\t\t});\n\t\t\t\t\tif (willRetry) {\n\t\t\t\t\t\tconst messages = this.host.agent.state.messages;\n\t\t\t\t\t\tconst lastMsg = messages[messages.length - 1];\n\t\t\t\t\t\tif (lastMsg?.role === \"assistant\" && (lastMsg as AssistantMessage).stopReason === \"error\") {\n\t\t\t\t\t\t\tthis.host.agent.state.messages = messages.slice(0, -1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn this.host.agent.hasQueuedMessages();\n\t\t\t\t}\n\n\t\t\t\tif (extensionResult?.compaction) {\n\t\t\t\t\textensionCompaction = extensionResult.compaction;\n\t\t\t\t\tfromExtension = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet summary: string;\n\t\t\tlet firstKeptEntryId: string;\n\t\t\tlet tokensBefore: number;\n\t\t\tlet details: unknown;\n\n\t\t\tif (extensionCompaction) {\n\t\t\t\t// Extension provided compaction content\n\t\t\t\tsummary = extensionCompaction.summary;\n\t\t\t\tfirstKeptEntryId = extensionCompaction.firstKeptEntryId;\n\t\t\t\ttokensBefore = extensionCompaction.tokensBefore;\n\t\t\t\tdetails = extensionCompaction.details;\n\t\t\t} else {\n\t\t\t\t// Generate compaction result\n\t\t\t\tconst compactResult = await compact(\n\t\t\t\t\tpreparation,\n\t\t\t\t\tthis.host.model,\n\t\t\t\t\tapiKey,\n\t\t\t\t\theaders,\n\t\t\t\t\tundefined,\n\t\t\t\t\tthis.host._autoCompactionAbortController.signal,\n\t\t\t\t\tthis.host.thinkingLevel,\n\t\t\t\t\tthis.host.agent.streamFn,\n\t\t\t\t);\n\t\t\t\tsummary = compactResult.summary;\n\t\t\t\tfirstKeptEntryId = compactResult.firstKeptEntryId;\n\t\t\t\ttokensBefore = compactResult.tokensBefore;\n\t\t\t\tdetails = compactResult.details;\n\t\t\t}\n\n\t\t\tif (this.host._autoCompactionAbortController.signal.aborted) {\n\t\t\t\tthis.host.emit({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\treason,\n\t\t\t\t\tresult: undefined,\n\t\t\t\t\taborted: true,\n\t\t\t\t\twillRetry: false,\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.host.sessionManager.appendCompaction(summary, firstKeptEntryId, tokensBefore, details, fromExtension);\n\t\t\tconst newEntries = this.host.sessionManager.getEntries();\n\t\t\tconst sessionContext = this.host.sessionManager.buildSessionContext();\n\t\t\tthis.host.agent.state.messages = sessionContext.messages;\n\n\t\t\t// Get the saved compaction entry for the extension event\n\t\t\tconst savedCompactionEntry = newEntries.find((e) => e.type === \"compaction\" && e.summary === summary) as\n\t\t\t\t| CompactionEntry\n\t\t\t\t| undefined;\n\n\t\t\tif (this.host._extensionRunner && savedCompactionEntry) {\n\t\t\t\tawait this.host._extensionRunner.emit({\n\t\t\t\t\ttype: \"session_compact\",\n\t\t\t\t\tcompactionEntry: savedCompactionEntry,\n\t\t\t\t\tfromExtension,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result: CompactionResult = {\n\t\t\t\tsummary,\n\t\t\t\tfirstKeptEntryId,\n\t\t\t\ttokensBefore,\n\t\t\t\tdetails,\n\t\t\t};\n\t\t\tthis.host.emit({ type: \"compaction_end\", reason, result, aborted: false, willRetry });\n\n\t\t\tif (willRetry) {\n\t\t\t\tconst messages = this.host.agent.state.messages;\n\t\t\t\tconst lastMsg = messages[messages.length - 1];\n\t\t\t\tif (lastMsg?.role === \"assistant\" && (lastMsg as AssistantMessage).stopReason === \"error\") {\n\t\t\t\t\tthis.host.agent.state.messages = messages.slice(0, -1);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Auto-compaction can complete while follow-up/steering/custom messages are waiting.\n\t\t\t// Continue once so queued messages are delivered.\n\t\t\treturn this.host.agent.hasQueuedMessages();\n\t\t} catch (error) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : \"compaction failed\";\n\t\t\tthis.host.emit({\n\t\t\t\ttype: \"compaction_end\",\n\t\t\t\treason,\n\t\t\t\tresult: undefined,\n\t\t\t\taborted: false,\n\t\t\t\twillRetry: false,\n\t\t\t\terrorMessage:\n\t\t\t\t\treason === \"overflow\"\n\t\t\t\t\t\t? `Context overflow recovery failed: ${errorMessage}`\n\t\t\t\t\t\t: `Auto-compaction failed: ${errorMessage}`,\n\t\t\t});\n\t\t\treturn false;\n\t\t} finally {\n\t\t\tthis.host._autoCompactionAbortController = undefined;\n\t\t}\n\t}\n\n\tsetAutoCompactionEnabled(enabled: boolean): void {\n\t\tthis.host.settingsManager.setCompactionEnabled(enabled);\n\t}\n\n\tget autoCompactionEnabled(): boolean {\n\t\treturn this.host.settingsManager.getCompactionEnabled();\n\t}\n\n}\n"]}
|
|
@@ -13,6 +13,7 @@ import type { BuildSystemPromptOptions } from "../system-prompt.js";
|
|
|
13
13
|
import type { BashOperations } from "@gsd/pi-coding-agent/core/tools/bash.js";
|
|
14
14
|
import type { AgentSessionEvent, AgentSessionEventListener, ModelCycleResult, PromptOptions, ToolDefinitionEntry } from "./agent-session-types.js";
|
|
15
15
|
import type { SessionStartEvent } from "@gsd/pi-coding-agent/core/extensions/index.js";
|
|
16
|
+
import type { BeginTurnLatencyOptions, TurnLatencyRecord, TurnLatencyStatus, TurnLatencyVisibleKind } from "../turn-latency.js";
|
|
16
17
|
/**
|
|
17
18
|
* Internal surface shared by AgentSession submodule classes.
|
|
18
19
|
* AgentSession implements this interface and passes `this` to module constructors.
|
|
@@ -67,6 +68,7 @@ export interface AgentSessionHost {
|
|
|
67
68
|
_baseSystemPrompt: string;
|
|
68
69
|
_baseSystemPromptOptions: BuildSystemPromptOptions;
|
|
69
70
|
_lastAssistantMessage: AssistantMessage | undefined;
|
|
71
|
+
_activeTurnLatency: TurnLatencyRecord | undefined;
|
|
70
72
|
readonly model: Model<any> | undefined;
|
|
71
73
|
readonly thinkingLevel: ThinkingLevel;
|
|
72
74
|
readonly isStreaming: boolean;
|
|
@@ -83,6 +85,11 @@ export interface AgentSessionHost {
|
|
|
83
85
|
readonly pendingMessageCount: number;
|
|
84
86
|
emit(event: AgentSessionEvent): void;
|
|
85
87
|
emitQueueUpdate(): void;
|
|
88
|
+
beginTurnLatency(options?: BeginTurnLatencyOptions): TurnLatencyRecord | undefined;
|
|
89
|
+
markTurnLatency(phase: string, data?: Record<string, unknown>): void;
|
|
90
|
+
markFirstStreamActivity(kind: string, data?: Record<string, unknown>): void;
|
|
91
|
+
markFirstVisibleTurnLatency(kind: TurnLatencyVisibleKind, data?: Record<string, unknown>): void;
|
|
92
|
+
finishTurnLatency(status: TurnLatencyStatus): void;
|
|
86
93
|
disconnectFromAgent(): void;
|
|
87
94
|
reconnectToAgent(): void;
|
|
88
95
|
isRetryableError(message: AssistantMessage): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-host.d.ts","sourceRoot":"","sources":["../../src/session/agent-session-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,KAAK,EAEL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,aAAa,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EACX,YAAY,EACZ,8BAA8B,EAC9B,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAElB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,QAAQ,EACR,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,8CAA8C,CAAC;AACvG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EACX,iBAAiB,EACjB,yBAAyB,EAEzB,gBAAgB,EAChB,aAAa,EAEb,mBAAmB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-host.d.ts","sourceRoot":"","sources":["../../src/session/agent-session-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-host.js","sourceRoot":"","sources":["../../src/session/agent-session-host.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n\tAgent,\n\tAgentEvent,\n\tAgentMessage,\n\tAgentState,\n\tAgentTool,\n\tThinkingLevel,\n} from \"@gsd/pi-agent-core\";\nimport type { AssistantMessage, ImageContent, Model, TextContent } from \"@gsd/pi-ai\";\nimport type { BashResult } from \"../bash-executor.js\";\nimport type { CompactionResult } from \"../compaction/index.js\";\nimport type {\n\tContextUsage,\n\tExtensionCommandContextActions,\n\tExtensionErrorListener,\n\tExtensionRunner,\n\tExtensionUIContext,\n\tInputSource,\n\tReplacedSessionContext,\n\tShutdownHandler,\n\tToolDefinition,\n\tToolInfo,\n} from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport type { BashExecutionMessage, CustomMessage } from \"@gsd/pi-coding-agent/core/messages.js\";\nimport type { ModelRegistry } from \"@gsd/pi-coding-agent/core/model-registry.js\";\nimport type { PromptTemplate } from \"@gsd/pi-coding-agent/core/prompt-templates.js\";\nimport type { ResourceLoader } from \"@gsd/pi-coding-agent/core/resource-loader.js\";\nimport type { BranchSummaryEntry, SessionManager } from \"@gsd/pi-coding-agent/core/session-manager.js\";\nimport type { SettingsManager } from \"@gsd/pi-coding-agent/core/settings-manager.js\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.js\";\nimport type { BashOperations } from \"@gsd/pi-coding-agent/core/tools/bash.js\";\nimport type {\n\tAgentSessionEvent,\n\tAgentSessionEventListener,\n\tExtensionBindings,\n\tModelCycleResult,\n\tPromptOptions,\n\tSessionStats,\n\tToolDefinitionEntry,\n} from \"./agent-session-types.js\";\nimport type { SessionStartEvent } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\n\n/**\n * Internal surface shared by AgentSession submodule classes.\n * AgentSession implements this interface and passes `this` to module constructors.\n */\nexport interface AgentSessionHost {\n\treadonly agent: Agent;\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\treadonly modelRegistry: ModelRegistry;\n\treadonly resourceLoader: ResourceLoader;\n\n\t// Mutable session state accessed across modules\n\t_scopedModels: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\t_unsubscribeAgent: (() => void) | undefined;\n\t_eventListeners: AgentSessionEventListener[];\n\t_steeringMessages: string[];\n\t_followUpMessages: string[];\n\t_pendingNextTurnMessages: CustomMessage[];\n\t_compactionAbortController: AbortController | undefined;\n\t_autoCompactionAbortController: AbortController | undefined;\n\t_overflowRecoveryAttempted: boolean;\n\t_branchSummaryAbortController: AbortController | undefined;\n\t_retryAbortController: AbortController | undefined;\n\t_retryAttempt: number;\n\t_lastTurnCost: number;\n\t_bashAbortController: AbortController | undefined;\n\t_pendingBashMessages: BashExecutionMessage[];\n\t_extensionRunner: ExtensionRunner;\n\t_turnIndex: number;\n\t_customTools: ToolDefinition[];\n\t_baseToolDefinitions: Map<string, ToolDefinition>;\n\t_cwd: string;\n\t_extensionRunnerRef: { current?: ExtensionRunner } | undefined;\n\t_initialActiveToolNames: string[] | undefined;\n\t_allowedToolNames: Set<string> | undefined;\n\t_baseToolsOverride: Record<string, AgentTool> | undefined;\n\t_sessionStartEvent: SessionStartEvent;\n\t_extensionUIContext: ExtensionUIContext | undefined;\n\t_extensionCommandContextActions: ExtensionCommandContextActions | undefined;\n\t_extensionAbortHandler: (() => void) | undefined;\n\t_extensionShutdownHandler: ShutdownHandler | undefined;\n\t_extensionErrorListener: ExtensionErrorListener | undefined;\n\t_extensionErrorUnsubscriber: (() => void) | undefined;\n\t_visibleSkillNames: string[] | undefined;\n\t_toolRegistry: Map<string, AgentTool>;\n\t_toolDefinitions: Map<string, ToolDefinitionEntry>;\n\t_toolPromptSnippets: Map<string, string>;\n\t_toolPromptGuidelines: Map<string, string[]>;\n\t_baseSystemPrompt: string;\n\t_baseSystemPromptOptions: BuildSystemPromptOptions;\n\t_lastAssistantMessage: AssistantMessage | undefined;\n\n\t// Read-only derived state\n\treadonly model: Model<any> | undefined;\n\treadonly thinkingLevel: ThinkingLevel;\n\treadonly isStreaming: boolean;\n\treadonly systemPrompt: string;\n\treadonly state: AgentState;\n\treadonly messages: AgentMessage[];\n\treadonly steeringMode: \"all\" | \"one-at-a-time\";\n\treadonly followUpMode: \"all\" | \"one-at-a-time\";\n\treadonly sessionFile: string | undefined;\n\treadonly sessionId: string;\n\treadonly sessionName: string | undefined;\n\treadonly promptTemplates: ReadonlyArray<PromptTemplate>;\n\treadonly isCompacting: boolean;\n\treadonly pendingMessageCount: number;\n\n\t// Cross-module internal API\n\temit(event: AgentSessionEvent): void;\n\temitQueueUpdate(): void;\n\tdisconnectFromAgent(): void;\n\treconnectToAgent(): void;\n\tisRetryableError(message: AssistantMessage): boolean;\n\trunAgentPrompt(messages: AgentMessage | AgentMessage[]): Promise<void>;\n\thandlePostAgentRun(): Promise<boolean>;\n\tflushPendingBashMessages(): void;\n\tcheckCompaction(assistantMessage: AssistantMessage, skipAbortedCheck?: boolean): Promise<boolean>;\n\tgetCompactionRequestAuth(model: Model<any>): Promise<{ apiKey?: string; headers?: Record<string, string> }>;\n\tgetRequiredRequestAuth(model: Model<any>): Promise<{ apiKey: string; headers?: Record<string, string> }>;\n\temitModelSelect(\n\t\tnextModel: Model<any>,\n\t\tpreviousModel: Model<any> | undefined,\n\t\tsource: \"set\" | \"cycle\" | \"restore\",\n\t): Promise<void>;\n\tfindLastAssistantMessage(): AssistantMessage | undefined;\n\tsetThinkingLevel(level: ThinkingLevel): void;\n\tgetAvailableThinkingLevels(): ThinkingLevel[];\n\tclampThinkingLevel(level: ThinkingLevel, availableLevels: ThinkingLevel[]): ThinkingLevel;\n\tsupportsThinking(): boolean;\n\tgetActiveToolNames(): string[];\n\tsetActiveToolsByName(toolNames: string[]): void;\n\trebuildSystemPrompt(toolNames: string[]): string;\n\trefreshToolRegistry(options?: {\n\t\tactiveToolNames?: string[];\n\t\tincludeAllExtensionTools?: boolean;\n\t}): void;\n\tbuildRuntime(options: {\n\t\tactiveToolNames?: string[];\n\t\tflagValues?: Map<string, boolean | string>;\n\t\tincludeAllExtensionTools?: boolean;\n\t}): void;\n\tinstallAgentToolHooks(): void;\n\tprompt(text: string, options?: PromptOptions): Promise<void>;\n\tsendCustomMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void>;\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\" },\n\t): Promise<void>;\n\tcompact(customInstructions?: string): Promise<CompactionResult>;\n\tabort(): Promise<void>;\n\tabortRetry(): void;\n\tsetSessionName(name: string): void;\n\temitSessionStartWithLegacySwitch(event: SessionStartEvent & { reason: \"new\" | \"resume\" }): Promise<void>;\n\textendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void>;\n\texecuteBash(\n\t\tcommand: string,\n\t\tonChunk?: (chunk: string) => void,\n\t\toptions?: { excludeFromContext?: boolean; operations?: BashOperations; loginShell?: boolean },\n\t): Promise<BashResult>;\n\trecordBashResult(command: string, result: BashResult, options?: { excludeFromContext?: boolean }): void;\n\tgetContextUsage(): ContextUsage | undefined;\n\tgetToolDefinition(name: string): ToolDefinition | undefined;\n\tgetAllTools(): ToolInfo[];\n\tcreateReplacedSessionContext(): ReplacedSessionContext;\n\n\t// Public methods modules delegate to\n\tsetModel(model: Model<any>): Promise<void>;\n\tcycleModel(direction?: \"forward\" | \"backward\"): Promise<ModelCycleResult | undefined>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-host.js","sourceRoot":"","sources":["../../src/session/agent-session-host.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n\tAgent,\n\tAgentEvent,\n\tAgentMessage,\n\tAgentState,\n\tAgentTool,\n\tThinkingLevel,\n} from \"@gsd/pi-agent-core\";\nimport type { AssistantMessage, ImageContent, Model, TextContent } from \"@gsd/pi-ai\";\nimport type { BashResult } from \"../bash-executor.js\";\nimport type { CompactionResult } from \"../compaction/index.js\";\nimport type {\n\tContextUsage,\n\tExtensionCommandContextActions,\n\tExtensionErrorListener,\n\tExtensionRunner,\n\tExtensionUIContext,\n\tInputSource,\n\tReplacedSessionContext,\n\tShutdownHandler,\n\tToolDefinition,\n\tToolInfo,\n} from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport type { BashExecutionMessage, CustomMessage } from \"@gsd/pi-coding-agent/core/messages.js\";\nimport type { ModelRegistry } from \"@gsd/pi-coding-agent/core/model-registry.js\";\nimport type { PromptTemplate } from \"@gsd/pi-coding-agent/core/prompt-templates.js\";\nimport type { ResourceLoader } from \"@gsd/pi-coding-agent/core/resource-loader.js\";\nimport type { BranchSummaryEntry, SessionManager } from \"@gsd/pi-coding-agent/core/session-manager.js\";\nimport type { SettingsManager } from \"@gsd/pi-coding-agent/core/settings-manager.js\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.js\";\nimport type { BashOperations } from \"@gsd/pi-coding-agent/core/tools/bash.js\";\nimport type {\n\tAgentSessionEvent,\n\tAgentSessionEventListener,\n\tExtensionBindings,\n\tModelCycleResult,\n\tPromptOptions,\n\tSessionStats,\n\tToolDefinitionEntry,\n} from \"./agent-session-types.js\";\nimport type { SessionStartEvent } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport type {\n\tBeginTurnLatencyOptions,\n\tTurnLatencyRecord,\n\tTurnLatencyStatus,\n\tTurnLatencyVisibleKind,\n} from \"../turn-latency.js\";\n\n/**\n * Internal surface shared by AgentSession submodule classes.\n * AgentSession implements this interface and passes `this` to module constructors.\n */\nexport interface AgentSessionHost {\n\treadonly agent: Agent;\n\treadonly sessionManager: SessionManager;\n\treadonly settingsManager: SettingsManager;\n\treadonly modelRegistry: ModelRegistry;\n\treadonly resourceLoader: ResourceLoader;\n\n\t// Mutable session state accessed across modules\n\t_scopedModels: Array<{ model: Model<any>; thinkingLevel?: ThinkingLevel }>;\n\t_unsubscribeAgent: (() => void) | undefined;\n\t_eventListeners: AgentSessionEventListener[];\n\t_steeringMessages: string[];\n\t_followUpMessages: string[];\n\t_pendingNextTurnMessages: CustomMessage[];\n\t_compactionAbortController: AbortController | undefined;\n\t_autoCompactionAbortController: AbortController | undefined;\n\t_overflowRecoveryAttempted: boolean;\n\t_branchSummaryAbortController: AbortController | undefined;\n\t_retryAbortController: AbortController | undefined;\n\t_retryAttempt: number;\n\t_lastTurnCost: number;\n\t_bashAbortController: AbortController | undefined;\n\t_pendingBashMessages: BashExecutionMessage[];\n\t_extensionRunner: ExtensionRunner;\n\t_turnIndex: number;\n\t_customTools: ToolDefinition[];\n\t_baseToolDefinitions: Map<string, ToolDefinition>;\n\t_cwd: string;\n\t_extensionRunnerRef: { current?: ExtensionRunner } | undefined;\n\t_initialActiveToolNames: string[] | undefined;\n\t_allowedToolNames: Set<string> | undefined;\n\t_baseToolsOverride: Record<string, AgentTool> | undefined;\n\t_sessionStartEvent: SessionStartEvent;\n\t_extensionUIContext: ExtensionUIContext | undefined;\n\t_extensionCommandContextActions: ExtensionCommandContextActions | undefined;\n\t_extensionAbortHandler: (() => void) | undefined;\n\t_extensionShutdownHandler: ShutdownHandler | undefined;\n\t_extensionErrorListener: ExtensionErrorListener | undefined;\n\t_extensionErrorUnsubscriber: (() => void) | undefined;\n\t_visibleSkillNames: string[] | undefined;\n\t_toolRegistry: Map<string, AgentTool>;\n\t_toolDefinitions: Map<string, ToolDefinitionEntry>;\n\t_toolPromptSnippets: Map<string, string>;\n\t_toolPromptGuidelines: Map<string, string[]>;\n\t_baseSystemPrompt: string;\n\t_baseSystemPromptOptions: BuildSystemPromptOptions;\n\t_lastAssistantMessage: AssistantMessage | undefined;\n\t_activeTurnLatency: TurnLatencyRecord | undefined;\n\n\t// Read-only derived state\n\treadonly model: Model<any> | undefined;\n\treadonly thinkingLevel: ThinkingLevel;\n\treadonly isStreaming: boolean;\n\treadonly systemPrompt: string;\n\treadonly state: AgentState;\n\treadonly messages: AgentMessage[];\n\treadonly steeringMode: \"all\" | \"one-at-a-time\";\n\treadonly followUpMode: \"all\" | \"one-at-a-time\";\n\treadonly sessionFile: string | undefined;\n\treadonly sessionId: string;\n\treadonly sessionName: string | undefined;\n\treadonly promptTemplates: ReadonlyArray<PromptTemplate>;\n\treadonly isCompacting: boolean;\n\treadonly pendingMessageCount: number;\n\n\t// Cross-module internal API\n\temit(event: AgentSessionEvent): void;\n\temitQueueUpdate(): void;\n\tbeginTurnLatency(options?: BeginTurnLatencyOptions): TurnLatencyRecord | undefined;\n\tmarkTurnLatency(phase: string, data?: Record<string, unknown>): void;\n\tmarkFirstStreamActivity(kind: string, data?: Record<string, unknown>): void;\n\tmarkFirstVisibleTurnLatency(kind: TurnLatencyVisibleKind, data?: Record<string, unknown>): void;\n\tfinishTurnLatency(status: TurnLatencyStatus): void;\n\tdisconnectFromAgent(): void;\n\treconnectToAgent(): void;\n\tisRetryableError(message: AssistantMessage): boolean;\n\trunAgentPrompt(messages: AgentMessage | AgentMessage[]): Promise<void>;\n\thandlePostAgentRun(): Promise<boolean>;\n\tflushPendingBashMessages(): void;\n\tcheckCompaction(assistantMessage: AssistantMessage, skipAbortedCheck?: boolean): Promise<boolean>;\n\tgetCompactionRequestAuth(model: Model<any>): Promise<{ apiKey?: string; headers?: Record<string, string> }>;\n\tgetRequiredRequestAuth(model: Model<any>): Promise<{ apiKey: string; headers?: Record<string, string> }>;\n\temitModelSelect(\n\t\tnextModel: Model<any>,\n\t\tpreviousModel: Model<any> | undefined,\n\t\tsource: \"set\" | \"cycle\" | \"restore\",\n\t): Promise<void>;\n\tfindLastAssistantMessage(): AssistantMessage | undefined;\n\tsetThinkingLevel(level: ThinkingLevel): void;\n\tgetAvailableThinkingLevels(): ThinkingLevel[];\n\tclampThinkingLevel(level: ThinkingLevel, availableLevels: ThinkingLevel[]): ThinkingLevel;\n\tsupportsThinking(): boolean;\n\tgetActiveToolNames(): string[];\n\tsetActiveToolsByName(toolNames: string[]): void;\n\trebuildSystemPrompt(toolNames: string[]): string;\n\trefreshToolRegistry(options?: {\n\t\tactiveToolNames?: string[];\n\t\tincludeAllExtensionTools?: boolean;\n\t}): void;\n\tbuildRuntime(options: {\n\t\tactiveToolNames?: string[];\n\t\tflagValues?: Map<string, boolean | string>;\n\t\tincludeAllExtensionTools?: boolean;\n\t}): void;\n\tinstallAgentToolHooks(): void;\n\tprompt(text: string, options?: PromptOptions): Promise<void>;\n\tsendCustomMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: { triggerTurn?: boolean; deliverAs?: \"steer\" | \"followUp\" | \"nextTurn\" },\n\t): Promise<void>;\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\" },\n\t): Promise<void>;\n\tcompact(customInstructions?: string): Promise<CompactionResult>;\n\tabort(): Promise<void>;\n\tabortRetry(): void;\n\tsetSessionName(name: string): void;\n\temitSessionStartWithLegacySwitch(event: SessionStartEvent & { reason: \"new\" | \"resume\" }): Promise<void>;\n\textendResourcesFromExtensions(reason: \"startup\" | \"reload\"): Promise<void>;\n\texecuteBash(\n\t\tcommand: string,\n\t\tonChunk?: (chunk: string) => void,\n\t\toptions?: { excludeFromContext?: boolean; operations?: BashOperations; loginShell?: boolean },\n\t): Promise<BashResult>;\n\trecordBashResult(command: string, result: BashResult, options?: { excludeFromContext?: boolean }): void;\n\tgetContextUsage(): ContextUsage | undefined;\n\tgetToolDefinition(name: string): ToolDefinition | undefined;\n\tgetAllTools(): ToolInfo[];\n\tcreateReplacedSessionContext(): ReplacedSessionContext;\n\n\t// Public methods modules delegate to\n\tsetModel(model: Model<any>): Promise<void>;\n\tcycleModel(direction?: \"forward\" | \"backward\"): Promise<ModelCycleResult | undefined>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-prompt.d.ts","sourceRoot":"","sources":["../../src/session/agent-session-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAI3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,qBAAa,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB;IAErC,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-prompt.d.ts","sourceRoot":"","sources":["../../src/session/agent-session-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAI3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,qBAAa,wBAAwB;IACxB,QAAQ,CAAC,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB;IAErC,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtE,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAwBtC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA8M5D,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BhE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA0BlC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAchE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAczE,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYrC,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAClC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,EACjF,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAA;KAAE,GAChF,OAAO,CAAC,IAAI,CAAC;IAgCV,eAAe,CACpB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;KAAE,GAC5C,OAAO,CAAC,IAAI,CAAC;IA8BhB,UAAU,IAAI;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAUxD,mBAAmB,IAAI,SAAS,MAAM,EAAE;IAIxC,mBAAmB,IAAI,SAAS,MAAM,EAAE;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAc9C,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoD/D,UAAU,IAAI,IAAI;IAIlB,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI3C,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe,GAAG,IAAI;IAKpD,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe,GAAG,IAAI;CAKpD"}
|