@stigmer/runner 3.2.0 → 3.2.2

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.
Files changed (95) hide show
  1. package/dist/.build-fingerprint +1 -1
  2. package/dist/activities/call-transform.js +12 -2
  3. package/dist/activities/call-transform.js.map +1 -1
  4. package/dist/activities/call-validate.js +20 -2
  5. package/dist/activities/call-validate.js.map +1 -1
  6. package/dist/activities/discover-mcp-server.js +6 -20
  7. package/dist/activities/discover-mcp-server.js.map +1 -1
  8. package/dist/activities/execute-cursor/cost-guard.d.ts +41 -0
  9. package/dist/activities/execute-cursor/cost-guard.js +50 -0
  10. package/dist/activities/execute-cursor/cost-guard.js.map +1 -0
  11. package/dist/activities/execute-cursor/index.d.ts +12 -0
  12. package/dist/activities/execute-cursor/index.js +83 -12
  13. package/dist/activities/execute-cursor/index.js.map +1 -1
  14. package/dist/activities/execute-cursor/prompt-builder.d.ts +19 -0
  15. package/dist/activities/execute-cursor/prompt-builder.js +21 -0
  16. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
  17. package/dist/activities/execute-cursor/turn-stream.d.ts +10 -1
  18. package/dist/activities/execute-cursor/turn-stream.js +42 -9
  19. package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
  20. package/dist/activities/execute-deep-agent/prompt-builder.d.ts +19 -0
  21. package/dist/activities/execute-deep-agent/prompt-builder.js +12 -0
  22. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
  23. package/dist/activities/execute-deep-agent/setup.js +4 -0
  24. package/dist/activities/execute-deep-agent/setup.js.map +1 -1
  25. package/dist/activities/workflow-event-activities.js +2 -0
  26. package/dist/activities/workflow-event-activities.js.map +1 -1
  27. package/dist/config.d.ts +17 -0
  28. package/dist/config.js +14 -0
  29. package/dist/config.js.map +1 -1
  30. package/dist/runner-manager.d.ts +2 -0
  31. package/dist/runner-manager.js +2 -1
  32. package/dist/runner-manager.js.map +1 -1
  33. package/dist/runner.d.ts +2 -0
  34. package/dist/runner.js +2 -1
  35. package/dist/runner.js.map +1 -1
  36. package/dist/shared/context-bridge.d.ts +30 -0
  37. package/dist/shared/context-bridge.js +45 -0
  38. package/dist/shared/context-bridge.js.map +1 -0
  39. package/dist/shared/sender-identity.d.ts +50 -0
  40. package/dist/shared/sender-identity.js +69 -0
  41. package/dist/shared/sender-identity.js.map +1 -0
  42. package/dist/shared/with-timeout.d.ts +17 -0
  43. package/dist/shared/with-timeout.js +34 -0
  44. package/dist/shared/with-timeout.js.map +1 -0
  45. package/dist/workflow-engine/do-executor.d.ts +7 -0
  46. package/dist/workflow-engine/do-executor.js +59 -1
  47. package/dist/workflow-engine/do-executor.js.map +1 -1
  48. package/dist/workflow-engine/tasks/call-function.js +68 -1
  49. package/dist/workflow-engine/tasks/call-function.js.map +1 -1
  50. package/dist/workflow-engine/types.d.ts +26 -0
  51. package/dist/workflow-engine/types.js.map +1 -1
  52. package/dist/workflows/engine-core.js +5 -1
  53. package/dist/workflows/engine-core.js.map +1 -1
  54. package/package.json +2 -2
  55. package/src/__tests__/config.test.ts +8 -0
  56. package/src/activities/__tests__/call-validate.test.ts +137 -0
  57. package/src/activities/__tests__/classify-tool-approvals.test.ts +1 -0
  58. package/src/activities/__tests__/discover-mcp-server.test.ts +1 -0
  59. package/src/activities/__tests__/workflow-event-activities.test.ts +60 -0
  60. package/src/activities/call-transform.ts +20 -2
  61. package/src/activities/call-validate.ts +27 -2
  62. package/src/activities/discover-mcp-server.ts +7 -28
  63. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +65 -0
  64. package/src/activities/execute-cursor/__tests__/cost-guard.test.ts +64 -0
  65. package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +118 -0
  66. package/src/activities/execute-cursor/cost-guard.ts +56 -0
  67. package/src/activities/execute-cursor/index.ts +101 -15
  68. package/src/activities/execute-cursor/prompt-builder.ts +44 -0
  69. package/src/activities/execute-cursor/turn-stream.ts +61 -10
  70. package/src/activities/execute-deep-agent/__tests__/hitl-reject.test.ts +1 -0
  71. package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +1 -0
  72. package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +1 -0
  73. package/src/activities/execute-deep-agent/__tests__/index.test.ts +1 -0
  74. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +58 -0
  75. package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +1 -0
  76. package/src/activities/execute-deep-agent/prompt-builder.ts +35 -0
  77. package/src/activities/execute-deep-agent/setup.ts +4 -0
  78. package/src/activities/workflow-event-activities.ts +2 -0
  79. package/src/config.ts +23 -0
  80. package/src/runner-manager.ts +6 -1
  81. package/src/runner.ts +6 -1
  82. package/src/shared/__tests__/artifact-storage.test.ts +1 -0
  83. package/src/shared/__tests__/context-bridge.test.ts +51 -0
  84. package/src/shared/__tests__/sender-identity.test.ts +92 -0
  85. package/src/shared/__tests__/with-timeout.test.ts +45 -0
  86. package/src/shared/context-bridge.ts +51 -0
  87. package/src/shared/sender-identity.ts +85 -0
  88. package/src/shared/with-timeout.ts +39 -0
  89. package/src/workflow-engine/__tests__/do-executor.test.ts +155 -0
  90. package/src/workflow-engine/__tests__/tasks/call-function.test.ts +94 -0
  91. package/src/workflow-engine/do-executor.ts +65 -1
  92. package/src/workflow-engine/tasks/call-function.ts +84 -3
  93. package/src/workflow-engine/types.ts +27 -0
  94. package/src/workflows/__tests__/execute-serverless-workflow.test.ts +1 -0
  95. package/src/workflows/engine-core.ts +5 -1
@@ -1 +1 @@
1
- {"hash":"b3c5f5a689035f9c","builtAt":"2026-07-17T15:14:50.929Z","fileCount":251}
1
+ {"hash":"a3014a172896ae2b","builtAt":"2026-07-19T08:03:00.762Z","fileCount":255}
@@ -13,7 +13,7 @@
13
13
  * throw a non-retryable error until implemented.
14
14
  */
15
15
  import { ApplicationFailure } from "@temporalio/activity";
16
- import { evaluateExpression } from "../workflow-engine/expression.js";
16
+ import { evaluateExpression, isStrictExpr, sanitizeExpr, } from "../workflow-engine/expression.js";
17
17
  function normalizeEngine(raw) {
18
18
  return raw
19
19
  .toUpperCase()
@@ -23,11 +23,21 @@ export async function transformAction(config, taskInput) {
23
23
  if (!config.expression) {
24
24
  throw ApplicationFailure.nonRetryable("transform: 'expression' is required", "TRANSFORM_MISSING_EXPRESSION");
25
25
  }
26
+ if (typeof config.expression !== "string") {
27
+ throw ApplicationFailure.nonRetryable(`transform: 'expression' must be a jq string, got ${typeof config.expression}. ` +
28
+ "Fix the expression in the workflow's transform task_config.", "TRANSFORM_INVALID_EXPRESSION");
29
+ }
26
30
  const engine = normalizeEngine(config.engine || "JQ");
27
31
  if (engine !== "JQ") {
28
32
  throw ApplicationFailure.nonRetryable(`transform: engine '${config.engine}' is not yet supported. Only JQ is currently implemented.`, "TRANSFORM_UNSUPPORTED_ENGINE");
29
33
  }
30
34
  const data = config.input !== undefined ? config.input : taskInput;
31
- return evaluateExpression(config.expression, data, {});
35
+ // The expression arrives unresolved (deferred code — see the
36
+ // call-function builder). Accept both the strict `${ ... }` wrapper
37
+ // and the bare jq form the converter emits.
38
+ const expression = isStrictExpr(config.expression)
39
+ ? sanitizeExpr(config.expression)
40
+ : config.expression;
41
+ return evaluateExpression(expression, data, {});
32
42
  }
33
43
  //# sourceMappingURL=call-transform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"call-transform.js","sourceRoot":"","sources":["../../src/activities/call-transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAQtE,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG;SACP,WAAW,EAAE;SACb,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,SAAmB;IAEnB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,kBAAkB,CAAC,YAAY,CACnC,qCAAqC,EACrC,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IAEtD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,kBAAkB,CAAC,YAAY,CACnC,sBAAsB,MAAM,CAAC,MAAM,2DAA2D,EAC9F,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnE,OAAO,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"call-transform.js","sourceRoot":"","sources":["../../src/activities/call-transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,GACb,MAAM,kCAAkC,CAAC;AAQ1C,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG;SACP,WAAW,EAAE;SACb,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,SAAmB;IAEnB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,kBAAkB,CAAC,YAAY,CACnC,qCAAqC,EACrC,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,kBAAkB,CAAC,YAAY,CACnC,oDAAoD,OAAO,MAAM,CAAC,UAAU,IAAI;YAC9E,6DAA6D,EAC/D,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IAEtD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,kBAAkB,CAAC,YAAY,CACnC,sBAAsB,MAAM,CAAC,MAAM,2DAA2D,EAC9F,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnE,6DAA6D;IAC7D,oEAAoE;IACpE,4CAA4C;IAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;QAChD,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;IAEtB,OAAO,kBAAkB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC"}
@@ -17,7 +17,7 @@
17
17
  * as JQ expressions — a falsy result means the rule failed.
18
18
  */
19
19
  import { ApplicationFailure } from "@temporalio/activity";
20
- import { evaluateExpression } from "../workflow-engine/expression.js";
20
+ import { evaluateExpression, isStrictExpr, sanitizeExpr, } from "../workflow-engine/expression.js";
21
21
  function normalizeOnFail(raw) {
22
22
  if (!raw)
23
23
  return "RAISE";
@@ -118,7 +118,25 @@ function validateJsonSchema(data, schema) {
118
118
  async function validateRules(data, rules) {
119
119
  const errors = [];
120
120
  for (const rule of rules) {
121
- const result = await evaluateExpression(rule.expression, data, {});
121
+ // Config guard: the expression must be a jq string. Anything else is
122
+ // a workflow-definition defect (or an upstream resolution bug) — name
123
+ // the rule and what to fix instead of crashing in the jq engine.
124
+ if (typeof rule.expression !== "string" || rule.expression.length === 0) {
125
+ errors.push({
126
+ rule: rule.name,
127
+ message: `Rule '${rule.name}' has an invalid 'expression': expected a jq ` +
128
+ `predicate string, got ${typeof rule.expression}. Fix the rule in ` +
129
+ `the workflow's validate task_config.`,
130
+ });
131
+ continue;
132
+ }
133
+ // Rule expressions arrive unresolved (deferred code — see the
134
+ // call-function builder). Accept both the strict `${ ... }` wrapper
135
+ // and a bare jq predicate.
136
+ const expr = isStrictExpr(rule.expression)
137
+ ? sanitizeExpr(rule.expression)
138
+ : rule.expression;
139
+ const result = await evaluateExpression(expr, data, {});
122
140
  if (!result) {
123
141
  errors.push({
124
142
  rule: rule.name,
@@ -1 +1 @@
1
- {"version":3,"file":"call-validate.js","sourceRoot":"","sources":["../../src/activities/call-validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-validate.js","sourceRoot":"","sources":["../../src/activities/call-validate.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ import { StigmerClient } from "../client/stigmer-client.js";
24
24
  import { mcpServerToResolved } from "../shared/mcp-resolver.js";
25
25
  import { toMcpClientConfig } from "../shared/mcp-manager.js";
26
26
  import { detectOAuthChallenge } from "../shared/mcp-oauth-detect.js";
27
+ import { withTimeout } from "../shared/with-timeout.js";
27
28
  const SESSION_INIT_TIMEOUT_MS = 270_000;
28
29
  const PLATFORM_INJECTABLE_MAP = {
29
30
  STIGMER_SERVER_ADDRESS: "STIGMER_MCP_PUBLIC_ENDPOINT",
@@ -185,7 +186,11 @@ async function connectAndDiscover(slug, connectionConfig) {
185
186
  const tools = [];
186
187
  const resourceTemplates = [];
187
188
  try {
188
- await withTimeout(SESSION_INIT_TIMEOUT_MS, slug, async () => {
189
+ const timeoutMessage = `MCP server '${slug}' did not respond within ` +
190
+ `${Math.round(SESSION_INIT_TIMEOUT_MS / 1000)}s. If this server requires compilation or ` +
191
+ `package installation on first run (e.g. go run, npx), the cold ` +
192
+ `start may have exceeded the discovery timeout.`;
193
+ await withTimeout(SESSION_INIT_TIMEOUT_MS, timeoutMessage, async () => {
189
194
  await client.initializeConnections();
190
195
  const mcpClient = await client.getClient(slug);
191
196
  if (!mcpClient) {
@@ -259,25 +264,6 @@ async function classifyHttpOAuthFailure(slug, connectionConfig) {
259
264
  }
260
265
  return detectOAuthChallenge(connection.url, connection.headers, slug);
261
266
  }
262
- async function withTimeout(ms, serverSlug, fn) {
263
- return new Promise((resolve, reject) => {
264
- const timer = setTimeout(() => {
265
- reject(new Error(`MCP server '${serverSlug}' did not respond within ` +
266
- `${Math.round(ms / 1000)}s. If this server requires compilation or ` +
267
- `package installation on first run (e.g. go run, npx), the cold ` +
268
- `start may have exceeded the discovery timeout.`));
269
- }, ms);
270
- fn()
271
- .then((result) => {
272
- clearTimeout(timer);
273
- resolve(result);
274
- })
275
- .catch((err) => {
276
- clearTimeout(timer);
277
- reject(err);
278
- });
279
- });
280
- }
281
267
  // ─────────────────────────────────────────────────────────────────────────────
282
268
  // Temporal Activity Factory
283
269
  // ─────────────────────────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"discover-mcp-server.js","sourceRoot":"","sources":["../../src/activities/discover-mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover-mcp-server.js","sourceRoot":"","sources":["../../src/activities/discover-mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ExecutionConfig.max_cost_usd enforcement for the Cursor harness.
3
+ *
4
+ * The native harness enforces the cap in middleware (cost-cap.ts): tools are
5
+ * blocked at the threshold and the model gets one final tool-free round to
6
+ * summarize. Cursor's only control point is cancelling the in-flight run, so
7
+ * here the cap is a HARD stop — the shared onDelta flags the overrun when a
8
+ * turn-ended usage delta lands, and the stream loop ends the run through the
9
+ * same clean-cancel pattern the stall watchdog and first-denial stop use.
10
+ * Slightly harsher than native by construction; both harnesses terminate with
11
+ * the same honesty semantics (EXECUTION_TERMINATED, work checkpointed, the
12
+ * conversation continues on the next message — the recursion-limit precedent
13
+ * in execute-deep-agent/streaming-terminal.ts).
14
+ *
15
+ * The running figure is the usage accumulator's local pricing-table estimate
16
+ * (authoritative billing is the BiDi proxy). That is the same estimation
17
+ * basis the native cost-cap middleware uses — acceptable for a safety net.
18
+ */
19
+ /**
20
+ * Whether the per-execution cost budget has been exhausted.
21
+ *
22
+ * `maxCostUsd <= 0` means "no cap" (the proto contract: 0/unset disables the
23
+ * ceiling). The boundary is inclusive: reaching the cap exactly stops the run,
24
+ * matching the native middleware's `runningCost >= maxCostUsd` check.
25
+ */
26
+ export declare function costCapExceeded(maxCostUsd: number, estimatedCostUsd: number): boolean;
27
+ /**
28
+ * Stable prefix of the cost-limit terminal error. Mirrors the cross-repo
29
+ * pattern of TOOL_CALL_LIMIT_ERROR_PREFIX (streaming-terminal.ts): consumers
30
+ * that need to distinguish "ran out of cost budget" from other TERMINATED
31
+ * causes can match on this prefix, because AgentExecutionStatus carries no
32
+ * structured termination reason. Do not reword without checking consumers.
33
+ */
34
+ export declare const COST_LIMIT_ERROR_PREFIX = "Agent reached the cost limit";
35
+ /** The terminal `status.error` for a cost-cap stop. */
36
+ export declare function formatCostLimitError(maxCostUsd: number, estimatedCostUsd: number): string;
37
+ /**
38
+ * User-facing system message for a cost-cap stop. Parallel to the
39
+ * recursion-limit copy: honest about the limit, clear that nothing is lost.
40
+ */
41
+ export declare const COST_LIMIT_USER_COPY: string;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * ExecutionConfig.max_cost_usd enforcement for the Cursor harness.
3
+ *
4
+ * The native harness enforces the cap in middleware (cost-cap.ts): tools are
5
+ * blocked at the threshold and the model gets one final tool-free round to
6
+ * summarize. Cursor's only control point is cancelling the in-flight run, so
7
+ * here the cap is a HARD stop — the shared onDelta flags the overrun when a
8
+ * turn-ended usage delta lands, and the stream loop ends the run through the
9
+ * same clean-cancel pattern the stall watchdog and first-denial stop use.
10
+ * Slightly harsher than native by construction; both harnesses terminate with
11
+ * the same honesty semantics (EXECUTION_TERMINATED, work checkpointed, the
12
+ * conversation continues on the next message — the recursion-limit precedent
13
+ * in execute-deep-agent/streaming-terminal.ts).
14
+ *
15
+ * The running figure is the usage accumulator's local pricing-table estimate
16
+ * (authoritative billing is the BiDi proxy). That is the same estimation
17
+ * basis the native cost-cap middleware uses — acceptable for a safety net.
18
+ */
19
+ /**
20
+ * Whether the per-execution cost budget has been exhausted.
21
+ *
22
+ * `maxCostUsd <= 0` means "no cap" (the proto contract: 0/unset disables the
23
+ * ceiling). The boundary is inclusive: reaching the cap exactly stops the run,
24
+ * matching the native middleware's `runningCost >= maxCostUsd` check.
25
+ */
26
+ export function costCapExceeded(maxCostUsd, estimatedCostUsd) {
27
+ return maxCostUsd > 0 && estimatedCostUsd >= maxCostUsd;
28
+ }
29
+ /**
30
+ * Stable prefix of the cost-limit terminal error. Mirrors the cross-repo
31
+ * pattern of TOOL_CALL_LIMIT_ERROR_PREFIX (streaming-terminal.ts): consumers
32
+ * that need to distinguish "ran out of cost budget" from other TERMINATED
33
+ * causes can match on this prefix, because AgentExecutionStatus carries no
34
+ * structured termination reason. Do not reword without checking consumers.
35
+ */
36
+ export const COST_LIMIT_ERROR_PREFIX = "Agent reached the cost limit";
37
+ /** The terminal `status.error` for a cost-cap stop. */
38
+ export function formatCostLimitError(maxCostUsd, estimatedCostUsd) {
39
+ return (`${COST_LIMIT_ERROR_PREFIX} for this message ` +
40
+ `(~$${estimatedCostUsd.toFixed(4)} of the $${maxCostUsd.toFixed(2)} budget). ` +
41
+ `Send another message to continue.`);
42
+ }
43
+ /**
44
+ * User-facing system message for a cost-cap stop. Parallel to the
45
+ * recursion-limit copy: honest about the limit, clear that nothing is lost.
46
+ */
47
+ export const COST_LIMIT_USER_COPY = "The agent reached the cost limit for this message. " +
48
+ "Work completed so far has been saved. " +
49
+ "Send another message to continue where the agent left off.";
50
+ //# sourceMappingURL=cost-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-guard.js","sourceRoot":"","sources":["../../../src/activities/execute-cursor/cost-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,gBAAwB;IAC1E,OAAO,UAAU,GAAG,CAAC,IAAI,gBAAgB,IAAI,UAAU,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAEtE,uDAAuD;AACvD,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,gBAAwB;IAC/E,OAAO,CACL,GAAG,uBAAuB,oBAAoB;QAC9C,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY;QAC9E,mCAAmC,CACpC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,qDAAqD;IACrD,wCAAwC;IACxC,4DAA4D,CAAC"}
@@ -59,6 +59,18 @@ export interface BuildPromptInput {
59
59
  * .build_from_plan): both prompt paths carry the implement-plan directive.
60
60
  */
61
61
  buildFromPlan?: boolean;
62
+ /**
63
+ * Rollover context bridge from `SessionSpec.metadata` (cloud DD-013).
64
+ * Only the enhanced-prompt path consumes it — a resumed agent's native
65
+ * context IS the previous conversation, so it needs no bridge.
66
+ */
67
+ contextBridge?: string;
68
+ /**
69
+ * Channel sender identity from `SessionSpec.metadata`. Like the bridge,
70
+ * only the enhanced-prompt path consumes it — a resumed agent's native
71
+ * context already carries it from the session's first turn.
72
+ */
73
+ senderIdentity?: import("../../shared/sender-identity.js").SenderIdentity;
62
74
  }
63
75
  /**
64
76
  * Select and build the appropriate prompt based on resolution reason and
@@ -37,6 +37,8 @@ import { CursorMode } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_p
37
37
  import { determineCursorMode, isCloudMode } from "./cursor-mode.js";
38
38
  import { MessageAccumulator, cancelInProgressSubAgentProtos, collapseRedundantToolCallTwins } from "./message-translator.js";
39
39
  import { utcTimestamp, persistStatus, reportSetupProgress, slimStatus } from "../../shared/status.js";
40
+ import { readContextBridge } from "../../shared/context-bridge.js";
41
+ import { readSenderIdentity } from "../../shared/sender-identity.js";
40
42
  import { withholdSecretContentFromMessages } from "../../shared/tool-row.js";
41
43
  import { StallTimeoutError, formatStallFailure } from "../../shared/stall-watchdog.js";
42
44
  import { resolveUsableArtifactStorage, loadArtifactStorageConfig } from "../../shared/artifact-storage.js";
@@ -66,6 +68,7 @@ import { isGitWorkTree } from "../../shared/filereview/git-substrate.js";
66
68
  import { captureBaselineToLedger, buildCursorProgressSubstrate, applyCaptureDecisions, deriveCaptureMode, } from "./capture-flow.js";
67
69
  import { runTurnBoundary } from "./turn-boundary.js";
68
70
  import { consumeCursorTurnStream, makeCursorTurnOnDelta, newTurnStreamState, } from "./turn-stream.js";
71
+ import { formatCostLimitError, COST_LIMIT_USER_COPY } from "./cost-guard.js";
69
72
  import { newProgressCaptureState, } from "../../shared/filereview/progress.js";
70
73
  import { deriveExecutionFingerprintKey } from "../../shared/approval-fingerprint.js";
71
74
  import { getRunnerHitlMasterSecret } from "../../shared/fingerprint-secret.js";
@@ -84,6 +87,7 @@ import { synthesizeError, formatClassifiedError, shouldRetryWithFreshAgent } fro
84
87
  import { createAgent, createCloudAgent } from "./session-lifecycle.js";
85
88
  import { setMaxListeners } from "node:events";
86
89
  import { startHeartbeat } from "../../shared/heartbeat.js";
90
+ import { withTimeout } from "../../shared/with-timeout.js";
87
91
  import { getShutdownSignalForQueue } from "../../runner-manager.js";
88
92
  /**
89
93
  * Creates the activity functions bound to the runner config.
@@ -202,6 +206,24 @@ turnSeq) {
202
206
  // Carries model/mode/agentId out to the outer catch so a thrown CursorSdkError
203
207
  // can be classified with the same context as the run.wait() error path.
204
208
  let errorContext = { model: "default", mode: "local", agentId: "" };
209
+ // Periodic heartbeat for the ENTIRE activity, started before any phase runs.
210
+ // Setup phases make network calls (blueprint resolution, workspace clone, MCP
211
+ // backfill, Agent.create) that can stall; the scattered manual heartbeat()
212
+ // pulses between them leave every individual call uncovered. The production
213
+ // stale-proxy incident hung inside Agent.create with zero heartbeats and
214
+ // surfaced as an opaque 5-minute Temporal timeout. The label names the
215
+ // current phase so a stall is attributed in Temporal heartbeat details, and
216
+ // cancellation stays observable throughout. Safe ONLY because every SDK call
217
+ // below is itself bounded (agentResolveTimeoutMs, stall watchdog) — an
218
+ // unbounded hang under a live heartbeat would keep a dead activity alive
219
+ // forever.
220
+ let heartbeatPhase = "setup";
221
+ const taskQueue = Context.current().info.taskQueue;
222
+ const shutdownSignal = getShutdownSignalForQueue(taskQueue);
223
+ periodicHeartbeat = startHeartbeat(30_000, () => ({
224
+ phase: heartbeatPhase,
225
+ execution: executionId,
226
+ }), { shutdownSignal });
205
227
  try {
206
228
  // Phase 1: Hydrate execution from DB
207
229
  await reportSetupProgress(client, executionId, "Fetching execution");
@@ -213,6 +235,7 @@ turnSeq) {
213
235
  session = await client.getSession(sessionId);
214
236
  const blueprint = await resolveBlueprint(client, session, config.workspaceRootDir);
215
237
  // Phase 2b: Resolve execution environment (MCP server credentials)
238
+ heartbeatPhase = "resolving_environment";
216
239
  await reportSetupProgress(client, executionId, "Resolving environment");
217
240
  const { envVars, secretKeys } = await resolveExecutionEnv(client, executionId);
218
241
  heartbeat();
@@ -222,6 +245,7 @@ turnSeq) {
222
245
  // disabled the runner must provision the workspace itself, mirroring the
223
246
  // native harness. Git provisioning is idempotent across multi-turn and
224
247
  // HITL reinvocations.
248
+ heartbeatPhase = "provisioning_workspace";
225
249
  await reportSetupProgress(client, executionId, "Provisioning workspace");
226
250
  const workspaceProvision = await provisionCursorWorkspace(config, session, envVars, sessionId ?? "");
227
251
  blueprint.workspaceDirs = workspaceProvision.workspaceDirs;
@@ -472,6 +496,7 @@ turnSeq) {
472
496
  await reportSetupProgress(client, executionId, "Resolving MCP servers");
473
497
  let mcpResolution = await resolveMcpServers(client, blueprint.mergedMcpServerUsages, envVars);
474
498
  // Phase 4a: Connect backfill for undiscovered MCP servers
499
+ heartbeatPhase = "resolving_mcp_servers";
475
500
  const sessionOrg = session.metadata?.org ?? "";
476
501
  mcpResolution = await backfillMcpServersIfNeeded(client, mcpResolution, blueprint.mergedMcpServerUsages, envVars, sessionOrg, heartbeat, secretKeys);
477
502
  const mcpConfig = mcpResolution.cursorConfig;
@@ -683,7 +708,18 @@ turnSeq) {
683
708
  mcpServers: mcpConfig,
684
709
  agents: cursorSubAgents,
685
710
  };
686
- let resolution = await resolveAgent(threadId, createOptions, agentMode);
711
+ // Agent.create/Agent.resume have no timeout of their own — a degraded
712
+ // transport (dead proxy connection, stale HTTP/2 session) hangs them
713
+ // forever, which the periodic heartbeat would happily keep alive. The
714
+ // bound converts that hang into an immediate, named transport failure.
715
+ // The message carries "timed out" so the error classifier's network
716
+ // patterns mark it retryable.
717
+ heartbeatPhase = "resolving_agent";
718
+ const resolveTimeoutSeconds = Math.round(config.agentResolveTimeoutMs / 1000);
719
+ let resolution = await withTimeout(config.agentResolveTimeoutMs, () => `Cursor agent ${threadId ? "resume" : "create"} timed out after ${resolveTimeoutSeconds}s ` +
720
+ `(${config.proxyEndpoint ? `via proxy ${config.proxyEndpoint}` : "direct Cursor API connection"}). ` +
721
+ `The transport connection is likely dead. Retry the message; if this persists, ` +
722
+ `check proxy and network health.`, () => resolveAgent(threadId, createOptions, agentMode));
687
723
  console.log(`ExecuteCursor agent resolved: execution=${executionId}, ` +
688
724
  `reason=${resolution.reason}, mode=${resolution.mode}, ` +
689
725
  `agentId=${resolution.agentId}, resumed=${resolution.resumed}` +
@@ -731,6 +767,8 @@ turnSeq) {
731
767
  appliedToolCallIds,
732
768
  interactionMode,
733
769
  buildFromPlan,
770
+ contextBridge: readContextBridge(blueprint.sessionSpec.metadata),
771
+ senderIdentity: readSenderIdentity(blueprint.sessionSpec.metadata),
734
772
  });
735
773
  // Phase 10a: Inject structured output instruction for Cursor harness
736
774
  let effectivePrompt = prompt;
@@ -795,6 +833,7 @@ turnSeq) {
795
833
  // The shared onDelta only needs the usage/enricher/heartbeat/state subset,
796
834
  // and it is wired at SEND time — before the accumulator exists — so it takes
797
835
  // the narrow deps. The primary send and both retry sends reuse this object.
836
+ const maxCostUsd = spec.executionConfig?.maxCostUsd ?? 0;
798
837
  const onDeltaDeps = {
799
838
  usageAccumulator,
800
839
  deltaEnricher,
@@ -802,17 +841,12 @@ turnSeq) {
802
841
  promptEstimatedTokens,
803
842
  executionId,
804
843
  state: turnState,
844
+ maxCostUsd,
805
845
  };
806
- // Periodic heartbeat keeps Temporal informed during silent SDK operations
807
- // (e.g. long tool calls, MCP requests, model thinking). Without this,
808
- // the 2-minute heartbeat timeout can cancel the activity and mislabel
809
- // the execution as "paused by user".
810
- const taskQueue = Context.current().info.taskQueue;
811
- const shutdownSignal = getShutdownSignalForQueue(taskQueue);
812
- periodicHeartbeat = startHeartbeat(30_000, () => ({
813
- phase: "cursor_streaming",
814
- execution: executionId,
815
- }), { shutdownSignal });
846
+ // The activity-wide periodic heartbeat (started at entry) keeps Temporal
847
+ // informed during silent SDK operations (long tool calls, MCP requests,
848
+ // model thinking); relabel it for the streaming phase.
849
+ heartbeatPhase = "cursor_streaming";
816
850
  // The Cursor SDK registers abort listeners on the cancellation signal for
817
851
  // each concurrent tool call (fetch, MCP, shell). With 10+ parallel tools,
818
852
  // Node's default limit of 10 triggers MaxListenersExceededWarning. This is
@@ -904,6 +938,7 @@ turnSeq) {
904
938
  if (turnState.pauseDetected ||
905
939
  workerShutdownDetected ||
906
940
  turnState.stallDetected ||
941
+ turnState.costCapExceeded ||
907
942
  Context.current().cancellationSignal.aborted) {
908
943
  accumulator.cancelInProgressSubAgents();
909
944
  }
@@ -936,6 +971,32 @@ turnSeq) {
936
971
  console.warn(`ExecuteCursor stalled: execution=${executionId}, events=${turnState.eventCount}, error=${status.error}`);
937
972
  return { kind: "return" };
938
973
  }
974
+ // Cost cap (cost-guard.ts): onDelta flagged the overrun and the loop
975
+ // cancelled the run. EXECUTION_TERMINATED, not FAILED — the platform
976
+ // deliberately stopped the run, work is checkpointed, and the
977
+ // conversation continues on the next message (the recursion-limit
978
+ // precedent in execute-deep-agent/streaming-terminal.ts). RETURN (not
979
+ // throw): a Temporal retry would re-run the identical prompt and burn
980
+ // the same budget again.
981
+ if (turnState.costCapExceeded) {
982
+ const estimated = usageAccumulator.snapshot().estimatedCostUsd;
983
+ status.phase = ExecutionPhase.EXECUTION_TERMINATED;
984
+ status.error = formatCostLimitError(maxCostUsd, estimated);
985
+ status.completedAt = utcTimestamp();
986
+ status.messages.push(create(AgentMessageSchema, {
987
+ type: MessageType.MESSAGE_SYSTEM,
988
+ content: COST_LIMIT_USER_COPY,
989
+ timestamp: utcTimestamp(),
990
+ }));
991
+ await persist(status);
992
+ try {
993
+ resolution.agent.close();
994
+ }
995
+ catch { /* best effort */ }
996
+ console.warn(`ExecuteCursor terminated (cost cap): execution=${executionId}, ` +
997
+ `estimatedCostUsd=${estimated.toFixed(4)}, maxCostUsd=${maxCostUsd.toFixed(2)}`);
998
+ return { kind: "return" };
999
+ }
939
1000
  // Worker shutdown: the runner-manager aborted the shutdown signal. NOT a
940
1001
  // user pause. Checked via the shutdown signal directly so a retry (whose
941
1002
  // periodic heartbeat is already stopped) still classifies it correctly.
@@ -1199,6 +1260,8 @@ turnSeq) {
1199
1260
  attachmentPaths,
1200
1261
  pendingApprovals: adjudicatedApprovals,
1201
1262
  interactionMode,
1263
+ contextBridge: readContextBridge(blueprint.sessionSpec.metadata),
1264
+ senderIdentity: readSenderIdentity(blueprint.sessionSpec.metadata),
1202
1265
  });
1203
1266
  console.log(`ExecuteCursor retry with fresh agent: execution=${executionId}, ` +
1204
1267
  `newAgentId=${freshAgent.agentId}`);
@@ -1547,6 +1610,11 @@ turnSeq) {
1547
1610
  return slimStatus(status);
1548
1611
  }
1549
1612
  finally {
1613
+ // Stop the activity-wide periodic heartbeat on EVERY exit path
1614
+ // (idempotent). The epilogue and catch stop it at the pause/shutdown
1615
+ // disambiguation points; this covers early returns (e.g. the
1616
+ // pure-reconcile resume) so no orphaned timer survives the activity.
1617
+ periodicHeartbeat?.stop();
1550
1618
  // End the OTel turn span + record metrics with the final token snapshot on
1551
1619
  // EVERY exit path (idempotent). Placed here so the span covers any recovery
1552
1620
  // retry (whose tokens accrue after the primary stream) and never leaks on an
@@ -1693,7 +1761,8 @@ export function buildPrompt(input) {
1693
1761
  : userMessage;
1694
1762
  }
1695
1763
  // First execution, or a fresh agent created after a resume failure: there is
1696
- // no prior conversation to inherit, so start a new turn with full context.
1764
+ // no prior conversation to inherit, so start a new turn with full context
1765
+ // including the rollover bridge, when the session carries one.
1697
1766
  return buildEnhancedPrompt({
1698
1767
  instructions,
1699
1768
  userMessage,
@@ -1704,6 +1773,8 @@ export function buildPrompt(input) {
1704
1773
  attachmentPaths,
1705
1774
  interactionMode,
1706
1775
  buildFromPlan,
1776
+ contextBridge: input.contextBridge,
1777
+ senderIdentity: input.senderIdentity,
1707
1778
  });
1708
1779
  }
1709
1780
  // ---------------------------------------------------------------------------