@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
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared terminal state handlers for both v2 and v3 streaming loops.
|
|
3
|
-
*
|
|
4
|
-
* Extracted so pause, stop, and recursion-limit handling is identical
|
|
5
|
-
* between both paths — no silent semantic divergence.
|
|
6
|
-
*/
|
|
7
|
-
import { create } from "@bufbuild/protobuf";
|
|
8
|
-
import { AgentMessageSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
9
|
-
import { ExecutionPhase, MessageType } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
10
|
-
import { slimStatus, utcTimestamp } from "../../shared/status.js";
|
|
11
|
-
export function handlePause(writer, eventsProcessed, pendingPublishPromises, pendingWritebackPromises) {
|
|
12
|
-
const status = writer.currentStatus;
|
|
13
|
-
status.phase = ExecutionPhase.EXECUTION_PAUSED;
|
|
14
|
-
status.messages.push(create(AgentMessageSchema, {
|
|
15
|
-
type: MessageType.MESSAGE_SYSTEM,
|
|
16
|
-
content: "Execution paused by user. Use resume to continue from this checkpoint.",
|
|
17
|
-
timestamp: utcTimestamp(),
|
|
18
|
-
}));
|
|
19
|
-
return {
|
|
20
|
-
eventsProcessed,
|
|
21
|
-
terminalStatus: slimStatus(status),
|
|
22
|
-
pendingPublishPromises,
|
|
23
|
-
pendingWritebackPromises,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
export function handleStop(writer, eventsProcessed, pendingPublishPromises, pendingWritebackPromises) {
|
|
27
|
-
const status = writer.currentStatus;
|
|
28
|
-
status.phase = ExecutionPhase.EXECUTION_COMPLETED;
|
|
29
|
-
status.completedAt = utcTimestamp();
|
|
30
|
-
status.messages.push(create(AgentMessageSchema, {
|
|
31
|
-
type: MessageType.MESSAGE_SYSTEM,
|
|
32
|
-
content: "Execution stopped by the platform.",
|
|
33
|
-
timestamp: utcTimestamp(),
|
|
34
|
-
}));
|
|
35
|
-
return {
|
|
36
|
-
eventsProcessed,
|
|
37
|
-
terminalStatus: slimStatus(status),
|
|
38
|
-
pendingPublishPromises,
|
|
39
|
-
pendingWritebackPromises,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Stable prefix of the recursion-limit terminal error. This is a cross-repo
|
|
44
|
-
* contract: consumers that need to distinguish "ran out of tool-call budget"
|
|
45
|
-
* from other TERMINATED causes (e.g. Stigmer Cloud's ChannelReplyExtractor,
|
|
46
|
-
* which shows channel users a friendly limit message instead of generic
|
|
47
|
-
* error copy) match on this prefix, because AgentExecutionStatus carries no
|
|
48
|
-
* structured termination reason. Do not reword without updating them.
|
|
49
|
-
*/
|
|
50
|
-
export const TOOL_CALL_LIMIT_ERROR_PREFIX = "Agent reached the tool-call limit";
|
|
51
|
-
export function handleRecursionLimit(writer, eventsProcessed, pendingPublishPromises, pendingWritebackPromises) {
|
|
52
|
-
const status = writer.currentStatus;
|
|
53
|
-
status.phase = ExecutionPhase.EXECUTION_TERMINATED;
|
|
54
|
-
status.completedAt = utcTimestamp();
|
|
55
|
-
status.error =
|
|
56
|
-
`${TOOL_CALL_LIMIT_ERROR_PREFIX} after processing ${eventsProcessed} events. ` +
|
|
57
|
-
`Send another message to continue.`;
|
|
58
|
-
status.messages.push(create(AgentMessageSchema, {
|
|
59
|
-
type: MessageType.MESSAGE_SYSTEM,
|
|
60
|
-
content: "The agent reached the tool-call limit for this message. " +
|
|
61
|
-
"Work completed so far has been saved. " +
|
|
62
|
-
"Send another message to continue where the agent left off.",
|
|
63
|
-
timestamp: utcTimestamp(),
|
|
64
|
-
}));
|
|
65
|
-
return {
|
|
66
|
-
eventsProcessed,
|
|
67
|
-
terminalStatus: slimStatus(status),
|
|
68
|
-
pendingPublishPromises,
|
|
69
|
-
pendingWritebackPromises,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
export function isGraphRecursionError(err) {
|
|
73
|
-
if (err instanceof Error) {
|
|
74
|
-
return err.constructor.name === "GraphRecursionError" ||
|
|
75
|
-
err.message.includes("GraphRecursionError") ||
|
|
76
|
-
err.message.includes("Recursion limit");
|
|
77
|
-
}
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=streaming-terminal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-terminal.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/streaming-terminal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,8DAA8D,CAAC;AAG3G,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,UAAU,WAAW,CACzB,MAA6B,EAC7B,eAAuB,EACvB,sBAAgD,EAChD,wBAAkD;IAElD,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;IACpC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,gBAAgB,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;QAC9C,IAAI,EAAE,WAAW,CAAC,cAAc;QAChC,OAAO,EAAE,wEAAwE;QACjF,SAAS,EAAE,YAAY,EAAE;KAC1B,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,eAAe;QACf,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC;QAClC,sBAAsB;QACtB,wBAAwB;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,MAA6B,EAC7B,eAAuB,EACvB,sBAAgD,EAChD,wBAAkD;IAElD,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;IACpC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,mBAAmB,CAAC;IAClD,MAAM,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC;IACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;QAC9C,IAAI,EAAE,WAAW,CAAC,cAAc;QAChC,OAAO,EAAE,oCAAoC;QAC7C,SAAS,EAAE,YAAY,EAAE;KAC1B,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,eAAe;QACf,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC;QAClC,sBAAsB;QACtB,wBAAwB;KACzB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,mCAAmC,CAAC;AAEhF,MAAM,UAAU,oBAAoB,CAClC,MAA6B,EAC7B,eAAuB,EACvB,sBAAgD,EAChD,wBAAkD;IAElD,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;IACpC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,oBAAoB,CAAC;IACnD,MAAM,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC;IACpC,MAAM,CAAC,KAAK;QACV,GAAG,4BAA4B,qBAAqB,eAAe,WAAW;YAC9E,mCAAmC,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;QAC9C,IAAI,EAAE,WAAW,CAAC,cAAc;QAChC,OAAO,EACL,0DAA0D;YAC1D,wCAAwC;YACxC,4DAA4D;QAC9D,SAAS,EAAE,YAAY,EAAE;KAC1B,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,eAAe;QACf,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC;QAClC,sBAAsB;QACtB,wBAAwB;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAqB;YACnD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3C,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* V3 streaming execution loop for ExecuteDeepAgent.
|
|
3
|
-
*
|
|
4
|
-
* Feature-flagged path activated by LANGGRAPH_STREAM_EVENTS_VERSION=v3.
|
|
5
|
-
* Calls the v3 streamEvents API (two-arg, returns Promise<GraphRunStream>),
|
|
6
|
-
* iterates raw ProtocolEvents, feeds them through the V3ProtocolNormalizer
|
|
7
|
-
* and V3StatusBuilder, persists status on schedule, and handles terminal
|
|
8
|
-
* conditions (STOP, pause, recursion limit) identically to v2.
|
|
9
|
-
*
|
|
10
|
-
* Phase 2: full orchestration parity with streamExecutionV2.
|
|
11
|
-
*/
|
|
12
|
-
import type { StreamDependencies, StreamResult } from "./streaming.js";
|
|
13
|
-
export declare function streamExecutionV3(deps: StreamDependencies): Promise<StreamResult>;
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* V3 streaming execution loop for ExecuteDeepAgent.
|
|
3
|
-
*
|
|
4
|
-
* Feature-flagged path activated by LANGGRAPH_STREAM_EVENTS_VERSION=v3.
|
|
5
|
-
* Calls the v3 streamEvents API (two-arg, returns Promise<GraphRunStream>),
|
|
6
|
-
* iterates raw ProtocolEvents, feeds them through the V3ProtocolNormalizer
|
|
7
|
-
* and V3StatusBuilder, persists status on schedule, and handles terminal
|
|
8
|
-
* conditions (STOP, pause, recursion limit) identically to v2.
|
|
9
|
-
*
|
|
10
|
-
* Phase 2: full orchestration parity with streamExecutionV2.
|
|
11
|
-
*/
|
|
12
|
-
import { StallTimeoutError } from "./streaming.js";
|
|
13
|
-
import { ExecutionControlSignal, ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
14
|
-
import { createV3EventRecorder } from "./v3-event-recorder.js";
|
|
15
|
-
import { normalize } from "./v3-protocol-normalizer.js";
|
|
16
|
-
import { V3StatusBuilder } from "./v3-status-builder.js";
|
|
17
|
-
import { StreamingUpdateScheduler } from "../../shared/streaming-scheduler.js";
|
|
18
|
-
import { persistStatus, slimStatus } from "../../shared/status.js";
|
|
19
|
-
import { StreamingSideEffects } from "./streaming-side-effects.js";
|
|
20
|
-
import { handlePause, handleStop, handleRecursionLimit, isGraphRecursionError, } from "./streaming-terminal.js";
|
|
21
|
-
const DEFAULT_STALL_TIMEOUT_MS = 120_000;
|
|
22
|
-
const HEARTBEAT_INTERVAL_MS = 2_000;
|
|
23
|
-
const RUN_OUTPUT_TIMEOUT_MS = 30_000;
|
|
24
|
-
export async function streamExecutionV3(deps) {
|
|
25
|
-
const { agentGraph, langgraphInput, langgraphConfig, executionId, client, initialStatus, streamingConfig, retryOptions, offload, stallTimeoutMs = DEFAULT_STALL_TIMEOUT_MS, heartbeatFn, isCancelledFn, gracefulStop, inlinePublisher, writebackCoordinator, approvalProvider, } = deps;
|
|
26
|
-
const statusBuilder = new V3StatusBuilder(executionId, initialStatus);
|
|
27
|
-
if (approvalProvider) {
|
|
28
|
-
statusBuilder.setApprovalProvider(approvalProvider);
|
|
29
|
-
}
|
|
30
|
-
const scheduler = new StreamingUpdateScheduler(streamingConfig);
|
|
31
|
-
const recorder = createV3EventRecorder(executionId, process.env.V3_EVENT_RECORD_DIR);
|
|
32
|
-
const abortController = new AbortController();
|
|
33
|
-
const sideEffects = new StreamingSideEffects({
|
|
34
|
-
inlinePublisher,
|
|
35
|
-
writebackCoordinator,
|
|
36
|
-
});
|
|
37
|
-
// Pre-loop heartbeat to cover the initial await
|
|
38
|
-
sendHeartbeat(heartbeatFn, executionId, 0, statusBuilder);
|
|
39
|
-
const run = await agentGraph.streamEvents(langgraphInput, {
|
|
40
|
-
...langgraphConfig,
|
|
41
|
-
version: "v3",
|
|
42
|
-
signal: abortController.signal,
|
|
43
|
-
});
|
|
44
|
-
let eventsProcessed = 0;
|
|
45
|
-
let lastActivityAt = performance.now();
|
|
46
|
-
const heartbeatTimer = setInterval(() => {
|
|
47
|
-
sendHeartbeat(heartbeatFn, executionId, eventsProcessed, statusBuilder);
|
|
48
|
-
}, HEARTBEAT_INTERVAL_MS);
|
|
49
|
-
try {
|
|
50
|
-
for await (const event of run) {
|
|
51
|
-
if (isCancelledFn?.()) {
|
|
52
|
-
abortController.abort("Cancelled by platform");
|
|
53
|
-
statusBuilder.cancelSubAgents();
|
|
54
|
-
return handlePause(statusBuilder, eventsProcessed, sideEffects.pendingPublishPromises, sideEffects.pendingWritebackPromises);
|
|
55
|
-
}
|
|
56
|
-
lastActivityAt = performance.now();
|
|
57
|
-
recorder?.record(event, eventsProcessed);
|
|
58
|
-
for (const normalized of normalize(event)) {
|
|
59
|
-
statusBuilder.processEvent(normalized);
|
|
60
|
-
}
|
|
61
|
-
sideEffects.onProtocolEvent(event);
|
|
62
|
-
eventsProcessed++;
|
|
63
|
-
const shouldPersist = statusBuilder.forceNextUpdate ||
|
|
64
|
-
scheduler.shouldSendUpdate(eventsProcessed);
|
|
65
|
-
if (shouldPersist) {
|
|
66
|
-
if (statusBuilder.forceNextUpdate) {
|
|
67
|
-
statusBuilder.clearForceFlag();
|
|
68
|
-
}
|
|
69
|
-
statusBuilder.syncSubAgentExecutions();
|
|
70
|
-
// Mid-run live capture (DD-32): attach file_change_progress to the live
|
|
71
|
-
// status before it is persisted. Injected so this loop stays ignorant of
|
|
72
|
-
// file-review specifics; a no-op when the hook is absent or nothing changed.
|
|
73
|
-
const statusToPersist = statusBuilder.currentStatus;
|
|
74
|
-
await deps.beforePersist?.(statusToPersist);
|
|
75
|
-
const signal = await persistStatus(client, executionId, statusToPersist, { offload, retry: retryOptions });
|
|
76
|
-
scheduler.markUpdateSent(eventsProcessed);
|
|
77
|
-
if (signal === ExecutionControlSignal.STOP) {
|
|
78
|
-
console.warn(`[streaming-v3] STOP signal received for execution ${executionId}`);
|
|
79
|
-
if (gracefulStop) {
|
|
80
|
-
gracefulStop.activate("Platform STOP signal");
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
return handleStop(statusBuilder, eventsProcessed, sideEffects.pendingPublishPromises, sideEffects.pendingWritebackPromises);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
checkStallTimeout(lastActivityAt, stallTimeoutMs, executionId);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
if (isGraphRecursionError(err)) {
|
|
92
|
-
await recorder?.flush();
|
|
93
|
-
return handleRecursionLimit(statusBuilder, eventsProcessed, sideEffects.pendingPublishPromises, sideEffects.pendingWritebackPromises);
|
|
94
|
-
}
|
|
95
|
-
throw err;
|
|
96
|
-
}
|
|
97
|
-
finally {
|
|
98
|
-
clearInterval(heartbeatTimer);
|
|
99
|
-
}
|
|
100
|
-
await recorder?.flush();
|
|
101
|
-
if (eventsProcessed === 0) {
|
|
102
|
-
throw new Error("Stream completed without processing any events. " +
|
|
103
|
-
"This may indicate a configuration error or v3 API incompatibility.");
|
|
104
|
-
}
|
|
105
|
-
statusBuilder.syncSubAgentExecutions();
|
|
106
|
-
if (initialStatus.phase === ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL) {
|
|
107
|
-
console.log(`[streaming-v3] execution=${executionId} stream ended with WAITING_FOR_APPROVAL. ` +
|
|
108
|
-
`Not setting COMPLETED. pending_approvals computed server-side.`);
|
|
109
|
-
return {
|
|
110
|
-
eventsProcessed,
|
|
111
|
-
terminalStatus: slimStatus(initialStatus),
|
|
112
|
-
pendingPublishPromises: sideEffects.pendingPublishPromises,
|
|
113
|
-
pendingWritebackPromises: sideEffects.pendingWritebackPromises,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
console.log(`[streaming-v3] execution=${executionId} stream finished — ` +
|
|
117
|
-
`processed ${eventsProcessed} events`);
|
|
118
|
-
const runOutput = await extractRunOutput(run, executionId);
|
|
119
|
-
return {
|
|
120
|
-
eventsProcessed,
|
|
121
|
-
runOutput,
|
|
122
|
-
pendingPublishPromises: sideEffects.pendingPublishPromises,
|
|
123
|
-
pendingWritebackPromises: sideEffects.pendingWritebackPromises,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
// ── Run Output Extraction ────────────────────────────────────────────
|
|
127
|
-
async function extractRunOutput(run, executionId) {
|
|
128
|
-
try {
|
|
129
|
-
const finalState = await Promise.race([
|
|
130
|
-
run.output,
|
|
131
|
-
timeoutPromise(RUN_OUTPUT_TIMEOUT_MS),
|
|
132
|
-
]);
|
|
133
|
-
if (finalState === TIMEOUT_SENTINEL) {
|
|
134
|
-
console.warn(`[streaming-v3] execution=${executionId} — run.output did not resolve ` +
|
|
135
|
-
`within ${RUN_OUTPUT_TIMEOUT_MS}ms. Proceeding without final state.`);
|
|
136
|
-
return undefined;
|
|
137
|
-
}
|
|
138
|
-
const output = finalState;
|
|
139
|
-
console.log(`[streaming-v3] execution=${executionId} — run.output resolved. ` +
|
|
140
|
-
`Keys: [${Object.keys(output ?? {}).join(", ")}]. ` +
|
|
141
|
-
`hasStructuredResponse=${output?.structuredResponse !== undefined}`);
|
|
142
|
-
return output;
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
console.warn(`[streaming-v3] execution=${executionId} — run.output rejected: ${err}`);
|
|
146
|
-
return undefined;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
const TIMEOUT_SENTINEL = Symbol("timeout");
|
|
150
|
-
function timeoutPromise(ms) {
|
|
151
|
-
return new Promise((resolve) => setTimeout(() => resolve(TIMEOUT_SENTINEL), ms));
|
|
152
|
-
}
|
|
153
|
-
// ── Helpers ──────────────────────────────────────────────────────────
|
|
154
|
-
function sendHeartbeat(fn, executionId, eventsProcessed, sb) {
|
|
155
|
-
if (!fn)
|
|
156
|
-
return;
|
|
157
|
-
try {
|
|
158
|
-
fn({
|
|
159
|
-
executionId,
|
|
160
|
-
eventsProcessed,
|
|
161
|
-
messages: sb.currentStatus.messages.length,
|
|
162
|
-
phase: sb.currentStatus.phase,
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
catch { /* swallow */ }
|
|
166
|
-
}
|
|
167
|
-
function checkStallTimeout(lastActivityAt, stallTimeoutMs, executionId) {
|
|
168
|
-
const elapsed = performance.now() - lastActivityAt;
|
|
169
|
-
if (elapsed > stallTimeoutMs) {
|
|
170
|
-
throw new StallTimeoutError(`Agent stream stalled: no events received for ${Math.round(elapsed / 1000)}s ` +
|
|
171
|
-
`for execution ${executionId}`);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=streaming-v3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-v3.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/streaming-v3.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming execution loop for ExecuteDeepAgent.
|
|
3
|
-
*
|
|
4
|
-
* Replaces the Phase 3a invoke() approach with streamEvents() v2
|
|
5
|
-
* consumption. Feeds events to the StatusBuilder, persists status
|
|
6
|
-
* via the scheduler + retry executor, handles terminal conditions
|
|
7
|
-
* (STOP signal, stall, recursion limit, cancellation).
|
|
8
|
-
*
|
|
9
|
-
* Phase 3b-iii: inline artifact publish and incremental git writeback
|
|
10
|
-
* on file-modifying tool completions (write, edit, create).
|
|
11
|
-
*/
|
|
12
|
-
import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
13
|
-
import { type StreamEvent, type ApprovalPolicyProvider } from "./status-builder.js";
|
|
14
|
-
import { type StreamingConfig } from "../../shared/streaming-scheduler.js";
|
|
15
|
-
import { type RetryOptions } from "../../shared/grpc-retry.js";
|
|
16
|
-
import type { ToolOutputOffloadContext } from "../../shared/status-offload.js";
|
|
17
|
-
import type { StigmerClient } from "../../client/stigmer-client.js";
|
|
18
|
-
import type { GracefulStopMiddleware } from "../../middleware/index.js";
|
|
19
|
-
import type { InlinePublisher } from "./inline-publisher.js";
|
|
20
|
-
import type { WriteBackCoordinator } from "../../shared/workspace/writeback-coordinator.js";
|
|
21
|
-
export interface StreamDependencies {
|
|
22
|
-
readonly agentGraph: {
|
|
23
|
-
streamEvents(input: Record<string, unknown>, config: Record<string, unknown>, options: {
|
|
24
|
-
version: string;
|
|
25
|
-
}): AsyncIterable<StreamEvent>;
|
|
26
|
-
};
|
|
27
|
-
readonly langgraphInput: Record<string, unknown>;
|
|
28
|
-
readonly langgraphConfig: Record<string, unknown>;
|
|
29
|
-
readonly executionId: string;
|
|
30
|
-
readonly client: StigmerClient;
|
|
31
|
-
readonly initialStatus: AgentExecutionStatus;
|
|
32
|
-
readonly streamingConfig?: StreamingConfig;
|
|
33
|
-
readonly retryOptions?: RetryOptions;
|
|
34
|
-
/**
|
|
35
|
-
* Offload context for the persist chokepoint. When set, oversized tool
|
|
36
|
-
* outputs (e.g. computer-use screenshots) are spilled to artifact storage so
|
|
37
|
-
* the UI can render them; when omitted, the aggregate size backstop still
|
|
38
|
-
* keeps the payload under the gRPC cap.
|
|
39
|
-
*/
|
|
40
|
-
readonly offload?: ToolOutputOffloadContext;
|
|
41
|
-
readonly stallTimeoutMs?: number;
|
|
42
|
-
/** Temporal heartbeat. Injected so the loop is testable without Temporal. */
|
|
43
|
-
readonly heartbeatFn?: (details: Record<string, unknown>) => void;
|
|
44
|
-
/** Temporal cancellation check. */
|
|
45
|
-
readonly isCancelledFn?: () => boolean;
|
|
46
|
-
/** GracefulStopMiddleware instance for platform STOP signal handling. */
|
|
47
|
-
readonly gracefulStop?: GracefulStopMiddleware;
|
|
48
|
-
/** Inline artifact publisher for file-modifying tool completions. */
|
|
49
|
-
readonly inlinePublisher?: InlinePublisher;
|
|
50
|
-
/** Incremental git write-back coordinator. */
|
|
51
|
-
readonly writebackCoordinator?: WriteBackCoordinator;
|
|
52
|
-
/** Approval policy provider for StatusBuilder tool-call phase tracking. */
|
|
53
|
-
readonly approvalProvider?: ApprovalPolicyProvider;
|
|
54
|
-
/** Streaming protocol version. Defaults to "v2" if unset. */
|
|
55
|
-
readonly streamVersion?: "v2" | "v3";
|
|
56
|
-
/**
|
|
57
|
-
* Optional hook invoked with the live status just before each scheduled
|
|
58
|
-
* persist. Used by mid-run live capture (DD-32) to attach file_change_progress.
|
|
59
|
-
* Kept as an injected callback (closing over the turn's baseline tree / change
|
|
60
|
-
* set id in index.ts) so this loop stays ignorant of file-review specifics.
|
|
61
|
-
*/
|
|
62
|
-
readonly beforePersist?: (status: AgentExecutionStatus) => Promise<void>;
|
|
63
|
-
}
|
|
64
|
-
export interface StreamResult {
|
|
65
|
-
readonly eventsProcessed: number;
|
|
66
|
-
readonly terminalStatus?: unknown;
|
|
67
|
-
readonly pendingPublishPromises: readonly Promise<void>[];
|
|
68
|
-
readonly pendingWritebackPromises: readonly Promise<void>[];
|
|
69
|
-
/** v3 only: the final state from run.output (includes structuredResponse if present). */
|
|
70
|
-
readonly runOutput?: Record<string, unknown>;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Run the streaming loop: consume streamEvents, map to proto via
|
|
74
|
-
* StatusBuilder, persist on schedule, and handle terminal conditions.
|
|
75
|
-
*
|
|
76
|
-
* Routes to v3 when deps.streamVersion === "v3".
|
|
77
|
-
*/
|
|
78
|
-
export declare function streamExecution(deps: StreamDependencies): Promise<StreamResult>;
|
|
79
|
-
export declare class StallTimeoutError extends Error {
|
|
80
|
-
constructor(message: string);
|
|
81
|
-
}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming execution loop for ExecuteDeepAgent.
|
|
3
|
-
*
|
|
4
|
-
* Replaces the Phase 3a invoke() approach with streamEvents() v2
|
|
5
|
-
* consumption. Feeds events to the StatusBuilder, persists status
|
|
6
|
-
* via the scheduler + retry executor, handles terminal conditions
|
|
7
|
-
* (STOP signal, stall, recursion limit, cancellation).
|
|
8
|
-
*
|
|
9
|
-
* Phase 3b-iii: inline artifact publish and incremental git writeback
|
|
10
|
-
* on file-modifying tool completions (write, edit, create).
|
|
11
|
-
*/
|
|
12
|
-
import { ExecutionControlSignal, ExecutionPhase, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
13
|
-
import { StatusBuilder } from "./status-builder.js";
|
|
14
|
-
import { handlePause, handleStop, handleRecursionLimit, isGraphRecursionError, } from "./streaming-terminal.js";
|
|
15
|
-
import { StreamingUpdateScheduler, } from "../../shared/streaming-scheduler.js";
|
|
16
|
-
import { persistStatus, slimStatus } from "../../shared/status.js";
|
|
17
|
-
import { createV2EventRecorder } from "./event-recorder.js";
|
|
18
|
-
import { streamExecutionV3 } from "./streaming-v3.js";
|
|
19
|
-
import { extractFilePath, isFileModifyingTool } from "../../shared/file-tools.js";
|
|
20
|
-
const DEFAULT_STALL_TIMEOUT_MS = 120_000;
|
|
21
|
-
/**
|
|
22
|
-
* Run the streaming loop: consume streamEvents, map to proto via
|
|
23
|
-
* StatusBuilder, persist on schedule, and handle terminal conditions.
|
|
24
|
-
*
|
|
25
|
-
* Routes to v3 when deps.streamVersion === "v3".
|
|
26
|
-
*/
|
|
27
|
-
export async function streamExecution(deps) {
|
|
28
|
-
if (deps.streamVersion === "v3") {
|
|
29
|
-
return streamExecutionV3(deps);
|
|
30
|
-
}
|
|
31
|
-
return streamExecutionV2(deps);
|
|
32
|
-
}
|
|
33
|
-
async function streamExecutionV2(deps) {
|
|
34
|
-
const { agentGraph, langgraphInput, langgraphConfig, executionId, client, initialStatus, streamingConfig, retryOptions, offload, stallTimeoutMs = DEFAULT_STALL_TIMEOUT_MS, heartbeatFn, isCancelledFn, gracefulStop, inlinePublisher, writebackCoordinator, approvalProvider, } = deps;
|
|
35
|
-
const statusBuilder = new StatusBuilder(executionId, initialStatus);
|
|
36
|
-
if (approvalProvider) {
|
|
37
|
-
statusBuilder.setApprovalProvider(approvalProvider);
|
|
38
|
-
}
|
|
39
|
-
const scheduler = new StreamingUpdateScheduler(streamingConfig);
|
|
40
|
-
const recorder = createV2EventRecorder(executionId, process.env.V2_EVENT_RECORD_DIR);
|
|
41
|
-
let eventsProcessed = 0;
|
|
42
|
-
let lastEventTime = performance.now();
|
|
43
|
-
let lastHeartbeatTime = performance.now();
|
|
44
|
-
const heartbeatIntervalMs = 2000;
|
|
45
|
-
const pendingPublishPromises = [];
|
|
46
|
-
const pendingWritebackPromises = [];
|
|
47
|
-
try {
|
|
48
|
-
const stream = agentGraph.streamEvents(langgraphInput, langgraphConfig, { version: "v2" });
|
|
49
|
-
for await (const event of stream) {
|
|
50
|
-
if (isCancelledFn?.()) {
|
|
51
|
-
return handlePause(statusBuilder, eventsProcessed, pendingPublishPromises, pendingWritebackPromises);
|
|
52
|
-
}
|
|
53
|
-
lastEventTime = performance.now();
|
|
54
|
-
recorder?.record(event, eventsProcessed);
|
|
55
|
-
statusBuilder.processEvent(event);
|
|
56
|
-
eventsProcessed++;
|
|
57
|
-
if (event.event === "on_tool_end" && (inlinePublisher || writebackCoordinator)) {
|
|
58
|
-
const filePath = extractFilePathFromToolEnd(event);
|
|
59
|
-
if (filePath) {
|
|
60
|
-
if (inlinePublisher) {
|
|
61
|
-
pendingPublishPromises.push(inlinePublisher.publish(filePath));
|
|
62
|
-
}
|
|
63
|
-
if (writebackCoordinator) {
|
|
64
|
-
pendingWritebackPromises.push(writebackCoordinator.onFileModified(filePath));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
const now = performance.now();
|
|
69
|
-
if (heartbeatFn && (now - lastHeartbeatTime) >= heartbeatIntervalMs) {
|
|
70
|
-
sendHeartbeat(heartbeatFn, executionId, eventsProcessed, statusBuilder);
|
|
71
|
-
lastHeartbeatTime = now;
|
|
72
|
-
}
|
|
73
|
-
const shouldPersist = statusBuilder.forceNextUpdate ||
|
|
74
|
-
scheduler.shouldSendUpdate(eventsProcessed);
|
|
75
|
-
if (shouldPersist) {
|
|
76
|
-
if (statusBuilder.forceNextUpdate) {
|
|
77
|
-
statusBuilder.clearForceFlag();
|
|
78
|
-
}
|
|
79
|
-
// Mid-run live capture (DD-32): attach file_change_progress to the live
|
|
80
|
-
// status before persisting (see streaming-v3.ts for the rationale).
|
|
81
|
-
const statusToPersist = statusBuilder.currentStatus;
|
|
82
|
-
await deps.beforePersist?.(statusToPersist);
|
|
83
|
-
const signal = await persistStatus(client, executionId, statusToPersist, { offload, retry: retryOptions });
|
|
84
|
-
scheduler.markUpdateSent(eventsProcessed);
|
|
85
|
-
if (signal === ExecutionControlSignal.STOP) {
|
|
86
|
-
console.warn(`[streaming] STOP signal received for execution ${executionId}`);
|
|
87
|
-
if (gracefulStop) {
|
|
88
|
-
gracefulStop.activate("Platform STOP signal");
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
return handleStop(statusBuilder, eventsProcessed, pendingPublishPromises, pendingWritebackPromises);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
checkStallTimeout(lastEventTime, stallTimeoutMs, executionId);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (err) {
|
|
99
|
-
if (isGraphRecursionError(err)) {
|
|
100
|
-
return handleRecursionLimit(statusBuilder, eventsProcessed, pendingPublishPromises, pendingWritebackPromises);
|
|
101
|
-
}
|
|
102
|
-
throw err;
|
|
103
|
-
}
|
|
104
|
-
await recorder?.flush();
|
|
105
|
-
if (eventsProcessed === 0) {
|
|
106
|
-
throw new Error("Stream completed without processing any events. " +
|
|
107
|
-
"This may indicate a configuration error.");
|
|
108
|
-
}
|
|
109
|
-
if (initialStatus.phase === ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL) {
|
|
110
|
-
console.log(`[streaming] execution=${executionId} stream ended with WAITING_FOR_APPROVAL. ` +
|
|
111
|
-
`Not setting COMPLETED. pending_approvals computed server-side.`);
|
|
112
|
-
return {
|
|
113
|
-
eventsProcessed,
|
|
114
|
-
terminalStatus: slimStatus(initialStatus),
|
|
115
|
-
pendingPublishPromises,
|
|
116
|
-
pendingWritebackPromises,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
console.log(`[streaming] execution=${executionId} stream finished — ` +
|
|
120
|
-
`processed ${eventsProcessed} events`);
|
|
121
|
-
return { eventsProcessed, pendingPublishPromises, pendingWritebackPromises };
|
|
122
|
-
}
|
|
123
|
-
// Terminal state handlers imported from streaming-terminal.ts
|
|
124
|
-
// ── Helpers ──────────────────────────────────────────────────────────
|
|
125
|
-
function sendHeartbeat(fn, executionId, eventsProcessed, sb) {
|
|
126
|
-
try {
|
|
127
|
-
fn({
|
|
128
|
-
executionId,
|
|
129
|
-
eventsProcessed,
|
|
130
|
-
messages: sb.currentStatus.messages.length,
|
|
131
|
-
phase: sb.currentStatus.phase,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
catch (err) {
|
|
135
|
-
console.warn(`[streaming] Heartbeat failed for ${executionId}:`, err);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
function checkStallTimeout(lastEventTime, stallTimeoutMs, executionId) {
|
|
139
|
-
const elapsed = performance.now() - lastEventTime;
|
|
140
|
-
if (elapsed > stallTimeoutMs) {
|
|
141
|
-
throw new StallTimeoutError(`Agent stream stalled: no events received for ${Math.round(elapsed / 1000)}s ` +
|
|
142
|
-
`for execution ${executionId}`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
function extractFilePathFromToolEnd(event) {
|
|
146
|
-
const toolName = event.name ?? "";
|
|
147
|
-
if (!isFileModifyingTool(toolName))
|
|
148
|
-
return null;
|
|
149
|
-
const input = event.data?.input;
|
|
150
|
-
if (!input)
|
|
151
|
-
return null;
|
|
152
|
-
return extractFilePath(input);
|
|
153
|
-
}
|
|
154
|
-
export class StallTimeoutError extends Error {
|
|
155
|
-
constructor(message) {
|
|
156
|
-
super(message);
|
|
157
|
-
this.name = "StallTimeoutError";
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=streaming.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cost cap middleware for agent execution budget enforcement.
|
|
3
|
-
*
|
|
4
|
-
* Tracks running estimated cost of LLM calls and enforces a
|
|
5
|
-
* configurable cost ceiling:
|
|
6
|
-
*
|
|
7
|
-
* afterModel — extracts usage_metadata from the latest AIMessage,
|
|
8
|
-
* computes incremental cost, accumulates a running total. Injects
|
|
9
|
-
* a warning SystemMessage at ~80% and a termination message at 100%.
|
|
10
|
-
*
|
|
11
|
-
* wrapToolCall — blocks all tool execution when the budget is exceeded,
|
|
12
|
-
* giving the model one final tool-free round to produce a summary.
|
|
13
|
-
*
|
|
14
|
-
* Only injected when maxCostUsd > 0 is explicitly configured.
|
|
15
|
-
*/
|
|
16
|
-
import type { StigmerMiddleware, CostCapConfig } from "./types.js";
|
|
17
|
-
export interface CostCapMiddleware extends StigmerMiddleware {
|
|
18
|
-
readonly runningCost: number;
|
|
19
|
-
readonly exceeded: boolean;
|
|
20
|
-
forSubAgent(): StigmerMiddleware;
|
|
21
|
-
}
|
|
22
|
-
export declare function createCostCapMiddleware(config: CostCapConfig): CostCapMiddleware;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cost-cap.js","sourceRoot":"","sources":["../../src/middleware/cost-cap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Platform-level graceful stop middleware.
|
|
3
|
-
*
|
|
4
|
-
* Activated externally when the platform signals the runner to stop
|
|
5
|
-
* (e.g. via ExecutionControlSignal.STOP from the updateStatus RPC).
|
|
6
|
-
* Once activated, blocks all tool execution and gives the model one
|
|
7
|
-
* final tool-free round to produce a summary.
|
|
8
|
-
*
|
|
9
|
-
* Always injected into the agent graph. Inert until activate() is called.
|
|
10
|
-
*/
|
|
11
|
-
import type { StigmerMiddleware } from "./types.js";
|
|
12
|
-
export interface GracefulStopMiddleware extends StigmerMiddleware {
|
|
13
|
-
readonly activated: boolean;
|
|
14
|
-
activate(reason?: string): void;
|
|
15
|
-
forSubAgent(): StigmerMiddleware;
|
|
16
|
-
}
|
|
17
|
-
export declare function createGracefulStopMiddleware(): GracefulStopMiddleware;
|