@bastani/atomic 0.9.9 → 0.9.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 +132 -0
- package/README.md +2 -0
- package/dist/builtin/cursor/CHANGELOG.md +12 -0
- package/dist/builtin/cursor/package.json +3 -3
- package/dist/builtin/intercom/CHANGELOG.md +30 -0
- package/dist/builtin/intercom/README.md +12 -4
- package/dist/builtin/intercom/broker/broker.ts +96 -14
- package/dist/builtin/intercom/broker/client-message-validation.ts +39 -0
- package/dist/builtin/intercom/broker/client.ts +101 -92
- package/dist/builtin/intercom/broker/group-isolation.ts +28 -0
- package/dist/builtin/intercom/broker/send-handler.ts +62 -10
- package/dist/builtin/intercom/broker/send-signature.ts +3 -0
- package/dist/builtin/intercom/broker/supervisor-channel.ts +126 -0
- package/dist/builtin/intercom/closed-workflow-stage-message.ts +66 -0
- package/dist/builtin/intercom/config.ts +10 -0
- package/dist/builtin/intercom/contact-supervisor-tool.ts +14 -10
- package/dist/builtin/intercom/foreground-detach-handoff.ts +12 -2
- package/dist/builtin/intercom/group.ts +46 -0
- package/dist/builtin/intercom/inbound-message-admission.ts +79 -0
- package/dist/builtin/intercom/incoming-message-delivery.ts +49 -0
- package/dist/builtin/intercom/index-heavy.ts +148 -94
- package/dist/builtin/intercom/index.ts +66 -4
- package/dist/builtin/intercom/intercom-test-seams.ts +6 -0
- package/dist/builtin/intercom/intercom-tool.ts +71 -20
- package/dist/builtin/intercom/intercom-utils.ts +15 -2
- package/dist/builtin/intercom/late-stage-message-router.ts +148 -0
- package/dist/builtin/intercom/lifecycle.ts +10 -4
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/intercom/reconnect-backoff.ts +6 -0
- package/dist/builtin/intercom/reply-tracker.ts +8 -0
- package/dist/builtin/intercom/skills/intercom/SKILL.md +2 -0
- package/dist/builtin/intercom/stable-delivery-retry.ts +32 -0
- package/dist/builtin/intercom/subagent-relay.ts +67 -14
- package/dist/builtin/intercom/supervisor-authorization-registry.ts +22 -0
- package/dist/builtin/intercom/terminal-ordering-barrier.ts +144 -25
- package/dist/builtin/intercom/types.ts +18 -5
- package/dist/builtin/intercom/workflow-reply-tracker.ts +19 -0
- package/dist/builtin/intercom/workflow-stage-admission.ts +43 -0
- package/dist/builtin/intercom/workflow-stage-delivery-failure.ts +77 -0
- package/dist/builtin/mcp/CHANGELOG.md +22 -0
- package/dist/builtin/mcp/README.md +6 -2
- package/dist/builtin/mcp/config.ts +8 -8
- package/dist/builtin/mcp/direct-tool-executor.ts +7 -6
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/mcp/proxy-call.ts +5 -4
- package/dist/builtin/mcp/sampling-handler.ts +7 -2
- package/dist/builtin/mcp/tool-call-timeout.ts +101 -0
- package/dist/builtin/mcp/tool-result-renderer.ts +3 -2
- package/dist/builtin/mcp/types.ts +5 -0
- package/dist/builtin/mcp/ui-server.ts +3 -2
- package/dist/builtin/subagents/CHANGELOG.md +42 -0
- package/dist/builtin/subagents/README.md +6 -3
- package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
- package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-locator.md +1 -1
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +1 -1
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-locator.md +1 -1
- package/dist/builtin/subagents/agents/debugger.md +1 -1
- package/dist/builtin/subagents/agents/worker.md +1 -1
- package/dist/builtin/subagents/package.json +4 -4
- package/dist/builtin/subagents/skills/subagent/SKILL.md +1 -1
- package/dist/builtin/subagents/src/extension/index.ts +37 -61
- package/dist/builtin/subagents/src/extension/notification-content.ts +80 -0
- package/dist/builtin/subagents/src/extension/schemas.ts +9 -0
- package/dist/builtin/subagents/src/extension/tool-description.ts +1 -0
- package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +23 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +4 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +2 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +4 -0
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +75 -13
- package/dist/builtin/subagents/src/runs/background/async-status.ts +19 -0
- package/dist/builtin/subagents/src/runs/background/completion-notification.ts +4 -3
- package/dist/builtin/subagents/src/runs/background/notify.ts +76 -15
- package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +1 -1
- package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +13 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +1 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +1 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +2 -1
- package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +4 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +13 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +19 -2
- package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +26 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +19 -30
- package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +47 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +60 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +21 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +21 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +6 -1
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +50 -0
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +16 -0
- package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +75 -0
- package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +51 -0
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +69 -77
- package/dist/builtin/subagents/src/shared/types-config.ts +6 -0
- package/dist/builtin/subagents/src/slash/slash-commands.ts +3 -2
- package/dist/builtin/subagents/src/tui/render-result-compact.ts +5 -3
- package/dist/builtin/subagents/src/tui/render-result.ts +5 -3
- package/dist/builtin/subagents/src/tui/render-widget-graph.ts +7 -4
- package/dist/builtin/web-access/CHANGELOG.md +22 -0
- package/dist/builtin/web-access/extract-frames.ts +14 -13
- package/dist/builtin/web-access/extract.ts +2 -2
- package/dist/builtin/web-access/gemini-api.ts +0 -3
- package/dist/builtin/web-access/gemini-web-config.ts +1 -3
- package/dist/builtin/web-access/gemini-web.ts +1 -0
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/web-access/perplexity.ts +0 -3
- package/dist/builtin/web-access/result-renderers.ts +7 -5
- package/dist/builtin/web-access/subprocess.ts +100 -0
- package/dist/builtin/web-access/summary-review.ts +14 -3
- package/dist/builtin/web-access/video-extract.ts +12 -17
- package/dist/builtin/web-access/web-search-browser.ts +18 -10
- package/dist/builtin/web-access/web-search-summary.ts +9 -2
- package/dist/builtin/web-access/youtube-extract.ts +22 -25
- package/dist/builtin/workflows/CHANGELOG.md +153 -0
- package/dist/builtin/workflows/README.md +76 -38
- package/dist/builtin/workflows/ambient.d.ts +30 -0
- package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +15 -0
- package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +93 -0
- package/dist/builtin/workflows/builtin/adversarial-verification.d.ts +11 -0
- package/dist/builtin/workflows/builtin/adversarial-verification.ts +24 -0
- package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +11 -0
- package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +110 -0
- package/dist/builtin/workflows/builtin/classify-and-act.d.ts +24 -0
- package/dist/builtin/workflows/builtin/classify-and-act.ts +35 -0
- package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +8 -2
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +11 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +96 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.d.ts +23 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +32 -0
- package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +15 -0
- package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +75 -0
- package/dist/builtin/workflows/builtin/generate-and-filter.d.ts +11 -0
- package/dist/builtin/workflows/builtin/generate-and-filter.ts +26 -0
- package/dist/builtin/workflows/builtin/goal-models.ts +72 -0
- package/dist/builtin/workflows/builtin/goal-runner.ts +2 -64
- package/dist/builtin/workflows/builtin/index.d.ts +44 -0
- package/dist/builtin/workflows/builtin/index.ts +6 -0
- package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +79 -0
- package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +189 -0
- package/dist/builtin/workflows/builtin/loop-until-done.d.ts +34 -0
- package/dist/builtin/workflows/builtin/loop-until-done.ts +31 -0
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +6 -1
- package/dist/builtin/workflows/builtin/pattern-artifact-root.ts +28 -0
- package/dist/builtin/workflows/builtin/ralph-models.ts +26 -5
- package/dist/builtin/workflows/builtin/ralph-runner.ts +1 -0
- package/dist/builtin/workflows/builtin/tournament-prompts.ts +79 -0
- package/dist/builtin/workflows/builtin/tournament-runner.ts +188 -0
- package/dist/builtin/workflows/builtin/tournament.d.ts +33 -0
- package/dist/builtin/workflows/builtin/tournament.ts +34 -0
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/authoring.d.ts +2 -6
- package/dist/builtin/workflows/src/durable/backend.ts +163 -120
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +37 -64
- package/dist/builtin/workflows/src/durable/completed-inspection.ts +4 -72
- package/dist/builtin/workflows/src/durable/dbos-backend.ts +242 -195
- package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +207 -0
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +42 -42
- package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +155 -0
- package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +126 -0
- package/dist/builtin/workflows/src/durable/dbos-metadata.ts +105 -58
- package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +320 -0
- package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +161 -0
- package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +62 -0
- package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +2 -2
- package/dist/builtin/workflows/src/durable/durable-hash.ts +20 -0
- package/dist/builtin/workflows/src/durable/factory.ts +23 -83
- package/dist/builtin/workflows/src/durable/format-version.ts +4 -10
- package/dist/builtin/workflows/src/durable/index.ts +16 -20
- package/dist/builtin/workflows/src/durable/local-command.ts +63 -0
- package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +177 -0
- package/dist/builtin/workflows/src/durable/prompt-reservations.ts +36 -0
- package/dist/builtin/workflows/src/durable/resume-catalog.ts +2 -200
- package/dist/builtin/workflows/src/durable/resume-eligibility.ts +42 -2
- package/dist/builtin/workflows/src/durable/resume-runtime.ts +121 -118
- package/dist/builtin/workflows/src/durable/retention-policy.ts +42 -0
- package/dist/builtin/workflows/src/durable/run-timing.ts +98 -0
- package/dist/builtin/workflows/src/durable/scoped-backend.ts +62 -14
- package/dist/builtin/workflows/src/durable/stage-primitive.ts +15 -2
- package/dist/builtin/workflows/src/durable/tool-primitive.ts +11 -7
- package/dist/builtin/workflows/src/durable/types.ts +25 -18
- package/dist/builtin/workflows/src/durable/ui-primitive.ts +117 -29
- package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +30 -0
- package/dist/builtin/workflows/src/engine/primitives/parallel.ts +20 -5
- package/dist/builtin/workflows/src/engine/primitives/task.ts +3 -2
- package/dist/builtin/workflows/src/engine/primitives/ui.ts +6 -3
- package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +14 -22
- package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +14 -14
- package/dist/builtin/workflows/src/engine/run.ts +35 -37
- package/dist/builtin/workflows/src/engine/runtime.ts +3 -0
- package/dist/builtin/workflows/src/engine/workflow-activity.ts +9 -0
- package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +155 -0
- package/dist/builtin/workflows/src/extension/config-file-loader.ts +13 -0
- package/dist/builtin/workflows/src/extension/config-loader.ts +20 -0
- package/dist/builtin/workflows/src/extension/dispatcher.ts +56 -17
- package/dist/builtin/workflows/src/extension/extension-factory.ts +13 -10
- package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +37 -59
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +16 -18
- package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +83 -0
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +80 -41
- package/dist/builtin/workflows/src/extension/postmortem-deps.ts +73 -0
- package/dist/builtin/workflows/src/extension/public-types.ts +11 -51
- package/dist/builtin/workflows/src/extension/render-call.ts +3 -9
- package/dist/builtin/workflows/src/extension/render-result.ts +22 -7
- package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +78 -0
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +50 -29
- package/dist/builtin/workflows/src/extension/runtime.ts +70 -219
- package/dist/builtin/workflows/src/extension/ui-surface.ts +107 -3
- package/dist/builtin/workflows/src/extension/wiring.ts +76 -7
- package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +10 -5
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +27 -5
- package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +49 -19
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +8 -8
- package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +81 -0
- package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +55 -0
- package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +193 -145
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +9 -133
- package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +189 -0
- package/dist/builtin/workflows/src/extension/workflow-targets.ts +1 -1
- package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +78 -3
- package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +185 -89
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +92 -11
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +18 -24
- package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +63 -0
- package/dist/builtin/workflows/src/runs/background/quit.ts +139 -29
- package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +97 -0
- package/dist/builtin/workflows/src/runs/background/run-inspect.ts +111 -0
- package/dist/builtin/workflows/src/runs/background/runner.ts +46 -17
- package/dist/builtin/workflows/src/runs/background/startup-admission.ts +77 -0
- package/dist/builtin/workflows/src/runs/background/status.ts +133 -224
- package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +44 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +57 -256
- package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +7 -4
- package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +12 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +39 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +75 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +44 -12
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +63 -12
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +30 -4
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +3 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +0 -67
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +6 -0
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +0 -1
- package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +169 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +38 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +21 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +21 -3
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +85 -84
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +195 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +12 -5
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +42 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +100 -8
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +51 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +19 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +28 -2
- package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +4 -6
- package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +89 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +29 -133
- package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +130 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-root.ts +84 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +77 -63
- package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +4 -0
- package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +29 -22
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +26 -24
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +5 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +5 -0
- package/dist/builtin/workflows/src/shared/intercom-group.ts +51 -0
- package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +6 -0
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +4 -0
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +3 -0
- package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +13 -0
- package/dist/builtin/workflows/src/shared/returned-run-status.ts +2 -1
- package/dist/builtin/workflows/src/shared/session-transcript.ts +74 -0
- package/dist/builtin/workflows/src/shared/store-stage-methods.ts +1 -0
- package/dist/builtin/workflows/src/shared/store-types.ts +8 -0
- package/dist/builtin/workflows/src/shared/timing.ts +4 -1
- package/dist/builtin/workflows/src/shared/types.ts +2 -6
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +2 -42
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +2 -2
- package/dist/builtin/workflows/src/tui/graph-view-constants.ts +7 -3
- package/dist/builtin/workflows/src/tui/graph-view-input.ts +29 -67
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +15 -10
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +0 -2
- package/dist/builtin/workflows/src/tui/graph-view-types.ts +3 -9
- package/dist/builtin/workflows/src/tui/host-input-form.ts +62 -0
- package/dist/builtin/workflows/src/tui/mouse-input.ts +63 -0
- package/dist/builtin/workflows/src/tui/node-card.ts +1 -0
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +67 -42
- package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +49 -0
- package/dist/builtin/workflows/src/tui/session-overlays.ts +3 -104
- package/dist/builtin/workflows/src/tui/session-picker.ts +3 -12
- package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +19 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +30 -10
- package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +19 -9
- package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +25 -38
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +1 -1
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +7 -6
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +7 -1
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +3 -1
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +19 -20
- package/dist/builtin/workflows/src/tui/switcher.ts +4 -4
- package/dist/builtin/workflows/src/tui/widget.ts +46 -33
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +26 -0
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +14 -2
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +26 -27
- package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +208 -69
- package/dist/bun/cli.js +3 -0
- package/dist/bun/cli.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +3 -0
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +19 -2
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.js +2 -2
- 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 +5 -3
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.js +1 -1
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +2 -4
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +9 -2
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +6 -0
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +107 -36
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +18 -7
- 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 +3 -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-post-tool-compaction.d.ts +16 -0
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -0
- package/dist/core/agent-session-post-tool-compaction.js +113 -0
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -0
- package/dist/core/agent-session-prompt.d.ts +12 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +22 -5
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +3 -0
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +21 -0
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +2 -1
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +7 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +6 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +18 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/async/job-manager.d.ts +1 -0
- package/dist/core/async/job-manager.d.ts.map +1 -1
- package/dist/core/async/job-manager.js +29 -5
- package/dist/core/async/job-manager.js.map +1 -1
- package/dist/core/async/session-manager.d.ts +2 -4
- package/dist/core/async/session-manager.d.ts.map +1 -1
- package/dist/core/async/session-manager.js +5 -32
- 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 +2 -0
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/auth-storage.d.ts +20 -10
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +151 -92
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/callback-activity.d.ts +27 -0
- package/dist/core/callback-activity.d.ts.map +1 -0
- package/dist/core/callback-activity.js +44 -0
- package/dist/core/callback-activity.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +4 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +4 -3
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction-boundary.d.ts +1 -1
- package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
- package/dist/core/compaction/compaction-boundary.js +10 -23
- package/dist/core/compaction/compaction-boundary.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +4 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +1 -1
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +3 -2
- package/dist/core/compaction/compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/compaction-types.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +6 -6
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +12 -9
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/index.d.ts +1 -0
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +1 -0
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts +101 -0
- package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -0
- package/dist/core/compaction/range-planner-diagnostics.js +116 -0
- package/dist/core/compaction/range-planner-diagnostics.js.map +1 -0
- package/dist/core/compaction/range-planner.d.ts +13 -3
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +117 -68
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/truncated-range-recovery.d.ts +47 -0
- package/dist/core/compaction/truncated-range-recovery.d.ts.map +1 -0
- package/dist/core/compaction/truncated-range-recovery.js +112 -0
- package/dist/core/compaction/truncated-range-recovery.js.map +1 -0
- 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 +23 -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 +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.js +2 -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 +8 -1
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +9 -6
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/message-types.d.ts +17 -0
- package/dist/core/extensions/message-types.d.ts.map +1 -1
- package/dist/core/extensions/message-types.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +3 -0
- 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/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +11 -10
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +2 -2
- 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/ui-types.d.ts +78 -0
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/model-registry-auth.d.ts +2 -1
- package/dist/core/model-registry-auth.d.ts.map +1 -1
- package/dist/core/model-registry-auth.js +25 -6
- package/dist/core/model-registry-auth.js.map +1 -1
- package/dist/core/model-registry-builtins.d.ts +3 -2
- package/dist/core/model-registry-builtins.d.ts.map +1 -1
- package/dist/core/model-registry-builtins.js +12 -6
- package/dist/core/model-registry-builtins.js.map +1 -1
- package/dist/core/model-registry-dynamic.d.ts +1 -0
- package/dist/core/model-registry-dynamic.d.ts.map +1 -1
- package/dist/core/model-registry-dynamic.js +53 -13
- package/dist/core/model-registry-dynamic.js.map +1 -1
- package/dist/core/model-registry-loader.d.ts +2 -1
- package/dist/core/model-registry-loader.d.ts.map +1 -1
- package/dist/core/model-registry-loader.js +2 -2
- package/dist/core/model-registry-loader.js.map +1 -1
- package/dist/core/model-registry-types.d.ts +10 -3
- 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 +15 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +214 -30
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/models-store.d.ts +25 -0
- package/dist/core/models-store.d.ts.map +1 -0
- package/dist/core/models-store.js +73 -0
- package/dist/core/models-store.js.map +1 -0
- package/dist/core/oauth-compat.d.ts +17 -0
- package/dist/core/oauth-compat.d.ts.map +1 -0
- package/dist/core/oauth-compat.js +2 -0
- package/dist/core/oauth-compat.js.map +1 -0
- package/dist/core/oauth-provider-bridge.d.ts +40 -0
- package/dist/core/oauth-provider-bridge.d.ts.map +1 -0
- package/dist/core/oauth-provider-bridge.js +169 -0
- package/dist/core/oauth-provider-bridge.js.map +1 -0
- package/dist/core/output-guard.d.ts +2 -0
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/output-guard.js +14 -0
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +5 -0
- package/dist/core/remote-catalog-provider.d.ts.map +1 -0
- package/dist/core/remote-catalog-provider.js +138 -0
- package/dist/core/remote-catalog-provider.js.map +1 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +8 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +1 -1
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +1 -1
- 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 +2 -2
- package/dist/core/session-manager-history.js +2 -2
- 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 +65 -23
- package/dist/core/session-manager-list.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +3 -2
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +9 -5
- 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 +2 -3
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/find.js +2 -2
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.js +2 -2
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.js +2 -2
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +4 -3
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/todos-render.d.ts.map +1 -1
- package/dist/core/tools/todos-render.js +3 -2
- package/dist/core/tools/todos-render.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +3 -2
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/write.js +2 -2
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts +29 -0
- package/dist/core/workflow-stage-admission.d.ts.map +1 -0
- package/dist/core/workflow-stage-admission.js +81 -0
- package/dist/core/workflow-stage-admission.js.map +1 -0
- 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 +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/main-types.d.ts +13 -0
- package/dist/main-types.d.ts.map +1 -0
- package/dist/main-types.js +2 -0
- package/dist/main-types.js.map +1 -0
- package/dist/main.d.ts +2 -5
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +25 -17
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +17 -12
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.d.ts +7 -0
- package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.js +20 -0
- package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +5 -3
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +3 -4
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +4 -0
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +4 -0
- package/dist/modes/interactive/components/chat-message-renderer.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 +79 -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.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +4 -2
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +1 -0
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +4 -1
- package/dist/modes/interactive/components/chat-session-host.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 +3 -4
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form-mount.d.ts +14 -0
- package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -0
- package/dist/modes/interactive/components/host-input-form-mount.js +79 -0
- package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -0
- package/dist/modes/interactive/components/host-input-form.d.ts +52 -0
- package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -0
- package/dist/modes/interactive/components/host-input-form.js +278 -0
- package/dist/modes/interactive/components/host-input-form.js.map +1 -0
- package/dist/modes/interactive/components/host-session-picker.d.ts +46 -0
- package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -0
- package/dist/modes/interactive/components/host-session-picker.js +183 -0
- package/dist/modes/interactive/components/host-session-picker.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +1 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +2 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +12 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +3 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +8 -2
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +7 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +57 -10
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +15 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +35 -3
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -2
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +9 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +24 -10
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +7 -1
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +3 -3
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +49 -0
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.js +2 -0
- package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-context.js +14 -0
- package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-global-clear.d.ts +13 -0
- package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-global-clear.js +11 -0
- package/dist/modes/interactive/interactive-global-clear.js.map +1 -0
- package/dist/modes/interactive/interactive-input-handling.js +17 -10
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +6 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +25 -2
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +4 -3
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +2 -2
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts +4 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +14 -1
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +3 -2
- 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 +3 -0
- 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.js +7 -4
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-queueing.js +2 -2
- package/dist/modes/interactive/interactive-queueing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +25 -4
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +3 -0
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +5 -2
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +22 -9
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-terminal-title.d.ts +6 -0
- package/dist/modes/interactive/interactive-terminal-title.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-terminal-title.js +7 -0
- package/dist/modes/interactive/interactive-terminal-title.js.map +1 -0
- package/dist/modes/interactive-engine/activity-watchdog.d.ts +45 -0
- package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -0
- package/dist/modes/interactive-engine/activity-watchdog.js +74 -0
- package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -0
- package/dist/modes/interactive-engine/create-isolated-runtime.d.ts +14 -0
- package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -0
- package/dist/modes/interactive-engine/create-isolated-runtime.js +56 -0
- package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -0
- package/dist/modes/interactive-engine/engine-args.d.ts +10 -0
- package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-args.js +55 -0
- package/dist/modes/interactive-engine/engine-args.js.map +1 -0
- package/dist/modes/interactive-engine/engine-child-liveness.d.ts +7 -0
- package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-child-liveness.js +50 -0
- package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -0
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts +47 -0
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-custom-ui.js +276 -0
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -0
- package/dist/modes/interactive-engine/engine-input-form.d.ts +13 -0
- package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-input-form.js +49 -0
- package/dist/modes/interactive-engine/engine-input-form.js.map +1 -0
- package/dist/modes/interactive-engine/engine-monitor.d.ts +18 -0
- package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-monitor.js +63 -0
- package/dist/modes/interactive-engine/engine-monitor.js.map +1 -0
- package/dist/modes/interactive-engine/engine-render-service.d.ts +17 -0
- package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-render-service.js +150 -0
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -0
- package/dist/modes/interactive-engine/engine-session-picker.d.ts +22 -0
- package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-session-picker.js +106 -0
- package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +23 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.js +126 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -0
- package/dist/modes/interactive-engine/input-form-host.d.ts +15 -0
- package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -0
- package/dist/modes/interactive-engine/input-form-host.js +44 -0
- package/dist/modes/interactive-engine/input-form-host.js.map +1 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +75 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -0
- package/dist/modes/interactive-engine/isolated-runtime.js +448 -0
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -0
- package/dist/modes/interactive-engine/protocol.d.ts +184 -0
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -0
- package/dist/modes/interactive-engine/protocol.js +254 -0
- package/dist/modes/interactive-engine/protocol.js.map +1 -0
- package/dist/modes/interactive-engine/remote-command-catalog.d.ts +33 -0
- package/dist/modes/interactive-engine/remote-command-catalog.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-command-catalog.js +51 -0
- package/dist/modes/interactive-engine/remote-command-catalog.js.map +1 -0
- package/dist/modes/interactive-engine/remote-component.d.ts +16 -0
- package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-component.js +209 -0
- package/dist/modes/interactive-engine/remote-component.js.map +1 -0
- package/dist/modes/interactive-engine/remote-frame-clamp.d.ts +25 -0
- package/dist/modes/interactive-engine/remote-frame-clamp.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-frame-clamp.js +43 -0
- package/dist/modes/interactive-engine/remote-frame-clamp.js.map +1 -0
- package/dist/modes/interactive-engine/remote-renderer.d.ts +59 -0
- package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-renderer.js +123 -0
- package/dist/modes/interactive-engine/remote-renderer.js.map +1 -0
- package/dist/modes/interactive-engine/session-picker-host.d.ts +25 -0
- package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -0
- package/dist/modes/interactive-engine/session-picker-host.js +75 -0
- package/dist/modes/interactive-engine/session-picker-host.js.map +1 -0
- package/dist/modes/interactive-engine/terminal-mode-controller.d.ts +43 -0
- package/dist/modes/interactive-engine/terminal-mode-controller.d.ts.map +1 -0
- package/dist/modes/interactive-engine/terminal-mode-controller.js +109 -0
- package/dist/modes/interactive-engine/terminal-mode-controller.js.map +1 -0
- package/dist/modes/rpc/bounded-writer.d.ts +27 -0
- package/dist/modes/rpc/bounded-writer.d.ts.map +1 -0
- package/dist/modes/rpc/bounded-writer.js +103 -0
- package/dist/modes/rpc/bounded-writer.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +15 -12
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.js +102 -28
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +83 -0
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client-api.js +64 -0
- package/dist/modes/rpc/rpc-client-api.js.map +1 -0
- package/dist/modes/rpc/rpc-client-process.d.ts +19 -0
- package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client-process.js +79 -0
- package/dist/modes/rpc/rpc-client-process.js.map +1 -0
- package/dist/modes/rpc/rpc-client-waits.d.ts +8 -0
- package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client-waits.js +33 -0
- package/dist/modes/rpc/rpc-client-waits.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +48 -124
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +295 -249
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts +5 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +79 -3
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-event-buffer.d.ts +11 -0
- package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-event-buffer.js +30 -0
- package/dist/modes/rpc/rpc-event-buffer.js.map +1 -0
- package/dist/modes/rpc/rpc-extension-ui.d.ts +7 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.js +54 -32
- package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.d.ts +16 -0
- package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-input-scheduler.js +69 -0
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -0
- package/dist/modes/rpc/rpc-input.d.ts +2 -1
- package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input.js +4 -9
- package/dist/modes/rpc/rpc-input.js.map +1 -1
- package/dist/modes/rpc/rpc-keybindings-reload.d.ts +27 -0
- package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-keybindings-reload.js +69 -0
- package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +63 -8
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-output-buffer.d.ts +10 -0
- package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-output-buffer.js +70 -0
- package/dist/modes/rpc/rpc-output-buffer.js.map +1 -0
- package/dist/modes/rpc/rpc-session-binding.d.ts +16 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +16 -3
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +109 -0
- 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.d.ts +2 -0
- package/dist/package-manager-cli-parser.d.ts.map +1 -1
- package/dist/package-manager-cli-parser.js +24 -5
- package/dist/package-manager-cli-parser.js.map +1 -1
- package/dist/package-manager-cli.d.ts +7 -0
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +65 -1
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/shell.d.ts +1 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +46 -0
- package/dist/utils/shell.js.map +1 -1
- package/docs/changelog.mdx +11 -0
- package/docs/compaction.md +53 -17
- package/docs/custom-provider.md +24 -5
- package/docs/development.md +9 -7
- package/docs/docs.json +1 -0
- package/docs/extensions.md +30 -16
- package/docs/intercom.md +489 -0
- package/docs/json.md +1 -1
- package/docs/keybindings.md +1 -1
- package/docs/packages.md +1 -0
- package/docs/quickstart.md +11 -5
- package/docs/rpc.md +9 -7
- package/docs/sdk.md +6 -0
- package/docs/session-format.md +7 -6
- package/docs/sessions.md +4 -2
- package/docs/settings.md +2 -2
- package/docs/subagents.md +7 -2
- package/docs/tui.md +61 -2
- package/docs/usage.md +6 -5
- package/docs/workflows.md +2572 -1379
- package/examples/extensions/handoff.ts +1 -1
- package/examples/extensions/qna.ts +1 -1
- package/examples/extensions/summarize.ts +1 -1
- package/npm-shrinkwrap.json +225 -76
- package/package.json +7 -6
- package/dist/builtin/workflows/src/durable/file-backend.ts +0 -439
- package/dist/builtin/workflows/src/durable/file-lock.ts +0 -153
- package/dist/builtin/workflows/src/durable/file-state.ts +0 -104
- package/dist/builtin/workflows/src/extension/runtime-direct.ts +0 -96
- package/dist/builtin/workflows/src/extension/workflow-tool-helpers.ts +0 -66
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-output.ts +0 -91
- package/dist/builtin/workflows/src/runs/foreground/executor-direct.ts +0 -282
- package/dist/builtin/workflows/src/shared/resumable-workflow-notices.ts +0 -43
- package/dist/builtin/workflows/src/tui/session-confirm.ts +0 -299
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
type PromptSection = readonly [tag: string, content: string];
|
|
2
|
+
|
|
3
|
+
function taggedPrompt(sections: readonly PromptSection[]): string {
|
|
4
|
+
return sections
|
|
5
|
+
.map(([tag, content]) => `<${tag}>\n${content.trim()}\n</${tag}>`)
|
|
6
|
+
.join("\n\n");
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function renderIterationPrompt(options: {
|
|
10
|
+
readonly task: string;
|
|
11
|
+
readonly iteration: number;
|
|
12
|
+
readonly maxIterations: number;
|
|
13
|
+
readonly ledgerPath: string;
|
|
14
|
+
}): string {
|
|
15
|
+
return taggedPrompt([
|
|
16
|
+
["role", "You are the active worker in a bounded evidence-driven completion loop."],
|
|
17
|
+
["objective", options.task],
|
|
18
|
+
["iteration", `${options.iteration} of ${options.maxIterations}`],
|
|
19
|
+
["progress_ledger", `Read ${options.ledgerPath} first. It is the durable source of truth for attempted work, findings, failures, validation evidence, and remaining work.`],
|
|
20
|
+
["requirements", [
|
|
21
|
+
"Select the highest-value unfinished item supported by the ledger and current state.",
|
|
22
|
+
"Perform concrete work; do not merely restate the objective or ledger.",
|
|
23
|
+
"Avoid repeating failed approaches unless new evidence justifies the retry.",
|
|
24
|
+
"Run the strongest practical validation for the work completed in this iteration.",
|
|
25
|
+
"Report exactly what changed, evidence gathered, failures encountered, and what remains.",
|
|
26
|
+
].join("\n")],
|
|
27
|
+
["success_criteria", "This iteration makes measurable progress or supplies decisive evidence that the explicit objective is complete."],
|
|
28
|
+
["output_format", "Markdown with Work performed, Changes, Validation evidence, New findings, Failures, and Remaining work."],
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function renderEvaluationPrompt(options: {
|
|
33
|
+
readonly task: string;
|
|
34
|
+
readonly iteration: number;
|
|
35
|
+
readonly ledgerPath: string;
|
|
36
|
+
readonly iterationPath: string;
|
|
37
|
+
}): string {
|
|
38
|
+
return taggedPrompt([
|
|
39
|
+
["role", "You are an independent completion evaluator. Judge evidence, not the worker's confidence."],
|
|
40
|
+
["objective", options.task],
|
|
41
|
+
["artifacts", [
|
|
42
|
+
`Durable progress ledger: ${options.ledgerPath}`,
|
|
43
|
+
`Current iteration artifact: ${options.iterationPath}`,
|
|
44
|
+
"Read both files before deciding.",
|
|
45
|
+
].join("\n")],
|
|
46
|
+
["stop_condition", [
|
|
47
|
+
"Set done=true only when the objective is fully satisfied and current validation evidence proves it.",
|
|
48
|
+
"Set done=false when any required behavior, validation, cleanup, or evidence remains missing or uncertain.",
|
|
49
|
+
"Do not invent requirements beyond the objective.",
|
|
50
|
+
].join("\n")],
|
|
51
|
+
["evidence_rules", [
|
|
52
|
+
"List concrete validation evidence supporting the decision.",
|
|
53
|
+
"Record new findings and failures distinctly.",
|
|
54
|
+
"When incomplete, state actionable remaining work for the next iteration.",
|
|
55
|
+
"Return the required structured decision.",
|
|
56
|
+
].join("\n")],
|
|
57
|
+
["success_criteria", `The iteration ${options.iteration} decision is reproducible from cited artifact evidence.`],
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function renderCompletionPrompt(options: {
|
|
62
|
+
readonly task: string;
|
|
63
|
+
readonly ledgerPath: string;
|
|
64
|
+
readonly iterationPath: string;
|
|
65
|
+
}): string {
|
|
66
|
+
return taggedPrompt([
|
|
67
|
+
["role", "You are the final completion reporter."],
|
|
68
|
+
["objective", options.task],
|
|
69
|
+
["artifacts", `Read the complete ledger at ${options.ledgerPath} and final iteration artifact at ${options.iterationPath}.`],
|
|
70
|
+
["requirements", [
|
|
71
|
+
"Summarize the delivered outcome without adding unsupported claims.",
|
|
72
|
+
"Cite the validation evidence that satisfied the stop condition.",
|
|
73
|
+
"List artifact paths needed to audit the work.",
|
|
74
|
+
"Report residual risks even when no work remains.",
|
|
75
|
+
].join("\n")],
|
|
76
|
+
["success_criteria", "The final report is concise, evidence-backed, and independently auditable from the ledger."],
|
|
77
|
+
["output_format", "Markdown with Outcome, Evidence, Artifacts, Residual risks, and Remaining work (None)."],
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { Type } from "typebox";
|
|
4
|
+
import type {
|
|
5
|
+
WorkflowRunContext,
|
|
6
|
+
WorkflowSerializableObject,
|
|
7
|
+
WorkflowSerializableValue,
|
|
8
|
+
WorkflowTaskResult,
|
|
9
|
+
} from "../src/shared/types.js";
|
|
10
|
+
import {
|
|
11
|
+
renderCompletionPrompt,
|
|
12
|
+
renderEvaluationPrompt,
|
|
13
|
+
renderIterationPrompt,
|
|
14
|
+
} from "./loop-until-done-prompts.js";
|
|
15
|
+
import { stableArtifactRoot } from "./pattern-artifact-root.js";
|
|
16
|
+
|
|
17
|
+
const evaluationSchema = Type.Object({
|
|
18
|
+
done: Type.Boolean(),
|
|
19
|
+
summary: Type.String(),
|
|
20
|
+
new_findings: Type.Array(Type.String()),
|
|
21
|
+
failures: Type.Array(Type.String()),
|
|
22
|
+
validation_evidence: Type.Array(Type.String()),
|
|
23
|
+
remaining_work: Type.String(),
|
|
24
|
+
}, { additionalProperties: false });
|
|
25
|
+
|
|
26
|
+
type LoopInputs = {
|
|
27
|
+
readonly prompt: string;
|
|
28
|
+
readonly max_iterations: number;
|
|
29
|
+
} & Record<string, WorkflowSerializableValue>;
|
|
30
|
+
|
|
31
|
+
type Evaluation = {
|
|
32
|
+
readonly done: boolean;
|
|
33
|
+
readonly summary: string;
|
|
34
|
+
readonly newFindings: readonly string[];
|
|
35
|
+
readonly failures: readonly string[];
|
|
36
|
+
readonly validationEvidence: readonly string[];
|
|
37
|
+
readonly remainingWork: string;
|
|
38
|
+
};
|
|
39
|
+
type LedgerEntry = {
|
|
40
|
+
readonly iteration: number;
|
|
41
|
+
readonly artifact_path: string;
|
|
42
|
+
readonly evaluation_artifact_path: string;
|
|
43
|
+
readonly summary: string;
|
|
44
|
+
readonly findings: readonly string[];
|
|
45
|
+
readonly failures: readonly string[];
|
|
46
|
+
readonly validation_evidence: readonly string[];
|
|
47
|
+
readonly done: boolean;
|
|
48
|
+
readonly remaining_work: string;
|
|
49
|
+
};
|
|
50
|
+
function serializableObject(
|
|
51
|
+
value: WorkflowSerializableValue | undefined,
|
|
52
|
+
): WorkflowSerializableObject | undefined {
|
|
53
|
+
if (value === null || Array.isArray(value) || typeof value !== "object") return undefined;
|
|
54
|
+
return value as WorkflowSerializableObject;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function stringArray(value: WorkflowSerializableValue | undefined): readonly string[] | undefined {
|
|
58
|
+
return Array.isArray(value) && value.every((item) => typeof item === "string")
|
|
59
|
+
? value
|
|
60
|
+
: undefined;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function evaluationFrom(result: WorkflowTaskResult): Evaluation {
|
|
64
|
+
const value = serializableObject(result.structured);
|
|
65
|
+
if (value === undefined) {
|
|
66
|
+
throw new Error(`loop-until-done: evaluator ${result.stageName} did not return a structured decision`);
|
|
67
|
+
}
|
|
68
|
+
const done = value.done;
|
|
69
|
+
const summary = value.summary;
|
|
70
|
+
const newFindings = stringArray(value.new_findings);
|
|
71
|
+
const failures = stringArray(value.failures);
|
|
72
|
+
const validationEvidence = stringArray(value.validation_evidence);
|
|
73
|
+
const remainingWork = value.remaining_work;
|
|
74
|
+
if (typeof done !== "boolean" || typeof summary !== "string" ||
|
|
75
|
+
newFindings === undefined || failures === undefined || validationEvidence === undefined ||
|
|
76
|
+
typeof remainingWork !== "string") {
|
|
77
|
+
throw new Error(`loop-until-done: evaluator ${result.stageName} returned an invalid decision`);
|
|
78
|
+
}
|
|
79
|
+
return { done, summary, newFindings, failures, validationEvidence, remainingWork };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
async function writeLedger(path: string, task: string, maxIterations: number, status: string,
|
|
83
|
+
entries: readonly LedgerEntry[]): Promise<void> {
|
|
84
|
+
await writeFile(path, `${JSON.stringify({
|
|
85
|
+
task,
|
|
86
|
+
max_iterations: maxIterations,
|
|
87
|
+
status,
|
|
88
|
+
iterations_completed: entries.length,
|
|
89
|
+
entries,
|
|
90
|
+
}, null, 2)}\n`);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export async function runLoopUntilDone(ctx: WorkflowRunContext<LoopInputs>) {
|
|
94
|
+
const artifactDir = await stableArtifactRoot(ctx, "loop-until-done");
|
|
95
|
+
const iterationsDir = join(artifactDir, "iterations");
|
|
96
|
+
const evaluationsDir = join(artifactDir, "evaluations");
|
|
97
|
+
await mkdir(iterationsDir, { recursive: true });
|
|
98
|
+
await mkdir(evaluationsDir, { recursive: true });
|
|
99
|
+
const ledgerPath = join(artifactDir, "progress-ledger.json");
|
|
100
|
+
const entries: LedgerEntry[] = [];
|
|
101
|
+
const iterationArtifactPaths: string[] = [];
|
|
102
|
+
const evaluationArtifactPaths: string[] = [];
|
|
103
|
+
await writeLedger(ledgerPath, ctx.inputs.prompt, ctx.inputs.max_iterations, "active", entries);
|
|
104
|
+
|
|
105
|
+
for (let iteration = 1; iteration <= ctx.inputs.max_iterations; iteration += 1) {
|
|
106
|
+
const iterationPath = join(iterationsDir, `iteration-${iteration}.md`);
|
|
107
|
+
const evaluationPath = join(evaluationsDir, `evaluation-${iteration}.json`);
|
|
108
|
+
iterationArtifactPaths.push(iterationPath);
|
|
109
|
+
evaluationArtifactPaths.push(evaluationPath);
|
|
110
|
+
await ctx.task(`iteration-${iteration}`, {
|
|
111
|
+
prompt: renderIterationPrompt({
|
|
112
|
+
task: ctx.inputs.prompt,
|
|
113
|
+
iteration,
|
|
114
|
+
maxIterations: ctx.inputs.max_iterations,
|
|
115
|
+
ledgerPath,
|
|
116
|
+
}),
|
|
117
|
+
context: "fresh",
|
|
118
|
+
reads: [ledgerPath, ...(iteration > 1 ? [iterationArtifactPaths[iteration - 2]!] : [])],
|
|
119
|
+
output: iterationPath,
|
|
120
|
+
outputMode: "file-only",
|
|
121
|
+
});
|
|
122
|
+
const evaluator = await ctx.task(`evaluate-${iteration}`, {
|
|
123
|
+
prompt: renderEvaluationPrompt({
|
|
124
|
+
task: ctx.inputs.prompt,
|
|
125
|
+
iteration,
|
|
126
|
+
ledgerPath,
|
|
127
|
+
iterationPath,
|
|
128
|
+
}),
|
|
129
|
+
context: "fresh",
|
|
130
|
+
reads: [ledgerPath, iterationPath],
|
|
131
|
+
schema: evaluationSchema,
|
|
132
|
+
output: evaluationPath,
|
|
133
|
+
outputMode: "file-only",
|
|
134
|
+
});
|
|
135
|
+
const decision = evaluationFrom(evaluator);
|
|
136
|
+
entries.push({
|
|
137
|
+
iteration,
|
|
138
|
+
artifact_path: iterationPath,
|
|
139
|
+
evaluation_artifact_path: evaluationPath,
|
|
140
|
+
summary: decision.summary,
|
|
141
|
+
findings: decision.newFindings,
|
|
142
|
+
failures: decision.failures,
|
|
143
|
+
validation_evidence: decision.validationEvidence,
|
|
144
|
+
done: decision.done,
|
|
145
|
+
remaining_work: decision.remainingWork,
|
|
146
|
+
});
|
|
147
|
+
await writeLedger(
|
|
148
|
+
ledgerPath,
|
|
149
|
+
ctx.inputs.prompt,
|
|
150
|
+
ctx.inputs.max_iterations,
|
|
151
|
+
decision.done ? "complete" : "active",
|
|
152
|
+
entries,
|
|
153
|
+
);
|
|
154
|
+
if (decision.done) {
|
|
155
|
+
const resultPath = join(artifactDir, "result.md");
|
|
156
|
+
const final = await ctx.task("completion-summary", {
|
|
157
|
+
prompt: renderCompletionPrompt({ task: ctx.inputs.prompt, ledgerPath, iterationPath }),
|
|
158
|
+
context: "fresh",
|
|
159
|
+
reads: [ledgerPath, iterationPath],
|
|
160
|
+
output: resultPath,
|
|
161
|
+
});
|
|
162
|
+
return {
|
|
163
|
+
result: final.text,
|
|
164
|
+
status: "complete" as const,
|
|
165
|
+
iterations_completed: iteration,
|
|
166
|
+
ledger_path: ledgerPath,
|
|
167
|
+
iteration_artifact_paths: iterationArtifactPaths,
|
|
168
|
+
evaluation_artifact_paths: evaluationArtifactPaths,
|
|
169
|
+
result_path: resultPath,
|
|
170
|
+
remaining_work: "",
|
|
171
|
+
artifact_dir: artifactDir,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const last = entries.at(-1)!;
|
|
177
|
+
await writeLedger(ledgerPath, ctx.inputs.prompt, ctx.inputs.max_iterations, "failed", entries);
|
|
178
|
+
return {
|
|
179
|
+
result: `Iteration limit exhausted after ${ctx.inputs.max_iterations} iterations. Inspect ${ledgerPath}.`,
|
|
180
|
+
status: "failed" as const,
|
|
181
|
+
iterations_completed: ctx.inputs.max_iterations,
|
|
182
|
+
ledger_path: ledgerPath,
|
|
183
|
+
iteration_artifact_paths: iterationArtifactPaths,
|
|
184
|
+
evaluation_artifact_paths: evaluationArtifactPaths,
|
|
185
|
+
result_path: ledgerPath,
|
|
186
|
+
remaining_work: last.remaining_work,
|
|
187
|
+
artifact_dir: artifactDir,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WorkflowDefinition, WorkflowInputValues, WorkflowOutputValues } from "../src/authoring.js";
|
|
2
|
+
|
|
3
|
+
export type LoopUntilDoneWorkflowStatus = "complete" | "failed";
|
|
4
|
+
|
|
5
|
+
export type LoopUntilDoneWorkflowInputs = WorkflowInputValues & {
|
|
6
|
+
readonly prompt: string;
|
|
7
|
+
readonly max_iterations: number;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type LoopUntilDoneWorkflowRunInputs = WorkflowInputValues & {
|
|
11
|
+
readonly prompt: string;
|
|
12
|
+
readonly max_iterations?: number;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export type LoopUntilDoneWorkflowOutputs = WorkflowOutputValues & {
|
|
16
|
+
readonly result: string;
|
|
17
|
+
readonly status: LoopUntilDoneWorkflowStatus;
|
|
18
|
+
readonly iterations_completed: number;
|
|
19
|
+
readonly ledger_path: string;
|
|
20
|
+
readonly iteration_artifact_paths: string[];
|
|
21
|
+
readonly evaluation_artifact_paths: string[];
|
|
22
|
+
readonly result_path: string;
|
|
23
|
+
readonly remaining_work: string;
|
|
24
|
+
readonly artifact_dir: string;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type LoopUntilDoneWorkflowDefinition = WorkflowDefinition<
|
|
28
|
+
LoopUntilDoneWorkflowInputs,
|
|
29
|
+
LoopUntilDoneWorkflowOutputs,
|
|
30
|
+
LoopUntilDoneWorkflowRunInputs
|
|
31
|
+
>;
|
|
32
|
+
|
|
33
|
+
declare const workflow: LoopUntilDoneWorkflowDefinition;
|
|
34
|
+
export default workflow;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Type } from "typebox";
|
|
2
|
+
import { workflow } from "../src/authoring/workflow.js";
|
|
3
|
+
import { runLoopUntilDone } from "./loop-until-done-runner.js";
|
|
4
|
+
|
|
5
|
+
export default workflow({
|
|
6
|
+
name: "loop-until-done",
|
|
7
|
+
description: "Repeat evidence-producing work and independent completion evaluation against a durable ledger until done or an inspectable iteration-limit failure.",
|
|
8
|
+
inputs: {
|
|
9
|
+
prompt: Type.String({ description: "Objective whose explicit completion condition controls the bounded loop." }),
|
|
10
|
+
max_iterations: Type.Integer({
|
|
11
|
+
minimum: 1,
|
|
12
|
+
maximum: 20,
|
|
13
|
+
default: 5,
|
|
14
|
+
description: "Maximum work/evaluation iterations before returning an inspectable failed status (1-20).",
|
|
15
|
+
}),
|
|
16
|
+
},
|
|
17
|
+
outputs: {
|
|
18
|
+
result: Type.String({ description: "Evidence-backed completion report or deterministic exhaustion report." }),
|
|
19
|
+
status: Type.Union([Type.Literal("complete"), Type.Literal("failed")], {
|
|
20
|
+
description: "Complete when evidence satisfies the stop condition; failed when max_iterations is exhausted.",
|
|
21
|
+
}),
|
|
22
|
+
iterations_completed: Type.Integer({ description: "Number of completed work/evaluation iterations." }),
|
|
23
|
+
ledger_path: Type.String({ description: "Path to the durable JSON progress ledger." }),
|
|
24
|
+
iteration_artifact_paths: Type.Array(Type.String(), { description: "Ordered paths to per-iteration work artifacts." }),
|
|
25
|
+
evaluation_artifact_paths: Type.Array(Type.String(), { description: "Ordered paths to structured evaluation artifacts." }),
|
|
26
|
+
result_path: Type.String({ description: "Path to the final report, or the ledger on exhausted failure." }),
|
|
27
|
+
remaining_work: Type.String({ description: "Actionable remaining work; empty only after proven completion." }),
|
|
28
|
+
artifact_dir: Type.String({ description: "Run-specific directory containing loop artifacts." }),
|
|
29
|
+
},
|
|
30
|
+
run: async (ctx) => await runLoopUntilDone(ctx),
|
|
31
|
+
});
|
|
@@ -84,16 +84,21 @@ export async function runOpenClaudeDesignWorkflow(ctx: OpenClaudeDesignContext):
|
|
|
84
84
|
"anthropic/claude-opus-4-8:high",
|
|
85
85
|
"cursor/claude-fable-5:high",
|
|
86
86
|
"cursor/claude-opus-4-8-thinking:high",
|
|
87
|
+
"kimi-coding/k3:max",
|
|
88
|
+
"moonshotai/kimi-k3:max",
|
|
89
|
+
"moonshotai-cn/kimi-k3:max",
|
|
87
90
|
"openai-codex/gpt-5.6-sol:xhigh",
|
|
88
91
|
"github-copilot/gpt-5.6-sol:xhigh",
|
|
89
92
|
"openai/gpt-5.6-sol:xhigh",
|
|
90
93
|
"cursor/gpt-5.6-sol:xhigh",
|
|
91
|
-
"
|
|
94
|
+
"xai/grok-4.5:high",
|
|
95
|
+
"cursor/grok-4.5:high",
|
|
92
96
|
"zai/glm-5.2:xhigh",
|
|
93
97
|
"zai-coding-cn/glm-5.2:xhigh",
|
|
94
98
|
"cursor/glm-5.2",
|
|
95
99
|
"openrouter/anthropic/claude-fable-5:high",
|
|
96
100
|
"openrouter/anthropic/claude-opus-4-8:high",
|
|
101
|
+
"openrouter/moonshotai/kimi-k3:max",
|
|
97
102
|
"openrouter/openai/gpt-5.6-sol:xhigh",
|
|
98
103
|
"openrouter/sakana/fugu-ultra:high",
|
|
99
104
|
"openrouter/x-ai/grok-4.5",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { mkdir } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import type { WorkflowRunContext } from "../src/shared/types.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Durable per-run artifact root under `<cwd>/.atomic/workflows/runs`.
|
|
8
|
+
*
|
|
9
|
+
* The random directory name is generated exactly once through `ctx.tool`, so
|
|
10
|
+
* a durable resume replays the original path instead of computing a fresh
|
|
11
|
+
* per-process root. Replayed stages therefore keep reading artifacts written
|
|
12
|
+
* before the interruption. The `mkdir` stays outside the durable checkpoint
|
|
13
|
+
* and is idempotent, so both fresh runs and resumes converge on an existing
|
|
14
|
+
* directory.
|
|
15
|
+
*/
|
|
16
|
+
export async function stableArtifactRoot(
|
|
17
|
+
ctx: Pick<WorkflowRunContext, "cwd" | "tool">,
|
|
18
|
+
workflowName: string,
|
|
19
|
+
): Promise<string> {
|
|
20
|
+
const cwd = ctx.cwd ?? process.cwd();
|
|
21
|
+
const artifactDir = await ctx.tool(
|
|
22
|
+
"artifact-root",
|
|
23
|
+
{ workflow: workflowName },
|
|
24
|
+
async () => join(cwd, ".atomic", "workflows", "runs", `${workflowName}-${randomUUID()}`),
|
|
25
|
+
);
|
|
26
|
+
await mkdir(artifactDir, { recursive: true });
|
|
27
|
+
return artifactDir;
|
|
28
|
+
}
|
|
@@ -20,6 +20,9 @@ export const promptEngineerModelConfig = {
|
|
|
20
20
|
"openai-codex/gpt-5.6-sol:xhigh",
|
|
21
21
|
"github-copilot/gpt-5.6-sol:xhigh",
|
|
22
22
|
"openai/gpt-5.6-sol:xhigh",
|
|
23
|
+
"kimi-coding/k3:max",
|
|
24
|
+
"moonshotai/kimi-k3:max",
|
|
25
|
+
"moonshotai-cn/kimi-k3:max",
|
|
23
26
|
"openai-codex/gpt-5.5:xhigh",
|
|
24
27
|
"github-copilot/gpt-5.5:xhigh",
|
|
25
28
|
"openai/gpt-5.5:xhigh",
|
|
@@ -29,12 +32,14 @@ export const promptEngineerModelConfig = {
|
|
|
29
32
|
"cursor/gpt-5.6-sol:xhigh",
|
|
30
33
|
"cursor/gpt-5.5:high",
|
|
31
34
|
"cursor/claude-opus-4-8-thinking:high",
|
|
32
|
-
"
|
|
35
|
+
"xai/grok-4.5:high",
|
|
36
|
+
"cursor/grok-4.5:high",
|
|
33
37
|
"zai/glm-5.2:xhigh",
|
|
34
38
|
"zai-coding-cn/glm-5.2:xhigh",
|
|
35
39
|
"cursor/glm-5.2",
|
|
36
40
|
"openrouter/anthropic/claude-fable-5:high",
|
|
37
41
|
"openrouter/openai/gpt-5.6-sol:xhigh",
|
|
42
|
+
"openrouter/moonshotai/kimi-k3:max",
|
|
38
43
|
"openrouter/sakana/fugu-ultra:high",
|
|
39
44
|
"openrouter/openai/gpt-5.5:xhigh",
|
|
40
45
|
"openrouter/anthropic/claude-opus-4-8:high",
|
|
@@ -59,7 +64,8 @@ export const researchModelConfig = {
|
|
|
59
64
|
"cursor/gpt-5.5:medium",
|
|
60
65
|
"cursor/claude-fable-5:low",
|
|
61
66
|
"cursor/claude-opus-4-8-thinking:medium",
|
|
62
|
-
"
|
|
67
|
+
"xai/grok-4.5:high",
|
|
68
|
+
"cursor/grok-4.5:high",
|
|
63
69
|
"zai/glm-5.2:high",
|
|
64
70
|
"zai-coding-cn/glm-5.2:high",
|
|
65
71
|
"cursor/glm-5.2",
|
|
@@ -78,6 +84,9 @@ export const orchestratorModelConfig = {
|
|
|
78
84
|
fallbackModels: [
|
|
79
85
|
"github-copilot/gpt-5.6-sol:xhigh",
|
|
80
86
|
"openai/gpt-5.6-sol:xhigh",
|
|
87
|
+
"kimi-coding/k3:max",
|
|
88
|
+
"moonshotai/kimi-k3:max",
|
|
89
|
+
"moonshotai-cn/kimi-k3:max",
|
|
81
90
|
"anthropic/claude-fable-5:high",
|
|
82
91
|
"openai-codex/gpt-5.5:xhigh",
|
|
83
92
|
"github-copilot/gpt-5.5:xhigh",
|
|
@@ -88,11 +97,13 @@ export const orchestratorModelConfig = {
|
|
|
88
97
|
"cursor/claude-fable-5:high",
|
|
89
98
|
"cursor/gpt-5.5:high",
|
|
90
99
|
"cursor/claude-opus-4-8-thinking:high",
|
|
91
|
-
"
|
|
100
|
+
"xai/grok-4.5:high",
|
|
101
|
+
"cursor/grok-4.5:high",
|
|
92
102
|
"zai/glm-5.2:xhigh",
|
|
93
103
|
"zai-coding-cn/glm-5.2:xhigh",
|
|
94
104
|
"cursor/glm-5.2",
|
|
95
105
|
"openrouter/openai/gpt-5.6-sol:xhigh",
|
|
106
|
+
"openrouter/moonshotai/kimi-k3:max",
|
|
96
107
|
"openrouter/anthropic/claude-fable-5:high",
|
|
97
108
|
"openrouter/sakana/fugu-ultra:high",
|
|
98
109
|
"openrouter/openai/gpt-5.5:xhigh",
|
|
@@ -106,6 +117,9 @@ export const orchestratorModelConfig = {
|
|
|
106
117
|
export const reviewerAModelConfig = {
|
|
107
118
|
model: "anthropic/claude-fable-5:high",
|
|
108
119
|
fallbackModels: [
|
|
120
|
+
"kimi-coding/k3:max",
|
|
121
|
+
"moonshotai/kimi-k3:max",
|
|
122
|
+
"moonshotai-cn/kimi-k3:max",
|
|
109
123
|
"openai-codex/gpt-5.6-sol:xhigh",
|
|
110
124
|
"github-copilot/gpt-5.6-sol:xhigh",
|
|
111
125
|
"openai/gpt-5.6-sol:xhigh",
|
|
@@ -118,11 +132,13 @@ export const reviewerAModelConfig = {
|
|
|
118
132
|
"cursor/gpt-5.6-sol:xhigh",
|
|
119
133
|
"cursor/gpt-5.5:high",
|
|
120
134
|
"cursor/claude-opus-4-8-thinking:high",
|
|
121
|
-
"
|
|
135
|
+
"xai/grok-4.5:high",
|
|
136
|
+
"cursor/grok-4.5:high",
|
|
122
137
|
"zai/glm-5.2:xhigh",
|
|
123
138
|
"zai-coding-cn/glm-5.2:xhigh",
|
|
124
139
|
"cursor/glm-5.2",
|
|
125
140
|
"openrouter/anthropic/claude-fable-5:high",
|
|
141
|
+
"openrouter/moonshotai/kimi-k3:max",
|
|
126
142
|
"openrouter/openai/gpt-5.6-sol:xhigh",
|
|
127
143
|
"openrouter/sakana/fugu-ultra:high",
|
|
128
144
|
"openrouter/openai/gpt-5.5:xhigh",
|
|
@@ -139,6 +155,9 @@ export const reviewerBModelConfig = {
|
|
|
139
155
|
fallbackModels: [
|
|
140
156
|
"github-copilot/gpt-5.6-sol:xhigh",
|
|
141
157
|
"openai/gpt-5.6-sol:xhigh",
|
|
158
|
+
"kimi-coding/k3:max",
|
|
159
|
+
"moonshotai/kimi-k3:max",
|
|
160
|
+
"moonshotai-cn/kimi-k3:max",
|
|
142
161
|
"openai-codex/gpt-5.5:xhigh",
|
|
143
162
|
"github-copilot/gpt-5.5:xhigh",
|
|
144
163
|
"openai/gpt-5.5:xhigh",
|
|
@@ -149,11 +168,13 @@ export const reviewerBModelConfig = {
|
|
|
149
168
|
"cursor/gpt-5.5:high",
|
|
150
169
|
"cursor/claude-fable-5:high",
|
|
151
170
|
"cursor/claude-opus-4-8-thinking:high",
|
|
152
|
-
"
|
|
171
|
+
"xai/grok-4.5:high",
|
|
172
|
+
"cursor/grok-4.5:high",
|
|
153
173
|
"zai/glm-5.2:xhigh",
|
|
154
174
|
"zai-coding-cn/glm-5.2:xhigh",
|
|
155
175
|
"cursor/glm-5.2",
|
|
156
176
|
"openrouter/openai/gpt-5.6-sol:xhigh",
|
|
177
|
+
"openrouter/moonshotai/kimi-k3:max",
|
|
157
178
|
"openrouter/openai/gpt-5.5:xhigh",
|
|
158
179
|
"openrouter/anthropic/claude-fable-5:high",
|
|
159
180
|
"openrouter/sakana/fugu-ultra:high",
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
type PromptSection = readonly [tag: string, content: string];
|
|
2
|
+
|
|
3
|
+
function taggedPrompt(sections: readonly PromptSection[]): string {
|
|
4
|
+
return sections
|
|
5
|
+
.map(([tag, content]) => `<${tag}>\n${content.trim()}\n</${tag}>`)
|
|
6
|
+
.join("\n\n");
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function renderTournamentAttemptPrompt(task: string, attempt: number): string {
|
|
10
|
+
return taggedPrompt([
|
|
11
|
+
["role", "You are an independent solution author competing on solution quality."],
|
|
12
|
+
["objective", task],
|
|
13
|
+
["attempt", `Produce attempt ${attempt} without assuming another attempt's approach or conclusions.`],
|
|
14
|
+
["requirements", [
|
|
15
|
+
"Deliver a complete, self-contained solution rather than commentary about how to solve it.",
|
|
16
|
+
"Ground important claims in observable evidence, concrete reasoning, or executable checks.",
|
|
17
|
+
"State assumptions, limitations, and validation performed.",
|
|
18
|
+
"Optimize for correctness and usefulness, not length.",
|
|
19
|
+
].join("\n")],
|
|
20
|
+
["success_criteria", "A judge can evaluate this artifact directly against correctness, completeness, evidence, and task fit."],
|
|
21
|
+
["output_format", "Markdown with Solution, Evidence and validation, Assumptions, and Residual risks."],
|
|
22
|
+
]);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function renderPairwiseJudgePrompt(options: {
|
|
26
|
+
readonly task: string;
|
|
27
|
+
readonly firstLabel: string;
|
|
28
|
+
readonly secondLabel: string;
|
|
29
|
+
readonly firstPath: string;
|
|
30
|
+
readonly secondPath: string;
|
|
31
|
+
}): string {
|
|
32
|
+
return taggedPrompt([
|
|
33
|
+
["role", "You are an impartial pairwise judge. Evaluate only the supplied artifacts."],
|
|
34
|
+
["objective", options.task],
|
|
35
|
+
["candidates", [
|
|
36
|
+
`First presentation: ${options.firstLabel} at ${options.firstPath}`,
|
|
37
|
+
`Second presentation: ${options.secondLabel} at ${options.secondPath}`,
|
|
38
|
+
"Read both files completely before deciding.",
|
|
39
|
+
].join("\n")],
|
|
40
|
+
["rubric", [
|
|
41
|
+
"1. Correctness: satisfies the task without material errors.",
|
|
42
|
+
"2. Completeness: covers required outcomes and important edge cases.",
|
|
43
|
+
"3. Evidence: supports claims with concrete reasoning or checks.",
|
|
44
|
+
"4. Task fit: is directly usable and avoids irrelevant work.",
|
|
45
|
+
].join("\n")],
|
|
46
|
+
["decision_rules", [
|
|
47
|
+
"Choose exactly one presented candidate; do not merge or rewrite them.",
|
|
48
|
+
"Ignore presentation order, writing length, and stylistic polish unless they affect the rubric.",
|
|
49
|
+
"Cite observable evidence from both artifacts and give a concise rationale.",
|
|
50
|
+
"Return the required structured decision.",
|
|
51
|
+
].join("\n")],
|
|
52
|
+
["success_criteria", "The selected winner is traceable to short rubric-grounded evidence from both candidates."],
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function renderBracketReducerPrompt(options: {
|
|
57
|
+
readonly task: string;
|
|
58
|
+
readonly bracketPath: string;
|
|
59
|
+
readonly winnerLabel: string;
|
|
60
|
+
readonly winnerPath: string;
|
|
61
|
+
}): string {
|
|
62
|
+
return taggedPrompt([
|
|
63
|
+
["role", "You are the tournament bracket reducer and final reporter."],
|
|
64
|
+
["objective", options.task],
|
|
65
|
+
["artifacts", [
|
|
66
|
+
`Bracket ledger: ${options.bracketPath}`,
|
|
67
|
+
`Winning artifact (${options.winnerLabel}): ${options.winnerPath}`,
|
|
68
|
+
"Read both files before reporting.",
|
|
69
|
+
].join("\n")],
|
|
70
|
+
["requirements", [
|
|
71
|
+
"Return the winning solution faithfully; do not silently combine losing material into it.",
|
|
72
|
+
"Summarize why it advanced using the recorded pairwise rationale and evidence.",
|
|
73
|
+
"Call out bracket byes and any limitations recorded by judges.",
|
|
74
|
+
"Cite the bracket ledger and winning artifact paths.",
|
|
75
|
+
].join("\n")],
|
|
76
|
+
["success_criteria", "A reader can use the winning solution and audit every comparison that selected it."],
|
|
77
|
+
["output_format", "Markdown with Winner, Winning solution, Decision trail, Evidence, and Residual risks."],
|
|
78
|
+
]);
|
|
79
|
+
}
|