@stigmer/runner 3.14.0 → 3.15.0
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/dist/.build-fingerprint +1 -1
- package/dist/__test-utils__/execution-record-fixture.d.ts +47 -0
- package/dist/__test-utils__/execution-record-fixture.js +68 -0
- package/dist/__test-utils__/execution-record-fixture.js.map +1 -0
- package/dist/__test-utils__/harness-contract/types.d.ts +166 -0
- package/dist/__test-utils__/harness-contract/types.js +49 -0
- package/dist/__test-utils__/harness-contract/types.js.map +1 -0
- package/dist/__test-utils__/hermetic-activity.d.ts +268 -0
- package/dist/__test-utils__/hermetic-activity.js +385 -0
- package/dist/__test-utils__/hermetic-activity.js.map +1 -0
- package/dist/__test-utils__/mock-client.d.ts +13 -0
- package/dist/__test-utils__/mock-client.js +45 -0
- package/dist/__test-utils__/mock-client.js.map +1 -0
- package/dist/__test-utils__/mock-workspace.d.ts +15 -0
- package/dist/__test-utils__/mock-workspace.js +21 -0
- package/dist/__test-utils__/mock-workspace.js.map +1 -0
- package/dist/__test-utils__/model-registry-fixture.d.ts +56 -0
- package/dist/__test-utils__/model-registry-fixture.js +66 -0
- package/dist/__test-utils__/model-registry-fixture.js.map +1 -0
- package/dist/__test-utils__/turn-input-fixture.d.ts +60 -0
- package/dist/__test-utils__/turn-input-fixture.js +118 -0
- package/dist/__test-utils__/turn-input-fixture.js.map +1 -0
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.d.ts +107 -0
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.js +344 -0
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.js.map +1 -0
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.d.ts +20 -0
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js +58 -0
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js +2 -32
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.d.ts +148 -0
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js +257 -0
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js.map +1 -0
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.d.ts +183 -0
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js +262 -0
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js.map +1 -0
- package/dist/activities/execute-cursor/__test-utils__/scripted-sdk.d.ts +138 -0
- package/dist/activities/execute-cursor/__test-utils__/scripted-sdk.js +191 -0
- package/dist/activities/execute-cursor/__test-utils__/scripted-sdk.js.map +1 -0
- package/dist/activities/execute-cursor/adapter.d.ts +55 -0
- package/dist/activities/execute-cursor/adapter.js +119 -0
- package/dist/activities/execute-cursor/adapter.js.map +1 -0
- package/dist/activities/execute-cursor/approval-state.d.ts +2 -2
- package/dist/activities/execute-cursor/approval-state.js.map +1 -1
- package/dist/activities/execute-cursor/capture-flow.d.ts +15 -30
- package/dist/activities/execute-cursor/capture-flow.js +17 -26
- package/dist/activities/execute-cursor/capture-flow.js.map +1 -1
- package/dist/activities/execute-cursor/cursor-capabilities.d.ts +23 -0
- package/dist/activities/execute-cursor/cursor-capabilities.js +33 -0
- package/dist/activities/execute-cursor/cursor-capabilities.js.map +1 -0
- package/dist/activities/execute-cursor/cursor-mcp-config.d.ts +2 -2
- package/dist/activities/execute-cursor/cursor-mcp-config.js.map +1 -1
- package/dist/activities/execute-cursor/fetch-interceptor.d.ts +15 -25
- package/dist/activities/execute-cursor/fetch-interceptor.js +39 -33
- package/dist/activities/execute-cursor/fetch-interceptor.js.map +1 -1
- package/dist/activities/execute-cursor/http2-interceptor.d.ts +21 -17
- package/dist/activities/execute-cursor/http2-interceptor.js +38 -31
- package/dist/activities/execute-cursor/http2-interceptor.js.map +1 -1
- package/dist/activities/execute-cursor/message-translator.d.ts +28 -19
- package/dist/activities/execute-cursor/message-translator.js +76 -27
- package/dist/activities/execute-cursor/message-translator.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.d.ts +180 -11
- package/dist/activities/execute-cursor/prompt-builder.js +171 -0
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/rejection-capture.d.ts +3 -6
- package/dist/activities/execute-cursor/rejection-capture.js +5 -7
- package/dist/activities/execute-cursor/rejection-capture.js.map +1 -1
- package/dist/activities/execute-cursor/session-lifecycle.d.ts +1 -4
- package/dist/activities/execute-cursor/session-lifecycle.js.map +1 -1
- package/dist/activities/execute-cursor/turn-boundary.d.ts +1 -1
- package/dist/activities/execute-cursor/turn-settle.d.ts +49 -0
- package/dist/activities/execute-cursor/turn-settle.js +507 -0
- package/dist/activities/execute-cursor/turn-settle.js.map +1 -0
- package/dist/activities/execute-cursor/turn-setup.d.ts +173 -0
- package/dist/activities/execute-cursor/turn-setup.js +496 -0
- package/dist/activities/execute-cursor/turn-setup.js.map +1 -0
- package/dist/activities/execute-cursor/turn-stream.d.ts +41 -71
- package/dist/activities/execute-cursor/turn-stream.js +70 -135
- package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
- package/dist/activities/execute-cursor/turn.d.ts +43 -0
- package/dist/activities/execute-cursor/turn.js +222 -0
- package/dist/activities/execute-cursor/turn.js.map +1 -0
- package/dist/activities/execute-cursor/usage-pricing.d.ts +38 -0
- package/dist/activities/execute-cursor/usage-pricing.js +50 -0
- package/dist/activities/execute-cursor/usage-pricing.js.map +1 -0
- package/dist/activities/execute-deep-agent/approval-file-change.d.ts +1 -1
- package/dist/activities/execute-deep-agent/approval-file-change.js +1 -1
- package/dist/activities/execute-deep-agent/environment.js +1 -1
- package/dist/activities/execute-deep-agent/environment.js.map +1 -1
- package/dist/activities/execute-deep-agent/setup.js +3 -2
- package/dist/activities/execute-deep-agent/setup.js.map +1 -1
- package/dist/activities/hydrate-workflow-execution.js +1 -1
- package/dist/activities/hydrate-workflow-execution.js.map +1 -1
- package/dist/config.d.ts +15 -0
- package/dist/config.js.map +1 -1
- package/dist/harness/capabilities.d.ts +87 -0
- package/dist/harness/capabilities.js +37 -0
- package/dist/harness/capabilities.js.map +1 -0
- package/dist/harness/persist-chokepoint.d.ts +74 -0
- package/dist/harness/persist-chokepoint.js +88 -0
- package/dist/harness/persist-chokepoint.js.map +1 -0
- package/dist/harness/registry.d.ts +106 -0
- package/dist/harness/registry.js +168 -0
- package/dist/harness/registry.js.map +1 -0
- package/dist/harness/run-turn.d.ts +53 -0
- package/dist/harness/run-turn.js +528 -0
- package/dist/harness/run-turn.js.map +1 -0
- package/dist/harness/stop-controller.d.ts +50 -0
- package/dist/harness/stop-controller.js +62 -0
- package/dist/harness/stop-controller.js.map +1 -0
- package/dist/harness/terminal-table.d.ts +141 -0
- package/dist/harness/terminal-table.js +239 -0
- package/dist/harness/terminal-table.js.map +1 -0
- package/dist/harness/turn-context.d.ts +523 -0
- package/dist/harness/turn-context.js +739 -0
- package/dist/harness/turn-context.js.map +1 -0
- package/dist/harness/types.d.ts +448 -0
- package/dist/harness/types.js +64 -0
- package/dist/harness/types.js.map +1 -0
- package/dist/harness/usage-accumulator.d.ts +68 -0
- package/dist/harness/usage-accumulator.js +101 -0
- package/dist/harness/usage-accumulator.js.map +1 -0
- package/dist/harness-adapters.d.ts +27 -0
- package/dist/harness-adapters.js +28 -0
- package/dist/harness-adapters.js.map +1 -0
- package/dist/main.js.map +1 -1
- package/dist/runner-manager.js +64 -48
- package/dist/runner-manager.js.map +1 -1
- package/dist/runner.d.ts +5 -4
- package/dist/runner.js +65 -64
- package/dist/runner.js.map +1 -1
- package/dist/shared/approval-policy.d.ts +1 -1
- package/dist/shared/approval-policy.js.map +1 -1
- package/dist/{activities/execute-cursor → shared}/attachment-resolver.d.ts +2 -2
- package/dist/{activities/execute-cursor → shared}/attachment-resolver.js +5 -5
- package/dist/shared/attachment-resolver.js.map +1 -0
- package/dist/{activities/execute-cursor → shared}/blueprint-resolver.d.ts +7 -5
- package/dist/{activities/execute-cursor → shared}/blueprint-resolver.js +3 -63
- package/dist/shared/blueprint-resolver.js.map +1 -0
- package/dist/shared/channel-attachment.d.ts +1 -1
- package/dist/shared/channel-attachment.js.map +1 -1
- package/dist/{activities/execute-cursor → shared}/cost-guard.d.ts +5 -1
- package/dist/{activities/execute-cursor → shared}/cost-guard.js +5 -1
- package/dist/shared/cost-guard.js.map +1 -0
- package/dist/{activities/execute-cursor → shared}/env-resolver.d.ts +1 -1
- package/dist/shared/env-resolver.js.map +1 -0
- package/dist/{activities/execute-cursor → shared}/exact-apply.d.ts +1 -1
- package/dist/{activities/execute-cursor → shared}/exact-apply.js +6 -6
- package/dist/shared/exact-apply.js.map +1 -0
- package/dist/shared/execution-context.d.ts +35 -0
- package/dist/shared/execution-context.js +38 -0
- package/dist/shared/execution-context.js.map +1 -0
- package/dist/{activities/execute-cursor → shared}/extract-structured-output.d.ts +5 -2
- package/dist/{activities/execute-cursor → shared}/extract-structured-output.js +9 -6
- package/dist/shared/extract-structured-output.js.map +1 -0
- package/dist/shared/filereview/capture.d.ts +1 -1
- package/dist/shared/filereview/capture.js +1 -1
- package/dist/shared/heartbeat.d.ts +13 -11
- package/dist/shared/heartbeat.js +14 -29
- package/dist/shared/heartbeat.js.map +1 -1
- package/dist/{activities/execute-cursor → shared}/persist-decision.d.ts +5 -2
- package/dist/{activities/execute-cursor → shared}/persist-decision.js +4 -1
- package/dist/shared/persist-decision.js.map +1 -0
- package/dist/{activities/execute-cursor → shared}/skill-resolver.d.ts +16 -3
- package/dist/{activities/execute-cursor → shared}/skill-resolver.js +12 -4
- package/dist/shared/skill-resolver.js.map +1 -0
- package/dist/shared/subagent-rows.d.ts +21 -0
- package/dist/shared/subagent-rows.js +34 -0
- package/dist/shared/subagent-rows.js.map +1 -0
- package/dist/shared/worker-shutdown.d.ts +43 -16
- package/dist/shared/worker-shutdown.js +28 -13
- package/dist/shared/worker-shutdown.js.map +1 -1
- package/dist/shared/workspace/platform-dir.d.ts +1 -1
- package/dist/shared/workspace/platform-dir.js +1 -1
- package/dist/shared/workspace/session-provision.d.ts +54 -0
- package/dist/{activities/execute-cursor/workspace-provision.js → shared/workspace/session-provision.js} +15 -12
- package/dist/shared/workspace/session-provision.js.map +1 -0
- package/package.json +4 -4
- package/src/__test-utils__/__tests__/harness-contract-self-check.test.ts +325 -0
- package/src/__test-utils__/config-fixture.ts +63 -0
- package/src/__test-utils__/execution-record-fixture.ts +104 -0
- package/src/__test-utils__/harness-boot-order-child.ts +58 -0
- package/src/__test-utils__/harness-contract/contract.ts +581 -0
- package/src/__test-utils__/harness-contract/recording-sink.ts +107 -0
- package/src/__test-utils__/harness-contract/runtime-contract.ts +666 -0
- package/src/__test-utils__/harness-contract/scripted-adapter.ts +349 -0
- package/src/__test-utils__/harness-contract/types.ts +176 -0
- package/src/__test-utils__/hermetic-activity.ts +502 -0
- package/src/__test-utils__/model-registry-fixture.ts +72 -0
- package/src/__test-utils__/module-specifiers.ts +82 -0
- package/src/__test-utils__/proto-helpers.ts +25 -0
- package/src/__test-utils__/turn-input-fixture.ts +155 -0
- package/src/__tests__/harness-boot-order.test.ts +77 -0
- package/src/__tests__/harness-contract.test.ts +27 -0
- package/src/__tests__/runner-manager.test.ts +18 -0
- package/src/activities/execute-cursor/__test-utils__/__tests__/scripted-double.test.ts +102 -0
- package/src/activities/execute-cursor/__test-utils__/contract-subject.ts +396 -0
- package/src/activities/execute-cursor/__test-utils__/cursor-hook-harness.ts +66 -0
- package/src/activities/execute-cursor/__test-utils__/gateway-substrate.ts +2 -43
- package/src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts +342 -0
- package/src/activities/execute-cursor/__test-utils__/scripted-agent.ts +368 -0
- package/src/activities/execute-cursor/__test-utils__/scripted-sdk.ts +254 -0
- package/src/activities/execute-cursor/__tests__/adapter-is-temporal-free.test.ts +45 -0
- package/src/activities/execute-cursor/__tests__/approval-decisions-agree.test.ts +90 -0
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +7 -8
- package/src/activities/execute-cursor/__tests__/capture-flow.test.ts +28 -1
- package/src/activities/execute-cursor/__tests__/deny-gate-exact-apply.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/fetch-interceptor.test.ts +64 -6
- package/src/activities/execute-cursor/__tests__/hermetic/deny-and-retry.test.ts +228 -0
- package/src/activities/execute-cursor/__tests__/hermetic/file-review-capture.test.ts +180 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/cost-cap.status.json +53 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/deny-and-retry.turn1.status.json +55 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/deny-and-retry.turn2.status.json +77 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/file-review-capture.status.json +126 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/pause.status.json +40 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/plain-turn.status.json +48 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/platform-stop.status.json +56 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/recovery-fresh-agent.status.json +53 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/recovery-transport-timeout.status.json +48 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/resolution-error.status.json +18 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/run-cancelled.status.json +36 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/run-error-non-retryable.status.json +37 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/sdk-error-at-create.status.json +38 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/stall.status.json +59 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-call.status.json +68 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/unattributed-hook-block.status.json +79 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/worker-shutdown.status.json +42 -0
- package/src/activities/execute-cursor/__tests__/hermetic/harness-contract.test.ts +170 -0
- package/src/activities/execute-cursor/__tests__/hermetic/pause-vs-shutdown.test.ts +205 -0
- package/src/activities/execute-cursor/__tests__/hermetic/plain-turn.test.ts +171 -0
- package/src/activities/execute-cursor/__tests__/hermetic/recovery-fresh-agent.test.ts +156 -0
- package/src/activities/execute-cursor/__tests__/hermetic/run-wait-arms.test.ts +286 -0
- package/src/activities/execute-cursor/__tests__/hermetic/stream-self-stop-arms.test.ts +332 -0
- package/src/activities/execute-cursor/__tests__/hermetic/thrown-error-arms.test.ts +193 -0
- package/src/activities/execute-cursor/__tests__/hermetic/tool-call.test.ts +137 -0
- package/src/activities/execute-cursor/__tests__/hermetic/unattributed-hook-block.test.ts +185 -0
- package/src/activities/execute-cursor/__tests__/hermetic/workspace-lock-timeout.test.ts +151 -0
- package/src/activities/execute-cursor/__tests__/http2-interceptor.test.ts +65 -35
- package/src/activities/execute-cursor/__tests__/message-translator.test.ts +0 -40
- package/src/activities/execute-cursor/__tests__/same-identity-reproposal.test.ts +171 -0
- package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +118 -243
- package/src/activities/execute-cursor/__tests__/usage-pricing.test.ts +84 -0
- package/src/activities/execute-cursor/adapter.ts +138 -0
- package/src/activities/execute-cursor/approval-state.ts +2 -2
- package/src/activities/execute-cursor/capture-flow.ts +18 -41
- package/src/activities/execute-cursor/cursor-capabilities.ts +35 -0
- package/src/activities/execute-cursor/cursor-mcp-config.ts +2 -2
- package/src/activities/execute-cursor/fetch-interceptor.ts +48 -45
- package/src/activities/execute-cursor/http2-interceptor.ts +47 -34
- package/src/activities/execute-cursor/message-translator.ts +90 -45
- package/src/activities/execute-cursor/prompt-builder.ts +327 -12
- package/src/activities/execute-cursor/rejection-capture.ts +5 -12
- package/src/activities/execute-cursor/session-lifecycle.ts +1 -5
- package/src/activities/execute-cursor/turn-boundary.ts +1 -1
- package/src/activities/execute-cursor/turn-settle.ts +601 -0
- package/src/activities/execute-cursor/turn-setup.ts +645 -0
- package/src/activities/execute-cursor/turn-stream.ts +84 -210
- package/src/activities/execute-cursor/turn.ts +240 -0
- package/src/activities/execute-cursor/usage-pricing.ts +67 -0
- package/src/activities/execute-deep-agent/approval-file-change.ts +1 -1
- package/src/activities/execute-deep-agent/environment.ts +1 -1
- package/src/activities/execute-deep-agent/setup.ts +3 -2
- package/src/activities/hydrate-workflow-execution.ts +1 -1
- package/src/config.ts +13 -0
- package/src/harness/__tests__/import-direction.test.ts +168 -0
- package/src/harness/__tests__/persist-chokepoint.test.ts +146 -0
- package/src/harness/__tests__/registry.test.ts +168 -0
- package/src/harness/__tests__/run-turn.test.ts +165 -0
- package/src/harness/__tests__/stop-controller.test.ts +49 -0
- package/src/harness/__tests__/turn-context.test.ts +178 -0
- package/src/harness/__tests__/usage-accumulator.test.ts +83 -0
- package/src/harness/capabilities.ts +92 -0
- package/src/harness/persist-chokepoint.ts +112 -0
- package/src/harness/registry.ts +197 -0
- package/src/harness/run-turn.ts +618 -0
- package/src/harness/stop-controller.ts +83 -0
- package/src/harness/terminal-table.ts +276 -0
- package/src/harness/turn-context.ts +1028 -0
- package/src/harness/types.ts +473 -0
- package/src/harness/usage-accumulator.ts +122 -0
- package/src/harness-adapters.ts +30 -0
- package/src/main.ts +1 -1
- package/src/runner-manager.ts +68 -61
- package/src/runner.ts +67 -78
- package/src/shared/__tests__/attachment-naming.test.ts +1 -1
- package/src/{activities/execute-cursor → shared}/__tests__/attachment-resolver.test.ts +6 -4
- package/src/{activities/execute-cursor → shared}/__tests__/cost-guard.test.ts +2 -1
- package/src/{activities/execute-cursor → shared}/__tests__/exact-apply.test.ts +3 -3
- package/src/{activities/execute-cursor → shared}/__tests__/extract-structured-output.test.ts +8 -8
- package/src/{activities/execute-cursor → shared}/__tests__/persist-decision.test.ts +4 -2
- package/src/{activities/execute-cursor → shared}/__tests__/skill-resolver.test.ts +1 -1
- package/src/shared/__tests__/subagent-rows.test.ts +34 -0
- package/src/shared/__tests__/worker-shutdown.test.ts +44 -39
- package/src/shared/approval-policy.ts +1 -1
- package/src/{activities/execute-cursor → shared}/attachment-resolver.ts +6 -6
- package/src/{activities/execute-cursor → shared}/blueprint-resolver.ts +7 -78
- package/src/shared/channel-attachment.ts +1 -1
- package/src/{activities/execute-cursor → shared}/cost-guard.ts +5 -1
- package/src/{activities/execute-cursor → shared}/env-resolver.ts +1 -1
- package/src/{activities/execute-cursor → shared}/exact-apply.ts +7 -7
- package/src/shared/execution-context.ts +45 -0
- package/src/{activities/execute-cursor → shared}/extract-structured-output.ts +10 -7
- package/src/shared/filereview/capture.ts +1 -1
- package/src/shared/heartbeat.ts +13 -33
- package/src/{activities/execute-cursor → shared}/persist-decision.ts +5 -2
- package/src/{activities/execute-cursor → shared}/skill-resolver.ts +20 -6
- package/src/shared/subagent-rows.ts +39 -0
- package/src/shared/worker-shutdown.ts +55 -25
- package/src/{activities/execute-cursor/__tests__/workspace-provision.test.ts → shared/workspace/__tests__/session-provision.test.ts} +25 -28
- package/src/shared/workspace/platform-dir.ts +1 -1
- package/src/{activities/execute-cursor/workspace-provision.ts → shared/workspace/session-provision.ts} +29 -16
- package/dist/activities/execute-cursor/attachment-resolver.js.map +0 -1
- package/dist/activities/execute-cursor/blueprint-resolver.js.map +0 -1
- package/dist/activities/execute-cursor/cost-guard.js.map +0 -1
- package/dist/activities/execute-cursor/env-resolver.js.map +0 -1
- package/dist/activities/execute-cursor/exact-apply.js.map +0 -1
- package/dist/activities/execute-cursor/extract-structured-output.js.map +0 -1
- package/dist/activities/execute-cursor/index.d.ts +0 -209
- package/dist/activities/execute-cursor/index.js +0 -2345
- package/dist/activities/execute-cursor/index.js.map +0 -1
- package/dist/activities/execute-cursor/persist-decision.js.map +0 -1
- package/dist/activities/execute-cursor/skill-resolver.js.map +0 -1
- package/dist/activities/execute-cursor/usage-accumulator.d.ts +0 -89
- package/dist/activities/execute-cursor/usage-accumulator.js +0 -121
- package/dist/activities/execute-cursor/usage-accumulator.js.map +0 -1
- package/dist/activities/execute-cursor/workspace-provision.d.ts +0 -42
- package/dist/activities/execute-cursor/workspace-provision.js.map +0 -1
- package/src/activities/execute-cursor/__tests__/usage-accumulator.test.ts +0 -164
- package/src/activities/execute-cursor/index.ts +0 -2876
- package/src/activities/execute-cursor/usage-accumulator.ts +0 -169
- /package/dist/{activities/execute-cursor → shared}/env-resolver.js +0 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `@cursor/sdk` module a hermetic `ExecuteCursor` run imports — every
|
|
3
|
+
* runtime surface the activity path touches, backed by scripted agents.
|
|
4
|
+
*
|
|
5
|
+
* The activity reaches the SDK at three runtime sites and nowhere else:
|
|
6
|
+
*
|
|
7
|
+
* - `session-lifecycle.ts`: `Agent.create(options)`, `Agent.resume(id, options)`,
|
|
8
|
+
* `Agent.archive(id, ...)` — the agent handle.
|
|
9
|
+
* - `service-tier.ts`: `Cursor.models.list({ apiKey })` — the catalog the
|
|
10
|
+
* variant params (`fast`, `thinking`) are pinned from.
|
|
11
|
+
* - `index.ts` outer catch: `import("@cursor/sdk")` for `CursorSdkError`, the
|
|
12
|
+
* `instanceof` the error classifier keys on.
|
|
13
|
+
*
|
|
14
|
+
* Neither the SDK nor the client is injectable into the activity (the real
|
|
15
|
+
* seam arrives with the harness contract; parent Q1/Q2), so — exactly as the
|
|
16
|
+
* native activity tests already do for their boundary modules — the module is
|
|
17
|
+
* substituted with `vi.mock`. Three existing tests each mock ONE of these
|
|
18
|
+
* surfaces (`session-lifecycle.test.ts`, `service-tier.test.ts`,
|
|
19
|
+
* `sdk-warmup.test.ts`); a whole-activity run needs all three at once, which is
|
|
20
|
+
* what this module is.
|
|
21
|
+
*
|
|
22
|
+
* `vi.mock` is hoisted and must appear in the test file; the factory can
|
|
23
|
+
* `await import()` this module and return {@link scriptedCursorSdkModule}. The
|
|
24
|
+
* module's statics read the {@link ScriptedCursorSdk} bound for the current
|
|
25
|
+
* scenario ({@link bindScriptedSdk}), so one test file can run several
|
|
26
|
+
* scenarios with different agents against the same mocked module.
|
|
27
|
+
*
|
|
28
|
+
* Resolution rules a scenario declares, mirroring what the real SDK does:
|
|
29
|
+
* - `Agent.create` hands out the agent declared for the session it is asked
|
|
30
|
+
* for (`agentForSession`, when the scenario resolves agents per session —
|
|
31
|
+
* the harness contract kit runs several sessions concurrently on one
|
|
32
|
+
* adapter, and the order their creates arrive in is real I/O timing), else
|
|
33
|
+
* the NEXT unclaimed agent in `agents` (turn 1 of a fresh session; the fresh
|
|
34
|
+
* agent of a poisoned-handle recovery) — unless the scenario declared a
|
|
35
|
+
* `createFailure`, which the FIRST create throws instead (the SDK refusing
|
|
36
|
+
* to mint an agent: a 401 on the key, a validation error).
|
|
37
|
+
* - `Agent.resume(id)` hands back the agent with that id if the scenario
|
|
38
|
+
* declared it (in `agents` or `resumableAgents`, or handed out for a
|
|
39
|
+
* session), else throws — `resolveAgent` then falls back to `create`, which
|
|
40
|
+
* is the production shape of a lost handle.
|
|
41
|
+
* - `Cursor.models.list` answers the scenario's catalog.
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* The `platform.workspaceRef` a create names, read defensively: the platform
|
|
45
|
+
* option's type re-exports from the unshipped `@anysphere/cursor-sdk-local-runtime`
|
|
46
|
+
* and resolves to `any` under `skipLibCheck` (the same gap `scripted-agent.ts`
|
|
47
|
+
* records for the delta channel), so the shape is checked here, not assumed.
|
|
48
|
+
*/
|
|
49
|
+
function workspaceRefOf(options) {
|
|
50
|
+
const platform = options.platform;
|
|
51
|
+
if (typeof platform !== "object" || platform === null)
|
|
52
|
+
return undefined;
|
|
53
|
+
const ref = platform.workspaceRef;
|
|
54
|
+
return typeof ref === "string" ? ref : undefined;
|
|
55
|
+
}
|
|
56
|
+
export class ScriptedCursorSdk {
|
|
57
|
+
options;
|
|
58
|
+
resolutions = [];
|
|
59
|
+
archived = [];
|
|
60
|
+
nextCreate = 0;
|
|
61
|
+
createFailurePending;
|
|
62
|
+
byId = new Map();
|
|
63
|
+
constructor(options) {
|
|
64
|
+
this.options = options;
|
|
65
|
+
for (const a of [...options.agents, ...(options.resumableAgents ?? [])]) {
|
|
66
|
+
this.byId.set(a.agentId, a);
|
|
67
|
+
}
|
|
68
|
+
this.createFailurePending = options.createFailure !== undefined;
|
|
69
|
+
}
|
|
70
|
+
create(options) {
|
|
71
|
+
if (this.createFailurePending && this.options.createFailure) {
|
|
72
|
+
this.createFailurePending = false;
|
|
73
|
+
this.resolutions.push({ kind: "create", agentId: undefined, options });
|
|
74
|
+
throw this.options.createFailure;
|
|
75
|
+
}
|
|
76
|
+
const workspaceRef = workspaceRefOf(options);
|
|
77
|
+
const forSession = workspaceRef !== undefined ? this.options.agentForWorkspaceRef?.(workspaceRef) : undefined;
|
|
78
|
+
if (forSession) {
|
|
79
|
+
this.byId.set(forSession.agentId, forSession);
|
|
80
|
+
forSession.model = options.model;
|
|
81
|
+
this.resolutions.push({ kind: "create", agentId: forSession.agentId, options });
|
|
82
|
+
return forSession;
|
|
83
|
+
}
|
|
84
|
+
const agent = this.options.agents[this.nextCreate];
|
|
85
|
+
if (!agent) {
|
|
86
|
+
throw new Error(`ScriptedCursorSdk: Agent.create() #${this.nextCreate + 1} has no agent ` +
|
|
87
|
+
`(the scenario declared ${this.options.agents.length})`);
|
|
88
|
+
}
|
|
89
|
+
this.nextCreate++;
|
|
90
|
+
agent.model = options.model;
|
|
91
|
+
this.resolutions.push({ kind: "create", agentId: agent.agentId, options });
|
|
92
|
+
return agent;
|
|
93
|
+
}
|
|
94
|
+
resume(agentId, options) {
|
|
95
|
+
this.resolutions.push({ kind: "resume", agentId, options });
|
|
96
|
+
const agent = this.byId.get(agentId);
|
|
97
|
+
if (!agent) {
|
|
98
|
+
throw new ScriptedCursorSdkError(`agent ${agentId} not found`, { code: "agent_not_found" });
|
|
99
|
+
}
|
|
100
|
+
if (options?.model)
|
|
101
|
+
agent.model = options.model;
|
|
102
|
+
return agent;
|
|
103
|
+
}
|
|
104
|
+
archive(agentId) {
|
|
105
|
+
this.archived.push(agentId);
|
|
106
|
+
}
|
|
107
|
+
listModels() {
|
|
108
|
+
return this.options.catalog;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The `CursorSdkError` the mocked module exports. A real `Error` subclass with
|
|
113
|
+
* the SDK class's public surface (`@cursor/sdk` `errors.d.ts`: `isRetryable`,
|
|
114
|
+
* `code`, `status`, `endpoint`, `requestId`, `operation`, `toJSON()`), under
|
|
115
|
+
* the SDK's class name so `err.constructor.name` and `instanceof` (against
|
|
116
|
+
* THIS module's export, which is what the activity's dynamic import resolves
|
|
117
|
+
* to) both hold. The activity's outer catch reads `code`, `status` and
|
|
118
|
+
* `message` for the classifier and logs `toJSON()`; the double must carry the
|
|
119
|
+
* whole surface or the catch arm itself throws instead of mapping the error.
|
|
120
|
+
*/
|
|
121
|
+
export class ScriptedCursorSdkError extends Error {
|
|
122
|
+
isRetryable;
|
|
123
|
+
code;
|
|
124
|
+
status;
|
|
125
|
+
endpoint;
|
|
126
|
+
requestId;
|
|
127
|
+
operation;
|
|
128
|
+
constructor(message, opts = {}) {
|
|
129
|
+
super(message);
|
|
130
|
+
this.name = "CursorSdkError";
|
|
131
|
+
this.isRetryable = opts.isRetryable ?? false;
|
|
132
|
+
this.code = opts.code;
|
|
133
|
+
this.status = opts.status;
|
|
134
|
+
this.endpoint = opts.endpoint;
|
|
135
|
+
this.requestId = opts.requestId;
|
|
136
|
+
this.operation = opts.operation;
|
|
137
|
+
}
|
|
138
|
+
toJSON() {
|
|
139
|
+
return {
|
|
140
|
+
name: this.name,
|
|
141
|
+
message: this.message,
|
|
142
|
+
isRetryable: this.isRetryable,
|
|
143
|
+
code: this.code,
|
|
144
|
+
status: this.status,
|
|
145
|
+
endpoint: this.endpoint,
|
|
146
|
+
requestId: this.requestId,
|
|
147
|
+
operation: this.operation,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
let bound;
|
|
152
|
+
/** Bind the SDK the mocked module serves for the current scenario. */
|
|
153
|
+
export function bindScriptedSdk(sdk) {
|
|
154
|
+
bound = sdk;
|
|
155
|
+
}
|
|
156
|
+
function current() {
|
|
157
|
+
if (!bound) {
|
|
158
|
+
throw new Error("scripted-sdk: no ScriptedCursorSdk bound — call bindScriptedSdk(sdk) before running the activity");
|
|
159
|
+
}
|
|
160
|
+
return bound;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* The factory a test passes to `vi.mock("@cursor/sdk", ...)`:
|
|
164
|
+
*
|
|
165
|
+
* ```ts
|
|
166
|
+
* vi.mock("@cursor/sdk", async () =>
|
|
167
|
+
* (await import("../../__test-utils__/scripted-sdk.js")).scriptedCursorSdkModule(),
|
|
168
|
+
* );
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
171
|
+
* Only the runtime surface the activity path uses is provided. Any other
|
|
172
|
+
* import from the mocked module is `undefined` and fails loudly at the call
|
|
173
|
+
* site — deliberately, so a new SDK dependency in production code is noticed
|
|
174
|
+
* here rather than silently stubbed.
|
|
175
|
+
*/
|
|
176
|
+
export function scriptedCursorSdkModule() {
|
|
177
|
+
return {
|
|
178
|
+
Agent: {
|
|
179
|
+
create: async (options) => current().create(options),
|
|
180
|
+
resume: async (agentId, options) => current().resume(agentId, options),
|
|
181
|
+
archive: async (agentId) => current().archive(agentId),
|
|
182
|
+
},
|
|
183
|
+
Cursor: {
|
|
184
|
+
models: {
|
|
185
|
+
list: async () => current().listModels(),
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
CursorSdkError: ScriptedCursorSdkError,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=scripted-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripted-sdk.js","sourceRoot":"","sources":["../../../../src/activities/execute-cursor/__test-utils__/scripted-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AA0CH;;;;;GAKG;AACH,SAAS,cAAc,CAAC,OAAqB;IAC3C,MAAM,QAAQ,GAAa,OAAkC,CAAC,QAAQ,CAAC;IACvE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxE,MAAM,GAAG,GAAI,QAAuC,CAAC,YAAY,CAAC;IAClE,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,MAAM,OAAO,iBAAiB;IAOC;IANpB,WAAW,GAAyB,EAAE,CAAC;IACvC,QAAQ,GAAa,EAAE,CAAC;IACzB,UAAU,GAAG,CAAC,CAAC;IACf,oBAAoB,CAAU;IACrB,IAAI,GAAG,IAAI,GAAG,EAA+B,CAAC;IAE/D,YAA6B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;QACtD,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,OAAqB;QAC1B,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC5D,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YACvE,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACnC,CAAC;QACD,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9G,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC9C,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAChF,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,UAAU,GAAG,CAAC,gBAAgB;gBACvE,0BAA0B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAC1D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,OAA0C;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,sBAAsB,CAAC,SAAS,OAAO,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,OAAO,EAAE,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF;AAYD;;;;;;;;;GASG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,WAAW,CAAU;IACrB,IAAI,CAAqB;IACzB,MAAM,CAAqB;IAC3B,QAAQ,CAAqB;IAC7B,SAAS,CAAqB;IAC9B,SAAS,CAAqB;IACvC,YAAY,OAAe,EAAE,OAAsC,EAAE;QACnE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED,IAAI,KAAoC,CAAC;AAEzC,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,GAAsB;IACpD,KAAK,GAAG,GAAG,CAAC;AACd,CAAC;AAED,SAAS,OAAO;IACd,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,KAAK,EAAE;YACL,MAAM,EAAE,KAAK,EAAE,OAAqB,EAAqB,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;YACrF,MAAM,EAAE,KAAK,EAAE,OAAe,EAAE,OAA+B,EAAqB,EAAE,CACpF,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;YACpC,OAAO,EAAE,KAAK,EAAE,OAAe,EAAiB,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;SAC9E;QACD,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,KAAK,IAAuC,EAAE,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;aAC5E;SACF;QACD,cAAc,EAAE,sBAAsB;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Cursor harness as a `HarnessAdapter` — the worker- and session-lifetime
|
|
3
|
+
* half of its SDK slice, behind the turn runtime's contract
|
|
4
|
+
* (`harness/types.ts`). One engine turn is `turn.ts`'s `runCursorTurn`; this
|
|
5
|
+
* module boots, releases, and delegates.
|
|
6
|
+
*
|
|
7
|
+
* What this adapter owns: the proxy interceptors and the parked-agent cache
|
|
8
|
+
* (worker lifetime), the parked agent per session (session lifetime), and one
|
|
9
|
+
* engine turn (`runTurn`, through `turn.ts`). Everything else about a turn is
|
|
10
|
+
* the runtime's (`harness/run-turn.ts`).
|
|
11
|
+
*
|
|
12
|
+
* THIS MODULE'S STATIC GRAPH IS SDK-FREE, ON PURPOSE. The composition roots
|
|
13
|
+
* import it (through `src/harness-adapters.ts`) BEFORE they boot it, and
|
|
14
|
+
* `boot` is where the fetch and HTTP/2 interceptors are installed. The HTTP/2
|
|
15
|
+
* one patches `node:http2`, whose ESM facade is snapshotted the first time
|
|
16
|
+
* `@connectrpc/connect-node` is imported — and `@cursor/sdk` imports
|
|
17
|
+
* connect-node. So the SDK-touching half of this harness (`turn.ts` and,
|
|
18
|
+
* through it, `turn-setup.ts` and its siblings) is loaded with a dynamic
|
|
19
|
+
* import INSIDE `boot`, after the installs and after
|
|
20
|
+
* `assertHttp2ConnectPatched` has proven the facade sees the patch. This is
|
|
21
|
+
* the contract's own rule ("vendor SDKs are imported lazily inside" boot,
|
|
22
|
+
* `types.ts`), and the runner's dynamic-import-for-order convention
|
|
23
|
+
* (`bootstrap.ts`). `src/__tests__/harness-boot-order.test.ts` boots a fresh
|
|
24
|
+
* process through this path and fails if the graph regresses; the modules
|
|
25
|
+
* this file imports statically must each stay connect-free.
|
|
26
|
+
*
|
|
27
|
+
* The interceptors read the proxy credential from `Config.proxyTokenRef` per
|
|
28
|
+
* request; which credential that is (the static root's control-plane token,
|
|
29
|
+
* the manager's minted runner token) is the root's decision, not this
|
|
30
|
+
* module's (Q-S2-7).
|
|
31
|
+
*
|
|
32
|
+
* What this adapter never does: throw out of `runTurn` (an SDK failure is
|
|
33
|
+
* `failed` with the classifier's sentence; an unexpected exception is
|
|
34
|
+
* `failed` on the `internal` surface; a `CancelledFailure` never exists
|
|
35
|
+
* here), branch on why `stopSignal` aborted, write a phase or a terminal
|
|
36
|
+
* copy, or import `@temporalio/*` (`__tests__/adapter-is-temporal-free.test.ts`
|
|
37
|
+
* pins it, which is what lets the contract kit run this adapter outside any
|
|
38
|
+
* activity context).
|
|
39
|
+
*
|
|
40
|
+
* The file-review boundary (`turn-boundary.ts`) runs whole inside `turn.ts`
|
|
41
|
+
* for S2 (Q-S2-1): five of its six steps read the denial ledger, this
|
|
42
|
+
* harness's deny-and-retry primitive. S3 lifts the capture into the runtime
|
|
43
|
+
* with both harnesses' captures in view; `types.ts`'s "the file-review
|
|
44
|
+
* boundary is the runtime's" becomes true then.
|
|
45
|
+
*
|
|
46
|
+
* Extracted from `index.ts` `createCursorActivities` at S2 M3b; split from
|
|
47
|
+
* the turn body at S2 M5. The seventeen hermetic goldens under
|
|
48
|
+
* `__tests__/hermetic/` pin the result byte for byte.
|
|
49
|
+
*/
|
|
50
|
+
import type { Config } from "../../config.js";
|
|
51
|
+
import type { HarnessAdapter } from "../../harness/types.js";
|
|
52
|
+
import type { CursorAdapterConfig } from "./turn-setup.js";
|
|
53
|
+
/** The config slice this adapter reads per turn, taken at `boot`; a whole `Config` satisfies it. */
|
|
54
|
+
export declare function resolveCursorConfig(config: Config): CursorAdapterConfig;
|
|
55
|
+
export declare function createCursorAdapter(): HarnessAdapter;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Cursor harness as a `HarnessAdapter` — the worker- and session-lifetime
|
|
3
|
+
* half of its SDK slice, behind the turn runtime's contract
|
|
4
|
+
* (`harness/types.ts`). One engine turn is `turn.ts`'s `runCursorTurn`; this
|
|
5
|
+
* module boots, releases, and delegates.
|
|
6
|
+
*
|
|
7
|
+
* What this adapter owns: the proxy interceptors and the parked-agent cache
|
|
8
|
+
* (worker lifetime), the parked agent per session (session lifetime), and one
|
|
9
|
+
* engine turn (`runTurn`, through `turn.ts`). Everything else about a turn is
|
|
10
|
+
* the runtime's (`harness/run-turn.ts`).
|
|
11
|
+
*
|
|
12
|
+
* THIS MODULE'S STATIC GRAPH IS SDK-FREE, ON PURPOSE. The composition roots
|
|
13
|
+
* import it (through `src/harness-adapters.ts`) BEFORE they boot it, and
|
|
14
|
+
* `boot` is where the fetch and HTTP/2 interceptors are installed. The HTTP/2
|
|
15
|
+
* one patches `node:http2`, whose ESM facade is snapshotted the first time
|
|
16
|
+
* `@connectrpc/connect-node` is imported — and `@cursor/sdk` imports
|
|
17
|
+
* connect-node. So the SDK-touching half of this harness (`turn.ts` and,
|
|
18
|
+
* through it, `turn-setup.ts` and its siblings) is loaded with a dynamic
|
|
19
|
+
* import INSIDE `boot`, after the installs and after
|
|
20
|
+
* `assertHttp2ConnectPatched` has proven the facade sees the patch. This is
|
|
21
|
+
* the contract's own rule ("vendor SDKs are imported lazily inside" boot,
|
|
22
|
+
* `types.ts`), and the runner's dynamic-import-for-order convention
|
|
23
|
+
* (`bootstrap.ts`). `src/__tests__/harness-boot-order.test.ts` boots a fresh
|
|
24
|
+
* process through this path and fails if the graph regresses; the modules
|
|
25
|
+
* this file imports statically must each stay connect-free.
|
|
26
|
+
*
|
|
27
|
+
* The interceptors read the proxy credential from `Config.proxyTokenRef` per
|
|
28
|
+
* request; which credential that is (the static root's control-plane token,
|
|
29
|
+
* the manager's minted runner token) is the root's decision, not this
|
|
30
|
+
* module's (Q-S2-7).
|
|
31
|
+
*
|
|
32
|
+
* What this adapter never does: throw out of `runTurn` (an SDK failure is
|
|
33
|
+
* `failed` with the classifier's sentence; an unexpected exception is
|
|
34
|
+
* `failed` on the `internal` surface; a `CancelledFailure` never exists
|
|
35
|
+
* here), branch on why `stopSignal` aborted, write a phase or a terminal
|
|
36
|
+
* copy, or import `@temporalio/*` (`__tests__/adapter-is-temporal-free.test.ts`
|
|
37
|
+
* pins it, which is what lets the contract kit run this adapter outside any
|
|
38
|
+
* activity context).
|
|
39
|
+
*
|
|
40
|
+
* The file-review boundary (`turn-boundary.ts`) runs whole inside `turn.ts`
|
|
41
|
+
* for S2 (Q-S2-1): five of its six steps read the denial ledger, this
|
|
42
|
+
* harness's deny-and-retry primitive. S3 lifts the capture into the runtime
|
|
43
|
+
* with both harnesses' captures in view; `types.ts`'s "the file-review
|
|
44
|
+
* boundary is the runtime's" becomes true then.
|
|
45
|
+
*
|
|
46
|
+
* Extracted from `index.ts` `createCursorActivities` at S2 M3b; split from
|
|
47
|
+
* the turn body at S2 M5. The seventeen hermetic goldens under
|
|
48
|
+
* `__tests__/hermetic/` pin the result byte for byte.
|
|
49
|
+
*/
|
|
50
|
+
import { markBoot } from "../../shared/cold-start-timing.js";
|
|
51
|
+
import { closeAllCachedAgents, evictSessionAgent } from "./agent-session-cache.js";
|
|
52
|
+
import { CURSOR_CAPABILITIES } from "./cursor-capabilities.js";
|
|
53
|
+
import { installFetchInterceptor } from "./fetch-interceptor.js";
|
|
54
|
+
import { assertHttp2ConnectPatched, installHttp2Interceptor } from "./http2-interceptor.js";
|
|
55
|
+
/** The config slice this adapter reads per turn, taken at `boot`; a whole `Config` satisfies it. */
|
|
56
|
+
export function resolveCursorConfig(config) {
|
|
57
|
+
return {
|
|
58
|
+
proxyEndpoint: config.proxyEndpoint,
|
|
59
|
+
cursorApiKey: config.cursorApiKey,
|
|
60
|
+
stigmerToken: config.stigmerToken,
|
|
61
|
+
stigmerTokenRef: config.stigmerTokenRef,
|
|
62
|
+
workspaceRootDir: config.workspaceRootDir,
|
|
63
|
+
cloudModeEnabled: config.cloudModeEnabled,
|
|
64
|
+
agentResolveTimeoutMs: config.agentResolveTimeoutMs,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function createCursorAdapter() {
|
|
68
|
+
let booted;
|
|
69
|
+
return {
|
|
70
|
+
name: "cursor",
|
|
71
|
+
capabilities: CURSOR_CAPABILITIES,
|
|
72
|
+
/**
|
|
73
|
+
* Install the proxy transport, prove the HTTP/2 patch reached the facade,
|
|
74
|
+
* then load the SDK slice — in that order, for the reason in the header.
|
|
75
|
+
* Runs before bootstrap resolution, so `bootConfig` carries no Temporal
|
|
76
|
+
* coordinates yet; every field the slice reads is known at that point.
|
|
77
|
+
* Idempotent: a re-boot rebinds the interceptors and re-reads the slice.
|
|
78
|
+
*/
|
|
79
|
+
async boot(bootConfig) {
|
|
80
|
+
if (bootConfig.proxyEndpoint && !bootConfig.proxyTokenRef) {
|
|
81
|
+
throw new Error("cursor adapter: a proxy endpoint needs Config.proxyTokenRef (the composition root binds its proxy credential there; see config.ts)");
|
|
82
|
+
}
|
|
83
|
+
// The Cursor SDK's REST client resolves `fetch` at call time and its
|
|
84
|
+
// Connect transport opens native HTTP/2 sessions; the two interceptors
|
|
85
|
+
// route the first through the proxy and stamp the second with the proxy
|
|
86
|
+
// credential and the execution id. Both are no-ops without a proxy.
|
|
87
|
+
installFetchInterceptor({
|
|
88
|
+
proxyEndpoint: bootConfig.proxyEndpoint ?? undefined,
|
|
89
|
+
proxyTokenRef: bootConfig.proxyTokenRef,
|
|
90
|
+
});
|
|
91
|
+
installHttp2Interceptor({
|
|
92
|
+
proxyEndpoint: bootConfig.proxyEndpoint ?? undefined,
|
|
93
|
+
proxyTokenRef: bootConfig.proxyTokenRef,
|
|
94
|
+
});
|
|
95
|
+
markBoot("interceptors_installed");
|
|
96
|
+
// Fail loudly at boot if a load-order regression left the node:http2 ESM
|
|
97
|
+
// facade unpatched (otherwise BiDi streams would silently 401). No-op
|
|
98
|
+
// when the interceptor is unconfigured (no proxy).
|
|
99
|
+
await assertHttp2ConnectPatched();
|
|
100
|
+
const { runCursorTurn } = await import("./turn.js");
|
|
101
|
+
booted = { config: resolveCursorConfig(bootConfig), runCursorTurn };
|
|
102
|
+
},
|
|
103
|
+
/** Close every parked agent (their executor leases and MCP subprocesses). */
|
|
104
|
+
async shutdown() {
|
|
105
|
+
closeAllCachedAgents();
|
|
106
|
+
},
|
|
107
|
+
/** The session is done on this host: close the agent parked for it, if any (#215). */
|
|
108
|
+
async releaseSession(sessionId) {
|
|
109
|
+
evictSessionAgent(sessionId);
|
|
110
|
+
},
|
|
111
|
+
async runTurn(input, sink) {
|
|
112
|
+
if (booted === undefined) {
|
|
113
|
+
throw new Error("cursor adapter: runTurn before boot (the registry boots every adapter before the worker polls)");
|
|
114
|
+
}
|
|
115
|
+
return booted.runCursorTurn(input, sink, booted.config);
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAG5F,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;KACpD,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,mBAAmB;IACjC,IAAI,MAAuC,CAAC;IAE5C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,mBAAmB;QAEjC;;;;;;WAMG;QACH,KAAK,CAAC,IAAI,CAAC,UAAkB;YAC3B,IAAI,UAAU,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CACb,oIAAoI,CACrI,CAAC;YACJ,CAAC;YACD,qEAAqE;YACrE,uEAAuE;YACvE,wEAAwE;YACxE,oEAAoE;YACpE,uBAAuB,CAAC;gBACtB,aAAa,EAAE,UAAU,CAAC,aAAa,IAAI,SAAS;gBACpD,aAAa,EAAE,UAAU,CAAC,aAAa;aACxC,CAAC,CAAC;YACH,uBAAuB,CAAC;gBACtB,aAAa,EAAE,UAAU,CAAC,aAAa,IAAI,SAAS;gBACpD,aAAa,EAAE,UAAU,CAAC,aAAa;aACxC,CAAC,CAAC;YACH,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YACnC,yEAAyE;YACzE,sEAAsE;YACtE,mDAAmD;YACnD,MAAM,yBAAyB,EAAE,CAAC;YAElC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,GAAG,EAAE,MAAM,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;QACtE,CAAC;QAED,6EAA6E;QAC7E,KAAK,CAAC,QAAQ;YACZ,oBAAoB,EAAE,CAAC;QACzB,CAAC;QAED,sFAAsF;QACtF,KAAK,CAAC,cAAc,CAAC,SAAiB;YACpC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAgB,EAAE,IAAc;YAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;YACpH,CAAC;YACD,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -277,7 +277,7 @@ export declare function emitCursorGrantReceipts(grants: readonly ApprovalGrant[]
|
|
|
277
277
|
* grant carries the canonical {@link ToolIdentity} (category + salient resource)
|
|
278
278
|
* so the hook allows the exact approved resource on the resumed turn.
|
|
279
279
|
*/
|
|
280
|
-
export declare function buildApprovalGrants(pendingApprovals: PendingApproval[], decisions:
|
|
280
|
+
export declare function buildApprovalGrants(pendingApprovals: PendingApproval[], decisions: ReadonlyMap<string, ApprovalAction>, contentDigests?: Map<string, string>): ApprovalGrant[];
|
|
281
281
|
/**
|
|
282
282
|
* Build the approval state file content from merged policies and any approval
|
|
283
283
|
* grants from a previous HITL cycle.
|
|
@@ -295,7 +295,7 @@ export declare function buildApprovalGrants(pendingApprovals: PendingApproval[],
|
|
|
295
295
|
* The static gated built-in set and its category mapping are baked into the
|
|
296
296
|
* generated hook script (from approval-policy.ts), not carried here.
|
|
297
297
|
*/
|
|
298
|
-
export declare function buildApprovalState(mergedPolicies:
|
|
298
|
+
export declare function buildApprovalState(mergedPolicies: ReadonlyMap<string, MergedToolPolicy>, globalBypass: boolean, leasedCategories: ReadonlySet<ApprovalCategory>, grants?: ApprovalGrant[], captureMode?: boolean, captureIgnored?: boolean, gitWorkspace?: boolean, unattendedSkip?: boolean, mcpServerEnabledTools?: Record<string, string[]>): ApprovalStateFile;
|
|
299
299
|
/**
|
|
300
300
|
* Write the approval state file into the session's HITL directory for the hook
|
|
301
301
|
* script to read.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-state.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/approval-state.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"approval-state.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/approval-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,17 +14,27 @@
|
|
|
14
14
|
* observational/audit records at their transcript positions, while
|
|
15
15
|
* `file_change_sets` remains the single DECISION surface.
|
|
16
16
|
*
|
|
17
|
-
* The
|
|
18
|
-
*
|
|
17
|
+
* The resume-time reconcile is NOT here since S2 M2: the turn runtime's
|
|
18
|
+
* `reconcileReinvocation` (`harness/turn-context.ts`) calls the shared
|
|
19
|
+
* reconcile directly under {@link CURSOR_FILE_REVIEW_IDENTITY}, the one
|
|
20
|
+
* export that carries the two Cursor facts it needs. The two capture
|
|
21
|
+
* functions keep their original signatures so the activity wiring (index.ts)
|
|
22
|
+
* and the cutover tests are unchanged.
|
|
19
23
|
*/
|
|
20
24
|
import type { AgentMessage } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
21
25
|
import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
22
|
-
import type {
|
|
23
|
-
import { type CaptureResumeResult } from "../../shared/filereview/capture.js";
|
|
26
|
+
import type { TurnCommandProvenance } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/filereview_pb";
|
|
24
27
|
import { type ProgressSubstrate } from "../../shared/filereview/progress.js";
|
|
25
28
|
import type { GitSubstrateChange as GitCapturedChange } from "../../shared/filereview/git-substrate.js";
|
|
26
29
|
import type { ArtifactStorage } from "../../shared/artifact-storage.js";
|
|
27
|
-
|
|
30
|
+
import type { FileReviewIdentity } from "../../harness/capabilities.js";
|
|
31
|
+
/**
|
|
32
|
+
* The two facts the runtime's resume-time reconcile needs from this harness
|
|
33
|
+
* (`harness/turn-context.ts` `reconcileReinvocation`): the same id and
|
|
34
|
+
* exclude list the capture functions below stamp and apply, so the baseline a
|
|
35
|
+
* turn authors and the reconcile a resume runs agree by construction.
|
|
36
|
+
*/
|
|
37
|
+
export declare const CURSOR_FILE_REVIEW_IDENTITY: FileReviewIdentity;
|
|
28
38
|
export { deriveCaptureMode } from "../../shared/filereview/capture.js";
|
|
29
39
|
/**
|
|
30
40
|
* Turn start: pin the pre-turn working tree behind the baseline ref and author
|
|
@@ -130,28 +140,3 @@ export declare function buildCursorProgressSubstrate(opts: {
|
|
|
130
140
|
readonly hitlDir: string | undefined;
|
|
131
141
|
readonly storage: ArtifactStorage | undefined;
|
|
132
142
|
}): ProgressSubstrate | undefined;
|
|
133
|
-
/**
|
|
134
|
-
* Resume: reconcile the working tree to the change set's DECIDED decisions
|
|
135
|
-
* (keep approved "after" bytes, snap rejected/undecided back to baseline,
|
|
136
|
-
* hash-verified), author RECONCILED / FAILED, and release the refs. Delegates to
|
|
137
|
-
* the shared orchestration with the Cursor harness id + exclude paths.
|
|
138
|
-
*
|
|
139
|
-
* `storage` threads the CAS blob store + reader so gitignored (CAS) files in the
|
|
140
|
-
* change set reconcile from the durable manifest — approved after-blobs written
|
|
141
|
-
* (hash-verified), rejected files snapped back to their before-blobs. Omit for a
|
|
142
|
-
* git-only harness/turn; the shared CAS branch is then skipped. The read path is
|
|
143
|
-
* the same one `exact-apply` already uses (`ArtifactStorage.download`).
|
|
144
|
-
*/
|
|
145
|
-
export declare function applyCaptureDecisions(opts: {
|
|
146
|
-
readonly status: AgentExecutionStatus;
|
|
147
|
-
readonly gitRoot: string;
|
|
148
|
-
readonly executionId: string;
|
|
149
|
-
readonly changeSet: FileChangeSet;
|
|
150
|
-
readonly storage?: ArtifactStorage;
|
|
151
|
-
/**
|
|
152
|
-
* True (default) for a git work tree; false for a CAS-only non-git workspace
|
|
153
|
-
* (Slice 2c). When false the reconcile never consults git refs — it is driven
|
|
154
|
-
* entirely by the durable CAS manifest.
|
|
155
|
-
*/
|
|
156
|
-
readonly gitWorkspace?: boolean;
|
|
157
|
-
}): Promise<CaptureResumeResult>;
|
|
@@ -14,8 +14,12 @@
|
|
|
14
14
|
* observational/audit records at their transcript positions, while
|
|
15
15
|
* `file_change_sets` remains the single DECISION surface.
|
|
16
16
|
*
|
|
17
|
-
* The
|
|
18
|
-
*
|
|
17
|
+
* The resume-time reconcile is NOT here since S2 M2: the turn runtime's
|
|
18
|
+
* `reconcileReinvocation` (`harness/turn-context.ts`) calls the shared
|
|
19
|
+
* reconcile directly under {@link CURSOR_FILE_REVIEW_IDENTITY}, the one
|
|
20
|
+
* export that carries the two Cursor facts it needs. The two capture
|
|
21
|
+
* functions keep their original signatures so the activity wiring (index.ts)
|
|
22
|
+
* and the cutover tests are unchanged.
|
|
19
23
|
*/
|
|
20
24
|
import { readFile } from "node:fs/promises";
|
|
21
25
|
import { join } from "node:path";
|
|
@@ -25,12 +29,11 @@ import { toolIdentity, primaryToken } from "./approval-state.js";
|
|
|
25
29
|
import { readCasObservations } from "./cas-observations.js";
|
|
26
30
|
import { contentDigest } from "../../shared/file-tools.js";
|
|
27
31
|
import { isToolCallRowHidden, stampFileEditRow } from "../../shared/tool-row.js";
|
|
28
|
-
import {
|
|
32
|
+
import { captureBaselineToLedger as sharedCaptureBaselineToLedger, captureCandidateToLedger as sharedCaptureCandidateToLedger, } from "../../shared/filereview/capture.js";
|
|
29
33
|
import { createGitProgressSubstrate, createHybridProgressSubstrate, } from "../../shared/filereview/progress.js";
|
|
30
34
|
import { createCasProgressSubstrate, } from "../../shared/filereview/cas-progress.js";
|
|
31
35
|
import { hasCandidateCaptured } from "../../shared/filereview/events.js";
|
|
32
36
|
import { partitionIgnoredPathsBySecret } from "../../shared/filereview/secret-paths.js";
|
|
33
|
-
import { casBlobReader } from "../../shared/filereview/cas-substrate.js";
|
|
34
37
|
/** The harness id the projection reads from the BASELINE payload (load-bearing). */
|
|
35
38
|
const HARNESS_ID = "cursor";
|
|
36
39
|
/**
|
|
@@ -43,6 +46,16 @@ const CURSOR_RUNNER_OWNED_PATHS = [
|
|
|
43
46
|
".cursor/hooks.json",
|
|
44
47
|
".cursor/rules/stigmer-tool-approval.mdc",
|
|
45
48
|
];
|
|
49
|
+
/**
|
|
50
|
+
* The two facts the runtime's resume-time reconcile needs from this harness
|
|
51
|
+
* (`harness/turn-context.ts` `reconcileReinvocation`): the same id and
|
|
52
|
+
* exclude list the capture functions below stamp and apply, so the baseline a
|
|
53
|
+
* turn authors and the reconcile a resume runs agree by construction.
|
|
54
|
+
*/
|
|
55
|
+
export const CURSOR_FILE_REVIEW_IDENTITY = {
|
|
56
|
+
harnessId: HARNESS_ID,
|
|
57
|
+
excludePaths: CURSOR_RUNNER_OWNED_PATHS,
|
|
58
|
+
};
|
|
46
59
|
// `deriveCaptureMode` is the single capture-vs-deny-gate decision, now shared by
|
|
47
60
|
// BOTH harnesses from `shared/filereview/capture.ts`. Re-exported here so existing
|
|
48
61
|
// Cursor imports (index.ts, the deny-gate-exact-apply seam test) keep resolving
|
|
@@ -231,28 +244,6 @@ async function readFileOrNull(absolutePath) {
|
|
|
231
244
|
return null;
|
|
232
245
|
}
|
|
233
246
|
}
|
|
234
|
-
/**
|
|
235
|
-
* Resume: reconcile the working tree to the change set's DECIDED decisions
|
|
236
|
-
* (keep approved "after" bytes, snap rejected/undecided back to baseline,
|
|
237
|
-
* hash-verified), author RECONCILED / FAILED, and release the refs. Delegates to
|
|
238
|
-
* the shared orchestration with the Cursor harness id + exclude paths.
|
|
239
|
-
*
|
|
240
|
-
* `storage` threads the CAS blob store + reader so gitignored (CAS) files in the
|
|
241
|
-
* change set reconcile from the durable manifest — approved after-blobs written
|
|
242
|
-
* (hash-verified), rejected files snapped back to their before-blobs. Omit for a
|
|
243
|
-
* git-only harness/turn; the shared CAS branch is then skipped. The read path is
|
|
244
|
-
* the same one `exact-apply` already uses (`ArtifactStorage.download`).
|
|
245
|
-
*/
|
|
246
|
-
export function applyCaptureDecisions(opts) {
|
|
247
|
-
const { storage, ...rest } = opts;
|
|
248
|
-
return sharedApplyCaptureDecisions({
|
|
249
|
-
...rest,
|
|
250
|
-
harnessId: HARNESS_ID,
|
|
251
|
-
excludePaths: CURSOR_RUNNER_OWNED_PATHS,
|
|
252
|
-
storage,
|
|
253
|
-
readBlob: storage ? casBlobReader(storage) : undefined,
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
247
|
// ---------------------------------------------------------------------------
|
|
257
248
|
// Cursor-specific presentation
|
|
258
249
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-flow.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/capture-flow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"capture-flow.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/capture-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EACL,uBAAuB,IAAI,6BAA6B,EACxD,wBAAwB,IAAI,8BAA8B,GAC3D,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAE9B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,0BAA0B,GAG3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AAMxF,oFAAoF;AACpF,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,yBAAyB,GAAsB;IACnD,oBAAoB;IACpB,yCAAyC;CAC1C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAuB;IAC7D,SAAS,EAAE,UAAU;IACrB,YAAY,EAAE,yBAAyB;CACxC,CAAC;AAEF,iFAAiF;AACjF,mFAAmF;AACnF,gFAAgF;AAChF,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAOvC;IACC,OAAO,6BAA6B,CAAC;QACnC,GAAG,IAAI;QACP,SAAS,EAAE,UAAU;QACrB,YAAY,EAAE,yBAAyB;KACxC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IA+BzC;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAChK,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IAE/C,+EAA+E;IAC/E,sDAAsD;IACtD,MAAM,eAAe,GAAG,YAAY;QAClC,CAAC,CAAC,gBAAgB,CAAC,oBAAoB;QACvC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC;IACjC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,MAAM,oBAAoB,CACnE,OAAO,EACP,OAAO,EACP,OAAO,EACP,eAAe,CAChB,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC;QACnD,MAAM;QACN,OAAO;QACP,WAAW;QACX,WAAW;QACX,YAAY;QACZ,SAAS,EAAE,UAAU;QACrB,YAAY,EAAE,yBAAyB;QACvC,WAAW;QACX,OAAO;QACP,iBAAiB;QACjB,wBAAwB,EAAE,eAAe;QACzC,YAAY;QACZ,iBAAiB;KAClB,CAAC,CAAC;IAEH,0EAA0E;IAC1E,2EAA2E;IAC3E,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,mEAAmE;IACnE,IAAI,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9C,uBAAuB,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC7D,8EAA8E;QAC9E,mEAAmE;QACnE,4EAA4E;QAC5E,+DAA+D;QAC/D,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC3C,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAQ5C;IACC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvG,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IAErD,MAAM,SAAS,GACb,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvE,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QACpC,MAAM,GAAG,GAAG,0BAA0B,CAAC;YACrC,aAAa;YACb,WAAW;YACX,YAAY;YACZ,YAAY,EAAE,yBAAyB;SACxC,CAAC,CAAC;QACH,OAAO,SAAS;YACd,CAAC,CAAC,6BAA6B,CAAC,GAAG,EAAE,0BAA0B,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACpG,CAAC,CAAC,GAAG,CAAC;IACV,CAAC;IAED,2EAA2E;IAC3E,OAAO,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChG,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,0BAA0B,CAAC,OAAe;IACjD,OAAO,KAAK,IAAiC,EAAE;QAC7C,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,oBAAoB,CACjC,OAAe,EACf,OAA2B,EAC3B,OAAoC,EACpC,YAA8B;IAE9B,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;IAE5E,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAU,CAAC,CAAC,CAAC;IAC/E,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,6BAA6B,CAC1E,YAAY,CAAC,IAAI,EAAE,EACnB,IAAI,GAAG,CAAC,WAAW,CAAC,CACrB,CAAC;IAEF,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI;YACzC,KAAK;YACL,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,cAAc,CAAC,YAAoB;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,SAAS,uBAAuB,CAC9B,QAAiC,EACjC,YAAiC,EACjC,WAAmB,EACnB,eAAqC;IAErC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,eAAe;gBAAE,SAAS;YACjC,IAAI,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC1C,IAAI,mBAAmB,CAAC,EAAE,CAAC;gBAAE,SAAS;YACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YAC5D,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;YACxD,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACpE,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,mCAAmC;YAC1E,gBAAgB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Cursor harness's capability flags — the facts about `@cursor/sdk` the
|
|
3
|
+
* turn runtime branches on, declared once (`harness/capabilities.ts` has the
|
|
4
|
+
* matrix and the meaning of each flag).
|
|
5
|
+
*
|
|
6
|
+
* - `deny-and-retry`: an out-of-process hook denies a gated tool, the
|
|
7
|
+
* denial lands in the session ledger, the run is cancelled, and the next
|
|
8
|
+
* invocation re-runs with grants (`hook-script.ts`, `approval-state.ts`).
|
|
9
|
+
* - `engine-minted`: the agent id exists only once `Agent.create` returns;
|
|
10
|
+
* the adapter binds it through `TurnSink.bindHarnessState` before its
|
|
11
|
+
* first persist.
|
|
12
|
+
* - No system prompt: instructions ride the first user message
|
|
13
|
+
* (`prompt-builder.ts`).
|
|
14
|
+
* - Sub-agents through the SDK's `agents` option (`subagent-config.ts`).
|
|
15
|
+
* - No tool restriction in the SDK config: the hook's "disabled" arm
|
|
16
|
+
* enforces `enabledTools` at call time (issue #350).
|
|
17
|
+
* - PNG and JPEG inline; the transport re-sniffs (`shared/attachment-vision.ts`).
|
|
18
|
+
* - File review under the `cursor` harness id, with the transient
|
|
19
|
+
* `.cursor/hooks.json` the gate writes excluded from every diff
|
|
20
|
+
* (`capture-flow.ts`).
|
|
21
|
+
*/
|
|
22
|
+
import type { HarnessCapabilities } from "../../harness/capabilities.js";
|
|
23
|
+
export declare const CURSOR_CAPABILITIES: HarnessCapabilities;
|