@stigmer/runner 3.15.0 → 3.15.2-dev.20260913223433
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/README.md +2 -4
- package/dist/.build-fingerprint +1 -1
- package/dist/__test-utils__/execution-record-fixture.d.ts +14 -0
- package/dist/__test-utils__/execution-record-fixture.js +4 -0
- package/dist/__test-utils__/execution-record-fixture.js.map +1 -1
- package/dist/__test-utils__/file-review-projection.d.ts +40 -0
- package/dist/__test-utils__/file-review-projection.js +136 -0
- package/dist/__test-utils__/file-review-projection.js.map +1 -0
- package/dist/__test-utils__/harness-contract/types.d.ts +23 -1
- package/dist/__test-utils__/harness-contract/types.js +15 -0
- package/dist/__test-utils__/harness-contract/types.js.map +1 -1
- package/dist/__test-utils__/hermetic-activity.d.ts +44 -12
- package/dist/__test-utils__/hermetic-activity.js +52 -14
- package/dist/__test-utils__/hermetic-activity.js.map +1 -1
- package/dist/__test-utils__/model-registry-fixture.d.ts +32 -7
- package/dist/__test-utils__/model-registry-fixture.js +31 -7
- package/dist/__test-utils__/model-registry-fixture.js.map +1 -1
- package/dist/__test-utils__/turn-input-fixture.d.ts +1 -1
- package/dist/__test-utils__/turn-input-fixture.js +1 -1
- package/dist/__test-utils__/turn-input-fixture.js.map +1 -1
- package/dist/activities/call-agent.js +2 -2
- package/dist/activities/call-agent.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.js +45 -3
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.d.ts +0 -9
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js +2 -41
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js.map +1 -1
- package/dist/activities/execute-cursor/adapter.d.ts +7 -5
- package/dist/activities/execute-cursor/adapter.js +7 -5
- package/dist/activities/execute-cursor/adapter.js.map +1 -1
- package/dist/activities/execute-cursor/approval-policy.d.ts +5 -2
- package/dist/activities/execute-cursor/approval-policy.js +5 -2
- package/dist/activities/execute-cursor/approval-policy.js.map +1 -1
- package/dist/activities/execute-cursor/approval-state.d.ts +16 -8
- package/dist/activities/execute-cursor/approval-state.js +6 -3
- package/dist/activities/execute-cursor/approval-state.js.map +1 -1
- package/dist/activities/execute-cursor/cas-observations.d.ts +14 -2
- package/dist/activities/execute-cursor/cas-observations.js +19 -2
- package/dist/activities/execute-cursor/cas-observations.js.map +1 -1
- package/dist/activities/execute-cursor/cursor-capabilities.d.ts +8 -4
- package/dist/activities/execute-cursor/cursor-capabilities.js +21 -4
- package/dist/activities/execute-cursor/cursor-capabilities.js.map +1 -1
- package/dist/activities/execute-cursor/message-translator.d.ts +12 -20
- package/dist/activities/execute-cursor/message-translator.js +19 -32
- package/dist/activities/execute-cursor/message-translator.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.d.ts +48 -58
- package/dist/activities/execute-cursor/prompt-builder.js +76 -95
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/turn-boundary.d.ts +27 -55
- package/dist/activities/execute-cursor/turn-boundary.js +30 -90
- package/dist/activities/execute-cursor/turn-boundary.js.map +1 -1
- package/dist/activities/execute-cursor/turn-settle.d.ts +11 -7
- package/dist/activities/execute-cursor/turn-settle.js +37 -49
- package/dist/activities/execute-cursor/turn-settle.js.map +1 -1
- package/dist/activities/execute-cursor/turn-setup.d.ts +16 -24
- package/dist/activities/execute-cursor/turn-setup.js +29 -59
- package/dist/activities/execute-cursor/turn-setup.js.map +1 -1
- package/dist/activities/execute-cursor/turn-stream.d.ts +3 -8
- package/dist/activities/execute-cursor/turn-stream.js +9 -22
- package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
- package/dist/activities/execute-cursor/turn.js +5 -1
- package/dist/activities/execute-cursor/turn.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.d.ts +93 -0
- package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.js +348 -0
- package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.js.map +1 -0
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.d.ts +170 -0
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js +225 -0
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js.map +1 -0
- package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.d.ts +24 -0
- package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js +41 -0
- package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js.map +1 -0
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.d.ts +54 -0
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js +72 -0
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js.map +1 -0
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.d.ts +187 -23
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js +238 -27
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js.map +1 -1
- package/dist/activities/execute-deep-agent/adapter.d.ts +41 -0
- package/dist/activities/execute-deep-agent/adapter.js +78 -0
- package/dist/activities/execute-deep-agent/adapter.js.map +1 -0
- package/dist/activities/execute-deep-agent/cas-capture-observer.d.ts +8 -0
- package/dist/activities/execute-deep-agent/cas-capture-observer.js +9 -0
- package/dist/activities/execute-deep-agent/cas-capture-observer.js.map +1 -1
- package/dist/activities/execute-deep-agent/deep-agent-capabilities.d.ts +31 -0
- package/dist/activities/execute-deep-agent/deep-agent-capabilities.js +40 -0
- package/dist/activities/execute-deep-agent/deep-agent-capabilities.js.map +1 -0
- package/dist/activities/execute-deep-agent/execution-state.d.ts +4 -11
- package/dist/activities/execute-deep-agent/execution-state.js +4 -12
- package/dist/activities/execute-deep-agent/execution-state.js.map +1 -1
- package/dist/activities/execute-deep-agent/hitl.d.ts +49 -47
- package/dist/activities/execute-deep-agent/hitl.js +77 -103
- package/dist/activities/execute-deep-agent/hitl.js.map +1 -1
- package/dist/activities/execute-deep-agent/prompt-builder.d.ts +51 -23
- package/dist/activities/execute-deep-agent/prompt-builder.js +115 -76
- package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
- package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +18 -32
- package/dist/activities/execute-deep-agent/status-builder-shared.js +10 -65
- package/dist/activities/execute-deep-agent/status-builder-shared.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming-side-effects.d.ts +10 -8
- package/dist/activities/execute-deep-agent/streaming-side-effects.js +12 -14
- package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-tracker.d.ts +36 -13
- package/dist/activities/execute-deep-agent/subagent-tracker.js +76 -39
- package/dist/activities/execute-deep-agent/subagent-tracker.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +25 -28
- package/dist/activities/execute-deep-agent/subagent-transformer.js +29 -82
- package/dist/activities/execute-deep-agent/subagent-transformer.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-wiring.d.ts +3 -2
- package/dist/activities/execute-deep-agent/subagent-wiring.js +2 -2
- package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -1
- package/dist/activities/execute-deep-agent/turn-settle.d.ts +42 -0
- package/dist/activities/execute-deep-agent/turn-settle.js +146 -0
- package/dist/activities/execute-deep-agent/turn-settle.js.map +1 -0
- package/dist/activities/execute-deep-agent/turn-setup.d.ts +212 -0
- package/dist/activities/execute-deep-agent/turn-setup.js +430 -0
- package/dist/activities/execute-deep-agent/turn-setup.js.map +1 -0
- package/dist/activities/execute-deep-agent/turn-stream.d.ts +97 -0
- package/dist/activities/execute-deep-agent/turn-stream.js +242 -0
- package/dist/activities/execute-deep-agent/turn-stream.js.map +1 -0
- package/dist/activities/execute-deep-agent/turn.d.ts +42 -0
- package/dist/activities/execute-deep-agent/turn.js +116 -0
- package/dist/activities/execute-deep-agent/turn.js.map +1 -0
- package/dist/activities/execute-deep-agent/v3-event-recorder.d.ts +6 -5
- package/dist/activities/execute-deep-agent/v3-event-recorder.js +6 -5
- package/dist/activities/execute-deep-agent/v3-event-recorder.js.map +1 -1
- package/dist/activities/execute-deep-agent/v3-events.d.ts +1 -1
- package/dist/activities/execute-deep-agent/v3-events.js +1 -1
- package/dist/activities/execute-deep-agent/v3-status-builder.d.ts +60 -17
- package/dist/activities/execute-deep-agent/v3-status-builder.js +72 -57
- package/dist/activities/execute-deep-agent/v3-status-builder.js.map +1 -1
- package/dist/harness/approval-decisions.d.ts +61 -0
- package/dist/harness/approval-decisions.js +102 -0
- package/dist/harness/approval-decisions.js.map +1 -0
- package/dist/harness/capabilities.d.ts +16 -5
- package/dist/harness/capabilities.js +9 -0
- package/dist/harness/capabilities.js.map +1 -1
- package/dist/harness/capture.d.ts +144 -0
- package/dist/harness/capture.js +219 -0
- package/dist/harness/capture.js.map +1 -0
- package/dist/harness/persist-chokepoint.d.ts +19 -4
- package/dist/harness/persist-chokepoint.js +17 -4
- package/dist/harness/persist-chokepoint.js.map +1 -1
- package/dist/harness/run-turn.js +115 -29
- package/dist/harness/run-turn.js.map +1 -1
- package/dist/harness/terminal-table.d.ts +40 -11
- package/dist/harness/terminal-table.js +58 -19
- package/dist/harness/terminal-table.js.map +1 -1
- package/dist/harness/turn-context.d.ts +141 -76
- package/dist/harness/turn-context.js +194 -99
- package/dist/harness/turn-context.js.map +1 -1
- package/dist/harness/types.d.ts +65 -12
- package/dist/harness/types.js +8 -2
- package/dist/harness/types.js.map +1 -1
- package/dist/harness-adapters.d.ts +12 -8
- package/dist/harness-adapters.js +17 -9
- package/dist/harness-adapters.js.map +1 -1
- package/dist/middleware/approval-gate.d.ts +1 -1
- package/dist/middleware/approval-gate.js +1 -1
- package/dist/middleware/approval-gate.js.map +1 -1
- package/dist/middleware/cost-advisory.d.ts +39 -0
- package/dist/middleware/{cost-cap.js → cost-advisory.js} +37 -55
- package/dist/middleware/cost-advisory.js.map +1 -0
- package/dist/middleware/index.d.ts +23 -12
- package/dist/middleware/index.js +26 -18
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/types.d.ts +3 -2
- package/dist/runner-manager.js +1 -5
- package/dist/runner-manager.js.map +1 -1
- package/dist/runner.js +1 -5
- package/dist/runner.js.map +1 -1
- package/dist/shared/attachment-resolver.d.ts +41 -18
- package/dist/shared/attachment-resolver.js +178 -46
- package/dist/shared/attachment-resolver.js.map +1 -1
- package/dist/shared/attachment-zip.d.ts +85 -0
- package/dist/shared/attachment-zip.js +185 -0
- package/dist/shared/attachment-zip.js.map +1 -0
- package/dist/shared/connect-backfill.js +5 -4
- package/dist/shared/connect-backfill.js.map +1 -1
- package/dist/shared/cost-guard.d.ts +3 -3
- package/dist/shared/cost-guard.js +3 -3
- package/dist/shared/execution-status-writer.d.ts +5 -5
- package/dist/shared/execution-status-writer.js +5 -5
- package/dist/shared/extract-structured-output.d.ts +8 -7
- package/dist/shared/extract-structured-output.js +8 -7
- package/dist/shared/extract-structured-output.js.map +1 -1
- package/dist/shared/filereview/cas-progress.d.ts +1 -18
- package/dist/shared/filereview/cas-progress.js +4 -0
- package/dist/shared/filereview/cas-progress.js.map +1 -1
- package/dist/shared/filereview/cas-touched.d.ts +56 -0
- package/dist/shared/filereview/cas-touched.js +63 -0
- package/dist/shared/filereview/cas-touched.js.map +1 -0
- package/dist/shared/filereview/index.d.ts +2 -1
- package/dist/shared/filereview/index.js +2 -1
- package/dist/shared/filereview/index.js.map +1 -1
- package/dist/shared/mcp-resolver.d.ts +4 -5
- package/dist/shared/mcp-resolver.js +4 -5
- package/dist/shared/mcp-resolver.js.map +1 -1
- package/dist/shared/persist-decision.d.ts +3 -4
- package/dist/shared/persist-decision.js +3 -4
- package/dist/shared/persist-decision.js.map +1 -1
- package/dist/shared/plan-mode-permissions.d.ts +2 -2
- package/dist/shared/plan-mode-permissions.js +2 -2
- package/dist/shared/plan-mode-prompt.d.ts +1 -1
- package/dist/shared/plan-mode-prompt.js +1 -1
- package/dist/shared/prompt-sections.d.ts +163 -0
- package/dist/shared/prompt-sections.js +164 -0
- package/dist/shared/prompt-sections.js.map +1 -0
- package/dist/shared/skill-resolver.d.ts +4 -2
- package/dist/shared/skill-resolver.js +4 -2
- package/dist/shared/skill-resolver.js.map +1 -1
- package/dist/shared/tool-rounds.d.ts +32 -0
- package/dist/shared/tool-rounds.js +43 -0
- package/dist/shared/tool-rounds.js.map +1 -1
- package/dist/shared/tool-row.d.ts +34 -0
- package/dist/shared/tool-row.js +52 -0
- package/dist/shared/tool-row.js.map +1 -1
- package/dist/shared/workspace/session-provision.d.ts +3 -3
- package/dist/shared/workspace/session-provision.js +3 -3
- package/dist/shared/workspace/stigmer-link.d.ts +3 -3
- package/dist/shared/workspace/stigmer-link.js +3 -3
- package/dist/shared/workspace/writeback-coordinator.d.ts +15 -22
- package/dist/shared/workspace/writeback-coordinator.js +16 -53
- package/dist/shared/workspace/writeback-coordinator.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.js +1 -1
- package/package.json +4 -4
- package/src/__test-utils__/__tests__/harness-contract-self-check.test.ts +1 -0
- package/src/__test-utils__/execution-record-fixture.ts +18 -2
- package/src/__test-utils__/file-review-projection.ts +156 -0
- package/src/__test-utils__/git-workspace-fixture.ts +58 -0
- package/src/__test-utils__/harness-boot-order-child.ts +7 -2
- package/src/__test-utils__/harness-contract/contract.ts +33 -20
- package/src/__test-utils__/harness-contract/recording-sink.ts +11 -1
- package/src/__test-utils__/harness-contract/runtime-contract.ts +328 -10
- package/src/__test-utils__/harness-contract/scripted-adapter.ts +38 -6
- package/src/__test-utils__/harness-contract/types.ts +27 -3
- package/src/__test-utils__/hermetic-activity.ts +52 -14
- package/src/__test-utils__/model-registry-fixture.ts +32 -7
- package/src/__test-utils__/module-specifiers.ts +24 -0
- package/src/__test-utils__/turn-input-fixture.ts +2 -2
- package/src/__tests__/harness-boot-order.test.ts +9 -2
- package/src/activities/call-agent.ts +2 -2
- package/src/activities/execute-cursor/__test-utils__/contract-subject.ts +47 -3
- package/src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts +2 -48
- package/src/activities/execute-cursor/__tests__/approval-decisions-agree.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +6 -1
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +52 -27
- package/src/activities/execute-cursor/__tests__/cas-observations.test.ts +25 -0
- package/src/activities/execute-cursor/__tests__/goldens/prompt.enhanced.everything.prompt.md +166 -0
- package/src/activities/execute-cursor/__tests__/goldens/prompt.enhanced.plan-mode.prompt.md +186 -0
- package/src/activities/execute-cursor/__tests__/goldens/prompt.hitl.recovery.prompt.md +191 -0
- package/src/activities/execute-cursor/__tests__/goldens/prompt.hitl.reinvocation.prompt.md +13 -0
- package/src/activities/execute-cursor/__tests__/goldens/prompt.resumed.prefixed.prompt.md +32 -0
- package/src/activities/execute-cursor/__tests__/goldens/prompt.resumed.raw.prompt.md +1 -0
- package/src/activities/execute-cursor/__tests__/hermetic/file-review-capture.test.ts +1 -2
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/sdk-error-at-create.status.json +4 -0
- package/src/activities/execute-cursor/__tests__/hermetic/harness-contract.test.ts +24 -4
- package/src/activities/execute-cursor/__tests__/hermetic/stream-self-stop-arms.test.ts +6 -5
- package/src/activities/execute-cursor/__tests__/hermetic/thrown-error-arms.test.ts +9 -0
- package/src/activities/execute-cursor/__tests__/hitl-resume-history.test.ts +11 -8
- package/src/activities/execute-cursor/__tests__/prompt-goldens.test.ts +229 -0
- package/src/activities/execute-cursor/__tests__/same-identity-reproposal.test.ts +3 -3
- package/src/activities/execute-cursor/__tests__/sequential-gate-resume.test.ts +2 -2
- package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +78 -234
- package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +1 -26
- package/src/activities/execute-cursor/adapter.ts +7 -5
- package/src/activities/execute-cursor/approval-policy.ts +5 -2
- package/src/activities/execute-cursor/approval-state.ts +16 -8
- package/src/activities/execute-cursor/cas-observations.ts +20 -2
- package/src/activities/execute-cursor/cursor-capabilities.ts +24 -5
- package/src/activities/execute-cursor/message-translator.ts +29 -41
- package/src/activities/execute-cursor/prompt-builder.ts +99 -157
- package/src/activities/execute-cursor/turn-boundary.ts +34 -140
- package/src/activities/execute-cursor/turn-settle.ts +37 -51
- package/src/activities/execute-cursor/turn-setup.ts +30 -70
- package/src/activities/execute-cursor/turn-stream.ts +8 -31
- package/src/activities/execute-cursor/turn.ts +5 -1
- package/src/activities/execute-deep-agent/__test-utils__/contract-subject.ts +391 -0
- package/src/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.ts +313 -0
- package/src/activities/execute-deep-agent/__test-utils__/hitl-script.ts +48 -0
- package/src/activities/execute-deep-agent/__test-utils__/scripted-model-module.ts +85 -0
- package/src/activities/execute-deep-agent/__test-utils__/scripted-model.ts +383 -36
- package/src/activities/execute-deep-agent/__tests__/adapter-graph-is-sdk-free.test.ts +76 -0
- package/src/activities/execute-deep-agent/__tests__/adapter-is-temporal-free.test.ts +47 -0
- package/src/activities/execute-deep-agent/__tests__/adapter.test.ts +80 -0
- package/src/activities/execute-deep-agent/__tests__/cas-capture-backend.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/execution-state-extended.test.ts +0 -2
- package/src/activities/execute-deep-agent/__tests__/execution-state.test.ts +0 -3
- package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.build-from-plan.prompt.md +172 -0
- package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.everything.prompt.md +167 -0
- package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.minimal.prompt.md +36 -0
- package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.plan-mode.prompt.md +178 -0
- package/src/activities/execute-deep-agent/__tests__/goldens/system-prompt.skills-below-threshold.prompt.md +158 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/file-review-capture.test.ts +210 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn1.status.json +74 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn2.status.json +104 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve.turn2.status.json +78 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/file-review-capture.status.json +138 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/gate.turn1.status.json +68 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn1.status.json +154 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn2.status.json +116 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.after-tool.status.json +69 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.mid-tool.status.json +67 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/plain-turn.status.json +47 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/platform-stop.status.json +68 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/recursion-limit.persisted.status.json +280 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/reject.turn2.status.json +77 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/resolution-error.status.json +18 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn2.status.json +99 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn3.status.json +109 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/skip.turn2.status.json +76 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/structured-output.text-fallback.status.json +51 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/structured-output.tier2.status.json +51 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/structured-output.tool-strategy.status.json +56 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sub-agent-delegation.status.json +90 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/tool-call.status.json +70 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/worker-shutdown.status.json +71 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/harness-contract.test.ts +144 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-approve-all-lease.test.ts +184 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-round-trips.test.ts +203 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-sequential-gates.test.ts +170 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/inline-artifact-across-gate.test.ts +175 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/pause-vs-shutdown.test.ts +206 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/plain-turn.test.ts +142 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/platform-stop.test.ts +126 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/recursion-limit.test.ts +139 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/resolution-error.test.ts +122 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/structured-output.test.ts +236 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/sub-agent-delegation.test.ts +161 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/tool-call.test.ts +157 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/workspace-lock-timeout.test.ts +152 -0
- package/src/activities/execute-deep-agent/__tests__/hitl.test.ts +50 -122
- package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +8 -6
- package/src/activities/execute-deep-agent/__tests__/plan-mode-path-normalization.test.ts +2 -2
- package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +35 -35
- package/src/activities/execute-deep-agent/__tests__/prompt-goldens.test.ts +247 -0
- package/src/activities/execute-deep-agent/__tests__/scripted-model.test.ts +329 -0
- package/src/activities/execute-deep-agent/__tests__/status-builder-shared.test.ts +1 -20
- package/src/activities/execute-deep-agent/__tests__/streaming-side-effects.test.ts +78 -0
- package/src/activities/execute-deep-agent/__tests__/subagent-gitignored-capture.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/subagent-plan-mode-permissions.test.ts +2 -2
- package/src/activities/execute-deep-agent/__tests__/subagent-tracker.test.ts +57 -31
- package/src/activities/execute-deep-agent/__tests__/subagent-transformer.test.ts +19 -79
- package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +15 -15
- package/src/activities/execute-deep-agent/__tests__/summarization-verification.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/turn-stream.test.ts +391 -0
- package/src/activities/execute-deep-agent/__tests__/v3-status-builder.test.ts +343 -38
- package/src/activities/execute-deep-agent/__tests__/vision-input.test.ts +5 -5
- package/src/activities/execute-deep-agent/adapter.ts +94 -0
- package/src/activities/execute-deep-agent/cas-capture-observer.ts +11 -0
- package/src/activities/execute-deep-agent/deep-agent-capabilities.ts +43 -0
- package/src/activities/execute-deep-agent/execution-state.ts +4 -13
- package/src/activities/execute-deep-agent/hitl.ts +100 -123
- package/src/activities/execute-deep-agent/prompt-builder.ts +141 -115
- package/src/activities/execute-deep-agent/status-builder-shared.ts +21 -84
- package/src/activities/execute-deep-agent/streaming-side-effects.ts +13 -19
- package/src/activities/execute-deep-agent/subagent-tracker.ts +77 -42
- package/src/activities/execute-deep-agent/subagent-transformer.ts +46 -105
- package/src/activities/execute-deep-agent/subagent-wiring.ts +5 -4
- package/src/activities/execute-deep-agent/turn-settle.ts +164 -0
- package/src/activities/execute-deep-agent/turn-setup.ts +541 -0
- package/src/activities/execute-deep-agent/turn-stream.ts +313 -0
- package/src/activities/execute-deep-agent/turn.ts +131 -0
- package/src/activities/execute-deep-agent/v3-event-recorder.ts +6 -5
- package/src/activities/execute-deep-agent/v3-events.ts +1 -1
- package/src/activities/execute-deep-agent/v3-status-builder.ts +84 -63
- package/src/harness/__tests__/approval-decisions.test.ts +116 -0
- package/src/harness/__tests__/capture.test.ts +268 -0
- package/src/harness/__tests__/mount-skills.test.ts +169 -0
- package/src/harness/__tests__/persist-chokepoint.test.ts +38 -2
- package/src/harness/__tests__/run-turn-deterministic.test.ts +94 -0
- package/src/harness/__tests__/run-turn.test.ts +39 -23
- package/src/harness/__tests__/turn-attachments-vision.test.ts +80 -0
- package/src/harness/__tests__/turn-context.test.ts +73 -26
- package/src/harness/approval-decisions.ts +104 -0
- package/src/harness/capabilities.ts +16 -5
- package/src/harness/capture.ts +301 -0
- package/src/harness/persist-chokepoint.ts +24 -4
- package/src/harness/run-turn.ts +120 -29
- package/src/harness/terminal-table.ts +61 -20
- package/src/harness/turn-context.ts +208 -111
- package/src/harness/types.ts +66 -12
- package/src/harness-adapters.ts +17 -9
- package/src/middleware/__tests__/approval-gate.test.ts +1 -1
- package/src/middleware/__tests__/cost-advisory.test.ts +113 -0
- package/src/middleware/approval-gate.ts +2 -2
- package/src/middleware/{cost-cap.ts → cost-advisory.ts} +40 -70
- package/src/middleware/index.ts +29 -29
- package/src/middleware/types.ts +3 -2
- package/src/runner-manager.ts +0 -8
- package/src/runner.ts +0 -8
- package/src/shared/__tests__/attachment-naming.test.ts +6 -19
- package/src/shared/__tests__/attachment-resolver.test.ts +158 -8
- package/src/shared/__tests__/attachment-zip.test.ts +236 -0
- package/src/shared/__tests__/bedrock-adapter.test.ts +1 -1
- package/src/shared/__tests__/blueprint-resolver.test.ts +43 -0
- package/src/shared/__tests__/cost-guard.test.ts +3 -3
- package/src/shared/__tests__/prompt-sections.test.ts +167 -0
- package/src/shared/__tests__/secret-leak-scan.test.ts +2 -2
- package/src/{activities/execute-deep-agent → shared}/__tests__/stamp-flowed-rows.test.ts +33 -10
- package/src/shared/__tests__/vertex-adapter.test.ts +1 -1
- package/src/shared/attachment-resolver.ts +218 -55
- package/src/shared/attachment-zip.ts +281 -0
- package/src/shared/connect-backfill.ts +9 -11
- package/src/shared/cost-guard.ts +3 -3
- package/src/shared/execution-status-writer.ts +5 -5
- package/src/shared/extract-structured-output.ts +8 -7
- package/src/shared/filereview/__tests__/capture.test.ts +86 -4
- package/src/shared/filereview/__tests__/cas-progress.test.ts +2 -1
- package/src/shared/filereview/cas-progress.ts +5 -19
- package/src/shared/filereview/cas-touched.ts +89 -0
- package/src/shared/filereview/index.ts +4 -2
- package/src/shared/mcp-resolver.ts +4 -5
- package/src/shared/persist-decision.ts +3 -4
- package/src/shared/plan-mode-permissions.ts +2 -2
- package/src/shared/plan-mode-prompt.ts +1 -1
- package/src/shared/prompt-sections.ts +256 -0
- package/src/shared/skill-resolver.ts +4 -2
- package/src/shared/tool-rounds.ts +48 -0
- package/src/shared/tool-row.ts +61 -0
- package/src/shared/workspace/__tests__/stigmer-link.test.ts +7 -22
- package/src/shared/workspace/__tests__/writeback-coordinator.test.ts +20 -61
- package/src/shared/workspace/session-provision.ts +3 -3
- package/src/shared/workspace/stigmer-link.ts +3 -3
- package/src/shared/workspace/writeback-coordinator.ts +16 -64
- package/src/tools/index.ts +1 -1
- package/dist/activities/execute-cursor/capture-flow.d.ts +0 -142
- package/dist/activities/execute-cursor/capture-flow.js +0 -285
- package/dist/activities/execute-cursor/capture-flow.js.map +0 -1
- package/dist/activities/execute-cursor/command-provenance.d.ts +0 -48
- package/dist/activities/execute-cursor/command-provenance.js +0 -38
- package/dist/activities/execute-cursor/command-provenance.js.map +0 -1
- package/dist/activities/execute-deep-agent/attachment-injector.d.ts +0 -134
- package/dist/activities/execute-deep-agent/attachment-injector.js +0 -386
- package/dist/activities/execute-deep-agent/attachment-injector.js.map +0 -1
- package/dist/activities/execute-deep-agent/command-provenance.d.ts +0 -61
- package/dist/activities/execute-deep-agent/command-provenance.js +0 -72
- package/dist/activities/execute-deep-agent/command-provenance.js.map +0 -1
- package/dist/activities/execute-deep-agent/environment.d.ts +0 -24
- package/dist/activities/execute-deep-agent/environment.js +0 -58
- package/dist/activities/execute-deep-agent/environment.js.map +0 -1
- package/dist/activities/execute-deep-agent/event-recorder.d.ts +0 -21
- package/dist/activities/execute-deep-agent/event-recorder.js +0 -67
- package/dist/activities/execute-deep-agent/event-recorder.js.map +0 -1
- package/dist/activities/execute-deep-agent/index.d.ts +0 -15
- package/dist/activities/execute-deep-agent/index.js +0 -918
- package/dist/activities/execute-deep-agent/index.js.map +0 -1
- package/dist/activities/execute-deep-agent/mcp-gate.d.ts +0 -28
- package/dist/activities/execute-deep-agent/mcp-gate.js +0 -22
- package/dist/activities/execute-deep-agent/mcp-gate.js.map +0 -1
- package/dist/activities/execute-deep-agent/post-stream.d.ts +0 -23
- package/dist/activities/execute-deep-agent/post-stream.js +0 -71
- package/dist/activities/execute-deep-agent/post-stream.js.map +0 -1
- package/dist/activities/execute-deep-agent/setup.d.ts +0 -136
- package/dist/activities/execute-deep-agent/setup.js +0 -767
- package/dist/activities/execute-deep-agent/setup.js.map +0 -1
- package/dist/activities/execute-deep-agent/stamp-flowed-rows.d.ts +0 -36
- package/dist/activities/execute-deep-agent/stamp-flowed-rows.js +0 -56
- package/dist/activities/execute-deep-agent/stamp-flowed-rows.js.map +0 -1
- package/dist/activities/execute-deep-agent/status-builder.d.ts +0 -93
- package/dist/activities/execute-deep-agent/status-builder.js +0 -365
- package/dist/activities/execute-deep-agent/status-builder.js.map +0 -1
- package/dist/activities/execute-deep-agent/streaming-terminal.d.ts +0 -21
- package/dist/activities/execute-deep-agent/streaming-terminal.js +0 -80
- package/dist/activities/execute-deep-agent/streaming-terminal.js.map +0 -1
- package/dist/activities/execute-deep-agent/streaming-v3.d.ts +0 -13
- package/dist/activities/execute-deep-agent/streaming-v3.js +0 -174
- package/dist/activities/execute-deep-agent/streaming-v3.js.map +0 -1
- package/dist/activities/execute-deep-agent/streaming.d.ts +0 -81
- package/dist/activities/execute-deep-agent/streaming.js +0 -160
- package/dist/activities/execute-deep-agent/streaming.js.map +0 -1
- package/dist/middleware/cost-cap.d.ts +0 -22
- package/dist/middleware/cost-cap.js.map +0 -1
- package/dist/middleware/graceful-stop.d.ts +0 -17
- package/dist/middleware/graceful-stop.js +0 -63
- package/dist/middleware/graceful-stop.js.map +0 -1
- package/dist/shared/skill-writer.d.ts +0 -75
- package/dist/shared/skill-writer.js +0 -207
- package/dist/shared/skill-writer.js.map +0 -1
- package/src/activities/execute-cursor/__tests__/capture-flow.test.ts +0 -1032
- package/src/activities/execute-cursor/__tests__/command-provenance.test.ts +0 -240
- package/src/activities/execute-cursor/__tests__/progress-substrate.test.ts +0 -169
- package/src/activities/execute-cursor/capture-flow.ts +0 -379
- package/src/activities/execute-cursor/command-provenance.ts +0 -73
- package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +0 -1161
- package/src/activities/execute-deep-agent/__tests__/command-provenance.test.ts +0 -252
- package/src/activities/execute-deep-agent/__tests__/environment.test.ts +0 -108
- package/src/activities/execute-deep-agent/__tests__/event-recorder.test.ts +0 -150
- package/src/activities/execute-deep-agent/__tests__/hitl-integration.test.ts +0 -226
- package/src/activities/execute-deep-agent/__tests__/hitl-reject.test.ts +0 -318
- package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +0 -351
- package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +0 -293
- package/src/activities/execute-deep-agent/__tests__/index.test.ts +0 -99
- package/src/activities/execute-deep-agent/__tests__/mcp-gate.test.ts +0 -44
- package/src/activities/execute-deep-agent/__tests__/post-stream.test.ts +0 -112
- package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +0 -358
- package/src/activities/execute-deep-agent/__tests__/status-builder.test.ts +0 -1933
- package/src/activities/execute-deep-agent/__tests__/streaming-terminal.test.ts +0 -40
- package/src/activities/execute-deep-agent/__tests__/streaming-v3.test.ts +0 -597
- package/src/activities/execute-deep-agent/__tests__/streaming.test.ts +0 -508
- package/src/activities/execute-deep-agent/attachment-injector.ts +0 -627
- package/src/activities/execute-deep-agent/command-provenance.ts +0 -102
- package/src/activities/execute-deep-agent/environment.ts +0 -76
- package/src/activities/execute-deep-agent/event-recorder.ts +0 -95
- package/src/activities/execute-deep-agent/index.ts +0 -1072
- package/src/activities/execute-deep-agent/mcp-gate.ts +0 -37
- package/src/activities/execute-deep-agent/post-stream.ts +0 -109
- package/src/activities/execute-deep-agent/setup.ts +0 -1081
- package/src/activities/execute-deep-agent/stamp-flowed-rows.ts +0 -64
- package/src/activities/execute-deep-agent/status-builder.ts +0 -481
- package/src/activities/execute-deep-agent/streaming-terminal.ts +0 -106
- package/src/activities/execute-deep-agent/streaming-v3.ts +0 -277
- package/src/activities/execute-deep-agent/streaming.ts +0 -313
- package/src/middleware/__tests__/cost-cap.test.ts +0 -192
- package/src/middleware/__tests__/graceful-stop.test.ts +0 -105
- package/src/middleware/graceful-stop.ts +0 -86
- package/src/shared/__tests__/skill-writer.test.ts +0 -372
- package/src/shared/skill-writer.ts +0 -266
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
* sequences them, and the adapter runs its own harness-specific steps after
|
|
17
17
|
* the whole record exists.
|
|
18
18
|
*
|
|
19
|
-
* Shape, chosen against `
|
|
20
|
-
* from small functions (the `SetupResult` mold),
|
|
21
|
-
* `performSetup`. The record is the adapter contract's `TurnInput`
|
|
19
|
+
* Shape, chosen against the native orchestrator's `setup.ts` (deleted at S3
|
|
20
|
+
* M2b): a typed record built from small functions (the `SetupResult` mold),
|
|
21
|
+
* never one 775-line `performSetup`. The record is the adapter contract's `TurnInput`
|
|
22
22
|
* (`types.ts`): every phase returns a named slice of it, and
|
|
23
23
|
* {@link resolveTurnContext} composes the whole. There is no wider
|
|
24
24
|
* "runtime-private" record beside it — the lock release and the write-back
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
* Every `index.ts` line reference below was read from `2c06bc7ea` on
|
|
64
64
|
* 2026-09-11, before the orchestrator moved onto this module.
|
|
65
65
|
*/
|
|
66
|
-
import type
|
|
66
|
+
import { type AgentExecution, type AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
67
67
|
import type { AgentExecutionSpec } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/spec_pb";
|
|
68
68
|
import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
69
69
|
import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
|
|
@@ -75,10 +75,9 @@ import type { TimingRecorder } from "../shared/cold-start-timing.js";
|
|
|
75
75
|
import { type ResolvedBlueprint } from "../shared/blueprint-resolver.js";
|
|
76
76
|
import { WriteBackCoordinator } from "../shared/workspace/writeback-coordinator.js";
|
|
77
77
|
import { WorkspaceLockTimeoutError, type ReleaseWorkspaceLock } from "../shared/workspace/workspace-lock.js";
|
|
78
|
-
import { type SkillMetadata } from "../shared/skill-resolver.js";
|
|
79
78
|
import { type VisionProfile } from "../shared/attachment-vision.js";
|
|
80
|
-
import type { FileReviewIdentity, HarnessCapabilities, StateIdSource } from "./capabilities.js";
|
|
81
|
-
import type { TurnAttachments, TurnEnvironment, TurnInput, TurnMcp, TurnModelPreferences, TurnStandingContext, TurnWorkspace } from "./types.js";
|
|
79
|
+
import type { FileReviewIdentity, HarnessCapabilities, PausePrimitive, StateIdSource } from "./capabilities.js";
|
|
80
|
+
import type { TurnAttachments, TurnEnvironment, TurnInput, TurnMcp, TurnModelPreferences, TurnSkills, TurnStandingContext, TurnWorkspace } from "./types.js";
|
|
82
81
|
/**
|
|
83
82
|
* What every phase reads from its caller. The activity's identity and the
|
|
84
83
|
* runtime's own seams; nothing harness-specific. The four function members
|
|
@@ -124,9 +123,8 @@ export interface ResolutionDeps {
|
|
|
124
123
|
* `TurnInput`: `isReinvocation` is the adapter's own derivation from
|
|
125
124
|
* `threadId` (the contract carries no flag by design, `types.ts` header) and
|
|
126
125
|
* the runtime reads it only inside {@link resolveTurnContext}; the decisions
|
|
127
|
-
* ARE on the input. The seeded
|
|
128
|
-
*
|
|
129
|
-
* overwrites it on every flush), so they ride nothing here.
|
|
126
|
+
* ARE on the input. The seeded rows of every kind are on `sink.status`
|
|
127
|
+
* ({@link seedFromPersistedStatus}); an adapter wraps them by reference.
|
|
130
128
|
*/
|
|
131
129
|
export interface TurnReinvocation {
|
|
132
130
|
/** The engine already holds state for this execution (derived per {@link isReinvocation}). */
|
|
@@ -143,18 +141,17 @@ export interface TurnReinvocation {
|
|
|
143
141
|
* - `workspace-lock-timeout`: another turn held the primary tree past
|
|
144
142
|
* `Config.workspaceLockTimeoutMs`. FAILED, returned (a Temporal retry
|
|
145
143
|
* would queue behind the same holder).
|
|
146
|
-
* - `rejected-by-user`: an adjudicated irreversible action (shell / MCP)
|
|
147
|
-
* was REJECTed. FAILED, returned.
|
|
148
144
|
* - `file-review-resolved`: a pure file-review resume; the agent already
|
|
149
145
|
* finished its turn during capture and the reconcile is the whole act.
|
|
150
146
|
* COMPLETED, returned, with the write-back finalized first when the
|
|
151
147
|
* reconcile held.
|
|
148
|
+
*
|
|
149
|
+
* A REJECTed tool is not a settlement: the run continues without it
|
|
150
|
+
* (`approval-decisions.ts`).
|
|
152
151
|
*/
|
|
153
152
|
export type TurnSettlement = {
|
|
154
153
|
readonly kind: "workspace-lock-timeout";
|
|
155
154
|
readonly error: WorkspaceLockTimeoutError;
|
|
156
|
-
} | {
|
|
157
|
-
readonly kind: "rejected-by-user";
|
|
158
155
|
} | {
|
|
159
156
|
readonly kind: "file-review-resolved";
|
|
160
157
|
readonly failed: boolean;
|
|
@@ -192,21 +189,23 @@ export type ReinvocationOutcome = {
|
|
|
192
189
|
* and the legacy positional wire shape yields 0, so `turnSeq` cannot be
|
|
193
190
|
* the signal (`index.ts` L402-407).
|
|
194
191
|
* - `deterministic` (native: the runtime-minted thread id): the id exists
|
|
195
|
-
* on the FIRST turn too, so the evidence is the persisted transcript
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
192
|
+
* on the FIRST turn too, so the evidence is the persisted transcript.
|
|
193
|
+
* Whether the execution already has committed history is the ONE signal
|
|
194
|
+
* that behaves identically across the engine's checkpointer backends:
|
|
195
|
+
* a durable saver (sqlite locally, http in cloud) keeps the checkpoint
|
|
196
|
+
* and resumes from it, while the test-only memory saver recreates it
|
|
197
|
+
* empty and replays from scratch — so the live checkpoint cannot be the
|
|
198
|
+
* signal (native's `shouldSeedFromPersistedTranscript`, retired with its
|
|
199
|
+
* orchestrator). A first run has no persisted messages and starts from
|
|
200
|
+
* empty, as it always did.
|
|
201
|
+
*
|
|
202
|
+
* This is the runtime's own reading, for its phases (the seed, the reconcile,
|
|
203
|
+
* the exact-apply). An adapter that needs create-vs-resume for its ENGINE
|
|
204
|
+
* reads `input.threadId` itself — for an engine-minted harness that is the
|
|
205
|
+
* same bit, for a deterministic one the engine's checkpoint is the adapter's
|
|
206
|
+
* to consult — so the contract carries no flag with two meanings (Q-M1-7).
|
|
208
207
|
*/
|
|
209
|
-
export declare function
|
|
208
|
+
export declare function isReinvocation(stateIdSource: StateIdSource, input: NormalizedActivityInput, execution: AgentExecution): boolean;
|
|
210
209
|
/** The facts the reinvocation decision reads; produced by {@link reconcileReinvocation}, exposed for the decision's own tests. */
|
|
211
210
|
export interface ReinvocationFacts {
|
|
212
211
|
readonly approvalDecisions: ReadonlyMap<string, ApprovalAction>;
|
|
@@ -218,45 +217,72 @@ export interface ReinvocationFacts {
|
|
|
218
217
|
readonly discardedPaths: readonly string[];
|
|
219
218
|
}
|
|
220
219
|
/**
|
|
221
|
-
* How a reinvocation proceeds, decided once from the facts
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
* agent".
|
|
220
|
+
* How a reinvocation proceeds, decided once from the facts: any adjudicated
|
|
221
|
+
* decision runs the agent — an approved shell/MCP proceeds and may produce
|
|
222
|
+
* further edits; a SKIP or REJECT denies its tool and the run continues
|
|
223
|
+
* without it (the row is settled SKIPPED after the turn,
|
|
224
|
+
* `approval-decisions.ts`); a resume that reconciled file review and decided
|
|
225
|
+
* nothing else is complete, because keeping or discarding a file never
|
|
226
|
+
* re-prompts the agent (Cursor-like). `undefined` means "run the agent".
|
|
227
|
+
*
|
|
228
|
+
* Until S3 M1 a REJECT failed the turn here with its own FAILED arm, Cursor's
|
|
229
|
+
* legacy; the proto (`APPROVAL_ACTION_REJECT`: "does NOT fail the run"), the
|
|
230
|
+
* conformance suite and the native harness said otherwise since stigmer#197,
|
|
231
|
+
* and the runtime now agrees (S2 M4 finding F1; Q-S3-2).
|
|
228
232
|
*/
|
|
229
233
|
export declare function decideReinvocation(facts: ReinvocationFacts): Exclude<TurnSettlement, {
|
|
230
234
|
kind: "workspace-lock-timeout";
|
|
231
235
|
}> | undefined;
|
|
232
236
|
/**
|
|
233
|
-
* Seed an in-progress status from the persisted execution on a
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
* Why
|
|
238
|
-
* calls with brand-new call ids. Without seeding, the
|
|
239
|
-
* would rebuild the transcript from empty and emit a
|
|
240
|
-
* already-committed tool-call ids. The backend's
|
|
241
|
-
* guard rejects any non-terminal update that drops a
|
|
242
|
-
* so the resumed progress would never persist: the
|
|
243
|
-
* WAITING_FOR_APPROVAL with no pending approvals and the
|
|
244
|
-
* fails it. Seeding makes the resume status a strict
|
|
245
|
-
* are then reconciled in place onto these seeded calls
|
|
246
|
-
* inside the accumulator.
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
* `
|
|
237
|
+
* Seed an in-progress status from the persisted execution on a resume (HITL
|
|
238
|
+
* approval, pause/resume, transient recovery) so the upcoming turn APPENDS
|
|
239
|
+
* onto prior history instead of replacing it.
|
|
240
|
+
*
|
|
241
|
+
* Why the transcript must be seeded: a resumed engine re-issues the
|
|
242
|
+
* previously gated tool calls with brand-new call ids. Without seeding, the
|
|
243
|
+
* harness's accumulator would rebuild the transcript from empty and emit a
|
|
244
|
+
* status that drops the already-committed tool-call ids. The backend's
|
|
245
|
+
* append-only-at-identity guard rejects any non-terminal update that drops a
|
|
246
|
+
* committed tool-call id, so the resumed progress would never persist: the
|
|
247
|
+
* run stalls in WAITING_FOR_APPROVAL with no pending approvals and the
|
|
248
|
+
* workflow watchdog fails it. Seeding makes the resume status a strict
|
|
249
|
+
* superset; the re-runs are then reconciled in place onto these seeded calls
|
|
250
|
+
* by canonical identity inside the accumulator.
|
|
251
|
+
*
|
|
252
|
+
* Why the OTHER collections must be seeded too — the server's merge rule
|
|
253
|
+
* (`stigmer-server/src/domain/agentexecution/update-status.ts`): every list
|
|
254
|
+
* and singleton the runner owns is PRESENCE-GUARDED and then REPLACED
|
|
255
|
+
* wholesale — `subAgentExecutions`, `todos`, `artifacts`,
|
|
256
|
+
* `workspaceWriteBacks` when non-empty (L327-345); `streamingUsage`,
|
|
257
|
+
* `recalledMemoriesReport`, `structuredOutput` when defined (L492-526). So
|
|
258
|
+
* the loss an unseeded resume suffers is not "empty replaces full" (the
|
|
259
|
+
* guard covers that) but "PARTIAL replaces full": a resumed turn that
|
|
260
|
+
* publishes one artifact, delegates one sub-agent, or touches one to-do
|
|
261
|
+
* sends a list holding only that, and the server replaces the prior turn's
|
|
262
|
+
* whole list with it. Seeding every one makes each write a superset again.
|
|
263
|
+
*
|
|
264
|
+
* What is NOT seeded, and why: `fileChangeSets` and `pendingApprovals` are
|
|
265
|
+
* DERIVED by the server from its own ledgers on every write;
|
|
266
|
+
* `fileReviewEventStream` and `approvalEventStream` are server-owned ledgers
|
|
267
|
+
* the runner only APPENDS its own events to; `fileChangeProgress`,
|
|
268
|
+
* `setupProgress` and `contextInfo` are one turn's own or the server's; and
|
|
269
|
+
* `phase`, `startedAt`, `completedAt`, `error` are this turn's fresh
|
|
270
|
+
* terminal, written by the runtime.
|
|
271
|
+
*
|
|
272
|
+
* Every collection is mutated IN PLACE (pushed into, assigned into), never
|
|
273
|
+
* reassigned: the write-back coordinator already wraps this status through
|
|
274
|
+
* `statusProtoWriter`, and the harness's accumulator wraps `messages` and
|
|
275
|
+
* `subAgentExecutions` by reference after this runs, so a reassigned array
|
|
276
|
+
* would leave a wrapper holding the old one. The persisted protos are
|
|
277
|
+
* cloned so the input execution stays immutable.
|
|
254
278
|
*
|
|
255
279
|
* Moved from `execute-cursor/index.ts` `seedCursorTranscriptFromExecution`
|
|
256
|
-
* (
|
|
257
|
-
* `
|
|
280
|
+
* (messages only) and widened at S3 M1 to what native's whole-status clone
|
|
281
|
+
* (`execute-deep-agent/index.ts` `seedStatusFromExecution`, retired with its
|
|
282
|
+
* orchestrator) always carried, minus the fields above that it carried by
|
|
283
|
+
* accident (Q-S3-16).
|
|
258
284
|
*/
|
|
259
|
-
export declare function
|
|
285
|
+
export declare function seedFromPersistedStatus(status: AgentExecutionStatus, execution: AgentExecution): void;
|
|
260
286
|
/** Phase 1 (`index.ts` L325-330): hydrate the execution from the control plane. */
|
|
261
287
|
export declare function fetchExecution(deps: ResolutionDeps): Promise<{
|
|
262
288
|
readonly execution: AgentExecution;
|
|
@@ -334,7 +360,7 @@ export declare function bindTelemetryBaggage(deps: ResolutionDeps, args: {
|
|
|
334
360
|
* whether this one runs the agent at all.
|
|
335
361
|
*
|
|
336
362
|
* On a reinvocation, first seed the in-progress status from the persisted
|
|
337
|
-
* execution ({@link
|
|
363
|
+
* execution ({@link seedFromPersistedStatus}), BEFORE the harness's
|
|
338
364
|
* accumulator wraps `status.messages`. Then the file-review reconcile (the
|
|
339
365
|
* dual-source half): every change set the server projected as DECIDED is
|
|
340
366
|
* reconciled from the ledger decisions and the pinned git refs (approved
|
|
@@ -398,31 +424,53 @@ export declare function resolveMcpServersAndPolicies(deps: ResolutionDeps, args:
|
|
|
398
424
|
}): Promise<TurnMcp>;
|
|
399
425
|
/**
|
|
400
426
|
* Phase 5 (`index.ts` L493-501, the orchestrator's position between the
|
|
401
|
-
* tool surface and the attachments): mount the
|
|
402
|
-
*
|
|
403
|
-
*
|
|
404
|
-
*
|
|
405
|
-
*
|
|
406
|
-
*
|
|
407
|
-
*
|
|
427
|
+
* tool surface and the attachments): mount the skills under the session's
|
|
428
|
+
* platform dir, reachable from the workspace through its `.stigmer` link,
|
|
429
|
+
* and return what a prompt renders, per owner (`shared/skill-resolver.ts`).
|
|
430
|
+
* Reads the control plane, which is why it is the runtime's and not a
|
|
431
|
+
* harness's; each harness places the returned metadata in its own prompt
|
|
432
|
+
* shapes — the root's in its system prompt, a sub-agent's in that
|
|
433
|
+
* sub-agent's, client-free.
|
|
434
|
+
*
|
|
435
|
+
* The root's refs are the blueprint's merged set (agent plus session); a
|
|
436
|
+
* sub-agent's are its own `skillRefs`. Each ref resolves through the same
|
|
437
|
+
* resolver, so a skill the root and a sub-agent share is fetched per owner
|
|
438
|
+
* but MOUNTED once (the hash-keyed mount marker turns the second write into
|
|
439
|
+
* a no-op), and a ref that fails resolves to nothing for that owner alone,
|
|
440
|
+
* warned and never thrown, as the root's always did. Sub-agent refs are
|
|
441
|
+
* resolved only for a harness whose `capabilities.subAgents` is true: the
|
|
442
|
+
* blueprint's sub-agents are that harness's to compile, so their skills are
|
|
443
|
+
* its to render. One progress label for the whole phase, as before.
|
|
444
|
+
*
|
|
445
|
+
* The `.stigmer` link this and the attachment phase create is removed in
|
|
446
|
+
* the runtime's finally, after the harness's own teardown. Until S3 M1 the
|
|
447
|
+
* native orchestrator fetched and mounted sub-agent skills itself
|
|
448
|
+
* (`subagent-transformer.ts` with a client); this phase is where that read
|
|
449
|
+
* lives now (Q-S3-5).
|
|
408
450
|
*/
|
|
409
451
|
export declare function mountSkills(deps: ResolutionDeps, args: {
|
|
410
452
|
readonly blueprint: ResolvedBlueprint;
|
|
411
453
|
readonly sessionId: string;
|
|
412
454
|
readonly primaryDir: string;
|
|
413
|
-
|
|
455
|
+
readonly subAgents: boolean;
|
|
456
|
+
}): Promise<TurnSkills>;
|
|
414
457
|
/**
|
|
415
458
|
* Phase 5b (`index.ts` L803-838): resolve the turn's attachments, fail-hard
|
|
416
459
|
* (they are explicit user inputs; see `shared/attachment-resolver.ts`).
|
|
417
460
|
* Downloads by storage key through the same artifact storage resolved for
|
|
418
461
|
* status offload. The vision budget rides along so image attachments are
|
|
419
462
|
* selected for inline delivery while their bytes are already in hand
|
|
420
|
-
* (`shared/attachment-vision.ts` owns all policy); it carries the
|
|
421
|
-
* model
|
|
422
|
-
*
|
|
423
|
-
*
|
|
424
|
-
*
|
|
425
|
-
*
|
|
463
|
+
* (`shared/attachment-vision.ts` owns all policy); it carries the vision
|
|
464
|
+
* capability of the model the turn will run on: the one the execution named,
|
|
465
|
+
* or the registry's default when it named none — the model the native
|
|
466
|
+
* harness builds in that case, so the budget asks about the model that will
|
|
467
|
+
* actually see the image. Full model validation is not needed for this. The
|
|
468
|
+
* Cursor harness with no model named builds its own catalog default instead
|
|
469
|
+
* (`resolveModelId("default")`), so for it this is an approximation: today
|
|
470
|
+
* both answers read as sighted, and the exact per-harness default is S4's
|
|
471
|
+
* to declare (S3 M1 finding F-M1-4). The vision profile is the harness's
|
|
472
|
+
* (each engine accepts different image shapes), so it arrives as an
|
|
473
|
+
* argument.
|
|
426
474
|
*/
|
|
427
475
|
export declare function resolveTurnAttachments(deps: ResolutionDeps, args: {
|
|
428
476
|
readonly spec: AgentExecutionSpec;
|
|
@@ -430,6 +478,21 @@ export declare function resolveTurnAttachments(deps: ResolutionDeps, args: {
|
|
|
430
478
|
readonly primaryDir: string;
|
|
431
479
|
readonly visionProfile: VisionProfile;
|
|
432
480
|
}): Promise<TurnAttachments>;
|
|
481
|
+
/**
|
|
482
|
+
* Whether a harness performs an approved call by RE-RUNNING the model, so
|
|
483
|
+
* the bytes an approved whole-file write lands can differ from the bytes the
|
|
484
|
+
* user approved unless the runner pins them itself
|
|
485
|
+
* ({@link applyApprovedWrites}). Keyed on the pause primitive
|
|
486
|
+
* (`capabilities.ts`): `deny-and-retry` denies the call and re-prompts the
|
|
487
|
+
* model with grants; `callback` answers "deny, stop" and the resumed session
|
|
488
|
+
* re-attempts the call — both regenerate. An `interrupt` engine checkpoints
|
|
489
|
+
* AT the call and applies its exact args on `approve`, so a runner-side
|
|
490
|
+
* write would land the same bytes twice and pre-empt a row the engine is
|
|
491
|
+
* about to execute; `none` gates nothing. Until S3 M2a the phase ran for
|
|
492
|
+
* every harness — a deny-and-retry mechanism the native harness would have
|
|
493
|
+
* met on its first deny-gated file approval (F-M2a-2, Q-M2a-3).
|
|
494
|
+
*/
|
|
495
|
+
export declare function regeneratesApprovedWrites(pausePrimitive: PausePrimitive): boolean;
|
|
433
496
|
/**
|
|
434
497
|
* Phase 5b3 (`index.ts` L849-867): exact-apply approved whole-file writes
|
|
435
498
|
* (HITL "what you approve is what gets applied"). A deny-only harness
|
|
@@ -442,14 +505,16 @@ export declare function resolveTurnAttachments(deps: ResolutionDeps, args: {
|
|
|
442
505
|
* uncertain case degrades to that path, so this can never corrupt a file
|
|
443
506
|
* (see `shared/exact-apply.ts`).
|
|
444
507
|
*
|
|
445
|
-
* Scoped
|
|
446
|
-
*
|
|
508
|
+
* Scoped to the harnesses that regenerate ({@link regeneratesApprovedWrites})
|
|
509
|
+
* and OUT of capture mode, which does not reinvoke the model for file edits:
|
|
510
|
+
* it applies the exact captured bytes itself in the reconcile.
|
|
447
511
|
*
|
|
448
512
|
* The caller persists when the returned set is non-empty (the applied state
|
|
449
513
|
* must be durable before the continuation runs, and the UI reflects it at
|
|
450
514
|
* once); this phase, like every phase, never persists.
|
|
451
515
|
*/
|
|
452
516
|
export declare function applyApprovedWrites(deps: ResolutionDeps, args: {
|
|
517
|
+
readonly pausePrimitive: PausePrimitive;
|
|
453
518
|
readonly workspace: TurnWorkspace;
|
|
454
519
|
readonly reinvocation: TurnReinvocation;
|
|
455
520
|
}): Promise<ReadonlySet<string>>;
|