@bastani/atomic 0.9.4 → 0.9.5-alpha.10
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 +136 -2
- package/README.md +2 -2
- package/dist/builtin/cursor/CHANGELOG.md +6 -0
- package/dist/builtin/cursor/package.json +3 -3
- package/dist/builtin/cursor/src/model-mapper.ts +6 -3
- package/dist/builtin/intercom/CHANGELOG.md +31 -0
- package/dist/builtin/intercom/README.md +29 -21
- package/dist/builtin/intercom/broker/broker.ts +9 -120
- package/dist/builtin/intercom/broker/client.ts +29 -54
- package/dist/builtin/intercom/broker/delivered-message-cache.ts +44 -0
- package/dist/builtin/intercom/broker/paths.ts +42 -5
- package/dist/builtin/intercom/broker/pending-send-registry.ts +142 -0
- package/dist/builtin/intercom/broker/send-handler.ts +106 -0
- package/dist/builtin/intercom/broker/send-signature.ts +37 -0
- package/dist/builtin/intercom/broker/spawn.ts +78 -10
- package/dist/builtin/intercom/config.ts +6 -3
- package/dist/builtin/intercom/contact-supervisor-tool.ts +6 -4
- package/dist/builtin/intercom/foreground-detach-handoff.ts +136 -0
- package/dist/builtin/intercom/index-heavy.ts +50 -54
- package/dist/builtin/intercom/index.ts +320 -272
- package/dist/builtin/intercom/intercom-tool.ts +9 -3
- package/dist/builtin/intercom/lazy-heavy-proxy.ts +114 -0
- package/dist/builtin/intercom/lazy-subagent-ack.ts +20 -0
- package/dist/builtin/intercom/lazy-tool-execution.ts +39 -0
- package/dist/builtin/intercom/lifecycle-lease.ts +51 -0
- package/dist/builtin/intercom/lifecycle.ts +37 -20
- package/dist/builtin/intercom/package.json +12 -6
- package/dist/builtin/intercom/reply-routing.ts +17 -0
- package/dist/builtin/intercom/result-renderers.ts +1 -1
- package/dist/builtin/intercom/subagent-relay.ts +58 -12
- package/dist/builtin/intercom/types.ts +3 -3
- package/dist/builtin/intercom/ui/compose.ts +2 -2
- package/dist/builtin/intercom/ui/inline-message.ts +2 -2
- package/dist/builtin/intercom/ui/session-list.ts +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +23 -0
- package/dist/builtin/mcp/OAUTH.md +1 -0
- package/dist/builtin/mcp/README.md +10 -6
- package/dist/builtin/mcp/apps-cancellation.ts +32 -0
- package/dist/builtin/mcp/call-tool-result.ts +9 -0
- package/dist/builtin/mcp/caller-wait.ts +50 -0
- package/dist/builtin/mcp/command-registration.ts +82 -0
- package/dist/builtin/mcp/direct-tool-executor.ts +279 -0
- package/dist/builtin/mcp/direct-tools.ts +40 -255
- package/dist/builtin/mcp/host-html-template.ts +4 -2
- package/dist/builtin/mcp/index.ts +274 -239
- package/dist/builtin/mcp/init.ts +96 -126
- package/dist/builtin/mcp/mcp-auth-flow.ts +247 -237
- package/dist/builtin/mcp/mcp-callback-server.ts +89 -68
- package/dist/builtin/mcp/mcp-oauth-provider.ts +23 -1
- package/dist/builtin/mcp/metadata-hydration.ts +52 -0
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/mcp/proxy-auth.ts +4 -4
- package/dist/builtin/mcp/proxy-call.ts +111 -40
- package/dist/builtin/mcp/proxy-connect.ts +35 -15
- package/dist/builtin/mcp/proxy-info-modes.ts +106 -23
- package/dist/builtin/mcp/proxy-modes.ts +3 -3
- package/dist/builtin/mcp/session-cleanup-barrier.ts +43 -0
- package/dist/builtin/mcp/startup-warmup.ts +98 -0
- package/dist/builtin/mcp/state-lease.ts +12 -0
- package/dist/builtin/mcp/tool-result-renderer.ts +3 -3
- package/dist/builtin/mcp/ui-server.ts +8 -8
- package/dist/builtin/mcp/ui-session.ts +9 -18
- package/dist/builtin/subagents/CHANGELOG.md +60 -0
- package/dist/builtin/subagents/README.md +30 -29
- package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
- package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
- package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
- package/dist/builtin/subagents/agents/debugger.md +2 -2
- package/dist/builtin/subagents/agents/worker.md +2 -2
- package/dist/builtin/subagents/package.json +5 -5
- package/dist/builtin/subagents/prompts/review-loop.md +1 -1
- package/dist/builtin/subagents/skills/subagent/SKILL.md +37 -36
- package/dist/builtin/subagents/src/extension/api-lifecycle.ts +64 -0
- package/dist/builtin/subagents/src/extension/fanout-child.ts +44 -51
- package/dist/builtin/subagents/src/extension/index.ts +289 -320
- package/dist/builtin/subagents/src/extension/prompt-guidance.ts +7 -10
- package/dist/builtin/subagents/src/extension/schemas.ts +22 -5
- package/dist/builtin/subagents/src/extension/startup-maintenance.ts +89 -0
- package/dist/builtin/subagents/src/extension/tool-description.ts +29 -0
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +13 -2
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +4 -4
- package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +106 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +26 -20
- package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +13 -2
- package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +3 -0
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +1 -1
- package/dist/builtin/subagents/src/runs/background/completion-claims.ts +189 -0
- package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +44 -7
- package/dist/builtin/subagents/src/runs/background/completion-notification.ts +34 -0
- package/dist/builtin/subagents/src/runs/background/notify.ts +72 -22
- package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +232 -0
- package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +151 -0
- package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +72 -0
- package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +48 -0
- package/dist/builtin/subagents/src/runs/background/result-status.ts +81 -0
- package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +59 -0
- package/dist/builtin/subagents/src/runs/background/result-watcher.ts +177 -233
- package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +3 -2
- package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +73 -14
- package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +29 -15
- package/dist/builtin/subagents/src/runs/background/top-level-async.ts +1 -2
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +1 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +1 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +7 -9
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +3 -13
- package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +2 -15
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +2 -2
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +63 -46
- package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +48 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +17 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +39 -26
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +3 -1
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +3 -51
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +6 -11
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +11 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +5 -112
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +68 -118
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +79 -7
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +3 -0
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +2 -2
- package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +55 -12
- package/dist/builtin/subagents/src/shared/artifacts.ts +22 -11
- package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +294 -0
- package/dist/builtin/subagents/src/shared/exclusive-file-publication.ts +44 -0
- package/dist/builtin/subagents/src/shared/jsonl-writer.ts +1 -0
- package/dist/builtin/subagents/src/shared/model-info.ts +2 -2
- package/dist/builtin/subagents/src/shared/settings.ts +20 -10
- package/dist/builtin/subagents/src/shared/types-async.ts +3 -1
- package/dist/builtin/subagents/src/shared/types-config.ts +2 -0
- package/dist/builtin/subagents/src/shared/types-runtime.ts +3 -2
- package/dist/builtin/subagents/src/slash/slash-commands.ts +9 -12
- package/dist/builtin/subagents/src/slash/slash-live-state.ts +63 -32
- package/dist/builtin/subagents/src/tui/render-event-formatting.ts +15 -48
- package/dist/builtin/subagents/src/tui/render-layout.ts +9 -0
- package/dist/builtin/subagents/src/tui/render-result.ts +7 -0
- package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -0
- package/dist/builtin/subagents/src/tui/render-widget-graph.ts +27 -25
- package/dist/builtin/subagents/src/tui/render-widget.ts +177 -132
- package/dist/builtin/subagents/src/tui/render.ts +1 -1
- package/dist/builtin/web-access/CHANGELOG.md +14 -0
- package/dist/builtin/web-access/README.md +4 -0
- package/dist/builtin/web-access/content-tools.ts +8 -3
- package/dist/builtin/web-access/index-heavy.ts +1 -1
- package/dist/builtin/web-access/index.ts +190 -46
- package/dist/builtin/web-access/lifecycle-lease.ts +38 -0
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/web-access/result-renderers.ts +1 -1
- package/dist/builtin/web-access/summary-review.ts +1 -1
- package/dist/builtin/web-access/web-search-activity.ts +1 -1
- package/dist/builtin/web-access/web-search-return.ts +7 -0
- package/dist/builtin/web-access/web-search-summary.ts +1 -1
- package/dist/builtin/web-access/web-search-tool.ts +4 -2
- package/dist/builtin/workflows/CHANGELOG.md +98 -0
- package/dist/builtin/workflows/README.md +20 -16
- package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +33 -9
- package/dist/builtin/workflows/builtin/goal-artifacts.ts +3 -1
- package/dist/builtin/workflows/builtin/goal-ledger.ts +3 -0
- package/dist/builtin/workflows/builtin/goal-prompts.ts +39 -5
- package/dist/builtin/workflows/builtin/goal-reducer.ts +21 -0
- package/dist/builtin/workflows/builtin/goal-reports.ts +23 -0
- package/dist/builtin/workflows/builtin/goal-review.ts +85 -6
- package/dist/builtin/workflows/builtin/goal-runner.ts +122 -49
- package/dist/builtin/workflows/builtin/goal-schemas.ts +22 -0
- package/dist/builtin/workflows/builtin/goal-types.ts +25 -1
- package/dist/builtin/workflows/builtin/goal.d.ts +5 -0
- package/dist/builtin/workflows/builtin/goal.ts +13 -2
- package/dist/builtin/workflows/builtin/index.d.ts +8 -0
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +16 -5
- package/dist/builtin/workflows/builtin/ralph-core.ts +100 -15
- package/dist/builtin/workflows/builtin/ralph-models.ts +98 -66
- package/dist/builtin/workflows/builtin/ralph-review-gate.ts +37 -5
- package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +159 -0
- package/dist/builtin/workflows/builtin/ralph-runner.ts +75 -165
- package/dist/builtin/workflows/builtin/ralph.d.ts +3 -0
- package/dist/builtin/workflows/builtin/ralph.ts +4 -1
- package/dist/builtin/workflows/builtin/review-convergence.ts +111 -0
- package/dist/builtin/workflows/builtin/shared-prompts.ts +20 -1
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/skills/create-spec/SKILL.md +2 -0
- package/dist/builtin/workflows/skills/impeccable/SKILL.md +16 -13
- package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +1 -0
- package/dist/builtin/workflows/skills/impeccable/reference/adapt.native.md +58 -0
- package/dist/builtin/workflows/skills/impeccable/reference/android.md +40 -0
- package/dist/builtin/workflows/skills/impeccable/reference/animate.md +2 -0
- package/dist/builtin/workflows/skills/impeccable/reference/audit.md +2 -0
- package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +139 -0
- package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +69 -62
- package/dist/builtin/workflows/skills/impeccable/reference/critique.md +21 -7
- package/dist/builtin/workflows/skills/impeccable/reference/document.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +92 -0
- package/dist/builtin/workflows/skills/impeccable/reference/init.md +29 -7
- package/dist/builtin/workflows/skills/impeccable/reference/ios.md +45 -0
- package/dist/builtin/workflows/skills/impeccable/reference/layout.md +25 -1
- package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +23 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +2 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +75 -14
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +1 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +31 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +64 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +118 -11
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +16 -11
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +66 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +42 -10
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +4 -6
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +660 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +516 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +1764 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +61 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +4 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/is-generated.mjs +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-component.mjs +13 -16
- package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +17 -11
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +104 -37
- package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +9 -0
- package/dist/builtin/workflows/src/durable/backend.ts +12 -0
- package/dist/builtin/workflows/src/durable/child-primitive.ts +12 -8
- package/dist/builtin/workflows/src/durable/dbos-backend.ts +63 -2
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +28 -0
- package/dist/builtin/workflows/src/durable/resume-catalog.ts +12 -0
- package/dist/builtin/workflows/src/durable/resume-runtime.ts +5 -2
- package/dist/builtin/workflows/src/durable/stage-primitive.ts +167 -28
- package/dist/builtin/workflows/src/durable/types.ts +30 -1
- package/dist/builtin/workflows/src/engine/primitives/task.ts +3 -1
- package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +1 -2
- package/dist/builtin/workflows/src/engine/run-returned-status.ts +50 -16
- package/dist/builtin/workflows/src/engine/run.ts +32 -32
- package/dist/builtin/workflows/src/engine/runtime.ts +5 -0
- package/dist/builtin/workflows/src/extension/extension-factory.ts +3 -0
- package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +9 -2
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +137 -27
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +22 -6
- package/dist/builtin/workflows/src/extension/public-types.ts +1 -1
- package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +13 -1
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +19 -4
- package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +9 -0
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +17 -17
- package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +48 -23
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +15 -2
- package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +20 -8
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +24 -8
- package/dist/builtin/workflows/src/runs/background/status.ts +4 -3
- package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +13 -3
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +29 -8
- package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +8 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +4 -3
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +2 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +18 -19
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +38 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +47 -0
- package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +1 -1
- package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +155 -20
- package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +6 -0
- package/dist/builtin/workflows/src/runs/shared/worktree.ts +2 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -2
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +2 -2
- package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +18 -1
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +23 -5
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +4 -0
- package/dist/builtin/workflows/src/shared/resume-continuation.ts +2 -0
- package/dist/builtin/workflows/src/shared/returned-run-status.ts +116 -0
- package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +2 -0
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +21 -3
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +3 -0
- package/dist/builtin/workflows/src/tui/graph-view-types.ts +3 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +1 -23
- package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +54 -9
- package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +9 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +27 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +5 -6
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +5 -2
- package/dist/builtin/workflows/src/tui/status-list.ts +22 -15
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +4 -4
- package/dist/bun/internal-intercom-broker.d.ts +6 -0
- package/dist/bun/internal-intercom-broker.d.ts.map +1 -0
- package/dist/bun/internal-intercom-broker.js +39 -0
- package/dist/bun/internal-intercom-broker.js.map +1 -0
- package/dist/bun/split-loader.d.ts +2 -0
- package/dist/bun/split-loader.d.ts.map +1 -0
- package/dist/bun/split-loader.js +50 -0
- package/dist/bun/split-loader.js.map +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +2 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -4
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts +26 -6
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +178 -19
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +25 -4
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +12 -2
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +1 -1
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +1 -1
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +13 -4
- 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 +2 -2
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +2 -1
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-retry.d.ts +2 -0
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-retry.js +152 -4
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -0
- 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-types.d.ts +15 -1
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +6 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/anthropic-thinking-guard.d.ts +5 -5
- package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
- package/dist/core/anthropic-thinking-guard.js +42 -32
- package/dist/core/anthropic-thinking-guard.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +15 -15
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +14 -9
- 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 +8 -4
- package/dist/core/builtin-packages.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +2 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +79 -46
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/context-assistant-turns.d.ts +42 -0
- package/dist/core/compaction/context-assistant-turns.d.ts.map +1 -0
- package/dist/core/compaction/context-assistant-turns.js +87 -0
- package/dist/core/compaction/context-assistant-turns.js.map +1 -0
- package/dist/core/compaction/context-compaction-critical.d.ts +15 -0
- package/dist/core/compaction/context-compaction-critical.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction-critical.js +57 -0
- package/dist/core/compaction/context-compaction-critical.js.map +1 -0
- package/dist/core/compaction/context-compaction-eviction-alternates.d.ts +18 -0
- package/dist/core/compaction/context-compaction-eviction-alternates.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction-eviction-alternates.js +186 -0
- package/dist/core/compaction/context-compaction-eviction-alternates.js.map +1 -0
- package/dist/core/compaction/context-compaction-eviction.d.ts +12 -0
- package/dist/core/compaction/context-compaction-eviction.d.ts.map +1 -0
- package/dist/core/compaction/context-compaction-eviction.js +222 -0
- package/dist/core/compaction/context-compaction-eviction.js.map +1 -0
- package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -1
- package/dist/core/compaction/context-compaction-prompt.js +1 -1
- package/dist/core/compaction/context-compaction-prompt.js.map +1 -1
- package/dist/core/compaction/context-compaction-runner.d.ts +7 -1
- package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/context-compaction-runner.js +113 -21
- package/dist/core/compaction/context-compaction-runner.js.map +1 -1
- package/dist/core/compaction/context-compaction-types.d.ts +2 -0
- package/dist/core/compaction/context-compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/context-compaction-types.js.map +1 -1
- package/dist/core/compaction/context-deletion-application.d.ts +5 -4
- package/dist/core/compaction/context-deletion-application.d.ts.map +1 -1
- package/dist/core/compaction/context-deletion-application.js +17 -15
- package/dist/core/compaction/context-deletion-application.js.map +1 -1
- package/dist/core/compaction/context-deletion-store.d.ts.map +1 -1
- package/dist/core/compaction/context-deletion-store.js +1 -1
- package/dist/core/compaction/context-deletion-store.js.map +1 -1
- package/dist/core/compaction/context-deletion-targets.d.ts +2 -1
- package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -1
- package/dist/core/compaction/context-deletion-targets.js +36 -31
- package/dist/core/compaction/context-deletion-targets.js.map +1 -1
- package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -1
- package/dist/core/compaction/context-deletion-tool-helpers.js +116 -43
- package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -1
- package/dist/core/compaction/context-transcript-analysis.d.ts +4 -2
- package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -1
- package/dist/core/compaction/context-transcript-analysis.js +36 -40
- package/dist/core/compaction/context-transcript-analysis.js.map +1 -1
- package/dist/core/copilot-anthropic-sse-repair.d.ts +23 -0
- package/dist/core/copilot-anthropic-sse-repair.d.ts.map +1 -0
- package/dist/core/copilot-anthropic-sse-repair.js +340 -0
- package/dist/core/copilot-anthropic-sse-repair.js.map +1 -0
- package/dist/core/copilot-gemini-reasoning.d.ts +16 -8
- package/dist/core/copilot-gemini-reasoning.d.ts.map +1 -1
- package/dist/core/copilot-gemini-reasoning.js +27 -22
- package/dist/core/copilot-gemini-reasoning.js.map +1 -1
- package/dist/core/copilot-hosts.d.ts +12 -0
- package/dist/core/copilot-hosts.d.ts.map +1 -0
- package/dist/core/copilot-hosts.js +33 -0
- package/dist/core/copilot-hosts.js.map +1 -0
- package/dist/core/copilot-model-catalog.d.ts.map +1 -1
- package/dist/core/copilot-model-catalog.js +3 -2
- package/dist/core/copilot-model-catalog.js.map +1 -1
- package/dist/core/copilot-model-synthesis.d.ts.map +1 -1
- package/dist/core/copilot-model-synthesis.js +3 -1
- package/dist/core/copilot-model-synthesis.js.map +1 -1
- package/dist/core/extensions/agent-events.d.ts +1 -1
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +6 -0
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts +8 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +10 -4
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +2 -7
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +6 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +72 -29
- 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 +5 -5
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/messages.d.ts +9 -0
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +100 -18
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-registry-builtins.d.ts.map +1 -1
- package/dist/core/model-registry-builtins.js +5 -0
- package/dist/core/model-registry-builtins.js.map +1 -1
- package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
- package/dist/core/model-registry-custom-loader.js +49 -8
- package/dist/core/model-registry-custom-loader.js.map +1 -1
- package/dist/core/model-registry-dynamic.d.ts.map +1 -1
- package/dist/core/model-registry-dynamic.js +11 -5
- package/dist/core/model-registry-dynamic.js.map +1 -1
- package/dist/core/model-registry-loader.d.ts.map +1 -1
- package/dist/core/model-registry-loader.js +8 -0
- package/dist/core/model-registry-loader.js.map +1 -1
- package/dist/core/model-registry-schemas.d.ts +93 -8
- package/dist/core/model-registry-schemas.d.ts.map +1 -1
- package/dist/core/model-registry-schemas.js +24 -12
- package/dist/core/model-registry-schemas.js.map +1 -1
- package/dist/core/model-registry-types.d.ts +7 -6
- package/dist/core/model-registry-types.d.ts.map +1 -1
- package/dist/core/model-registry-types.js.map +1 -1
- package/dist/core/model-registry.d.ts +5 -0
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +23 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-cli.d.ts.map +1 -1
- package/dist/core/model-resolver-cli.js +33 -5
- package/dist/core/model-resolver-cli.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts +6 -1
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.js +12 -7
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts +9 -0
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.js +12 -4
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-resolver.d.ts +4 -3
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +2 -2
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/openai-responses-payload-sanitizer.d.ts +7 -0
- package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -0
- package/dist/core/openai-responses-payload-sanitizer.js +74 -0
- package/dist/core/openai-responses-payload-sanitizer.js.map +1 -0
- package/dist/core/package-manager-auto-resources.d.ts +2 -2
- package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
- package/dist/core/package-manager-auto-resources.js +32 -52
- package/dist/core/package-manager-auto-resources.js.map +1 -1
- package/dist/core/package-manager-resolver.d.ts.map +1 -1
- package/dist/core/package-manager-resolver.js +23 -14
- package/dist/core/package-manager-resolver.js.map +1 -1
- package/dist/core/package-manager-resource-collector.d.ts +3 -3
- package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
- package/dist/core/package-manager-resource-collector.js +76 -73
- package/dist/core/package-manager-resource-collector.js.map +1 -1
- package/dist/core/package-manager-resource-files.d.ts +9 -8
- package/dist/core/package-manager-resource-files.d.ts.map +1 -1
- package/dist/core/package-manager-resource-files.js +92 -81
- package/dist/core/package-manager-resource-files.js.map +1 -1
- package/dist/core/prompt-templates-async.d.ts +3 -0
- package/dist/core/prompt-templates-async.d.ts.map +1 -0
- package/dist/core/prompt-templates-async.js +118 -0
- package/dist/core/prompt-templates-async.js.map +1 -0
- package/dist/core/provider-context-usage.d.ts +11 -0
- package/dist/core/provider-context-usage.d.ts.map +1 -0
- package/dist/core/provider-context-usage.js +58 -0
- package/dist/core/provider-context-usage.js.map +1 -0
- package/dist/core/resource-loader-assets.d.ts +3 -3
- package/dist/core/resource-loader-assets.d.ts.map +1 -1
- package/dist/core/resource-loader-assets.js +66 -83
- package/dist/core/resource-loader-assets.js.map +1 -1
- package/dist/core/resource-loader-context-files.d.ts +1 -0
- package/dist/core/resource-loader-context-files.d.ts.map +1 -1
- package/dist/core/resource-loader-context-files.js +13 -10
- package/dist/core/resource-loader-context-files.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts +1 -1
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +5 -5
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.js +4 -0
- package/dist/core/resource-loader-extensions.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +54 -7
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +7 -1
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/sdk-types.d.ts +2 -0
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +9 -6
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-entry-normalization.d.ts +7 -0
- package/dist/core/session-entry-normalization.d.ts.map +1 -0
- package/dist/core/session-entry-normalization.js +14 -0
- package/dist/core/session-entry-normalization.js.map +1 -0
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +1 -0
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-history.d.ts +2 -2
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +127 -108
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +3 -2
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +6 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js +3 -2
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-storage.d.ts.map +1 -1
- package/dist/core/settings-storage.js +2 -1
- package/dist/core/settings-storage.js.map +1 -1
- package/dist/core/settings-types.d.ts +2 -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 +3 -0
- package/dist/core/skills-async.d.ts.map +1 -0
- package/dist/core/skills-async.js +269 -0
- package/dist/core/skills-async.js.map +1 -0
- package/dist/core/slash-commands.d.ts +2 -0
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +141 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +11 -8
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/trust-manager.d.ts +9 -0
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +44 -2
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/main-deferred-startup.d.ts +33 -0
- package/dist/main-deferred-startup.d.ts.map +1 -0
- package/dist/main-deferred-startup.js +44 -0
- package/dist/main-deferred-startup.js.map +1 -0
- package/dist/main-early-input.d.ts +41 -0
- package/dist/main-early-input.d.ts.map +1 -0
- package/dist/main-early-input.js +154 -0
- package/dist/main-early-input.js.map +1 -0
- package/dist/main-session.d.ts.map +1 -1
- package/dist/main-session.js +1 -0
- package/dist/main-session.js.map +1 -1
- package/dist/main.d.ts +0 -6
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +47 -39
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.js +0 -1
- package/dist/modes/interactive/components/chat-session-host-actions.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 +15 -0
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-options.js +3 -1
- package/dist/modes/interactive/components/settings-selector-options.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +2 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +37 -2
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +0 -1
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +21 -9
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-child-ordering.d.ts +7 -0
- package/dist/modes/interactive/interactive-child-ordering.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-child-ordering.js +26 -0
- package/dist/modes/interactive/interactive-child-ordering.js.map +1 -0
- package/dist/modes/interactive/interactive-deferred-startup.d.ts +8 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +86 -26
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.js +13 -13
- package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +16 -0
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-hotkeys-debug.js +4 -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 +360 -230
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +19 -4
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +46 -4
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +3 -3
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +3 -3
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +27 -17
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.d.ts +8 -1
- 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-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +14 -10
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-onboarding.d.ts +0 -9
- package/dist/modes/interactive/interactive-onboarding.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-onboarding.js +24 -201
- package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.js +43 -9
- package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +93 -10
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-resource-disclosure.js +3 -2
- package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js +10 -8
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +9 -5
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +1 -1
- 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 +102 -98
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/global-theme.js +26 -2
- package/dist/modes/interactive/theme/global-theme.js.map +1 -1
- package/dist/modes/interactive/theme/theme-class.d.ts +1 -1
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js +2 -0
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.d.ts +1 -0
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.js +3 -0
- package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +1 -1
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/utils/child-process.d.ts +8 -1
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js +39 -6
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +3 -0
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/event-loop.d.ts +7 -0
- package/dist/utils/event-loop.d.ts.map +1 -0
- package/dist/utils/event-loop.js +14 -0
- package/dist/utils/event-loop.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +24 -1
- package/dist/utils/fs-watch.d.ts.map +1 -1
- package/dist/utils/fs-watch.js +60 -5
- package/dist/utils/fs-watch.js.map +1 -1
- package/dist/utils/json.d.ts +4 -0
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/json.js +8 -0
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/module-require.d.ts +11 -0
- package/dist/utils/module-require.d.ts.map +1 -1
- package/dist/utils/module-require.js +14 -1
- package/dist/utils/module-require.js.map +1 -1
- package/dist/utils/split-launcher.d.ts +38 -0
- package/dist/utils/split-launcher.d.ts.map +1 -0
- package/dist/utils/split-launcher.js +63 -0
- package/dist/utils/split-launcher.js.map +1 -0
- package/docs/changelog.mdx +19 -0
- package/docs/compaction.md +100 -64
- package/docs/custom-provider.md +18 -5
- package/docs/development.md +4 -0
- package/docs/extensions.md +11 -2
- package/docs/json.md +3 -1
- package/docs/keybindings.md +2 -2
- package/docs/models.md +69 -10
- package/docs/providers.md +3 -2
- package/docs/quickstart.md +15 -11
- package/docs/rpc.md +5 -3
- package/docs/sdk.md +1 -1
- package/docs/settings.md +33 -3
- package/docs/subagents.md +40 -5
- package/docs/terminal-setup.md +4 -0
- package/docs/tools.md +1 -1
- package/docs/usage.md +8 -6
- package/docs/windows.md +4 -0
- package/docs/workflows.md +59 -36
- package/examples/extensions/preset.ts +2 -2
- package/examples/extensions/subagent/README.md +2 -2
- package/examples/extensions/subagent/index.ts +1 -2
- package/examples/extensions/subagent/schemas.ts +4 -1
- package/examples/sdk/12-full-control.ts +1 -1
- package/npm-shrinkwrap.json +538 -51
- package/package.json +10 -9
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +0 -75
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +0 -202
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +0 -97
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +0 -160
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +0 -72
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +0 -161
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +0 -203
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +0 -234
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +0 -103
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +0 -29
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +0 -9
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +0 -117
|
@@ -310,7 +310,7 @@ export function toolResultHasChatAnswer(result: unknown): boolean {
|
|
|
310
310
|
);
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
export
|
|
313
|
+
export { RESUME_CONTINUATION_PROMPT } from "../../shared/resume-continuation.js";
|
|
314
314
|
|
|
315
315
|
export function shouldInjectResumeContinuation(state: {
|
|
316
316
|
readonly resumeOccurred: boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { StageControlHandle, AgentSessionEventListener } from "./stage-control-registry.js";
|
|
2
2
|
import type { LiveStageRuntime } from "./executor-stage-types.js";
|
|
3
3
|
import { isTerminalStage } from "./executor-scheduler.js";
|
|
4
|
+
import { StageToolExecutionBuffer } from "./stage-tool-execution-buffer.js";
|
|
4
5
|
|
|
5
6
|
export function createStageControlHandle(runtime: LiveStageRuntime): StageControlHandle {
|
|
6
7
|
const ensureMessagingSession = async (): Promise<void> => {
|
|
@@ -15,6 +16,8 @@ export function createStageControlHandle(runtime: LiveStageRuntime): StageContro
|
|
|
15
16
|
throw new Error(`atomic-workflows: cannot message stage "${runtime.name}" because no retained session metadata is available.`);
|
|
16
17
|
}
|
|
17
18
|
};
|
|
19
|
+
const toolExecutions = new StageToolExecutionBuffer();
|
|
20
|
+
const unsubscribeToolExecutions = runtime.innerCtx.subscribe((event) => toolExecutions.record(event));
|
|
18
21
|
|
|
19
22
|
return {
|
|
20
23
|
runId: runtime.runId,
|
|
@@ -41,6 +44,9 @@ export function createStageControlHandle(runtime: LiveStageRuntime): StageContro
|
|
|
41
44
|
get agentSession() {
|
|
42
45
|
return runtime.innerCtx.__agentSession();
|
|
43
46
|
},
|
|
47
|
+
pendingToolExecutionEvents() {
|
|
48
|
+
return toolExecutions.replayEvents();
|
|
49
|
+
},
|
|
44
50
|
async ensureAttached() {
|
|
45
51
|
runtime.throwIfStageMutationBlocked();
|
|
46
52
|
await ensureMessagingSession();
|
|
@@ -120,6 +126,8 @@ export function createStageControlHandle(runtime: LiveStageRuntime): StageContro
|
|
|
120
126
|
return runtime.innerCtx.subscribe(listener);
|
|
121
127
|
},
|
|
122
128
|
async dispose() {
|
|
129
|
+
unsubscribeToolExecutions();
|
|
130
|
+
toolExecutions.clear();
|
|
123
131
|
await runtime.releaseLiveHandle();
|
|
124
132
|
},
|
|
125
133
|
};
|
|
@@ -24,7 +24,7 @@ import type { LiveStageMutableState, LiveStageRuntime, StageContextWithMeta, Sta
|
|
|
24
24
|
import { createStageControlHandle } from "./executor-stage-control.js";
|
|
25
25
|
import { createTrackedStageCaller } from "./executor-stage-call.js";
|
|
26
26
|
import { createStageContext } from "./executor-stage-context.js";
|
|
27
|
-
import { stageOptionsWithGitWorktree, stageOptionsWithInputDefaults } from "./executor-direct-helpers.js";
|
|
27
|
+
import { stageOptionsWithGitWorktree, stageOptionsWithInputDefaults, type GitWorktreeSetupCache } from "./executor-direct-helpers.js";
|
|
28
28
|
|
|
29
29
|
export function createWorkflowStageFactory(input: {
|
|
30
30
|
readonly runId: string;
|
|
@@ -38,6 +38,7 @@ export function createWorkflowStageFactory(input: {
|
|
|
38
38
|
readonly limiter: ConcurrencyLimiter;
|
|
39
39
|
readonly inputRuntimeDefaults: Partial<StageOptions>;
|
|
40
40
|
readonly workflowInvocationCwd: string;
|
|
41
|
+
readonly gitWorktreeSetupCache: GitWorktreeSetupCache;
|
|
41
42
|
readonly stageRegistry: StageControlRegistry;
|
|
42
43
|
readonly exit: WorkflowExitManager;
|
|
43
44
|
readonly classifyExecutorFailure: (error: unknown) => WorkflowFailure;
|
|
@@ -45,7 +46,7 @@ export function createWorkflowStageFactory(input: {
|
|
|
45
46
|
}): (name: string, options?: StageOptions, stageFailFastScope?: ParallelFailFastScope) => StageContextWithMeta {
|
|
46
47
|
return (name: string, options?: StageOptions, stageFailFastScope?: ParallelFailFastScope): StageContextWithMeta => {
|
|
47
48
|
input.exit.throwIfWorkflowExitSelected();
|
|
48
|
-
options = stageOptionsWithGitWorktree(stageOptionsWithInputDefaults(options, input.inputRuntimeDefaults), input.workflowInvocationCwd);
|
|
49
|
+
options = stageOptionsWithGitWorktree(stageOptionsWithInputDefaults(options, input.inputRuntimeDefaults), input.workflowInvocationCwd, input.gitWorktreeSetupCache);
|
|
49
50
|
const stageId = crypto.randomUUID();
|
|
50
51
|
const provisionalParentIds = input.tracker.onSpawn(stageId, name);
|
|
51
52
|
const scopedParentIds = input.opts.continuation === undefined ? stageFailFastScope?.parentIds : undefined;
|
|
@@ -54,7 +55,7 @@ export function createWorkflowStageFactory(input: {
|
|
|
54
55
|
input.tracker.replaceParents(stageId, scopedParentIds);
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
const replayKey = `stage:${name}`;
|
|
58
|
+
const replayKey = options?.durableReplayKey ?? `stage:${name}`;
|
|
58
59
|
const replayDecision = input.replayIndex.decide({
|
|
59
60
|
displayName: name,
|
|
60
61
|
replayKey,
|
|
@@ -59,6 +59,8 @@ export interface StageControlHandle {
|
|
|
59
59
|
readonly messages: AgentSession["messages"];
|
|
60
60
|
/** Live coding-agent session when available, used by embedded chat/footer UI. */
|
|
61
61
|
readonly agentSession?: AgentSession;
|
|
62
|
+
/** Replayable in-flight tool starts/partial updates for stage-chat remounts. */
|
|
63
|
+
pendingToolExecutionEvents?(): readonly AgentSessionEvent[];
|
|
62
64
|
/** Ensure the SDK session exists. Cheap when already attached. */
|
|
63
65
|
ensureAttached(): Promise<void>;
|
|
64
66
|
/** Send a prompt. Use only when the stage is idle / not streaming. */
|
|
@@ -6,6 +6,7 @@ import { missingAdapter, stripWorkflowOnlyOptions, unavailableSync } from "./sta
|
|
|
6
6
|
import { asAgentSession, disposeStageSession, normalizeSessionCreateResult } from "./stage-runner-session.js";
|
|
7
7
|
import { structuredOutputToolErrorFromEvent } from "./stage-runner-structured-output.js";
|
|
8
8
|
import { sendStageUserMessage } from "./stage-runner-send-user-message.js";
|
|
9
|
+
import { nextResumedContextOverflowFallbackIndex, terminatingToolCallId, unresolvedContextOverflowFailure, unresolvedContextOverflowMessage } from "./stage-runner-unresolved-overflow.js";
|
|
9
10
|
import type { AgentSessionConsumer, StageModelFallbackMeta, StageRunnerOpts, StageSessionCreateOptions, StageSessionCreateResult, StageSessionEvent, StageSessionRuntime, WorkflowFastModeSettingsManager } from "./stage-runner-types.js";
|
|
10
11
|
|
|
11
12
|
type PauseRequest = {
|
|
@@ -19,6 +20,7 @@ export class StageSessionController {
|
|
|
19
20
|
private readonly terminatingToolCallIds = new Set<string>();
|
|
20
21
|
private latestStructuredOutputToolErrorValue: string | undefined;
|
|
21
22
|
private unsubscribeTerminateWatcher: (() => void) | undefined;
|
|
23
|
+
private unresolvedContextOverflowMessage: string | undefined;
|
|
22
24
|
private disposed = false;
|
|
23
25
|
private pendingThinkingLevel: Parameters<StageContext["setThinkingLevel"]>[0] | undefined;
|
|
24
26
|
private readonly pendingListeners = new Set<(event: StageSessionEvent) => void>();
|
|
@@ -325,7 +327,9 @@ export class StageSessionController {
|
|
|
325
327
|
}
|
|
326
328
|
this.unsubscribeTerminateWatcher?.();
|
|
327
329
|
this.unsubscribeTerminateWatcher = result.session.subscribe((event) => {
|
|
328
|
-
|
|
330
|
+
const terminatingId = terminatingToolCallId(event);
|
|
331
|
+
if (terminatingId !== undefined) this.terminatingToolCallIds.add(terminatingId);
|
|
332
|
+
this.unresolvedContextOverflowMessage = unresolvedContextOverflowMessage(event) ?? this.unresolvedContextOverflowMessage;
|
|
329
333
|
this.latestStructuredOutputToolErrorValue =
|
|
330
334
|
structuredOutputToolErrorFromEvent(event) ?? this.latestStructuredOutputToolErrorValue;
|
|
331
335
|
});
|
|
@@ -361,24 +365,29 @@ export class StageSessionController {
|
|
|
361
365
|
continue;
|
|
362
366
|
}
|
|
363
367
|
const promptStartIndex = activeSession.messages.length;
|
|
368
|
+
this.unresolvedContextOverflowMessage = undefined;
|
|
364
369
|
try {
|
|
365
370
|
await activeSession.prompt(nextText, sdkOptions);
|
|
366
371
|
const pendingPauseAfterPrompt = this.pauseRequest;
|
|
367
372
|
if (pendingPauseAfterPrompt) {
|
|
368
373
|
const { message } = await pendingPauseAfterPrompt.deferred.promise;
|
|
374
|
+
this.throwUnresolvedContextOverflowIfPresent();
|
|
369
375
|
nextText = message;
|
|
370
376
|
if (nextText === undefined) return { terminalScanStartIndex: activeSession.messages.length };
|
|
371
377
|
continue;
|
|
372
378
|
}
|
|
379
|
+
this.throwUnresolvedContextOverflowIfPresent();
|
|
373
380
|
return { terminalScanStartIndex: promptStartIndex };
|
|
374
381
|
} catch (err) {
|
|
375
382
|
const pendingPauseAfterThrow = this.pauseRequest;
|
|
376
383
|
if (pendingPauseAfterThrow) {
|
|
377
384
|
const { message } = await pendingPauseAfterThrow.deferred.promise;
|
|
385
|
+
this.throwUnresolvedContextOverflowIfPresent();
|
|
378
386
|
nextText = message;
|
|
379
387
|
if (nextText === undefined) return { terminalScanStartIndex: activeSession.messages.length };
|
|
380
388
|
continue;
|
|
381
389
|
}
|
|
390
|
+
this.throwUnresolvedContextOverflowIfPresent();
|
|
382
391
|
throw err;
|
|
383
392
|
}
|
|
384
393
|
}
|
|
@@ -420,10 +429,10 @@ export class StageSessionController {
|
|
|
420
429
|
this.notifyModelFallbackMetaChange();
|
|
421
430
|
throw err;
|
|
422
431
|
}
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
this.
|
|
426
|
-
return false;
|
|
432
|
+
const resumedOverflowNextIndex = nextResumedContextOverflowFallbackIndex(err, this.activeCandidateIndex, candidates.length);
|
|
433
|
+
if (resumedOverflowNextIndex === "terminal") { this.modelWarnings.push(...this.pendingFallbackWarnings); this.pendingFallbackWarnings.length = 0; this.notifyModelFallbackMetaChange(); throw err; }
|
|
434
|
+
this.pendingFallbackWarnings.push(resumedOverflowNextIndex === undefined ? `[fallback] resume on ${resumedLabel} failed: ${message}. Restarting fallback from ${this.candidateLabel(candidates[0]!)}.` : `[fallback] resume on ${resumedLabel} failed: ${message}. Retrying with ${this.candidateLabel(candidates[resumedOverflowNextIndex]!)}.`);
|
|
435
|
+
await this.disposeCurrentSession(); this.activeCandidateIndex = resumedOverflowNextIndex; return false;
|
|
427
436
|
}
|
|
428
437
|
}
|
|
429
438
|
|
|
@@ -479,22 +488,12 @@ export class StageSessionController {
|
|
|
479
488
|
private candidateLabel(candidate: WorkflowResolvedModelCandidate): string {
|
|
480
489
|
return candidate.reasoningLevel !== undefined ? `${candidate.id}:${candidate.reasoningLevel}` : candidate.id;
|
|
481
490
|
}
|
|
482
|
-
|
|
483
491
|
private isWorkflowFastModeEnabled(): boolean | undefined {
|
|
484
492
|
const model = this.session?.model;
|
|
485
493
|
const settingsManager = this.sessionSettingsManager ?? this.effectiveStageOptions?.settingsManager;
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
private recordTerminatingToolCall(event: unknown): void {
|
|
491
|
-
if (event === null || typeof event !== "object") return;
|
|
492
|
-
const record = event as Record<string, unknown>;
|
|
493
|
-
if (record["type"] !== "tool_execution_end") return;
|
|
494
|
-
const result = record["result"];
|
|
495
|
-
if (result === null || typeof result !== "object") return;
|
|
496
|
-
if ((result as Record<string, unknown>)["terminate"] !== true) return;
|
|
497
|
-
const callId = record["toolCallId"];
|
|
498
|
-
if (typeof callId === "string" && callId.length > 0) this.terminatingToolCallIds.add(callId);
|
|
494
|
+
return model === undefined || settingsManager === undefined
|
|
495
|
+
? undefined
|
|
496
|
+
: shouldApplyCodexFastModeForScope(model, settingsManager.getCodexFastModeSettings(), "workflow");
|
|
499
497
|
}
|
|
498
|
+
private throwUnresolvedContextOverflowIfPresent(): void { const message = this.unresolvedContextOverflowMessage; this.unresolvedContextOverflowMessage = undefined; if (message !== undefined) throw unresolvedContextOverflowFailure(message); }
|
|
500
499
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { WorkflowPromptModelFailure } from "./stage-runner-messages.js";
|
|
2
|
+
|
|
3
|
+
export function unresolvedContextOverflowMessage(event: unknown): string | undefined {
|
|
4
|
+
if (event === null || typeof event !== "object") return undefined;
|
|
5
|
+
const record = event as Record<string, unknown>;
|
|
6
|
+
if (record["type"] !== "compaction_end" || record["unresolvedOverflow"] !== true) return undefined;
|
|
7
|
+
const message = record["errorMessage"];
|
|
8
|
+
return typeof message === "string" && message.trim().length > 0
|
|
9
|
+
? message
|
|
10
|
+
: "Context overflow recovery was exhausted for the current model.";
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function unresolvedContextOverflowFailure(message: string): WorkflowPromptModelFailure {
|
|
14
|
+
return new WorkflowPromptModelFailure({ message, code: "context_length_exceeded", stopReason: "error" });
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function isUnresolvedContextOverflowFailure(error: unknown): boolean {
|
|
18
|
+
if (!(error instanceof WorkflowPromptModelFailure)) return false;
|
|
19
|
+
const cause = error.cause;
|
|
20
|
+
if (cause === null || typeof cause !== "object") return false;
|
|
21
|
+
return (cause as { readonly code?: unknown }).code === "context_length_exceeded";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function nextResumedContextOverflowFallbackIndex(error: unknown, currentIndex: number | undefined, candidateCount: number): number | "terminal" | undefined {
|
|
25
|
+
if (!isUnresolvedContextOverflowFailure(error) || currentIndex === undefined) return undefined;
|
|
26
|
+
const nextIndex = currentIndex + 1;
|
|
27
|
+
return nextIndex >= candidateCount ? "terminal" : nextIndex;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function terminatingToolCallId(event: unknown): string | undefined {
|
|
31
|
+
if (event === null || typeof event !== "object") return undefined;
|
|
32
|
+
const record = event as Record<string, unknown>;
|
|
33
|
+
const result = record["result"];
|
|
34
|
+
if (record["type"] !== "tool_execution_end" || result === null || typeof result !== "object") return undefined;
|
|
35
|
+
if ((result as Record<string, unknown>)["terminate"] !== true) return undefined;
|
|
36
|
+
const callId = record["toolCallId"];
|
|
37
|
+
return typeof callId === "string" && callId.length > 0 ? callId : undefined;
|
|
38
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AgentSessionEvent } from "@bastani/atomic";
|
|
2
|
+
|
|
3
|
+
interface PendingToolExecution {
|
|
4
|
+
start: AgentSessionEvent;
|
|
5
|
+
update?: AgentSessionEvent;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function eventType(event: AgentSessionEvent): string {
|
|
9
|
+
return String((event as { type?: unknown }).type ?? "");
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function toolCallId(event: AgentSessionEvent): string | undefined {
|
|
13
|
+
const value = (event as { toolCallId?: unknown }).toolCallId;
|
|
14
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class StageToolExecutionBuffer {
|
|
18
|
+
private readonly pending = new Map<string, PendingToolExecution>();
|
|
19
|
+
|
|
20
|
+
record(event: AgentSessionEvent): void {
|
|
21
|
+
const type = eventType(event);
|
|
22
|
+
if (type === "agent_start" || type === "agent_end") {
|
|
23
|
+
this.pending.clear();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const id = toolCallId(event);
|
|
27
|
+
if (id === undefined) return;
|
|
28
|
+
if (type === "tool_execution_start") {
|
|
29
|
+
this.pending.set(id, { start: event });
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (type === "tool_execution_update") {
|
|
33
|
+
const existing = this.pending.get(id);
|
|
34
|
+
if (existing) existing.update = event;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (type === "tool_execution_end") this.pending.delete(id);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
replayEvents(): readonly AgentSessionEvent[] {
|
|
41
|
+
return [...this.pending.values()].flatMap((entry) => entry.update ? [entry.start, entry.update] : [entry.start]);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
clear(): void {
|
|
45
|
+
this.pending.clear();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -140,7 +140,7 @@ function resolveLongContextWindow(value: WorkflowModelValue): number | undefined
|
|
|
140
140
|
return longTier > defaultContextWindow ? longTier : undefined;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
const WORKFLOW_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"] as const satisfies readonly WorkflowThinkingLevel[];
|
|
143
|
+
const WORKFLOW_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"] as const satisfies readonly WorkflowThinkingLevel[];
|
|
144
144
|
const WORKFLOW_THINKING_LEVEL_SET: ReadonlySet<string> = new Set(WORKFLOW_THINKING_LEVELS);
|
|
145
145
|
|
|
146
146
|
export function splitReasoningSuffix(model: string): { readonly baseModel: string; readonly level?: WorkflowThinkingLevel } {
|
|
@@ -5,41 +5,160 @@ import { createGitEnvironment } from "@bastani/atomic";
|
|
|
5
5
|
import type { GitResult, GitWorktreeSetupOptions, GitWorktreeSetupResult } from "./worktree-types.js";
|
|
6
6
|
|
|
7
7
|
const DISABLED_GIT_HOOKS_PATH = process.platform === "win32" ? "NUL" : "/dev/null";
|
|
8
|
+
const GIT_COMMAND_TIMEOUT_MS = 60_000;
|
|
9
|
+
const GIT_READ_ONLY_PROBE_TIMEOUT_ATTEMPTS = 2;
|
|
8
10
|
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
+
export type GitRunner = (cwd: string, args: readonly string[]) => GitResult;
|
|
12
|
+
|
|
13
|
+
let gitRunnerOverride: GitRunner | undefined;
|
|
14
|
+
|
|
15
|
+
function gitCommandArgs(args: readonly string[]): string[] {
|
|
16
|
+
return [
|
|
11
17
|
"-c",
|
|
12
18
|
`core.hooksPath=${DISABLED_GIT_HOOKS_PATH}`,
|
|
13
19
|
"-c",
|
|
14
20
|
"core.fsmonitor=false",
|
|
15
21
|
...args,
|
|
16
|
-
]
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function gitCommandArgv(args: readonly string[]): string[] {
|
|
26
|
+
return ["git", ...gitCommandArgs(args)];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function withGitResultDiagnostics(result: GitResult, cwd: string, args: readonly string[]): GitResult {
|
|
30
|
+
return {
|
|
31
|
+
...result,
|
|
32
|
+
argv: result.argv ?? gitCommandArgv(args),
|
|
33
|
+
cwd: result.cwd ?? cwd,
|
|
34
|
+
timeoutMs: result.timeoutMs ?? GIT_COMMAND_TIMEOUT_MS,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function runGitProcess(cwd: string, args: readonly string[]): GitResult {
|
|
39
|
+
const startedAt = Date.now();
|
|
40
|
+
const result = spawnSync("git", gitCommandArgs(args), {
|
|
17
41
|
cwd,
|
|
18
42
|
encoding: "utf-8",
|
|
19
|
-
env: createGitEnvironment({
|
|
20
|
-
|
|
43
|
+
env: createGitEnvironment({
|
|
44
|
+
GIT_OPTIONAL_LOCKS: "0",
|
|
45
|
+
GIT_TERMINAL_PROMPT: "0",
|
|
46
|
+
GCM_INTERACTIVE: "never",
|
|
47
|
+
}),
|
|
48
|
+
timeout: GIT_COMMAND_TIMEOUT_MS,
|
|
21
49
|
});
|
|
22
50
|
return {
|
|
23
51
|
stdout: result.stdout ?? "",
|
|
24
52
|
stderr: result.stderr ?? "",
|
|
25
|
-
status: result.status,
|
|
53
|
+
status: result.status ?? null,
|
|
54
|
+
signal: result.signal ?? null,
|
|
55
|
+
elapsedMs: Math.max(0, Date.now() - startedAt),
|
|
26
56
|
...(result.error === undefined ? {} : { error: result.error }),
|
|
27
57
|
};
|
|
28
58
|
}
|
|
29
59
|
|
|
30
|
-
export function
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
60
|
+
export function withGitRunnerForTest<T>(runner: GitRunner, callback: () => T): T {
|
|
61
|
+
const previous = gitRunnerOverride;
|
|
62
|
+
gitRunnerOverride = runner;
|
|
63
|
+
try {
|
|
64
|
+
return callback();
|
|
65
|
+
} finally {
|
|
66
|
+
gitRunnerOverride = previous;
|
|
36
67
|
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function runGit(cwd: string, args: readonly string[]): GitResult {
|
|
71
|
+
return withGitResultDiagnostics((gitRunnerOverride ?? runGitProcess)(cwd, args), cwd, args);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function runGitChecked(cwd: string, args: readonly string[]): string {
|
|
75
|
+
const result = runGit(cwd, args);
|
|
76
|
+
if (result.status !== 0) throw new Error(gitFailureMessage(result));
|
|
37
77
|
return result.stdout;
|
|
38
78
|
}
|
|
39
79
|
|
|
80
|
+
function gitErrorCode(error: Error): string | undefined {
|
|
81
|
+
return "code" in error ? String((error as Error & { readonly code?: unknown }).code) : undefined;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function isGitTimeoutResult(result: GitResult): boolean {
|
|
85
|
+
const error = result.error;
|
|
86
|
+
if (error === undefined) return false;
|
|
87
|
+
const code = gitErrorCode(error)?.toUpperCase();
|
|
88
|
+
const message = error.message.toLowerCase();
|
|
89
|
+
return code === "ETIMEDOUT" || message.includes("etimedout") || message.includes("timed out");
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function formatGitDiagnosticArg(value: string): string {
|
|
93
|
+
if (/^[A-Za-z0-9_./:@%+=,\\-]+$/.test(value)) return value;
|
|
94
|
+
return JSON.stringify(value);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function formatGitCommand(argv: readonly string[]): string {
|
|
98
|
+
return argv.map(formatGitDiagnosticArg).join(" ");
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function gitDiagnosticSuffix(result: GitResult): string {
|
|
102
|
+
const details: string[] = [];
|
|
103
|
+
if (result.argv !== undefined && result.argv.length > 0) details.push(`command: ${formatGitCommand(result.argv)}`);
|
|
104
|
+
if (result.cwd !== undefined) details.push(`cwd: ${result.cwd}`);
|
|
105
|
+
if (result.timeoutMs !== undefined) details.push(`timeout: ${result.timeoutMs}ms`);
|
|
106
|
+
if (result.elapsedMs !== undefined) details.push(`elapsed: ${result.elapsedMs}ms`);
|
|
107
|
+
details.push(`status: ${result.status === null ? "null" : result.status}`);
|
|
108
|
+
if (result.signal !== undefined) details.push(`signal: ${result.signal ?? "null"}`);
|
|
109
|
+
if (result.attempts !== undefined && result.attempts > 1) details.push(`attempts: ${result.attempts}`);
|
|
110
|
+
return details.length === 0 ? "" : ` (${details.join("; ")})`;
|
|
111
|
+
}
|
|
112
|
+
|
|
40
113
|
export function gitFailureMessage(result: GitResult): string {
|
|
41
|
-
if (result.error !== undefined)
|
|
42
|
-
|
|
114
|
+
if (result.error !== undefined) {
|
|
115
|
+
const code = gitErrorCode(result.error);
|
|
116
|
+
if (isGitTimeoutResult(result)) {
|
|
117
|
+
return `git command timed out after ${result.timeoutMs ?? GIT_COMMAND_TIMEOUT_MS}ms${code === undefined ? "" : ` (${code})`}: ${result.error.message}${gitDiagnosticSuffix(result)}`;
|
|
118
|
+
}
|
|
119
|
+
return `${code === undefined ? result.error.message : `${code}: ${result.error.message}`}${gitDiagnosticSuffix(result)}`;
|
|
120
|
+
}
|
|
121
|
+
return `${result.stderr.trim() || result.stdout.trim() || `git exited with status ${result.status}`}${gitDiagnosticSuffix(result)}`;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function runGitReadOnlyProbe(cwd: string, args: readonly string[]): GitResult {
|
|
125
|
+
let attempts = 1;
|
|
126
|
+
let result = runGit(cwd, args);
|
|
127
|
+
while (attempts < GIT_READ_ONLY_PROBE_TIMEOUT_ATTEMPTS && result.status !== 0 && isGitTimeoutResult(result)) {
|
|
128
|
+
attempts += 1;
|
|
129
|
+
result = runGit(cwd, args);
|
|
130
|
+
}
|
|
131
|
+
return attempts > 1 ? { ...result, attempts } : result;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface GitWorktreeSetupCache {
|
|
135
|
+
get(options: GitWorktreeSetupOptions): GitWorktreeSetupResult;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function gitWorktreeSetupCacheKey(options: GitWorktreeSetupOptions): string {
|
|
139
|
+
return JSON.stringify([
|
|
140
|
+
path.resolve(options.cwd),
|
|
141
|
+
options.gitWorktreeDir.trim(),
|
|
142
|
+
options.baseBranch?.trim() ?? "",
|
|
143
|
+
]);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export function createGitWorktreeSetupCache(): GitWorktreeSetupCache {
|
|
147
|
+
const results = new Map<string, GitWorktreeSetupResult>();
|
|
148
|
+
return {
|
|
149
|
+
get(options) {
|
|
150
|
+
const key = gitWorktreeSetupCacheKey(options);
|
|
151
|
+
const cached = results.get(key);
|
|
152
|
+
if (cached !== undefined) return cached;
|
|
153
|
+
const setup = setupGitWorktree(options);
|
|
154
|
+
results.set(key, setup);
|
|
155
|
+
return setup;
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export function setupGitWorktreeCached(options: GitWorktreeSetupOptions, cache?: GitWorktreeSetupCache): GitWorktreeSetupResult {
|
|
161
|
+
return cache?.get(options) ?? setupGitWorktree(options);
|
|
43
162
|
}
|
|
44
163
|
|
|
45
164
|
function quoteShellArg(value: string): string {
|
|
@@ -122,22 +241,38 @@ function pathExistsSync(value: string): boolean {
|
|
|
122
241
|
}
|
|
123
242
|
|
|
124
243
|
function repositoryRootForGitWorktree(cwd: string): string {
|
|
125
|
-
const result =
|
|
244
|
+
const result = runGitReadOnlyProbe(cwd, ["rev-parse", "--show-toplevel"]);
|
|
126
245
|
if (result.status !== 0) {
|
|
246
|
+
if (isGitTimeoutResult(result)) {
|
|
247
|
+
throw new Error(`Timed out while checking the Git repository for gitWorktreeDir from ${cwd}. Git reported: ${gitFailureMessage(result)}`);
|
|
248
|
+
}
|
|
127
249
|
throw new Error(`gitWorktreeDir requires the workflow to be invoked from inside a Git repository. Start from a Git checkout or omit gitWorktreeDir. Git reported: ${gitFailureMessage(result)}`);
|
|
128
250
|
}
|
|
129
251
|
return result.stdout.trim();
|
|
130
252
|
}
|
|
131
253
|
|
|
132
|
-
function
|
|
133
|
-
|
|
134
|
-
|
|
254
|
+
export function gitTopLevelFromResult(result: GitResult, cwd: string, description: string): string | undefined {
|
|
255
|
+
if (result.status !== 0) {
|
|
256
|
+
if (isGitTimeoutResult(result)) {
|
|
257
|
+
throw new Error(`Timed out while validating ${description}. Git reported: ${gitFailureMessage(result)}`);
|
|
258
|
+
}
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
135
261
|
return gitPathFromOutput(result.stdout, cwd);
|
|
136
262
|
}
|
|
137
263
|
|
|
264
|
+
function gitTopLevel(cwd: string): string | undefined {
|
|
265
|
+
return gitTopLevelFromResult(runGitReadOnlyProbe(cwd, ["rev-parse", "--show-toplevel"]), cwd, `gitWorktreeDir ${cwd}`);
|
|
266
|
+
}
|
|
267
|
+
|
|
138
268
|
function gitCommonDirForWorktree(cwd: string): string {
|
|
139
|
-
const result =
|
|
140
|
-
if (result.status !== 0)
|
|
269
|
+
const result = runGitReadOnlyProbe(cwd, ["rev-parse", "--git-common-dir"]);
|
|
270
|
+
if (result.status !== 0) {
|
|
271
|
+
if (isGitTimeoutResult(result)) {
|
|
272
|
+
throw new Error(`Timed out while validating Git common directory for gitWorktreeDir ${cwd}. Git reported: ${gitFailureMessage(result)}`);
|
|
273
|
+
}
|
|
274
|
+
throw new Error(`Failed to validate Git common directory for gitWorktreeDir ${cwd}. Git reported: ${gitFailureMessage(result)}`);
|
|
275
|
+
}
|
|
141
276
|
const gitPath = gitPathFromOutput(result.stdout, cwd);
|
|
142
277
|
if (gitPath === undefined) throw new Error("git rev-parse --git-common-dir returned an empty path");
|
|
143
278
|
return gitPath;
|
|
@@ -65,7 +65,13 @@ export interface GitResult {
|
|
|
65
65
|
stdout: string;
|
|
66
66
|
stderr: string;
|
|
67
67
|
status: number | null;
|
|
68
|
+
signal?: NodeJS.Signals | null;
|
|
68
69
|
error?: Error;
|
|
70
|
+
argv?: readonly string[];
|
|
71
|
+
cwd?: string;
|
|
72
|
+
timeoutMs?: number;
|
|
73
|
+
elapsedMs?: number;
|
|
74
|
+
attempts?: number;
|
|
69
75
|
}
|
|
70
76
|
|
|
71
77
|
export interface GitWorktreeSetupOptions {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { setupGitWorktree } from "./worktree-git.js";
|
|
1
|
+
export { createGitWorktreeSetupCache, setupGitWorktree, setupGitWorktreeCached } from "./worktree-git.js";
|
|
2
2
|
export {
|
|
3
3
|
cleanupWorktrees,
|
|
4
4
|
createWorktrees,
|
|
@@ -16,3 +16,4 @@ export type {
|
|
|
16
16
|
WorktreeSetup,
|
|
17
17
|
WorktreeTaskCwdConflict,
|
|
18
18
|
} from "./worktree-types.js";
|
|
19
|
+
export type { GitWorktreeSetupCache } from "./worktree-git.js";
|
|
@@ -20,7 +20,7 @@ export type WorkflowInputSchema = TSchema;
|
|
|
20
20
|
export type WorkflowOutputSchema = TSchema;
|
|
21
21
|
export type WorkflowOutputMode = "inline" | "file-only";
|
|
22
22
|
export type WorkflowContextMode = "fresh" | "fork";
|
|
23
|
-
export type WorkflowThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
23
|
+
export type WorkflowThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
24
24
|
export type WorkflowExecutionMode = "interactive" | "non_interactive";
|
|
25
25
|
export type WorkflowExitStatus = "completed" | "skipped" | "cancelled" | "blocked";
|
|
26
26
|
export type RunStatus = "pending" | "running" | "paused" | WorkflowExitStatus | "failed" | "killed";
|
|
@@ -34,7 +34,7 @@ export interface WorkflowExitOptions<TOutputs extends WorkflowOutputValues = Wor
|
|
|
34
34
|
readonly outputs?: WorkflowExitOutputValues<TOutputs>;
|
|
35
35
|
}
|
|
36
36
|
export interface WorkflowModelFallbackFields {
|
|
37
|
-
/** Ordered model IDs to try after `model` fails; entries may use `:off|minimal|low|medium|high|xhigh` reasoning suffixes. */
|
|
37
|
+
/** Ordered model IDs to try after `model` fails; entries may use `:off|minimal|low|medium|high|xhigh|max` reasoning suffixes. */
|
|
38
38
|
readonly fallbackModels?: readonly string[];
|
|
39
39
|
/** Optional deprecated compatibility helper aligned to `fallbackModels`; ignored for entries with a reasoning suffix. */
|
|
40
40
|
readonly fallbackThinkingLevels?: readonly string[];
|
|
@@ -29,7 +29,7 @@ export type WorkflowOutputSchema = TSchema;
|
|
|
29
29
|
|
|
30
30
|
export type WorkflowOutputMode = "inline" | "file-only";
|
|
31
31
|
export type WorkflowContextMode = "fresh" | "fork";
|
|
32
|
-
export type WorkflowThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
32
|
+
export type WorkflowThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
33
33
|
export type WorkflowExecutionMode = "interactive" | "non_interactive";
|
|
34
34
|
export type WorkflowExitStatus = "completed" | "skipped" | "cancelled" | "blocked";
|
|
35
35
|
export type RunStatus = "pending" | "running" | "paused" | WorkflowExitStatus | "failed" | "killed";
|
|
@@ -48,7 +48,7 @@ export interface WorkflowExitOptions<TOutputs extends WorkflowOutputValues = Wor
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
export interface WorkflowModelFallbackFields {
|
|
51
|
-
/** Ordered model IDs to try after `model` fails; entries may use `:off|minimal|low|medium|high|xhigh` reasoning suffixes. */
|
|
51
|
+
/** Ordered model IDs to try after `model` fails; entries may use `:off|minimal|low|medium|high|xhigh|max` reasoning suffixes. */
|
|
52
52
|
readonly fallbackModels?: readonly string[];
|
|
53
53
|
/** Optional deprecated compatibility helper aligned to `fallbackModels`; ignored for entries with a reasoning suffix. */
|
|
54
54
|
readonly fallbackThinkingLevels?: readonly string[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Value } from "typebox/value";
|
|
2
2
|
import { workflowSerializableObjectSchema } from "./serializable.js";
|
|
3
3
|
import type { Store } from "./store.js";
|
|
4
|
-
import type { SessionEntry } from "./persistence-restore.js";
|
|
4
|
+
import type { NormalizedSessionEntry as SessionEntry } from "./persistence-restore.js";
|
|
5
5
|
import type {
|
|
6
6
|
RunStatus,
|
|
7
7
|
StageSnapshot,
|
|
@@ -255,6 +255,14 @@ function numericRetryAfterMs(value: unknown): number | undefined {
|
|
|
255
255
|
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
+
function numericTimestamp(value: unknown): number | undefined {
|
|
259
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function numericDuration(value: unknown): number | undefined {
|
|
263
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
|
|
264
|
+
}
|
|
265
|
+
|
|
258
266
|
export function findRunBlockedMetadata(
|
|
259
267
|
entries: readonly SessionEntry[],
|
|
260
268
|
runId: string,
|
|
@@ -360,6 +368,8 @@ export function restoreTerminalRuns(entries: readonly SessionEntry[], store: Sto
|
|
|
360
368
|
const retryAfterMs = numericRetryAfterMs(end["retryAfterMs"]);
|
|
361
369
|
const failureMessage = end["failureMessage"];
|
|
362
370
|
const failedStageId = end["failedStageId"];
|
|
371
|
+
const restoredEndedAt = numericTimestamp(end["endedAt"]);
|
|
372
|
+
const restoredDurationMs = numericDuration(end["durationMs"]);
|
|
363
373
|
store.recordRunEnd(
|
|
364
374
|
runId,
|
|
365
375
|
status,
|
|
@@ -378,6 +388,13 @@ export function restoreTerminalRuns(entries: readonly SessionEntry[], store: Sto
|
|
|
378
388
|
...(typeof exitReason === "string" ? { exitReason } : {}),
|
|
379
389
|
},
|
|
380
390
|
);
|
|
391
|
+
const restoredRun = store.runs().find((run) => run.id === runId);
|
|
392
|
+
if (restoredRun !== undefined && (restoredEndedAt !== undefined || restoredDurationMs !== undefined)) {
|
|
393
|
+
Object.assign(restoredRun, {
|
|
394
|
+
...(restoredEndedAt !== undefined ? { endedAt: restoredEndedAt } : {}),
|
|
395
|
+
...(restoredDurationMs !== undefined ? { durationMs: restoredDurationMs } : {}),
|
|
396
|
+
});
|
|
397
|
+
}
|
|
381
398
|
}
|
|
382
399
|
}
|
|
383
400
|
|