@stigmer/runner 3.15.3-dev.20260914121148 → 3.15.3-dev.20260916211208
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 +1 -0
- package/dist/.build-fingerprint +1 -1
- package/dist/__test-utils__/approval-contract/types.d.ts +1 -1
- package/dist/__test-utils__/hermetic-activity.d.ts +61 -7
- package/dist/__test-utils__/hermetic-activity.js +100 -9
- package/dist/__test-utils__/hermetic-activity.js.map +1 -1
- package/dist/__test-utils__/model-registry-fixture.d.ts +22 -3
- package/dist/__test-utils__/model-registry-fixture.js +22 -7
- package/dist/__test-utils__/model-registry-fixture.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.d.ts +2 -2
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.js +2 -2
- package/dist/activities/execute-cursor/__test-utils__/fold.d.ts +61 -0
- package/dist/activities/execute-cursor/__test-utils__/fold.js +94 -0
- package/dist/activities/execute-cursor/__test-utils__/fold.js.map +1 -0
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js +1 -1
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.d.ts +47 -12
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js +41 -10
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.d.ts +15 -6
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js +17 -4
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js.map +1 -1
- package/dist/activities/execute-cursor/adapter.d.ts +4 -4
- package/dist/activities/execute-cursor/adapter.js +4 -4
- package/dist/activities/execute-cursor/approval-policy.d.ts +10 -10
- package/dist/activities/execute-cursor/approval-policy.js +12 -23
- package/dist/activities/execute-cursor/approval-policy.js.map +1 -1
- package/dist/activities/execute-cursor/approval-state.d.ts +35 -1
- package/dist/activities/execute-cursor/approval-state.js +65 -0
- package/dist/activities/execute-cursor/approval-state.js.map +1 -1
- package/dist/activities/execute-cursor/{message-translator.d.ts → boundary-rows.d.ts} +45 -341
- package/dist/activities/execute-cursor/boundary-rows.js +1018 -0
- package/dist/activities/execute-cursor/boundary-rows.js.map +1 -0
- package/dist/activities/execute-cursor/cursor-capabilities.d.ts +1 -1
- package/dist/activities/execute-cursor/cursor-capabilities.js +1 -1
- package/dist/activities/execute-cursor/cursor-event-recorder.d.ts +33 -14
- package/dist/activities/execute-cursor/cursor-event-recorder.js +43 -21
- package/dist/activities/execute-cursor/cursor-event-recorder.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.d.ts +3 -3
- package/dist/activities/execute-cursor/prompt-builder.js +4 -4
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/service-tier.js +1 -2
- package/dist/activities/execute-cursor/service-tier.js.map +1 -1
- package/dist/activities/execute-cursor/sub-agent-steps.d.ts +79 -0
- package/dist/activities/execute-cursor/sub-agent-steps.js +180 -0
- package/dist/activities/execute-cursor/sub-agent-steps.js.map +1 -0
- package/dist/activities/execute-cursor/tool-result.d.ts +49 -0
- package/dist/activities/execute-cursor/tool-result.js +130 -0
- package/dist/activities/execute-cursor/tool-result.js.map +1 -0
- package/dist/activities/execute-cursor/translator.d.ts +178 -0
- package/dist/activities/execute-cursor/translator.js +485 -0
- package/dist/activities/execute-cursor/translator.js.map +1 -0
- package/dist/activities/execute-cursor/turn-boundary.d.ts +15 -5
- package/dist/activities/execute-cursor/turn-boundary.js +10 -14
- 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 +47 -34
- package/dist/activities/execute-cursor/turn-settle.js.map +1 -1
- package/dist/activities/execute-cursor/turn-setup.d.ts +2 -2
- package/dist/activities/execute-cursor/turn-setup.js +5 -5
- package/dist/activities/execute-cursor/turn-setup.js.map +1 -1
- package/dist/activities/execute-cursor/turn-stream.d.ts +23 -14
- package/dist/activities/execute-cursor/turn-stream.js +41 -28
- package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
- package/dist/activities/execute-cursor/turn.d.ts +4 -4
- package/dist/activities/execute-cursor/turn.js +5 -5
- package/dist/activities/execute-cursor/usage-pricing.d.ts +2 -2
- package/dist/activities/execute-cursor/usage-pricing.js +2 -2
- package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.d.ts +2 -2
- package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.js +2 -2
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.d.ts +16 -11
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js +22 -10
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.d.ts +2 -3
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js +2 -3
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.d.ts +12 -3
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js +18 -4
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.d.ts +10 -1
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js +24 -11
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js.map +1 -1
- package/dist/activities/execute-deep-agent/adapter.d.ts +1 -1
- package/dist/activities/execute-deep-agent/adapter.js +1 -1
- package/dist/activities/execute-deep-agent/approval-file-change.d.ts +19 -19
- package/dist/activities/execute-deep-agent/approval-file-change.js +16 -15
- package/dist/activities/execute-deep-agent/approval-file-change.js.map +1 -1
- package/dist/activities/execute-deep-agent/deep-agent-capabilities.d.ts +2 -2
- package/dist/activities/execute-deep-agent/deep-agent-capabilities.js +2 -2
- package/dist/activities/execute-deep-agent/hitl.d.ts +2 -2
- package/dist/activities/execute-deep-agent/hitl.js +2 -2
- package/dist/activities/execute-deep-agent/inline-publisher.d.ts +13 -3
- package/dist/activities/execute-deep-agent/inline-publisher.js +3 -3
- package/dist/activities/execute-deep-agent/inline-publisher.js.map +1 -1
- package/dist/activities/execute-deep-agent/prompt-builder.d.ts +3 -3
- package/dist/activities/execute-deep-agent/prompt-builder.js +6 -7
- package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming-side-effects.d.ts +16 -8
- package/dist/activities/execute-deep-agent/streaming-side-effects.js +20 -33
- package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +3 -3
- package/dist/activities/execute-deep-agent/subagent-transformer.js +1 -1
- package/dist/activities/execute-deep-agent/translator.d.ts +134 -0
- package/dist/activities/execute-deep-agent/translator.js +418 -0
- package/dist/activities/execute-deep-agent/translator.js.map +1 -0
- package/dist/activities/execute-deep-agent/turn-settle.d.ts +13 -7
- package/dist/activities/execute-deep-agent/turn-settle.js +34 -45
- package/dist/activities/execute-deep-agent/turn-settle.js.map +1 -1
- package/dist/activities/execute-deep-agent/turn-setup.d.ts +8 -8
- package/dist/activities/execute-deep-agent/turn-setup.js +7 -7
- package/dist/activities/execute-deep-agent/turn-stream.d.ts +13 -10
- package/dist/activities/execute-deep-agent/turn-stream.js +44 -41
- package/dist/activities/execute-deep-agent/turn-stream.js.map +1 -1
- package/dist/activities/execute-deep-agent/turn.d.ts +3 -3
- package/dist/activities/execute-deep-agent/turn.js +3 -3
- package/dist/config.d.ts +2 -2
- package/dist/harness/approval-decisions.d.ts +1 -1
- package/dist/harness/approval-decisions.js +1 -1
- package/dist/harness/capabilities.d.ts +21 -11
- package/dist/harness/capabilities.js +2 -2
- package/dist/harness/capture.d.ts +4 -4
- package/dist/harness/capture.js +4 -4
- package/dist/harness/persist-chokepoint.d.ts +3 -3
- package/dist/harness/persist-chokepoint.js +3 -3
- package/dist/harness/registry.d.ts +2 -2
- package/dist/harness/registry.js +2 -2
- package/dist/harness/run-turn.d.ts +6 -4
- package/dist/harness/run-turn.js +31 -9
- package/dist/harness/run-turn.js.map +1 -1
- package/dist/harness/stop-controller.d.ts +1 -1
- package/dist/harness/stop-controller.js +1 -1
- package/dist/harness/terminal-table.d.ts +7 -7
- package/dist/harness/terminal-table.js +7 -7
- package/dist/harness/transcript/builder.d.ts +182 -0
- package/dist/harness/transcript/builder.js +693 -0
- package/dist/harness/transcript/builder.js.map +1 -0
- package/dist/harness/transcript/events.d.ts +218 -0
- package/dist/harness/transcript/events.js +50 -0
- package/dist/harness/transcript/events.js.map +1 -0
- package/dist/harness/transcript/state.d.ts +110 -0
- package/dist/harness/transcript/state.js +148 -0
- package/dist/harness/transcript/state.js.map +1 -0
- package/dist/harness/turn-context.d.ts +54 -38
- package/dist/harness/turn-context.js +42 -43
- package/dist/harness/turn-context.js.map +1 -1
- package/dist/harness/types.d.ts +63 -22
- package/dist/harness/types.js +12 -11
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/usage-accumulator.d.ts +2 -2
- package/dist/harness/usage-accumulator.js +2 -2
- package/dist/harness-adapters.d.ts +5 -4
- package/dist/harness-adapters.js +5 -4
- package/dist/harness-adapters.js.map +1 -1
- package/dist/middleware/approval-gate.d.ts +6 -0
- package/dist/middleware/approval-gate.js +7 -57
- package/dist/middleware/approval-gate.js.map +1 -1
- package/dist/middleware/cost-advisory.d.ts +3 -3
- package/dist/middleware/cost-advisory.js +3 -3
- package/dist/middleware/index.d.ts +1 -1
- package/dist/middleware/index.js +1 -1
- package/dist/runner-manager.js +1 -1
- package/dist/runner-manager.js.map +1 -1
- package/dist/shared/approval-policy.d.ts +53 -0
- package/dist/shared/approval-policy.js +76 -0
- package/dist/shared/approval-policy.js.map +1 -1
- package/dist/shared/args-preview.d.ts +45 -22
- package/dist/shared/args-preview.js +51 -41
- package/dist/shared/args-preview.js.map +1 -1
- package/dist/shared/attachment-resolver.d.ts +4 -4
- package/dist/shared/attachment-resolver.js +4 -4
- package/dist/shared/attachment-zip.d.ts +2 -2
- package/dist/shared/attachment-zip.js +2 -2
- package/dist/shared/cost-guard.d.ts +2 -2
- package/dist/shared/cost-guard.js +2 -2
- package/dist/shared/exact-apply.d.ts +1 -1
- package/dist/shared/exact-apply.js +1 -1
- package/dist/shared/execution-context.d.ts +2 -2
- package/dist/shared/execution-context.js +2 -2
- package/dist/shared/extract-structured-output.d.ts +2 -2
- package/dist/shared/extract-structured-output.js +2 -2
- package/dist/shared/filereview/cas-touched.d.ts +2 -2
- package/dist/shared/filereview/cas-touched.js +2 -2
- package/dist/shared/heartbeat.d.ts +1 -1
- package/dist/shared/heartbeat.js +1 -1
- package/dist/shared/llm-backend.d.ts +0 -4
- package/dist/shared/llm-backend.js +0 -4
- package/dist/shared/llm-backend.js.map +1 -1
- package/dist/shared/model-error.d.ts +1 -2
- package/dist/shared/model-error.js +1 -2
- package/dist/shared/model-error.js.map +1 -1
- package/dist/shared/persist-decision.d.ts +18 -24
- package/dist/shared/persist-decision.js +19 -11
- package/dist/shared/persist-decision.js.map +1 -1
- package/dist/shared/prompt-sections.d.ts +4 -4
- package/dist/shared/prompt-sections.js +4 -4
- package/dist/shared/skill-resolver.d.ts +3 -3
- package/dist/shared/skill-resolver.js +3 -3
- package/dist/shared/status-offload.d.ts +1 -1
- package/dist/shared/status-offload.js +2 -2
- package/dist/shared/status-offload.js.map +1 -1
- package/dist/shared/streaming-scheduler.d.ts +2 -7
- package/dist/shared/streaming-scheduler.js +6 -14
- package/dist/shared/streaming-scheduler.js.map +1 -1
- package/dist/shared/subagent-rows.d.ts +2 -2
- package/dist/shared/subagent-rows.js +2 -2
- package/dist/shared/todos.d.ts +3 -3
- package/dist/shared/todos.js +3 -3
- package/dist/shared/tool-row.d.ts +19 -1
- package/dist/shared/tool-row.js +36 -2
- package/dist/shared/tool-row.js.map +1 -1
- package/dist/shared/worker-shutdown.d.ts +1 -1
- package/dist/shared/worker-shutdown.js +1 -1
- package/dist/shared/workspace/session-provision.d.ts +1 -1
- package/dist/shared/workspace/session-provision.js +1 -1
- package/dist/shared/workspace/sources/empty.d.ts +1 -1
- package/dist/shared/workspace/sources/empty.js +1 -2
- package/dist/shared/workspace/sources/empty.js.map +1 -1
- package/dist/shared/workspace/sources/git.js +4 -4
- package/dist/shared/workspace/sources/git.js.map +1 -1
- package/dist/shared/workspace/sources/local-path.js +6 -6
- package/dist/shared/workspace/sources/local-path.js.map +1 -1
- package/dist/shared/workspace/stigmer-link.d.ts +1 -1
- package/dist/shared/workspace/stigmer-link.js +1 -1
- package/dist/shared/workspace/types.d.ts +2 -5
- package/dist/shared/workspace/types.js +0 -6
- package/dist/shared/workspace/types.js.map +1 -1
- package/dist/shared/workspace/writeback-coordinator.d.ts +17 -4
- package/dist/shared/workspace/writeback-coordinator.js +7 -9
- package/dist/shared/workspace/writeback-coordinator.js.map +1 -1
- package/package.json +4 -4
- package/src/__test-utils__/__tests__/execution-record-barrier.test.ts +70 -0
- package/src/__test-utils__/__tests__/harness-contract-self-check.test.ts +35 -1
- package/src/__test-utils__/approval-contract/contract.ts +1 -1
- package/src/__test-utils__/approval-contract/types.ts +1 -1
- package/src/__test-utils__/harness-boot-order-child.ts +1 -1
- package/src/__test-utils__/harness-contract/contract.ts +8 -8
- package/src/__test-utils__/harness-contract/recording-sink.ts +11 -1
- package/src/__test-utils__/harness-contract/runtime-contract.ts +52 -16
- package/src/__test-utils__/harness-contract/scripted-adapter.ts +47 -43
- package/src/__test-utils__/hermetic-activity.ts +113 -9
- package/src/__test-utils__/model-registry-fixture.ts +31 -7
- package/src/__test-utils__/module-specifiers.ts +32 -3
- package/src/__tests__/harness-boot-order.test.ts +1 -1
- package/src/__tests__/harness-contract.test.ts +1 -1
- package/src/__tests__/runner-manager.test.ts +1 -1
- package/src/activities/execute-cursor/__test-utils__/__tests__/scripted-double.test.ts +1 -1
- package/src/activities/execute-cursor/__test-utils__/contract-subject.ts +2 -2
- package/src/activities/execute-cursor/__test-utils__/fold.ts +116 -0
- package/src/activities/execute-cursor/__test-utils__/gateway-substrate.ts +1 -1
- package/src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts +67 -17
- package/src/activities/execute-cursor/__test-utils__/scripted-agent.ts +19 -5
- package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/approval-state.test.ts +14 -21
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +3 -3
- package/src/activities/execute-cursor/__tests__/coarse-fingerprint.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/cursor-event-recorder.test.ts +142 -0
- package/src/activities/execute-cursor/__tests__/cursor-fetch-interceptor-bypass.test.ts +19 -8
- package/src/activities/execute-cursor/__tests__/cursor-sdk-auth-smoke.test.ts +10 -8
- package/src/activities/execute-cursor/__tests__/cursor-transcript-live.test.ts +298 -0
- package/src/activities/execute-cursor/__tests__/deny-gate-exact-apply.test.ts +4 -2
- package/src/activities/execute-cursor/__tests__/fetch-interceptor.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/deny-and-retry.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/file-review-capture.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/mcp-tool-call.status.json +71 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/sdk-task-note.status.json +73 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.error-delta.status.json +78 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.output-first.status.json +72 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.status.json +72 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/sub-agent-delegation.status.json +109 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/thinking-turn.status.json +78 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/todo-write.status.json +119 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-error.status.json +68 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-only-step.status.json +67 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/unattributed-hook-block.status.json +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/harness-contract.test.ts +7 -7
- package/src/activities/execute-cursor/__tests__/hermetic/mcp-tool-call.test.ts +146 -0
- package/src/activities/execute-cursor/__tests__/hermetic/pause-vs-shutdown.test.ts +5 -5
- package/src/activities/execute-cursor/__tests__/hermetic/plain-turn.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/hermetic/run-wait-arms.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/hermetic/sdk-task-note.test.ts +122 -0
- package/src/activities/execute-cursor/__tests__/hermetic/shell-output-delta.test.ts +276 -0
- package/src/activities/execute-cursor/__tests__/hermetic/stream-self-stop-arms.test.ts +8 -8
- package/src/activities/execute-cursor/__tests__/hermetic/sub-agent-delegation.test.ts +196 -0
- package/src/activities/execute-cursor/__tests__/hermetic/thinking-turn.test.ts +145 -0
- package/src/activities/execute-cursor/__tests__/hermetic/thrown-error-arms.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/todo-write.test.ts +165 -0
- package/src/activities/execute-cursor/__tests__/hermetic/tool-call.test.ts +3 -3
- package/src/activities/execute-cursor/__tests__/hermetic/tool-error.test.ts +138 -0
- package/src/activities/execute-cursor/__tests__/hermetic/tool-only-step.test.ts +130 -0
- package/src/activities/execute-cursor/__tests__/hermetic/unattributed-hook-block.test.ts +13 -1
- package/src/activities/execute-cursor/__tests__/hermetic/workspace-lock-timeout.test.ts +2 -2
- package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +43 -60
- package/src/activities/execute-cursor/__tests__/hitl-resume-history.test.ts +23 -28
- package/src/activities/execute-cursor/__tests__/hook-script.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/http2-interceptor.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/prompt-goldens.test.ts +5 -5
- package/src/activities/execute-cursor/__tests__/same-identity-reproposal.test.ts +11 -13
- package/src/activities/execute-cursor/__tests__/sequential-gate-resume.test.ts +8 -11
- package/src/activities/execute-cursor/__tests__/tool-result-image.test.ts +8 -22
- package/src/activities/execute-cursor/__tests__/translator.test.ts +594 -0
- package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +8 -5
- package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +87 -63
- package/src/activities/execute-cursor/adapter.ts +4 -4
- package/src/activities/execute-cursor/approval-policy.ts +12 -24
- package/src/activities/execute-cursor/approval-state.ts +66 -1
- package/src/activities/execute-cursor/boundary-rows.ts +1132 -0
- package/src/activities/execute-cursor/cursor-capabilities.ts +1 -1
- package/src/activities/execute-cursor/cursor-event-recorder.ts +57 -28
- package/src/activities/execute-cursor/fetch-interceptor.ts +1 -1
- package/src/activities/execute-cursor/http2-interceptor.ts +1 -1
- package/src/activities/execute-cursor/prompt-builder.ts +6 -6
- package/src/activities/execute-cursor/service-tier.ts +1 -2
- package/src/activities/execute-cursor/sub-agent-steps.ts +188 -0
- package/src/activities/execute-cursor/tool-result.ts +128 -0
- package/src/activities/execute-cursor/translator.ts +541 -0
- package/src/activities/execute-cursor/turn-boundary.ts +21 -14
- package/src/activities/execute-cursor/turn-settle.ts +46 -34
- package/src/activities/execute-cursor/turn-setup.ts +5 -5
- package/src/activities/execute-cursor/turn-stream.ts +49 -46
- package/src/activities/execute-cursor/turn.ts +5 -5
- package/src/activities/execute-cursor/usage-pricing.ts +2 -2
- package/src/activities/execute-deep-agent/__test-utils__/contract-subject.ts +2 -2
- package/src/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.ts +23 -11
- package/src/activities/execute-deep-agent/__test-utils__/hitl-script.ts +1 -1
- package/src/activities/execute-deep-agent/__test-utils__/scripted-model-module.ts +2 -3
- package/src/activities/execute-deep-agent/__test-utils__/scripted-model.ts +25 -4
- package/src/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.ts +25 -11
- package/src/activities/execute-deep-agent/__tests__/adapter-graph-is-sdk-free.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/adapter-is-temporal-free.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/approval-file-change.test.ts +6 -17
- package/src/activities/execute-deep-agent/__tests__/hermetic/file-review-capture.test.ts +25 -8
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn1.status.json +2 -7
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn2.status.json +4 -14
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve.turn2.status.json +1 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/file-review-capture.status.json +4 -7
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/gate.turn1.status.json +1 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn1.status.json +2 -9
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn2.status.json +2 -9
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.after-tool.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.mid-tool.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/platform-stop.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/recursion-limit.persisted.status.json +109 -76
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/reject.turn2.status.json +1 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn2.status.json +2 -10
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn3.status.json +2 -10
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/skip.turn2.status.json +1 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sub-agent-delegation.status.json +3 -6
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/tool-call.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/worker-shutdown.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/write-todos.status.json +92 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/harness-contract.test.ts +3 -3
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-approve-all-lease.test.ts +9 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-round-trips.test.ts +3 -3
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-sequential-gates.test.ts +3 -3
- package/src/activities/execute-deep-agent/__tests__/hermetic/inline-artifact-across-gate.test.ts +7 -6
- package/src/activities/execute-deep-agent/__tests__/hermetic/pause-vs-shutdown.test.ts +10 -11
- package/src/activities/execute-deep-agent/__tests__/hermetic/plain-turn.test.ts +4 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/platform-stop.test.ts +9 -8
- package/src/activities/execute-deep-agent/__tests__/hermetic/recursion-limit.test.ts +21 -13
- package/src/activities/execute-deep-agent/__tests__/hermetic/resolution-error.test.ts +2 -2
- package/src/activities/execute-deep-agent/__tests__/hermetic/structured-output.test.ts +7 -7
- package/src/activities/execute-deep-agent/__tests__/hermetic/sub-agent-delegation.test.ts +28 -12
- package/src/activities/execute-deep-agent/__tests__/hermetic/tool-call.test.ts +21 -21
- package/src/activities/execute-deep-agent/__tests__/hermetic/workspace-lock-timeout.test.ts +5 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/write-todos.test.ts +160 -0
- package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +35 -30
- package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +3 -4
- package/src/activities/execute-deep-agent/__tests__/prompt-goldens.test.ts +12 -10
- package/src/activities/execute-deep-agent/__tests__/scripted-model.test.ts +13 -3
- package/src/activities/execute-deep-agent/__tests__/streaming-side-effects.test.ts +26 -18
- package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/{subagent-tracker.test.ts → translator-subagents.test.ts} +76 -57
- package/src/activities/execute-deep-agent/__tests__/{v3-status-builder.test.ts → translator-through-builder.test.ts} +213 -299
- package/src/activities/execute-deep-agent/__tests__/translator.test.ts +505 -0
- package/src/activities/execute-deep-agent/__tests__/turn-stream.test.ts +11 -29
- package/src/activities/execute-deep-agent/adapter.ts +1 -1
- package/src/activities/execute-deep-agent/approval-file-change.ts +20 -22
- package/src/activities/execute-deep-agent/deep-agent-capabilities.ts +2 -2
- package/src/activities/execute-deep-agent/hitl.ts +2 -2
- package/src/activities/execute-deep-agent/inline-publisher.ts +16 -5
- package/src/activities/execute-deep-agent/prompt-builder.ts +6 -7
- package/src/activities/execute-deep-agent/streaming-side-effects.ts +22 -31
- package/src/activities/execute-deep-agent/subagent-transformer.ts +3 -3
- package/src/activities/execute-deep-agent/translator.ts +463 -0
- package/src/activities/execute-deep-agent/turn-settle.ts +35 -43
- package/src/activities/execute-deep-agent/turn-setup.ts +8 -8
- package/src/activities/execute-deep-agent/turn-stream.ts +53 -51
- package/src/activities/execute-deep-agent/turn.ts +3 -3
- package/src/config.ts +2 -2
- package/src/harness/README.md +335 -0
- package/src/harness/__tests__/approval-decisions.test.ts +2 -2
- package/src/harness/__tests__/capture.test.ts +3 -3
- package/src/harness/__tests__/import-direction.test.ts +3 -2
- package/src/harness/__tests__/mount-skills.test.ts +4 -1
- package/src/harness/__tests__/readme-index.test.ts +339 -0
- package/src/harness/__tests__/run-turn.test.ts +131 -6
- package/src/harness/__tests__/transcript-is-engine-free.test.ts +83 -0
- package/src/harness/__tests__/transcript-writers.test.ts +191 -0
- package/src/harness/__tests__/turn-attachments-vision.test.ts +5 -2
- package/src/harness/__tests__/turn-context.test.ts +5 -5
- package/src/harness/approval-decisions.ts +1 -1
- package/src/harness/capabilities.ts +21 -11
- package/src/harness/capture.ts +4 -4
- package/src/harness/persist-chokepoint.ts +3 -3
- package/src/harness/registry.ts +2 -2
- package/src/harness/run-turn.ts +33 -9
- package/src/harness/stop-controller.ts +1 -1
- package/src/harness/terminal-table.ts +7 -7
- package/src/harness/transcript/__tests__/builder.test.ts +975 -0
- package/src/harness/transcript/__tests__/state.test.ts +143 -0
- package/src/harness/transcript/builder.ts +755 -0
- package/src/harness/transcript/events.ts +262 -0
- package/src/harness/transcript/state.ts +167 -0
- package/src/harness/turn-context.ts +61 -46
- package/src/harness/types.ts +64 -22
- package/src/harness/usage-accumulator.ts +2 -2
- package/src/harness-adapters.ts +5 -4
- package/src/middleware/__tests__/cost-advisory.test.ts +2 -2
- package/src/middleware/approval-gate.ts +7 -74
- package/src/middleware/cost-advisory.ts +3 -3
- package/src/middleware/index.ts +1 -1
- package/src/runner-manager.ts +1 -1
- package/src/shared/__tests__/approval-policy.test.ts +45 -0
- package/src/shared/__tests__/args-preview.test.ts +40 -20
- package/src/shared/__tests__/attachment-naming.test.ts +1 -1
- package/src/shared/__tests__/attachment-resolver.test.ts +5 -5
- package/src/shared/__tests__/attachment-zip.test.ts +1 -1
- package/src/shared/__tests__/blueprint-resolver.test.ts +1 -1
- package/src/shared/__tests__/cost-guard.test.ts +1 -1
- package/src/shared/__tests__/exact-apply.test.ts +2 -1
- package/src/shared/__tests__/persist-decision.test.ts +19 -33
- package/src/shared/__tests__/prompt-sections.test.ts +1 -1
- package/src/shared/__tests__/stamp-flowed-rows.test.ts +1 -1
- package/src/shared/__tests__/status-offload.test.ts +1 -1
- package/src/shared/__tests__/streaming-scheduler.test.ts +8 -9
- package/src/shared/__tests__/todos.test.ts +1 -1
- package/src/shared/__tests__/tool-row.test.ts +1 -1
- package/src/shared/approval-policy.ts +95 -0
- package/src/shared/args-preview.ts +51 -42
- package/src/shared/attachment-resolver.ts +4 -4
- package/src/shared/attachment-zip.ts +2 -2
- package/src/shared/cost-guard.ts +2 -2
- package/src/shared/exact-apply.ts +1 -1
- package/src/shared/execution-context.ts +2 -2
- package/src/shared/extract-structured-output.ts +2 -2
- package/src/shared/filereview/__tests__/capture.test.ts +9 -5
- package/src/shared/filereview/__tests__/git-substrate.test.ts +4 -1
- package/src/shared/filereview/__tests__/proxy-reconcile.test.ts +3 -3
- package/src/shared/filereview/cas-touched.ts +2 -2
- package/src/shared/heartbeat.ts +1 -1
- package/src/shared/llm-backend.ts +0 -4
- package/src/shared/model-error.ts +1 -2
- package/src/shared/persist-decision.ts +19 -28
- package/src/shared/prompt-sections.ts +4 -4
- package/src/shared/skill-resolver.ts +3 -3
- package/src/shared/status-offload.ts +2 -2
- package/src/shared/streaming-scheduler.ts +8 -13
- package/src/shared/subagent-rows.ts +2 -2
- package/src/shared/todos.ts +3 -3
- package/src/shared/tool-row.ts +38 -2
- package/src/shared/worker-shutdown.ts +1 -1
- package/src/shared/workspace/__tests__/git-source.test.ts +3 -3
- package/src/shared/workspace/__tests__/provisioner.test.ts +5 -5
- package/src/shared/workspace/__tests__/session-provision.test.ts +2 -2
- package/src/shared/workspace/__tests__/writeback-coordinator.integration.test.ts +8 -9
- package/src/shared/workspace/__tests__/writeback-coordinator.test.ts +25 -25
- package/src/shared/workspace/provisioner.ts +1 -1
- package/src/shared/workspace/session-provision.ts +1 -1
- package/src/shared/workspace/sources/empty.ts +2 -2
- package/src/shared/workspace/sources/git.ts +3 -4
- package/src/shared/workspace/sources/local-path.ts +5 -6
- package/src/shared/workspace/stigmer-link.ts +1 -1
- package/src/shared/workspace/types.ts +2 -5
- package/src/shared/workspace/writeback-coordinator.ts +23 -12
- package/dist/activities/execute-cursor/delta-enricher.d.ts +0 -87
- package/dist/activities/execute-cursor/delta-enricher.js +0 -265
- package/dist/activities/execute-cursor/delta-enricher.js.map +0 -1
- package/dist/activities/execute-cursor/message-translator.js +0 -2040
- package/dist/activities/execute-cursor/message-translator.js.map +0 -1
- package/dist/activities/execute-cursor/todo-tracker.d.ts +0 -40
- package/dist/activities/execute-cursor/todo-tracker.js +0 -80
- package/dist/activities/execute-cursor/todo-tracker.js.map +0 -1
- package/dist/activities/execute-deep-agent/execution-state.d.ts +0 -54
- package/dist/activities/execute-deep-agent/execution-state.js +0 -68
- package/dist/activities/execute-deep-agent/execution-state.js.map +0 -1
- package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +0 -65
- package/dist/activities/execute-deep-agent/status-builder-shared.js +0 -90
- package/dist/activities/execute-deep-agent/status-builder-shared.js.map +0 -1
- package/dist/activities/execute-deep-agent/subagent-tracker.d.ts +0 -113
- package/dist/activities/execute-deep-agent/subagent-tracker.js +0 -400
- package/dist/activities/execute-deep-agent/subagent-tracker.js.map +0 -1
- package/dist/activities/execute-deep-agent/v3-events.d.ts +0 -102
- package/dist/activities/execute-deep-agent/v3-events.js +0 -35
- package/dist/activities/execute-deep-agent/v3-events.js.map +0 -1
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.d.ts +0 -15
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js +0 -235
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js.map +0 -1
- package/dist/activities/execute-deep-agent/v3-status-builder.d.ts +0 -111
- package/dist/activities/execute-deep-agent/v3-status-builder.js +0 -457
- package/dist/activities/execute-deep-agent/v3-status-builder.js.map +0 -1
- package/dist/shared/execution-status-writer.d.ts +0 -31
- package/dist/shared/execution-status-writer.js +0 -43
- package/dist/shared/execution-status-writer.js.map +0 -1
- package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +0 -310
- package/src/activities/execute-cursor/__tests__/message-translator.test.ts +0 -1033
- package/src/activities/execute-cursor/__tests__/todo-tracker.test.ts +0 -498
- package/src/activities/execute-cursor/delta-enricher.ts +0 -307
- package/src/activities/execute-cursor/message-translator.ts +0 -2319
- package/src/activities/execute-cursor/todo-tracker.ts +0 -91
- package/src/activities/execute-deep-agent/__tests__/execution-state-extended.test.ts +0 -148
- package/src/activities/execute-deep-agent/__tests__/execution-state.test.ts +0 -154
- package/src/activities/execute-deep-agent/__tests__/status-builder-shared.test.ts +0 -47
- package/src/activities/execute-deep-agent/__tests__/v3-protocol-normalizer.test.ts +0 -324
- package/src/activities/execute-deep-agent/execution-state.ts +0 -78
- package/src/activities/execute-deep-agent/status-builder-shared.ts +0 -142
- package/src/activities/execute-deep-agent/subagent-tracker.ts +0 -479
- package/src/activities/execute-deep-agent/v3-events.ts +0 -153
- package/src/activities/execute-deep-agent/v3-protocol-normalizer.ts +0 -264
- package/src/activities/execute-deep-agent/v3-status-builder.ts +0 -565
- package/src/shared/execution-status-writer.ts +0 -56
package/README.md
CHANGED
|
@@ -235,3 +235,4 @@ These tune internal behavior or support testing. Most operators never set them.
|
|
|
235
235
|
- **[Embedding integration guide](https://stigmer.ai/docs/guides/runners/embedding)** — building a desktop client (local execution) and a web client (cloud execution), including the per-audience configuration each one passes.
|
|
236
236
|
- **SDK `RunnerAdapter` and `executionTarget`** — the local-execution surfaces in `@stigmer/react` and `@stigmer/sdk`. The [embedding guide](https://stigmer.ai/docs/guides/runners/embedding) covers them today; a dedicated SDK reference is forthcoming.
|
|
237
237
|
- **Public API** — `src/index.ts` exports `createStigmerRunner` and `createStigmerRunnerManager` with typed options and inline examples.
|
|
238
|
+
- **[Adding a harness](src/harness/README.md)** — the turn runtime, the adapter contract, the contract kit, and the checklist of files inside and outside the runner a new harness touches.
|
package/dist/.build-fingerprint
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"hash":"
|
|
1
|
+
{"hash":"b761337062657b9e","builtAt":"2026-09-16T21:16:19.857Z","fileCount":325}
|
|
@@ -133,7 +133,7 @@ export interface SubstrateCapabilities {
|
|
|
133
133
|
* and stamps the source at interrupt time (`true`); the Cursor substrate's
|
|
134
134
|
* provenance is a reconstruction-time projection over the persisted tool call,
|
|
135
135
|
* not a property of the hook's deny decision, so it is `false` here and is
|
|
136
|
-
* covered instead by the
|
|
136
|
+
* covered instead by the translator, boundary-rows and corpus suites.
|
|
137
137
|
*/
|
|
138
138
|
readonly surfacesGatePolicySource: boolean;
|
|
139
139
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* and driven by the framework's own activity environment. Both harnesses now
|
|
15
15
|
* run on it (`execute-cursor/__test-utils__/hermetic-cursor.ts`,
|
|
16
16
|
* `execute-deep-agent/__test-utils__/hermetic-deep-agent.ts`), and the earlier
|
|
17
|
-
* native tests were re-homed onto the native driver (
|
|
17
|
+
* native tests were re-homed onto the native driver (#1096), their assertions
|
|
18
18
|
* carried into `execute-deep-agent/__tests__/hermetic/`.
|
|
19
19
|
*
|
|
20
20
|
* What is generic here and what is not: everything an activity touches that is
|
|
@@ -55,11 +55,22 @@
|
|
|
55
55
|
* Determinism: the clock is faked for `Date` ONLY (`vi.useFakeTimers({ toFake:
|
|
56
56
|
* ["Date"] })`) and TICKS — the harness double advances it a fixed quantum per
|
|
57
57
|
* script step through {@link ScriptedClock}. Frozen time would make
|
|
58
|
-
*
|
|
58
|
+
* the streaming scheduler's cadence (`Date.now()` against its last send) never
|
|
59
59
|
* elapse and silently skip the mid-stream persist path production always runs;
|
|
60
60
|
* a ticking clock runs the same path and lands on the same instants every run.
|
|
61
61
|
* Timers stay real so the periodic heartbeat and the stall watchdog behave.
|
|
62
62
|
*
|
|
63
|
+
* The live posture (#1097's live-run gate): a `CURSOR_API_KEY`-gated live
|
|
64
|
+
* instrument keeps all three substitutions above — the real `Context`, the
|
|
65
|
+
* record behind the client, the temp environment — and drops only the
|
|
66
|
+
* harness's SDK double, so the REAL activity runs against the REAL vendor SDK
|
|
67
|
+
* with everything the activity persists still readable from the record.
|
|
68
|
+
* Two things differ from a hermetic run and both are the caller's explicit
|
|
69
|
+
* choice: no `ScriptedClock` is installed (the real SDK is not ticked, and a
|
|
70
|
+
* frozen clock would skip the persist cadence production runs), and the
|
|
71
|
+
* environment may name an `eventRecordingDir` so the run leaves a recording.
|
|
72
|
+
* The harness's driver names the entry (`beginLiveCursorScenario`).
|
|
73
|
+
*
|
|
63
74
|
* Not in scope: this module never edits a production module and never
|
|
64
75
|
* normalizes output. If a golden is not byte-stable, the volatile source is
|
|
65
76
|
* controlled at its origin or the surprise is escalated — never redacted here.
|
|
@@ -120,6 +131,8 @@ export declare class ExecutionRecord {
|
|
|
120
131
|
private readonly controlSignal;
|
|
121
132
|
/** Every `updateStatus` payload, in order, snapshotted at write time. */
|
|
122
133
|
readonly persisted: AgentExecutionStatus[];
|
|
134
|
+
/** Fired after every full-status `applyStatusUpdate`; {@link whenToolCallsSettled} subscribes here. */
|
|
135
|
+
private readonly persistListeners;
|
|
123
136
|
/** Setup-progress labels reported before the stream started, in order. */
|
|
124
137
|
readonly setupProgress: string[];
|
|
125
138
|
/**
|
|
@@ -142,6 +155,37 @@ export declare class ExecutionRecord {
|
|
|
142
155
|
get persistedPhases(): ExecutionPhase[];
|
|
143
156
|
/** Every tool call on the held transcript (top-level messages), in order. */
|
|
144
157
|
toolCalls(): ToolCall[];
|
|
158
|
+
/**
|
|
159
|
+
* Resolves once every one of `ids` is a SETTLED row (not RUNNING) in a status
|
|
160
|
+
* the activity has persisted — root messages and every sub-agent's alike.
|
|
161
|
+
* Resolves at once for an empty list or when they already are.
|
|
162
|
+
*
|
|
163
|
+
* This is the barrier a real model gives the runtime for free and a
|
|
164
|
+
* scripted one does not: a model that takes 300 ms to answer never starts
|
|
165
|
+
* its next turn before the loop has folded and persisted the tool results
|
|
166
|
+
* it is answering, while `ScriptedModel` answers instantly and LangGraph's
|
|
167
|
+
* producer can run a whole turn ahead of the consumer while the consumer
|
|
168
|
+
* awaits one mid-stream persist (on a git workspace that persist shells out
|
|
169
|
+
* for `file_change_progress`). The stamps the consumer writes at apply time
|
|
170
|
+
* then land on either side of the scripted clock's next tick depending on
|
|
171
|
+
* I/O timing — a golden that flips between `:01` and `:02` on the day. The
|
|
172
|
+
* driver awaits this before it ticks (`hermetic-deep-agent.ts`), so every
|
|
173
|
+
* stamp of turn N precedes turn N+1's instant, run after run.
|
|
174
|
+
*
|
|
175
|
+
* Why "settled" and not "seen": the row's `completedAt` is stamped when the
|
|
176
|
+
* tool's end event is applied, and the producer calls the next model turn
|
|
177
|
+
* right after emitting that event, so a barrier on the row merely existing
|
|
178
|
+
* would still race the completion stamp. The persist that carries the
|
|
179
|
+
* settled row always exists: a tool's finish forces one (the builder's
|
|
180
|
+
* force flag), and a turn followed by another turn always has a tool call.
|
|
181
|
+
*
|
|
182
|
+
* Bounded by real time (timers are real under the scripted clock): a
|
|
183
|
+
* scenario that breaks the fact above — a persist that never carries the
|
|
184
|
+
* row — fails naming the ids still open, never hangs.
|
|
185
|
+
*/
|
|
186
|
+
whenToolCallsSettled(ids: readonly string[], timeoutMs?: number): Promise<void>;
|
|
187
|
+
/** The ids of every row not RUNNING in the held status, across the root and every sub-agent transcript. */
|
|
188
|
+
private settledToolCallIds;
|
|
145
189
|
/** The tool calls currently paused for a decision. */
|
|
146
190
|
waitingToolCalls(): ToolCall[];
|
|
147
191
|
/**
|
|
@@ -198,6 +242,15 @@ export declare function bindHermeticClient(client: StigmerClient): void;
|
|
|
198
242
|
export declare function hermeticStigmerClientModule(): {
|
|
199
243
|
StigmerClient: new () => StigmerClient;
|
|
200
244
|
};
|
|
245
|
+
export interface HermeticEnvironmentOptions {
|
|
246
|
+
/**
|
|
247
|
+
* Where the Cursor event recorder writes this run's raw SDK recording
|
|
248
|
+
* (`<dir>/<executionId>.cursor-events.jsonl`). Named ONLY by a live
|
|
249
|
+
* instrument, whose point is a recording of the real SDK; a hermetic
|
|
250
|
+
* scenario leaves it unset and the variable is cleared for the run.
|
|
251
|
+
*/
|
|
252
|
+
readonly eventRecordingDir?: string;
|
|
253
|
+
}
|
|
201
254
|
export interface HermeticEnvironment {
|
|
202
255
|
/** The temp `HOME` (the runner's `~/.stigmer` lands under it). */
|
|
203
256
|
readonly home: string;
|
|
@@ -213,21 +266,22 @@ export interface HermeticEnvironment {
|
|
|
213
266
|
* `beforeAll`) — the fingerprint secret is memoized per process on first use,
|
|
214
267
|
* and vitest isolates files in forks, so per-file is the natural unit.
|
|
215
268
|
*/
|
|
216
|
-
export declare function createHermeticEnvironment(): HermeticEnvironment;
|
|
269
|
+
export declare function createHermeticEnvironment(options?: HermeticEnvironmentOptions): HermeticEnvironment;
|
|
217
270
|
/**
|
|
218
271
|
* A deterministic, TICKING clock: `Date` AND `performance` are faked and
|
|
219
272
|
* advance together; timers stay real (the periodic heartbeat, the stall
|
|
220
273
|
* watchdog, `withTimeout` all need them). The harness double calls
|
|
221
274
|
* {@link ScriptedClock.tick} once per script step, so every clock-based
|
|
222
|
-
* decision on the activity path — status timestamps, the
|
|
223
|
-
*
|
|
275
|
+
* decision on the activity path — status timestamps, the builder's row
|
|
276
|
+
* instants, cache TTLs (`Date`); the streaming scheduler's persist cadence
|
|
224
277
|
* (`performance.now()`) — sees the same instants run after run and runs the
|
|
225
278
|
* same branches production runs.
|
|
226
279
|
*
|
|
227
|
-
* Why both (
|
|
280
|
+
* Why both (since #1096): until then only `Date` was faked, so the
|
|
228
281
|
* scheduler paced persists on REAL elapsed time and `fileChangeProgress`,
|
|
229
282
|
* which rides persists, could gain or lose a capture under load — a golden
|
|
230
|
-
* flake seen twice
|
|
283
|
+
* flake seen twice while the native adapter moved onto the runtime. One clock,
|
|
284
|
+
* two faces: `tick` advances through
|
|
231
285
|
* the fake clock's own `tick` (`vi.advanceTimersByTime`), which moves both
|
|
232
286
|
* `Date` and `performance.now()`; `vi.setSystemTime` would move `Date` alone
|
|
233
287
|
* (fake-timers keeps `performance` monotonic across a system-time jump), so
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* and driven by the framework's own activity environment. Both harnesses now
|
|
15
15
|
* run on it (`execute-cursor/__test-utils__/hermetic-cursor.ts`,
|
|
16
16
|
* `execute-deep-agent/__test-utils__/hermetic-deep-agent.ts`), and the earlier
|
|
17
|
-
* native tests were re-homed onto the native driver (
|
|
17
|
+
* native tests were re-homed onto the native driver (#1096), their assertions
|
|
18
18
|
* carried into `execute-deep-agent/__tests__/hermetic/`.
|
|
19
19
|
*
|
|
20
20
|
* What is generic here and what is not: everything an activity touches that is
|
|
@@ -55,11 +55,22 @@
|
|
|
55
55
|
* Determinism: the clock is faked for `Date` ONLY (`vi.useFakeTimers({ toFake:
|
|
56
56
|
* ["Date"] })`) and TICKS — the harness double advances it a fixed quantum per
|
|
57
57
|
* script step through {@link ScriptedClock}. Frozen time would make
|
|
58
|
-
*
|
|
58
|
+
* the streaming scheduler's cadence (`Date.now()` against its last send) never
|
|
59
59
|
* elapse and silently skip the mid-stream persist path production always runs;
|
|
60
60
|
* a ticking clock runs the same path and lands on the same instants every run.
|
|
61
61
|
* Timers stay real so the periodic heartbeat and the stall watchdog behave.
|
|
62
62
|
*
|
|
63
|
+
* The live posture (#1097's live-run gate): a `CURSOR_API_KEY`-gated live
|
|
64
|
+
* instrument keeps all three substitutions above — the real `Context`, the
|
|
65
|
+
* record behind the client, the temp environment — and drops only the
|
|
66
|
+
* harness's SDK double, so the REAL activity runs against the REAL vendor SDK
|
|
67
|
+
* with everything the activity persists still readable from the record.
|
|
68
|
+
* Two things differ from a hermetic run and both are the caller's explicit
|
|
69
|
+
* choice: no `ScriptedClock` is installed (the real SDK is not ticked, and a
|
|
70
|
+
* frozen clock would skip the persist cadence production runs), and the
|
|
71
|
+
* environment may name an `eventRecordingDir` so the run leaves a recording.
|
|
72
|
+
* The harness's driver names the entry (`beginLiveCursorScenario`).
|
|
73
|
+
*
|
|
63
74
|
* Not in scope: this module never edits a production module and never
|
|
64
75
|
* normalizes output. If a golden is not byte-stable, the volatile source is
|
|
65
76
|
* controlled at its origin or the surprise is escalated — never redacted here.
|
|
@@ -106,6 +117,8 @@ export class ExecutionRecord {
|
|
|
106
117
|
controlSignal;
|
|
107
118
|
/** Every `updateStatus` payload, in order, snapshotted at write time. */
|
|
108
119
|
persisted = [];
|
|
120
|
+
/** Fired after every full-status `applyStatusUpdate`; {@link whenToolCallsSettled} subscribes here. */
|
|
121
|
+
persistListeners = new Set();
|
|
109
122
|
/** Setup-progress labels reported before the stream started, in order. */
|
|
110
123
|
setupProgress = [];
|
|
111
124
|
/**
|
|
@@ -156,6 +169,75 @@ export class ExecutionRecord {
|
|
|
156
169
|
toolCalls() {
|
|
157
170
|
return this.execution.status?.messages.flatMap((m) => m.toolCalls) ?? [];
|
|
158
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Resolves once every one of `ids` is a SETTLED row (not RUNNING) in a status
|
|
174
|
+
* the activity has persisted — root messages and every sub-agent's alike.
|
|
175
|
+
* Resolves at once for an empty list or when they already are.
|
|
176
|
+
*
|
|
177
|
+
* This is the barrier a real model gives the runtime for free and a
|
|
178
|
+
* scripted one does not: a model that takes 300 ms to answer never starts
|
|
179
|
+
* its next turn before the loop has folded and persisted the tool results
|
|
180
|
+
* it is answering, while `ScriptedModel` answers instantly and LangGraph's
|
|
181
|
+
* producer can run a whole turn ahead of the consumer while the consumer
|
|
182
|
+
* awaits one mid-stream persist (on a git workspace that persist shells out
|
|
183
|
+
* for `file_change_progress`). The stamps the consumer writes at apply time
|
|
184
|
+
* then land on either side of the scripted clock's next tick depending on
|
|
185
|
+
* I/O timing — a golden that flips between `:01` and `:02` on the day. The
|
|
186
|
+
* driver awaits this before it ticks (`hermetic-deep-agent.ts`), so every
|
|
187
|
+
* stamp of turn N precedes turn N+1's instant, run after run.
|
|
188
|
+
*
|
|
189
|
+
* Why "settled" and not "seen": the row's `completedAt` is stamped when the
|
|
190
|
+
* tool's end event is applied, and the producer calls the next model turn
|
|
191
|
+
* right after emitting that event, so a barrier on the row merely existing
|
|
192
|
+
* would still race the completion stamp. The persist that carries the
|
|
193
|
+
* settled row always exists: a tool's finish forces one (the builder's
|
|
194
|
+
* force flag), and a turn followed by another turn always has a tool call.
|
|
195
|
+
*
|
|
196
|
+
* Bounded by real time (timers are real under the scripted clock): a
|
|
197
|
+
* scenario that breaks the fact above — a persist that never carries the
|
|
198
|
+
* row — fails naming the ids still open, never hangs.
|
|
199
|
+
*/
|
|
200
|
+
whenToolCallsSettled(ids, timeoutMs = 10_000) {
|
|
201
|
+
const unsettled = () => {
|
|
202
|
+
const settled = this.settledToolCallIds();
|
|
203
|
+
return ids.filter((id) => !settled.has(id));
|
|
204
|
+
};
|
|
205
|
+
if (unsettled().length === 0)
|
|
206
|
+
return Promise.resolve();
|
|
207
|
+
return new Promise((resolve, reject) => {
|
|
208
|
+
const timer = setTimeout(() => {
|
|
209
|
+
this.persistListeners.delete(check);
|
|
210
|
+
reject(new Error(`ExecutionRecord: tool call(s) ${unsettled().join(", ")} never settled in a persisted status ` +
|
|
211
|
+
`within ${timeoutMs} ms (${this.persisted.length} persists seen). A model turn was asked to ` +
|
|
212
|
+
`wait for the results it answers; the loop never persisted them — a scenario or runtime bug.`));
|
|
213
|
+
}, timeoutMs);
|
|
214
|
+
const check = () => {
|
|
215
|
+
if (unsettled().length > 0)
|
|
216
|
+
return;
|
|
217
|
+
clearTimeout(timer);
|
|
218
|
+
this.persistListeners.delete(check);
|
|
219
|
+
resolve();
|
|
220
|
+
};
|
|
221
|
+
this.persistListeners.add(check);
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/** The ids of every row not RUNNING in the held status, across the root and every sub-agent transcript. */
|
|
225
|
+
settledToolCallIds() {
|
|
226
|
+
const out = new Set();
|
|
227
|
+
const status = this.execution.status;
|
|
228
|
+
if (!status)
|
|
229
|
+
return out;
|
|
230
|
+
const transcripts = [status.messages, ...status.subAgentExecutions.map((s) => s.messages)];
|
|
231
|
+
for (const messages of transcripts) {
|
|
232
|
+
for (const message of messages) {
|
|
233
|
+
for (const tc of message.toolCalls) {
|
|
234
|
+
if (tc.status !== ToolCallStatus.TOOL_CALL_RUNNING)
|
|
235
|
+
out.add(tc.id);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return out;
|
|
240
|
+
}
|
|
159
241
|
/** The tool calls currently paused for a decision. */
|
|
160
242
|
waitingToolCalls() {
|
|
161
243
|
return this.toolCalls().filter((tc) => tc.status === ToolCallStatus.TOOL_CALL_WAITING_APPROVAL);
|
|
@@ -203,6 +285,8 @@ export class ExecutionRecord {
|
|
|
203
285
|
return ExecutionControlSignal.UNSPECIFIED;
|
|
204
286
|
}
|
|
205
287
|
this.execution.status = clone(AgentExecutionStatusSchema, snapshot);
|
|
288
|
+
for (const listener of [...this.persistListeners])
|
|
289
|
+
listener();
|
|
206
290
|
return this.controlSignal(snapshot);
|
|
207
291
|
}
|
|
208
292
|
/**
|
|
@@ -283,19 +367,24 @@ export function hermeticStigmerClientModule() {
|
|
|
283
367
|
* (an absent store flips capture off — a different code path).
|
|
284
368
|
* - `STIGMER_RUNNER_HITL_SECRET`: the one randomness source on the activity
|
|
285
369
|
* path, pinned so grant tokens and fingerprints are byte-stable.
|
|
286
|
-
* - `CURSOR_EVENT_RECORD_DIR` cleared: never write recordings from a test
|
|
370
|
+
* - `CURSOR_EVENT_RECORD_DIR` cleared: never write recordings from a test —
|
|
371
|
+
* unless the caller names an `eventRecordingDir`, the live instruments'
|
|
372
|
+
* opt-in (below), in which case this environment SETS it. Either way the
|
|
373
|
+
* variable has one owner here, and dispose restores it.
|
|
287
374
|
*/
|
|
288
375
|
const PINNED_ENV = {
|
|
289
376
|
ARTIFACT_STORAGE_TYPE: "local",
|
|
290
377
|
STIGMER_RUNNER_HITL_SECRET: "hermetic-fixture-secret-do-not-use-in-production",
|
|
291
378
|
};
|
|
292
|
-
const CLEARED_ENV = ["
|
|
379
|
+
const CLEARED_ENV = ["STIGMER_PROXY_ENDPOINT", "STIGMER_CLOUD_API_URL"];
|
|
380
|
+
/** The one name the Cursor recorder is switched on by (`turn-settle.ts` reads it). */
|
|
381
|
+
const CURSOR_EVENT_RECORD_DIR = "CURSOR_EVENT_RECORD_DIR";
|
|
293
382
|
/**
|
|
294
383
|
* Create the temp tree and pin the env vars. Call once per test FILE (in
|
|
295
384
|
* `beforeAll`) — the fingerprint secret is memoized per process on first use,
|
|
296
385
|
* and vitest isolates files in forks, so per-file is the natural unit.
|
|
297
386
|
*/
|
|
298
|
-
export function createHermeticEnvironment() {
|
|
387
|
+
export function createHermeticEnvironment(options = {}) {
|
|
299
388
|
const root = mkdtempSync(join(tmpdir(), "stigmer-hermetic-"));
|
|
300
389
|
const home = join(root, "home");
|
|
301
390
|
const workspaceRootDir = join(root, "workspaces");
|
|
@@ -315,6 +404,7 @@ export function createHermeticEnvironment() {
|
|
|
315
404
|
set(k, v);
|
|
316
405
|
for (const k of CLEARED_ENV)
|
|
317
406
|
set(k, undefined);
|
|
407
|
+
set(CURSOR_EVENT_RECORD_DIR, options.eventRecordingDir);
|
|
318
408
|
let disposed = false;
|
|
319
409
|
return {
|
|
320
410
|
home,
|
|
@@ -342,15 +432,16 @@ export function createHermeticEnvironment() {
|
|
|
342
432
|
* advance together; timers stay real (the periodic heartbeat, the stall
|
|
343
433
|
* watchdog, `withTimeout` all need them). The harness double calls
|
|
344
434
|
* {@link ScriptedClock.tick} once per script step, so every clock-based
|
|
345
|
-
* decision on the activity path — status timestamps, the
|
|
346
|
-
*
|
|
435
|
+
* decision on the activity path — status timestamps, the builder's row
|
|
436
|
+
* instants, cache TTLs (`Date`); the streaming scheduler's persist cadence
|
|
347
437
|
* (`performance.now()`) — sees the same instants run after run and runs the
|
|
348
438
|
* same branches production runs.
|
|
349
439
|
*
|
|
350
|
-
* Why both (
|
|
440
|
+
* Why both (since #1096): until then only `Date` was faked, so the
|
|
351
441
|
* scheduler paced persists on REAL elapsed time and `fileChangeProgress`,
|
|
352
442
|
* which rides persists, could gain or lose a capture under load — a golden
|
|
353
|
-
* flake seen twice
|
|
443
|
+
* flake seen twice while the native adapter moved onto the runtime. One clock,
|
|
444
|
+
* two faces: `tick` advances through
|
|
354
445
|
* the fake clock's own `tick` (`vi.advanceTimersByTime`), which moves both
|
|
355
446
|
* `Date` and `performance.now()`; `vi.setSystemTime` would move `Date` alone
|
|
356
447
|
* (fake-timers keeps `performance` monotonic across a system-time jump), so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermetic-activity.js","sourceRoot":"","sources":["../../src/__test-utils__/hermetic-activity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hermetic-activity.js","sourceRoot":"","sources":["../../src/__test-utils__/hermetic-activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,15 @@
|
|
|
23
23
|
* never consulted and adding an entry is byte-invisible to the other
|
|
24
24
|
* harness's goldens (verified when the native entry landed: Cursor's
|
|
25
25
|
* seventeen unchanged).
|
|
26
|
+
*
|
|
27
|
+
* The live posture (`stubRegistryFetch({ live: true })`): a live instrument
|
|
28
|
+
* runs the real activity against the REAL `@cursor/sdk`, whose cloud-api
|
|
29
|
+
* client (`Cursor.models.list`, the user-key token exchange) goes through
|
|
30
|
+
* global `fetch` — only its Connect RPC stream rides connect-node. Such a run
|
|
31
|
+
* keeps this document for the registry (pricing and tier stay pinned; nothing
|
|
32
|
+
* a live turn proves lives there) and lets every other URL reach the network
|
|
33
|
+
* through the `fetch` that was global before the stub. The refusal stays the
|
|
34
|
+
* default: a hermetic run that grows a network dependency must still fail.
|
|
26
35
|
*/
|
|
27
36
|
/** The pinned model of every Cursor hermetic run; in the registry document AND in the Cursor double's catalog. */
|
|
28
37
|
export declare const FIXTURE_MODEL = "composer-2.5";
|
|
@@ -71,11 +80,21 @@ export declare const REGISTRY_DOCUMENT: {
|
|
|
71
80
|
};
|
|
72
81
|
}];
|
|
73
82
|
};
|
|
83
|
+
export interface StubRegistryFetchOptions {
|
|
84
|
+
/**
|
|
85
|
+
* The live posture (header): every URL that is not the registry reaches the
|
|
86
|
+
* network through the pre-stub `fetch`. Default false — refuse, and fail the
|
|
87
|
+
* run.
|
|
88
|
+
*/
|
|
89
|
+
readonly live?: boolean;
|
|
90
|
+
}
|
|
74
91
|
/**
|
|
75
|
-
* Stub `fetch` to answer the registry document and
|
|
76
|
-
* Returns the URLs fetched, for the "no other network"
|
|
92
|
+
* Stub `fetch` to answer the registry document and — by default — refuse
|
|
93
|
+
* everything else. Returns the URLs fetched, for the "no other network"
|
|
94
|
+
* assertion (and, in the live posture, for the record of what a real turn
|
|
95
|
+
* dialled).
|
|
77
96
|
*/
|
|
78
|
-
export declare function stubRegistryFetch(): {
|
|
97
|
+
export declare function stubRegistryFetch(options?: StubRegistryFetchOptions): {
|
|
79
98
|
readonly urls: string[];
|
|
80
99
|
restore(): void;
|
|
81
100
|
};
|
|
@@ -23,6 +23,15 @@
|
|
|
23
23
|
* never consulted and adding an entry is byte-invisible to the other
|
|
24
24
|
* harness's goldens (verified when the native entry landed: Cursor's
|
|
25
25
|
* seventeen unchanged).
|
|
26
|
+
*
|
|
27
|
+
* The live posture (`stubRegistryFetch({ live: true })`): a live instrument
|
|
28
|
+
* runs the real activity against the REAL `@cursor/sdk`, whose cloud-api
|
|
29
|
+
* client (`Cursor.models.list`, the user-key token exchange) goes through
|
|
30
|
+
* global `fetch` — only its Connect RPC stream rides connect-node. Such a run
|
|
31
|
+
* keeps this document for the registry (pricing and tier stay pinned; nothing
|
|
32
|
+
* a live turn proves lives there) and lets every other URL reach the network
|
|
33
|
+
* through the `fetch` that was global before the stub. The refusal stays the
|
|
34
|
+
* default: a hermetic run that grows a network dependency must still fail.
|
|
26
35
|
*/
|
|
27
36
|
import { vi } from "vitest";
|
|
28
37
|
/** The pinned model of every Cursor hermetic run; in the registry document AND in the Cursor double's catalog. */
|
|
@@ -72,18 +81,24 @@ export const REGISTRY_DOCUMENT = {
|
|
|
72
81
|
],
|
|
73
82
|
};
|
|
74
83
|
/**
|
|
75
|
-
* Stub `fetch` to answer the registry document and
|
|
76
|
-
* Returns the URLs fetched, for the "no other network"
|
|
84
|
+
* Stub `fetch` to answer the registry document and — by default — refuse
|
|
85
|
+
* everything else. Returns the URLs fetched, for the "no other network"
|
|
86
|
+
* assertion (and, in the live posture, for the record of what a real turn
|
|
87
|
+
* dialled).
|
|
77
88
|
*/
|
|
78
|
-
export function stubRegistryFetch() {
|
|
89
|
+
export function stubRegistryFetch(options = {}) {
|
|
79
90
|
const urls = [];
|
|
80
|
-
|
|
91
|
+
const networkFetch = globalThis.fetch;
|
|
92
|
+
vi.stubGlobal("fetch", vi.fn(async (input, init) => {
|
|
81
93
|
const url = typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
|
|
82
94
|
urls.push(url);
|
|
83
|
-
if (
|
|
84
|
-
|
|
95
|
+
if (url.includes("/model-registry")) {
|
|
96
|
+
return { ok: true, status: 200, json: async () => REGISTRY_DOCUMENT };
|
|
97
|
+
}
|
|
98
|
+
if (options.live) {
|
|
99
|
+
return networkFetch(input, init);
|
|
85
100
|
}
|
|
86
|
-
|
|
101
|
+
throw new Error(`hermetic run attempted a non-registry network call: ${url}`);
|
|
87
102
|
}));
|
|
88
103
|
return { urls, restore: () => vi.unstubAllGlobals() };
|
|
89
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry-fixture.js","sourceRoot":"","sources":["../../src/__test-utils__/model-registry-fixture.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"model-registry-fixture.js","sourceRoot":"","sources":["../../src/__test-utils__/model-registry-fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,kHAAkH;AAClH,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE;QACN;YACE,EAAE,EAAE,aAAa;YACjB,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE;gBACP,oBAAoB,EAAE,GAAG;gBACzB,qBAAqB,EAAE,GAAG;gBAC1B,yBAAyB,EAAE,GAAG;gBAC9B,wBAAwB,EAAE,GAAG;aAC9B;YACD,eAAe,EAAE;gBACf,IAAI,EAAE;oBACJ,oBAAoB,EAAE,GAAG;oBACzB,qBAAqB,EAAE,IAAI;oBAC3B,yBAAyB,EAAE,GAAG;oBAC9B,wBAAwB,EAAE,GAAG;iBAC9B;aACF;SACF;QACD;YACE,EAAE,EAAE,oBAAoB;YACxB,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,WAAW;YACrB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE;gBACP,oBAAoB,EAAE,GAAG;gBACzB,qBAAqB,EAAE,GAAG;gBAC1B,yBAAyB,EAAE,IAAI;gBAC/B,wBAAwB,EAAE,GAAG;aAC9B;SACF;KACF;CACO,CAAC;AAWX;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAoC,EAAE;IACtE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;IACtC,EAAE,CAAC,UAAU,CACX,OAAO,EACP,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAA6B,EAAE,IAAkB,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACpG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,iBAAiB,EAAyB,CAAC;QAC/F,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CACH,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The Cursor harness as a `HarnessContractSubject` — the REAL `createCursorAdapter()`
|
|
3
3
|
* driven through the harness contract kit, with the kit's engine-neutral
|
|
4
|
-
* scenario vocabulary translated onto
|
|
4
|
+
* scenario vocabulary translated onto the scripted `@cursor/sdk` double (#1048).
|
|
5
5
|
*
|
|
6
6
|
* The sibling of `gateway-substrate.ts` (the Cursor side of the approval
|
|
7
7
|
* contract kit): the kit owns the invariants and the runtime stand-in, this
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
* Every script that does not end in `fail`, `cancelled` or `hang` closes with
|
|
60
60
|
* `finished({ result: <last say> })` so `run.wait()` has an answer.
|
|
61
61
|
*
|
|
62
|
-
* ── Two modelling decisions (
|
|
62
|
+
* ── Two modelling decisions (#1070) ─────────────────────────────────────────
|
|
63
63
|
* A `propose` for an id this subject has already seen the hook ALLOW emits
|
|
64
64
|
* nothing: the real SDK does not re-run a completed tool on resume — the parked
|
|
65
65
|
* agent's conversation already holds the tool's result. A `propose` whose id
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The Cursor harness as a `HarnessContractSubject` — the REAL `createCursorAdapter()`
|
|
3
3
|
* driven through the harness contract kit, with the kit's engine-neutral
|
|
4
|
-
* scenario vocabulary translated onto
|
|
4
|
+
* scenario vocabulary translated onto the scripted `@cursor/sdk` double (#1048).
|
|
5
5
|
*
|
|
6
6
|
* The sibling of `gateway-substrate.ts` (the Cursor side of the approval
|
|
7
7
|
* contract kit): the kit owns the invariants and the runtime stand-in, this
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
* Every script that does not end in `fail`, `cancelled` or `hang` closes with
|
|
60
60
|
* `finished({ result: <last say> })` so `run.wait()` has an answer.
|
|
61
61
|
*
|
|
62
|
-
* ── Two modelling decisions (
|
|
62
|
+
* ── Two modelling decisions (#1070) ─────────────────────────────────────────
|
|
63
63
|
* A `propose` for an id this subject has already seen the hook ALLOW emits
|
|
64
64
|
* nothing: the real SDK does not re-run a completed tool on resume — the parked
|
|
65
65
|
* agent's conversation already holds the tool's result. A `propose` whose id
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drive Cursor SDK events through the REAL pair the harness runs in production
|
|
3
|
+
* — `CursorTranslator` into `TranscriptBuilder` over an `AgentExecutionStatus`
|
|
4
|
+
* — and hand back what they built. The unit-test seam that replaced
|
|
5
|
+
* `new <accumulator>(messages, options)` in #1097 (the accumulator folded
|
|
6
|
+
* rows itself; now the translator emits events and the shared builder folds
|
|
7
|
+
* them), so the arms that read a row's shape after a sequence of SDK events
|
|
8
|
+
* keep their shape while the module under them changed.
|
|
9
|
+
*
|
|
10
|
+
* The same shape as the native translator's local `feedAll` in
|
|
11
|
+
* `execute-deep-agent/__tests__/translator-through-builder.test.ts`, shared
|
|
12
|
+
* here because seven Cursor test files read through it.
|
|
13
|
+
*
|
|
14
|
+
* Deltas follow the loop's discipline (`turn-stream.ts`): `observeDelta`
|
|
15
|
+
* queues, and the queue is drained into the builder after the NEXT stream
|
|
16
|
+
* event — or at {@link CursorFold.drain} for a caller that wants them applied
|
|
17
|
+
* now, the settle's own last drain before `finalize()`.
|
|
18
|
+
*/
|
|
19
|
+
import type { InteractionUpdate, SDKMessage } from "@cursor/sdk";
|
|
20
|
+
import { type AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
21
|
+
import type { AgentMessage, ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
22
|
+
import { TranscriptBuilder } from "../../../harness/transcript/builder.js";
|
|
23
|
+
import { CursorTranslator, type CursorTranslatorOptions } from "../translator.js";
|
|
24
|
+
export interface CursorFoldOptions {
|
|
25
|
+
/** The status to build into; a fresh empty one when omitted. Its `messages` are the translator's seed. */
|
|
26
|
+
readonly status?: AgentExecutionStatus;
|
|
27
|
+
/**
|
|
28
|
+
* An existing `messages` array to build into BY REFERENCE (a test that
|
|
29
|
+
* hand-built its seeded rows and keeps asserting on the same objects). Wins
|
|
30
|
+
* over `status`'s own array.
|
|
31
|
+
*/
|
|
32
|
+
readonly messages?: AgentMessage[];
|
|
33
|
+
readonly policies?: CursorTranslatorOptions["policies"];
|
|
34
|
+
readonly leases?: CursorTranslatorOptions["leases"];
|
|
35
|
+
}
|
|
36
|
+
export declare class CursorFold {
|
|
37
|
+
readonly status: AgentExecutionStatus;
|
|
38
|
+
readonly translator: CursorTranslator;
|
|
39
|
+
readonly builder: TranscriptBuilder;
|
|
40
|
+
constructor(options?: CursorFoldOptions);
|
|
41
|
+
/** One stream event, translated and folded, then the deltas queued so far — the loop's order. */
|
|
42
|
+
event(event: SDKMessage): this;
|
|
43
|
+
events(...events: SDKMessage[]): this;
|
|
44
|
+
/** One delta, queued — applied at the next {@link event} or {@link drain}. */
|
|
45
|
+
delta(update: InteractionUpdate): this;
|
|
46
|
+
drain(): this;
|
|
47
|
+
finalize(): this;
|
|
48
|
+
get messages(): AgentMessage[];
|
|
49
|
+
/** Every root row, in transcript order. */
|
|
50
|
+
rows(): ToolCall[];
|
|
51
|
+
row(callId: string): ToolCall;
|
|
52
|
+
}
|
|
53
|
+
/** Fold a sequence of stream events into a fresh transcript; the common one-liner. */
|
|
54
|
+
export declare function foldCursorEvents(events: readonly SDKMessage[], options?: CursorFoldOptions): CursorFold;
|
|
55
|
+
/**
|
|
56
|
+
* A builder over an existing `messages` array, kept BY REFERENCE (the status
|
|
57
|
+
* is given the array itself, never a copy), so a boundary test that built its
|
|
58
|
+
* rows by hand can hand them to `reconcileDeniedToolCalls` and keep asserting
|
|
59
|
+
* on the same objects.
|
|
60
|
+
*/
|
|
61
|
+
export declare function builderOver(messages: AgentMessage[], executionId?: string): TranscriptBuilder;
|