@bastani/atomic 0.9.11-alpha.8 → 0.9.11-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -1
- package/dist/builtin/intercom/package.json +3 -3
- package/dist/builtin/mcp/CHANGELOG.md +6 -0
- package/dist/builtin/mcp/commands.ts +7 -3
- package/dist/builtin/mcp/package.json +6 -6
- package/dist/builtin/subagents/CHANGELOG.md +9 -0
- package/dist/builtin/subagents/package.json +5 -5
- package/dist/builtin/subagents/src/agents/agent-discovery.ts +26 -15
- package/dist/builtin/subagents/src/agents/agent-loaders.ts +48 -34
- package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +80 -31
- package/dist/builtin/subagents/src/agents/agent-management.ts +194 -55
- package/dist/builtin/subagents/src/agents/agent-overrides.ts +85 -32
- package/dist/builtin/subagents/src/agents/agent-paths.ts +4 -1
- package/dist/builtin/subagents/src/agents/agent-selection.ts +1 -1
- package/dist/builtin/subagents/src/agents/agent-serializer.ts +1 -4
- package/dist/builtin/subagents/src/agents/agents.ts +9 -9
- package/dist/builtin/subagents/src/agents/chain-serializer.ts +9 -5
- package/dist/builtin/subagents/src/agents/identity.ts +12 -3
- package/dist/builtin/subagents/src/agents/skills-paths.ts +64 -24
- package/dist/builtin/subagents/src/agents/skills.ts +29 -26
- package/dist/builtin/subagents/src/extension/doctor.ts +31 -20
- package/dist/builtin/subagents/src/extension/fanout-child.ts +27 -12
- package/dist/builtin/subagents/src/extension/index.ts +119 -43
- package/dist/builtin/subagents/src/extension/prompt-guidance.ts +0 -1
- package/dist/builtin/subagents/src/extension/schemas.ts +304 -177
- package/dist/builtin/subagents/src/extension/startup-maintenance.ts +137 -73
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +49 -21
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +76 -38
- package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +12 -6
- package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +164 -57
- package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +15 -18
- package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +66 -27
- package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +4 -14
- package/dist/builtin/subagents/src/runs/background/async-execution.ts +1 -1
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +86 -32
- package/dist/builtin/subagents/src/runs/background/async-resume.ts +93 -36
- package/dist/builtin/subagents/src/runs/background/async-status.ts +82 -27
- package/dist/builtin/subagents/src/runs/background/completion-claims.ts +12 -5
- package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +3 -1
- package/dist/builtin/subagents/src/runs/background/completion-notification.ts +3 -1
- package/dist/builtin/subagents/src/runs/background/notify.ts +36 -18
- package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +28 -14
- package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +147 -79
- package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +20 -5
- package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +7 -2
- package/dist/builtin/subagents/src/runs/background/result-status.ts +11 -5
- package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +18 -5
- package/dist/builtin/subagents/src/runs/background/result-watcher.ts +104 -35
- package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +28 -7
- package/dist/builtin/subagents/src/runs/background/run-status.ts +120 -32
- package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +98 -39
- package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +185 -37
- package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +23 -9
- package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +6 -2
- package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +34 -18
- package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +175 -26
- package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +68 -23
- package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +200 -49
- package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +81 -49
- package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +33 -11
- package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +16 -6
- package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +2 -3
- package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +11 -8
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +5 -2
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +113 -31
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +64 -55
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +103 -37
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +97 -62
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +22 -10
- package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +9 -6
- package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +22 -22
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +45 -40
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +6 -5
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +118 -43
- package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +17 -7
- package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +5 -3
- package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +39 -35
- package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +81 -42
- package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +27 -21
- package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -5
- package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +9 -4
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +64 -27
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +31 -18
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +95 -62
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +30 -9
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +106 -96
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +68 -37
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +260 -84
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +6 -1
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +63 -40
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +110 -59
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +20 -3
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +8 -6
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +65 -47
- package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +37 -12
- package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +120 -34
- package/dist/builtin/subagents/src/runs/shared/final-drain.ts +12 -7
- package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +3 -2
- package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +8 -3
- package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +42 -19
- package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +8 -4
- package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +103 -38
- package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +30 -20
- package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +45 -20
- package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +57 -23
- package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +77 -29
- package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +99 -42
- package/dist/builtin/subagents/src/runs/shared/nested-events.ts +32 -26
- package/dist/builtin/subagents/src/runs/shared/nested-path.ts +22 -17
- package/dist/builtin/subagents/src/runs/shared/nested-render.ts +31 -10
- package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +9 -8
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +54 -30
- package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +17 -13
- package/dist/builtin/subagents/src/runs/shared/run-history.ts +13 -6
- package/dist/builtin/subagents/src/runs/shared/single-output.ts +11 -6
- package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +21 -0
- package/dist/builtin/subagents/src/runs/shared/structured-output.ts +33 -19
- package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +59 -48
- package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +18 -11
- package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +41 -11
- package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +46 -10
- package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +21 -5
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +89 -34
- package/dist/builtin/subagents/src/shared/artifacts.ts +137 -7
- package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +49 -13
- package/dist/builtin/subagents/src/shared/fast-mode.ts +13 -6
- package/dist/builtin/subagents/src/shared/fork-context.ts +7 -4
- package/dist/builtin/subagents/src/shared/formatters.ts +14 -9
- package/dist/builtin/subagents/src/shared/jsonl-writer.ts +2 -1
- package/dist/builtin/subagents/src/shared/model-info.ts +10 -3
- package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +7 -6
- package/dist/builtin/subagents/src/shared/session-tokens.ts +2 -1
- package/dist/builtin/subagents/src/shared/settings.ts +39 -43
- package/dist/builtin/subagents/src/shared/status-format.ts +10 -2
- package/dist/builtin/subagents/src/shared/types-async.ts +22 -19
- package/dist/builtin/subagents/src/shared/types-config.ts +1 -1
- package/dist/builtin/subagents/src/shared/types-depth.ts +23 -11
- package/dist/builtin/subagents/src/shared/types-results.ts +49 -6
- package/dist/builtin/subagents/src/shared/types-runtime.ts +16 -17
- package/dist/builtin/subagents/src/shared/types.ts +2 -2
- package/dist/builtin/subagents/src/shared/utils.ts +34 -20
- package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +44 -47
- package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +5 -7
- package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
- package/dist/builtin/subagents/src/slash/slash-commands.ts +78 -52
- package/dist/builtin/subagents/src/slash/slash-live-state.ts +59 -32
- package/dist/builtin/subagents/src/tui/render-chain-graph.ts +120 -32
- package/dist/builtin/subagents/src/tui/render-event-formatting.ts +85 -22
- package/dist/builtin/subagents/src/tui/render-helpers.ts +16 -6
- package/dist/builtin/subagents/src/tui/render-layout.ts +8 -3
- package/dist/builtin/subagents/src/tui/render-result-compact.ts +125 -43
- package/dist/builtin/subagents/src/tui/render-result.ts +128 -85
- package/dist/builtin/subagents/src/tui/render-stable-output.ts +17 -13
- package/dist/builtin/subagents/src/tui/render-status-progress.ts +52 -20
- package/dist/builtin/subagents/src/tui/render-widget-graph.ts +130 -28
- package/dist/builtin/subagents/src/tui/render-widget.ts +54 -27
- package/dist/builtin/subagents/src/tui/render.ts +10 -3
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +30 -0
- package/dist/builtin/workflows/README.md +6 -0
- package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +104 -40
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +57 -26
- package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +125 -12
- package/dist/builtin/workflows/package.json +3 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +4 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +5 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +7 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +5 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +7 -1
- package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +5 -5
- package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +160 -197
- package/dist/builtin/workflows/src/authoring/workflow.ts +137 -133
- package/dist/builtin/workflows/src/authoring.d.ts +3 -3
- package/dist/builtin/workflows/src/durable/backend.ts +507 -439
- package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +142 -118
- package/dist/builtin/workflows/src/durable/boundary-topology.ts +410 -355
- package/dist/builtin/workflows/src/durable/child-invocation.ts +6 -6
- package/dist/builtin/workflows/src/durable/child-primitive.ts +109 -101
- package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +234 -194
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +379 -372
- package/dist/builtin/workflows/src/durable/completed-inspection.ts +118 -116
- package/dist/builtin/workflows/src/durable/completed-subtree.ts +24 -20
- package/dist/builtin/workflows/src/durable/dbos-backend.ts +484 -418
- package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +86 -87
- package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +171 -149
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +400 -324
- package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +117 -121
- package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +75 -68
- package/dist/builtin/workflows/src/durable/dbos-metadata.ts +138 -119
- package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +316 -259
- package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +138 -117
- package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +48 -43
- package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +14 -14
- package/dist/builtin/workflows/src/durable/durable-hash.ts +9 -11
- package/dist/builtin/workflows/src/durable/factory.ts +45 -46
- package/dist/builtin/workflows/src/durable/format-version.ts +1 -1
- package/dist/builtin/workflows/src/durable/index.ts +69 -70
- package/dist/builtin/workflows/src/durable/local-command.ts +47 -43
- package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +156 -149
- package/dist/builtin/workflows/src/durable/prompt-reservations.ts +16 -16
- package/dist/builtin/workflows/src/durable/resume-catalog.ts +11 -11
- package/dist/builtin/workflows/src/durable/resume-eligibility.ts +27 -25
- package/dist/builtin/workflows/src/durable/resume-runtime.ts +261 -226
- package/dist/builtin/workflows/src/durable/retention-policy.ts +31 -30
- package/dist/builtin/workflows/src/durable/run-timing.ts +42 -41
- package/dist/builtin/workflows/src/durable/scoped-backend.ts +249 -228
- package/dist/builtin/workflows/src/durable/stage-primitive.ts +456 -398
- package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +199 -186
- package/dist/builtin/workflows/src/durable/stage-topology.ts +40 -40
- package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +37 -37
- package/dist/builtin/workflows/src/durable/tool-outcome.ts +95 -85
- package/dist/builtin/workflows/src/durable/tool-primitive.ts +606 -410
- package/dist/builtin/workflows/src/durable/types.ts +219 -216
- package/dist/builtin/workflows/src/durable/ui-primitive.ts +241 -208
- package/dist/builtin/workflows/src/durable/workflow-child-result.ts +40 -37
- package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +16 -15
- package/dist/builtin/workflows/src/engine/graph-inference.ts +76 -76
- package/dist/builtin/workflows/src/engine/options.ts +35 -36
- package/dist/builtin/workflows/src/engine/primitives/chain.ts +27 -22
- package/dist/builtin/workflows/src/engine/primitives/exit.ts +1 -1
- package/dist/builtin/workflows/src/engine/primitives/parallel.ts +64 -52
- package/dist/builtin/workflows/src/engine/primitives/task.ts +110 -95
- package/dist/builtin/workflows/src/engine/primitives/ui.ts +46 -50
- package/dist/builtin/workflows/src/engine/primitives/workflow.ts +194 -160
- package/dist/builtin/workflows/src/engine/replay.ts +6 -6
- package/dist/builtin/workflows/src/engine/run-durable-admission.ts +30 -30
- package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +64 -47
- package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +29 -23
- package/dist/builtin/workflows/src/engine/run-durable-topology.ts +246 -219
- package/dist/builtin/workflows/src/engine/run-returned-status.ts +60 -57
- package/dist/builtin/workflows/src/engine/run-terminal-event.ts +25 -23
- package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +45 -42
- package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +99 -0
- package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +179 -0
- package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +144 -132
- package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +134 -69
- package/dist/builtin/workflows/src/engine/run.ts +678 -473
- package/dist/builtin/workflows/src/engine/runtime.ts +160 -153
- package/dist/builtin/workflows/src/engine/workflow-activity.ts +7 -3
- package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +92 -0
- package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +123 -120
- package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +108 -112
- package/dist/builtin/workflows/src/extension/companions.ts +116 -116
- package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +123 -111
- package/dist/builtin/workflows/src/extension/config-file-loader.ts +153 -148
- package/dist/builtin/workflows/src/extension/config-loader.ts +264 -283
- package/dist/builtin/workflows/src/extension/discovery-loaders.ts +81 -84
- package/dist/builtin/workflows/src/extension/discovery.ts +267 -272
- package/dist/builtin/workflows/src/extension/dispatcher.ts +214 -217
- package/dist/builtin/workflows/src/extension/extension-factory.ts +102 -108
- package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +118 -116
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +413 -396
- package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +270 -261
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +33724 -32828
- package/dist/builtin/workflows/src/extension/index.ts +37 -37
- package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +64 -64
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +384 -378
- package/dist/builtin/workflows/src/extension/mcp.ts +35 -35
- package/dist/builtin/workflows/src/extension/postmortem-deps.ts +31 -35
- package/dist/builtin/workflows/src/extension/public-types.ts +160 -182
- package/dist/builtin/workflows/src/extension/render-call.ts +85 -88
- package/dist/builtin/workflows/src/extension/render-component.ts +9 -11
- package/dist/builtin/workflows/src/extension/render-result.ts +447 -386
- package/dist/builtin/workflows/src/extension/renderers.ts +35 -35
- package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +37 -37
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +145 -143
- package/dist/builtin/workflows/src/extension/runtime.ts +346 -264
- package/dist/builtin/workflows/src/extension/status-writer.ts +95 -95
- package/dist/builtin/workflows/src/extension/ui-surface.ts +224 -222
- package/dist/builtin/workflows/src/extension/wiring.ts +307 -283
- package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +109 -108
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +257 -227
- package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +84 -84
- package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +126 -132
- package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +213 -205
- package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +19 -21
- package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +104 -104
- package/dist/builtin/workflows/src/extension/workflow-policy.ts +7 -9
- package/dist/builtin/workflows/src/extension/workflow-ports.ts +30 -34
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +13 -13
- package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +46 -46
- package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +28 -25
- package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +48 -45
- package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +28 -31
- package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +539 -453
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +149 -92
- package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +182 -194
- package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +150 -155
- package/dist/builtin/workflows/src/extension/workflow-targets.ts +151 -121
- package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +204 -224
- package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +512 -372
- package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +146 -150
- package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +43 -46
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +341 -292
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +122 -129
- package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +17 -20
- package/dist/builtin/workflows/src/intercom/intercom-routing.ts +62 -62
- package/dist/builtin/workflows/src/intercom/result-intercom.ts +123 -123
- package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +72 -59
- package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +45 -45
- package/dist/builtin/workflows/src/runs/background/job-tracker.ts +69 -34
- package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +71 -0
- package/dist/builtin/workflows/src/runs/background/quit.ts +359 -138
- package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +70 -69
- package/dist/builtin/workflows/src/runs/background/run-inspect.ts +85 -80
- package/dist/builtin/workflows/src/runs/background/runner.ts +122 -121
- package/dist/builtin/workflows/src/runs/background/startup-admission.ts +56 -60
- package/dist/builtin/workflows/src/runs/background/status.ts +324 -294
- package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +23 -17
- package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +311 -309
- package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +228 -201
- package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +56 -51
- package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +168 -152
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +255 -217
- package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +178 -173
- package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +273 -269
- package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +59 -56
- package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +368 -361
- package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +123 -127
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +355 -339
- package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +47 -47
- package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +125 -104
- package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +189 -189
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +294 -250
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +141 -127
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +218 -213
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +406 -364
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +143 -127
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +49 -49
- package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +148 -153
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +155 -117
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +10 -10
- package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +168 -141
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +356 -379
- package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +53 -53
- package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +95 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +8 -8
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +232 -232
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +630 -493
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +182 -181
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +80 -80
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +78 -78
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +102 -104
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +178 -173
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +31 -32
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +114 -105
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +29 -29
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +44 -52
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +63 -58
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +157 -148
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +27 -23
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +10 -10
- package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +33 -31
- package/dist/builtin/workflows/src/runs/shared/concurrency.ts +53 -53
- package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +1 -1
- package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +257 -245
- package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +378 -363
- package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +55 -55
- package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +75 -84
- package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +1 -3
- package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +96 -83
- package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +9 -2
- package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +21 -6
- package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +60 -30
- package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +12 -5
- package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +51 -30
- package/dist/builtin/workflows/src/runs/shared/worktree.ts +4 -4
- package/dist/builtin/workflows/src/sdk-surface.ts +38 -19
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +11 -5
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +299 -275
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +21 -7
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +290 -264
- package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +220 -211
- package/dist/builtin/workflows/src/shared/intercom-group.ts +22 -22
- package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +30 -30
- package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +432 -406
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +187 -181
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +211 -212
- package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +3 -3
- package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +84 -91
- package/dist/builtin/workflows/src/shared/resume-continuation.ts +1 -1
- package/dist/builtin/workflows/src/shared/returned-run-status.ts +91 -77
- package/dist/builtin/workflows/src/shared/run-visibility.ts +2 -2
- package/dist/builtin/workflows/src/shared/schema-introspection.ts +50 -60
- package/dist/builtin/workflows/src/shared/serializable.ts +72 -86
- package/dist/builtin/workflows/src/shared/session-transcript.ts +44 -39
- package/dist/builtin/workflows/src/shared/stage-prompt.ts +183 -202
- package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +270 -274
- package/dist/builtin/workflows/src/shared/store-factory.ts +8 -8
- package/dist/builtin/workflows/src/shared/store-internal.ts +168 -172
- package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +196 -200
- package/dist/builtin/workflows/src/shared/store-public-types.ts +208 -204
- package/dist/builtin/workflows/src/shared/store-run-methods.ts +238 -231
- package/dist/builtin/workflows/src/shared/store-stage-methods.ts +284 -285
- package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +43 -36
- package/dist/builtin/workflows/src/shared/store-types.ts +263 -263
- package/dist/builtin/workflows/src/shared/store.ts +7 -7
- package/dist/builtin/workflows/src/shared/timing.ts +36 -34
- package/dist/builtin/workflows/src/shared/types.ts +256 -213
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +10 -4
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +81 -59
- package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +247 -227
- package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +45 -46
- package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +330 -351
- package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +192 -195
- package/dist/builtin/workflows/src/shared/workflow-failures.ts +10 -10
- package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +32 -36
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +157 -184
- package/dist/builtin/workflows/src/tui/chat-surface.ts +332 -355
- package/dist/builtin/workflows/src/tui/color-utils.ts +21 -30
- package/dist/builtin/workflows/src/tui/connectors.ts +57 -61
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +168 -192
- package/dist/builtin/workflows/src/tui/edge.ts +10 -9
- package/dist/builtin/workflows/src/tui/graph-canvas.ts +131 -134
- package/dist/builtin/workflows/src/tui/graph-theme.ts +139 -148
- package/dist/builtin/workflows/src/tui/graph-view-constants.ts +6 -6
- package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +146 -179
- package/dist/builtin/workflows/src/tui/graph-view-input.ts +295 -323
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +291 -327
- package/dist/builtin/workflows/src/tui/graph-view-render.ts +171 -191
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +317 -303
- package/dist/builtin/workflows/src/tui/graph-view-types.ts +65 -59
- package/dist/builtin/workflows/src/tui/header.ts +140 -156
- package/dist/builtin/workflows/src/tui/host-input-form.ts +47 -45
- package/dist/builtin/workflows/src/tui/inline-form-card.ts +277 -266
- package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +61 -62
- package/dist/builtin/workflows/src/tui/inline-form-editor.ts +407 -412
- package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +203 -214
- package/dist/builtin/workflows/src/tui/inline-form-store.ts +24 -24
- package/dist/builtin/workflows/src/tui/inputs-overlay.ts +116 -129
- package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +111 -115
- package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +255 -269
- package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +248 -236
- package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +111 -140
- package/dist/builtin/workflows/src/tui/inputs-picker.ts +12 -12
- package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +49 -57
- package/dist/builtin/workflows/src/tui/layout.ts +124 -133
- package/dist/builtin/workflows/src/tui/mouse-input.ts +45 -47
- package/dist/builtin/workflows/src/tui/node-card.ts +230 -219
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +381 -394
- package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +20 -19
- package/dist/builtin/workflows/src/tui/prompt-card-input.ts +183 -194
- package/dist/builtin/workflows/src/tui/prompt-card-render.ts +243 -302
- package/dist/builtin/workflows/src/tui/prompt-card-select.ts +76 -98
- package/dist/builtin/workflows/src/tui/prompt-card-state.ts +40 -40
- package/dist/builtin/workflows/src/tui/prompt-card-text.ts +76 -83
- package/dist/builtin/workflows/src/tui/prompt-card.ts +3 -3
- package/dist/builtin/workflows/src/tui/renderers.ts +6 -6
- package/dist/builtin/workflows/src/tui/run-detail.ts +287 -279
- package/dist/builtin/workflows/src/tui/session-list.ts +19 -22
- package/dist/builtin/workflows/src/tui/session-overlays.ts +82 -87
- package/dist/builtin/workflows/src/tui/session-picker.ts +258 -275
- package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +11 -11
- package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +55 -62
- package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +220 -263
- package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +91 -102
- package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +51 -59
- package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +154 -208
- package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +174 -208
- package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +32 -44
- package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +2 -4
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +82 -97
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +33 -31
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +428 -400
- package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +24 -25
- package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +181 -197
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +125 -134
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +210 -211
- package/dist/builtin/workflows/src/tui/status-helpers.ts +65 -69
- package/dist/builtin/workflows/src/tui/status-list.ts +316 -294
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +213 -214
- package/dist/builtin/workflows/src/tui/submit-pane.ts +114 -130
- package/dist/builtin/workflows/src/tui/switcher.ts +116 -134
- package/dist/builtin/workflows/src/tui/text-helpers.ts +136 -145
- package/dist/builtin/workflows/src/tui/toast.ts +68 -67
- package/dist/builtin/workflows/src/tui/widget.ts +265 -285
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +12 -17
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +81 -82
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +467 -445
- package/dist/builtin/workflows/src/tui/workflow-list.ts +130 -145
- package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +127 -144
- package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +217 -216
- package/dist/builtin/workflows/src/workflows/identity.ts +11 -11
- package/dist/builtin/workflows/src/workflows/registry.ts +66 -68
- package/dist/bun/cli.js.map +1 -1
- package/dist/bun/internal-intercom-broker.d.ts.map +1 -1
- package/dist/bun/internal-intercom-broker.js +1 -1
- package/dist/bun/internal-intercom-broker.js.map +1 -1
- package/dist/bun/register-bedrock.js +1 -1
- package/dist/bun/register-bedrock.js.map +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +8 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/credential-print.d.ts +170 -0
- package/dist/cli/credential-print.d.ts.map +1 -0
- package/dist/cli/credential-print.js +513 -0
- package/dist/cli/credential-print.js.map +1 -0
- package/dist/cli/project-trust.d.ts +1 -1
- package/dist/cli/project-trust.d.ts.map +1 -1
- package/dist/cli/project-trust.js.map +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +13 -6
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config-self-update.d.ts.map +1 -1
- package/dist/config-self-update.js +5 -2
- package/dist/config-self-update.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -3
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +125 -25
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +4 -2
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-bash.d.ts +1 -1
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-bash.js +3 -1
- package/dist/core/agent-session-bash.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +45 -8
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +13 -9
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-delivery-forwarding.d.ts +1 -1
- package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -1
- package/dist/core/agent-session-delivery-forwarding.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +15 -8
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.d.ts +1 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +12 -5
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +4 -4
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +21 -12
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +4 -5
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +1 -1
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +6 -4
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +5 -5
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
- package/dist/core/agent-session-queue-pause.js +8 -7
- package/dist/core/agent-session-queue-pause.js.map +1 -1
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-retry.js +30 -7
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-runtime-auth.d.ts.map +1 -1
- package/dist/core/agent-session-runtime-auth.js +3 -1
- package/dist/core/agent-session-runtime-auth.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +14 -3
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +17 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +4 -2
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-state.d.ts +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +2 -6
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +4 -3
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-transfer.d.ts.map +1 -1
- package/dist/core/agent-session-transfer.js +6 -10
- package/dist/core/agent-session-transfer.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +5 -0
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +1 -1
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js +4 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +14 -10
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +8 -9
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
- package/dist/core/anthropic-thinking-guard.js +4 -2
- package/dist/core/anthropic-thinking-guard.js.map +1 -1
- package/dist/core/async/format.d.ts +1 -1
- package/dist/core/async/format.d.ts.map +1 -1
- package/dist/core/async/format.js +3 -1
- package/dist/core/async/format.js.map +1 -1
- package/dist/core/async/job-manager.d.ts.map +1 -1
- package/dist/core/async/job-manager.js +20 -5
- package/dist/core/async/job-manager.js.map +1 -1
- package/dist/core/async/session-manager.d.ts.map +1 -1
- package/dist/core/async/session-manager.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +1 -2
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/auth-guidance.d.ts.map +1 -1
- package/dist/core/auth-guidance.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/auth-storage.d.ts +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -8
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/builtin-packages.d.ts.map +1 -1
- package/dist/core/builtin-packages.js +1 -4
- package/dist/core/builtin-packages.js.map +1 -1
- package/dist/core/cache-stats.d.ts.map +1 -1
- package/dist/core/cache-stats.js +8 -6
- package/dist/core/cache-stats.js.map +1 -1
- package/dist/core/callback-activity.d.ts.map +1 -1
- package/dist/core/callback-activity.js.map +1 -1
- package/dist/core/codex-errors.d.ts.map +1 -1
- package/dist/core/codex-errors.js +1 -1
- package/dist/core/codex-errors.js.map +1 -1
- package/dist/core/codex-fast-mode.d.ts.map +1 -1
- package/dist/core/codex-fast-mode.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +1 -1
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
- package/dist/core/compaction/compaction-boundary.js +10 -6
- package/dist/core/compaction/compaction-boundary.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +1 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +2 -4
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +5 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/deleted-ranges.d.ts.map +1 -1
- package/dist/core/compaction/deleted-ranges.js.map +1 -1
- package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
- package/dist/core/compaction/fallback-planner.js.map +1 -1
- package/dist/core/compaction/index.d.ts +6 -6
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +6 -6
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
- package/dist/core/compaction/planner-outcome.js.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.js +4 -2
- package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +4 -1
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
- package/dist/core/compaction/transcript-serialization.js.map +1 -1
- package/dist/core/context-tool-pairing.js +3 -3
- package/dist/core/context-tool-pairing.js.map +1 -1
- package/dist/core/copilot-env-routing.d.ts.map +1 -1
- package/dist/core/copilot-env-routing.js.map +1 -1
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +5 -0
- package/dist/core/exec.js.map +1 -1
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +2 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +2 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +7 -1
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +7 -7
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +2 -2
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +4 -2
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +2 -2
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
- package/dist/core/extensions/loader-discovery.js.map +1 -1
- package/dist/core/extensions/loader-resources.d.ts.map +1 -1
- package/dist/core/extensions/loader-resources.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +23 -11
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts +17 -0
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +281 -20
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +2 -2
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
- package/dist/core/extensions/reactive-widget.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +27 -1
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +52 -0
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +18 -6
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +3 -1
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/session-events.d.ts.map +1 -1
- package/dist/core/extensions/session-events.js.map +1 -1
- package/dist/core/extensions/tool-types.d.ts.map +1 -1
- package/dist/core/extensions/tool-types.js.map +1 -1
- package/dist/core/extensions/types.d.ts +15 -2
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +16 -2
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/fallback-models.d.ts.map +1 -1
- package/dist/core/fallback-models.js +11 -2
- package/dist/core/fallback-models.js.map +1 -1
- package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
- package/dist/core/flattened-tool-arguments.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +10 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +5 -3
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/keybindings.d.ts +1 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-capabilities.d.ts.map +1 -1
- package/dist/core/model-capabilities.js +1 -2
- package/dist/core/model-capabilities.js.map +1 -1
- package/dist/core/model-resolver-cli.d.ts.map +1 -1
- package/dist/core/model-resolver-cli.js.map +1 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts +1 -1
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.js +1 -1
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-resolver-patterns.d.ts.map +1 -1
- package/dist/core/model-resolver-patterns.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts +1 -1
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.js +12 -2
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-resolver-types.d.ts.map +1 -1
- package/dist/core/model-resolver-types.js.map +1 -1
- package/dist/core/model-resolver.d.ts +3 -3
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime-auth.d.ts.map +1 -1
- package/dist/core/model-runtime-auth.js +5 -2
- package/dist/core/model-runtime-auth.js.map +1 -1
- package/dist/core/model-runtime-restoration.d.ts.map +1 -1
- package/dist/core/model-runtime-restoration.js +2 -2
- package/dist/core/model-runtime-restoration.js.map +1 -1
- package/dist/core/model-runtime-snapshot.d.ts.map +1 -1
- package/dist/core/model-runtime-snapshot.js.map +1 -1
- package/dist/core/model-runtime-streaming.d.ts.map +1 -1
- package/dist/core/model-runtime-streaming.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +9 -7
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/oauth-login.d.ts.map +1 -1
- package/dist/core/oauth-login.js +7 -2
- package/dist/core/oauth-login.js.map +1 -1
- package/dist/core/oauth-provider-metadata.d.ts.map +1 -1
- package/dist/core/oauth-provider-metadata.js +20 -6
- package/dist/core/oauth-provider-metadata.js.map +1 -1
- package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
- package/dist/core/output-guard.d.ts +44 -0
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/output-guard.js +63 -0
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
- package/dist/core/package-manager-auto-resources.js +6 -1
- package/dist/core/package-manager-auto-resources.js.map +1 -1
- package/dist/core/package-manager-git.d.ts.map +1 -1
- package/dist/core/package-manager-git.js +27 -11
- package/dist/core/package-manager-git.js.map +1 -1
- package/dist/core/package-manager-npm.d.ts.map +1 -1
- package/dist/core/package-manager-npm.js +4 -2
- package/dist/core/package-manager-npm.js.map +1 -1
- package/dist/core/package-manager-operations.d.ts.map +1 -1
- package/dist/core/package-manager-operations.js +2 -2
- package/dist/core/package-manager-operations.js.map +1 -1
- package/dist/core/package-manager-paths.d.ts.map +1 -1
- package/dist/core/package-manager-paths.js.map +1 -1
- package/dist/core/package-manager-resolver.d.ts.map +1 -1
- package/dist/core/package-manager-resolver.js +19 -16
- package/dist/core/package-manager-resolver.js.map +1 -1
- package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
- package/dist/core/package-manager-resource-collector.js +6 -6
- package/dist/core/package-manager-resource-collector.js.map +1 -1
- package/dist/core/package-manager-resource-files.d.ts.map +1 -1
- package/dist/core/package-manager-resource-files.js +4 -3
- package/dist/core/package-manager-resource-files.js.map +1 -1
- package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
- package/dist/core/package-manager-resource-patterns.js.map +1 -1
- package/dist/core/package-manager-settings.d.ts.map +1 -1
- package/dist/core/package-manager-settings.js +3 -2
- package/dist/core/package-manager-settings.js.map +1 -1
- package/dist/core/package-manager-source.d.ts.map +1 -1
- package/dist/core/package-manager-source.js +1 -1
- package/dist/core/package-manager-source.js.map +1 -1
- package/dist/core/package-manager.d.ts +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +2 -3
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/prompt-templates-async.d.ts.map +1 -1
- package/dist/core/prompt-templates-async.js +15 -7
- package/dist/core/prompt-templates-async.js.map +1 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +1 -3
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/provider-composer-internal.d.ts +1 -1
- package/dist/core/provider-composer-internal.d.ts.map +1 -1
- package/dist/core/provider-composer-internal.js.map +1 -1
- package/dist/core/provider-composer.d.ts +1 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/provider-context-usage.d.ts.map +1 -1
- package/dist/core/provider-context-usage.js +2 -1
- package/dist/core/provider-context-usage.js.map +1 -1
- package/dist/core/resource-loader-assets.d.ts.map +1 -1
- package/dist/core/resource-loader-assets.js +31 -7
- package/dist/core/resource-loader-assets.js.map +1 -1
- package/dist/core/resource-loader-context-files.d.ts +6 -0
- package/dist/core/resource-loader-context-files.d.ts.map +1 -1
- package/dist/core/resource-loader-context-files.js +83 -4
- package/dist/core/resource-loader-context-files.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts +12 -3
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +36 -19
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-discovery.d.ts.map +1 -1
- package/dist/core/resource-loader-discovery.js.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.js +33 -21
- package/dist/core/resource-loader-extensions.js.map +1 -1
- package/dist/core/resource-loader-internals.d.ts +13 -6
- package/dist/core/resource-loader-internals.d.ts.map +1 -1
- package/dist/core/resource-loader-internals.js.map +1 -1
- package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
- package/dist/core/resource-loader-package-resources.js +1 -1
- package/dist/core/resource-loader-package-resources.js.map +1 -1
- package/dist/core/resource-loader-paths.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +28 -13
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-source-info.d.ts +1 -1
- package/dist/core/resource-loader-source-info.d.ts.map +1 -1
- package/dist/core/resource-loader-source-info.js +1 -1
- package/dist/core/resource-loader-source-info.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +9 -3
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/resource-loader.d.ts +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +1 -1
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +1 -1
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-exports.js +2 -2
- package/dist/core/sdk-exports.js.map +1 -1
- package/dist/core/sdk-types.d.ts +3 -3
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +13 -20
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-archive.d.ts.map +1 -1
- package/dist/core/session-manager-archive.js +5 -2
- package/dist/core/session-manager-archive.js.map +1 -1
- package/dist/core/session-manager-classification.js +3 -3
- package/dist/core/session-manager-classification.js.map +1 -1
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +3 -3
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +1 -1
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +13 -5
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/session-manager-list.d.ts.map +1 -1
- package/dist/core/session-manager-list.js +1 -1
- package/dist/core/session-manager-list.js.map +1 -1
- package/dist/core/session-manager-migrations.js.map +1 -1
- package/dist/core/session-manager-storage.d.ts.map +1 -1
- package/dist/core/session-manager-storage.js.map +1 -1
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/session-manager.d.ts +4 -4
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +2 -2
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-manager-ui-accessors.js +2 -1
- package/dist/core/settings-manager-ui-accessors.js.map +1 -1
- package/dist/core/settings-storage.d.ts.map +1 -1
- package/dist/core/settings-storage.js +3 -3
- package/dist/core/settings-storage.js.map +1 -1
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/skills-async.d.ts.map +1 -1
- package/dist/core/skills-async.js +18 -8
- package/dist/core/skills-async.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +76 -19
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +5 -19
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/thinking-blocks.d.ts.map +1 -1
- package/dist/core/thinking-blocks.js +2 -2
- package/dist/core/thinking-blocks.js.map +1 -1
- package/dist/core/tools/artifact-protocol.d.ts.map +1 -1
- package/dist/core/tools/artifact-protocol.js.map +1 -1
- package/dist/core/tools/artifacts.d.ts.map +1 -1
- package/dist/core/tools/artifacts.js.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
- package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/build-questionnaire.js +1 -1
- package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js +2 -4
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/body-residual-spacer.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +1 -3
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.js +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/props-adapter.js +2 -4
- package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +2 -9
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
- package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
- package/dist/core/tools/bash-async-execution.js +11 -4
- package/dist/core/tools/bash-async-execution.js.map +1 -1
- package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
- package/dist/core/tools/bash-async-jobs.js +14 -2
- package/dist/core/tools/bash-async-jobs.js.map +1 -1
- package/dist/core/tools/bash-async-output.d.ts.map +1 -1
- package/dist/core/tools/bash-async-output.js +6 -2
- package/dist/core/tools/bash-async-output.js.map +1 -1
- package/dist/core/tools/bash-interceptor.d.ts.map +1 -1
- package/dist/core/tools/bash-interceptor.js +20 -4
- package/dist/core/tools/bash-interceptor.js.map +1 -1
- package/dist/core/tools/bash-leading-cd.d.ts.map +1 -1
- package/dist/core/tools/bash-leading-cd.js +9 -3
- package/dist/core/tools/bash-leading-cd.js.map +1 -1
- package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
- package/dist/core/tools/bash-pty-native.js.map +1 -1
- package/dist/core/tools/bash-session-environment.d.ts.map +1 -1
- package/dist/core/tools/bash-session-environment.js +24 -12
- package/dist/core/tools/bash-session-environment.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +123 -27
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/block-resolver.d.ts.map +1 -1
- package/dist/core/tools/block-resolver.js.map +1 -1
- package/dist/core/tools/conflict-registry.d.ts.map +1 -1
- package/dist/core/tools/conflict-registry.js.map +1 -1
- package/dist/core/tools/directory-tree.d.ts.map +1 -1
- package/dist/core/tools/directory-tree.js +20 -4
- package/dist/core/tools/directory-tree.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +37 -13
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/fetch-url.d.ts.map +1 -1
- package/dist/core/tools/fetch-url.js +127 -41
- package/dist/core/tools/fetch-url.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +176 -46
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +43 -10
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/hashline-engine/apply.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/apply.js +6 -6
- package/dist/core/tools/hashline-engine/apply.js.map +1 -1
- package/dist/core/tools/hashline-engine/block.js +1 -1
- package/dist/core/tools/hashline-engine/block.js.map +1 -1
- package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/format.js +1 -1
- package/dist/core/tools/hashline-engine/format.js.map +1 -1
- package/dist/core/tools/hashline-engine/input.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/input.js +7 -7
- package/dist/core/tools/hashline-engine/input.js.map +1 -1
- package/dist/core/tools/hashline-engine/parser.js +1 -1
- package/dist/core/tools/hashline-engine/parser.js.map +1 -1
- package/dist/core/tools/hashline-engine/patcher.js +5 -5
- package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
- package/dist/core/tools/hashline-engine/prefixes.js +4 -4
- package/dist/core/tools/hashline-engine/prefixes.js.map +1 -1
- package/dist/core/tools/hashline-engine/recovery.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/recovery.js +4 -2
- package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
- package/dist/core/tools/hashline-engine/snapshots.js +5 -5
- package/dist/core/tools/hashline-engine/snapshots.js.map +1 -1
- package/dist/core/tools/hashline.d.ts.map +1 -1
- package/dist/core/tools/hashline.js +24 -13
- package/dist/core/tools/hashline.js.map +1 -1
- package/dist/core/tools/index.d.ts +6 -6
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +6 -6
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +2 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/notebook.d.ts.map +1 -1
- package/dist/core/tools/notebook.js +13 -3
- package/dist/core/tools/notebook.js.map +1 -1
- package/dist/core/tools/read-document-extract.d.ts.map +1 -1
- package/dist/core/tools/read-document-extract.js +30 -10
- package/dist/core/tools/read-document-extract.js.map +1 -1
- package/dist/core/tools/read-selectors.d.ts.map +1 -1
- package/dist/core/tools/read-selectors.js +59 -15
- package/dist/core/tools/read-selectors.js.map +1 -1
- package/dist/core/tools/read-url.d.ts.map +1 -1
- package/dist/core/tools/read-url.js +41 -7
- package/dist/core/tools/read-url.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +306 -71
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/resource-selectors.d.ts +4 -0
- package/dist/core/tools/resource-selectors.d.ts.map +1 -1
- package/dist/core/tools/resource-selectors.js +324 -84
- package/dist/core/tools/resource-selectors.js.map +1 -1
- package/dist/core/tools/search-details.d.ts.map +1 -1
- package/dist/core/tools/search-details.js +13 -1
- package/dist/core/tools/search-details.js.map +1 -1
- package/dist/core/tools/search-line-ranges.d.ts.map +1 -1
- package/dist/core/tools/search-line-ranges.js +5 -2
- package/dist/core/tools/search-line-ranges.js.map +1 -1
- package/dist/core/tools/search-native.d.ts.map +1 -1
- package/dist/core/tools/search-native.js.map +1 -1
- package/dist/core/tools/search.d.ts.map +1 -1
- package/dist/core/tools/search.js +244 -90
- package/dist/core/tools/search.js.map +1 -1
- package/dist/core/tools/structured-output.d.ts +1 -1
- package/dist/core/tools/structured-output.d.ts.map +1 -1
- package/dist/core/tools/structured-output.js.map +1 -1
- package/dist/core/tools/todos-execute.d.ts.map +1 -1
- package/dist/core/tools/todos-execute.js +4 -4
- package/dist/core/tools/todos-execute.js.map +1 -1
- package/dist/core/tools/todos-locks.d.ts.map +1 -1
- package/dist/core/tools/todos-locks.js.map +1 -1
- package/dist/core/tools/todos-mutations.js +1 -1
- package/dist/core/tools/todos-mutations.js.map +1 -1
- package/dist/core/tools/todos-paths.js +2 -2
- package/dist/core/tools/todos-paths.js.map +1 -1
- package/dist/core/tools/todos-render.d.ts.map +1 -1
- package/dist/core/tools/todos-render.js +2 -2
- package/dist/core/tools/todos-render.js.map +1 -1
- package/dist/core/tools/todos-storage.d.ts.map +1 -1
- package/dist/core/tools/todos-storage.js +1 -2
- package/dist/core/tools/todos-storage.js.map +1 -1
- package/dist/core/tools/todos-types.d.ts.map +1 -1
- package/dist/core/tools/todos-types.js +1 -11
- package/dist/core/tools/todos-types.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +2 -6
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/url-ip-guards.d.ts.map +1 -1
- package/dist/core/tools/url-ip-guards.js +27 -17
- package/dist/core/tools/url-ip-guards.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +88 -29
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js +5 -2
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts.map +1 -1
- package/dist/core/workflow-stage-admission.js +8 -2
- package/dist/core/workflow-stage-admission.js.map +1 -1
- package/dist/extensions/llama/provider.js +1 -1
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/llama/ui.d.ts.map +1 -1
- package/dist/extensions/llama/ui.js.map +1 -1
- package/dist/index-extensions.d.ts +2 -2
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +20 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -23
- package/dist/index.js.map +1 -1
- package/dist/main-deferred-startup.d.ts +1 -1
- package/dist/main-deferred-startup.d.ts.map +1 -1
- package/dist/main-deferred-startup.js +16 -15
- package/dist/main-deferred-startup.js.map +1 -1
- package/dist/main-early-input.js.map +1 -1
- package/dist/main-first-time-setup.d.ts +1 -1
- package/dist/main-first-time-setup.d.ts.map +1 -1
- package/dist/main-first-time-setup.js.map +1 -1
- package/dist/main-session-options.d.ts +1 -1
- package/dist/main-session-options.d.ts.map +1 -1
- package/dist/main-session-options.js.map +1 -1
- package/dist/main-session.d.ts.map +1 -1
- package/dist/main-session.js +4 -4
- package/dist/main-session.js.map +1 -1
- package/dist/main.d.ts +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +143 -38
- package/dist/main.js.map +1 -1
- package/dist/migrations-config-values.d.ts.map +1 -1
- package/dist/migrations-config-values.js +3 -1
- package/dist/migrations-config-values.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
- package/dist/modes/interactive/chat-input-actions.js +3 -6
- package/dist/modes/interactive/chat-input-actions.js.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.js +7 -5
- package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
- package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -1
- package/dist/modes/interactive/components/atomic-working-status.js +26 -13
- package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +6 -5
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts +3 -2
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.js +14 -18
- package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts +4 -4
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.js +9 -4
- package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.js +9 -8
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +22 -7
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +9 -2
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.js +15 -13
- package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts +2 -2
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-types.d.ts +9 -2
- package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
- package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-utils.js +3 -8
- package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +4 -4
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +1 -2
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.d.ts +1 -1
- package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.js +5 -12
- package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js +18 -7
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.js +4 -2
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-project-scope.js +2 -4
- package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +15 -6
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +11 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +21 -5
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +1 -3
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/diff.js +2 -2
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +1 -1
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +15 -4
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +16 -15
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -1
- package/dist/modes/interactive/components/host-input-form-mount.js +4 -2
- package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
- package/dist/modes/interactive/components/host-input-form.js +55 -21
- package/dist/modes/interactive/components/host-input-form.js.map +1 -1
- package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
- package/dist/modes/interactive/components/host-session-picker.js +8 -3
- package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +7 -7
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +4 -4
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +4 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +12 -6
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +5 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
- package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -1
- package/dist/modes/interactive/components/startup-identity.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-model.js +1 -9
- package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -1
- package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
- package/dist/modes/interactive/components/working-status.js +1 -1
- package/dist/modes/interactive/components/working-status.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +20 -13
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +6 -6
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +3 -6
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +4 -10
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.js +18 -8
- package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +6 -2
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.js +6 -11
- package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-context.js +4 -4
- package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-custom-ui.js +15 -8
- package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-dialogs.js +50 -24
- package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +9 -6
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-widgets.js +1 -1
- package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
- package/dist/modes/interactive/interactive-global-clear.d.ts +45 -1
- package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-global-clear.js +60 -4
- package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
- package/dist/modes/interactive/interactive-hotkeys-debug.js +2 -3
- package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +55 -20
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-key-identity.d.ts +22 -0
- package/dist/modes/interactive/interactive-key-identity.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-key-identity.js +29 -0
- package/dist/modes/interactive/interactive-key-identity.js.map +1 -0
- package/dist/modes/interactive/interactive-mode-base.d.ts +7 -6
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +12 -12
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +20 -20
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +16 -16
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +3 -9
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +8 -7
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js +1 -0
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.d.ts +2 -2
- package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.js +2 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +6 -6
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-onboarding.js +7 -7
- package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
- package/dist/modes/interactive/interactive-pause.js.map +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.js +38 -8
- package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
- package/dist/modes/interactive/interactive-prompt-restore.d.ts +58 -0
- package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-prompt-restore.js +87 -0
- package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -0
- package/dist/modes/interactive/interactive-prompt-turn.js +18 -3
- package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
- package/dist/modes/interactive/interactive-queueing.js +3 -7
- package/dist/modes/interactive/interactive-queueing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +47 -36
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-disclosure.js +1 -3
- package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-paths.js +6 -19
- package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js +15 -16
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +3 -5
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +16 -4
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +11 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +11 -6
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +9 -11
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-submission.d.ts +24 -0
- package/dist/modes/interactive/interactive-submission.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-submission.js +10 -0
- package/dist/modes/interactive/interactive-submission.js.map +1 -0
- package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +1 -1
- package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-summarization-retry-events.js +4 -2
- package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
- package/dist/modes/interactive/login-provider-options.d.ts.map +1 -1
- package/dist/modes/interactive/login-provider-options.js +1 -2
- package/dist/modes/interactive/login-provider-options.js.map +1 -1
- package/dist/modes/interactive/theme/global-theme.d.ts +1 -1
- package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/global-theme.js.map +1 -1
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.js +1 -1
- package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +2 -2
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +2 -2
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
- package/dist/modes/interactive/whimsical-messages.js.map +1 -1
- package/dist/modes/interactive-engine/activity-watchdog.d.ts +16 -6
- package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/activity-watchdog.js +12 -6
- package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
- package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/create-isolated-runtime.js +5 -4
- package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-child-liveness.js +6 -4
- package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -2
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.js +32 -11
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
- package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +16 -0
- package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-diagnostic-view.js +19 -0
- package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -0
- package/dist/modes/interactive-engine/engine-dialog-host.d.ts +33 -0
- package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-dialog-host.js +129 -0
- package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -0
- package/dist/modes/interactive-engine/engine-generation.d.ts +29 -0
- package/dist/modes/interactive-engine/engine-generation.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-generation.js +11 -0
- package/dist/modes/interactive-engine/engine-generation.js.map +1 -0
- package/dist/modes/interactive-engine/engine-health.d.ts +101 -0
- package/dist/modes/interactive-engine/engine-health.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-health.js +236 -0
- package/dist/modes/interactive-engine/engine-health.js.map +1 -0
- package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-input-form.js +12 -3
- package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
- package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-monitor.js +7 -2
- package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.js +11 -5
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
- package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-session-picker.js +4 -2
- package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +14 -3
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.js +32 -45
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
- package/dist/modes/interactive-engine/input-form-host.d.ts +1 -0
- package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
- package/dist/modes/interactive-engine/input-form-host.js +12 -2
- package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.js +1 -1
- package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +32 -6
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +122 -59
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts +20 -1
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +183 -55
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/interactive-engine/remote-component.d.ts +38 -0
- package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-component.js +111 -22
- package/dist/modes/interactive-engine/remote-component.js.map +1 -1
- package/dist/modes/interactive-engine/remote-input-ownership.d.ts +48 -0
- package/dist/modes/interactive-engine/remote-input-ownership.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-input-ownership.js +42 -0
- package/dist/modes/interactive-engine/remote-input-ownership.js.map +1 -0
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js +10 -4
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -1
- package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-renderer.js +38 -10
- package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
- package/dist/modes/interactive-engine/session-picker-host.d.ts +1 -0
- package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -1
- package/dist/modes/interactive-engine/session-picker-host.js +4 -0
- package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/jsonl.d.ts +7 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.js +17 -1
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/modes/rpc/queued-writer.d.ts +14 -0
- package/dist/modes/rpc/queued-writer.d.ts.map +1 -1
- package/dist/modes/rpc/queued-writer.js +33 -9
- package/dist/modes/rpc/queued-writer.js.map +1 -1
- package/dist/modes/rpc/rpc-bash-request-owners.js +1 -1
- package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +3 -3
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +63 -22
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-client-process.d.ts +10 -0
- package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-process.js +72 -15
- package/dist/modes/rpc/rpc-client-process.js.map +1 -1
- package/dist/modes/rpc/rpc-client-waits.d.ts +17 -1
- package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-waits.js +25 -0
- package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +61 -6
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +200 -145
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts +2 -2
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +35 -13
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-command-timeouts.d.ts +30 -0
- package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-command-timeouts.js +52 -0
- package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -0
- package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-event-buffer.js +3 -1
- package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts +1 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.js +44 -16
- package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
- package/dist/modes/rpc/rpc-generation-buffer.d.ts +21 -0
- package/dist/modes/rpc/rpc-generation-buffer.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-generation-buffer.js +35 -0
- package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -0
- package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js +13 -6
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
- package/dist/modes/rpc/rpc-input.d.ts +7 -1
- package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input.js +14 -4
- package/dist/modes/rpc/rpc-input.js.map +1 -1
- package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +17 -18
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-oauth-client.d.ts +1 -2
- package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-oauth-client.js +11 -4
- package/dist/modes/rpc/rpc-oauth-client.js.map +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -1
- package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-output-buffer.js +3 -1
- package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
- package/dist/modes/rpc/rpc-pending-requests.d.ts +37 -0
- package/dist/modes/rpc/rpc-pending-requests.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-pending-requests.js +57 -0
- package/dist/modes/rpc/rpc-pending-requests.js.map +1 -0
- package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js +24 -5
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/modes/rpc/rpc-responses.js.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts +1 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +7 -2
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-terminal-drain.d.ts +52 -0
- package/dist/modes/rpc/rpc-terminal-drain.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-terminal-drain.js +85 -0
- package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -0
- package/dist/modes/rpc/rpc-transport-error.d.ts +49 -0
- package/dist/modes/rpc/rpc-transport-error.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-transport-error.js +78 -0
- package/dist/modes/rpc/rpc-transport-error.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +10 -8
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli-parser.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +22 -11
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/clipboard-image.js +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/fs-watch.d.ts.map +1 -1
- package/dist/utils/fs-watch.js +1 -3
- package/dist/utils/fs-watch.js.map +1 -1
- package/dist/utils/git.js +1 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/interactive-engine-bootstrap.d.ts +67 -0
- package/dist/utils/interactive-engine-bootstrap.d.ts.map +1 -0
- package/dist/utils/interactive-engine-bootstrap.js +117 -0
- package/dist/utils/interactive-engine-bootstrap.js.map +1 -0
- package/dist/utils/interactive-engine-env.d.ts +41 -0
- package/dist/utils/interactive-engine-env.d.ts.map +1 -0
- package/dist/utils/interactive-engine-env.js +67 -0
- package/dist/utils/interactive-engine-env.js.map +1 -0
- package/dist/utils/markit.d.ts.map +1 -1
- package/dist/utils/markit.js +15 -5
- package/dist/utils/markit.js.map +1 -1
- package/dist/utils/shell.js +2 -2
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/split-launcher.d.ts.map +1 -1
- package/dist/utils/split-launcher.js +1 -2
- package/dist/utils/split-launcher.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +8 -34
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +1 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/changelog.mdx +11 -0
- package/docs/custom-provider.md +26 -3
- package/docs/development.md +14 -15
- package/docs/extensions.md +60 -2
- package/docs/keybindings.md +13 -1
- package/docs/providers.md +15 -2
- package/docs/rpc.md +1 -1
- package/docs/security.md +15 -0
- package/docs/session-format.md +2 -0
- package/docs/usage.md +34 -0
- package/docs/workflows.md +86 -9
- package/examples/extensions/border-status-editor.ts +1 -6
- package/examples/extensions/custom-compaction.ts +7 -2
- package/examples/extensions/custom-footer.ts +1 -1
- package/examples/extensions/custom-provider-anthropic/index.ts +14 -2
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
- package/examples/extensions/gondolin/index.ts +1 -1
- package/examples/extensions/handoff.ts +2 -2
- package/examples/extensions/hello.ts +1 -1
- package/examples/extensions/minimal-mode.ts +6 -6
- package/examples/extensions/overlay-qa-focus-components.ts +0 -1
- package/examples/extensions/overlay-qa-streaming-input-components.ts +2 -2
- package/examples/extensions/overlay-qa-tests.ts +16 -14
- package/examples/extensions/overlay-qa-toggle-passive-components.ts +3 -5
- package/examples/extensions/overlay-test.ts +3 -6
- package/examples/extensions/plan-mode/index.ts +1 -1
- package/examples/extensions/preset.ts +1 -1
- package/examples/extensions/qna.ts +1 -1
- package/examples/extensions/structured-output.ts +9 -9
- package/examples/extensions/subagent/display.ts +115 -127
- package/examples/extensions/subagent/index.ts +310 -349
- package/examples/extensions/subagent/render.ts +244 -345
- package/examples/extensions/subagent/runner.ts +223 -230
- package/examples/extensions/subagent/schemas.ts +39 -46
- package/examples/extensions/subagent/types.ts +22 -22
- package/examples/extensions/summarize.ts +2 -2
- package/examples/extensions/tic-tac-toe.ts +4 -4
- package/examples/extensions/todo.ts +1 -1
- package/examples/extensions/tool-override.ts +1 -1
- package/examples/extensions/trigger-compact.ts +4 -1
- package/examples/extensions/working-indicator.ts +2 -1
- package/examples/rpc-extension-ui-components.ts +1 -2
- package/examples/sdk/02-custom-model.ts +1 -1
- package/examples/sdk/03-custom-prompt.ts +1 -6
- package/examples/sdk/06-extensions.ts +1 -6
- package/examples/sdk/07-context-files.ts +1 -6
- package/examples/sdk/12-full-control.ts +1 -1
- package/npm-shrinkwrap.json +300 -303
- package/package.json +11 -11
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { customMessageExcludesContext } from "./agent-session-types.js";
|
|
2
1
|
import { resolveWorkflowStageDeliveryTarget } from "./agent-session-delivery-forwarding.js";
|
|
2
|
+
import { customMessageExcludesContext } from "./agent-session-types.js";
|
|
3
3
|
export const PROTECTED_RECONCILIATION_CUSTOM_TYPE = "atomic:protected-streaming-reconciliation";
|
|
4
4
|
function protectedMessages(session) {
|
|
5
|
-
|
|
5
|
+
session._protectedStreamingCustomMessages ??= [];
|
|
6
|
+
return session._protectedStreamingCustomMessages;
|
|
6
7
|
}
|
|
7
8
|
function appendDurableDisplayCard(session, message, delivery) {
|
|
8
9
|
const card = { ...message, excludeFromContext: true };
|
|
@@ -218,8 +219,9 @@ function removeQueuedProtectedReference(session, message) {
|
|
|
218
219
|
}
|
|
219
220
|
function isPausedHeldProtectedReference(session, message) {
|
|
220
221
|
const hold = session._activeInterruptQueueHold;
|
|
221
|
-
return session._queuedMessagesPaused &&
|
|
222
|
-
|
|
222
|
+
return (session._queuedMessagesPaused &&
|
|
223
|
+
hold !== undefined &&
|
|
224
|
+
(hold.steering.includes(message) || hold.followUp.includes(message)));
|
|
223
225
|
}
|
|
224
226
|
/**
|
|
225
227
|
* Persist only reconciliation input already sealed inside an accepted pause
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-persistent-custom-messages.js","sourceRoot":"","sources":["../../src/core/agent-session-persistent-custom-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DrainedAgentQueues } from \"./agent-session-types.ts\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { customMessageExcludesContext } from \"./agent-session-types.ts\";\nimport type { CustomMessage } from \"./messages.ts\";\nimport { resolveWorkflowStageDeliveryTarget } from \"./agent-session-delivery-forwarding.ts\";\n\ntype ProtectedDelivery = \"steer\" | \"followUp\";\ntype ProtectedPhase = \"queued\" | \"consumed-unpersisted\" | \"persistence-failed\";\n\nexport const PROTECTED_RECONCILIATION_CUSTOM_TYPE = \"atomic:protected-streaming-reconciliation\";\n\ninterface ProtectedReconciliationDetails {\n\tprotectedReconciliationOf: string;\n}\n\nexport interface ProtectedStreamingCustomMessage {\n\tmessage: CustomMessage;\n\tdelivery: ProtectedDelivery;\n\tphase: ProtectedPhase;\n}\n\nfunction protectedMessages(session: AgentSession): ProtectedStreamingCustomMessage[] {\n\treturn session._protectedStreamingCustomMessages ??= [];\n}\n\nfunction appendDurableDisplayCard(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n\tdelivery: ProtectedDelivery,\n): { readonly card: CustomMessage & { excludeFromContext: true }; readonly intentEntryId: string } {\n\tconst card = { ...message, excludeFromContext: true } satisfies CustomMessage & { excludeFromContext: true };\n\t// The card and recovery marker share one append, so either both survive a\n\t// process exit or neither does.\n\tconst intentEntryId = session.sessionManager.appendCustomMessageEntry(\n\t\tcard.customType,\n\t\tcard.content,\n\t\tcard.display,\n\t\tcard.details,\n\t\ttrue,\n\t\t{ delivery },\n\t);\n\tsession.agent.state.messages.push(card);\n\treturn { card, intentEntryId };\n}\n\nfunction emitDurableDisplayCard(session: AgentSession, card: CustomMessage): void {\n\t// The card is already live and file-backed, and its protected reconciliation\n\t// is registered. Public listeners remain fallible, but their errors cannot\n\t// revoke admission or make the producer retry this committed occurrence.\n\ttry {\n\t\tsession._emit({ type: \"message_start\", message: card });\n\t} catch {}\n\ttry {\n\t\tsession._emit({ type: \"message_end\", message: card });\n\t} catch {}\n}\n\nfunction createProtectedReconciliation(message: CustomMessage, intentEntryId: string): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType: PROTECTED_RECONCILIATION_CUSTOM_TYPE,\n\t\tcontent: message.content,\n\t\tdisplay: false,\n\t\tdetails: { protectedReconciliationOf: intentEntryId } satisfies ProtectedReconciliationDetails,\n\t\ttimestamp: message.timestamp,\n\t};\n}\n\nfunction completedReconciliationIntent(details: unknown): string | undefined {\n\tif (details === null || typeof details !== \"object\") return undefined;\n\tconst intent = (details as { protectedReconciliationOf?: unknown }).protectedReconciliationOf;\n\treturn typeof intent === \"string\" ? intent : undefined;\n}\n\nfunction protectedDelivery(marker: unknown): ProtectedDelivery | undefined {\n\tif (marker === null || typeof marker !== \"object\") return undefined;\n\tconst delivery = (marker as { delivery?: unknown }).delivery;\n\treturn delivery === \"steer\" || delivery === \"followUp\" ? delivery : undefined;\n}\n\n/** Requeue each durable card intent that has no persisted hidden completion. */\nexport function recoverProtectedStreamingCustomMessages(session: AgentSession): number {\n\tconst branch = session.sessionManager.getBranch();\n\tconst completed = new Set(branch.flatMap((entry) =>\n\t\tentry.type === \"custom_message\" && entry.customType === PROTECTED_RECONCILIATION_CUSTOM_TYPE\n\t\t\t? [completedReconciliationIntent(entry.details)].filter((intent): intent is string => intent !== undefined)\n\t\t\t: []\n\t));\n\tconst scheduled = new Set(protectedMessages(session).flatMap((entry) => {\n\t\tconst intent = completedReconciliationIntent(entry.message.details);\n\t\treturn intent === undefined ? [] : [intent];\n\t}));\n\tlet recovered = 0;\n\tfor (const entry of branch) {\n\t\tif (entry.type !== \"custom_message\") continue;\n\t\tconst delivery = protectedDelivery(entry.protectedReconciliation);\n\t\tif (delivery === undefined || completed.has(entry.id) || scheduled.has(entry.id)) continue;\n\t\tconst parsedTimestamp = Date.parse(entry.timestamp);\n\t\tconst card: CustomMessage = {\n\t\t\trole: \"custom\",\n\t\t\tcustomType: entry.customType,\n\t\t\tcontent: entry.content,\n\t\t\tdisplay: entry.display,\n\t\t\tdetails: entry.details,\n\t\t\ttimestamp: Number.isFinite(parsedTimestamp) ? parsedTimestamp : Date.now(),\n\t\t};\n\t\tconst reconciliation = createProtectedReconciliation(card, entry.id);\n\t\tprotectedMessages(session).push({ message: reconciliation, delivery, phase: \"queued\" });\n\t\tsession._queueAgentMessage(reconciliation, delivery);\n\t\trecovered += 1;\n\t}\n\treturn recovered;\n}\n\ninterface ProtectedAdmission {\n\towner: AgentSession;\n\tcards: CustomMessage[];\n\treconciliations: CustomMessage[];\n}\n\nasync function prepareProtectedAdmission(\n\tsession: AgentSession,\n\tmessages: CustomMessage[],\n\tdelivery: ProtectedDelivery,\n): Promise<ProtectedAdmission> {\n\t// While the initiating workflow tool is still executing, its assistant call\n\t// may be ahead of SessionManager's async event writer. Wait only in that\n\t// protocol-sensitive phase; at ordinary turn boundaries the hidden steer must\n\t// be queued synchronously so agent-core's next native poll observes it.\n\tif (session.agent.state.pendingToolCalls.size > 0) await session._agentEventQueue;\n\tconst owner = resolveWorkflowStageDeliveryTarget(session);\n\tconst prepared = messages.map((message) => {\n\t\tconst { card, intentEntryId } = appendDurableDisplayCard(owner, message, delivery);\n\t\treturn { card, reconciliation: createProtectedReconciliation(message, intentEntryId) };\n\t});\n\tconst cards = prepared.map((entry) => entry.card);\n\tconst reconciliations = prepared.map((entry) => entry.reconciliation);\n\tprotectedMessages(owner).push(...reconciliations.map((message) => ({ message, delivery, phase: \"queued\" as const })));\n\treturn { owner, cards, reconciliations };\n}\n\nfunction emitProtectedAdmission(admission: ProtectedAdmission): AgentSession {\n\tlet owner = admission.owner;\n\tfor (const card of admission.cards) {\n\t\towner = resolveWorkflowStageDeliveryTarget(owner);\n\t\temitDurableDisplayCard(owner, card);\n\t}\n\treturn resolveWorkflowStageDeliveryTarget(owner);\n}\n\n/** Persist one visible card and register its hidden model-facing turn. */\nexport async function admitProtectedStreamingCustomMessage(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n\tdelivery: ProtectedDelivery,\n): Promise<CustomMessage> {\n\tconst admission = await prepareProtectedAdmission(session, [message], delivery);\n\temitProtectedAdmission(admission);\n\treturn admission.reconciliations[0]!;\n}\n\n/** Queue one hidden turn before public listeners can transfer its ownership. */\nexport async function queueProtectedStreamingCustomMessage(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n\tdelivery: ProtectedDelivery,\n): Promise<void> {\n\tconst admission = await prepareProtectedAdmission(session, [message], delivery);\n\tadmission.owner._queueAgentMessage(admission.reconciliations[0]!, delivery);\n\temitProtectedAdmission(admission);\n}\n\n/** Queue a whole hidden batch before public listeners can transfer ownership. */\nexport async function queueProtectedStreamingCustomMessages(\n\tsession: AgentSession,\n\tmessages: CustomMessage[],\n\tdelivery: ProtectedDelivery,\n): Promise<void> {\n\tconst admission = await prepareProtectedAdmission(session, messages, delivery);\n\tfor (const reconciliation of admission.reconciliations) {\n\t\tadmission.owner._queueAgentMessage(reconciliation, delivery);\n\t}\n\temitProtectedAdmission(admission);\n}\n\n/** Start or queue an idle protected batch before exposing its display cards. */\nexport async function triggerProtectedStreamingCustomMessages(\n\tsession: AgentSession,\n\tmessages: CustomMessage[],\n\tdelivery: ProtectedDelivery,\n): Promise<void> {\n\tconst admission = await prepareProtectedAdmission(session, messages, delivery);\n\tfor (const reconciliation of admission.reconciliations) {\n\t\tadmission.owner._queueAgentMessage(reconciliation, delivery);\n\t}\n\tconst owner = emitProtectedAdmission(admission);\n\tif (owner.isStreaming || owner._queuedMessagesPaused) return;\n\tfor (const reconciliation of admission.reconciliations) {\n\t\tremoveQueuedProtectedReference(owner, reconciliation);\n\t}\n\tconst turn = owner._runAgentPrompt(admission.reconciliations);\n\tvoid turn.catch(() => {});\n}\n\n/** Record that agent-core drained and consumed the hidden reconciliation. */\nexport function markProtectedStreamingCustomMessageConsumed(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n): boolean {\n\tconst entry = protectedMessages(session).find((candidate) => candidate.message === message);\n\tif (!entry) return false;\n\tentry.phase = \"consumed-unpersisted\";\n\treturn true;\n}\n\nexport function markProtectedStreamingCustomMessagePersistenceFailed(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n): void {\n\tconst entry = protectedMessages(session).find((candidate) => candidate.message === message);\n\tif (entry?.phase === \"consumed-unpersisted\") entry.phase = \"persistence-failed\";\n}\n\nexport function isProtectedStreamingCustomMessage(session: AgentSession, message: CustomMessage): boolean {\n\treturn protectedMessages(session).some((entry) => entry.message === message);\n}\n\n/**\n * Persist a consumed hidden reconciliation exactly once. Its visible card was\n * already committed at admission, so a transient failure never re-adds a card\n * or re-injects another provider message.\n */\nexport function persistProtectedStreamingCustomMessage(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n): boolean {\n\tconst pending = protectedMessages(session);\n\tconst index = pending.findIndex((entry) => entry.message === message);\n\tif (index === -1) return false;\n\tconst entry = pending[index];\n\tif (entry.phase !== \"consumed-unpersisted\" && entry.phase !== \"persistence-failed\") return true;\n\tsession.sessionManager.appendCustomMessageEntry(\n\t\tmessage.customType,\n\t\tmessage.content,\n\t\tmessage.display,\n\t\tmessage.details,\n\t\tcustomMessageExcludesContext(message),\n\t);\n\tpending.splice(index, 1);\n\treturn true;\n}\n\n/** Retry only hidden reconciliation persistence; never queue another alias. */\nexport function retryConsumedProtectedStreamingCustomMessages(session: AgentSession): void {\n\tfor (const entry of [...protectedMessages(session)]) {\n\t\tif (entry.phase !== \"persistence-failed\") continue;\n\t\ttry {\n\t\t\tpersistProtectedStreamingCustomMessage(session, entry.message);\n\t\t} catch {\n\t\t\t// The visible lifecycle card is already durable. Keep this consumed phase\n\t\t\t// for a later event rather than duplicating either the card or model turn.\n\t\t}\n\t}\n}\n\n/** Flush consumed reconciliations before session state can be discarded. */\nexport function flushConsumedProtectedStreamingCustomMessages(session: AgentSession): void {\n\tfor (const entry of [...protectedMessages(session)]) {\n\t\tif (entry.phase === \"queued\") continue;\n\t\t// Do not swallow the final write failure: callers must keep this session\n\t\t// alive rather than discard the only remaining recovery state.\n\t\tpersistProtectedStreamingCustomMessage(session, entry.message);\n\t}\n}\n\nfunction removeReference<T>(items: T[], message: T): void {\n\tlet index = items.indexOf(message);\n\twhile (index >= 0) {\n\t\titems.splice(index, 1);\n\t\tindex = items.indexOf(message);\n\t}\n}\n\nfunction removeQueuedProtectedReference(session: AgentSession, message: CustomMessage): void {\n\tconst hold = session._activeInterruptQueueHold;\n\tif (hold !== undefined) {\n\t\tremoveReference(hold.steering, message);\n\t\tremoveReference(hold.followUp, message);\n\t}\n\tconst queues = session._drainQueuedAgentMessages();\n\tsession._restoreQueuedAgentMessages({\n\t\tsteering: queues.steering.filter((candidate) => candidate !== message),\n\t\tfollowUp: queues.followUp.filter((candidate) => candidate !== message),\n\t});\n}\n\nfunction isPausedHeldProtectedReference(session: AgentSession, message: CustomMessage): boolean {\n\tconst hold = session._activeInterruptQueueHold;\n\treturn session._queuedMessagesPaused && hold !== undefined &&\n\t\t(hold.steering.includes(message) || hold.followUp.includes(message));\n}\n\n/**\n * Persist only reconciliation input already sealed inside an accepted pause\n * hold. Other queued input can still race an active protocol turn and must keep\n * the historical fail-closed disposal behavior.\n */\nexport function prepareProtectedStreamingCustomMessagesForDisposal(session: AgentSession): void {\n\tconst pending = protectedMessages(session);\n\tconst queued = pending.filter((entry) => entry.phase === \"queued\");\n\tif (queued.some((entry) => !isPausedHeldProtectedReference(session, entry.message))) {\n\t\tthrow new Error(\"Cannot dispose a session with a queued protected reconciliation\");\n\t}\n\tfor (const entry of queued) {\n\t\tsession.sessionManager.appendCustomMessageEntry(\n\t\t\tentry.message.customType,\n\t\t\tentry.message.content,\n\t\t\tentry.message.display,\n\t\t\tentry.message.details,\n\t\t\tcustomMessageExcludesContext(entry.message),\n\t\t);\n\t\tremoveQueuedProtectedReference(session, entry.message);\n\t\tconst index = pending.indexOf(entry);\n\t\tif (index >= 0) pending.splice(index, 1);\n\t}\n\tflushConsumedProtectedStreamingCustomMessages(session);\n}\n\n/** Restore only protected references actually removed from native queues/hold. */\nexport function restoreProtectedStreamingCustomMessages(\n\tsession: AgentSession,\n\tremoved: DrainedAgentQueues,\n): void {\n\tconst removedReferences = new Set([...removed.steering, ...removed.followUp]);\n\tfor (const entry of protectedMessages(session)) {\n\t\tif (entry.phase === \"queued\" && removedReferences.has(entry.message)) {\n\t\t\tsession._queueAgentMessage(entry.message, entry.delivery);\n\t\t}\n\t}\n}\n\n/** Move protection only for message references that transfer with native queues. */\nexport function transferProtectedStreamingCustomMessages(\n\tsource: AgentSession,\n\ttarget: AgentSession,\n\ttransferred: DrainedAgentQueues,\n): void {\n\tconst transferredReferences = new Set([...transferred.steering, ...transferred.followUp]);\n\tconst retained: ProtectedStreamingCustomMessage[] = [];\n\tconst moved: ProtectedStreamingCustomMessage[] = [];\n\tfor (const entry of protectedMessages(source)) {\n\t\tif (entry.phase === \"queued\" && transferredReferences.has(entry.message)) moved.push(entry);\n\t\telse retained.push(entry);\n\t}\n\tsource._protectedStreamingCustomMessages = retained;\n\tprotectedMessages(target).unshift(...moved);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-persistent-custom-messages.js","sourceRoot":"","sources":["../../src/core/agent-session-persistent-custom-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveWorkflowStageDeliveryTarget } from \"./agent-session-delivery-forwarding.ts\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport type { DrainedAgentQueues } from \"./agent-session-types.ts\";\nimport { customMessageExcludesContext } from \"./agent-session-types.ts\";\nimport type { CustomMessage } from \"./messages.ts\";\n\ntype ProtectedDelivery = \"steer\" | \"followUp\";\ntype ProtectedPhase = \"queued\" | \"consumed-unpersisted\" | \"persistence-failed\";\n\nexport const PROTECTED_RECONCILIATION_CUSTOM_TYPE = \"atomic:protected-streaming-reconciliation\";\n\ninterface ProtectedReconciliationDetails {\n\tprotectedReconciliationOf: string;\n}\n\nexport interface ProtectedStreamingCustomMessage {\n\tmessage: CustomMessage;\n\tdelivery: ProtectedDelivery;\n\tphase: ProtectedPhase;\n}\n\nfunction protectedMessages(session: AgentSession): ProtectedStreamingCustomMessage[] {\n\tsession._protectedStreamingCustomMessages ??= [];\n\treturn session._protectedStreamingCustomMessages;\n}\n\nfunction appendDurableDisplayCard(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n\tdelivery: ProtectedDelivery,\n): { readonly card: CustomMessage & { excludeFromContext: true }; readonly intentEntryId: string } {\n\tconst card = { ...message, excludeFromContext: true } satisfies CustomMessage & { excludeFromContext: true };\n\t// The card and recovery marker share one append, so either both survive a\n\t// process exit or neither does.\n\tconst intentEntryId = session.sessionManager.appendCustomMessageEntry(\n\t\tcard.customType,\n\t\tcard.content,\n\t\tcard.display,\n\t\tcard.details,\n\t\ttrue,\n\t\t{ delivery },\n\t);\n\tsession.agent.state.messages.push(card);\n\treturn { card, intentEntryId };\n}\n\nfunction emitDurableDisplayCard(session: AgentSession, card: CustomMessage): void {\n\t// The card is already live and file-backed, and its protected reconciliation\n\t// is registered. Public listeners remain fallible, but their errors cannot\n\t// revoke admission or make the producer retry this committed occurrence.\n\ttry {\n\t\tsession._emit({ type: \"message_start\", message: card });\n\t} catch {}\n\ttry {\n\t\tsession._emit({ type: \"message_end\", message: card });\n\t} catch {}\n}\n\nfunction createProtectedReconciliation(message: CustomMessage, intentEntryId: string): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType: PROTECTED_RECONCILIATION_CUSTOM_TYPE,\n\t\tcontent: message.content,\n\t\tdisplay: false,\n\t\tdetails: { protectedReconciliationOf: intentEntryId } satisfies ProtectedReconciliationDetails,\n\t\ttimestamp: message.timestamp,\n\t};\n}\n\nfunction completedReconciliationIntent(details: unknown): string | undefined {\n\tif (details === null || typeof details !== \"object\") return undefined;\n\tconst intent = (details as { protectedReconciliationOf?: unknown }).protectedReconciliationOf;\n\treturn typeof intent === \"string\" ? intent : undefined;\n}\n\nfunction protectedDelivery(marker: unknown): ProtectedDelivery | undefined {\n\tif (marker === null || typeof marker !== \"object\") return undefined;\n\tconst delivery = (marker as { delivery?: unknown }).delivery;\n\treturn delivery === \"steer\" || delivery === \"followUp\" ? delivery : undefined;\n}\n\n/** Requeue each durable card intent that has no persisted hidden completion. */\nexport function recoverProtectedStreamingCustomMessages(session: AgentSession): number {\n\tconst branch = session.sessionManager.getBranch();\n\tconst completed = new Set(\n\t\tbranch.flatMap((entry) =>\n\t\t\tentry.type === \"custom_message\" && entry.customType === PROTECTED_RECONCILIATION_CUSTOM_TYPE\n\t\t\t\t? [completedReconciliationIntent(entry.details)].filter((intent): intent is string => intent !== undefined)\n\t\t\t\t: [],\n\t\t),\n\t);\n\tconst scheduled = new Set(\n\t\tprotectedMessages(session).flatMap((entry) => {\n\t\t\tconst intent = completedReconciliationIntent(entry.message.details);\n\t\t\treturn intent === undefined ? [] : [intent];\n\t\t}),\n\t);\n\tlet recovered = 0;\n\tfor (const entry of branch) {\n\t\tif (entry.type !== \"custom_message\") continue;\n\t\tconst delivery = protectedDelivery(entry.protectedReconciliation);\n\t\tif (delivery === undefined || completed.has(entry.id) || scheduled.has(entry.id)) continue;\n\t\tconst parsedTimestamp = Date.parse(entry.timestamp);\n\t\tconst card: CustomMessage = {\n\t\t\trole: \"custom\",\n\t\t\tcustomType: entry.customType,\n\t\t\tcontent: entry.content,\n\t\t\tdisplay: entry.display,\n\t\t\tdetails: entry.details,\n\t\t\ttimestamp: Number.isFinite(parsedTimestamp) ? parsedTimestamp : Date.now(),\n\t\t};\n\t\tconst reconciliation = createProtectedReconciliation(card, entry.id);\n\t\tprotectedMessages(session).push({ message: reconciliation, delivery, phase: \"queued\" });\n\t\tsession._queueAgentMessage(reconciliation, delivery);\n\t\trecovered += 1;\n\t}\n\treturn recovered;\n}\n\ninterface ProtectedAdmission {\n\towner: AgentSession;\n\tcards: CustomMessage[];\n\treconciliations: CustomMessage[];\n}\n\nasync function prepareProtectedAdmission(\n\tsession: AgentSession,\n\tmessages: CustomMessage[],\n\tdelivery: ProtectedDelivery,\n): Promise<ProtectedAdmission> {\n\t// While the initiating workflow tool is still executing, its assistant call\n\t// may be ahead of SessionManager's async event writer. Wait only in that\n\t// protocol-sensitive phase; at ordinary turn boundaries the hidden steer must\n\t// be queued synchronously so agent-core's next native poll observes it.\n\tif (session.agent.state.pendingToolCalls.size > 0) await session._agentEventQueue;\n\tconst owner = resolveWorkflowStageDeliveryTarget(session);\n\tconst prepared = messages.map((message) => {\n\t\tconst { card, intentEntryId } = appendDurableDisplayCard(owner, message, delivery);\n\t\treturn { card, reconciliation: createProtectedReconciliation(message, intentEntryId) };\n\t});\n\tconst cards = prepared.map((entry) => entry.card);\n\tconst reconciliations = prepared.map((entry) => entry.reconciliation);\n\tprotectedMessages(owner).push(\n\t\t...reconciliations.map((message) => ({ message, delivery, phase: \"queued\" as const })),\n\t);\n\treturn { owner, cards, reconciliations };\n}\n\nfunction emitProtectedAdmission(admission: ProtectedAdmission): AgentSession {\n\tlet owner = admission.owner;\n\tfor (const card of admission.cards) {\n\t\towner = resolveWorkflowStageDeliveryTarget(owner);\n\t\temitDurableDisplayCard(owner, card);\n\t}\n\treturn resolveWorkflowStageDeliveryTarget(owner);\n}\n\n/** Persist one visible card and register its hidden model-facing turn. */\nexport async function admitProtectedStreamingCustomMessage(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n\tdelivery: ProtectedDelivery,\n): Promise<CustomMessage> {\n\tconst admission = await prepareProtectedAdmission(session, [message], delivery);\n\temitProtectedAdmission(admission);\n\treturn admission.reconciliations[0]!;\n}\n\n/** Queue one hidden turn before public listeners can transfer its ownership. */\nexport async function queueProtectedStreamingCustomMessage(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n\tdelivery: ProtectedDelivery,\n): Promise<void> {\n\tconst admission = await prepareProtectedAdmission(session, [message], delivery);\n\tadmission.owner._queueAgentMessage(admission.reconciliations[0]!, delivery);\n\temitProtectedAdmission(admission);\n}\n\n/** Queue a whole hidden batch before public listeners can transfer ownership. */\nexport async function queueProtectedStreamingCustomMessages(\n\tsession: AgentSession,\n\tmessages: CustomMessage[],\n\tdelivery: ProtectedDelivery,\n): Promise<void> {\n\tconst admission = await prepareProtectedAdmission(session, messages, delivery);\n\tfor (const reconciliation of admission.reconciliations) {\n\t\tadmission.owner._queueAgentMessage(reconciliation, delivery);\n\t}\n\temitProtectedAdmission(admission);\n}\n\n/** Start or queue an idle protected batch before exposing its display cards. */\nexport async function triggerProtectedStreamingCustomMessages(\n\tsession: AgentSession,\n\tmessages: CustomMessage[],\n\tdelivery: ProtectedDelivery,\n): Promise<void> {\n\tconst admission = await prepareProtectedAdmission(session, messages, delivery);\n\tfor (const reconciliation of admission.reconciliations) {\n\t\tadmission.owner._queueAgentMessage(reconciliation, delivery);\n\t}\n\tconst owner = emitProtectedAdmission(admission);\n\tif (owner.isStreaming || owner._queuedMessagesPaused) return;\n\tfor (const reconciliation of admission.reconciliations) {\n\t\tremoveQueuedProtectedReference(owner, reconciliation);\n\t}\n\tconst turn = owner._runAgentPrompt(admission.reconciliations);\n\tvoid turn.catch(() => {});\n}\n\n/** Record that agent-core drained and consumed the hidden reconciliation. */\nexport function markProtectedStreamingCustomMessageConsumed(session: AgentSession, message: CustomMessage): boolean {\n\tconst entry = protectedMessages(session).find((candidate) => candidate.message === message);\n\tif (!entry) return false;\n\tentry.phase = \"consumed-unpersisted\";\n\treturn true;\n}\n\nexport function markProtectedStreamingCustomMessagePersistenceFailed(\n\tsession: AgentSession,\n\tmessage: CustomMessage,\n): void {\n\tconst entry = protectedMessages(session).find((candidate) => candidate.message === message);\n\tif (entry?.phase === \"consumed-unpersisted\") entry.phase = \"persistence-failed\";\n}\n\nexport function isProtectedStreamingCustomMessage(session: AgentSession, message: CustomMessage): boolean {\n\treturn protectedMessages(session).some((entry) => entry.message === message);\n}\n\n/**\n * Persist a consumed hidden reconciliation exactly once. Its visible card was\n * already committed at admission, so a transient failure never re-adds a card\n * or re-injects another provider message.\n */\nexport function persistProtectedStreamingCustomMessage(session: AgentSession, message: CustomMessage): boolean {\n\tconst pending = protectedMessages(session);\n\tconst index = pending.findIndex((entry) => entry.message === message);\n\tif (index === -1) return false;\n\tconst entry = pending[index];\n\tif (entry.phase !== \"consumed-unpersisted\" && entry.phase !== \"persistence-failed\") return true;\n\tsession.sessionManager.appendCustomMessageEntry(\n\t\tmessage.customType,\n\t\tmessage.content,\n\t\tmessage.display,\n\t\tmessage.details,\n\t\tcustomMessageExcludesContext(message),\n\t);\n\tpending.splice(index, 1);\n\treturn true;\n}\n\n/** Retry only hidden reconciliation persistence; never queue another alias. */\nexport function retryConsumedProtectedStreamingCustomMessages(session: AgentSession): void {\n\tfor (const entry of [...protectedMessages(session)]) {\n\t\tif (entry.phase !== \"persistence-failed\") continue;\n\t\ttry {\n\t\t\tpersistProtectedStreamingCustomMessage(session, entry.message);\n\t\t} catch {\n\t\t\t// The visible lifecycle card is already durable. Keep this consumed phase\n\t\t\t// for a later event rather than duplicating either the card or model turn.\n\t\t}\n\t}\n}\n\n/** Flush consumed reconciliations before session state can be discarded. */\nexport function flushConsumedProtectedStreamingCustomMessages(session: AgentSession): void {\n\tfor (const entry of [...protectedMessages(session)]) {\n\t\tif (entry.phase === \"queued\") continue;\n\t\t// Do not swallow the final write failure: callers must keep this session\n\t\t// alive rather than discard the only remaining recovery state.\n\t\tpersistProtectedStreamingCustomMessage(session, entry.message);\n\t}\n}\n\nfunction removeReference<T>(items: T[], message: T): void {\n\tlet index = items.indexOf(message);\n\twhile (index >= 0) {\n\t\titems.splice(index, 1);\n\t\tindex = items.indexOf(message);\n\t}\n}\n\nfunction removeQueuedProtectedReference(session: AgentSession, message: CustomMessage): void {\n\tconst hold = session._activeInterruptQueueHold;\n\tif (hold !== undefined) {\n\t\tremoveReference(hold.steering, message);\n\t\tremoveReference(hold.followUp, message);\n\t}\n\tconst queues = session._drainQueuedAgentMessages();\n\tsession._restoreQueuedAgentMessages({\n\t\tsteering: queues.steering.filter((candidate) => candidate !== message),\n\t\tfollowUp: queues.followUp.filter((candidate) => candidate !== message),\n\t});\n}\n\nfunction isPausedHeldProtectedReference(session: AgentSession, message: CustomMessage): boolean {\n\tconst hold = session._activeInterruptQueueHold;\n\treturn (\n\t\tsession._queuedMessagesPaused &&\n\t\thold !== undefined &&\n\t\t(hold.steering.includes(message) || hold.followUp.includes(message))\n\t);\n}\n\n/**\n * Persist only reconciliation input already sealed inside an accepted pause\n * hold. Other queued input can still race an active protocol turn and must keep\n * the historical fail-closed disposal behavior.\n */\nexport function prepareProtectedStreamingCustomMessagesForDisposal(session: AgentSession): void {\n\tconst pending = protectedMessages(session);\n\tconst queued = pending.filter((entry) => entry.phase === \"queued\");\n\tif (queued.some((entry) => !isPausedHeldProtectedReference(session, entry.message))) {\n\t\tthrow new Error(\"Cannot dispose a session with a queued protected reconciliation\");\n\t}\n\tfor (const entry of queued) {\n\t\tsession.sessionManager.appendCustomMessageEntry(\n\t\t\tentry.message.customType,\n\t\t\tentry.message.content,\n\t\t\tentry.message.display,\n\t\t\tentry.message.details,\n\t\t\tcustomMessageExcludesContext(entry.message),\n\t\t);\n\t\tremoveQueuedProtectedReference(session, entry.message);\n\t\tconst index = pending.indexOf(entry);\n\t\tif (index >= 0) pending.splice(index, 1);\n\t}\n\tflushConsumedProtectedStreamingCustomMessages(session);\n}\n\n/** Restore only protected references actually removed from native queues/hold. */\nexport function restoreProtectedStreamingCustomMessages(session: AgentSession, removed: DrainedAgentQueues): void {\n\tconst removedReferences = new Set([...removed.steering, ...removed.followUp]);\n\tfor (const entry of protectedMessages(session)) {\n\t\tif (entry.phase === \"queued\" && removedReferences.has(entry.message)) {\n\t\t\tsession._queueAgentMessage(entry.message, entry.delivery);\n\t\t}\n\t}\n}\n\n/** Move protection only for message references that transfer with native queues. */\nexport function transferProtectedStreamingCustomMessages(\n\tsource: AgentSession,\n\ttarget: AgentSession,\n\ttransferred: DrainedAgentQueues,\n): void {\n\tconst transferredReferences = new Set([...transferred.steering, ...transferred.followUp]);\n\tconst retained: ProtectedStreamingCustomMessage[] = [];\n\tconst moved: ProtectedStreamingCustomMessage[] = [];\n\tfor (const entry of protectedMessages(source)) {\n\t\tif (entry.phase === \"queued\" && transferredReferences.has(entry.message)) moved.push(entry);\n\t\telse retained.push(entry);\n\t}\n\tsource._protectedStreamingCustomMessages = retained;\n\tprotectedMessages(target).unshift(...moved);\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
|
-
import { type VerbatimCompactionResult } from "./compaction/index.ts";
|
|
3
2
|
import type { AgentSessionInternalSurface as AgentSession } from "./agent-session-methods.ts";
|
|
3
|
+
import { type VerbatimCompactionResult } from "./compaction/index.ts";
|
|
4
4
|
/** Compact tool-expanded context without scheduling a second Agent continuation. */
|
|
5
5
|
export declare function _preflightPostToolContext(this: AgentSession, messages: AgentMessage[], signal?: AbortSignal): Promise<AgentMessage[]>;
|
|
6
6
|
/** Gate the transformed message context immediately before provider conversion. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-post-tool-compaction.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-post-tool-compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-session-post-tool-compaction.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-post-tool-compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAwC,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAY5G,oFAAoF;AACpF,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EAAE,EACxB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAyFzB;AAED,mFAAmF;AACnF,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA+B/G;AAED,MAAM,WAAW,8BAA8B;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,wBAAwB,CAAC;CACjC;AAED,eAAO,MAAM,qCAAqC;;;CAGjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-post-tool-compaction.js","sourceRoot":"","sources":["../../src/core/agent-session-post-tool-compaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { estimateContextTokens, shouldCompact, type VerbatimCompactionResult } from \"./compaction/index.ts\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { scrubPreCompactionAssistantUsage } from \"./provider-context-usage.ts\";\n\nfunction postToolFailureMessage(error: unknown): string {\n\tconst detail = error instanceof Error ? error.message : String(error);\n\treturn `Post-tool context compaction failed before the next provider request: ${detail}`;\n}\n\nfunction hardLimitMessage(projectedTokens: number, hardInputLimit: number): string {\n\treturn `Post-tool context remains over the provider hard input limit after compaction (${projectedTokens} > ${hardInputLimit} tokens); the next provider request was not sent.`;\n}\n\n/** Compact tool-expanded context without scheduling a second Agent continuation. */\nexport async function _preflightPostToolContext(\n\tthis: AgentSession,\n\tmessages: AgentMessage[],\n\tsignal?: AbortSignal,\n): Promise<AgentMessage[]> {\n\tconst model = this.model;\n\tconst settings = this.settingsManager.getCompactionSettings();\n\tif (!model || !settings.enabled) return messages;\n\n\tconst hardInputLimit = model.contextWindow;\n\tconst projectedTokens = estimateContextTokens(messages).tokens;\n\tif (!shouldCompact(projectedTokens, hardInputLimit, settings)) return messages;\n\t// Only a context that genuinely will not fit may clear a sub-minimum region.\n\t// The threshold sits at `contextWindow - reserveTokens`, well below the hard\n\t// limit, so a crossing alone is no reason to destroy context.\n\tconst overHardLimit = hardInputLimit > 0 && projectedTokens > hardInputLimit;\n\n\t// Tool-result persistence is ordered on AgentSession's event queue, while Pi\n\t// may reach its next-turn hook as soon as its own listener barrier settles.\n\tawait this._agentEventQueue;\n\tif (this._autoCompactionAbortController) {\n\t\tconst message = postToolFailureMessage(\"another automatic compaction is already active\");\n\t\tthis._postToolCompactionPreflightError = message;\n\t\tthrow new Error(message);\n\t}\n\n\tconst abortController = new AbortController();\n\tconst relayAbort = () => abortController.abort();\n\tsignal?.addEventListener(\"abort\", relayAbort, { once: true });\n\tif (signal?.aborted) abortController.abort();\n\tthis._autoCompactionAbortController = abortController;\n\tthis._emit({ type: \"compaction_start\", reason: \"threshold\", midTurn: true });\n\n\ttry {\n\t\tconst result = await this._applyVerbatimCompaction({\n\t\t\tresolvePlannerAuth: async (candidate) => {\n\t\t\t\tconst auth = await this._getRequiredRequestAuth(candidate);\n\t\t\t\treturn auth.apiKey || auth.headers ? auth : undefined;\n\t\t\t},\n\t\t\tabortController,\n\t\t\tbackupLabel: \"auto-compact\",\n\t\t\treason: \"threshold\",\n\t\t\t// Mid-turn: a compaction failure here kills the active turn.\n\t\t\turgency: \"load_bearing\",\n\t\t\t...(overHardLimit ? { allowSmallRegion: true } : {}),\n\t\t});\n\t\tif (!result) {\n\t\t\t// Nothing was compactable and the projected context still fits, so the\n\t\t\t// follow-up request can be sent unchanged. That is a successful no-op,\n\t\t\t// not a failure: raising here is what killed the active turn.\n\t\t\tthis._emit({\n\t\t\t\ttype: \"compaction_end\",\n\t\t\t\treason: \"threshold\",\n\t\t\t\tresult: undefined,\n\t\t\t\taborted: false,\n\t\t\t\twillRetry: false,\n\t\t\t\tmidTurn: true,\n\t\t\t});\n\t\t\treturn messages;\n\t\t}\n\n\t\tthis._pendingPostToolCompactionGuard = { hardInputLimit, result };\n\t\t// `AgentState.messages` has an asymmetric accessor pair: the setter copies, the\n\t\t// getter hands back the live internal array. Returning it directly would make the\n\t\t// agent loop's `currentContext.messages` an alias of `agent.state.messages`, and\n\t\t// from the next turn on both writers (`runLoop` and the `message_end` reducer)\n\t\t// would append every message twice — duplicate `tool_result` blocks for one\n\t\t// `tool_use` id, which the provider rejects with an unrecoverable 400.\n\t\treturn this.agent.state.messages.slice();\n\t} catch (error) {\n\t\tconst detail = error instanceof Error ? error.message : String(error);\n\t\tconst aborted =\n\t\t\tabortController.signal.aborted ||\n\t\t\tdetail === \"Compaction cancelled\" ||\n\t\t\t(error instanceof Error && error.name === \"AbortError\");\n\t\tconst errorMessage = aborted\n\t\t\t? \"Post-tool context compaction was cancelled before the next provider request.\"\n\t\t\t: postToolFailureMessage(error);\n\t\tthis._postToolCompactionPreflightError = errorMessage;\n\t\tthis._emit({\n\t\t\ttype: \"compaction_end\",\n\t\t\treason: \"threshold\",\n\t\t\tresult: undefined,\n\t\t\taborted,\n\t\t\twillRetry: false,\n\t\t\tmidTurn: true,\n\t\t\t...(aborted ? {} : { errorMessage }),\n\t\t});\n\t\tthrow new Error(errorMessage, { cause: error });\n\t} finally {\n\t\tsignal?.removeEventListener(\"abort\", relayAbort);\n\t\tthis._autoCompactionAbortController = undefined;\n\t}\n}\n\n/** Gate the transformed message context immediately before provider conversion. */\nexport function _finishPostToolCompactionPreflight(\n\tthis: AgentSession,\n\tmessages: AgentMessage[],\n): AgentMessage[] {\n\tconst pending = this._pendingPostToolCompactionGuard;\n\tif (!pending) return messages;\n\tthis._pendingPostToolCompactionGuard = undefined;\n\n\tconst providerBoundMessages = scrubPreCompactionAssistantUsage(messages, this.sessionManager.getBranch());\n\tconst projectedTokens = estimateContextTokens(providerBoundMessages).tokens;\n\tif (projectedTokens > pending.hardInputLimit) {\n\t\tconst errorMessage = hardLimitMessage(projectedTokens, pending.hardInputLimit);\n\t\tthis._postToolCompactionPreflightError = errorMessage;\n\t\tthis._emit({\n\t\t\ttype: \"compaction_end\",\n\t\t\treason: \"threshold\",\n\t\t\tresult: pending.result,\n\t\t\taborted: false,\n\t\t\twillRetry: false,\n\t\t\tmidTurn: true,\n\t\t\terrorMessage,\n\t\t});\n\t\tthrow new Error(errorMessage);\n\t}\n\n\tthis._emit({\n\t\ttype: \"compaction_end\",\n\t\treason: \"threshold\",\n\t\tresult: pending.result,\n\t\taborted: false,\n\t\twillRetry: false,\n\t\tmidTurn: true,\n\t});\n\treturn providerBoundMessages;\n}\n\nexport interface PendingPostToolCompactionGuard {\n\thardInputLimit: number;\n\tresult: VerbatimCompactionResult;\n}\n\nexport const agentSessionPostToolCompactionMethods = {\n\t_preflightPostToolContext,\n\t_finishPostToolCompactionPreflight,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-post-tool-compaction.js","sourceRoot":"","sources":["../../src/core/agent-session-post-tool-compaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { estimateContextTokens, shouldCompact, type VerbatimCompactionResult } from \"./compaction/index.ts\";\nimport { scrubPreCompactionAssistantUsage } from \"./provider-context-usage.ts\";\n\nfunction postToolFailureMessage(error: unknown): string {\n\tconst detail = error instanceof Error ? error.message : String(error);\n\treturn `Post-tool context compaction failed before the next provider request: ${detail}`;\n}\n\nfunction hardLimitMessage(projectedTokens: number, hardInputLimit: number): string {\n\treturn `Post-tool context remains over the provider hard input limit after compaction (${projectedTokens} > ${hardInputLimit} tokens); the next provider request was not sent.`;\n}\n\n/** Compact tool-expanded context without scheduling a second Agent continuation. */\nexport async function _preflightPostToolContext(\n\tthis: AgentSession,\n\tmessages: AgentMessage[],\n\tsignal?: AbortSignal,\n): Promise<AgentMessage[]> {\n\tconst model = this.model;\n\tconst settings = this.settingsManager.getCompactionSettings();\n\tif (!model || !settings.enabled) return messages;\n\n\tconst hardInputLimit = model.contextWindow;\n\tconst projectedTokens = estimateContextTokens(messages).tokens;\n\tif (!shouldCompact(projectedTokens, hardInputLimit, settings)) return messages;\n\t// Only a context that genuinely will not fit may clear a sub-minimum region.\n\t// The threshold sits at `contextWindow - reserveTokens`, well below the hard\n\t// limit, so a crossing alone is no reason to destroy context.\n\tconst overHardLimit = hardInputLimit > 0 && projectedTokens > hardInputLimit;\n\n\t// Tool-result persistence is ordered on AgentSession's event queue, while Pi\n\t// may reach its next-turn hook as soon as its own listener barrier settles.\n\tawait this._agentEventQueue;\n\tif (this._autoCompactionAbortController) {\n\t\tconst message = postToolFailureMessage(\"another automatic compaction is already active\");\n\t\tthis._postToolCompactionPreflightError = message;\n\t\tthrow new Error(message);\n\t}\n\n\tconst abortController = new AbortController();\n\tconst relayAbort = () => abortController.abort();\n\tsignal?.addEventListener(\"abort\", relayAbort, { once: true });\n\tif (signal?.aborted) abortController.abort();\n\tthis._autoCompactionAbortController = abortController;\n\tthis._emit({ type: \"compaction_start\", reason: \"threshold\", midTurn: true });\n\n\ttry {\n\t\tconst result = await this._applyVerbatimCompaction({\n\t\t\tresolvePlannerAuth: async (candidate) => {\n\t\t\t\tconst auth = await this._getRequiredRequestAuth(candidate);\n\t\t\t\treturn auth.apiKey || auth.headers ? auth : undefined;\n\t\t\t},\n\t\t\tabortController,\n\t\t\tbackupLabel: \"auto-compact\",\n\t\t\treason: \"threshold\",\n\t\t\t// Mid-turn: a compaction failure here kills the active turn.\n\t\t\turgency: \"load_bearing\",\n\t\t\t...(overHardLimit ? { allowSmallRegion: true } : {}),\n\t\t});\n\t\tif (!result) {\n\t\t\t// Nothing was compactable and the projected context still fits, so the\n\t\t\t// follow-up request can be sent unchanged. That is a successful no-op,\n\t\t\t// not a failure: raising here is what killed the active turn.\n\t\t\tthis._emit({\n\t\t\t\ttype: \"compaction_end\",\n\t\t\t\treason: \"threshold\",\n\t\t\t\tresult: undefined,\n\t\t\t\taborted: false,\n\t\t\t\twillRetry: false,\n\t\t\t\tmidTurn: true,\n\t\t\t});\n\t\t\treturn messages;\n\t\t}\n\n\t\tthis._pendingPostToolCompactionGuard = { hardInputLimit, result };\n\t\t// `AgentState.messages` has an asymmetric accessor pair: the setter copies, the\n\t\t// getter hands back the live internal array. Returning it directly would make the\n\t\t// agent loop's `currentContext.messages` an alias of `agent.state.messages`, and\n\t\t// from the next turn on both writers (`runLoop` and the `message_end` reducer)\n\t\t// would append every message twice — duplicate `tool_result` blocks for one\n\t\t// `tool_use` id, which the provider rejects with an unrecoverable 400.\n\t\treturn this.agent.state.messages.slice();\n\t} catch (error) {\n\t\tconst detail = error instanceof Error ? error.message : String(error);\n\t\tconst aborted =\n\t\t\tabortController.signal.aborted ||\n\t\t\tdetail === \"Compaction cancelled\" ||\n\t\t\t(error instanceof Error && error.name === \"AbortError\");\n\t\tconst errorMessage = aborted\n\t\t\t? \"Post-tool context compaction was cancelled before the next provider request.\"\n\t\t\t: postToolFailureMessage(error);\n\t\tthis._postToolCompactionPreflightError = errorMessage;\n\t\tthis._emit({\n\t\t\ttype: \"compaction_end\",\n\t\t\treason: \"threshold\",\n\t\t\tresult: undefined,\n\t\t\taborted,\n\t\t\twillRetry: false,\n\t\t\tmidTurn: true,\n\t\t\t...(aborted ? {} : { errorMessage }),\n\t\t});\n\t\tthrow new Error(errorMessage, { cause: error });\n\t} finally {\n\t\tsignal?.removeEventListener(\"abort\", relayAbort);\n\t\tthis._autoCompactionAbortController = undefined;\n\t}\n}\n\n/** Gate the transformed message context immediately before provider conversion. */\nexport function _finishPostToolCompactionPreflight(this: AgentSession, messages: AgentMessage[]): AgentMessage[] {\n\tconst pending = this._pendingPostToolCompactionGuard;\n\tif (!pending) return messages;\n\tthis._pendingPostToolCompactionGuard = undefined;\n\n\tconst providerBoundMessages = scrubPreCompactionAssistantUsage(messages, this.sessionManager.getBranch());\n\tconst projectedTokens = estimateContextTokens(providerBoundMessages).tokens;\n\tif (projectedTokens > pending.hardInputLimit) {\n\t\tconst errorMessage = hardLimitMessage(projectedTokens, pending.hardInputLimit);\n\t\tthis._postToolCompactionPreflightError = errorMessage;\n\t\tthis._emit({\n\t\t\ttype: \"compaction_end\",\n\t\t\treason: \"threshold\",\n\t\t\tresult: pending.result,\n\t\t\taborted: false,\n\t\t\twillRetry: false,\n\t\t\tmidTurn: true,\n\t\t\terrorMessage,\n\t\t});\n\t\tthrow new Error(errorMessage);\n\t}\n\n\tthis._emit({\n\t\ttype: \"compaction_end\",\n\t\treason: \"threshold\",\n\t\tresult: pending.result,\n\t\taborted: false,\n\t\twillRetry: false,\n\t\tmidTurn: true,\n\t});\n\treturn providerBoundMessages;\n}\n\nexport interface PendingPostToolCompactionGuard {\n\thardInputLimit: number;\n\tresult: VerbatimCompactionResult;\n}\n\nexport const agentSessionPostToolCompactionMethods = {\n\t_preflightPostToolContext,\n\t_finishPostToolCompactionPreflight,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-prompt.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-prompt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-prompt.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-prompt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG9E,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAiB9D,KAAK,yBAAyB,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE7E,KAAK,iCAAiC,GAAG,aAAa,GAAG;IACxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;QACrC,iFAAiF;QACjF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;QACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI,CAAC;KACjE,CAAC;CACF,CAAC;AAEF,oFAAoF;AACpF,wBAAsB,6BAA6B,CAClD,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,gCAAgC,GAAG,6BAA6B,CAAC,EAC7F,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgLrG;AAED,wBAAsB,eAAe,CACpC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE,EACvC,aAAa,CAAC,EAAE,MAAM,IAAI,GACxB,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzE;AAED,wBAAsB,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;AAED;;GAEG;AAEH,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgCvG;AAED;;GAEG;AAEH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BpG;AAED;;;;GAIG;AAEH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB5E;AAED;;;;;;;GAOG;AAEH,wBAAsB,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWpG;AAED;;;;;;GAMG;AAEH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvG;AAED;;GAEG;AAEH,wBAAsB,eAAe,CACpC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,CAAC,EAAE;IACT,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,kBAAkB,CAAC,EAAE,iCAAiC,CAAC,oBAAoB,CAAC,CAAC;CAC7E,GACC,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;GAIG;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;CAWrC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
|
-
import { runCallback } from "./callback-activity.js";
|
|
3
|
-
import { ATOMIC_GUIDE_COMMAND_NAME, ATOMIC_GUIDE_HELP_CHOICES, atomicGuideModeForChoice, getAtomicGuideMessage, isAtomicGuideHelpChoice, normalizeAtomicGuideMode } from "./atomic-guide-command.js";
|
|
4
|
-
import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage, formatUnresolvedModelMessage } from "./auth-guidance.js";
|
|
5
|
-
import { expandPromptTemplate } from "./prompt-templates.js";
|
|
6
2
|
import { stripFrontmatter } from "../utils/frontmatter.js";
|
|
7
3
|
import { resolveWorkflowStageDeliveryTarget } from "./agent-session-delivery-forwarding.js";
|
|
4
|
+
import { ATOMIC_GUIDE_COMMAND_NAME, ATOMIC_GUIDE_HELP_CHOICES, atomicGuideModeForChoice, getAtomicGuideMessage, isAtomicGuideHelpChoice, normalizeAtomicGuideMode, } from "./atomic-guide-command.js";
|
|
5
|
+
import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage, formatUnresolvedModelMessage, } from "./auth-guidance.js";
|
|
6
|
+
import { runCallback } from "./callback-activity.js";
|
|
7
|
+
import { expandPromptTemplate } from "./prompt-templates.js";
|
|
8
8
|
/** Dispatch registered slash commands without changing the raw queue pause gate. */
|
|
9
9
|
export async function tryExecuteSessionSlashCommand(session, text) {
|
|
10
10
|
if (!text.startsWith("/"))
|
|
@@ -27,7 +27,7 @@ export async function prompt(text, options) {
|
|
|
27
27
|
workflowDelivery?.beforeDelivery?.();
|
|
28
28
|
// Registered slash commands execute without releasing ordinary queued work.
|
|
29
29
|
// Unknown slash input continues through the normal paused admission path.
|
|
30
|
-
if (expandPromptTemplates && await tryExecuteSessionSlashCommand(this, text)) {
|
|
30
|
+
if (expandPromptTemplates && (await tryExecuteSessionSlashCommand(this, text))) {
|
|
31
31
|
workflowDelivery?.delivered?.("handled");
|
|
32
32
|
preflightResult?.(true);
|
|
33
33
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-prompt.js","sourceRoot":"","sources":["../../src/core/agent-session-prompt.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { ImageContent, TextContent } from \"@earendil-works/pi-ai/compat\";\nimport { runCallback } from \"./callback-activity.ts\";\nimport { ATOMIC_GUIDE_COMMAND_NAME, ATOMIC_GUIDE_HELP_CHOICES, atomicGuideModeForChoice, getAtomicGuideMessage, isAtomicGuideHelpChoice, normalizeAtomicGuideMode } from \"./atomic-guide-command.ts\";\nimport { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage, formatUnresolvedModelMessage } from \"./auth-guidance.ts\";\nimport { expandPromptTemplate } from \"./prompt-templates.ts\";\nimport { stripFrontmatter } from \"../utils/frontmatter.ts\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { resolveWorkflowStageDeliveryTarget } from \"./agent-session-delivery-forwarding.ts\";\nimport type { PromptOptions } from \"./agent-session-types.ts\";\n\ntype UserMessageDeliveryAction = \"prompt\" | \"steer\" | \"followUp\" | \"handled\";\n\ntype PromptOptionsWithWorkflowDelivery = PromptOptions & {\n\treadonly __workflowDelivery?: {\n\t\treadonly beforeDelivery?: () => void;\n\t\t/** Called only after an idle prompt has synchronously entered the agent turn. */\n\t\treadonly promptStarted?: () => void;\n\t\treadonly delivered?: (action: UserMessageDeliveryAction) => void;\n\t};\n};\n\n/** Dispatch registered slash commands without changing the raw queue pause gate. */\nexport async function tryExecuteSessionSlashCommand(\n session: Pick<AgentSession, \"_tryExecuteBuiltinSlashCommand\" | \"_tryExecuteExtensionCommand\">,\n text: string,\n): Promise<boolean> {\n if (!text.startsWith(\"/\")) return false;\n if (await session._tryExecuteBuiltinSlashCommand(text)) return true;\n return session._tryExecuteExtensionCommand(text);\n}\n\nexport async function prompt(this: AgentSession, text: string, options?: PromptOptions): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(this);\n\tif (owner !== this) return owner.prompt(text, options);\n\tconst expandPromptTemplates = options?.expandPromptTemplates ?? true;\n\tconst preflightResult = options?.preflightResult;\n\tconst workflowDelivery = (options as PromptOptionsWithWorkflowDelivery | undefined)?.__workflowDelivery;\n\tlet messages: AgentMessage[] | undefined;\n\n try {\n // Authorize workflow delivery before commands or input extensions can perform side effects.\n // A later terminal transition cannot retroactively reject input accepted at this boundary.\n workflowDelivery?.beforeDelivery?.();\n // Registered slash commands execute without releasing ordinary queued work.\n // Unknown slash input continues through the normal paused admission path.\n if (expandPromptTemplates && await tryExecuteSessionSlashCommand(this, text)) {\n workflowDelivery?.delivered?.(\"handled\");\n preflightResult?.(true);\n return;\n }\n // A controlled pause is an admission gate, including the idle gap after\n // abort settles. Preserve the raw user payload without running input hooks,\n // compaction, or a provider turn; explicit resume makes it eligible again.\n if (this._queuedMessagesPaused) {\n const delivery = options?.streamingBehavior === \"followUp\" ? \"followUp\" : \"steer\";\n if (delivery === \"followUp\") await this._queueFollowUp(text, options?.images);\n else await this._queueSteer(text, options?.images);\n workflowDelivery?.delivered?.(delivery);\n preflightResult?.(true);\n return;\n }\n\n\n\t\t// Emit input event for extension interception (before skill/template expansion)\n\t\tlet currentText = text;\n\t\tlet currentImages = options?.images;\n\t\tif (this._extensionRunner.hasHandlers(\"input\")) {\n\t\t\tconst inputResult = await this._extensionRunner.emitInput(\n\t\t\t\tcurrentText,\n\t\t\t\tcurrentImages,\n\t\t\t\toptions?.source ?? \"interactive\",\n\t\t\t\tthis.isStreaming ? options?.streamingBehavior : undefined,\n\t\t\t);\n\t\t\tif (inputResult.action === \"handled\") {\n\t\t\t\tworkflowDelivery?.delivered?.(\"handled\");\n\t\t\t\tpreflightResult?.(true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (inputResult.action === \"transform\") {\n\t\t\t\tcurrentText = inputResult.text;\n\t\t\t\tcurrentImages = inputResult.images ?? currentImages;\n\t\t\t}\n\t\t}\n\n\t\t// Expand skill commands (/skill:name args) and prompt templates (/template args)\n\t\tlet expandedText = currentText;\n\t\tif (expandPromptTemplates) {\n\t\t\texpandedText = this._expandSkillCommand(expandedText);\n\t\t\texpandedText = expandPromptTemplate(expandedText, [...this.promptTemplates]);\n\t\t}\n\n\t\t// If streaming, queue via steer() or followUp() based on option\n\t\tif (this.isStreaming) {\n\t\t\tif (!options?.streamingBehavior) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Agent is already processing. Specify streamingBehavior ('steer' or 'followUp') to queue the message.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (options.streamingBehavior === \"followUp\") {\n\t\t\t\tawait this._queueFollowUp(expandedText, currentImages);\n\t\t\t} else {\n\t\t\t\tawait this._queueSteer(expandedText, currentImages);\n\t\t\t}\n\t\t\tworkflowDelivery?.delivered?.(options.streamingBehavior);\n\t\t\tpreflightResult?.(true);\n\t\t\treturn;\n\t\t}\n\n\t\t// Flush any pending bash messages before the new prompt\n\t\tthis._flushPendingBashMessages();\n\n\t\t// Validate model\n\t\tif (!this.model) {\n\t\t\tthrow new Error(formatNoModelSelectedMessage());\n\t\t}\n\n\t\t// Defensive guard: a model that never resolved to a real provider\n\t\t// (for example an unknown/unresolved model id that reached this path\n\t\t// as a bare string) has no `provider`, which would otherwise fail deep\n\t\t// in auth resolution as the confusing \"No API key found for undefined\".\n\t\t// Surface a clear, accurate \"unknown model\" error instead.\n\t\tconst resolvedProvider = (this.model as { provider?: unknown }).provider;\n\t\tif (typeof resolvedProvider !== \"string\" || resolvedProvider.length === 0) {\n\t\t\tthrow new Error(formatUnresolvedModelMessage(this.model));\n\t\t}\n\n\t\tif (!this._modelRuntime.hasConfiguredAuth(this.model.provider)) {\n\t\t\t// A failed credential-store load (for example auth.json briefly locked\n\t\t\t// by a concurrent process, or invalid JSON) leaves an empty in-memory\n\t\t\t// credential set. That would otherwise be misreported here as\n\t\t\t// \"No API key found\" even though the credentials exist on disk. Surface\n\t\t\t// the real load failure instead so configured providers are not falsely\n\t\t\t// reported as unauthenticated (issue #1431).\n\t\t\tconst isOAuth = this._modelRuntime.isUsingOAuth(this.model.provider);\n\t\t\tif (isOAuth) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Authentication failed for \"${this.model.provider}\". ` +\n\t\t\t\t\t\t`Credentials may have expired or network is unavailable. ` +\n\t\t\t\t\t\t`Run '/login ${this.model.provider}' to re-authenticate.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new Error(formatNoApiKeyFoundMessage(this.model.provider));\n\t\t}\n\n\t\t// Check if we need to compact before sending (catches aborted responses)\n\t\tconst lastAssistant = this._findLastAssistantMessage();\n\t\tif (lastAssistant) {\n\t\t\tawait this._checkCompaction(lastAssistant, false);\n\t\t}\n\n\t\t// Build messages array (custom message if any, then user message)\n\t\tmessages = [];\n\n\t\t// Add user message\n\t\tconst userContent: (TextContent | ImageContent)[] = [{ type: \"text\", text: expandedText }];\n\t\tif (currentImages) {\n\t\t\tuserContent.push(...currentImages);\n\t\t}\n\t\tmessages.push({\n\t\t\trole: \"user\",\n\t\t\tcontent: userContent,\n\t\t\ttimestamp: Date.now(),\n\t\t});\n\n\t\t// Inject any pending \"nextTurn\" messages as context alongside the user message\n\t\tfor (const msg of this._pendingNextTurnMessages) {\n\t\t\tmessages.push(msg);\n\t\t}\n\t\tthis._pendingNextTurnMessages = [];\n\n\t\t// Emit before_agent_start extension event\n\t\tconst result = await this._extensionRunner.emitBeforeAgentStart(\n\t\t\texpandedText,\n\t\t\tcurrentImages,\n\t\t\tthis._baseSystemPrompt,\n\t\t\tthis._baseSystemPromptOptions,\n\t\t);\n\t\t// Add all custom messages from extensions\n\t\tif (result?.messages) {\n\t\t\tfor (const msg of result.messages) {\n\t\t\t\tmessages.push({\n\t\t\t\t\trole: \"custom\",\n\t\t\t\t\tcustomType: msg.customType,\n\t\t\t\t\tcontent: msg.content ?? [],\n\t\t\t\t\tdisplay: msg.display,\n\t\t\t\t\tdetails: msg.details,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Apply extension-modified system prompt, or reset to base\n\t\tif (result?.systemPrompt !== undefined) {\n\t\t\tthis._systemPromptOverride = result.systemPrompt;\n\t\t\tthis.agent.state.systemPrompt = result.systemPrompt;\n\t\t} else {\n\t\t\t// Ensure we're using the base prompt (in case previous turn had modifications)\n\t\t\tthis._systemPromptOverride = undefined;\n\t\t\tthis.agent.state.systemPrompt = this._baseSystemPrompt;\n\t\t}\n\t} catch (error) {\n\t\tpreflightResult?.(false);\n\t\tthrow error;\n\t}\n\n\tpreflightResult?.(true);\n\tconst turn = this._runAgentPrompt(messages, workflowDelivery?.promptStarted);\n\tworkflowDelivery?.delivered?.(\"prompt\");\n\tawait turn;\n}\n\n\nexport async function _runAgentPrompt(\n\tthis: AgentSession,\n\tmessages: AgentMessage | AgentMessage[],\n\tpromptStarted?: () => void,\n): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(this);\n\tif (owner !== this) {\n\t\tif (owner._queuedMessagesPaused) {\n\t\t\tconst items = Array.isArray(messages) ? messages : [messages];\n\t\t\tfor (const message of items) owner._queueAgentMessage(message, \"steer\");\n\t\t\treturn;\n\t\t}\n\t\treturn owner._runAgentPrompt(messages, promptStarted);\n\t}\n\ttry {\n\t\tconst turn = this.agent.prompt(messages);\n\t\tif (this.isStreaming) promptStarted?.();\n\t\tawait turn;\n\t\tawait this.waitForRetry();\n\t\tawait this._continueQueuedAgentMessages();\n\t\tawait this._awaitPendingPostCompactionContinuation();\n\t} finally {\n\t\tthis._systemPromptOverride = undefined;\n\t\tawait this._agentEventQueue;\n\t\tif (typeof this._extensionRunner?.emit === \"function\") {\n\t\t\tawait this._extensionRunner.emit({ type: \"agent_settled\" });\n\t\t}\n\t\tthis._emit?.({ type: \"agent_settled\" });\n\t}\n}\n\nexport async function _runAgentContinue(this: AgentSession): Promise<void> {\n\tawait this.agent.continue();\n\tawait this.waitForRetry();\n\tawait this._continueQueuedAgentMessages();\n}\n\n\nexport async function _continueQueuedAgentMessages(this: AgentSession): Promise<void> {\n\tawait this._agentEventQueue;\n\n\twhile (!this._queuedMessagesPaused && this.agent.hasQueuedMessages()) {\n\t\tawait this.agent.continue();\n\t\tawait this.waitForRetry();\n\t\tawait this._agentEventQueue;\n\t}\n}\n\n/**\n * Try to execute a built-in slash command. Returns true if command was found and executed.\n */\n\nexport async function _tryExecuteBuiltinSlashCommand(this: AgentSession, text: string): Promise<boolean> {\n\tconst spaceIndex = text.indexOf(\" \");\n\tconst commandName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);\n\tif (commandName !== ATOMIC_GUIDE_COMMAND_NAME) return false;\n\n\tconst args = spaceIndex === -1 ? \"\" : text.slice(spaceIndex + 1);\n\tconst mode = normalizeAtomicGuideMode(args);\n\tif (mode === \"help\" && this._extensionUIContext) {\n\t\tconst choice = await this._extensionUIContext.select(\"Atomic. Select where to start:\", [\n\t\t\t...ATOMIC_GUIDE_HELP_CHOICES,\n\t\t]);\n\t\tif (!choice || !isAtomicGuideHelpChoice(choice)) return true;\n\t\tawait this.sendCustomMessage(\n\t\t\t{\n\t\t\t\tcustomType: \"atomic\",\n\t\t\t\tcontent: getAtomicGuideMessage(atomicGuideModeForChoice(choice), this._cwd),\n\t\t\t\tdisplay: true,\n\t\t\t},\n\t\t\t{ triggerTurn: false },\n\t\t);\n\t\treturn true;\n\t}\n\n\tawait this.sendCustomMessage(\n\t\t{\n\t\t\tcustomType: \"atomic\",\n\t\t\tcontent: getAtomicGuideMessage(mode, this._cwd),\n\t\t\tdisplay: true,\n\t\t},\n\t\t{ triggerTurn: false },\n\t);\n\treturn true;\n}\n\n/**\n * Try to execute an extension command. Returns true if command was found and executed.\n */\n\nexport async function _tryExecuteExtensionCommand(this: AgentSession, text: string): Promise<boolean> {\n\t// Parse command name and args\n\tconst spaceIndex = text.indexOf(\" \");\n\tconst commandName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);\n\tconst args = spaceIndex === -1 ? \"\" : text.slice(spaceIndex + 1);\n\n\tconst command = this._extensionRunner.getCommand(commandName);\n\tif (!command) return false;\n\n\t// Get command context from extension runner (includes session control methods)\n\tconst ctx = this._extensionRunner.createCommandContext();\n\n\ttry {\n\t\tawait runCallback(\n\t\t\t{ kind: \"extension.hook\", name: `command:${commandName}`, sourcePath: command.sourceInfo.path },\n\t\t\t() => command.handler(args, ctx),\n\t\t);\n\t\treturn true;\n\t} catch (err) {\n\t\t// Emit error via extension runner\n\t\tthis._extensionRunner.emitError({\n\t\t\textensionPath: `command:${commandName}`,\n\t\t\tevent: \"command\",\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t\treturn true;\n\t}\n}\n\n/**\n * Expand skill commands (/skill:name args) to their full content.\n * Returns the expanded text, or the original text if not a skill command or skill not found.\n * Emits errors via extension runner if file read fails.\n */\n\nexport function _expandSkillCommand(this: AgentSession, text: string): string {\n\tif (!text.startsWith(\"/skill:\")) return text;\n\n\tconst spaceIndex = text.indexOf(\" \");\n\tconst skillName = spaceIndex === -1 ? text.slice(7) : text.slice(7, spaceIndex);\n\tconst args = spaceIndex === -1 ? \"\" : text.slice(spaceIndex + 1).trim();\n\n\tconst skill = this.resourceLoader.getSkills().skills.find((s) => s.name === skillName);\n\tif (!skill) return text; // Unknown skill, pass through\n\n\ttry {\n\t\tconst content = readFileSync(skill.filePath, \"utf-8\");\n\t\tconst body = stripFrontmatter(content).trim();\n\t\tconst skillBlock = `<skill name=\"${skill.name}\" location=\"${skill.filePath}\">\\nReferences are relative to ${skill.baseDir}.\\n\\n${body}\\n</skill>`;\n\t\treturn args ? `${skillBlock}\\n\\n${args}` : skillBlock;\n\t} catch (err) {\n\t\t// Emit error like extension commands do\n\t\tthis._extensionRunner.emitError({\n\t\t\textensionPath: skill.filePath,\n\t\t\tevent: \"skill_expansion\",\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t\treturn text; // Return original on error\n\t}\n}\n\n/**\n * Queue a steering message while the agent is running.\n * Delivered after the current assistant turn finishes executing its tool calls,\n * before the next LLM call.\n * Expands skill commands and prompt templates. Errors on extension commands.\n * @param images Optional image attachments to include with the message\n * @throws Error if text is an extension command\n */\n\nexport async function steer(this: AgentSession, text: string, images?: ImageContent[]): Promise<void> {\n\t// Check for extension commands (cannot be queued)\n\tif (text.startsWith(\"/\")) {\n\t\tthis._throwIfExtensionCommand(text);\n\t}\n\n\t// Expand skill commands and prompt templates\n\tlet expandedText = this._expandSkillCommand(text);\n\texpandedText = expandPromptTemplate(expandedText, [...this.promptTemplates]);\n\n\tawait this._queueSteer(expandedText, images);\n}\n\n/**\n * Queue a follow-up message to be processed after the agent finishes.\n * Delivered only when agent has no more tool calls or steering messages.\n * Expands skill commands and prompt templates. Errors on extension commands.\n * @param images Optional image attachments to include with the message\n * @throws Error if text is an extension command\n */\n\nexport async function followUp(this: AgentSession, text: string, images?: ImageContent[]): Promise<void> {\n\t// Check for extension commands (cannot be queued)\n\tif (text.startsWith(\"/\")) {\n\t\tthis._throwIfExtensionCommand(text);\n\t}\n\n\t// Expand skill commands and prompt templates\n\tlet expandedText = this._expandSkillCommand(text);\n\texpandedText = expandPromptTemplate(expandedText, [...this.promptTemplates]);\n\n\tawait this._queueFollowUp(expandedText, images);\n}\n\n/**\n * Internal: Queue a steering message (already expanded, no extension command check).\n */\n\nexport async function sendUserMessage(this: AgentSession,\n\tcontent: string | (TextContent | ImageContent)[],\n\toptions?: {\n\t\tdeliverAs?: \"steer\" | \"followUp\";\n\t\t__workflowDelivery?: PromptOptionsWithWorkflowDelivery[\"__workflowDelivery\"];\n\t},\n): Promise<void> {\n\t// Normalize content to text string + optional images\n\tlet text: string;\n\tlet images: ImageContent[] | undefined;\n\n\tif (typeof content === \"string\") {\n\t\ttext = content;\n\t} else {\n\t\tconst textParts: string[] = [];\n\t\timages = [];\n\t\tfor (const part of content) {\n\t\t\tif (part.type === \"text\") {\n\t\t\t\ttextParts.push(part.text);\n\t\t\t} else {\n\t\t\t\timages.push(part);\n\t\t\t}\n\t\t}\n\t\ttext = textParts.join(\"\\n\");\n\t\tif (images.length === 0) images = undefined;\n\t}\n\n\t// Use prompt() with expandPromptTemplates: false to skip command handling and template expansion.\n\t// The private delivery hook lets workflow routing report and gate the branch\n\t// selected after asynchronous input/compaction extension preflight.\n\tawait this.prompt(text, {\n\t\texpandPromptTemplates: false,\n\t\tstreamingBehavior: options?.deliverAs,\n\t\timages,\n\t\tsource: \"extension\",\n\t\t__workflowDelivery: options?.__workflowDelivery,\n\t} as PromptOptionsWithWorkflowDelivery);\n}\n\n/**\n * Clear all queued messages and return them.\n * Useful for restoring to editor when user aborts.\n * @returns Object with steering and followUp arrays\n */\n\nexport const agentSessionPromptMethods = {\n\tprompt,\n\t_runAgentPrompt,\n\t_runAgentContinue,\n\t_continueQueuedAgentMessages,\n\t_tryExecuteBuiltinSlashCommand,\n\t_tryExecuteExtensionCommand,\n\t_expandSkillCommand,\n\tsteer,\n\tfollowUp,\n\tsendUserMessage,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-prompt.js","sourceRoot":"","sources":["../../src/core/agent-session-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kCAAkC,EAAE,MAAM,wCAAwC,CAAC;AAG5F,OAAO,EACN,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAa7D,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAClD,OAA6F,EAC7F,IAAY;IAEZ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,MAAM,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAqB,IAAY,EAAE,OAAuB;IACrF,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,qBAAqB,GAAG,OAAO,EAAE,qBAAqB,IAAI,IAAI,CAAC;IACrE,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,CAAC;IACjD,MAAM,gBAAgB,GAAI,OAAyD,EAAE,kBAAkB,CAAC;IACxG,IAAI,QAAoC,CAAC;IAEzC,IAAI,CAAC;QACJ,4FAA4F;QAC5F,2FAA2F;QAC3F,gBAAgB,EAAE,cAAc,EAAE,EAAE,CAAC;QACrC,4EAA4E;QAC5E,0EAA0E;QAC1E,IAAI,qBAAqB,IAAI,CAAC,MAAM,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAChF,gBAAgB,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;YACzC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;QACR,CAAC;QACD,wEAAwE;QACxE,4EAA4E;QAC5E,2EAA2E;QAC3E,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,OAAO,EAAE,iBAAiB,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YAClF,IAAI,QAAQ,KAAK,UAAU;gBAAE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;;gBACzE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,gBAAgB,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;YACxC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;QACR,CAAC;QAED,gFAAgF;QAChF,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,aAAa,GAAG,OAAO,EAAE,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACxD,WAAW,EACX,aAAa,EACb,OAAO,EAAE,MAAM,IAAI,aAAa,EAChC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CACzD,CAAC;YACF,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACtC,gBAAgB,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;gBACzC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACxC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;gBAC/B,aAAa,GAAG,WAAW,CAAC,MAAM,IAAI,aAAa,CAAC;YACrD,CAAC;QACF,CAAC;QAED,iFAAiF;QACjF,IAAI,YAAY,GAAG,WAAW,CAAC;QAC/B,IAAI,qBAAqB,EAAE,CAAC;YAC3B,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACtD,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,gEAAgE;QAChE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACd,sGAAsG,CACtG,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YACrD,CAAC;YACD,gBAAgB,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACzD,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;QACR,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,iBAAiB;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,kEAAkE;QAClE,qEAAqE;QACrE,uEAAuE;QACvE,wEAAwE;QACxE,2DAA2D;QAC3D,MAAM,gBAAgB,GAAI,IAAI,CAAC,KAAgC,CAAC,QAAQ,CAAC;QACzE,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,uEAAuE;YACvE,sEAAsE;YACtE,8DAA8D;YAC9D,wEAAwE;YACxE,wEAAwE;YACxE,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACd,8BAA8B,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK;oBACrD,0DAA0D;oBAC1D,eAAe,IAAI,CAAC,KAAK,CAAC,QAAQ,uBAAuB,CAC1D,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,yEAAyE;QACzE,MAAM,aAAa,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACvD,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;QAED,kEAAkE;QAClE,QAAQ,GAAG,EAAE,CAAC;QAEd,mBAAmB;QACnB,MAAM,WAAW,GAAmC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3F,IAAI,aAAa,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACpC,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC,CAAC;QAEH,+EAA+E;QAC/E,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;QAEnC,0CAA0C;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAC9D,YAAY,EACZ,aAAa,EACb,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,wBAAwB,CAC7B,CAAC;QACF,0CAA0C;QAC1C,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;YACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;oBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACrB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QACD,2DAA2D;QAC3D,IAAI,MAAM,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,YAAY,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACrD,CAAC;aAAM,CAAC;YACP,+EAA+E;YAC/E,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxD,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,KAAK,CAAC;IACb,CAAC;IAED,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC7E,gBAAgB,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,IAAI,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAEpC,QAAuC,EACvC,aAA0B;IAE1B,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC9D,KAAK,MAAM,OAAO,IAAI,KAAK;gBAAE,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxE,OAAO;QACR,CAAC;QACD,OAAO,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,WAAW;YAAE,aAAa,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC;QACX,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC1C,MAAM,IAAI,CAAC,uCAAuC,EAAE,CAAC;IACtD,CAAC;YAAS,CAAC;QACV,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;QACvC,MAAM,IAAI,CAAC,gBAAgB,CAAC;QAC5B,IAAI,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YACvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IACzC,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACtC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC1B,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B;IACjD,MAAM,IAAI,CAAC,gBAAgB,CAAC;IAE5B,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACtE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,gBAAgB,CAAC;IAC7B,CAAC;AACF,CAAC;AAED;;GAEG;AAEH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAqB,IAAY;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAClF,IAAI,WAAW,KAAK,yBAAyB;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,IAAI,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,gCAAgC,EAAE;YACtF,GAAG,yBAAyB;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7D,MAAM,IAAI,CAAC,iBAAiB,CAC3B;YACC,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,qBAAqB,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAC3E,OAAO,EAAE,IAAI;SACb,EACD,EAAE,WAAW,EAAE,KAAK,EAAE,CACtB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,IAAI,CAAC,iBAAiB,CAC3B;QACC,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QAC/C,OAAO,EAAE,IAAI;KACb,EACD,EAAE,WAAW,EAAE,KAAK,EAAE,CACtB,CAAC;IACF,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AAEH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAqB,IAAY;IACjF,8BAA8B;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,+EAA+E;IAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;IAEzD,IAAI,CAAC;QACJ,MAAM,WAAW,CAChB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,WAAW,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAC/F,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAChC,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,kCAAkC;QAClC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC/B,aAAa,EAAE,WAAW,WAAW,EAAE;YACvC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACvD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;GAIG;AAEH,MAAM,UAAU,mBAAmB,CAAqB,IAAY;IACnE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAExE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACvF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAEvD,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,gBAAgB,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,QAAQ,kCAAkC,KAAK,CAAC,OAAO,QAAQ,IAAI,YAAY,CAAC;QAClJ,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,wCAAwC;QACxC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC/B,aAAa,EAAE,KAAK,CAAC,QAAQ;YAC7B,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACvD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,CAAC,2BAA2B;IACzC,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AAEH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAqB,IAAY,EAAE,MAAuB;IACpF,kDAAkD;IAClD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,6CAA6C;IAC7C,IAAI,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAE7E,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AAEH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAqB,IAAY,EAAE,MAAuB;IACvF,kDAAkD;IAClD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,6CAA6C;IAC7C,IAAI,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAE7E,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AAEH,MAAM,CAAC,KAAK,UAAU,eAAe,CAEpC,OAAgD,EAChD,OAGC;IAED,qDAAqD;IACrD,IAAI,IAAY,CAAC;IACjB,IAAI,MAAkC,CAAC;IAEvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,GAAG,OAAO,CAAC;IAChB,CAAC;SAAM,CAAC;QACP,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACF,CAAC;QACD,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,CAAC;IAED,kGAAkG;IAClG,6EAA6E;IAC7E,oEAAoE;IACpE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACvB,qBAAqB,EAAE,KAAK;QAC5B,iBAAiB,EAAE,OAAO,EAAE,SAAS;QACrC,MAAM;QACN,MAAM,EAAE,WAAW;QACnB,kBAAkB,EAAE,OAAO,EAAE,kBAAkB;KACV,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACxC,MAAM;IACN,eAAe;IACf,iBAAiB;IACjB,4BAA4B;IAC5B,8BAA8B;IAC9B,2BAA2B;IAC3B,mBAAmB;IACnB,KAAK;IACL,QAAQ;IACR,eAAe;CACf,CAAC","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { ImageContent, TextContent } from \"@earendil-works/pi-ai/compat\";\nimport { stripFrontmatter } from \"../utils/frontmatter.ts\";\nimport { resolveWorkflowStageDeliveryTarget } from \"./agent-session-delivery-forwarding.ts\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport type { PromptOptions } from \"./agent-session-types.ts\";\nimport {\n\tATOMIC_GUIDE_COMMAND_NAME,\n\tATOMIC_GUIDE_HELP_CHOICES,\n\tatomicGuideModeForChoice,\n\tgetAtomicGuideMessage,\n\tisAtomicGuideHelpChoice,\n\tnormalizeAtomicGuideMode,\n} from \"./atomic-guide-command.ts\";\nimport {\n\tformatNoApiKeyFoundMessage,\n\tformatNoModelSelectedMessage,\n\tformatUnresolvedModelMessage,\n} from \"./auth-guidance.ts\";\nimport { runCallback } from \"./callback-activity.ts\";\nimport { expandPromptTemplate } from \"./prompt-templates.ts\";\n\ntype UserMessageDeliveryAction = \"prompt\" | \"steer\" | \"followUp\" | \"handled\";\n\ntype PromptOptionsWithWorkflowDelivery = PromptOptions & {\n\treadonly __workflowDelivery?: {\n\t\treadonly beforeDelivery?: () => void;\n\t\t/** Called only after an idle prompt has synchronously entered the agent turn. */\n\t\treadonly promptStarted?: () => void;\n\t\treadonly delivered?: (action: UserMessageDeliveryAction) => void;\n\t};\n};\n\n/** Dispatch registered slash commands without changing the raw queue pause gate. */\nexport async function tryExecuteSessionSlashCommand(\n\tsession: Pick<AgentSession, \"_tryExecuteBuiltinSlashCommand\" | \"_tryExecuteExtensionCommand\">,\n\ttext: string,\n): Promise<boolean> {\n\tif (!text.startsWith(\"/\")) return false;\n\tif (await session._tryExecuteBuiltinSlashCommand(text)) return true;\n\treturn session._tryExecuteExtensionCommand(text);\n}\n\nexport async function prompt(this: AgentSession, text: string, options?: PromptOptions): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(this);\n\tif (owner !== this) return owner.prompt(text, options);\n\tconst expandPromptTemplates = options?.expandPromptTemplates ?? true;\n\tconst preflightResult = options?.preflightResult;\n\tconst workflowDelivery = (options as PromptOptionsWithWorkflowDelivery | undefined)?.__workflowDelivery;\n\tlet messages: AgentMessage[] | undefined;\n\n\ttry {\n\t\t// Authorize workflow delivery before commands or input extensions can perform side effects.\n\t\t// A later terminal transition cannot retroactively reject input accepted at this boundary.\n\t\tworkflowDelivery?.beforeDelivery?.();\n\t\t// Registered slash commands execute without releasing ordinary queued work.\n\t\t// Unknown slash input continues through the normal paused admission path.\n\t\tif (expandPromptTemplates && (await tryExecuteSessionSlashCommand(this, text))) {\n\t\t\tworkflowDelivery?.delivered?.(\"handled\");\n\t\t\tpreflightResult?.(true);\n\t\t\treturn;\n\t\t}\n\t\t// A controlled pause is an admission gate, including the idle gap after\n\t\t// abort settles. Preserve the raw user payload without running input hooks,\n\t\t// compaction, or a provider turn; explicit resume makes it eligible again.\n\t\tif (this._queuedMessagesPaused) {\n\t\t\tconst delivery = options?.streamingBehavior === \"followUp\" ? \"followUp\" : \"steer\";\n\t\t\tif (delivery === \"followUp\") await this._queueFollowUp(text, options?.images);\n\t\t\telse await this._queueSteer(text, options?.images);\n\t\t\tworkflowDelivery?.delivered?.(delivery);\n\t\t\tpreflightResult?.(true);\n\t\t\treturn;\n\t\t}\n\n\t\t// Emit input event for extension interception (before skill/template expansion)\n\t\tlet currentText = text;\n\t\tlet currentImages = options?.images;\n\t\tif (this._extensionRunner.hasHandlers(\"input\")) {\n\t\t\tconst inputResult = await this._extensionRunner.emitInput(\n\t\t\t\tcurrentText,\n\t\t\t\tcurrentImages,\n\t\t\t\toptions?.source ?? \"interactive\",\n\t\t\t\tthis.isStreaming ? options?.streamingBehavior : undefined,\n\t\t\t);\n\t\t\tif (inputResult.action === \"handled\") {\n\t\t\t\tworkflowDelivery?.delivered?.(\"handled\");\n\t\t\t\tpreflightResult?.(true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (inputResult.action === \"transform\") {\n\t\t\t\tcurrentText = inputResult.text;\n\t\t\t\tcurrentImages = inputResult.images ?? currentImages;\n\t\t\t}\n\t\t}\n\n\t\t// Expand skill commands (/skill:name args) and prompt templates (/template args)\n\t\tlet expandedText = currentText;\n\t\tif (expandPromptTemplates) {\n\t\t\texpandedText = this._expandSkillCommand(expandedText);\n\t\t\texpandedText = expandPromptTemplate(expandedText, [...this.promptTemplates]);\n\t\t}\n\n\t\t// If streaming, queue via steer() or followUp() based on option\n\t\tif (this.isStreaming) {\n\t\t\tif (!options?.streamingBehavior) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Agent is already processing. Specify streamingBehavior ('steer' or 'followUp') to queue the message.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (options.streamingBehavior === \"followUp\") {\n\t\t\t\tawait this._queueFollowUp(expandedText, currentImages);\n\t\t\t} else {\n\t\t\t\tawait this._queueSteer(expandedText, currentImages);\n\t\t\t}\n\t\t\tworkflowDelivery?.delivered?.(options.streamingBehavior);\n\t\t\tpreflightResult?.(true);\n\t\t\treturn;\n\t\t}\n\n\t\t// Flush any pending bash messages before the new prompt\n\t\tthis._flushPendingBashMessages();\n\n\t\t// Validate model\n\t\tif (!this.model) {\n\t\t\tthrow new Error(formatNoModelSelectedMessage());\n\t\t}\n\n\t\t// Defensive guard: a model that never resolved to a real provider\n\t\t// (for example an unknown/unresolved model id that reached this path\n\t\t// as a bare string) has no `provider`, which would otherwise fail deep\n\t\t// in auth resolution as the confusing \"No API key found for undefined\".\n\t\t// Surface a clear, accurate \"unknown model\" error instead.\n\t\tconst resolvedProvider = (this.model as { provider?: unknown }).provider;\n\t\tif (typeof resolvedProvider !== \"string\" || resolvedProvider.length === 0) {\n\t\t\tthrow new Error(formatUnresolvedModelMessage(this.model));\n\t\t}\n\n\t\tif (!this._modelRuntime.hasConfiguredAuth(this.model.provider)) {\n\t\t\t// A failed credential-store load (for example auth.json briefly locked\n\t\t\t// by a concurrent process, or invalid JSON) leaves an empty in-memory\n\t\t\t// credential set. That would otherwise be misreported here as\n\t\t\t// \"No API key found\" even though the credentials exist on disk. Surface\n\t\t\t// the real load failure instead so configured providers are not falsely\n\t\t\t// reported as unauthenticated (issue #1431).\n\t\t\tconst isOAuth = this._modelRuntime.isUsingOAuth(this.model.provider);\n\t\t\tif (isOAuth) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Authentication failed for \"${this.model.provider}\". ` +\n\t\t\t\t\t\t`Credentials may have expired or network is unavailable. ` +\n\t\t\t\t\t\t`Run '/login ${this.model.provider}' to re-authenticate.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new Error(formatNoApiKeyFoundMessage(this.model.provider));\n\t\t}\n\n\t\t// Check if we need to compact before sending (catches aborted responses)\n\t\tconst lastAssistant = this._findLastAssistantMessage();\n\t\tif (lastAssistant) {\n\t\t\tawait this._checkCompaction(lastAssistant, false);\n\t\t}\n\n\t\t// Build messages array (custom message if any, then user message)\n\t\tmessages = [];\n\n\t\t// Add user message\n\t\tconst userContent: (TextContent | ImageContent)[] = [{ type: \"text\", text: expandedText }];\n\t\tif (currentImages) {\n\t\t\tuserContent.push(...currentImages);\n\t\t}\n\t\tmessages.push({\n\t\t\trole: \"user\",\n\t\t\tcontent: userContent,\n\t\t\ttimestamp: Date.now(),\n\t\t});\n\n\t\t// Inject any pending \"nextTurn\" messages as context alongside the user message\n\t\tfor (const msg of this._pendingNextTurnMessages) {\n\t\t\tmessages.push(msg);\n\t\t}\n\t\tthis._pendingNextTurnMessages = [];\n\n\t\t// Emit before_agent_start extension event\n\t\tconst result = await this._extensionRunner.emitBeforeAgentStart(\n\t\t\texpandedText,\n\t\t\tcurrentImages,\n\t\t\tthis._baseSystemPrompt,\n\t\t\tthis._baseSystemPromptOptions,\n\t\t);\n\t\t// Add all custom messages from extensions\n\t\tif (result?.messages) {\n\t\t\tfor (const msg of result.messages) {\n\t\t\t\tmessages.push({\n\t\t\t\t\trole: \"custom\",\n\t\t\t\t\tcustomType: msg.customType,\n\t\t\t\t\tcontent: msg.content ?? [],\n\t\t\t\t\tdisplay: msg.display,\n\t\t\t\t\tdetails: msg.details,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Apply extension-modified system prompt, or reset to base\n\t\tif (result?.systemPrompt !== undefined) {\n\t\t\tthis._systemPromptOverride = result.systemPrompt;\n\t\t\tthis.agent.state.systemPrompt = result.systemPrompt;\n\t\t} else {\n\t\t\t// Ensure we're using the base prompt (in case previous turn had modifications)\n\t\t\tthis._systemPromptOverride = undefined;\n\t\t\tthis.agent.state.systemPrompt = this._baseSystemPrompt;\n\t\t}\n\t} catch (error) {\n\t\tpreflightResult?.(false);\n\t\tthrow error;\n\t}\n\n\tpreflightResult?.(true);\n\tconst turn = this._runAgentPrompt(messages, workflowDelivery?.promptStarted);\n\tworkflowDelivery?.delivered?.(\"prompt\");\n\tawait turn;\n}\n\nexport async function _runAgentPrompt(\n\tthis: AgentSession,\n\tmessages: AgentMessage | AgentMessage[],\n\tpromptStarted?: () => void,\n): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(this);\n\tif (owner !== this) {\n\t\tif (owner._queuedMessagesPaused) {\n\t\t\tconst items = Array.isArray(messages) ? messages : [messages];\n\t\t\tfor (const message of items) owner._queueAgentMessage(message, \"steer\");\n\t\t\treturn;\n\t\t}\n\t\treturn owner._runAgentPrompt(messages, promptStarted);\n\t}\n\ttry {\n\t\tconst turn = this.agent.prompt(messages);\n\t\tif (this.isStreaming) promptStarted?.();\n\t\tawait turn;\n\t\tawait this.waitForRetry();\n\t\tawait this._continueQueuedAgentMessages();\n\t\tawait this._awaitPendingPostCompactionContinuation();\n\t} finally {\n\t\tthis._systemPromptOverride = undefined;\n\t\tawait this._agentEventQueue;\n\t\tif (typeof this._extensionRunner?.emit === \"function\") {\n\t\t\tawait this._extensionRunner.emit({ type: \"agent_settled\" });\n\t\t}\n\t\tthis._emit?.({ type: \"agent_settled\" });\n\t}\n}\n\nexport async function _runAgentContinue(this: AgentSession): Promise<void> {\n\tawait this.agent.continue();\n\tawait this.waitForRetry();\n\tawait this._continueQueuedAgentMessages();\n}\n\nexport async function _continueQueuedAgentMessages(this: AgentSession): Promise<void> {\n\tawait this._agentEventQueue;\n\n\twhile (!this._queuedMessagesPaused && this.agent.hasQueuedMessages()) {\n\t\tawait this.agent.continue();\n\t\tawait this.waitForRetry();\n\t\tawait this._agentEventQueue;\n\t}\n}\n\n/**\n * Try to execute a built-in slash command. Returns true if command was found and executed.\n */\n\nexport async function _tryExecuteBuiltinSlashCommand(this: AgentSession, text: string): Promise<boolean> {\n\tconst spaceIndex = text.indexOf(\" \");\n\tconst commandName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);\n\tif (commandName !== ATOMIC_GUIDE_COMMAND_NAME) return false;\n\n\tconst args = spaceIndex === -1 ? \"\" : text.slice(spaceIndex + 1);\n\tconst mode = normalizeAtomicGuideMode(args);\n\tif (mode === \"help\" && this._extensionUIContext) {\n\t\tconst choice = await this._extensionUIContext.select(\"Atomic. Select where to start:\", [\n\t\t\t...ATOMIC_GUIDE_HELP_CHOICES,\n\t\t]);\n\t\tif (!choice || !isAtomicGuideHelpChoice(choice)) return true;\n\t\tawait this.sendCustomMessage(\n\t\t\t{\n\t\t\t\tcustomType: \"atomic\",\n\t\t\t\tcontent: getAtomicGuideMessage(atomicGuideModeForChoice(choice), this._cwd),\n\t\t\t\tdisplay: true,\n\t\t\t},\n\t\t\t{ triggerTurn: false },\n\t\t);\n\t\treturn true;\n\t}\n\n\tawait this.sendCustomMessage(\n\t\t{\n\t\t\tcustomType: \"atomic\",\n\t\t\tcontent: getAtomicGuideMessage(mode, this._cwd),\n\t\t\tdisplay: true,\n\t\t},\n\t\t{ triggerTurn: false },\n\t);\n\treturn true;\n}\n\n/**\n * Try to execute an extension command. Returns true if command was found and executed.\n */\n\nexport async function _tryExecuteExtensionCommand(this: AgentSession, text: string): Promise<boolean> {\n\t// Parse command name and args\n\tconst spaceIndex = text.indexOf(\" \");\n\tconst commandName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);\n\tconst args = spaceIndex === -1 ? \"\" : text.slice(spaceIndex + 1);\n\n\tconst command = this._extensionRunner.getCommand(commandName);\n\tif (!command) return false;\n\n\t// Get command context from extension runner (includes session control methods)\n\tconst ctx = this._extensionRunner.createCommandContext();\n\n\ttry {\n\t\tawait runCallback(\n\t\t\t{ kind: \"extension.hook\", name: `command:${commandName}`, sourcePath: command.sourceInfo.path },\n\t\t\t() => command.handler(args, ctx),\n\t\t);\n\t\treturn true;\n\t} catch (err) {\n\t\t// Emit error via extension runner\n\t\tthis._extensionRunner.emitError({\n\t\t\textensionPath: `command:${commandName}`,\n\t\t\tevent: \"command\",\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t\treturn true;\n\t}\n}\n\n/**\n * Expand skill commands (/skill:name args) to their full content.\n * Returns the expanded text, or the original text if not a skill command or skill not found.\n * Emits errors via extension runner if file read fails.\n */\n\nexport function _expandSkillCommand(this: AgentSession, text: string): string {\n\tif (!text.startsWith(\"/skill:\")) return text;\n\n\tconst spaceIndex = text.indexOf(\" \");\n\tconst skillName = spaceIndex === -1 ? text.slice(7) : text.slice(7, spaceIndex);\n\tconst args = spaceIndex === -1 ? \"\" : text.slice(spaceIndex + 1).trim();\n\n\tconst skill = this.resourceLoader.getSkills().skills.find((s) => s.name === skillName);\n\tif (!skill) return text; // Unknown skill, pass through\n\n\ttry {\n\t\tconst content = readFileSync(skill.filePath, \"utf-8\");\n\t\tconst body = stripFrontmatter(content).trim();\n\t\tconst skillBlock = `<skill name=\"${skill.name}\" location=\"${skill.filePath}\">\\nReferences are relative to ${skill.baseDir}.\\n\\n${body}\\n</skill>`;\n\t\treturn args ? `${skillBlock}\\n\\n${args}` : skillBlock;\n\t} catch (err) {\n\t\t// Emit error like extension commands do\n\t\tthis._extensionRunner.emitError({\n\t\t\textensionPath: skill.filePath,\n\t\t\tevent: \"skill_expansion\",\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t\treturn text; // Return original on error\n\t}\n}\n\n/**\n * Queue a steering message while the agent is running.\n * Delivered after the current assistant turn finishes executing its tool calls,\n * before the next LLM call.\n * Expands skill commands and prompt templates. Errors on extension commands.\n * @param images Optional image attachments to include with the message\n * @throws Error if text is an extension command\n */\n\nexport async function steer(this: AgentSession, text: string, images?: ImageContent[]): Promise<void> {\n\t// Check for extension commands (cannot be queued)\n\tif (text.startsWith(\"/\")) {\n\t\tthis._throwIfExtensionCommand(text);\n\t}\n\n\t// Expand skill commands and prompt templates\n\tlet expandedText = this._expandSkillCommand(text);\n\texpandedText = expandPromptTemplate(expandedText, [...this.promptTemplates]);\n\n\tawait this._queueSteer(expandedText, images);\n}\n\n/**\n * Queue a follow-up message to be processed after the agent finishes.\n * Delivered only when agent has no more tool calls or steering messages.\n * Expands skill commands and prompt templates. Errors on extension commands.\n * @param images Optional image attachments to include with the message\n * @throws Error if text is an extension command\n */\n\nexport async function followUp(this: AgentSession, text: string, images?: ImageContent[]): Promise<void> {\n\t// Check for extension commands (cannot be queued)\n\tif (text.startsWith(\"/\")) {\n\t\tthis._throwIfExtensionCommand(text);\n\t}\n\n\t// Expand skill commands and prompt templates\n\tlet expandedText = this._expandSkillCommand(text);\n\texpandedText = expandPromptTemplate(expandedText, [...this.promptTemplates]);\n\n\tawait this._queueFollowUp(expandedText, images);\n}\n\n/**\n * Internal: Queue a steering message (already expanded, no extension command check).\n */\n\nexport async function sendUserMessage(\n\tthis: AgentSession,\n\tcontent: string | (TextContent | ImageContent)[],\n\toptions?: {\n\t\tdeliverAs?: \"steer\" | \"followUp\";\n\t\t__workflowDelivery?: PromptOptionsWithWorkflowDelivery[\"__workflowDelivery\"];\n\t},\n): Promise<void> {\n\t// Normalize content to text string + optional images\n\tlet text: string;\n\tlet images: ImageContent[] | undefined;\n\n\tif (typeof content === \"string\") {\n\t\ttext = content;\n\t} else {\n\t\tconst textParts: string[] = [];\n\t\timages = [];\n\t\tfor (const part of content) {\n\t\t\tif (part.type === \"text\") {\n\t\t\t\ttextParts.push(part.text);\n\t\t\t} else {\n\t\t\t\timages.push(part);\n\t\t\t}\n\t\t}\n\t\ttext = textParts.join(\"\\n\");\n\t\tif (images.length === 0) images = undefined;\n\t}\n\n\t// Use prompt() with expandPromptTemplates: false to skip command handling and template expansion.\n\t// The private delivery hook lets workflow routing report and gate the branch\n\t// selected after asynchronous input/compaction extension preflight.\n\tawait this.prompt(text, {\n\t\texpandPromptTemplates: false,\n\t\tstreamingBehavior: options?.deliverAs,\n\t\timages,\n\t\tsource: \"extension\",\n\t\t__workflowDelivery: options?.__workflowDelivery,\n\t} as PromptOptionsWithWorkflowDelivery);\n}\n\n/**\n * Clear all queued messages and return them.\n * Useful for restoring to editor when user aborts.\n * @returns Object with steering and followUp arrays\n */\n\nexport const agentSessionPromptMethods = {\n\tprompt,\n\t_runAgentPrompt,\n\t_runAgentContinue,\n\t_continueQueuedAgentMessages,\n\t_tryExecuteBuiltinSlashCommand,\n\t_tryExecuteExtensionCommand,\n\t_expandSkillCommand,\n\tsteer,\n\tfollowUp,\n\tsendUserMessage,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-queue-pause.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-queue-pause.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-session-queue-pause.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-queue-pause.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAkB9F,yFAAyF;AACzF,wBAAgB,2BAA2B,CAC1C,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAChD,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAG3B;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAU5D;AAED,0FAA0F;AAC1F,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B3G;AAED,iGAAiG;AACjG,wBAAgB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvD"}
|
|
@@ -6,7 +6,9 @@ async function settlePauseAbortBoundaries(boundaries) {
|
|
|
6
6
|
await boundary;
|
|
7
7
|
}
|
|
8
8
|
catch (error) {
|
|
9
|
-
throwFirstFailure ??= () => {
|
|
9
|
+
throwFirstFailure ??= () => {
|
|
10
|
+
throw error;
|
|
11
|
+
};
|
|
10
12
|
}
|
|
11
13
|
}));
|
|
12
14
|
throwFirstFailure?.();
|
|
@@ -19,8 +21,10 @@ export function composePauseAbortBoundaries(boundaries) {
|
|
|
19
21
|
/** Synchronously hold raw queue entries before pausing and aborting an active turn. */
|
|
20
22
|
export function pauseQueuedMessages() {
|
|
21
23
|
const owner = resolveWorkflowStageDeliveryTarget(this);
|
|
22
|
-
if (owner !== this)
|
|
23
|
-
|
|
24
|
+
if (owner !== this) {
|
|
25
|
+
owner.pauseQueuedMessages();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
24
28
|
if (this._queuedMessagesPaused)
|
|
25
29
|
return;
|
|
26
30
|
this._queuedMessagesPaused = true;
|
|
@@ -72,10 +76,7 @@ export function abort() {
|
|
|
72
76
|
await this._agentEventQueue;
|
|
73
77
|
})();
|
|
74
78
|
if (this._queuedMessagesPaused) {
|
|
75
|
-
const tracked = composePauseAbortBoundaries([
|
|
76
|
-
this._queuedMessagesPauseAbortBoundary,
|
|
77
|
-
boundary,
|
|
78
|
-
]);
|
|
79
|
+
const tracked = composePauseAbortBoundaries([this._queuedMessagesPauseAbortBoundary, boundary]);
|
|
79
80
|
if (tracked === undefined)
|
|
80
81
|
return boundary;
|
|
81
82
|
this._queuedMessagesPauseAbortBoundary = tracked;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-queue-pause.js","sourceRoot":"","sources":["../../src/core/agent-session-queue-pause.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-session-queue-pause.js","sourceRoot":"","sources":["../../src/core/agent-session-queue-pause.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveWorkflowStageDeliveryTarget } from \"./agent-session-delivery-forwarding.ts\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\n\nasync function settlePauseAbortBoundaries(boundaries: readonly Promise<void>[]): Promise<void> {\n\tlet throwFirstFailure: (() => never) | undefined;\n\tawait Promise.all(\n\t\tboundaries.map(async (boundary) => {\n\t\t\ttry {\n\t\t\t\tawait boundary;\n\t\t\t} catch (error) {\n\t\t\t\tthrowFirstFailure ??= () => {\n\t\t\t\t\tthrow error;\n\t\t\t\t};\n\t\t\t}\n\t\t}),\n\t);\n\tthrowFirstFailure?.();\n}\n\n/** Compose pause settlement without exposing an early rejection from one constituent. */\nexport function composePauseAbortBoundaries(\n\tboundaries: readonly (Promise<void> | undefined)[],\n): Promise<void> | undefined {\n\tconst pending = boundaries.filter((boundary): boundary is Promise<void> => boundary !== undefined);\n\treturn pending.length === 0 ? undefined : settlePauseAbortBoundaries(pending);\n}\n\n/** Synchronously hold raw queue entries before pausing and aborting an active turn. */\nexport function pauseQueuedMessages(this: AgentSession): void {\n\tconst owner = resolveWorkflowStageDeliveryTarget(this);\n\tif (owner !== this) {\n\t\towner.pauseQueuedMessages();\n\t\treturn;\n\t}\n\tif (this._queuedMessagesPaused) return;\n\tthis._queuedMessagesPaused = true;\n\tthis._queuedMessagesPauseAbortBoundary = undefined;\n\tthis._ensureActiveInterruptQueueHold();\n}\n\n/** Release a pause hold without starting a turn; report whether raw work was released. */\nexport async function resumeQueuedMessages(this: AgentSession, beforeRelease?: () => void): Promise<boolean> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(this);\n\tif (owner !== this) return owner.resumeQueuedMessages(beforeRelease);\n\tif (!this._queuedMessagesPaused) return false;\n\tconst abortBoundary = this._queuedMessagesPauseAbortBoundary;\n\tif (abortBoundary !== undefined) {\n\t\ttry {\n\t\t\tawait abortBoundary;\n\t\t} catch (error) {\n\t\t\t// Keep the hold closed across a failed abort. The rejecting explicit\n\t\t\t// resume observes that boundary and retires it so a later resume can retry.\n\t\t\tif (this._queuedMessagesPauseAbortBoundary === abortBoundary) {\n\t\t\t\tthis._queuedMessagesPauseAbortBoundary = undefined;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\tif (this._pendingInterruptDeliveries > 0) await this._interruptDeliveryQueue;\n\tif (!this._queuedMessagesPaused) return false;\n\tbeforeRelease?.();\n\tconst hold = this._activeInterruptQueueHold;\n\tconst released = hold !== undefined && (hold.steering.length > 0 || hold.followUp.length > 0);\n\tthis._queuedMessagesPaused = false;\n\tthis._queuedMessagesPauseAbortBoundary = undefined;\n\tthis._restoreAndClearActiveInterruptQueueHold();\n\treturn released;\n}\n\n/** Abort an ordinary turn and synchronously publish its pause-associated settlement boundary. */\nexport function abort(this: AgentSession): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(this);\n\tif (owner !== this) return owner.abort();\n\tthis.abortRetry();\n\tthis.agent.abort();\n\tconst boundary = (async () => {\n\t\tawait this.agent.waitForIdle();\n\t\tawait this._agentEventQueue;\n\t})();\n\tif (this._queuedMessagesPaused) {\n\t\tconst tracked = composePauseAbortBoundaries([this._queuedMessagesPauseAbortBoundary, boundary]);\n\t\tif (tracked === undefined) return boundary;\n\t\tthis._queuedMessagesPauseAbortBoundary = tracked;\n\t\tvoid tracked.catch(() => {});\n\t}\n\treturn boundary;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-retry.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-retry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAO,gBAAgB,EAAS,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-retry.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-retry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAO,gBAAgB,EAAS,MAAM,8BAA8B,CAAC;AAGjF,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AA6E9F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAsCxF;AAED;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAsBzF;AAmCD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAsBvF;AAED;;;GAGG;AAEH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAgF/G;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4E3G;AAED;;GAEG;AAEH,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAInD;AAED;;;GAGG;AAEH,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpE;AAED,kDAAkD;AAElD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAE9E;AAMD;;;;;;;GAOG;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;CASpC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { isRetryableAssistantError } from "@earendil-works/pi-ai";
|
|
2
2
|
import { clampThinkingLevel, isContextOverflow, modelsAreEqual } from "@earendil-works/pi-ai/compat";
|
|
3
3
|
import { sleep } from "../utils/sleep.js";
|
|
4
|
+
import { isCodexTokenInvalidationError } from "./codex-errors.js";
|
|
4
5
|
import { DEFAULT_THINKING_LEVEL } from "./defaults.js";
|
|
5
6
|
import { fallbackKey, resolveFallbackModel as resolveConfiguredFallbackModel } from "./fallback-models.js";
|
|
6
|
-
import { isCodexTokenInvalidationError } from "./codex-errors.js";
|
|
7
7
|
function modelLabel(model) {
|
|
8
8
|
return model ? `${model.provider}/${model.id}` : "unknown model";
|
|
9
9
|
}
|
|
@@ -27,7 +27,11 @@ function hasProviderTransportDiagnostic(value, seen = new Set(), includeMessageF
|
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
for (const nested of [
|
|
30
|
+
for (const nested of [
|
|
31
|
+
record.error,
|
|
32
|
+
record.cause,
|
|
33
|
+
...(Array.isArray(record.diagnostics) ? record.diagnostics : []),
|
|
34
|
+
]) {
|
|
31
35
|
if (hasProviderTransportDiagnostic(nested, seen, true))
|
|
32
36
|
return true;
|
|
33
37
|
}
|
|
@@ -44,10 +48,15 @@ function hasProviderModelUnavailableDiagnostic(value, seen = new Set(), includeM
|
|
|
44
48
|
? [record.type, record.code, record.name, record.message, record.errorMessage]
|
|
45
49
|
: [record.type, record.code, record.name, record.errorMessage];
|
|
46
50
|
for (const field of fields) {
|
|
47
|
-
if (typeof field === "string" &&
|
|
51
|
+
if (typeof field === "string" &&
|
|
52
|
+
/model(?:[_\s-].*)?(?:not[_\s-]?found|unavailable|unknown|disabled)|model[_-]?not[_-]?found/i.test(field))
|
|
48
53
|
return true;
|
|
49
54
|
}
|
|
50
|
-
for (const nested of [
|
|
55
|
+
for (const nested of [
|
|
56
|
+
record.error,
|
|
57
|
+
record.cause,
|
|
58
|
+
...(Array.isArray(record.diagnostics) ? record.diagnostics : []),
|
|
59
|
+
]) {
|
|
51
60
|
if (hasProviderModelUnavailableDiagnostic(nested, seen, true))
|
|
52
61
|
return true;
|
|
53
62
|
}
|
|
@@ -202,7 +211,10 @@ export async function _trySwitchToFallbackModel(message) {
|
|
|
202
211
|
if (this._fallbackAttemptedKeys.has(key))
|
|
203
212
|
continue;
|
|
204
213
|
const nextModel = candidate.model;
|
|
205
|
-
const nextLevel = clampThinkingLevel(nextModel, candidate.thinkingLevel ??
|
|
214
|
+
const nextLevel = clampThinkingLevel(nextModel, candidate.thinkingLevel ??
|
|
215
|
+
this.settingsManager.getDefaultThinkingLevel() ??
|
|
216
|
+
this.thinkingLevel ??
|
|
217
|
+
DEFAULT_THINKING_LEVEL);
|
|
206
218
|
if (modelsAreEqual(candidate.model, fromModel) && nextLevel === this.thinkingLevel)
|
|
207
219
|
continue;
|
|
208
220
|
if (this._retryAttempt > 0) {
|
|
@@ -241,14 +253,25 @@ export async function _trySwitchToFallbackModel(message) {
|
|
|
241
253
|
// fallback exhaustion emits the failure end event.
|
|
242
254
|
}, (error) => {
|
|
243
255
|
const finalError = error instanceof Error ? error.message : String(error);
|
|
244
|
-
this._emit({
|
|
256
|
+
this._emit({
|
|
257
|
+
type: "model_fallback_end",
|
|
258
|
+
success: false,
|
|
259
|
+
from: modelLabel(fromModel),
|
|
260
|
+
to: modelLabel(nextModel),
|
|
261
|
+
finalError,
|
|
262
|
+
});
|
|
245
263
|
this._retryAttempt = 0;
|
|
246
264
|
this._resolveRetry();
|
|
247
265
|
});
|
|
248
266
|
}, 0);
|
|
249
267
|
return true;
|
|
250
268
|
}
|
|
251
|
-
this._emit({
|
|
269
|
+
this._emit({
|
|
270
|
+
type: "model_fallback_end",
|
|
271
|
+
success: false,
|
|
272
|
+
from: modelLabel(fromModel),
|
|
273
|
+
finalError: message.errorMessage,
|
|
274
|
+
});
|
|
252
275
|
return false;
|
|
253
276
|
}
|
|
254
277
|
export async function _handleRetryableError(message) {
|