@stigmer/runner 3.15.1 → 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
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The native deep-agent harness's settle — from a consumed stream to a
|
|
3
|
+
* `TurnOutcome`.
|
|
4
|
+
*
|
|
5
|
+
* In order: drain the inline publishes the stream fired and, on a finished
|
|
6
|
+
* turn, run the auto-publish safety net; settle the gate's unattended skips
|
|
7
|
+
* (the one settlement whose evidence exists only inside this harness); on
|
|
8
|
+
* the runtime's stop, mark in-flight sub-agent rows through the shared act
|
|
9
|
+
* and settle `interrupted` with nothing further; the graph's
|
|
10
|
+
* `structuredResponse` folded onto the status; the interrupts a completed
|
|
11
|
+
* stream left pending seeded as WAITING rows; and the outcome.
|
|
12
|
+
*
|
|
13
|
+
* What this module never does: write a phase, a terminal copy or
|
|
14
|
+
* `completedAt` — those are the runtime's (`harness/run-turn.ts`,
|
|
15
|
+
* `terminal-table.ts`); settle SKIP and REJECT rows — the runtime's
|
|
16
|
+
* (`harness/approval-decisions.ts`, after every outcome); withhold secret
|
|
17
|
+
* content — the runtime's chokepoint does it on every write; finalize the
|
|
18
|
+
* write-back — the runtime's epilogue; capture the turn's file changes or
|
|
19
|
+
* decide whether a review is pending — the runtime's (`harness/capture.ts`,
|
|
20
|
+
* once, over whatever the whole turn left on the tree, after this settle
|
|
21
|
+
* returns; S3 M4). It does mutate `sink.status`'s transcript rows, which
|
|
22
|
+
* are this harness's to write.
|
|
23
|
+
*
|
|
24
|
+
* The structured response is folded BEFORE the outcome is decided, so a turn
|
|
25
|
+
* the runtime then pauses for file review persists it and the pure
|
|
26
|
+
* file-review resume completes with it (the runtime's text fallback runs on
|
|
27
|
+
* the review-pending path too, Q-M4-8).
|
|
28
|
+
*
|
|
29
|
+
* Moved from `index.ts` (post-stream through the terminal arms) at S3 M2a;
|
|
30
|
+
* the capture boundary left for the runtime at M4.
|
|
31
|
+
*/
|
|
32
|
+
import { create } from "@bufbuild/protobuf";
|
|
33
|
+
import { AgentMessageSchema, ToolCallSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
34
|
+
import { MessageType, ToolCallStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
35
|
+
import { POLICY_ENGINE_VERSION, toProtoPolicySource } from "../../shared/approval-policy.js";
|
|
36
|
+
import { utcTimestamp } from "../../shared/status.js";
|
|
37
|
+
import { cancelInProgressSubAgentProtos } from "../../shared/subagent-rows.js";
|
|
38
|
+
import { classifyTool } from "../../shared/tool-kind.js";
|
|
39
|
+
import { captureApprovalArtifacts } from "./approval-file-change.js";
|
|
40
|
+
import { autoPublishWrittenFiles } from "./auto-publish.js";
|
|
41
|
+
import { detectPendingInterrupts, reconcileUnattendedSkips } from "./hitl.js";
|
|
42
|
+
export async function settleDeepAgentTurn(deps) {
|
|
43
|
+
const { input, sink, engine, transcript, stream } = deps;
|
|
44
|
+
const { executionId } = input;
|
|
45
|
+
const { status } = sink;
|
|
46
|
+
// Drain the publishes the stream fired (fire-and-forget completions); the
|
|
47
|
+
// safety net that scans tool calls for files the stream missed runs only
|
|
48
|
+
// on a finished turn, as it always did.
|
|
49
|
+
if (stream.pendingPublishPromises.length > 0) {
|
|
50
|
+
await Promise.allSettled(stream.pendingPublishPromises);
|
|
51
|
+
}
|
|
52
|
+
if (stream.reason === "completed") {
|
|
53
|
+
try {
|
|
54
|
+
await autoPublishWrittenFiles(status, transcript.publisher);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
console.warn(`[turn-settle] execution=${executionId} — auto-publish safety net error: ${err}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
sink.recordActivity();
|
|
61
|
+
// Terminalize every tool call the gate auto-skipped under UNATTENDED
|
|
62
|
+
// approval mode (DD-014): the skip has no human decision behind it, so the
|
|
63
|
+
// runtime's terminalizer cannot see it; the gate's registry is this
|
|
64
|
+
// harness's evidence.
|
|
65
|
+
reconcileUnattendedSkips(status, engine.gate.unattendedSkips);
|
|
66
|
+
if (stream.reason === "interrupted") {
|
|
67
|
+
// A stopped turn aborted the graph run, so any sub-agent the parent had
|
|
68
|
+
// delegated is no longer executing: CANCELLED through the one shared act
|
|
69
|
+
// (the runtime marks them itself only on its thrown arms), its messages'
|
|
70
|
+
// streaming flags cleared. There is no review to open.
|
|
71
|
+
cancelInProgressSubAgentProtos(status.subAgentExecutions);
|
|
72
|
+
transcript.builder.finalizeSubAgentStreaming();
|
|
73
|
+
return { kind: "interrupted" };
|
|
74
|
+
}
|
|
75
|
+
// The graph's structured response, when the run surfaced one: folded now,
|
|
76
|
+
// so a turn the runtime pauses for review persists it and the pure
|
|
77
|
+
// file-review resume completes with it.
|
|
78
|
+
if (engine.hasStructuredOutput) {
|
|
79
|
+
const sr = stream.runOutput?.structuredResponse;
|
|
80
|
+
if (sr != null && typeof sr === "object" && !Array.isArray(sr)) {
|
|
81
|
+
status.structuredOutput = sr;
|
|
82
|
+
}
|
|
83
|
+
else if (sr !== undefined) {
|
|
84
|
+
console.warn(`[turn-settle] structuredResponse is not a plain object for execution ${executionId}: type=${typeof sr}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (stream.reason === "awaiting_approval") {
|
|
88
|
+
return { kind: "awaiting_approval" };
|
|
89
|
+
}
|
|
90
|
+
// A completed stream can still leave the graph interrupted at a gate whose
|
|
91
|
+
// tool start produced no row (the durable savers resume without a
|
|
92
|
+
// tool_started; the replay path never re-drives it): read the checkpoint
|
|
93
|
+
// once more and seed a WAITING row per pending interrupt. Skipped under
|
|
94
|
+
// the global bypass, where no gate is installed.
|
|
95
|
+
if (!engine.gate.globalBypass && (await seedPendingInterrupts(deps))) {
|
|
96
|
+
return { kind: "awaiting_approval" };
|
|
97
|
+
}
|
|
98
|
+
return { kind: "completed" };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Seed one WAITING_APPROVAL row per interrupt the graph left pending, on one
|
|
102
|
+
* AI message, with the sanitized args preview AND the redacted args read
|
|
103
|
+
* from the AI message in graph state (the single source of truth for the
|
|
104
|
+
* proposed call; issue #754: a placeholder without args rendered a pathless
|
|
105
|
+
* header). Returns whether any was seeded.
|
|
106
|
+
*/
|
|
107
|
+
async function seedPendingInterrupts(deps) {
|
|
108
|
+
const { input, sink, engine } = deps;
|
|
109
|
+
const graphState = await engine.graph.getState(engine.langgraphConfig);
|
|
110
|
+
const pending = detectPendingInterrupts(graphState);
|
|
111
|
+
if (pending.length === 0)
|
|
112
|
+
return false;
|
|
113
|
+
const graphMessages = graphState.values.messages;
|
|
114
|
+
const aiMessages = Array.isArray(graphMessages) ? graphMessages : [];
|
|
115
|
+
console.log(`[turn-settle] Detected ${pending.length} pending interrupt(s) for execution ${input.executionId} — awaiting approval`);
|
|
116
|
+
const aiMsg = create(AgentMessageSchema, {
|
|
117
|
+
type: MessageType.MESSAGE_AI,
|
|
118
|
+
content: "",
|
|
119
|
+
timestamp: utcTimestamp(),
|
|
120
|
+
isStreaming: false,
|
|
121
|
+
});
|
|
122
|
+
for (const intr of pending) {
|
|
123
|
+
const toolCall = create(ToolCallSchema, {
|
|
124
|
+
id: intr.toolCallId,
|
|
125
|
+
name: intr.toolName,
|
|
126
|
+
status: ToolCallStatus.TOOL_CALL_WAITING_APPROVAL,
|
|
127
|
+
requiresApproval: true,
|
|
128
|
+
approvalMessage: intr.message,
|
|
129
|
+
approvalRequestedAt: utcTimestamp(),
|
|
130
|
+
mcpServerSlug: intr.mcpServerSlug,
|
|
131
|
+
startedAt: utcTimestamp(),
|
|
132
|
+
toolKind: classifyTool(intr.toolName, intr.mcpServerSlug),
|
|
133
|
+
approvalPolicySource: toProtoPolicySource(intr.policySource),
|
|
134
|
+
policyEngineVersion: intr.policySource ? POLICY_ENGINE_VERSION : "",
|
|
135
|
+
});
|
|
136
|
+
const { argsPreview, args } = captureApprovalArtifacts({ toolCallId: intr.toolCallId, messages: aiMessages });
|
|
137
|
+
if (argsPreview)
|
|
138
|
+
toolCall.argsPreview = argsPreview;
|
|
139
|
+
if (args)
|
|
140
|
+
toolCall.args = args;
|
|
141
|
+
aiMsg.toolCalls.push(toolCall);
|
|
142
|
+
}
|
|
143
|
+
sink.status.messages.push(aiMsg);
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=turn-settle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-settle.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/turn-settle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The native deep-agent harness's setup — what the LangGraph engine needs
|
|
3
|
+
* before it can run a turn, as small named steps over the runtime's resolved
|
|
4
|
+
* `TurnInput`, each returning a typed slice (the Cursor adapter's
|
|
5
|
+
* `turn-setup.ts` mold; never one long function).
|
|
6
|
+
*
|
|
7
|
+
* Everything harness-agnostic has already happened when these run: the
|
|
8
|
+
* execution, session and blueprint are fetched, the workspace is provisioned
|
|
9
|
+
* and locked, the MCP servers and approval policies are merged, the skills
|
|
10
|
+
* are mounted per owner, the attachments are resolved, the transcript is
|
|
11
|
+
* seeded. What remains is this engine's own reading of that record: the
|
|
12
|
+
* checkpointer; the deepagents backend and the CAS observer, rooted at the
|
|
13
|
+
* tree the runtime locked; the MCP connection that turns resolved servers
|
|
14
|
+
* into LangChain tools; the model; the middleware stack with the approval
|
|
15
|
+
* gate over the runtime's policies; the compiled sub-agents; the system
|
|
16
|
+
* prompt and the user message; `createDeepAgent`; and the checkpoint read
|
|
17
|
+
* that decides between a `Command(resume)` and a fresh message. The
|
|
18
|
+
* file-review capture is the runtime's (`harness/capture.ts`); this harness
|
|
19
|
+
* hands it only what its CAS observer saw (`turn.ts`).
|
|
20
|
+
*
|
|
21
|
+
* Every step reads `TurnInput` and the sink and nothing else of the
|
|
22
|
+
* runtime's. The `execution_setup` cold-start line is emitted here, once the
|
|
23
|
+
* graph exists, over the runtime's timeline (`sink.setupTiming`), so the one
|
|
24
|
+
* timeline reads end to end. The three progress labels only this harness
|
|
25
|
+
* knows are reported through the sink exactly as the orchestrator reported
|
|
26
|
+
* them (the resolution labels are the runtime's).
|
|
27
|
+
*
|
|
28
|
+
* One root for everything (Q-S3-8): the deepagents backend, the CAS
|
|
29
|
+
* observer, the gate's path normalization and the publisher are all rooted
|
|
30
|
+
* at `workspace.primaryDir` — the same tree the runtime locks, links and
|
|
31
|
+
* captures. For zero or one workspace entry this is byte-identical to the
|
|
32
|
+
* orchestrator's `workspaceBackend.rootDir`.
|
|
33
|
+
*
|
|
34
|
+
* Moved from `setup.ts` `performSetup` (the LangGraph half; the resolution
|
|
35
|
+
* half is the runtime's twelve phases) at S3 M2a; the step bodies are the
|
|
36
|
+
* orchestrator's, verbatim where nothing changed.
|
|
37
|
+
*/
|
|
38
|
+
import type { BaseCheckpointSaver } from "@langchain/langgraph-checkpoint";
|
|
39
|
+
import type { DynamicStructuredTool } from "@langchain/core/tools";
|
|
40
|
+
import type { Command } from "@langchain/langgraph";
|
|
41
|
+
import type { Config } from "../../config.js";
|
|
42
|
+
import type { TurnInput, TurnSink } from "../../harness/types.js";
|
|
43
|
+
import type { WorkspaceBackend } from "../../shared/workspace/types.js";
|
|
44
|
+
import { type McpConnectionResult } from "../../shared/mcp-manager.js";
|
|
45
|
+
import { type ModelPricing } from "../../shared/model-pricing.js";
|
|
46
|
+
import { type MergedToolPolicy } from "../../shared/approval-policy.js";
|
|
47
|
+
import type { ToolApprovalCategory } from "../../shared/tool-kind.js";
|
|
48
|
+
import type { RecalledMemoriesContent } from "../../shared/recalled-memories.js";
|
|
49
|
+
import { CasCaptureObserver } from "./cas-capture-observer.js";
|
|
50
|
+
/**
|
|
51
|
+
* The runner config this harness reads per turn, as a named slice
|
|
52
|
+
* (`execute-cursor/turn-setup.ts` `CursorAdapterConfig` is the idiom): a
|
|
53
|
+
* whole `Config` satisfies it, a test constructs these fields and nothing
|
|
54
|
+
* else. Smaller than the orchestrator's reach — the synthesized attachments'
|
|
55
|
+
* endpoints it read are the runtime's now (S3 M2a, F-M2a-10).
|
|
56
|
+
*/
|
|
57
|
+
export type DeepAgentAdapterConfig = Pick<Config, "checkpointerType" | "checkpointerProxyEndpoint" | "stigmerToken" | "proxyEndpoint" | "mode">;
|
|
58
|
+
/** The deepagents graph as this module holds it; deepagents exports no stable type for the compiled agent. */
|
|
59
|
+
export type AgentGraph = any;
|
|
60
|
+
/** The workspace as this engine sees it: one backend and one CAS observer, both rooted at the runtime's primary tree. */
|
|
61
|
+
export interface DeepAgentWorkspace {
|
|
62
|
+
readonly backend: WorkspaceBackend;
|
|
63
|
+
readonly casObserver: CasCaptureObserver;
|
|
64
|
+
/** Git-tracked capturability, consulted by the gate to route a file write to git-diff (tracked) vs CAS (ignored). */
|
|
65
|
+
readonly isCapturablePath: (rawPath: string) => Promise<boolean>;
|
|
66
|
+
}
|
|
67
|
+
/** The tool surface once connected: LangChain tools plus the tool → server map the builders attribute by. */
|
|
68
|
+
export interface DeepAgentTools {
|
|
69
|
+
/** Absent when the turn has no servers to connect: `MultiServerMCPClient` refuses an empty config. */
|
|
70
|
+
readonly connection: McpConnectionResult | undefined;
|
|
71
|
+
readonly mcpTools: readonly DynamicStructuredTool[];
|
|
72
|
+
readonly serverToolMap: ReadonlyMap<string, readonly DynamicStructuredTool[]>;
|
|
73
|
+
readonly toolServerMap: ReadonlyMap<string, string>;
|
|
74
|
+
}
|
|
75
|
+
/** The gate's posture for this turn, read once and shared by the builders, the reconciler and the sub-agents. */
|
|
76
|
+
export interface DeepAgentGateState {
|
|
77
|
+
readonly policies: ReadonlyMap<string, MergedToolPolicy>;
|
|
78
|
+
readonly toolServerMap: ReadonlyMap<string, string>;
|
|
79
|
+
readonly leasedCategories: ReadonlySet<ToolApprovalCategory>;
|
|
80
|
+
/** Pre-armed spec.auto_approve_all — the one unscoped, whole-run bypass; the gate is not installed under it. */
|
|
81
|
+
readonly globalBypass: boolean;
|
|
82
|
+
/** Unattended approval mode (DD-014): the gate auto-skips instead of interrupting. */
|
|
83
|
+
readonly unattended: boolean;
|
|
84
|
+
/** Tool-call ids the gate auto-skipped this turn; written by the gate, read by `reconcileUnattendedSkips`. */
|
|
85
|
+
readonly unattendedSkips: Set<string>;
|
|
86
|
+
}
|
|
87
|
+
/** The engine this turn runs on and everything the stream and the settle read from it. */
|
|
88
|
+
export interface DeepAgentEngine {
|
|
89
|
+
readonly graph: AgentGraph;
|
|
90
|
+
readonly checkpointer: BaseCheckpointSaver;
|
|
91
|
+
readonly langgraphConfig: Record<string, unknown>;
|
|
92
|
+
/** The registry id the turn runs on (pricing, the thinking heuristic, sub-agent inheritance key on it). */
|
|
93
|
+
readonly modelName: string;
|
|
94
|
+
readonly pricing: ModelPricing;
|
|
95
|
+
readonly gate: DeepAgentGateState;
|
|
96
|
+
readonly hasStructuredOutput: boolean;
|
|
97
|
+
}
|
|
98
|
+
/** What the graph is invoked with: a resume of the paused gate, or the turn's user message. */
|
|
99
|
+
export type DeepAgentGraphInput = {
|
|
100
|
+
readonly kind: "resume";
|
|
101
|
+
readonly command: Command;
|
|
102
|
+
} | {
|
|
103
|
+
readonly kind: "message";
|
|
104
|
+
readonly input: Record<string, unknown>;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* The registry id the turn runs on: what the execution asked for, as the
|
|
108
|
+
* runtime already resolved it (`input.model.requested`, `"default"` when the
|
|
109
|
+
* spec named none — the one reader of `spec.executionConfig.modelName`, which
|
|
110
|
+
* the Cursor adapter reads too), or the registry's default for `"default"`.
|
|
111
|
+
* The same reading the runtime's attachment phase made for the vision budget,
|
|
112
|
+
* so the model that sees the images is the model that runs. (Until S3 M5 this
|
|
113
|
+
* read the spec field beside the runtime's resolved copy; F-M3-P7.)
|
|
114
|
+
*/
|
|
115
|
+
export declare function resolveModelName(input: TurnInput): Promise<string>;
|
|
116
|
+
/**
|
|
117
|
+
* The checkpoint saver. The durable local (sqlite) backend keys its file
|
|
118
|
+
* per session — a session has exactly one thread (`thread-{sessionId}`), so
|
|
119
|
+
* checkpoint lifetime tracks session lifetime. Opened per turn and closed
|
|
120
|
+
* in the adapter's `finally` (`turn.ts`).
|
|
121
|
+
*/
|
|
122
|
+
export declare function openCheckpointer(input: TurnInput, sink: TurnSink, config: DeepAgentAdapterConfig): Promise<BaseCheckpointSaver>;
|
|
123
|
+
/**
|
|
124
|
+
* The workspace as the engine sees it, rooted at the runtime's primary tree
|
|
125
|
+
* (Q-S3-8). The platform dir the shared provision ensured rides along so
|
|
126
|
+
* the backend routes `.stigmer/…` reads to it.
|
|
127
|
+
*
|
|
128
|
+
* CAS capture (design docs 08/11/12): the single per-turn observer owns the
|
|
129
|
+
* before-bytes of first-touched CAS-owned paths AND the secret-blocked
|
|
130
|
+
* paths, keyed workspace-root-relative. Shared by the parent AND every
|
|
131
|
+
* sub-agent CAS backend, giving race-free first-touch-wins across
|
|
132
|
+
* concurrent graphs. In a git work tree it owns the .gitignored set only
|
|
133
|
+
* (git captures the tracked ones); in a non-git workspace it owns every
|
|
134
|
+
* touched path. Its ownership predicate is memoized, so `git check-ignore`
|
|
135
|
+
* runs at most once per distinct path.
|
|
136
|
+
*/
|
|
137
|
+
export declare function buildDeepAgentWorkspace(input: TurnInput): DeepAgentWorkspace;
|
|
138
|
+
/**
|
|
139
|
+
* Connect the runtime's resolved servers (synthesized attachments included)
|
|
140
|
+
* into LangChain tools. The connect covers the whole fan-out — stdio servers
|
|
141
|
+
* spawn npx/uvx subprocesses here, so on-demand package installs land in
|
|
142
|
+
* this span. A turn with no servers connects nothing: `MultiServerMCPClient`
|
|
143
|
+
* refuses an empty config, which is what the orchestrator's MCP gate
|
|
144
|
+
* (`mcp-gate.ts`) guarded against beside its channel-only reason; the
|
|
145
|
+
* runtime resolves unconditionally, so the one remaining question is
|
|
146
|
+
* "anything to connect?" (S3 M2a, F-M2a-17).
|
|
147
|
+
*/
|
|
148
|
+
export declare function connectTools(input: TurnInput, sink: TurnSink): Promise<DeepAgentTools>;
|
|
149
|
+
/**
|
|
150
|
+
* The gate's posture. Two distinct bypasses (`shared/approval-policy.ts`
|
|
151
|
+
* `ActiveLeases`): the pre-armed spec.auto_approve_all is the one whole-run
|
|
152
|
+
* global bypass; an interactive APPROVE_ALL grants a run-lifetime lease
|
|
153
|
+
* scoped to that action's class. Server leases shaped the runtime's policy
|
|
154
|
+
* map (leased servers dropped); built-in category leases are applied inside
|
|
155
|
+
* the gate. Both flow into sub-agents via the shared gate config.
|
|
156
|
+
*/
|
|
157
|
+
export declare function readGateState(input: TurnInput, tools: DeepAgentTools): DeepAgentGateState;
|
|
158
|
+
/**
|
|
159
|
+
* The `## Skills` section of the root prompt: the skills the shared selection
|
|
160
|
+
* highlights for this turn's message (`shared/prompt-sections.ts`
|
|
161
|
+
* `selectSkillsForPrompt`: every skill below the threshold, the relevant ones
|
|
162
|
+
* at and above it), rendered with this engine's activation protocol, plus —
|
|
163
|
+
* when the selection left any out — an `### Also Available` note naming them
|
|
164
|
+
* (the sentence is the shared, tool-neutral one; the heading is this
|
|
165
|
+
* harness's markdown framing).
|
|
166
|
+
*/
|
|
167
|
+
export declare function renderRootSkillsSection(input: TurnInput): string;
|
|
168
|
+
/**
|
|
169
|
+
* The system prompt over the runtime's resolved record: every input the
|
|
170
|
+
* builder renders is read from `TurnInput` here, in one place, so the mapping
|
|
171
|
+
* is a pure step a test can pin whole (`__tests__/prompt-goldens.test.ts`
|
|
172
|
+
* calls exactly this) rather than a stretch of `buildEngine`. The one input
|
|
173
|
+
* that is not on the record is the memoized memory selection, which the
|
|
174
|
+
* caller awaits (the runtime stamps the report on the status the first time
|
|
175
|
+
* it is pulled, before this turn's first persist).
|
|
176
|
+
*/
|
|
177
|
+
export declare function composeSystemPrompt(input: TurnInput, recalledMemories: RecalledMemoriesContent | undefined): string;
|
|
178
|
+
/**
|
|
179
|
+
* Build the engine: the model, the middleware stack with the gate, the
|
|
180
|
+
* tools, the compiled sub-agents, the system prompt and `createDeepAgent`.
|
|
181
|
+
*
|
|
182
|
+
* The service tier resolved ONCE by the runtime rides every model this
|
|
183
|
+
* execution constructs — the primary AND the sub-agent factory — so the
|
|
184
|
+
* provider account's default can never pick the price of any turn (#361).
|
|
185
|
+
* `max_tool_rounds` resolves to one recursion limit that feeds BOTH the hard
|
|
186
|
+
* stop on the invoke config and the budget middleware's ~80% advisory, so
|
|
187
|
+
* the warning and the enforcement can never disagree.
|
|
188
|
+
*
|
|
189
|
+
* Nothing in the middleware stack stops the run (Q-S3-3, landed at S3 M2b):
|
|
190
|
+
* the runtime's abort is the platform's one stop, and its TERMINATED arm the
|
|
191
|
+
* one enforcement of `max_cost_usd`; the cost advisory warns the model at
|
|
192
|
+
* ~80% of the cap the way the budget middleware warns at ~80% of the
|
|
193
|
+
* recursion limit.
|
|
194
|
+
*/
|
|
195
|
+
export declare function buildEngine(input: TurnInput, sink: TurnSink, config: DeepAgentAdapterConfig, args: {
|
|
196
|
+
readonly modelName: string;
|
|
197
|
+
readonly checkpointer: BaseCheckpointSaver;
|
|
198
|
+
readonly workspace: DeepAgentWorkspace;
|
|
199
|
+
readonly tools: DeepAgentTools;
|
|
200
|
+
readonly gate: DeepAgentGateState;
|
|
201
|
+
}): Promise<DeepAgentEngine>;
|
|
202
|
+
/**
|
|
203
|
+
* What the graph is invoked with. The checkpoint is read once (on the
|
|
204
|
+
* durable http saver an extra `getState` is a network round-trip): pending
|
|
205
|
+
* interrupts that the runtime's decisions answer make a `Command(resume)`;
|
|
206
|
+
* anything else is the turn's user message — the conversation catchup
|
|
207
|
+
* framed before it (cloud DD-006; in the USER MESSAGE so it enters the
|
|
208
|
+
* checkpointer with the turn), the structured-output contract appended, and
|
|
209
|
+
* the inline images FIRST as content blocks when the turn carries any (per
|
|
210
|
+
* Anthropic's images-before-text guidance; a plain string otherwise).
|
|
211
|
+
*/
|
|
212
|
+
export declare function composeGraphInput(input: TurnInput, engine: DeepAgentEngine): Promise<DeepAgentGraphInput>;
|