@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
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The native deep-agent harness as a `HarnessAdapter` — the worker- and
|
|
3
|
+
* session-lifetime half of its LangGraph slice, behind the turn runtime's
|
|
4
|
+
* contract (`harness/types.ts`). One engine turn is `turn.ts`'s
|
|
5
|
+
* `runDeepAgentTurn`; this module boots and delegates.
|
|
6
|
+
*
|
|
7
|
+
* What this adapter owns: the deepagents harness profiles (worker lifetime,
|
|
8
|
+
* registered once before the first `createDeepAgent`), and one engine turn
|
|
9
|
+
* (`runTurn`, through `turn.ts`). Everything else about a turn is the
|
|
10
|
+
* runtime's (`harness/run-turn.ts`).
|
|
11
|
+
*
|
|
12
|
+
* THIS MODULE'S STATIC GRAPH IS SDK-FREE, ON PURPOSE. The composition roots
|
|
13
|
+
* import the harness table (`src/harness-adapters.ts`) BEFORE they boot it,
|
|
14
|
+
* and that table's static graph must stay connect- and SDK-free (the Cursor
|
|
15
|
+
* adapter's boot patches `node:http2` before anything dials the control
|
|
16
|
+
* plane). So `deepagents` and `@langchain/*` — this harness's whole engine —
|
|
17
|
+
* are loaded with a dynamic import INSIDE `boot`, after the profiles are
|
|
18
|
+
* registered; a worker that does not serve this harness never pays for
|
|
19
|
+
* LangChain. `__tests__/adapter-graph-is-sdk-free.test.ts` pins it.
|
|
20
|
+
*
|
|
21
|
+
* Nothing is parked per session, and the header says so where the contract
|
|
22
|
+
* asks: the sqlite saver is opened and closed per turn and the MCP
|
|
23
|
+
* subprocesses are connected and closed per turn (`turn.ts`), so
|
|
24
|
+
* `shutdown` and `releaseSession` resolve as no-ops.
|
|
25
|
+
*
|
|
26
|
+
* What this adapter never does: throw out of `runTurn` (an engine failure is
|
|
27
|
+
* `failed` on the `internal` surface; the recursion limit is
|
|
28
|
+
* `tool_call_limit`; a `CancelledFailure` never exists here), branch on why
|
|
29
|
+
* `stopSignal` aborted, write a phase or a terminal copy, bind a state id
|
|
30
|
+
* (the thread id is the runtime's, `deterministic`), or import
|
|
31
|
+
* `@temporalio/*` (`__tests__/adapter-is-temporal-free.test.ts`).
|
|
32
|
+
*
|
|
33
|
+
* Extracted from `index.ts` `createDeepAgentActivities` at S3 M2a on the
|
|
34
|
+
* Cursor adapter's layout (`execute-cursor/adapter.ts`).
|
|
35
|
+
*/
|
|
36
|
+
import { DEEP_AGENT_CAPABILITIES } from "./deep-agent-capabilities.js";
|
|
37
|
+
/** The config slice this adapter reads per turn, taken at `boot`; a whole `Config` satisfies it. */
|
|
38
|
+
export function resolveDeepAgentConfig(config) {
|
|
39
|
+
return {
|
|
40
|
+
checkpointerType: config.checkpointerType,
|
|
41
|
+
checkpointerProxyEndpoint: config.checkpointerProxyEndpoint,
|
|
42
|
+
stigmerToken: config.stigmerToken,
|
|
43
|
+
proxyEndpoint: config.proxyEndpoint,
|
|
44
|
+
mode: config.mode,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function createDeepAgentAdapter() {
|
|
48
|
+
let booted;
|
|
49
|
+
return {
|
|
50
|
+
name: "deep-agent",
|
|
51
|
+
capabilities: DEEP_AGENT_CAPABILITIES,
|
|
52
|
+
/**
|
|
53
|
+
* Register the harness profiles (deepagents would otherwise auto-inject
|
|
54
|
+
* an ungated `general-purpose` sub-agent into every graph), then load
|
|
55
|
+
* the engine slice. Idempotent: a re-boot re-reads the slice; the
|
|
56
|
+
* registration is once-guarded.
|
|
57
|
+
*/
|
|
58
|
+
async boot(bootConfig) {
|
|
59
|
+
// `deepagents-profiles.ts` imports the SDK to register against it, so
|
|
60
|
+
// it too is loaded here and not at the top of this module.
|
|
61
|
+
const { registerStigmerDeepagentsProfiles } = await import("./deepagents-profiles.js");
|
|
62
|
+
registerStigmerDeepagentsProfiles();
|
|
63
|
+
const { runDeepAgentTurn } = await import("./turn.js");
|
|
64
|
+
booted = { config: resolveDeepAgentConfig(bootConfig), runDeepAgentTurn };
|
|
65
|
+
},
|
|
66
|
+
/** Nothing is held across turns (see the header). */
|
|
67
|
+
async shutdown() { },
|
|
68
|
+
/** Nothing is parked per session (see the header); an unknown id is a no-op by construction. */
|
|
69
|
+
async releaseSession(_sessionId) { },
|
|
70
|
+
async runTurn(input, sink) {
|
|
71
|
+
if (booted === undefined) {
|
|
72
|
+
throw new Error("deep-agent adapter: runTurn before boot (the registry boots every adapter before the worker polls)");
|
|
73
|
+
}
|
|
74
|
+
return booted.runDeepAgentTurn(input, sink, booted.config);
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,oGAAoG;AACpG,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,OAAO;QACL,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;QAC3D,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,sBAAsB;IACpC,IAAI,MAA0C,CAAC;IAE/C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE,uBAAuB;QAErC;;;;;WAKG;QACH,KAAK,CAAC,IAAI,CAAC,UAAkB;YAC3B,sEAAsE;YACtE,2DAA2D;YAC3D,MAAM,EAAE,iCAAiC,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACvF,iCAAiC,EAAE,CAAC;YACpC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACvD,MAAM,GAAG,EAAE,MAAM,EAAE,sBAAsB,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;QAC5E,CAAC;QAED,qDAAqD;QACrD,KAAK,CAAC,QAAQ,KAAmB,CAAC;QAElC,gGAAgG;QAChG,KAAK,CAAC,cAAc,CAAC,UAAkB,IAAkB,CAAC;QAE1D,KAAK,CAAC,OAAO,CAAC,KAAgB,EAAE,IAAc;YAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;YACxH,CAAC;YACD,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
* @since File-Change HITL Redesign (Phase 3 — CAS deep-agent wiring); sub-agent
|
|
37
37
|
* gitignored capture parity (Session 26, DD-19)
|
|
38
38
|
*/
|
|
39
|
+
import type { CasTouchedSnapshot } from "../../shared/filereview/cas-touched.js";
|
|
39
40
|
/**
|
|
40
41
|
* Pre-turn bytes of each first-touched gitignored path, keyed by workspace-root-
|
|
41
42
|
* relative path. `null` means the path did not exist before the turn (an ADD).
|
|
@@ -60,6 +61,13 @@ export declare class CasCaptureObserver {
|
|
|
60
61
|
});
|
|
61
62
|
/** Gitignored paths the gate refused as secret-like, read at the turn boundary. */
|
|
62
63
|
get blockedSecretPaths(): ReadonlySet<string>;
|
|
64
|
+
/**
|
|
65
|
+
* An atomic copy of what has been observed so far — the shape the progress
|
|
66
|
+
* slice and the turn-boundary capture read (`shared/filereview/cas-touched.ts`).
|
|
67
|
+
* Copied synchronously, so a sub-agent's concurrent `recordBefore` landing
|
|
68
|
+
* mid-capture cannot mutate a snapshot a reader is walking.
|
|
69
|
+
*/
|
|
70
|
+
snapshot(): CasTouchedSnapshot;
|
|
63
71
|
/**
|
|
64
72
|
* Record the pre-turn bytes of `rawPath` when it is a first-touched gitignored
|
|
65
73
|
* path. First-touch-wins across ALL backends sharing this observer: the slot is
|
|
@@ -58,6 +58,15 @@ export class CasCaptureObserver {
|
|
|
58
58
|
get blockedSecretPaths() {
|
|
59
59
|
return this.blocked;
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* An atomic copy of what has been observed so far — the shape the progress
|
|
63
|
+
* slice and the turn-boundary capture read (`shared/filereview/cas-touched.ts`).
|
|
64
|
+
* Copied synchronously, so a sub-agent's concurrent `recordBefore` landing
|
|
65
|
+
* mid-capture cannot mutate a snapshot a reader is walking.
|
|
66
|
+
*/
|
|
67
|
+
snapshot() {
|
|
68
|
+
return { before: new Map(this.before), blockedSecretPaths: new Set(this.blocked) };
|
|
69
|
+
}
|
|
61
70
|
/**
|
|
62
71
|
* Record the pre-turn bytes of `rawPath` when it is a first-touched gitignored
|
|
63
72
|
* path. First-touch-wins across ALL backends sharing this observer: the slot is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cas-capture-observer.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/cas-capture-observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"cas-capture-observer.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/cas-capture-observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AASnE,MAAM,OAAO,kBAAkB;IACZ,OAAO,CAAS;IACjC,wFAAwF;IACvE,YAAY,CAAwC;IAErE,mFAAmF;IAC1E,MAAM,GAAiB,IAAI,GAAG,EAAE,CAAC;IAE1C,+EAA+E;IAC9D,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,kFAAkF;IACjE,YAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3D,oFAAoF;IACnE,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C,YAAY,IAIX;QACC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,mFAAmF;IACnF,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACN,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACrF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QACpE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAAE,OAAO;YACjD,qEAAqE;YACrE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,OAAe;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAe;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,sEAAsE;AACtE,KAAK,UAAU,eAAe,CAAC,YAAoB;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The native deep-agent harness's capability flags — the facts about the
|
|
3
|
+
* LangGraph engine the turn runtime branches on, declared once
|
|
4
|
+
* (`harness/capabilities.ts` has the matrix and the meaning of each flag).
|
|
5
|
+
*
|
|
6
|
+
* - `interrupt`: the approval gate (`middleware/approval-gate.ts`) calls
|
|
7
|
+
* LangGraph's `interrupt()` at a gated tool; the graph checkpoints and
|
|
8
|
+
* stops, and the adapter resumes it with a `Command(resume)` carrying
|
|
9
|
+
* the decisions (`hitl.ts`). No engine re-run, no exact-apply.
|
|
10
|
+
* - `deterministic`: the thread id is the runtime's, minted from the
|
|
11
|
+
* session before the first turn (`ensure-thread.ts`), so the adapter
|
|
12
|
+
* never binds a state id and the runtime's reinvocation fact is the
|
|
13
|
+
* persisted transcript.
|
|
14
|
+
* - A system prompt: instructions, skills, input files and standing context
|
|
15
|
+
* ride `createDeepAgent`'s `systemPrompt` (`prompt-builder.ts`).
|
|
16
|
+
* - Sub-agents as compiled sub-graphs (`subagent-transformer.ts`), each
|
|
17
|
+
* with its own mounted skills from the runtime (`TurnSkills.bySubAgent`).
|
|
18
|
+
* - Tool restriction by tool list: an MCP server's `enabled_tools` is
|
|
19
|
+
* honoured at connect time, so the engine never sees a disabled tool.
|
|
20
|
+
* - PNG, JPEG, WebP and GIF inline (`shared/attachment-vision.ts`).
|
|
21
|
+
* - File review under the `deep-agent` harness id with nothing excluded:
|
|
22
|
+
* this harness writes no transient file into the repo (the `.stigmer`
|
|
23
|
+
* link is the runtime's, created before its baseline pin and git-excluded
|
|
24
|
+
* at provision). The capture is the runtime's (`harness/capture.ts`, S3
|
|
25
|
+
* M4); this harness binds its `CasCaptureObserver`'s snapshot as the
|
|
26
|
+
* runtime's CAS observations (`turn.ts`).
|
|
27
|
+
*/
|
|
28
|
+
import type { HarnessCapabilities } from "../../harness/capabilities.js";
|
|
29
|
+
/** The harness id stamped on the deep-agent's file-review ledger events. */
|
|
30
|
+
export declare const DEEP_AGENT_HARNESS_ID = "deep-agent";
|
|
31
|
+
export declare const DEEP_AGENT_CAPABILITIES: HarnessCapabilities;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The native deep-agent harness's capability flags — the facts about the
|
|
3
|
+
* LangGraph engine the turn runtime branches on, declared once
|
|
4
|
+
* (`harness/capabilities.ts` has the matrix and the meaning of each flag).
|
|
5
|
+
*
|
|
6
|
+
* - `interrupt`: the approval gate (`middleware/approval-gate.ts`) calls
|
|
7
|
+
* LangGraph's `interrupt()` at a gated tool; the graph checkpoints and
|
|
8
|
+
* stops, and the adapter resumes it with a `Command(resume)` carrying
|
|
9
|
+
* the decisions (`hitl.ts`). No engine re-run, no exact-apply.
|
|
10
|
+
* - `deterministic`: the thread id is the runtime's, minted from the
|
|
11
|
+
* session before the first turn (`ensure-thread.ts`), so the adapter
|
|
12
|
+
* never binds a state id and the runtime's reinvocation fact is the
|
|
13
|
+
* persisted transcript.
|
|
14
|
+
* - A system prompt: instructions, skills, input files and standing context
|
|
15
|
+
* ride `createDeepAgent`'s `systemPrompt` (`prompt-builder.ts`).
|
|
16
|
+
* - Sub-agents as compiled sub-graphs (`subagent-transformer.ts`), each
|
|
17
|
+
* with its own mounted skills from the runtime (`TurnSkills.bySubAgent`).
|
|
18
|
+
* - Tool restriction by tool list: an MCP server's `enabled_tools` is
|
|
19
|
+
* honoured at connect time, so the engine never sees a disabled tool.
|
|
20
|
+
* - PNG, JPEG, WebP and GIF inline (`shared/attachment-vision.ts`).
|
|
21
|
+
* - File review under the `deep-agent` harness id with nothing excluded:
|
|
22
|
+
* this harness writes no transient file into the repo (the `.stigmer`
|
|
23
|
+
* link is the runtime's, created before its baseline pin and git-excluded
|
|
24
|
+
* at provision). The capture is the runtime's (`harness/capture.ts`, S3
|
|
25
|
+
* M4); this harness binds its `CasCaptureObserver`'s snapshot as the
|
|
26
|
+
* runtime's CAS observations (`turn.ts`).
|
|
27
|
+
*/
|
|
28
|
+
import { DEEP_AGENT_VISION_PROFILE } from "../../shared/attachment-vision.js";
|
|
29
|
+
/** The harness id stamped on the deep-agent's file-review ledger events. */
|
|
30
|
+
export const DEEP_AGENT_HARNESS_ID = "deep-agent";
|
|
31
|
+
export const DEEP_AGENT_CAPABILITIES = {
|
|
32
|
+
pausePrimitive: "interrupt",
|
|
33
|
+
stateIdSource: "deterministic",
|
|
34
|
+
systemPrompt: true,
|
|
35
|
+
subAgents: true,
|
|
36
|
+
toolRestriction: true,
|
|
37
|
+
visionProfile: DEEP_AGENT_VISION_PROFILE,
|
|
38
|
+
fileReview: { harnessId: DEEP_AGENT_HARNESS_ID, excludePaths: [] },
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=deep-agent-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-agent-capabilities.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/deep-agent-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAwB;IAC1D,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,yBAAyB;IACxC,UAAU,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,YAAY,EAAE,EAAE,EAAE;CACnE,CAAC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Mutable execution state for
|
|
2
|
+
* Mutable execution state for `V3StatusBuilder`.
|
|
3
3
|
*
|
|
4
4
|
* Holds the AgentExecutionStatus proto being progressively built and
|
|
5
5
|
* O(1) lookup indexes into its repeated fields. Mutations to indexed
|
|
6
6
|
* references (ToolCall, AgentMessage) propagate directly to the proto
|
|
7
|
-
* because they share the same object reference.
|
|
8
|
-
*
|
|
9
|
-
* Phase 3b-i scope: core indexes for main-agent streaming.
|
|
10
|
-
* Sub-agent routing maps and approval tracking are added in Phase 3c.
|
|
7
|
+
* because they share the same object reference. Sub-agent transcripts are
|
|
8
|
+
* `SubAgentTracker`'s, keyed by namespace beside this state.
|
|
11
9
|
*/
|
|
12
10
|
import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
13
11
|
import type { AgentMessage, ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
@@ -36,11 +34,6 @@ export declare class ExecutionState {
|
|
|
36
34
|
* is created rather than appending to the existing one.
|
|
37
35
|
*/
|
|
38
36
|
readonly lastLlmRunId: Map<string, string>;
|
|
39
|
-
/**
|
|
40
|
-
* Tool run_id -> monotonic start time (ms) for duration calculation.
|
|
41
|
-
* Set on on_tool_start, consumed and removed on on_tool_end.
|
|
42
|
-
*/
|
|
43
|
-
readonly toolStartTimes: Map<string, number>;
|
|
44
37
|
constructor(proto: AgentExecutionStatus);
|
|
45
38
|
/**
|
|
46
39
|
* Reset all ephemeral indexes. The proto itself is not cleared —
|
|
@@ -52,7 +45,7 @@ export declare class ExecutionState {
|
|
|
52
45
|
/**
|
|
53
46
|
* Rebuild the toolCalls index from the proto's messages.
|
|
54
47
|
*
|
|
55
|
-
* Used on the resume path where the
|
|
48
|
+
* Used on the resume path where the V3StatusBuilder is initialized
|
|
56
49
|
* with a persisted AgentExecutionStatus that already contains
|
|
57
50
|
* messages and tool calls. Only proto-derivable indexes are rebuilt;
|
|
58
51
|
* ephemeral runtime state starts fresh.
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Mutable execution state for
|
|
2
|
+
* Mutable execution state for `V3StatusBuilder`.
|
|
3
3
|
*
|
|
4
4
|
* Holds the AgentExecutionStatus proto being progressively built and
|
|
5
5
|
* O(1) lookup indexes into its repeated fields. Mutations to indexed
|
|
6
6
|
* references (ToolCall, AgentMessage) propagate directly to the proto
|
|
7
|
-
* because they share the same object reference.
|
|
8
|
-
*
|
|
9
|
-
* Phase 3b-i scope: core indexes for main-agent streaming.
|
|
10
|
-
* Sub-agent routing maps and approval tracking are added in Phase 3c.
|
|
7
|
+
* because they share the same object reference. Sub-agent transcripts are
|
|
8
|
+
* `SubAgentTracker`'s, keyed by namespace beside this state.
|
|
11
9
|
*/
|
|
12
10
|
export class ExecutionState {
|
|
13
11
|
/** The protobuf projection being built. */
|
|
@@ -34,11 +32,6 @@ export class ExecutionState {
|
|
|
34
32
|
* is created rather than appending to the existing one.
|
|
35
33
|
*/
|
|
36
34
|
lastLlmRunId = new Map();
|
|
37
|
-
/**
|
|
38
|
-
* Tool run_id -> monotonic start time (ms) for duration calculation.
|
|
39
|
-
* Set on on_tool_start, consumed and removed on on_tool_end.
|
|
40
|
-
*/
|
|
41
|
-
toolStartTimes = new Map();
|
|
42
35
|
constructor(proto) {
|
|
43
36
|
this.proto = proto;
|
|
44
37
|
}
|
|
@@ -52,12 +45,11 @@ export class ExecutionState {
|
|
|
52
45
|
this.messagesByRun.clear();
|
|
53
46
|
this.currentAiMessage.clear();
|
|
54
47
|
this.lastLlmRunId.clear();
|
|
55
|
-
this.toolStartTimes.clear();
|
|
56
48
|
}
|
|
57
49
|
/**
|
|
58
50
|
* Rebuild the toolCalls index from the proto's messages.
|
|
59
51
|
*
|
|
60
|
-
* Used on the resume path where the
|
|
52
|
+
* Used on the resume path where the V3StatusBuilder is initialized
|
|
61
53
|
* with a persisted AgentExecutionStatus that already contains
|
|
62
54
|
* messages and tool calls. Only proto-derivable indexes are rebuilt;
|
|
63
55
|
* ephemeral runtime state starts fresh.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-state.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/execution-state.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"execution-state.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/execution-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,OAAO,cAAc;IACzB,2CAA2C;IAClC,KAAK,CAAuB;IAErC;;;OAGG;IACM,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAEtD;;;OAGG;IACM,aAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;IAE9D;;;;OAIG;IACM,gBAAgB,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEjE;;;;OAIG;IACM,YAAY,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEvD,YAAY,KAA2B;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,mBAAmB;QACjB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,oBAAoB;QAClB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBACV,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,24 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* HITL (human-in-the-loop) resume infrastructure for
|
|
2
|
+
* HITL (human-in-the-loop) resume infrastructure for the native deep-agent
|
|
3
|
+
* harness — the LangGraph side of an approval round trip.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* The runtime reads the user's decisions off the persisted rows
|
|
6
|
+
* (`harness/approval-decisions.ts` `approvalDecisionsOf`, on `TurnInput`)
|
|
7
|
+
* and settles the rows that never run (SKIP, REJECT) after the turn; what is
|
|
8
|
+
* this harness's is how those decisions reach the ENGINE: the graph
|
|
9
|
+
* checkpoint's un-resumed interrupts, keyed by the interrupt's own id, become
|
|
10
|
+
* a `Command(resume)` map ({@link resolveResumeInput}), and after a stream the
|
|
11
|
+
* interrupts still pending become WAITING_APPROVAL rows
|
|
12
|
+
* ({@link detectPendingInterrupts}). {@link reconcileUnattendedSkips} is the
|
|
13
|
+
* one settlement that stays here because its evidence — the gate's registry
|
|
14
|
+
* of auto-skipped call ids — exists only inside this harness.
|
|
10
15
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
16
|
+
* Until S3 M2a this module also read the decisions from the execution itself
|
|
17
|
+
* and carried the SKIP/REJECT settlement; both are the runtime's now, one
|
|
18
|
+
* copy for every harness (S3 M1, Q-S3-2).
|
|
14
19
|
*/
|
|
15
20
|
import { Command } from "@langchain/langgraph";
|
|
16
|
-
import type {
|
|
21
|
+
import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
22
|
+
import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
23
|
+
import { type PolicySource } from "../../shared/approval-policy.js";
|
|
17
24
|
/**
|
|
18
25
|
* Either a genuine approval resume carrying the `Command(resume)` payload, or
|
|
19
|
-
* not one — in which case the caller
|
|
20
|
-
* construction site
|
|
21
|
-
*
|
|
26
|
+
* not one — in which case the caller sends the turn's user message (its
|
|
27
|
+
* single construction site; this module deliberately does NOT build a second
|
|
28
|
+
* copy that could drift from it).
|
|
22
29
|
*/
|
|
23
30
|
export type ResumeResult = {
|
|
24
31
|
readonly isResumeFromApproval: true;
|
|
@@ -53,43 +60,20 @@ export interface InterruptValue {
|
|
|
53
60
|
*
|
|
54
61
|
* Returns a `Command(resume=...)` if there are pending interrupts with
|
|
55
62
|
* matching approval decisions; otherwise reports "not a resume" and the
|
|
56
|
-
* caller
|
|
63
|
+
* caller sends the turn's user message.
|
|
57
64
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
65
|
+
* `decisions` is the runtime's reading of the adjudicated rows
|
|
66
|
+
* (`TurnInput.approvalDecisions`, keyed by tool-call id) — the one
|
|
67
|
+
* projection both harnesses agree on; this module never re-derives the
|
|
68
|
+
* verdict from the rows. The graph checkpoint snapshot is read once by the
|
|
69
|
+
* caller and passed in: on the durable (http) saver an extra `getState` is a
|
|
70
|
+
* network round-trip best avoided.
|
|
62
71
|
*/
|
|
63
|
-
export declare function resolveResumeInput(
|
|
64
|
-
/**
|
|
65
|
-
* Terminalize tool calls whose approval decision is non-executing — SKIP or
|
|
66
|
-
* REJECT — so a denied or skipped call is never left stuck at WAITING_APPROVAL.
|
|
67
|
-
*
|
|
68
|
-
* This is the single, authoritative, checkpointer-independent reconciliation of
|
|
69
|
-
* the two decisions that never run the tool: their outcome is fully determined
|
|
70
|
-
* by the recorded decision (ToolCall.approval_action), not by any graph event.
|
|
71
|
-
* APPROVE / APPROVE_ALL are intentionally NOT handled here — the tool actually
|
|
72
|
-
* executes, and real tool events (v3 tool_started → tool_finished) terminalize
|
|
73
|
-
* it in place.
|
|
74
|
-
*
|
|
75
|
-
* Why a decision-derived reconciler rather than the resumed stream: on the
|
|
76
|
-
* durable path (sqlite local / http cloud) the gate returns a denial/skip
|
|
77
|
-
* ToolMessage WITHOUT an on_tool_start/on_tool_end pair, and on the memory path
|
|
78
|
-
* the graph replays without ever re-driving the gate — so in both cases the
|
|
79
|
-
* seeded WAITING_APPROVAL row is never flipped by the stream and would persist
|
|
80
|
-
* on a COMPLETED execution. Folding the recorded decision into a terminal status
|
|
81
|
-
* makes every checkpointer backend behave identically by construction.
|
|
82
|
-
*
|
|
83
|
-
* REJECT and SKIP share TOOL_CALL_SKIPPED as the terminal status (the tool did
|
|
84
|
-
* not run); they stay distinguishable by ToolCall.approval_action and by the
|
|
85
|
-
* append-only approval-event stream (REJECTED vs SKIPPED). Idempotent: a row
|
|
86
|
-
* already resolved carries the same decision and re-resolves identically.
|
|
87
|
-
*/
|
|
88
|
-
export declare function reconcileNonExecutingDecisions(status: AgentExecutionStatus): void;
|
|
72
|
+
export declare function resolveResumeInput(decisions: ReadonlyMap<string, ApprovalAction>, graphState: GraphStateSnapshot): ResumeResult;
|
|
89
73
|
/**
|
|
90
74
|
* Terminalize every tool call the approval gate auto-skipped under UNATTENDED
|
|
91
|
-
* approval mode — the sibling of
|
|
92
|
-
* skips that have no human decision behind them.
|
|
75
|
+
* approval mode — the sibling of the runtime's `terminalizeNonExecutingDecisions`
|
|
76
|
+
* for skips that have no human decision behind them.
|
|
93
77
|
*
|
|
94
78
|
* The gate (the single writer of the registry) records each auto-skipped
|
|
95
79
|
* tool-call id at the moment it returns the skip ToolMessage; this reconciler
|
|
@@ -111,3 +95,21 @@ export declare function reconcileNonExecutingDecisions(status: AgentExecutionSta
|
|
|
111
95
|
* the parent's registry instance.
|
|
112
96
|
*/
|
|
113
97
|
export declare function reconcileUnattendedSkips(status: AgentExecutionStatus, unattendedSkips: ReadonlySet<string> | undefined): void;
|
|
98
|
+
/** A pending LangGraph approval interrupt, normalized from the graph checkpoint. */
|
|
99
|
+
export interface PendingInterrupt {
|
|
100
|
+
readonly toolCallId: string;
|
|
101
|
+
readonly toolName: string;
|
|
102
|
+
readonly mcpServerSlug: string;
|
|
103
|
+
readonly message: string;
|
|
104
|
+
/** Gate provenance carried through the interrupt; undefined → UNSPECIFIED. */
|
|
105
|
+
readonly policySource: PolicySource | undefined;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Normalize the graph checkpoint's un-resumed interrupts into pending
|
|
109
|
+
* approvals — what a stream that ended on a gate left for the user. The
|
|
110
|
+
* caller seeds one WAITING_APPROVAL row per entry and ends the turn awaiting
|
|
111
|
+
* approval; the interrupt carries only `tool_call_id` and `message` beside
|
|
112
|
+
* the gate's own facts, so the row's args are read from the AI message in
|
|
113
|
+
* graph state, never from a second copy here.
|
|
114
|
+
*/
|
|
115
|
+
export declare function detectPendingInterrupts(graphState: GraphStateSnapshot): PendingInterrupt[];
|