@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
|
@@ -0,0 +1,94 @@
|
|
|
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 { create } from "@bufbuild/protobuf";
|
|
20
|
+
import { AgentExecutionStatusSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
21
|
+
import { TranscriptBuilder } from "../../../harness/transcript/builder.js";
|
|
22
|
+
import { CursorTranslator } from "../translator.js";
|
|
23
|
+
export class CursorFold {
|
|
24
|
+
status;
|
|
25
|
+
translator;
|
|
26
|
+
builder;
|
|
27
|
+
constructor(options = {}) {
|
|
28
|
+
this.status = options.status ?? create(AgentExecutionStatusSchema, {});
|
|
29
|
+
if (options.messages)
|
|
30
|
+
this.status.messages = options.messages;
|
|
31
|
+
this.translator = new CursorTranslator({
|
|
32
|
+
policies: options.policies ?? new Map(),
|
|
33
|
+
leases: options.leases ?? { global: false, categories: new Set() },
|
|
34
|
+
seeded: this.status.messages,
|
|
35
|
+
});
|
|
36
|
+
this.builder = new TranscriptBuilder("exec-fold", this.status);
|
|
37
|
+
}
|
|
38
|
+
/** One stream event, translated and folded, then the deltas queued so far — the loop's order. */
|
|
39
|
+
event(event) {
|
|
40
|
+
for (const e of this.translator.translate(event))
|
|
41
|
+
this.builder.apply(e);
|
|
42
|
+
this.drain();
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
events(...events) {
|
|
46
|
+
for (const e of events)
|
|
47
|
+
this.event(e);
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
/** One delta, queued — applied at the next {@link event} or {@link drain}. */
|
|
51
|
+
delta(update) {
|
|
52
|
+
this.translator.observeDelta(update);
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
drain() {
|
|
56
|
+
for (const e of this.translator.drainDeltas())
|
|
57
|
+
this.builder.apply(e);
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
finalize() {
|
|
61
|
+
this.drain();
|
|
62
|
+
this.builder.finalize();
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
get messages() {
|
|
66
|
+
return this.status.messages;
|
|
67
|
+
}
|
|
68
|
+
/** Every root row, in transcript order. */
|
|
69
|
+
rows() {
|
|
70
|
+
return this.status.messages.flatMap((m) => m.toolCalls);
|
|
71
|
+
}
|
|
72
|
+
row(callId) {
|
|
73
|
+
const found = this.rows().find((tc) => tc.id === callId);
|
|
74
|
+
if (!found)
|
|
75
|
+
throw new Error(`CursorFold: no row ${callId}`);
|
|
76
|
+
return found;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** Fold a sequence of stream events into a fresh transcript; the common one-liner. */
|
|
80
|
+
export function foldCursorEvents(events, options = {}) {
|
|
81
|
+
return new CursorFold(options).events(...events);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A builder over an existing `messages` array, kept BY REFERENCE (the status
|
|
85
|
+
* is given the array itself, never a copy), so a boundary test that built its
|
|
86
|
+
* rows by hand can hand them to `reconcileDeniedToolCalls` and keep asserting
|
|
87
|
+
* on the same objects.
|
|
88
|
+
*/
|
|
89
|
+
export function builderOver(messages, executionId = "exec-boundary") {
|
|
90
|
+
const status = create(AgentExecutionStatusSchema, {});
|
|
91
|
+
status.messages = messages;
|
|
92
|
+
return new TranscriptBuilder(executionId, status);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=fold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fold.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/fold.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ export function createCursorSubstrate() {
|
|
|
68
68
|
enforcesExactContent: true,
|
|
69
69
|
appliesRunLifetimeLease: true,
|
|
70
70
|
// The Cursor hook's deny decision does not carry approval_policy_source;
|
|
71
|
-
// provenance is projected at
|
|
71
|
+
// provenance is projected at translation time (the Cursor translator)
|
|
72
72
|
// and asserted by the corpus + resolveApprovalProvenance suites instead.
|
|
73
73
|
surfacesGatePolicySource: false,
|
|
74
74
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-substrate.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/gateway-substrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACrH,OAAO,EAAE,YAAY,EAAsB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAS9D;;;;GAIG;AACH,SAAS,QAAQ,CAAC,MAAsB;IACtC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,0CAA0C,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACpD,OAAO;QACL,QAAQ,EAAE,UAAU;QACpB,aAAa,EAAE,EAAE;QACjB,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,8EAA8E;QAC9E,uEAAuE;QACvE,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC;QAClC,gBAAgB,EAAE,WAAW,MAAM,CAAC,IAAI,EAAE;KAC3C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,MAAuB,EAAE,MAAsB;IACnE,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,UAAU,KAAK,OAAO,CAAC;IACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,kFAAkF;AAClF,8DAA8D;AAC9D,SAAS,eAAe,CAAC,MAAsB;IAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,mCAAmC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,OAAO;QAClB,YAAY,EAAE;YACZ,iBAAiB,EAAE,KAAK;YACxB,qBAAqB,EAAE,IAAI;YAC3B,0EAA0E;YAC1E,iDAAiD;YACjD,oBAAoB,EAAE,IAAI;YAC1B,uBAAuB,EAAE,IAAI;YAC7B,yEAAyE;YACzE,
|
|
1
|
+
{"version":3,"file":"gateway-substrate.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/gateway-substrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,18 @@
|
|
|
42
42
|
* the SDK double (`ScriptedSdkOptions`); an SDK-side cancel or a mid-stream
|
|
43
43
|
* wedge as an `effect` step on the run. Nothing here is a switch in production
|
|
44
44
|
* code — every knob is a value the production path already reads.
|
|
45
|
+
*
|
|
46
|
+
* Two postures, two entries, one turn runner. `beginCursorScenario` is the
|
|
47
|
+
* hermetic posture: the SDK doubled by the scenario file's `vi.mock`, the
|
|
48
|
+
* clock scripted, goldens byte-stable. `beginLiveCursorScenario` is the live
|
|
49
|
+
* posture (#1097's live-run gate): the scenario file mocks ONLY the
|
|
50
|
+
* client, the real `@cursor/sdk` runs under the real activity on the real
|
|
51
|
+
* clock with a real member key, and what the activity persists is read back
|
|
52
|
+
* from the same record. A live scenario therefore has no `sdk` and no `clock`
|
|
53
|
+
* — the type says which posture a file is in — and `runCursorTurn` reads only
|
|
54
|
+
* what both have. The registry fixture's `live` pass-through and the
|
|
55
|
+
* environment's `eventRecordingDir` are the live posture's two other
|
|
56
|
+
* seams, each on the module that owns the concern.
|
|
45
57
|
*/
|
|
46
58
|
import type { ModelListItem } from "@cursor/sdk";
|
|
47
59
|
import type { StigmerClient } from "../../../client/stigmer-client.js";
|
|
@@ -97,19 +109,24 @@ export declare function runWorkspaceHook(workspaceRoot: string, hookInput: objec
|
|
|
97
109
|
* as it does in a live worker.
|
|
98
110
|
*/
|
|
99
111
|
export declare function resetCursorModuleState(): void;
|
|
100
|
-
|
|
112
|
+
/** What both postures share: the environment, the record the activity persists into, the runner's `Config`. */
|
|
113
|
+
export interface CursorScenarioBase {
|
|
101
114
|
readonly env: HermeticEnvironment;
|
|
102
|
-
readonly clock: ScriptedClock;
|
|
103
115
|
readonly record: ExecutionRecord;
|
|
104
|
-
readonly sdk: ScriptedCursorSdk;
|
|
105
116
|
/** The runner this scenario runs on: the OSS posture plus the scenario's knobs. */
|
|
106
117
|
readonly config: Config;
|
|
107
118
|
}
|
|
108
|
-
|
|
109
|
-
|
|
119
|
+
/** The hermetic posture: the SDK double and the scripted clock beside the shared three. */
|
|
120
|
+
export interface CursorScenario extends CursorScenarioBase {
|
|
110
121
|
readonly clock: ScriptedClock;
|
|
122
|
+
readonly sdk: ScriptedCursorSdk;
|
|
123
|
+
}
|
|
124
|
+
/** The live posture (header): the shared three and nothing doubled but the client. */
|
|
125
|
+
export type LiveCursorScenario = CursorScenarioBase;
|
|
126
|
+
/** The options both postures take. */
|
|
127
|
+
interface CursorScenarioBaseOptions {
|
|
128
|
+
readonly env: HermeticEnvironment;
|
|
111
129
|
readonly record: ExecutionRecord;
|
|
112
|
-
readonly sdk: ScriptedSdkOptions;
|
|
113
130
|
/**
|
|
114
131
|
* Control-plane facets the scenario opts INTO, or faults it injects, over
|
|
115
132
|
* the record's everyday answers (`ExecutionRecord.client`): a rejecting
|
|
@@ -124,8 +141,23 @@ export interface CursorScenarioOptions {
|
|
|
124
141
|
*/
|
|
125
142
|
readonly config?: Partial<Config>;
|
|
126
143
|
}
|
|
127
|
-
|
|
144
|
+
export interface CursorScenarioOptions extends CursorScenarioBaseOptions {
|
|
145
|
+
readonly clock: ScriptedClock;
|
|
146
|
+
readonly sdk: ScriptedSdkOptions;
|
|
147
|
+
}
|
|
148
|
+
export interface LiveCursorScenarioOptions extends CursorScenarioBaseOptions {
|
|
149
|
+
/** The real member key the real SDK authenticates with; becomes `config.cursorApiKey`. */
|
|
150
|
+
readonly apiKey: string;
|
|
151
|
+
}
|
|
152
|
+
/** Bind the record and the SDK double for a hermetic scenario; resets the harness caches first. */
|
|
128
153
|
export declare function beginCursorScenario(options: CursorScenarioOptions): CursorScenario;
|
|
154
|
+
/**
|
|
155
|
+
* Bind the record for a live scenario; resets the harness caches first. No
|
|
156
|
+
* SDK double is built or bound — the scenario file must NOT mock `@cursor/sdk`
|
|
157
|
+
* — and no clock is installed. The key lands on the `Config` exactly where
|
|
158
|
+
* the OSS runner's direct mode reads it (`turn-setup.ts`, `config.cursorApiKey`).
|
|
159
|
+
*/
|
|
160
|
+
export declare function beginLiveCursorScenario(options: LiveCursorScenarioOptions): LiveCursorScenario;
|
|
129
161
|
export interface CursorTurnOptions {
|
|
130
162
|
/** Empty for a first invocation; the agent id for a HITL reinvocation. */
|
|
131
163
|
readonly threadId?: string;
|
|
@@ -134,9 +166,12 @@ export interface CursorTurnOptions {
|
|
|
134
166
|
readonly onControls?: (controls: InvocationControls) => void;
|
|
135
167
|
}
|
|
136
168
|
/**
|
|
137
|
-
* Run ONE `ExecuteCursor` invocation for the scenario: the
|
|
138
|
-
* adapter under the real turn runtime, as the composition roots
|
|
139
|
-
* Built per invocation (the registry constructs its client, which
|
|
140
|
-
* bound at `
|
|
169
|
+
* Run ONE `ExecuteCursor` invocation for the scenario — either posture: the
|
|
170
|
+
* real Cursor adapter under the real turn runtime, as the composition roots
|
|
171
|
+
* wire them. Built per invocation (the registry constructs its client, which
|
|
172
|
+
* is the one bound at `begin*CursorScenario`; the adapter boots on the
|
|
173
|
+
* scenario's config). Reads only the record and the config, which both
|
|
174
|
+
* postures have.
|
|
141
175
|
*/
|
|
142
|
-
export declare function runCursorTurn(scenario:
|
|
176
|
+
export declare function runCursorTurn(scenario: CursorScenarioBase, options?: CursorTurnOptions): Promise<ActivityInvocation>;
|
|
177
|
+
export {};
|
|
@@ -42,6 +42,18 @@
|
|
|
42
42
|
* the SDK double (`ScriptedSdkOptions`); an SDK-side cancel or a mid-stream
|
|
43
43
|
* wedge as an `effect` step on the run. Nothing here is a switch in production
|
|
44
44
|
* code — every knob is a value the production path already reads.
|
|
45
|
+
*
|
|
46
|
+
* Two postures, two entries, one turn runner. `beginCursorScenario` is the
|
|
47
|
+
* hermetic posture: the SDK doubled by the scenario file's `vi.mock`, the
|
|
48
|
+
* clock scripted, goldens byte-stable. `beginLiveCursorScenario` is the live
|
|
49
|
+
* posture (#1097's live-run gate): the scenario file mocks ONLY the
|
|
50
|
+
* client, the real `@cursor/sdk` runs under the real activity on the real
|
|
51
|
+
* clock with a real member key, and what the activity persists is read back
|
|
52
|
+
* from the same record. A live scenario therefore has no `sdk` and no `clock`
|
|
53
|
+
* — the type says which posture a file is in — and `runCursorTurn` reads only
|
|
54
|
+
* what both have. The registry fixture's `live` pass-through and the
|
|
55
|
+
* environment's `eventRecordingDir` are the live posture's two other
|
|
56
|
+
* seams, each on the module that owns the concern.
|
|
45
57
|
*/
|
|
46
58
|
import { execFileSync } from "node:child_process";
|
|
47
59
|
import { readFileSync } from "node:fs";
|
|
@@ -178,25 +190,44 @@ export function resetCursorModuleState() {
|
|
|
178
190
|
_resetPricingCache();
|
|
179
191
|
_resetRegistryCache();
|
|
180
192
|
}
|
|
181
|
-
/**
|
|
182
|
-
|
|
193
|
+
/**
|
|
194
|
+
* What every scenario begins with: the harness caches dropped, the record
|
|
195
|
+
* bound as the control plane the activity will talk to, the OSS `Config`
|
|
196
|
+
* over the environment with the scenario's knobs laid on top.
|
|
197
|
+
*/
|
|
198
|
+
function beginScenarioBase(options) {
|
|
183
199
|
resetCursorModuleState();
|
|
184
|
-
const sdk = new ScriptedCursorSdk(options.sdk);
|
|
185
|
-
bindScriptedSdk(sdk);
|
|
186
200
|
bindHermeticClient(options.record.client(options.clientOverrides));
|
|
187
201
|
return {
|
|
188
202
|
env: options.env,
|
|
189
|
-
clock: options.clock,
|
|
190
203
|
record: options.record,
|
|
191
|
-
sdk,
|
|
192
204
|
config: { ...hermeticCursorConfig(options.env), ...options.config },
|
|
193
205
|
};
|
|
194
206
|
}
|
|
207
|
+
/** Bind the record and the SDK double for a hermetic scenario; resets the harness caches first. */
|
|
208
|
+
export function beginCursorScenario(options) {
|
|
209
|
+
const base = beginScenarioBase(options);
|
|
210
|
+
const sdk = new ScriptedCursorSdk(options.sdk);
|
|
211
|
+
bindScriptedSdk(sdk);
|
|
212
|
+
return { ...base, clock: options.clock, sdk };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Bind the record for a live scenario; resets the harness caches first. No
|
|
216
|
+
* SDK double is built or bound — the scenario file must NOT mock `@cursor/sdk`
|
|
217
|
+
* — and no clock is installed. The key lands on the `Config` exactly where
|
|
218
|
+
* the OSS runner's direct mode reads it (`turn-setup.ts`, `config.cursorApiKey`).
|
|
219
|
+
*/
|
|
220
|
+
export function beginLiveCursorScenario(options) {
|
|
221
|
+
const base = beginScenarioBase(options);
|
|
222
|
+
return { ...base, config: { ...base.config, cursorApiKey: options.apiKey } };
|
|
223
|
+
}
|
|
195
224
|
/**
|
|
196
|
-
* Run ONE `ExecuteCursor` invocation for the scenario: the
|
|
197
|
-
* adapter under the real turn runtime, as the composition roots
|
|
198
|
-
* Built per invocation (the registry constructs its client, which
|
|
199
|
-
* bound at `
|
|
225
|
+
* Run ONE `ExecuteCursor` invocation for the scenario — either posture: the
|
|
226
|
+
* real Cursor adapter under the real turn runtime, as the composition roots
|
|
227
|
+
* wire them. Built per invocation (the registry constructs its client, which
|
|
228
|
+
* is the one bound at `begin*CursorScenario`; the adapter boots on the
|
|
229
|
+
* scenario's config). Reads only the record and the config, which both
|
|
230
|
+
* postures have.
|
|
200
231
|
*/
|
|
201
232
|
export async function runCursorTurn(scenario, options = {}) {
|
|
202
233
|
// Imported lazily so the scenario file's `vi.mock` declarations are in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermetic-cursor.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hermetic-cursor.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,12 @@
|
|
|
15
15
|
* So a turn is a SCRIPT of ordered steps, one of four kinds:
|
|
16
16
|
*
|
|
17
17
|
* - `event(SDKMessage)` — yielded from `stream()`
|
|
18
|
-
* - `delta(update)` — fired through `onDelta
|
|
18
|
+
* - `delta(update)` — fired through `onDelta`: any `InteractionUpdate`
|
|
19
|
+
* (the `turn-ended` usage the loop prices; the
|
|
20
|
+
* tool-call timings, shell output and completion
|
|
21
|
+
* status the transcript folds — #1097 widened
|
|
22
|
+
* the step from `turn-ended` alone so the delta
|
|
23
|
+
* channel has an end-to-end net)
|
|
19
24
|
* - `effect(fn)` — the side effect the SDK would have performed
|
|
20
25
|
* (run the real hook, write a workspace file,
|
|
21
26
|
* cancel the activity from the outside)
|
|
@@ -25,10 +30,10 @@
|
|
|
25
30
|
* (`ScriptStep`, driven in order), applied to the SDK's event surface.
|
|
26
31
|
*
|
|
27
32
|
* Typing: `SDKMessage`, `Run`, `RunResult`, `SDKAgent` and the delta channel's
|
|
28
|
-
* `
|
|
29
|
-
* `messages.d.ts` / `run.d.ts` / `agent.d.ts` / the vendored `delta-types`),
|
|
33
|
+
* `InteractionUpdate` are the SDK's own types (`@cursor/sdk` 1.0.31, concrete
|
|
34
|
+
* in `messages.d.ts` / `run.d.ts` / `agent.d.ts` / the vendored `delta-types`),
|
|
30
35
|
* so a script that drifts from the real event shape fails `tsc`. (At 1.0.13
|
|
31
|
-
* the delta types resolved to `any` and the one delta this double
|
|
36
|
+
* the delta types resolved to `any` and the one delta this double emitted was
|
|
32
37
|
* typed locally; stigmer/stigmer#1053 closed that gap.)
|
|
33
38
|
*
|
|
34
39
|
* Cancellation: `run.cancel()` is how the harness stops a turn (first denial,
|
|
@@ -44,7 +49,7 @@
|
|
|
44
49
|
* {@link ScriptedCursorAgent.arrangeNextTurn}, which REPLACES the slot the
|
|
45
50
|
* next `send()` will consume.
|
|
46
51
|
*/
|
|
47
|
-
import type { AgentUsage, GetUsageOptions, ModelSelection, Run, RunOperation, RunResult, RunStatus, SDKAgent, SDKMessage, SDKUserMessage, SendOptions, TurnEndedUpdate } from "@cursor/sdk";
|
|
52
|
+
import type { AgentUsage, GetUsageOptions, InteractionUpdate, ModelSelection, Run, RunOperation, RunResult, RunStatus, SDKAgent, SDKMessage, SDKUserMessage, SendOptions, TurnEndedUpdate } from "@cursor/sdk";
|
|
48
53
|
import type { ConversationTurn } from "@cursor/sdk";
|
|
49
54
|
/** What an `effect` step can reach: the run it is part of. */
|
|
50
55
|
export interface EffectContext {
|
|
@@ -56,7 +61,7 @@ export type ScriptStep = {
|
|
|
56
61
|
readonly event: SDKMessage;
|
|
57
62
|
} | {
|
|
58
63
|
readonly kind: "delta";
|
|
59
|
-
readonly update:
|
|
64
|
+
readonly update: InteractionUpdate;
|
|
60
65
|
} | {
|
|
61
66
|
readonly kind: "effect";
|
|
62
67
|
readonly label: string;
|
|
@@ -70,6 +75,8 @@ export type TurnScript = readonly ScriptStep[];
|
|
|
70
75
|
/** Step builders — the vocabulary a scenario file reads as. */
|
|
71
76
|
export declare const step: {
|
|
72
77
|
readonly event: (event: SDKMessage) => ScriptStep;
|
|
78
|
+
/** Any delta the SDK fires through `onDelta` between stream events: tool-call timings, shell output, a completion's status. */
|
|
79
|
+
readonly delta: (update: InteractionUpdate) => ScriptStep;
|
|
73
80
|
/** The `turn-ended` delta `turn-stream.ts` prices; the SDK's shape, all four counts stated. */
|
|
74
81
|
readonly turnEnded: (usage: NonNullable<TurnEndedUpdate["usage"]>) => ScriptStep;
|
|
75
82
|
readonly effect: (label: string, run: (ctx: EffectContext) => void | Promise<void>) => ScriptStep;
|
|
@@ -88,6 +95,8 @@ export declare function sdkEvents(agentId: string, runId: string): {
|
|
|
88
95
|
thinking(text: string): SDKMessage;
|
|
89
96
|
toolCall(callId: string, name: string, status: "running" | "completed" | "error", args?: unknown, result?: unknown): SDKMessage;
|
|
90
97
|
status(status: "CREATING" | "RUNNING" | "FINISHED" | "ERROR" | "CANCELLED" | "EXPIRED", message?: string): SDKMessage;
|
|
98
|
+
/** The SDK's `task` event: a status line about the run in the agent's own voice, which the transcript shows as a SYSTEM message. */
|
|
99
|
+
task(text: string, status?: string): SDKMessage;
|
|
91
100
|
};
|
|
92
101
|
/** Called once per step so the driver's clock can tick. */
|
|
93
102
|
export type StepObserver = (step: ScriptStep, index: number) => void;
|
|
@@ -15,7 +15,12 @@
|
|
|
15
15
|
* So a turn is a SCRIPT of ordered steps, one of four kinds:
|
|
16
16
|
*
|
|
17
17
|
* - `event(SDKMessage)` — yielded from `stream()`
|
|
18
|
-
* - `delta(update)` — fired through `onDelta
|
|
18
|
+
* - `delta(update)` — fired through `onDelta`: any `InteractionUpdate`
|
|
19
|
+
* (the `turn-ended` usage the loop prices; the
|
|
20
|
+
* tool-call timings, shell output and completion
|
|
21
|
+
* status the transcript folds — #1097 widened
|
|
22
|
+
* the step from `turn-ended` alone so the delta
|
|
23
|
+
* channel has an end-to-end net)
|
|
19
24
|
* - `effect(fn)` — the side effect the SDK would have performed
|
|
20
25
|
* (run the real hook, write a workspace file,
|
|
21
26
|
* cancel the activity from the outside)
|
|
@@ -25,10 +30,10 @@
|
|
|
25
30
|
* (`ScriptStep`, driven in order), applied to the SDK's event surface.
|
|
26
31
|
*
|
|
27
32
|
* Typing: `SDKMessage`, `Run`, `RunResult`, `SDKAgent` and the delta channel's
|
|
28
|
-
* `
|
|
29
|
-
* `messages.d.ts` / `run.d.ts` / `agent.d.ts` / the vendored `delta-types`),
|
|
33
|
+
* `InteractionUpdate` are the SDK's own types (`@cursor/sdk` 1.0.31, concrete
|
|
34
|
+
* in `messages.d.ts` / `run.d.ts` / `agent.d.ts` / the vendored `delta-types`),
|
|
30
35
|
* so a script that drifts from the real event shape fails `tsc`. (At 1.0.13
|
|
31
|
-
* the delta types resolved to `any` and the one delta this double
|
|
36
|
+
* the delta types resolved to `any` and the one delta this double emitted was
|
|
32
37
|
* typed locally; stigmer/stigmer#1053 closed that gap.)
|
|
33
38
|
*
|
|
34
39
|
* Cancellation: `run.cancel()` is how the harness stops a turn (first denial,
|
|
@@ -49,6 +54,10 @@ export const step = {
|
|
|
49
54
|
event(event) {
|
|
50
55
|
return { kind: "event", event };
|
|
51
56
|
},
|
|
57
|
+
/** Any delta the SDK fires through `onDelta` between stream events: tool-call timings, shell output, a completion's status. */
|
|
58
|
+
delta(update) {
|
|
59
|
+
return { kind: "delta", update };
|
|
60
|
+
},
|
|
52
61
|
/** The `turn-ended` delta `turn-stream.ts` prices; the SDK's shape, all four counts stated. */
|
|
53
62
|
turnEnded(usage) {
|
|
54
63
|
return { kind: "delta", update: { type: "turn-ended", usage } };
|
|
@@ -87,6 +96,10 @@ export function sdkEvents(agentId, runId) {
|
|
|
87
96
|
status(status, message) {
|
|
88
97
|
return { type: "status", ...base, status, message };
|
|
89
98
|
},
|
|
99
|
+
/** The SDK's `task` event: a status line about the run in the agent's own voice, which the transcript shows as a SYSTEM message. */
|
|
100
|
+
task(text, status) {
|
|
101
|
+
return { type: "task", ...base, text, status };
|
|
102
|
+
},
|
|
90
103
|
};
|
|
91
104
|
}
|
|
92
105
|
export class ScriptedRun {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripted-agent.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/scripted-agent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scripted-agent.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/scripted-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* The interceptors read the proxy credential from `Config.proxyTokenRef` per
|
|
29
29
|
* request; which credential that is (the static root's control-plane token,
|
|
30
30
|
* the manager's minted runner token) is the root's decision, not this
|
|
31
|
-
* module's
|
|
31
|
+
* module's.
|
|
32
32
|
*
|
|
33
33
|
* What this adapter never does: throw out of `runTurn` (an SDK failure is
|
|
34
34
|
* `failed` with the classifier's sentence; an unexpected exception is
|
|
@@ -40,14 +40,14 @@
|
|
|
40
40
|
*
|
|
41
41
|
* The turn boundary (`turn-boundary.ts`) runs inside `turn.ts` and reads
|
|
42
42
|
* this harness's deny-and-retry evidence — the denial ledger — into WAITING
|
|
43
|
-
* rows and settled rows. The file-review capture is NOT here since
|
|
43
|
+
* rows and settled rows. The file-review capture is NOT here since #1096:
|
|
44
44
|
* the runtime pins the baseline before this adapter runs and captures the
|
|
45
45
|
* whole turn's tree after it returns (`harness/capture.ts`); what this
|
|
46
46
|
* adapter contributes is the hook sidecar it binds as the runtime's CAS
|
|
47
47
|
* observations (`turn-setup.ts` `installGate`).
|
|
48
48
|
*
|
|
49
|
-
* Extracted from `index.ts` `createCursorActivities`
|
|
50
|
-
* the turn body
|
|
49
|
+
* Extracted from `index.ts` `createCursorActivities` in #1070, which also
|
|
50
|
+
* split it from the turn body. The seventeen hermetic goldens under
|
|
51
51
|
* `__tests__/hermetic/` pin the result byte for byte.
|
|
52
52
|
*/
|
|
53
53
|
import type { Config } from "../../config.js";
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* The interceptors read the proxy credential from `Config.proxyTokenRef` per
|
|
29
29
|
* request; which credential that is (the static root's control-plane token,
|
|
30
30
|
* the manager's minted runner token) is the root's decision, not this
|
|
31
|
-
* module's
|
|
31
|
+
* module's.
|
|
32
32
|
*
|
|
33
33
|
* What this adapter never does: throw out of `runTurn` (an SDK failure is
|
|
34
34
|
* `failed` with the classifier's sentence; an unexpected exception is
|
|
@@ -40,14 +40,14 @@
|
|
|
40
40
|
*
|
|
41
41
|
* The turn boundary (`turn-boundary.ts`) runs inside `turn.ts` and reads
|
|
42
42
|
* this harness's deny-and-retry evidence — the denial ledger — into WAITING
|
|
43
|
-
* rows and settled rows. The file-review capture is NOT here since
|
|
43
|
+
* rows and settled rows. The file-review capture is NOT here since #1096:
|
|
44
44
|
* the runtime pins the baseline before this adapter runs and captures the
|
|
45
45
|
* whole turn's tree after it returns (`harness/capture.ts`); what this
|
|
46
46
|
* adapter contributes is the hook sidecar it binds as the runtime's CAS
|
|
47
47
|
* observations (`turn-setup.ts` `installGate`).
|
|
48
48
|
*
|
|
49
|
-
* Extracted from `index.ts` `createCursorActivities`
|
|
50
|
-
* the turn body
|
|
49
|
+
* Extracted from `index.ts` `createCursorActivities` in #1070, which also
|
|
50
|
+
* split it from the turn body. The seventeen hermetic goldens under
|
|
51
51
|
* `__tests__/hermetic/` pin the result byte for byte.
|
|
52
52
|
*/
|
|
53
53
|
import { markBoot } from "../../shared/cold-start-timing.js";
|
|
@@ -37,16 +37,14 @@ export type { MergedToolPolicy, PolicySource } from "../../shared/approval-polic
|
|
|
37
37
|
export type ApprovalCategory = ToolApprovalCategory;
|
|
38
38
|
export declare const approvalCategory: typeof toolApprovalCategory;
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* and injected into the generated preToolUse hook script so the runner and the
|
|
47
|
-
* hook never disagree on which field to match.
|
|
40
|
+
* The salient argument fields — the resource a built-in acts on — are the
|
|
41
|
+
* platform's one list, `shared/args-preview.ts` `SALIENT_ARG_FIELDS` (moved
|
|
42
|
+
* there in #1097: the transcript builder previews every row over it for
|
|
43
|
+
* both harnesses). Re-exported here for this harness's identity code and the
|
|
44
|
+
* generated hook script, which inject it so the runner and the hook never
|
|
45
|
+
* disagree on which field to match.
|
|
48
46
|
*/
|
|
49
|
-
export
|
|
47
|
+
export { SALIENT_ARG_FIELDS } from "../../shared/args-preview.js";
|
|
50
48
|
/**
|
|
51
49
|
* Check whether a built-in (non-MCP) Cursor tool requires user approval.
|
|
52
50
|
*
|
|
@@ -88,7 +86,9 @@ export declare function getBuiltInGatedCategories(): Array<[string, ApprovalCate
|
|
|
88
86
|
* Approval-message template for a gated built-in tool (either taxonomy), or
|
|
89
87
|
* undefined when the tool is not gated. Resolved via {@link approvalCategory}
|
|
90
88
|
* so stream-side names (`edit`/`shell`/`delete`) and hook-side names
|
|
91
|
-
* (`Write`/`Shell`/`Delete`) both map to the same template
|
|
89
|
+
* (`Write`/`Shell`/`Delete`) both map to the same template — the platform's
|
|
90
|
+
* ONE table, `shared/approval-policy.ts` `CATEGORY_APPROVAL_MESSAGE`, shared
|
|
91
|
+
* with the native gate since #1097. Callers resolve the
|
|
92
92
|
* placeholders against the tool args via resolveApprovalMessage.
|
|
93
93
|
*/
|
|
94
94
|
export declare function getBuiltInApprovalMessage(toolName: string): string | undefined;
|
|
@@ -22,6 +22,7 @@ import { toolApprovalCategory } from "../../shared/tool-kind.js";
|
|
|
22
22
|
// (`from "./approval-policy.js"`) keep working unchanged. This module now owns
|
|
23
23
|
// only the Cursor-specific built-in-tool gating helpers below.
|
|
24
24
|
export { mergeApprovalPolicies, lookupMcpToolPolicy, resolveApprovalMessage, POLICY_ENGINE_VERSION, } from "../../shared/approval-policy.js";
|
|
25
|
+
import { CATEGORY_APPROVAL_MESSAGE } from "../../shared/approval-policy.js";
|
|
25
26
|
/**
|
|
26
27
|
* Built-in Cursor tools the preToolUse hook gates, named as the hook receives
|
|
27
28
|
* them.
|
|
@@ -43,29 +44,15 @@ const BUILT_IN_GATED = new Set([
|
|
|
43
44
|
]);
|
|
44
45
|
export const approvalCategory = toolApprovalCategory;
|
|
45
46
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* the
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
47
|
+
* The salient argument fields — the resource a built-in acts on — are the
|
|
48
|
+
* platform's one list, `shared/args-preview.ts` `SALIENT_ARG_FIELDS` (moved
|
|
49
|
+
* there in #1097: the transcript builder previews every row over it for
|
|
50
|
+
* both harnesses). Re-exported here for this harness's identity code and the
|
|
51
|
+
* generated hook script, which inject it so the runner and the hook never
|
|
52
|
+
* disagree on which field to match.
|
|
52
53
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
delete: "Delete: {{args.path}}",
|
|
56
|
-
shell: "Run command: {{args.command}}",
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Top-level tool-argument fields, in priority order, that identify the specific
|
|
60
|
-
* resource a built-in tool acts on. The list deliberately spans BOTH taxonomies'
|
|
61
|
-
* arg shapes: the hook input names a file `file_path` and the stream names it
|
|
62
|
-
* `path`; both name a shell command `command`. Extracting the same resource
|
|
63
|
-
* VALUE on both sides (the absolute path / the command string) is what lets the
|
|
64
|
-
* hook-recorded denial token equal the stream-computed token. Authored here once
|
|
65
|
-
* and injected into the generated preToolUse hook script so the runner and the
|
|
66
|
-
* hook never disagree on which field to match.
|
|
67
|
-
*/
|
|
68
|
-
export const SALIENT_ARG_FIELDS = ["file_path", "path", "target_notebook", "command"];
|
|
54
|
+
export { SALIENT_ARG_FIELDS } from "../../shared/args-preview.js";
|
|
55
|
+
import { SALIENT_ARG_FIELDS } from "../../shared/args-preview.js";
|
|
69
56
|
/**
|
|
70
57
|
* Check whether a built-in (non-MCP) Cursor tool requires user approval.
|
|
71
58
|
*
|
|
@@ -119,7 +106,9 @@ export function getBuiltInGatedCategories() {
|
|
|
119
106
|
* Approval-message template for a gated built-in tool (either taxonomy), or
|
|
120
107
|
* undefined when the tool is not gated. Resolved via {@link approvalCategory}
|
|
121
108
|
* so stream-side names (`edit`/`shell`/`delete`) and hook-side names
|
|
122
|
-
* (`Write`/`Shell`/`Delete`) both map to the same template
|
|
109
|
+
* (`Write`/`Shell`/`Delete`) both map to the same template — the platform's
|
|
110
|
+
* ONE table, `shared/approval-policy.ts` `CATEGORY_APPROVAL_MESSAGE`, shared
|
|
111
|
+
* with the native gate since #1097. Callers resolve the
|
|
123
112
|
* placeholders against the tool args via resolveApprovalMessage.
|
|
124
113
|
*/
|
|
125
114
|
export function getBuiltInApprovalMessage(toolName) {
|