@stigmer/runner 3.13.0 → 3.14.0-dev.20260910084630
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/LICENSE +190 -0
- package/dist/.build-fingerprint +1 -1
- package/dist/activities/execute-cursor/message-translator.d.ts +67 -0
- package/dist/activities/execute-cursor/message-translator.js +103 -0
- package/dist/activities/execute-cursor/message-translator.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.js +13 -1
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/turn-boundary.d.ts +16 -1
- package/dist/activities/execute-cursor/turn-boundary.js +44 -2
- package/dist/activities/execute-cursor/turn-boundary.js.map +1 -1
- package/dist/ipc-protocol-fixtures.js +3 -4
- package/dist/ipc-protocol-fixtures.js.map +1 -1
- package/dist/ipc-protocol.js +5 -4
- package/dist/ipc-protocol.js.map +1 -1
- package/package.json +15 -5
- package/src/__tests__/ipc-protocol-fixtures.test.ts +3 -4
- package/src/__tests__/ipc-protocol.test.ts +3 -2
- package/src/activities/execute-cursor/__tests__/cursor-generate-image-live.test.ts +147 -0
- package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +153 -1
- package/src/activities/execute-cursor/message-translator.ts +115 -0
- package/src/activities/execute-cursor/prompt-builder.ts +13 -1
- package/src/activities/execute-cursor/turn-boundary.ts +65 -1
- package/src/ipc-protocol-fixtures.ts +3 -4
- package/src/ipc-protocol.ts +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/prompt-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/prompt-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,12 @@
|
|
|
12
12
|
* and redact the model's provisional post-denial narration;
|
|
13
13
|
* 5. detect UNATTRIBUTED hook blocks (issue #205) — a tool blocked by a hook
|
|
14
14
|
* with no ledger entry of any kind was denied by a FOREIGN hook the merge
|
|
15
|
-
* preserved, and the caller fails the run rather than completing silently
|
|
15
|
+
* preserved, and the caller fails the run rather than completing silently;
|
|
16
|
+
* 6. settle UNRESOLVED tool calls (issue #965) — a this-turn row still
|
|
17
|
+
* non-terminal on a completing turn with no ledger attribution hung inside
|
|
18
|
+
* the harness and can never complete; it is settled to an honest
|
|
19
|
+
* TOOL_CALL_INTERRUPTED and disclosed on the transcript instead of being
|
|
20
|
+
* silently stamped by the server's terminal settle after the fact.
|
|
16
21
|
*
|
|
17
22
|
* Extracted from the activity entry point (index.ts Phase 12) so it is directly
|
|
18
23
|
* unit-testable AND re-enterable: the poisoned-handle / transport-timeout
|
|
@@ -114,6 +119,16 @@ export interface TurnBoundaryResult {
|
|
|
114
119
|
* undone (a pausing turn is not silent — the caller logs and pauses as usual).
|
|
115
120
|
*/
|
|
116
121
|
readonly unattributedHookBlocks: readonly UnattributedHookBlock[];
|
|
122
|
+
/**
|
|
123
|
+
* This-turn tool calls settled to TOOL_CALL_INTERRUPTED because they were
|
|
124
|
+
* still non-terminal on a completing turn with no ledger attribution (issue
|
|
125
|
+
* #965) — the harness returned no result for them and the platform holds no
|
|
126
|
+
* approval for them. Informational: the boundary already settled the rows
|
|
127
|
+
* and appended the transcript disclosure; the run is NOT failed for these
|
|
128
|
+
* (unlike #205's unattributed blocks, an unresolved row can be benign
|
|
129
|
+
* stream event-loss, so failing would over-punish).
|
|
130
|
+
*/
|
|
131
|
+
readonly settledUnresolvedCount: number;
|
|
117
132
|
}
|
|
118
133
|
/**
|
|
119
134
|
* Run the turn boundary: author this turn's change set to the file_review
|
|
@@ -12,7 +12,12 @@
|
|
|
12
12
|
* and redact the model's provisional post-denial narration;
|
|
13
13
|
* 5. detect UNATTRIBUTED hook blocks (issue #205) — a tool blocked by a hook
|
|
14
14
|
* with no ledger entry of any kind was denied by a FOREIGN hook the merge
|
|
15
|
-
* preserved, and the caller fails the run rather than completing silently
|
|
15
|
+
* preserved, and the caller fails the run rather than completing silently;
|
|
16
|
+
* 6. settle UNRESOLVED tool calls (issue #965) — a this-turn row still
|
|
17
|
+
* non-terminal on a completing turn with no ledger attribution hung inside
|
|
18
|
+
* the harness and can never complete; it is settled to an honest
|
|
19
|
+
* TOOL_CALL_INTERRUPTED and disclosed on the transcript instead of being
|
|
20
|
+
* silently stamped by the server's terminal settle after the fact.
|
|
16
21
|
*
|
|
17
22
|
* Extracted from the activity entry point (index.ts Phase 12) so it is directly
|
|
18
23
|
* unit-testable AND re-enterable: the poisoned-handle / transport-timeout
|
|
@@ -35,7 +40,10 @@ import { LocalWorkspaceBackend } from "../../shared/workspace/local-backend.js";
|
|
|
35
40
|
import { approvalDenials, denialKindOf, primaryToken, readDenialLedger, unattendedDenials, } from "./approval-state.js";
|
|
36
41
|
import { deriveTurnCommandProvenance } from "./command-provenance.js";
|
|
37
42
|
import { captureTurnToLedger } from "./capture-flow.js";
|
|
38
|
-
import { clearProvisionalPostDenialNarration, detectUnattributedHookBlocks, reconcileDeniedToolCalls, stampUnattendedSkippedToolCalls, } from "./message-translator.js";
|
|
43
|
+
import { clearProvisionalPostDenialNarration, detectUnattributedHookBlocks, reconcileDeniedToolCalls, settleUnresolvedToolCalls, stampUnattendedSkippedToolCalls, utcTimestamp, } from "./message-translator.js";
|
|
44
|
+
import { create } from "@bufbuild/protobuf";
|
|
45
|
+
import { AgentMessageSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
46
|
+
import { MessageType } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
39
47
|
// How long the boundary waits for the first-denial-stop's run.cancel() to
|
|
40
48
|
// settle before reading the final denial ledger and capturing the turn's tree.
|
|
41
49
|
// Long enough for the SDK's normal teardown, short enough that a wedged cancel
|
|
@@ -186,6 +194,39 @@ export async function runTurnBoundary(opts) {
|
|
|
186
194
|
// here as false positives.
|
|
187
195
|
const unattributedHookBlocks = detectUnattributedHookBlocks(status.messages, turnStartMessageIndex, deniedLedger, primaryWorkspaceDir);
|
|
188
196
|
const waiting = deniedToolCalls.length > 0 || capturedChangeCount > 0;
|
|
197
|
+
// Issue #965 invariant: an unresolved tool must never silently complete.
|
|
198
|
+
// On a COMPLETING (non-pausing) turn, any this-turn row still PENDING /
|
|
199
|
+
// RUNNING with no ledger attribution hung inside the harness (the production
|
|
200
|
+
// case: `generateImage`, which rides the SDK's interaction-query channel and
|
|
201
|
+
// is invisible to the hook). Settle it to an honest TOOL_CALL_INTERRUPTED —
|
|
202
|
+
// never FAILED, so a recovery replay can still supersede it (#207) — and
|
|
203
|
+
// disclose it on the transcript, so the model's own narration (which may
|
|
204
|
+
// have promised an approval the platform does not hold) is never the last
|
|
205
|
+
// word. A PAUSING turn is skipped: its non-terminal rows belong to the
|
|
206
|
+
// reconcile/collapse machinery above. Runs AFTER the unattended stamp so a
|
|
207
|
+
// ledger-attributed row is already SKIPPED and cannot double-settle, and
|
|
208
|
+
// AFTER the #205 detection so a hook-block FAILED row keeps its distinct,
|
|
209
|
+
// run-failing treatment. Deliberately does NOT fail the run (unlike #205):
|
|
210
|
+
// an unresolved row can also be benign stream event-loss where the tool
|
|
211
|
+
// actually ran, and converting those into failures would be a regression.
|
|
212
|
+
let settledUnresolved = [];
|
|
213
|
+
if (!waiting) {
|
|
214
|
+
settledUnresolved = settleUnresolvedToolCalls(status.messages, turnStartMessageIndex, deniedLedger, primaryWorkspaceDir);
|
|
215
|
+
if (settledUnresolved.length > 0) {
|
|
216
|
+
const names = [...new Set(settledUnresolved.map((s) => s.toolName))].join(", ");
|
|
217
|
+
status.messages.push(create(AgentMessageSchema, {
|
|
218
|
+
type: MessageType.MESSAGE_SYSTEM,
|
|
219
|
+
content: `Note: the following tool call(s) never completed and were not executed: ${names}. ` +
|
|
220
|
+
`No approval is pending for them — if the agent said otherwise, disregard that. ` +
|
|
221
|
+
`You can ask the agent to try again.`,
|
|
222
|
+
timestamp: utcTimestamp(),
|
|
223
|
+
}));
|
|
224
|
+
console.warn(`ExecuteCursor turn boundary: settled ${settledUnresolved.length} unresolved ` +
|
|
225
|
+
`tool call(s) to INTERRUPTED with disclosure [${names}] — the harness returned ` +
|
|
226
|
+
`no result for them and no ledger entry accounts for them (issue #965; ` +
|
|
227
|
+
`execution=${executionId})`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
189
230
|
if (unattributedHookBlocks.length > 0) {
|
|
190
231
|
const culprits = (foreignGatingHooks?.length ?? 0) > 0
|
|
191
232
|
? ` — likely foreign workspace hook(s): ${foreignGatingHooks.join(", ")}`
|
|
@@ -209,6 +250,7 @@ export async function runTurnBoundary(opts) {
|
|
|
209
250
|
capturedChangeCount,
|
|
210
251
|
deniedToolCallCount: deniedToolCalls.length,
|
|
211
252
|
unattributedHookBlocks,
|
|
253
|
+
settledUnresolvedCount: settledUnresolved.length,
|
|
212
254
|
};
|
|
213
255
|
}
|
|
214
256
|
//# sourceMappingURL=turn-boundary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-boundary.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/turn-boundary.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"turn-boundary.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/turn-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// Golden wire-shape examples for the manager-mode IPC contract — one representative
|
|
2
|
-
// instance per message. This is the single source the cross-language
|
|
3
|
-
// against (Rust `protocol.rs
|
|
4
|
-
// `
|
|
5
|
-
// read that artifact. Because every sample is typed against an `Ipc*` interface from
|
|
2
|
+
// instance per message. This is the single source the cross-language mirror asserts
|
|
3
|
+
// against (Rust `protocol.rs`): the generator script serializes `buildFixtures()` to
|
|
4
|
+
// `fixtures/ipc-protocol.generated.json`, and the mirror's tests read that artifact. Because every sample is typed against an `Ipc*` interface from
|
|
6
5
|
// `ipc-protocol.ts`, renaming or retyping a field there fails `tsc` here — that compile
|
|
7
6
|
// error is what binds the fixtures to the contract. Full rules: docs/ipc-protocol.md.
|
|
8
7
|
import { IPC_PROTOCOL_VERSION, buildReadyMessage, } from "./ipc-protocol.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc-protocol-fixtures.js","sourceRoot":"","sources":["../src/ipc-protocol-fixtures.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,oFAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"ipc-protocol-fixtures.js","sourceRoot":"","sources":["../src/ipc-protocol-fixtures.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,oFAAoF;AACpF,qFAAqF;AACrF,oJAAoJ;AACpJ,wFAAwF;AACxF,sFAAsF;AAEtF,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAelB,MAAM,mBAAmB,CAAC;AAE3B,wFAAwF;AACxF,0FAA0F;AAC1F,oFAAoF;AACpF,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,KAAK,GAAG,aAAa,CAAC;AA8B5B,wFAAwF;AACxF,2FAA2F;AAC3F,2FAA2F;AAC3F,kFAAkF;AAClF,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,kBAAkB,EAAE,oBAAoB;QACxC,QAAQ,EAAE;YACR,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;YACzD,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE;YAC/D,oBAAoB,EAAE;gBACpB,IAAI,EAAE,sBAAsB;gBAC5B,WAAW,EAAE,YAAY;aAC1B;YACD,uBAAuB,EAAE;gBACvB,IAAI,EAAE,yBAAyB;gBAC/B,WAAW,EAAE,YAAY;aAC1B;YACD,cAAc,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;YACrD,kBAAkB,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE;YACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;SAC/B;QACD,SAAS,EAAE;YACT,KAAK,EAAE,iBAAiB,EAAE;YAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC9B,YAAY,EAAE;gBACZ,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,WAAW,UAAU,EAAE;aACnC;YACD,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE;YACjE,sBAAsB,EAAE;gBACtB,IAAI,EAAE,wBAAwB;gBAC9B,WAAW,EAAE,YAAY;gBACzB,SAAS,EAAE,UAAU,YAAY,EAAE;aACpC;YACD,wBAAwB,EAAE;gBACxB,IAAI,EAAE,0BAA0B;gBAChC,WAAW,EAAE,YAAY;aAC1B;YACD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YACtC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;YACtD,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;SAC/C;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC"}
|
package/dist/ipc-protocol.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// Canonical machine-readable definition of the manager-mode IPC contract.
|
|
2
2
|
// The runner emits these messages; the Rust host crate (crates/stigmer-runner-host/src/
|
|
3
|
-
// protocol.rs)
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
3
|
+
// protocol.rs) hand-mirrors them, kept honest by golden fixtures generated from this file
|
|
4
|
+
// via ipc-protocol-fixtures.ts (run `make gen-ipc-fixtures`). The conformance harness's
|
|
5
|
+
// manager-mode spawner (test/conformance/src/harness/runner-manager-process.ts) imports
|
|
6
|
+
// these types directly rather than mirroring them. Full spec and the rule for keeping all
|
|
7
|
+
// definitions in sync: docs/ipc-protocol.md.
|
|
7
8
|
// Integer protocol version advertised in the `ready` handshake. Bump ONLY on a
|
|
8
9
|
// breaking change (removed/renamed message, changed field type, changed lifecycle
|
|
9
10
|
// guarantee) — additive fields never bump it. Hosts read this to decide compatibility;
|
package/dist/ipc-protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc-protocol.js","sourceRoot":"","sources":["../src/ipc-protocol.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wFAAwF;AACxF,0FAA0F;AAC1F,
|
|
1
|
+
{"version":3,"file":"ipc-protocol.js","sourceRoot":"","sources":["../src/ipc-protocol.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wFAAwF;AACxF,0FAA0F;AAC1F,wFAAwF;AACxF,wFAAwF;AACxF,0FAA0F;AAC1F,6CAA6C;AAE7C,+EAA+E;AAC/E,kFAAkF;AAClF,uFAAuF;AACvF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AA8FtC,gFAAgF;AAEhF,uFAAuF;AACvF,sFAAsF;AACtF,4FAA4F;AAC5F,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AAClE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stigmer/runner",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.14.0-dev.20260910084630",
|
|
4
4
|
"description": "Embeddable Temporal worker for the Stigmer AI agent platform — handles agent execution, workflow orchestration, and MCP server management",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"build:slim": "npm run build && node scripts/bundle-slim.mjs",
|
|
29
29
|
"verify:slim": "node scripts/verify-slim-artifact.mjs",
|
|
30
30
|
"verify:dist": "node scripts/verify-dist-boot.mjs",
|
|
31
|
-
"verify:consumer": "node scripts/verify-consumer-install.mjs",
|
|
31
|
+
"verify:consumer": "node ../../../scripts/verify-consumer-install.mjs",
|
|
32
32
|
"gen:ipc-fixtures": "tsx scripts/generate-ipc-fixtures.ts",
|
|
33
33
|
"start": "tsx src/main.ts",
|
|
34
34
|
"typecheck": "tsc --noEmit",
|
|
@@ -49,6 +49,16 @@
|
|
|
49
49
|
"cursor-sdk",
|
|
50
50
|
"deepagents"
|
|
51
51
|
],
|
|
52
|
+
"stigmerPublish": {
|
|
53
|
+
"consumerCheck": {
|
|
54
|
+
"singleCopy": [
|
|
55
|
+
"@temporalio/proto"
|
|
56
|
+
],
|
|
57
|
+
"boot": [
|
|
58
|
+
"scripts/verify-dist-boot.mjs"
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
},
|
|
52
62
|
"publishConfig": {
|
|
53
63
|
"access": "public",
|
|
54
64
|
"main": "./dist/index.js",
|
|
@@ -94,9 +104,9 @@
|
|
|
94
104
|
"@opentelemetry/sdk-metrics": "^2.0.0",
|
|
95
105
|
"@opentelemetry/sdk-trace-base": "^2.0.0",
|
|
96
106
|
"@opentelemetry/sdk-trace-node": "^2.0.0",
|
|
97
|
-
"@stigmer/protos": "3.
|
|
98
|
-
"@stigmer/temporal-codecs": "3.
|
|
99
|
-
"@stigmer/zip-structure": "3.
|
|
107
|
+
"@stigmer/protos": "3.14.0-dev.20260910084630",
|
|
108
|
+
"@stigmer/temporal-codecs": "3.14.0-dev.20260910084630",
|
|
109
|
+
"@stigmer/zip-structure": "3.14.0-dev.20260910084630",
|
|
100
110
|
"@temporalio/activity": "1.16.2",
|
|
101
111
|
"@temporalio/common": "1.16.2",
|
|
102
112
|
"@temporalio/interceptors-opentelemetry": "1.16.2",
|
|
@@ -6,9 +6,8 @@ import { buildFixtures } from "../ipc-protocol-fixtures.js";
|
|
|
6
6
|
/**
|
|
7
7
|
* The TS side of the golden-fixture conformance suite. Its job is narrow and honest: keep
|
|
8
8
|
* the committed artifact fresh and bind the runtime `ready` builder to it. The cross-
|
|
9
|
-
* language contract assurance comes from the Rust
|
|
10
|
-
* committed file — see crates/stigmer-runner-host/src/protocol.rs
|
|
11
|
-
* test/integration/harness/ipc_fixtures_test.go.
|
|
9
|
+
* language contract assurance comes from the Rust mirror asserting against the same
|
|
10
|
+
* committed file — see crates/stigmer-runner-host/src/protocol.rs.
|
|
12
11
|
*/
|
|
13
12
|
describe("ipc-protocol golden fixtures", () => {
|
|
14
13
|
it("matches the committed artifact (regenerate with `make gen-ipc-fixtures` if this fails)", () => {
|
|
@@ -54,7 +53,7 @@ describe("ipc-protocol golden fixtures", () => {
|
|
|
54
53
|
const { commands } = buildFixtures();
|
|
55
54
|
expect(commands.updateTokenSet.token).toBe("tok_example");
|
|
56
55
|
// `null` is the canonical "clear the token" shape; absence is a host quirk, not the
|
|
57
|
-
// contract. The Rust
|
|
56
|
+
// contract. The Rust mirror is checked against this exact value.
|
|
58
57
|
expect(commands.updateTokenCleared.token).toBeNull();
|
|
59
58
|
});
|
|
60
59
|
|
|
@@ -2,8 +2,9 @@ import { describe, it, expect } from "vitest";
|
|
|
2
2
|
import { IPC_PROTOCOL_VERSION, buildReadyMessage } from "../ipc-protocol.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Locks the wire shape of the `ready` handshake. Hosts (
|
|
6
|
-
* external embedders) read `protocolVersion` to decide
|
|
5
|
+
* Locks the wire shape of the `ready` handshake. Hosts (the Rust host crate, the conformance
|
|
6
|
+
* harness's manager-mode spawner, and external embedders) read `protocolVersion` to decide
|
|
7
|
+
* compatibility, so a silent change to
|
|
7
8
|
* its value or type is a breaking protocol change — these assertions make that change loud.
|
|
8
9
|
*/
|
|
9
10
|
describe("ipc-protocol ready handshake", () => {
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live ground-truth capture for Cursor's native `generateImage` tool (issue
|
|
3
|
+
* #965) — the Phase-0 discipline from cursor_hitl_test.go applied to the
|
|
4
|
+
* interaction-channel tool family.
|
|
5
|
+
*
|
|
6
|
+
* WHY THIS EXISTS. Production incident aex_01m1a6ww3nmp4952ar5v0g4g85: an
|
|
7
|
+
* agent invoked `generateImage`, the call hung twice and settled
|
|
8
|
+
* TOOL_CALL_INTERRUPTED, and the model told the user a write approval was
|
|
9
|
+
* pending — an approval the platform never held (the run had
|
|
10
|
+
* auto_approve_all ON, so nothing was ever denied). The block happened
|
|
11
|
+
* inside the Cursor agent runtime, in a layer no Stigmer seam touches:
|
|
12
|
+
* `generateImage` rides the SDK's interaction-query channel
|
|
13
|
+
* (generateImageRequestQuery), not the ordinary tool path, and the SDK
|
|
14
|
+
* exposes no public interaction-listener seam the runner could answer it
|
|
15
|
+
* from. This test is the standing instrument that answers, against the REAL
|
|
16
|
+
* SDK the runner ships:
|
|
17
|
+
*
|
|
18
|
+
* 1. Does `generateImage` complete AT ALL in the runner's headless local
|
|
19
|
+
* arrangement (Agent.create({ local }), project setting sources)?
|
|
20
|
+
* 2. Does the `preToolUse` hook fire for it — i.e. CAN the Stigmer HITL
|
|
21
|
+
* gate see it — and under which `tool_name`?
|
|
22
|
+
* 3. What exact error/result does the model see when it fails?
|
|
23
|
+
*
|
|
24
|
+
* The answers decide the #965 fix shape: hook visible + capability works →
|
|
25
|
+
* classify + gate behind the standard write approval; otherwise → the
|
|
26
|
+
* honest-unavailability posture (there is no seam to gate or deny it).
|
|
27
|
+
*
|
|
28
|
+
* Skipped without CURSOR_API_KEY (the cursor-sdk-auth-smoke.test.ts
|
|
29
|
+
* convention) — it spends real credits for one short turn. Findings are
|
|
30
|
+
* PRINTED, not asserted: like the Phase-0 capture, this documents upstream
|
|
31
|
+
* behavior we do not own; the only hard assertion is that the run itself
|
|
32
|
+
* reaches a terminal outcome (no infinite hang at the SDK boundary).
|
|
33
|
+
*
|
|
34
|
+
* Run with: CURSOR_API_KEY=<key> npx vitest run cursor-generate-image-live
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
import { describe, it, expect } from "vitest";
|
|
38
|
+
import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, existsSync, chmodSync, readdirSync } from "node:fs";
|
|
39
|
+
import { tmpdir } from "node:os";
|
|
40
|
+
import { join } from "node:path";
|
|
41
|
+
|
|
42
|
+
const CURSOR_API_KEY = process.env.CURSOR_API_KEY ?? "";
|
|
43
|
+
const describeWithCursorKey = CURSOR_API_KEY ? describe : describe.skip;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* A minimal observation-only preToolUse/beforeMCPExecution hook: appends every
|
|
47
|
+
* invocation's stdin JSON to a log file and ALLOWS everything. Proves whether
|
|
48
|
+
* the hook layer sees `generateImage` at all (question 2) without gating the
|
|
49
|
+
* run — the capability question (1) needs the tool to actually attempt.
|
|
50
|
+
*/
|
|
51
|
+
function installObservationHook(workspaceRoot: string, logPath: string): void {
|
|
52
|
+
const hooksDir = join(workspaceRoot, ".cursor");
|
|
53
|
+
mkdirSync(hooksDir, { recursive: true });
|
|
54
|
+
const scriptPath = join(hooksDir, "observe-hook.sh");
|
|
55
|
+
writeFileSync(
|
|
56
|
+
scriptPath,
|
|
57
|
+
`#!/bin/bash\nINPUT=$(cat)\nprintf '%s\\n' "$INPUT" >> "${logPath}" 2>/dev/null || true\necho '{"permission":"allow"}'\n`,
|
|
58
|
+
"utf-8",
|
|
59
|
+
);
|
|
60
|
+
chmodSync(scriptPath, 0o755);
|
|
61
|
+
writeFileSync(
|
|
62
|
+
join(hooksDir, "hooks.json"),
|
|
63
|
+
JSON.stringify({
|
|
64
|
+
version: 1,
|
|
65
|
+
hooks: {
|
|
66
|
+
preToolUse: [{ command: scriptPath }],
|
|
67
|
+
beforeMCPExecution: [{ command: scriptPath }],
|
|
68
|
+
},
|
|
69
|
+
}),
|
|
70
|
+
"utf-8",
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
describeWithCursorKey("generateImage live ground truth (issue #965)", () => {
|
|
75
|
+
it("captures whether generateImage completes headless and whether preToolUse sees it", async () => {
|
|
76
|
+
const { Agent } = await import("@cursor/sdk");
|
|
77
|
+
|
|
78
|
+
const workspaceRoot = mkdtempSync(join(tmpdir(), "stigmer-genimage-spike-"));
|
|
79
|
+
const stateRoot = join(workspaceRoot, ".sdk-state");
|
|
80
|
+
mkdirSync(stateRoot, { recursive: true });
|
|
81
|
+
const hookLog = join(workspaceRoot, "hook-invocations.jsonl");
|
|
82
|
+
installObservationHook(workspaceRoot, hookLog);
|
|
83
|
+
|
|
84
|
+
// Mirror the runner's arrangement (session-lifecycle.ts createAgent):
|
|
85
|
+
// local cwd + the "project" setting source that loads .cursor/hooks.json.
|
|
86
|
+
// The model is pinned to the incident's (aex_01m1a6ww billed composer-2.5).
|
|
87
|
+
const agent = await Agent.create({
|
|
88
|
+
apiKey: CURSOR_API_KEY,
|
|
89
|
+
model: { id: "composer-2.5" },
|
|
90
|
+
local: { cwd: workspaceRoot, settingSources: ["project"] },
|
|
91
|
+
platform: { workspaceRef: `genimage-spike-${Date.now()}`, stateRoot },
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// The runner's exact consumption shape (index.ts / turn-stream.ts):
|
|
95
|
+
// send() registers the run; run.stream() is the event source; run.wait()
|
|
96
|
+
// is the terminal result.
|
|
97
|
+
const run = await agent.send(
|
|
98
|
+
"Use your generateImage tool to generate a simple image of a solid red " +
|
|
99
|
+
"circle on a white background and save it to red-circle.png in the " +
|
|
100
|
+
"workspace. Do not ask questions; invoke the tool directly. If the " +
|
|
101
|
+
"tool fails, state the exact error text you received and stop.",
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
const events: Array<Record<string, unknown>> = [];
|
|
105
|
+
for await (const event of run.stream()) {
|
|
106
|
+
const e = event as unknown as Record<string, unknown>;
|
|
107
|
+
if (e && typeof e === "object" && "type" in e) events.push(e);
|
|
108
|
+
}
|
|
109
|
+
const result = await run.wait();
|
|
110
|
+
|
|
111
|
+
// ---- Findings dump (the deliverable of this instrument) ----
|
|
112
|
+
console.log(`[genimage-spike] run status: ${result.status} (durationMs=${result.durationMs})`);
|
|
113
|
+
|
|
114
|
+
for (const ev of events) {
|
|
115
|
+
if (ev.type === "tool_call" || ev.type === "status") {
|
|
116
|
+
console.log(`[genimage-spike] event: ${JSON.stringify(ev).slice(0, 800)}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const finalAssistant = events.filter((e) => e.type === "assistant").at(-1);
|
|
120
|
+
if (finalAssistant) {
|
|
121
|
+
console.log(`[genimage-spike] final assistant: ${JSON.stringify(finalAssistant).slice(0, 800)}`);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const hookInvocations: Array<Record<string, unknown>> = [];
|
|
125
|
+
if (existsSync(hookLog)) {
|
|
126
|
+
for (const line of readFileSync(hookLog, "utf-8").split("\n")) {
|
|
127
|
+
if (!line.trim()) continue;
|
|
128
|
+
try { hookInvocations.push(JSON.parse(line)); } catch { /* partial line */ }
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
console.log(
|
|
132
|
+
`[genimage-spike] hook invocations: ${hookInvocations.length} — tool_names=` +
|
|
133
|
+
JSON.stringify(hookInvocations.map((h) => `${h.hook_event_name}:${h.tool_name}`)),
|
|
134
|
+
);
|
|
135
|
+
const hookSawGenerateImage = hookInvocations.some(
|
|
136
|
+
(h) => typeof h.tool_name === "string" && /generate.?image/i.test(h.tool_name),
|
|
137
|
+
);
|
|
138
|
+
console.log(`[genimage-spike] preToolUse saw generateImage: ${hookSawGenerateImage}`);
|
|
139
|
+
|
|
140
|
+
const imageOnDisk = readdirSync(workspaceRoot).filter((f) => f.endsWith(".png"));
|
|
141
|
+
console.log(`[genimage-spike] png files in workspace: ${JSON.stringify(imageOnDisk)}`);
|
|
142
|
+
|
|
143
|
+
// The one hard assertion: the SDK boundary itself must not hang — a
|
|
144
|
+
// terminal run outcome is required for the findings above to be trustable.
|
|
145
|
+
expect(["finished", "error", "cancelled"]).toContain(result.status);
|
|
146
|
+
}, 300_000);
|
|
147
|
+
});
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
33
33
|
import { captureBaselineToLedger } from "../capture-flow.js";
|
|
34
34
|
import { denialLedgerPath } from "../approval-state.js";
|
|
35
|
-
import { toolCallIdentityToken } from "../message-translator.js";
|
|
35
|
+
import { toolCallIdentityToken, UNRESOLVED_TOOL_CALL_ERROR } from "../message-translator.js";
|
|
36
36
|
import { runTurnBoundary, type TurnBoundaryOptions } from "../turn-boundary.js";
|
|
37
37
|
|
|
38
38
|
const execFileAsync = promisify(execFile);
|
|
@@ -405,3 +405,155 @@ describe("runTurnBoundary", () => {
|
|
|
405
405
|
expect(shellCall.status).toBe(ToolCallStatus.TOOL_CALL_WAITING_APPROVAL);
|
|
406
406
|
});
|
|
407
407
|
});
|
|
408
|
+
|
|
409
|
+
// The issue #965 invariant: an unresolved tool must never silently complete.
|
|
410
|
+
// The production fixture is aex_01m1a6ww3nmp4952ar5v0g4g85 — Cursor's native
|
|
411
|
+
// `generateImage` (an interaction-channel tool no Stigmer seam touches) hung
|
|
412
|
+
// with no result event and no ledger entry, the turn completed, and the model's
|
|
413
|
+
// last words promised a write approval the platform never held. The boundary
|
|
414
|
+
// must settle such rows to an honest INTERRUPTED and put the platform's own
|
|
415
|
+
// disclosure on the transcript so the model's claim is never the last word.
|
|
416
|
+
describe("runTurnBoundary — unresolved tool calls on a completing turn (issue #965)", () => {
|
|
417
|
+
/** The incident's exact row shape: a streamed call that never resolved. */
|
|
418
|
+
function hangingGenerateImage(id: string): AgentMessage {
|
|
419
|
+
return create(AgentMessageSchema, {
|
|
420
|
+
type: MessageType.MESSAGE_AI,
|
|
421
|
+
toolCalls: [
|
|
422
|
+
create(ToolCallSchema, {
|
|
423
|
+
id,
|
|
424
|
+
name: "generateImage",
|
|
425
|
+
status: ToolCallStatus.TOOL_CALL_RUNNING,
|
|
426
|
+
args: { description: "a red circle", filePath: "red-circle.png" },
|
|
427
|
+
}),
|
|
428
|
+
],
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
it("settles the incident shape to INTERRUPTED and discloses it (regression: aex_01m1a6ww)", async () => {
|
|
433
|
+
const status = newStatus();
|
|
434
|
+
const baseline = await captureBaselineToLedger({
|
|
435
|
+
status,
|
|
436
|
+
gitRoot: repo,
|
|
437
|
+
executionId: EXEC_ID,
|
|
438
|
+
changeSetId: CHANGE_SET_ID,
|
|
439
|
+
});
|
|
440
|
+
status.messages.push(hangingGenerateImage("tc-genimage-1"));
|
|
441
|
+
|
|
442
|
+
const result = await runTurnBoundary(boundaryOpts(status, baseline));
|
|
443
|
+
|
|
444
|
+
// The turn completes (no pause) — but not silently.
|
|
445
|
+
expect(result.waiting).toBe(false);
|
|
446
|
+
expect(result.settledUnresolvedCount).toBe(1);
|
|
447
|
+
|
|
448
|
+
const row = status.messages[0].toolCalls[0];
|
|
449
|
+
// INTERRUPTED, never FAILED: the one settled status a recovery replay may
|
|
450
|
+
// supersede (the #207 contract) — a FAILED stamp would freeze the row.
|
|
451
|
+
expect(row.status).toBe(ToolCallStatus.TOOL_CALL_INTERRUPTED);
|
|
452
|
+
expect(row.error).toBe(UNRESOLVED_TOOL_CALL_ERROR);
|
|
453
|
+
expect(row.isStreaming).toBe(false);
|
|
454
|
+
expect(row.completedAt).not.toBe("");
|
|
455
|
+
|
|
456
|
+
// The platform's disclosure is the transcript's last word — it names the
|
|
457
|
+
// tool and explicitly denies the phantom approval.
|
|
458
|
+
const last = status.messages[status.messages.length - 1];
|
|
459
|
+
expect(last.type).toBe(MessageType.MESSAGE_SYSTEM);
|
|
460
|
+
expect(last.content).toContain("generateImage");
|
|
461
|
+
expect(last.content).toContain("No approval is pending");
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
it("leaves non-terminal rows to the pause machinery on a PAUSING turn", async () => {
|
|
465
|
+
const status = newStatus();
|
|
466
|
+
const baseline = await captureBaselineToLedger({
|
|
467
|
+
status,
|
|
468
|
+
gitRoot: repo,
|
|
469
|
+
executionId: EXEC_ID,
|
|
470
|
+
changeSetId: CHANGE_SET_ID,
|
|
471
|
+
});
|
|
472
|
+
// A captured file change makes the turn pause…
|
|
473
|
+
await write("notes.md", "original notes\npaused-turn edit\n");
|
|
474
|
+
status.messages.push(
|
|
475
|
+
streamedEdit("tc-edit-1", "notes.md", "original notes\npaused-turn edit\n"),
|
|
476
|
+
);
|
|
477
|
+
// …while a hanging row rides the same turn.
|
|
478
|
+
status.messages.push(hangingGenerateImage("tc-genimage-2"));
|
|
479
|
+
|
|
480
|
+
const result = await runTurnBoundary(boundaryOpts(status, baseline));
|
|
481
|
+
|
|
482
|
+
expect(result.waiting).toBe(true);
|
|
483
|
+
expect(result.settledUnresolvedCount).toBe(0);
|
|
484
|
+
// Untouched by THIS sweep (a pausing turn's rows belong to the reconcile /
|
|
485
|
+
// collapse machinery, which has its own treatment for orphaned attempts).
|
|
486
|
+
expect(status.messages[1].toolCalls[0].status).toBe(ToolCallStatus.TOOL_CALL_RUNNING);
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
it("never settles a ledger-attributed row — that is the kinded machinery's call", async () => {
|
|
490
|
+
const status = newStatus();
|
|
491
|
+
const baseline = await captureBaselineToLedger({
|
|
492
|
+
status,
|
|
493
|
+
gitRoot: repo,
|
|
494
|
+
executionId: EXEC_ID,
|
|
495
|
+
changeSetId: CHANGE_SET_ID,
|
|
496
|
+
});
|
|
497
|
+
const secretWrite = create(ToolCallSchema, {
|
|
498
|
+
id: "tc-secret-1",
|
|
499
|
+
name: "edit",
|
|
500
|
+
status: ToolCallStatus.TOOL_CALL_PENDING,
|
|
501
|
+
args: { path: ".env", content: "API_KEY=x" },
|
|
502
|
+
});
|
|
503
|
+
status.messages.push(
|
|
504
|
+
create(AgentMessageSchema, { type: MessageType.MESSAGE_AI, toolCalls: [secretWrite] }),
|
|
505
|
+
);
|
|
506
|
+
// A secret-kind hard-block entry: attributable (kind non-approval), so the
|
|
507
|
+
// row is accounted for and must NOT be swept as "unresolved".
|
|
508
|
+
await writeFile(
|
|
509
|
+
denialLedgerPath(hitlDir),
|
|
510
|
+
JSON.stringify({
|
|
511
|
+
toolName: "Write",
|
|
512
|
+
token: toolCallIdentityToken(secretWrite),
|
|
513
|
+
kind: "secret",
|
|
514
|
+
}) + "\n",
|
|
515
|
+
"utf-8",
|
|
516
|
+
);
|
|
517
|
+
|
|
518
|
+
const result = await runTurnBoundary(boundaryOpts(status, baseline));
|
|
519
|
+
|
|
520
|
+
expect(result.settledUnresolvedCount).toBe(0);
|
|
521
|
+
expect(secretWrite.status).toBe(ToolCallStatus.TOOL_CALL_PENDING);
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
it("scopes to THIS turn: seeded prior-turn rows and terminal rows are untouched", async () => {
|
|
525
|
+
const status = newStatus();
|
|
526
|
+
const baseline = await captureBaselineToLedger({
|
|
527
|
+
status,
|
|
528
|
+
gitRoot: repo,
|
|
529
|
+
executionId: EXEC_ID,
|
|
530
|
+
changeSetId: CHANGE_SET_ID,
|
|
531
|
+
});
|
|
532
|
+
// Message 0 is seeded prior-turn context (already adjudicated elsewhere).
|
|
533
|
+
status.messages.push(hangingGenerateImage("tc-prior-turn"));
|
|
534
|
+
// Message 1 opens this turn: one real terminal row.
|
|
535
|
+
status.messages.push(
|
|
536
|
+
create(AgentMessageSchema, {
|
|
537
|
+
type: MessageType.MESSAGE_AI,
|
|
538
|
+
toolCalls: [
|
|
539
|
+
create(ToolCallSchema, {
|
|
540
|
+
id: "tc-done",
|
|
541
|
+
name: "Read",
|
|
542
|
+
status: ToolCallStatus.TOOL_CALL_COMPLETED,
|
|
543
|
+
result: "file contents",
|
|
544
|
+
}),
|
|
545
|
+
],
|
|
546
|
+
}),
|
|
547
|
+
);
|
|
548
|
+
|
|
549
|
+
const result = await runTurnBoundary(
|
|
550
|
+
boundaryOpts(status, baseline, { turnStartMessageIndex: 1 }),
|
|
551
|
+
);
|
|
552
|
+
|
|
553
|
+
expect(result.settledUnresolvedCount).toBe(0);
|
|
554
|
+
expect(status.messages[0].toolCalls[0].status).toBe(ToolCallStatus.TOOL_CALL_RUNNING);
|
|
555
|
+
expect(status.messages[1].toolCalls[0].status).toBe(ToolCallStatus.TOOL_CALL_COMPLETED);
|
|
556
|
+
// No disclosure was appended.
|
|
557
|
+
expect(status.messages.at(-1)?.type).toBe(MessageType.MESSAGE_AI);
|
|
558
|
+
});
|
|
559
|
+
});
|