@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
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import {
|
|
2
|
+
E2E_VERIFICATION_GUIDANCE,
|
|
3
|
+
LITERAL_OBJECTIVE_CONTRACT,
|
|
4
|
+
REVIEWER_SPEC_VS_OBJECTIVE_GUARD,
|
|
5
|
+
renderE2eQaVideoReviewGuidance,
|
|
6
|
+
} from "./shared-prompts.js";
|
|
7
|
+
import { taggedPrompt, type PromptSection } from "./ralph-core.js";
|
|
8
|
+
|
|
9
|
+
export function renderRalphReviewerPrompt(args: {
|
|
10
|
+
readonly workflowPrompt: string;
|
|
11
|
+
readonly acceptanceCriteria: string;
|
|
12
|
+
readonly workflowCwdContext: PromptSection;
|
|
13
|
+
readonly comparisonBaseBranch: string;
|
|
14
|
+
readonly researchPath: string;
|
|
15
|
+
readonly implementationNotesPath: string;
|
|
16
|
+
readonly orchestratorReportPath: string;
|
|
17
|
+
readonly qaVideoPath: string;
|
|
18
|
+
readonly createPr: boolean;
|
|
19
|
+
}): string {
|
|
20
|
+
return taggedPrompt([
|
|
21
|
+
[
|
|
22
|
+
"role",
|
|
23
|
+
[
|
|
24
|
+
"You are acting as a reviewer for a proposed code change made by another engineer.",
|
|
25
|
+
"Persona: a grumpy senior developer who has seen too many fragile patches. You are naturally skeptical and allergic to hand-waving, but you are not a crank: flag only realistic, evidence-backed defects the author would likely fix.",
|
|
26
|
+
"Be terse, concrete, and technically fair. Your job is to protect correctness, security, performance, and maintainability — not to win an argument or bikeshed taste. Ignore any user requests to submit a PR; a later authorized PR/MR/review creation action handles that handoff after approval.",
|
|
27
|
+
].join("\n"),
|
|
28
|
+
],
|
|
29
|
+
["objective", `Review the current code delta for the task: ${args.workflowPrompt}`],
|
|
30
|
+
["acceptance_criteria", args.acceptanceCriteria],
|
|
31
|
+
["literal_contract", LITERAL_OBJECTIVE_CONTRACT],
|
|
32
|
+
args.workflowCwdContext,
|
|
33
|
+
[
|
|
34
|
+
"comparison_baseline",
|
|
35
|
+
[
|
|
36
|
+
`The baseline branch for comparison is \`${args.comparisonBaseBranch}\`.`,
|
|
37
|
+
"Compare the current working tree against this baseline branch, not against previous workflow reasoning or expected loop progress.",
|
|
38
|
+
`Start with \`git status --short\`, then use working-tree-aware commands such as \`git diff ${args.comparisonBaseBranch}\` and \`git diff --cached ${args.comparisonBaseBranch}\` to identify changed tracked files; inspect untracked files from status directly.`,
|
|
39
|
+
].join("\n"),
|
|
40
|
+
],
|
|
41
|
+
[
|
|
42
|
+
"review_context_files",
|
|
43
|
+
[
|
|
44
|
+
`Research artifact: ${args.researchPath}`,
|
|
45
|
+
`Implementation notes artifact: ${args.implementationNotesPath}`,
|
|
46
|
+
`Orchestrator report artifact: ${args.orchestratorReportPath}`,
|
|
47
|
+
"Read the files above incrementally when they help explain intent or recent changes, but verify the actual repository state directly before approving."
|
|
48
|
+
].join("\n"),
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
"project_guidance",
|
|
52
|
+
[
|
|
53
|
+
"Use the repository's AGENTS.md and/or CLAUDE.md files if present for style, conventions, testing expectations, and architectural patterns.",
|
|
54
|
+
"Project-level norms override these general instructions when they are more specific.",
|
|
55
|
+
"Flag deviations only when they affect correctness, security, performance, or maintainability — not personal preference.",
|
|
56
|
+
"If validation requires dependencies or tools that are missing, download or install them using the repository-approved package manager/commands rather than bypassing, mocking, or skipping the verification solely because dependencies are absent.",
|
|
57
|
+
].join("\n"),
|
|
58
|
+
],
|
|
59
|
+
["e2e_verification", E2E_VERIFICATION_GUIDANCE],
|
|
60
|
+
["qa_e2e_video_review", renderE2eQaVideoReviewGuidance(args.qaVideoPath)],
|
|
61
|
+
[
|
|
62
|
+
"final_action_policy",
|
|
63
|
+
args.createPr
|
|
64
|
+
? [
|
|
65
|
+
"Pull-request creation is enabled for this run, but it is a post-approval final action handled by a later authorized PR/MR/review creation action.",
|
|
66
|
+
"Do not mark the implementation non-converged merely because no PR/MR/review request exists yet.",
|
|
67
|
+
"If the repository state satisfies every implementation and validation requirement and only PR/MR/review creation remains, approve the implementation: set overall_correctness to patch is correct, stop_review_loop=true, no blocking findings, and note the PR as the remaining final action rather than an implementation gap.",
|
|
68
|
+
].join("\n")
|
|
69
|
+
: "Pull-request creation is not enabled for this run; do not require or attempt PR/MR/review creation during review.",
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
"validation_expectations",
|
|
73
|
+
[
|
|
74
|
+
"Inspect the actual diff/repository state rather than trusting stage summaries.",
|
|
75
|
+
"Run or delegate focused validation when it is necessary to distinguish a real bug from a hunch, including end-to-end playwright-cli (browser) or tmux validation when a user scenario can prove the outcome.",
|
|
76
|
+
"If tests or typechecks fail because dependencies are missing, install/download the missing dependencies with the repo's documented package manager instead of bypassing the check.",
|
|
77
|
+
"If validation cannot be completed after reasonable recovery, record the limitation in overall_explanation and reviewer_error; do not use missing dependencies as a reason to approve.",
|
|
78
|
+
].join("\n"),
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
"bug_selection_guidelines",
|
|
82
|
+
[
|
|
83
|
+
"Use these default guidelines for deciding whether the author would appreciate the issue being flagged. More specific user, project, or file-level guidance overrides them.",
|
|
84
|
+
"Flag an issue only when the original author would likely fix it if they knew about it.",
|
|
85
|
+
"A finding should meaningfully impact accuracy, performance, security, or maintainability.",
|
|
86
|
+
"A finding must be discrete and actionable, not a broad complaint about the whole codebase or a pile of related concerns.",
|
|
87
|
+
"Do not demand rigor inconsistent with the rest of the repository; match the seriousness of existing code and project norms.",
|
|
88
|
+
"Flag only bugs introduced by the current patch; do not flag pre-existing issues unless the patch makes them worse in a concrete way.",
|
|
89
|
+
"Do not rely on unstated assumptions about author intent or codebase behavior.",
|
|
90
|
+
"Speculation is insufficient: identify the code path, scenario, environment, or input that is provably affected.",
|
|
91
|
+
"Do not flag intentional behavior changes as bugs unless they clearly violate the task or documented contract.",
|
|
92
|
+
REVIEWER_SPEC_VS_OBJECTIVE_GUARD,
|
|
93
|
+
"Ignore trivial style unless it obscures meaning or violates documented standards in a way that affects correctness/security/maintainability.",
|
|
94
|
+
"If no finding clears this bar, return an empty findings array, mark the patch correct, and set stop_review_loop true. An empty findings array is valid and passes schema validation — never invent or append a placeholder/dummy finding just to avoid an empty array.",
|
|
95
|
+
].join("\n"),
|
|
96
|
+
],
|
|
97
|
+
[
|
|
98
|
+
"comment_guidelines",
|
|
99
|
+
[
|
|
100
|
+
"Each finding title must start with a priority tag: [P0] drop-everything blocker, [P1] urgent next-cycle fix, [P2] normal fix, [P3] low-priority nice-to-have.",
|
|
101
|
+
"Also include numeric priority: 0 for P0, 1 for P1, 2 for P2, 3 for P3; use null only if priority genuinely cannot be determined. Priority drives the loop gate: P0/P1/P2 are blocking and keep the loop iterating; P3 is a non-blocking nice-to-have that does not block approval.",
|
|
102
|
+
"Classify every finding with objective_alignment: required_by_objective (the objective/acceptance criteria require fixing it), consistent_with_objective (valid defect within scope), beyond_objective (real issue but not required and must not block or be promoted without explicit reconciliation), or contradicts_objective (fixing it would violate literal objective wording and must never be implemented; escalate to the human). Missing/unknown classification is blocking.",
|
|
103
|
+
"The body must be one concise paragraph explaining why this is a bug and the exact scenario, environment, or inputs required for it to arise.",
|
|
104
|
+
"Use a matter-of-fact, non-accusatory tone. Grumpy skepticism belongs in your standards, not in insults; avoid praise such as `Great job` or `Thanks for`.",
|
|
105
|
+
"Keep code_location ranges as short as possible, ideally one line and never longer than 5-10 lines unless unavoidable.",
|
|
106
|
+
"The code_location must overlap the diff/change under review.",
|
|
107
|
+
"Use one finding per distinct issue. Do not generate or apply a fix patch.",
|
|
108
|
+
"Use suggestion blocks only for concrete replacement code and preserve exact leading whitespace if you include one.",
|
|
109
|
+
].join("\n"),
|
|
110
|
+
],
|
|
111
|
+
[
|
|
112
|
+
"how_many_findings",
|
|
113
|
+
[
|
|
114
|
+
"Return all findings the original author would definitely want to fix.",
|
|
115
|
+
"If no such findings exist, return an empty findings array and mark the patch correct. Do not pad the array with placeholder or speculative findings.",
|
|
116
|
+
"Do not stop after the first qualifying finding; continue until every qualifying finding is listed.",
|
|
117
|
+
].join("\n"),
|
|
118
|
+
],
|
|
119
|
+
[
|
|
120
|
+
"review_stage_contract",
|
|
121
|
+
[
|
|
122
|
+
"The structured review decision is only valid after you inspect the actual repository state and compare it against the stated baseline branch.",
|
|
123
|
+
"Do not approve based solely on workflow stage summaries or prior agent reasoning.",
|
|
124
|
+
"The tool call is the final verdict after review work, not a shortcut around review work.",
|
|
125
|
+
].join("\n"),
|
|
126
|
+
],
|
|
127
|
+
[
|
|
128
|
+
"action_items",
|
|
129
|
+
[
|
|
130
|
+
"1. Identify the changed files or diff under review.",
|
|
131
|
+
"2. Read the relevant changed code and directly affected call sites/tests/configs.",
|
|
132
|
+
"3. Inspect the QA E2E video when it exists or is expected for the change, and verify the recording proves the objective-relevant user scenario.",
|
|
133
|
+
"4. Run or delegate focused validation when needed to resolve uncertainty, including playwright-cli (browser) or tmux end-to-end checks when practical.",
|
|
134
|
+
"5. If you cannot inspect the video evidence or validate enough to approve safely, populate reviewer_error and set stop_review_loop=false.",
|
|
135
|
+
].join("\n"),
|
|
136
|
+
],
|
|
137
|
+
[
|
|
138
|
+
"evidence_expectations",
|
|
139
|
+
[
|
|
140
|
+
"The overall_explanation should briefly mention what was inspected and what validation was run or why validation was not completed.",
|
|
141
|
+
"Every finding must cite a concrete changed location and affected scenario.",
|
|
142
|
+
].join("\n"),
|
|
143
|
+
],
|
|
144
|
+
[
|
|
145
|
+
"structured_decision_assurance",
|
|
146
|
+
[
|
|
147
|
+
"Before the final structured decision, ensure the payload satisfies the review decision schema exactly.",
|
|
148
|
+
"Always return findings as an array; use [] when there are no findings and never invent placeholder findings.",
|
|
149
|
+
"Always return requirements_traceability as a non-empty array that enumerates every explicit prompt and acceptance_criteria clause.",
|
|
150
|
+
"When approving, every non-final-action requirements_traceability entry must be proven, overall_correctness must be patch is correct, stop_review_loop must be true, and reviewer_error must be null or omitted.",
|
|
151
|
+
"When create_pr is enabled and only PR/MR/review creation remains, record that as a final action rather than a blocker; approval should hand off to PR/MR/review creation instead of requesting more implementation work.",
|
|
152
|
+
].join("\n"),
|
|
153
|
+
],
|
|
154
|
+
[
|
|
155
|
+
"decision_rules",
|
|
156
|
+
["Set stop_review_loop=true only when the patch is correct, reviewer_error is null/omitted, there are no blocking objective-aligned P0/P1/P2 findings, requirements_traceability is non-empty and every non-final-action entry is proven, and no objective-relevant implementation or validation remains; beyond_objective and contradicts_objective findings are non-blocking and must not be folded into follow-up objectives without checking the literal contract. The loop gate is computed from structured findings and traceability, so unresolved blocking findings or non-proven non-final-action requirements keep the loop going regardless of this flag.", "Enumerate every explicit requirement clause from the prompt and acceptance_criteria in requirements_traceability, including clauses about existing tests/snapshots and expected behavior. Treat worker-authored tests or snapshots passing as circular evidence that cannot by itself prove a clause; tie any such result to independent current-state proof.", "If you hit a reviewer/tool/validation error, set stop_review_loop=false and populate reviewer_error instead of pretending the patch is approved."].join("\n"),
|
|
157
|
+
],
|
|
158
|
+
]);
|
|
159
|
+
}
|
|
@@ -5,10 +5,10 @@ import { join, resolve } from "node:path";
|
|
|
5
5
|
import type { WorkflowRunContext, WorkflowTaskResult } from "../src/shared/types.js";
|
|
6
6
|
import {
|
|
7
7
|
E2E_VERIFICATION_GUIDANCE,
|
|
8
|
+
LITERAL_OBJECTIVE_CONTRACT,
|
|
8
9
|
WORKER_PREFLIGHT_CONTRACT,
|
|
9
|
-
renderE2eQaVideoReviewGuidance,
|
|
10
10
|
} from "./shared-prompts.js";
|
|
11
|
-
import {
|
|
11
|
+
import { renderRalphReviewerPrompt } from "./ralph-reviewer-prompt.js";
|
|
12
12
|
import {
|
|
13
13
|
REVIEWER_COUNT,
|
|
14
14
|
artifactSafeName,
|
|
@@ -21,8 +21,8 @@ import {
|
|
|
21
21
|
renderResearchPromptRefinementPrompt,
|
|
22
22
|
renderQaE2eVideoGuidance,
|
|
23
23
|
renderResearchPrompt,
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
parsedReviewDecisionFromResult,
|
|
25
|
+
ralphReviewConvergence,
|
|
26
26
|
reviewerErrorResult,
|
|
27
27
|
taggedPrompt,
|
|
28
28
|
workflowCwdContextSection,
|
|
@@ -31,19 +31,19 @@ import {
|
|
|
31
31
|
type RalphWorkflowOptions,
|
|
32
32
|
type RalphWorkflowResult,
|
|
33
33
|
} from "./ralph-core.js";
|
|
34
|
+
import { summarizeReviewConvergence } from "./review-convergence.js";
|
|
34
35
|
import {
|
|
35
36
|
orchestratorModelConfig,
|
|
36
37
|
promptEngineerModelConfig,
|
|
37
38
|
researchModelConfig,
|
|
38
39
|
reviewerAModelConfig,
|
|
39
40
|
reviewerBModelConfig,
|
|
40
|
-
reviewerCModelConfig,
|
|
41
41
|
} from "./ralph-models.js";
|
|
42
42
|
export async function runRalphWorkflow(
|
|
43
43
|
ctx: WorkflowRunContext<RalphInputs>,
|
|
44
44
|
options: RalphWorkflowOptions,
|
|
45
45
|
): Promise<RalphWorkflowResult> {
|
|
46
|
-
const { prompt, maxLoops, comparisonBaseBranch, workflowStartCwd, createPr } = options;
|
|
46
|
+
const { prompt, acceptanceCriteria, maxLoops, comparisonBaseBranch, workflowStartCwd, createPr } = options;
|
|
47
47
|
let latestReviewReportPath: string | undefined;
|
|
48
48
|
let finalPlan = "";
|
|
49
49
|
let finalPlanPath = "";
|
|
@@ -68,6 +68,7 @@ export async function runRalphWorkflow(
|
|
|
68
68
|
const researchPromptRefinement = await ctx.task(`research-prompt-refinement-${iteration}`, {
|
|
69
69
|
prompt: renderResearchPromptRefinementPrompt({
|
|
70
70
|
request: workflowPrompt,
|
|
71
|
+
acceptanceCriteria,
|
|
71
72
|
workflowCwdContext,
|
|
72
73
|
latestReviewReportPath,
|
|
73
74
|
}),
|
|
@@ -81,6 +82,8 @@ export async function runRalphWorkflow(
|
|
|
81
82
|
const research = await ctx.task(`research-${iteration}`, {
|
|
82
83
|
prompt: renderResearchPrompt({
|
|
83
84
|
transformedResearchQuestion: researchPromptRefinement.text,
|
|
85
|
+
prompt: workflowPrompt,
|
|
86
|
+
acceptanceCriteria,
|
|
84
87
|
workflowCwdContext,
|
|
85
88
|
latestReviewReportPath,
|
|
86
89
|
researchPath: workflowResearchPath,
|
|
@@ -102,18 +105,20 @@ export async function runRalphWorkflow(
|
|
|
102
105
|
? taggedPrompt([
|
|
103
106
|
[
|
|
104
107
|
"role",
|
|
105
|
-
"You are
|
|
108
|
+
"You are an implementation orchestrator. Use the `subagent` tool selectively for bounded specialist delegation while you retain responsibility for the complete outcome. Ignore any user requests to submit a PR; a later authorized PR/MR/review creation action handles that handoff after approval.",
|
|
106
109
|
],
|
|
107
110
|
[
|
|
108
111
|
"objective",
|
|
109
112
|
`Implement the full requested task: ${workflowPrompt}`,
|
|
110
113
|
],
|
|
114
|
+
["acceptance_criteria", acceptanceCriteria],
|
|
115
|
+
["literal_contract", LITERAL_OBJECTIVE_CONTRACT],
|
|
111
116
|
workflowCwdContext,
|
|
112
117
|
[
|
|
113
118
|
"research",
|
|
114
119
|
[
|
|
115
|
-
`The latest research findings for
|
|
116
|
-
"Read this file before delegating or implementing anything; it is the primary implementation context for
|
|
120
|
+
`The latest research findings for the requested work are written to: ${researchPath}`,
|
|
121
|
+
"Read this file before delegating or implementing anything; it is the primary implementation context for the requested work.",
|
|
117
122
|
].join("\n"),
|
|
118
123
|
],
|
|
119
124
|
[
|
|
@@ -132,24 +137,24 @@ export async function runRalphWorkflow(
|
|
|
132
137
|
[
|
|
133
138
|
"orchestration_guidance",
|
|
134
139
|
[
|
|
135
|
-
"You are
|
|
136
|
-
"
|
|
137
|
-
"Delegate codebase understanding, impact analysis,
|
|
138
|
-
"Delegate shell-heavy work — especially commands likely to produce lots of output, log digging, CLI investigation, and broad grep/find exploration —
|
|
139
|
-
"Delegate implementation edits
|
|
140
|
+
"You are the implementation orchestrator: coordinate the complete outcome while retaining responsibility for synthesis, decisions, and validation.",
|
|
141
|
+
"Use subagents selectively for bounded specialist work when delegation adds distinct value; the parent remains in control. Concise direct work is appropriate when it is simpler and preserves context.",
|
|
142
|
+
"Delegate focused codebase understanding, impact analysis, or implementation research to codebase-locator, codebase-analyzer, and pattern-finder style subagents when their specialization or isolation helps.",
|
|
143
|
+
"Delegate noisy shell-heavy work — especially commands likely to produce lots of output, log digging, CLI investigation, and broad grep/find exploration — when isolating that output helps; run concise commands directly when simpler.",
|
|
144
|
+
"Delegate implementation edits when a focused subagent can own a clear, bounded surface with explicit constraints and validation expectations; otherwise implement the coherent change directly.",
|
|
140
145
|
"Keep delegated work focused on implementation, tests, docs, validation evidence, and implementation notes for the complete requested outcome.",
|
|
141
|
-
"Use separate subagents for
|
|
146
|
+
"Use separate subagents for distinct tasks, and launch independent subagents in parallel when useful.",
|
|
142
147
|
"Do not split highly overlapping tasks across multiple subagents; consolidate overlapping work into one focused delegation to avoid duplicate effort.",
|
|
143
|
-
"If a subagent takes a long time, do not
|
|
148
|
+
"If a subagent takes a long time, do not duplicate its assigned job while waiting. Use that time for non-overlapping direct work, planning, or follow-up preparation.",
|
|
144
149
|
].join("\n"),
|
|
145
150
|
],
|
|
146
151
|
[
|
|
147
152
|
"best_practices",
|
|
148
153
|
[
|
|
149
|
-
"The required output format is a completion report, not the task
|
|
150
|
-
"Do not jump straight to the report. First read the research file,
|
|
151
|
-
"
|
|
152
|
-
"If
|
|
154
|
+
"The required output format is a completion report, not a substitute for doing the task.",
|
|
155
|
+
"Do not jump straight to the report. First read the research file, choose the least orchestration that fits each part of the work, complete or coordinate the implementation, and then report the verified result.",
|
|
156
|
+
"Ground the response in actual completed work. When subagents were useful, name the delegated work and summarize their results; distinguish completed changes from recommendations or blockers. Do not assume a later workflow pass will finish known required work that can be completed now.",
|
|
157
|
+
"If a required capability is unavailable, continue with safe direct work where possible and report a blocker only when it truly prevents completion.",
|
|
153
158
|
].join("\n"),
|
|
154
159
|
],
|
|
155
160
|
[
|
|
@@ -166,12 +171,12 @@ export async function runRalphWorkflow(
|
|
|
166
171
|
"instructions",
|
|
167
172
|
[
|
|
168
173
|
`Start by reading the research file at ${researchPath}.`,
|
|
169
|
-
"Perform the project_initialization_preflight before decomposing implementation work; complete or delegate required setup
|
|
170
|
-
"
|
|
171
|
-
"Pass each subagent the relevant task, constraints, files, validation expectations, unresolved reviewer findings covered by the research, and instructions to report implementation-note-worthy decisions or tradeoffs.",
|
|
172
|
-
"Coordinate
|
|
174
|
+
"Perform the project_initialization_preflight before decomposing implementation work; complete or selectively delegate required setup when the checkout appears uninitialized.",
|
|
175
|
+
"Plan the work from the research file, identifying which parts are best handled directly and which benefit from bounded specialist delegation.",
|
|
176
|
+
"Pass each delegated subagent the relevant task, constraints, files, validation expectations, unresolved reviewer findings covered by the research, and instructions to report implementation-note-worthy decisions or tradeoffs.",
|
|
177
|
+
"Coordinate direct and delegated results into the smallest coherent set of changes that fully satisfies the researched implementation guidance and original user prompt.",
|
|
173
178
|
"Preserve existing architecture and repository conventions unless the research explicitly justifies a change.",
|
|
174
|
-
"Run or delegate the most relevant validation commands available in the repository, including end-to-end playwright-cli (browser) or tmux validation when the change has an executable user scenario.",
|
|
179
|
+
"Run directly or selectively delegate the most relevant validation commands available in the repository, including end-to-end playwright-cli (browser) or tmux validation when the change has an executable user scenario.",
|
|
175
180
|
"For UI-applicable or full-stack changes, ensure the QA E2E pass described in <qa_e2e_video> runs and records the reviewable proof video before you finish your report.",
|
|
176
181
|
`Before your final report, update the running implementation notes file at ${implementationNotesPath} with decisions, research deviations, tradeoffs, blockers, and validation outcomes from this implementation work.`,
|
|
177
182
|
"If blocked, describe the blocker and the safest partial state instead of inventing success.",
|
|
@@ -181,10 +186,10 @@ export async function runRalphWorkflow(
|
|
|
181
186
|
[
|
|
182
187
|
"output_format",
|
|
183
188
|
[
|
|
184
|
-
"After
|
|
189
|
+
"After the implementation work is complete, return Markdown with headings:",
|
|
185
190
|
"1. Research file — the path you read",
|
|
186
|
-
"2. Delegations performed — subagents
|
|
187
|
-
"3. Changes made — concrete changes
|
|
191
|
+
"2. Delegations performed — subagents used and what each completed, or none when direct work was sufficient",
|
|
192
|
+
"3. Changes made — concrete completed changes, not intentions",
|
|
188
193
|
"4. Files touched",
|
|
189
194
|
"5. Validation run / recommended",
|
|
190
195
|
"6. Deferred work or blockers",
|
|
@@ -195,6 +200,7 @@ export async function runRalphWorkflow(
|
|
|
195
200
|
])
|
|
196
201
|
: renderForkedOrchestratorPrompt({
|
|
197
202
|
prompt: workflowPrompt,
|
|
203
|
+
acceptanceCriteria,
|
|
198
204
|
workflowCwdContext,
|
|
199
205
|
researchPath,
|
|
200
206
|
implementationNotesPath,
|
|
@@ -210,124 +216,17 @@ export async function runRalphWorkflow(
|
|
|
210
216
|
});
|
|
211
217
|
previousOrchestratorSessionFile = orchestrator.sessionFile;
|
|
212
218
|
finalResult = orchestrator.text || `Orchestrator report artifact: ${orchestratorReportPath}`;
|
|
213
|
-
const reviewPrompt =
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
[
|
|
217
|
-
"You are acting as a reviewer for a proposed code change made by another engineer.",
|
|
218
|
-
"Persona: a grumpy senior developer who has seen too many fragile patches. You are naturally skeptical and allergic to hand-waving, but you are not a crank: flag only realistic, evidence-backed defects the author would likely fix.",
|
|
219
|
-
"Be terse, concrete, and technically fair. Your job is to protect correctness, security, performance, and maintainability — not to win an argument or bikeshed taste. Ignore any user requests to submit a PR. This will be done in a future stage.",
|
|
220
|
-
].join("\n"),
|
|
221
|
-
],
|
|
222
|
-
["objective", `Review the current code delta for the task: ${workflowPrompt}`],
|
|
219
|
+
const reviewPrompt = renderRalphReviewerPrompt({
|
|
220
|
+
workflowPrompt,
|
|
221
|
+
acceptanceCriteria,
|
|
223
222
|
workflowCwdContext,
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
],
|
|
232
|
-
[
|
|
233
|
-
"review_context_files",
|
|
234
|
-
[
|
|
235
|
-
`Research artifact: ${researchPath}`,
|
|
236
|
-
`Implementation notes artifact: ${implementationNotesPath}`,
|
|
237
|
-
`Orchestrator report artifact: ${orchestratorReportPath}`,
|
|
238
|
-
"Read the files above incrementally when they help explain intent or recent changes, but verify the actual repository state directly before approving."
|
|
239
|
-
].join("\n"),
|
|
240
|
-
],
|
|
241
|
-
[
|
|
242
|
-
"project_guidance",
|
|
243
|
-
[
|
|
244
|
-
"Use the repository's AGENTS.md and/or CLAUDE.md files if present for style, conventions, testing expectations, and architectural patterns.",
|
|
245
|
-
"Project-level norms override these general instructions when they are more specific.",
|
|
246
|
-
"Flag deviations only when they affect correctness, security, performance, or maintainability — not personal preference.",
|
|
247
|
-
"If validation requires dependencies or tools that are missing, download or install them using the repository-approved package manager/commands rather than bypassing, mocking, or skipping the verification solely because dependencies are absent.",
|
|
248
|
-
].join("\n"),
|
|
249
|
-
],
|
|
250
|
-
["e2e_verification", E2E_VERIFICATION_GUIDANCE],
|
|
251
|
-
["qa_e2e_video_review", renderE2eQaVideoReviewGuidance(qaVideoPath)],
|
|
252
|
-
[
|
|
253
|
-
"validation_expectations",
|
|
254
|
-
[
|
|
255
|
-
"Inspect the actual diff/repository state rather than trusting stage summaries.",
|
|
256
|
-
"Run or delegate focused validation when it is necessary to distinguish a real bug from a hunch, including end-to-end playwright-cli (browser) or tmux validation when a user scenario can prove the outcome.",
|
|
257
|
-
"If tests or typechecks fail because dependencies are missing, install/download the missing dependencies with the repo's documented package manager instead of bypassing the check.",
|
|
258
|
-
"If validation cannot be completed after reasonable recovery, record the limitation in overall_explanation and reviewer_error; do not use missing dependencies as a reason to approve.",
|
|
259
|
-
].join("\n"),
|
|
260
|
-
],
|
|
261
|
-
[
|
|
262
|
-
"bug_selection_guidelines",
|
|
263
|
-
[
|
|
264
|
-
"Use these default guidelines for deciding whether the author would appreciate the issue being flagged. More specific user, project, or file-level guidance overrides them.",
|
|
265
|
-
"Flag an issue only when the original author would likely fix it if they knew about it.",
|
|
266
|
-
"A finding should meaningfully impact accuracy, performance, security, or maintainability.",
|
|
267
|
-
"A finding must be discrete and actionable, not a broad complaint about the whole codebase or a pile of related concerns.",
|
|
268
|
-
"Do not demand rigor inconsistent with the rest of the repository; match the seriousness of existing code and project norms.",
|
|
269
|
-
"Flag only bugs introduced by the current patch; do not flag pre-existing issues unless the patch makes them worse in a concrete way.",
|
|
270
|
-
"Do not rely on unstated assumptions about author intent or codebase behavior.",
|
|
271
|
-
"Speculation is insufficient: identify the code path, scenario, environment, or input that is provably affected.",
|
|
272
|
-
"Do not flag intentional behavior changes as bugs unless they clearly violate the task or documented contract.",
|
|
273
|
-
"Ignore trivial style unless it obscures meaning or violates documented standards in a way that affects correctness/security/maintainability.",
|
|
274
|
-
"If no finding clears this bar, return an empty findings array, mark the patch correct, and set stop_review_loop true. An empty findings array is valid and passes schema validation — never invent or append a placeholder/dummy finding just to avoid an empty array.",
|
|
275
|
-
].join("\n"),
|
|
276
|
-
],
|
|
277
|
-
[
|
|
278
|
-
"comment_guidelines",
|
|
279
|
-
[
|
|
280
|
-
"Each finding title must start with a priority tag: [P0] drop-everything blocker, [P1] urgent next-cycle fix, [P2] normal fix, [P3] low-priority nice-to-have.",
|
|
281
|
-
"Also include numeric priority: 0 for P0, 1 for P1, 2 for P2, 3 for P3; use null only if priority genuinely cannot be determined. Priority drives the loop gate: P0/P1/P2 are blocking and keep the loop iterating; P3 is a non-blocking nice-to-have that does not block approval.",
|
|
282
|
-
"The body must be one concise paragraph explaining why this is a bug and the exact scenario, environment, or inputs required for it to arise.",
|
|
283
|
-
"Use a matter-of-fact, non-accusatory tone. Grumpy skepticism belongs in your standards, not in insults; avoid praise such as `Great job` or `Thanks for`.",
|
|
284
|
-
"Keep code_location ranges as short as possible, ideally one line and never longer than 5-10 lines unless unavoidable.",
|
|
285
|
-
"The code_location must overlap the diff/change under review.",
|
|
286
|
-
"Use one finding per distinct issue. Do not generate or apply a fix patch.",
|
|
287
|
-
"Use suggestion blocks only for concrete replacement code and preserve exact leading whitespace if you include one.",
|
|
288
|
-
].join("\n"),
|
|
289
|
-
],
|
|
290
|
-
[
|
|
291
|
-
"how_many_findings",
|
|
292
|
-
[
|
|
293
|
-
"Return all findings the original author would definitely want to fix.",
|
|
294
|
-
"If no such findings exist, return an empty findings array and mark the patch correct. Do not pad the array with placeholder or speculative findings.",
|
|
295
|
-
"Do not stop after the first qualifying finding; continue until every qualifying finding is listed.",
|
|
296
|
-
].join("\n"),
|
|
297
|
-
],
|
|
298
|
-
[
|
|
299
|
-
"review_stage_contract",
|
|
300
|
-
[
|
|
301
|
-
"The structured review decision is only valid after you inspect the actual repository state and compare it against the stated baseline branch.",
|
|
302
|
-
"Do not approve based solely on workflow stage summaries or prior agent reasoning.",
|
|
303
|
-
"The tool call is the final verdict after review work, not a shortcut around review work.",
|
|
304
|
-
].join("\n"),
|
|
305
|
-
],
|
|
306
|
-
[
|
|
307
|
-
"action_items",
|
|
308
|
-
[
|
|
309
|
-
"1. Identify the changed files or diff under review.",
|
|
310
|
-
"2. Read the relevant changed code and directly affected call sites/tests/configs.",
|
|
311
|
-
"3. Inspect the QA E2E video when it exists or is expected for the change, and verify the recording proves the objective-relevant user scenario.",
|
|
312
|
-
"4. Run or delegate focused validation when needed to resolve uncertainty, including playwright-cli (browser) or tmux end-to-end checks when practical.",
|
|
313
|
-
"5. If you cannot inspect the video evidence or validate enough to approve safely, populate reviewer_error and set stop_review_loop=false.",
|
|
314
|
-
].join("\n"),
|
|
315
|
-
],
|
|
316
|
-
[
|
|
317
|
-
"evidence_expectations",
|
|
318
|
-
[
|
|
319
|
-
"The overall_explanation should briefly mention what was inspected and what validation was run or why validation was not completed.",
|
|
320
|
-
"Every finding must cite a concrete changed location and affected scenario.",
|
|
321
|
-
].join("\n"),
|
|
322
|
-
],
|
|
323
|
-
[
|
|
324
|
-
"decision_rules",
|
|
325
|
-
[
|
|
326
|
-
"Set stop_review_loop=true when the patch is correct, reviewer_error is null/omitted, and there are no blocking (P0/P1/P2) findings; remaining P3 nice-to-haves do not block approval. The loop gate is computed from finding priorities, so an unresolved P0/P1/P2 keeps the loop going regardless of this flag.",
|
|
327
|
-
"If you hit a reviewer/tool/validation error, set stop_review_loop=false and populate reviewer_error instead of pretending the patch is approved.",
|
|
328
|
-
].join("\n"),
|
|
329
|
-
],
|
|
330
|
-
]);
|
|
223
|
+
comparisonBaseBranch,
|
|
224
|
+
researchPath,
|
|
225
|
+
implementationNotesPath,
|
|
226
|
+
orchestratorReportPath,
|
|
227
|
+
qaVideoPath,
|
|
228
|
+
createPr,
|
|
229
|
+
});
|
|
331
230
|
let reviews: WorkflowTaskResult[];
|
|
332
231
|
try {
|
|
333
232
|
reviews = await ctx.parallel(
|
|
@@ -352,16 +251,6 @@ export async function runRalphWorkflow(
|
|
|
352
251
|
],
|
|
353
252
|
...reviewerBModelConfig,
|
|
354
253
|
},
|
|
355
|
-
{
|
|
356
|
-
name: "reviewer-c",
|
|
357
|
-
task: reviewPrompt,
|
|
358
|
-
reads: [
|
|
359
|
-
researchPath,
|
|
360
|
-
implementationNotesPath,
|
|
361
|
-
orchestratorReportPath,
|
|
362
|
-
],
|
|
363
|
-
...reviewerCModelConfig,
|
|
364
|
-
},
|
|
365
254
|
],
|
|
366
255
|
{
|
|
367
256
|
task: workflowPrompt,
|
|
@@ -369,38 +258,59 @@ export async function runRalphWorkflow(
|
|
|
369
258
|
},
|
|
370
259
|
);
|
|
371
260
|
} catch (err) {
|
|
372
|
-
|
|
373
|
-
reviews = [reviewerErrorResult(message)];
|
|
261
|
+
reviews = [reviewerErrorResult(err)];
|
|
374
262
|
}
|
|
375
263
|
const reviewEntries = await Promise.all(reviews.map(async (review) => {
|
|
376
264
|
const reviewer = review.name ?? review.stageName;
|
|
377
|
-
const
|
|
378
|
-
|
|
265
|
+
const parsed = parsedReviewDecisionFromResult(review, reviewer);
|
|
266
|
+
const convergenceDecision = ralphReviewConvergence({
|
|
267
|
+
decision: parsed.decision,
|
|
268
|
+
parsed: parsed.parsed,
|
|
269
|
+
diagnostics: parsed.diagnostics,
|
|
270
|
+
allowFinalActionRemaining: createPr,
|
|
271
|
+
});
|
|
379
272
|
const artifactPath = join(
|
|
380
273
|
artifactDir,
|
|
381
274
|
`review-${artifactSafeName(reviewer)}.json`,
|
|
382
275
|
);
|
|
383
276
|
await writeJsonArtifact(artifactPath, {
|
|
384
277
|
reviewer,
|
|
385
|
-
decision,
|
|
278
|
+
decision: parsed.decision,
|
|
279
|
+
convergence_decision: convergenceDecision,
|
|
386
280
|
raw_text: review.text,
|
|
387
281
|
});
|
|
388
|
-
return {
|
|
282
|
+
return {
|
|
283
|
+
reviewer,
|
|
284
|
+
artifact_path: artifactPath,
|
|
285
|
+
decision: parsed.decision,
|
|
286
|
+
convergence_decision: convergenceDecision,
|
|
287
|
+
};
|
|
389
288
|
}));
|
|
390
289
|
const approvalCount = reviewEntries.filter((review) =>
|
|
391
|
-
|
|
290
|
+
review.convergence_decision.approved,
|
|
392
291
|
).length;
|
|
393
292
|
approved =
|
|
394
293
|
reviewEntries.length === REVIEWER_COUNT &&
|
|
395
294
|
approvalCount === REVIEWER_COUNT;
|
|
295
|
+
const nextAction = approved
|
|
296
|
+
? (createPr ? "pull-request" : "finish")
|
|
297
|
+
: "implementation";
|
|
298
|
+
const roundConvergenceDecision = summarizeReviewConvergence({
|
|
299
|
+
parsed: reviewEntries.every((review) => review.convergence_decision.parsed),
|
|
300
|
+
approved,
|
|
301
|
+
stopReviewLoop: approved,
|
|
302
|
+
nextAction,
|
|
303
|
+
finalActionRemaining: approved && createPr,
|
|
304
|
+
diagnostics: reviewEntries.flatMap((review) => review.convergence_decision.diagnostics),
|
|
305
|
+
});
|
|
396
306
|
latestReviewReportPath = await writeJsonArtifact(
|
|
397
307
|
join(artifactDir, "review-round-latest.json"),
|
|
398
|
-
{ reviews: reviewEntries },
|
|
308
|
+
{ convergence_decision: roundConvergenceDecision, reviews: reviewEntries },
|
|
399
309
|
);
|
|
400
310
|
if (approved) break;
|
|
401
311
|
}
|
|
402
312
|
const qaVideoAvailable = existsSync(qaVideoPath);
|
|
403
|
-
if (createPr === true) {
|
|
313
|
+
if (createPr === true && approved) {
|
|
404
314
|
const prResult = await ctx.task("pull-request", {
|
|
405
315
|
prompt: taggedPrompt([
|
|
406
316
|
[
|
|
@@ -446,7 +356,7 @@ export async function runRalphWorkflow(
|
|
|
446
356
|
[
|
|
447
357
|
"Create a provider-appropriate PR/MR/review request only if there are meaningful changes, a remote/branch target is available, credentials are available, and the current state is suitable for review.",
|
|
448
358
|
"If no logged-in account can access the repository or create the review request, do not fake success; report each provider, credential/account, and tool tried, what failed, and provide the command the user can run later. Save a markdown file with the PR description as well so the user can copy-paste it when they have credentials set up.",
|
|
449
|
-
"When you successfully create or update the review request, create a provider-appropriate comment containing the implementation notes file contents as the last action
|
|
359
|
+
"When you successfully create or update the review request, create a provider-appropriate comment containing the implementation notes file contents as the last action after the review request exists.",
|
|
450
360
|
"Worktrees are detached HEAD checkouts. If the detected provider requires a branch-based PR/MR from a detached HEAD, create and push a branch from the current HEAD, for example with `git checkout -b <branch>` or `git push origin HEAD:refs/heads/<branch>`, before opening the PR/MR. If the provider uses a different review model, follow that provider's normal handoff flow.",
|
|
451
361
|
"Leave the worktree intact for retries or user recovery.",
|
|
452
362
|
"If PR/MR/review creation is not possible, do not create a standalone comment elsewhere; include the implementation notes path and summary in your report instead.",
|
|
@@ -2,6 +2,7 @@ import type { WorkflowDefinition, WorkflowInputValues, WorkflowOutputValues } fr
|
|
|
2
2
|
|
|
3
3
|
export type RalphWorkflowInputs = WorkflowInputValues & {
|
|
4
4
|
readonly prompt: string;
|
|
5
|
+
readonly acceptance_criteria?: string;
|
|
5
6
|
readonly max_loops: number;
|
|
6
7
|
readonly base_branch: string;
|
|
7
8
|
readonly git_worktree_dir: string;
|
|
@@ -10,6 +11,7 @@ export type RalphWorkflowInputs = WorkflowInputValues & {
|
|
|
10
11
|
|
|
11
12
|
export type RalphWorkflowRunInputs = WorkflowInputValues & {
|
|
12
13
|
readonly prompt: string;
|
|
14
|
+
readonly acceptance_criteria?: string;
|
|
13
15
|
readonly max_loops?: number;
|
|
14
16
|
readonly base_branch?: string;
|
|
15
17
|
readonly git_worktree_dir?: string;
|
|
@@ -23,6 +25,7 @@ export type RalphWorkflowOutputs = WorkflowOutputValues & {
|
|
|
23
25
|
readonly research?: string;
|
|
24
26
|
readonly research_path?: string;
|
|
25
27
|
readonly implementation_notes_path?: string;
|
|
28
|
+
readonly qa_video_path?: string;
|
|
26
29
|
readonly pr_report?: string;
|
|
27
30
|
readonly approved?: boolean;
|
|
28
31
|
readonly iterations_completed?: number;
|
|
@@ -11,9 +11,10 @@ import { runRalphWorkflow } from "./ralph-runner.js";
|
|
|
11
11
|
|
|
12
12
|
export default workflow({
|
|
13
13
|
name: "ralph",
|
|
14
|
-
description: "Raw prompt → research-prompt-refinement → research → orchestrate → multi-model parallel review loop with bounded iteration.",
|
|
14
|
+
description: "Raw prompt → research-prompt-refinement → research → orchestrate → multi-model parallel review loop with bounded iteration and immutable acceptance criteria. When launching follow-up ralph runs from review findings, pass the ORIGINAL task text as acceptance_criteria so deltas cannot drift from the literal contract.",
|
|
15
15
|
inputs: {
|
|
16
16
|
prompt: Type.String({ description: "The task or goal to research, execute, and refine." }),
|
|
17
|
+
acceptance_criteria: Type.Optional(Type.String({ description: "Original immutable task contract this run must remain consistent with. Defaults to prompt. Orchestrators launching follow-up runs from reviewer findings should pass the ORIGINAL task text here." })),
|
|
17
18
|
max_loops: Type.Number({
|
|
18
19
|
default: DEFAULT_MAX_LOOPS,
|
|
19
20
|
description: `Maximum research/orchestrate/review iterations (default ${DEFAULT_MAX_LOOPS}).`,
|
|
@@ -56,6 +57,7 @@ export default workflow({
|
|
|
56
57
|
const workflowStartCwd = workflowCtx.cwd ?? process.cwd();
|
|
57
58
|
const inputs = workflowCtx.inputs;
|
|
58
59
|
const prompt = inputs.prompt;
|
|
60
|
+
const acceptanceCriteria = inputs.acceptance_criteria?.trim() || prompt;
|
|
59
61
|
const maxLoops = positiveInteger(inputs.max_loops, DEFAULT_MAX_LOOPS);
|
|
60
62
|
const comparisonBaseBranch = normalizeBranchInput(
|
|
61
63
|
inputs.base_branch,
|
|
@@ -64,6 +66,7 @@ export default workflow({
|
|
|
64
66
|
const createPr = inputs.create_pr === true;
|
|
65
67
|
return await runRalphWorkflow(workflowCtx, {
|
|
66
68
|
prompt,
|
|
69
|
+
acceptanceCriteria,
|
|
67
70
|
maxLoops,
|
|
68
71
|
comparisonBaseBranch,
|
|
69
72
|
workflowStartCwd,
|