@stigmer/runner 3.14.1 → 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 +28 -5
- package/dist/__test-utils__/hermetic-activity.js +23 -7
- package/dist/__test-utils__/hermetic-activity.js.map +1 -1
- 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 +38 -62
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js +47 -121
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.d.ts +17 -1
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js +27 -4
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/scripted-sdk.d.ts +52 -11
- package/dist/activities/execute-cursor/__test-utils__/scripted-sdk.js +66 -7
- package/dist/activities/execute-cursor/__test-utils__/scripted-sdk.js.map +1 -1
- 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 +16 -0
- package/dist/harness/capabilities.js +1 -0
- package/dist/harness/capabilities.js.map +1 -1
- 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 +44 -5
- package/dist/harness/registry.js +61 -5
- package/dist/harness/registry.js.map +1 -1
- 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 +232 -52
- package/dist/harness/types.js +17 -8
- package/dist/harness/types.js.map +1 -1
- 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 +110 -14
- 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 +128 -83
- package/src/__test-utils__/harness-contract/recording-sink.ts +15 -4
- package/src/__test-utils__/harness-contract/runtime-contract.ts +666 -0
- package/src/__test-utils__/harness-contract/scripted-adapter.ts +92 -32
- package/src/__test-utils__/harness-contract/types.ts +85 -9
- package/src/__test-utils__/hermetic-activity.ts +33 -8
- package/src/__test-utils__/model-registry-fixture.ts +72 -0
- package/src/__test-utils__/module-specifiers.ts +82 -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 +7 -5
- 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 +65 -145
- package/src/activities/execute-cursor/__test-utils__/scripted-agent.ts +30 -4
- package/src/activities/execute-cursor/__test-utils__/scripted-sdk.ts +96 -8
- 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 +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/file-review-capture.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/cost-cap.status.json +53 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/pause.status.json +1 -6
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/platform-stop.status.json +56 -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/unattributed-hook-block.status.json +79 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/worker-shutdown.status.json +2 -7
- 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 +22 -18
- package/src/activities/execute-cursor/__tests__/hermetic/plain-turn.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/recovery-fresh-agent.test.ts +1 -1
- 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 +1 -1
- 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 +1 -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 +17 -0
- package/src/harness/persist-chokepoint.ts +112 -0
- package/src/harness/registry.ts +79 -5
- 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 +248 -53
- 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,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Cursor harness's setup — what this engine needs before it can be sent
|
|
3
|
+
* a turn, as small named steps over the runtime's resolved `TurnInput`, each
|
|
4
|
+
* returning a typed slice (the `SetupResult` mold, never one long function).
|
|
5
|
+
*
|
|
6
|
+
* Everything harness-agnostic has already happened when these run: the
|
|
7
|
+
* execution, session and blueprint are fetched, the workspace is provisioned
|
|
8
|
+
* and locked, the MCP servers and policies are merged, the skills are mounted,
|
|
9
|
+
* the attachments are resolved. What remains is Cursor's own reading of that
|
|
10
|
+
* record: the cursor mode; the row facts beside the runtime's approval
|
|
11
|
+
* verdicts; the SDK's MCP config; the prompt-shaped view of the attachments;
|
|
12
|
+
* the HITL gate (hook script, approval state, grants, denial watcher,
|
|
13
|
+
* capture baseline, progress substrate); the catalog validation of the
|
|
14
|
+
* requested model; the credential, the sub-agents, the variant params and
|
|
15
|
+
* the agent itself (parked or resolved); the bind of a new agent's id through
|
|
16
|
+
* the sink; the prompt in one of its four shapes; the vision payload; the
|
|
17
|
+
* pricer; the OTel span.
|
|
18
|
+
*
|
|
19
|
+
* Every step reads `TurnInput` and the sink and nothing else of the runtime's.
|
|
20
|
+
* The `execution_setup` cold-start line is emitted here, once the agent is
|
|
21
|
+
* resolved, over the runtime's timeline (`sink.setupTiming`), so the one
|
|
22
|
+
* timeline reads end to end.
|
|
23
|
+
*
|
|
24
|
+
* Moved from `index.ts` `executeCursorInner` phases 4c to 10c at S2 M3b; the
|
|
25
|
+
* step bodies are the orchestrator's, verbatim where nothing changed.
|
|
26
|
+
*/
|
|
27
|
+
import type { SDKUserMessage } from "@cursor/sdk";
|
|
28
|
+
import type { PendingApproval } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/approval_pb";
|
|
29
|
+
import type { SubAgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/subagent_pb";
|
|
30
|
+
import { CursorMode } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
|
|
31
|
+
import type { Config } from "../../config.js";
|
|
32
|
+
import type { TurnInput, TurnSink } from "../../harness/types.js";
|
|
33
|
+
import { toCursorImages } from "../../shared/attachment-vision.js";
|
|
34
|
+
import { type ProgressCaptureState, type ProgressSubstrate } from "../../shared/filereview/progress.js";
|
|
35
|
+
import { type ApprovalGrant } from "./approval-state.js";
|
|
36
|
+
import { toCursorMcpConfig } from "./cursor-mcp-config.js";
|
|
37
|
+
import { type AttachmentPromptEntry, type VisionPromptInfo } from "./prompt-builder.js";
|
|
38
|
+
import { resolveServiceTierParams } from "./service-tier.js";
|
|
39
|
+
import { type AgentResolution, type CreateAgentOptions, type CreateCloudAgentOptions } from "./session-lifecycle.js";
|
|
40
|
+
import type { TurnStreamState } from "./turn-stream.js";
|
|
41
|
+
import { CursorUsagePricer } from "./usage-pricing.js";
|
|
42
|
+
import { type HitlGateHandle } from "./workspace-setup.js";
|
|
43
|
+
/**
|
|
44
|
+
* The runner config this harness reads per turn, as a named slice
|
|
45
|
+
* (`shared/workspace/session-provision.ts` `SessionProvisionConfig` is the
|
|
46
|
+
* idiom): a whole `Config` satisfies it, a test constructs these fields and
|
|
47
|
+
* nothing else.
|
|
48
|
+
*/
|
|
49
|
+
export type CursorAdapterConfig = Pick<Config, "proxyEndpoint" | "cursorApiKey" | "stigmerToken" | "stigmerTokenRef" | "workspaceRootDir" | "cloudModeEnabled" | "agentResolveTimeoutMs">;
|
|
50
|
+
export type CursorAgentMode = "cloud" | "local";
|
|
51
|
+
/** The row facts the runtime's approval verdicts sit beside (the contract's rule: the adapter reads the ROW for anything else it needs). */
|
|
52
|
+
export interface AdjudicatedRows {
|
|
53
|
+
/** Create-vs-resume, derived from the state id exactly as the runtime derives it. */
|
|
54
|
+
readonly isReinvocation: boolean;
|
|
55
|
+
/** The sub-agent rows the accumulator re-registers on a resume. */
|
|
56
|
+
readonly seededSubAgents: readonly SubAgentExecution[];
|
|
57
|
+
/** The pending-approval protos the grant builder and the reinvocation prompt render. */
|
|
58
|
+
readonly adjudicatedApprovals: PendingApproval[];
|
|
59
|
+
/** The content digest that authorizes an approved edit by its exact bytes (a sibling edit to the same file re-gates). */
|
|
60
|
+
readonly adjudicatedContentDigests: Map<string, string>;
|
|
61
|
+
}
|
|
62
|
+
/** The HITL gate as installed for this turn, and what the stream and the boundary read from it. */
|
|
63
|
+
export interface CursorGate {
|
|
64
|
+
/** Session HITL directory (runner-owned, outside the workspace): hook script, approval-state file, denial ledger. */
|
|
65
|
+
readonly hitlDir: string;
|
|
66
|
+
readonly hitlGate: HitlGateHandle;
|
|
67
|
+
readonly approvalGrants: ApprovalGrant[] | undefined;
|
|
68
|
+
/** The pre-turn tree in capture mode, pinned before the agent runs; the boundary diffs against it. */
|
|
69
|
+
readonly baselineTree: string | undefined;
|
|
70
|
+
readonly progressSubstrate: ProgressSubstrate | undefined;
|
|
71
|
+
readonly progressState: ProgressCaptureState;
|
|
72
|
+
/** Closes the denial-ledger watcher; idempotent. */
|
|
73
|
+
readonly stopDenialWatcher: () => void;
|
|
74
|
+
/** Restores the workspace's `.cursor/hooks.json` (issue #173); the runtime removes the `.stigmer` link after it. */
|
|
75
|
+
readonly removeGate: () => Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
/** The engine this turn runs on: how it was resolved and everything a recovery needs to resolve it again. */
|
|
78
|
+
export interface CursorEngine {
|
|
79
|
+
readonly agentMode: CursorAgentMode;
|
|
80
|
+
readonly cursorMode: CursorMode;
|
|
81
|
+
readonly requestedModel: string;
|
|
82
|
+
readonly validatedModel: string;
|
|
83
|
+
readonly effectiveApiKey: string;
|
|
84
|
+
readonly createOptions: CreateAgentOptions | CreateCloudAgentOptions;
|
|
85
|
+
readonly agentFingerprint: string;
|
|
86
|
+
/** Replaced by a recovery spine when a fresh agent takes over the turn. */
|
|
87
|
+
resolution: AgentResolution;
|
|
88
|
+
readonly modelParams: Awaited<ReturnType<typeof resolveServiceTierParams>>;
|
|
89
|
+
readonly usagePricer: CursorUsagePricer;
|
|
90
|
+
}
|
|
91
|
+
/** The prompt this turn sends, and the facts every send site (primary and both recoveries) needs. */
|
|
92
|
+
export interface CursorPrompt {
|
|
93
|
+
readonly effectivePrompt: string;
|
|
94
|
+
/** The turn's full vision payload; a recovery send always carries it (issue #366's vision corollary). */
|
|
95
|
+
readonly turnImages: ReturnType<typeof toCursorImages>;
|
|
96
|
+
/** What the PRIMARY send carries: nothing on a HITL re-invocation of a resumed agent, whose conversation holds the images already. */
|
|
97
|
+
readonly primarySendImages: ReturnType<typeof toCursorImages>;
|
|
98
|
+
readonly toSendMessage: (prompt: string, images: {
|
|
99
|
+
data: string;
|
|
100
|
+
mimeType: string;
|
|
101
|
+
}[]) => string | SDKUserMessage;
|
|
102
|
+
readonly promptEstimatedTokens: number;
|
|
103
|
+
/** The fresh-agent recovery prompt, composed at recovery time from the transcript as it then stands. */
|
|
104
|
+
readonly buildRecoveryPrompt: (fresh: AgentResolution) => Promise<string>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Cloud Cursor agents are disabled platform-wide (see determineCursorMode),
|
|
108
|
+
* so every session runs LOCAL. Any persisted cursor_mode is deliberately
|
|
109
|
+
* ignored so a session can never route to the cloud path while it is
|
|
110
|
+
* disabled — even one that was created when cloud was enabled.
|
|
111
|
+
*/
|
|
112
|
+
export declare function resolveCursorMode(input: TurnInput, config: CursorAdapterConfig): {
|
|
113
|
+
cursorMode: CursorMode;
|
|
114
|
+
agentMode: CursorAgentMode;
|
|
115
|
+
};
|
|
116
|
+
/** The adapter's own read of the adjudicated rows the runtime already turned into verdicts. */
|
|
117
|
+
export declare function readAdjudicatedRows(input: TurnInput): AdjudicatedRows;
|
|
118
|
+
/**
|
|
119
|
+
* The Cursor SDK config, projected from the runtime's final server list
|
|
120
|
+
* exactly once, plus the MCP env pre-flight (diagnostic, non-blocking).
|
|
121
|
+
*/
|
|
122
|
+
export declare function projectMcpConfig(input: TurnInput): ReturnType<typeof toCursorMcpConfig>;
|
|
123
|
+
/** The prompt-shaped projections of the runtime's attachments: the `<input_files>` entries and the vision disclosure. */
|
|
124
|
+
export declare function prepareAttachmentPrompt(input: TurnInput): {
|
|
125
|
+
attachmentEntries: AttachmentPromptEntry[];
|
|
126
|
+
visionPromptInfo: VisionPromptInfo | undefined;
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Install the HITL approval gate BEFORE resolving the agent.
|
|
130
|
+
*
|
|
131
|
+
* The gate's runtime artifacts (hook script, approval-state file, denial
|
|
132
|
+
* ledger) live in the session HITL directory OUTSIDE the workspace; only a
|
|
133
|
+
* minimal, merged, transient .cursor/hooks.json is written into the repo,
|
|
134
|
+
* pointing at the hook script by absolute path. The hook is scoped to this
|
|
135
|
+
* runner's own process so the user's interactive IDE — sharing the same repo
|
|
136
|
+
* hooks.json — is never gated (issue #173). Installing here (rather than
|
|
137
|
+
* after agent create/resume) guarantees the hook is present no matter when
|
|
138
|
+
* the SDK reads hook config, and the adapter's finally restores the repo.
|
|
139
|
+
*
|
|
140
|
+
* On reinvocation, turn the user's approvals into tool-identity grants so
|
|
141
|
+
* the resumed agent's re-attempt (which carries a fresh tool-call id) is
|
|
142
|
+
* allowed through. Exact-applied writes are EXCLUDED from the grants: with no
|
|
143
|
+
* grant, a further write to that file is re-gated (the user sees every change).
|
|
144
|
+
* Capture mode: pin the pre-turn baseline tree before the agent runs (and
|
|
145
|
+
* before the gate is installed, though the gate files are excluded from the
|
|
146
|
+
* capture anyway). The turn-end capture diffs the post-turn tree against this
|
|
147
|
+
* to build the per-file cards; the baseline ref is also what a reject reverts
|
|
148
|
+
* to on resume. Covers a fresh turn and the approved-irreversible resume
|
|
149
|
+
* fall-through (the agent will run and may make further edits).
|
|
150
|
+
*/
|
|
151
|
+
export declare function installGate(input: TurnInput, sink: TurnSink, rows: AdjudicatedRows, streamState: TurnStreamState): Promise<CursorGate>;
|
|
152
|
+
/**
|
|
153
|
+
* Resolve the Cursor agent (parked, created, resumed, or created after a
|
|
154
|
+
* resume failure), emit the cold-start line, and bind a NEW agent's id
|
|
155
|
+
* through the sink before anything else runs (Q-S2-11: a rejected bind ends
|
|
156
|
+
* the turn `failed`; the sink rejects and the caller's catch names it).
|
|
157
|
+
*
|
|
158
|
+
* The requested name and the effective tier and thinking mode are the
|
|
159
|
+
* runtime's; validating the NAME against Cursor's catalog is this harness's.
|
|
160
|
+
*/
|
|
161
|
+
export declare function resolveEngine(input: TurnInput, sink: TurnSink, config: CursorAdapterConfig, mode: {
|
|
162
|
+
cursorMode: CursorMode;
|
|
163
|
+
agentMode: CursorAgentMode;
|
|
164
|
+
}): Promise<CursorEngine>;
|
|
165
|
+
/** Create a fresh agent for a recovery spine (the same options as the primary resolve). */
|
|
166
|
+
export declare function createFreshAgent(engine: CursorEngine): Promise<AgentResolution["agent"]>;
|
|
167
|
+
/**
|
|
168
|
+
* Build the prompt in the shape the resolution calls for (`prompt-builder.ts`
|
|
169
|
+
* `buildPrompt`), with the per-turn directives that ride every send this
|
|
170
|
+
* turn makes (the structured-output contract, the implement-plan directive)
|
|
171
|
+
* and the vision payload policy.
|
|
172
|
+
*/
|
|
173
|
+
export declare function buildTurnPrompt(input: TurnInput, sink: TurnSink, engine: CursorEngine, rows: AdjudicatedRows): Promise<CursorPrompt>;
|