@stigmer/runner 3.6.0 → 3.8.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.
Files changed (100) hide show
  1. package/dist/.build-fingerprint +1 -1
  2. package/dist/activities/call-agent.js +85 -10
  3. package/dist/activities/call-agent.js.map +1 -1
  4. package/dist/activities/execute-cursor/index.d.ts +12 -0
  5. package/dist/activities/execute-cursor/index.js +80 -10
  6. package/dist/activities/execute-cursor/index.js.map +1 -1
  7. package/dist/activities/execute-cursor/model-pricing.d.ts +9 -0
  8. package/dist/activities/execute-cursor/model-pricing.js +19 -0
  9. package/dist/activities/execute-cursor/model-pricing.js.map +1 -1
  10. package/dist/activities/execute-cursor/prompt-builder.d.ts +11 -0
  11. package/dist/activities/execute-cursor/prompt-builder.js +11 -0
  12. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
  13. package/dist/activities/execute-cursor/service-tier.d.ts +68 -0
  14. package/dist/activities/execute-cursor/service-tier.js +187 -0
  15. package/dist/activities/execute-cursor/service-tier.js.map +1 -0
  16. package/dist/activities/execute-cursor/session-lifecycle.d.ts +16 -1
  17. package/dist/activities/execute-cursor/session-lifecycle.js +12 -4
  18. package/dist/activities/execute-cursor/session-lifecycle.js.map +1 -1
  19. package/dist/activities/execute-cursor/usage-accumulator.d.ts +21 -1
  20. package/dist/activities/execute-cursor/usage-accumulator.js +23 -3
  21. package/dist/activities/execute-cursor/usage-accumulator.js.map +1 -1
  22. package/dist/activities/execute-deep-agent/mcp-gate.d.ts +28 -0
  23. package/dist/activities/execute-deep-agent/mcp-gate.js +22 -0
  24. package/dist/activities/execute-deep-agent/mcp-gate.js.map +1 -0
  25. package/dist/activities/execute-deep-agent/prompt-builder.d.ts +11 -0
  26. package/dist/activities/execute-deep-agent/prompt-builder.js +16 -0
  27. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
  28. package/dist/activities/execute-deep-agent/setup.js +30 -4
  29. package/dist/activities/execute-deep-agent/setup.js.map +1 -1
  30. package/dist/client/stigmer-client.d.ts +6 -1
  31. package/dist/client/stigmer-client.js +5 -2
  32. package/dist/client/stigmer-client.js.map +1 -1
  33. package/dist/main.js +18 -0
  34. package/dist/main.js.map +1 -1
  35. package/dist/runner.js +48 -0
  36. package/dist/runner.js.map +1 -1
  37. package/dist/sandbox-token-renewal.d.ts +65 -0
  38. package/dist/sandbox-token-renewal.js +169 -0
  39. package/dist/sandbox-token-renewal.js.map +1 -0
  40. package/dist/shared/artifact-storage.d.ts +17 -3
  41. package/dist/shared/artifact-storage.js +22 -4
  42. package/dist/shared/artifact-storage.js.map +1 -1
  43. package/dist/shared/channel-attachment.d.ts +3 -1
  44. package/dist/shared/channel-attachment.js +3 -1
  45. package/dist/shared/channel-attachment.js.map +1 -1
  46. package/dist/shared/conversation-attachment.d.ts +81 -0
  47. package/dist/shared/conversation-attachment.js +102 -0
  48. package/dist/shared/conversation-attachment.js.map +1 -0
  49. package/dist/shared/conversation-catchup.d.ts +33 -0
  50. package/dist/shared/conversation-catchup.js +53 -0
  51. package/dist/shared/conversation-catchup.js.map +1 -0
  52. package/dist/workflow-engine/loader.js +99 -2
  53. package/dist/workflow-engine/loader.js.map +1 -1
  54. package/dist/workflow-engine/tasks/call-agent.d.ts +0 -2
  55. package/dist/workflow-engine/tasks/call-agent.js +0 -2
  56. package/dist/workflow-engine/tasks/call-agent.js.map +1 -1
  57. package/dist/workflow-engine/types.d.ts +39 -7
  58. package/dist/workflow-engine/types.js.map +1 -1
  59. package/dist/workflows/call-agent-orchestrator.d.ts +3 -2
  60. package/dist/workflows/call-agent-orchestrator.js +8 -2
  61. package/dist/workflows/call-agent-orchestrator.js.map +1 -1
  62. package/package.json +2 -2
  63. package/src/__tests__/sandbox-token-renewal.test.ts +174 -0
  64. package/src/activities/__tests__/call-agent-contracts.test.ts +4 -4
  65. package/src/activities/__tests__/call-agent.test.ts +219 -4
  66. package/src/activities/call-agent.ts +94 -10
  67. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +79 -0
  68. package/src/activities/execute-cursor/__tests__/model-pricing.test.ts +20 -0
  69. package/src/activities/execute-cursor/__tests__/service-tier.test.ts +170 -0
  70. package/src/activities/execute-cursor/__tests__/usage-accumulator.test.ts +87 -1
  71. package/src/activities/execute-cursor/index.ts +111 -11
  72. package/src/activities/execute-cursor/model-pricing.ts +23 -0
  73. package/src/activities/execute-cursor/prompt-builder.ts +23 -0
  74. package/src/activities/execute-cursor/service-tier.ts +244 -0
  75. package/src/activities/execute-cursor/session-lifecycle.ts +33 -5
  76. package/src/activities/execute-cursor/usage-accumulator.ts +35 -3
  77. package/src/activities/execute-deep-agent/__tests__/mcp-gate.test.ts +42 -0
  78. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +39 -1
  79. package/src/activities/execute-deep-agent/mcp-gate.ts +37 -0
  80. package/src/activities/execute-deep-agent/prompt-builder.ts +22 -2
  81. package/src/activities/execute-deep-agent/setup.ts +40 -4
  82. package/src/client/stigmer-client.ts +11 -4
  83. package/src/main.ts +20 -0
  84. package/src/runner.ts +62 -0
  85. package/src/sandbox-token-renewal.ts +212 -0
  86. package/src/shared/__tests__/channel-attachment.test.ts +3 -3
  87. package/src/shared/__tests__/conversation-attachment.test.ts +138 -0
  88. package/src/shared/__tests__/conversation-catchup.test.ts +70 -0
  89. package/src/shared/__tests__/synthesized-attachment.test.ts +120 -0
  90. package/src/shared/artifact-storage.ts +32 -7
  91. package/src/shared/channel-attachment.ts +3 -1
  92. package/src/shared/conversation-attachment.ts +115 -0
  93. package/src/shared/conversation-catchup.ts +60 -0
  94. package/src/workflow-engine/__tests__/golden-execution.test.ts +8 -8
  95. package/src/workflow-engine/__tests__/loader.test.ts +192 -7
  96. package/src/workflow-engine/__tests__/tasks/call-agent.test.ts +9 -9
  97. package/src/workflow-engine/loader.ts +113 -2
  98. package/src/workflow-engine/tasks/call-agent.ts +0 -2
  99. package/src/workflow-engine/types.ts +40 -7
  100. package/src/workflows/call-agent-orchestrator.ts +8 -2
@@ -1 +1 @@
1
- {"hash":"ee4e31191b6346ff","builtAt":"2026-08-04T16:49:06.872Z","fileCount":269}
1
+ {"hash":"6786feeec9bc110d","builtAt":"2026-08-08T15:50:14.283Z","fileCount":274}
@@ -29,6 +29,8 @@ import { AgentExecutionSpecSchema, ExecutionConfigSchema } from "@stigmer/protos
29
29
  import { SessionSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
30
30
  import { SessionSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/spec_pb";
31
31
  import { Harness, ExecutionTarget } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
32
+ import { ServiceTier } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
33
+ import { WorkspaceEntrySchema, WorkspaceSourceSchema, GitRepoSourceSchema, } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
32
34
  import { AgentExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
33
35
  import { ExecutionValueSchema } from "@stigmer/protos/ai/stigmer/agentic/executioncontext/v1/spec_pb";
34
36
  import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
@@ -46,12 +48,13 @@ export async function callAgentAction(config, runtimeEnv, parentWorkflowId) {
46
48
  throw new Error("call:agent: 'message' resolved to empty after placeholder substitution. " +
47
49
  "The agent requires a non-empty prompt message.");
48
50
  }
49
- const orgId = resolved.org
50
- ?? runtimeEnv["__stigmer_org_id"]
51
- ?? "";
51
+ // The execution is always created in the workflow's org — the workflow
52
+ // owner pays for the run. A cross-org agent reference ("org/slug") only
53
+ // changes where the agent blueprint is looked up, never the billing org.
54
+ const orgId = runtimeEnv["__stigmer_org_id"] ?? "";
52
55
  if (!orgId) {
53
56
  throw new Error("call:agent requires an organization context. " +
54
- "Set 'org' in the task config or ensure '__stigmer_org_id' is in the workflow environment.");
57
+ "Ensure '__stigmer_org_id' is in the workflow environment.");
55
58
  }
56
59
  const appConfig = loadConfig();
57
60
  const client = new StigmerClient({
@@ -103,6 +106,7 @@ export async function callAgentAction(config, runtimeEnv, parentWorkflowId) {
103
106
  harness,
104
107
  executionTarget,
105
108
  subject: "Auto-created session",
109
+ workspaceEntries: buildWorkspaceEntries(resolved.workspace_entries),
106
110
  }),
107
111
  }));
108
112
  const sessionId = session?.metadata?.id ?? "";
@@ -124,10 +128,17 @@ export async function callAgentAction(config, runtimeEnv, parentWorkflowId) {
124
128
  if (skippedKeys.length > 0) {
125
129
  console.warn(`[CallAgent] agent declares env keys not present in workflow env: [${skippedKeys.join(",")}]`);
126
130
  }
127
- // Task-config-level env takes precedence over auto-forwarded values
131
+ // Task-config-level env takes precedence over auto-forwarded values.
132
+ // The agent's declared secret marking survives the override: a key the
133
+ // agent declares secret stays secret no matter which channel supplied
134
+ // the value, so an explicit task-level `env:` entry cannot downgrade
135
+ // redaction (issue #358 — the override used to hardcode isSecret:false).
128
136
  if (resolved.env) {
129
137
  for (const [key, value] of Object.entries(resolved.env)) {
130
- executionRuntimeEnv[key] = { value: String(value), isSecret: false };
138
+ executionRuntimeEnv[key] = {
139
+ value: String(value),
140
+ isSecret: agentEnvDecls[key]?.isSecret ?? false,
141
+ };
131
142
  }
132
143
  }
133
144
  const finalKeys = Object.keys(executionRuntimeEnv);
@@ -144,11 +155,37 @@ export async function callAgentAction(config, runtimeEnv, parentWorkflowId) {
144
155
  }
145
156
  const parentQueue = runtimeEnv["__stigmer_activity_task_queue"];
146
157
  const activityTaskQueue = parentQueue?.startsWith("wfexec:") ? parentQueue : "";
147
- const hasModel = !!resolved.config?.model;
158
+ // Honest RunConfig → ExecutionConfig mapping (issue #358): every field
159
+ // the author may set is forwarded to a field the runner enforces.
160
+ // model_name replaces the agent's default outright; max_cost_usd feeds
161
+ // the harness-generic cost guards (cost-cap middleware / cursor
162
+ // cost-guard); max_tool_rounds feeds resolveRecursionLimit (native
163
+ // harness only); service_tier feeds the cursor harness's explicit
164
+ // variant selection (issue #357). Zero/unset means "no override" and is
165
+ // omitted.
166
+ const runConfig = resolved.run_config;
167
+ const hasModel = !!runConfig?.model_name;
168
+ const hasCostCap = (runConfig?.max_cost_usd ?? 0) > 0;
169
+ const hasToolRounds = (runConfig?.max_tool_rounds ?? 0) > 0;
170
+ // Loader guarantees a canonical enum name; an unknown one here means the
171
+ // loader and this mapping drifted — fail the task, never silently drop a
172
+ // pricing directive.
173
+ const SERVICE_TIER_BY_NAME = {
174
+ SERVICE_TIER_STANDARD: ServiceTier.STANDARD,
175
+ SERVICE_TIER_FAST: ServiceTier.FAST,
176
+ };
177
+ const serviceTier = runConfig?.service_tier
178
+ ? SERVICE_TIER_BY_NAME[runConfig.service_tier]
179
+ : undefined;
180
+ if (runConfig?.service_tier && serviceTier === undefined) {
181
+ throw new Error(`call:agent run_config.service_tier '${runConfig.service_tier}' has no proto mapping`);
182
+ }
183
+ const hasServiceTier = serviceTier !== undefined;
148
184
  const hasOutputSchema = !!resolved.output?.schema;
149
185
  console.log(`[CallAgent] schema propagation diagnostic: ` +
150
186
  `hasOutputSchema=${hasOutputSchema}, ` +
151
- `hasModel=${hasModel}, ` +
187
+ `hasModel=${hasModel}, hasCostCap=${hasCostCap}, hasToolRounds=${hasToolRounds}, ` +
188
+ `hasServiceTier=${hasServiceTier}, ` +
152
189
  `configKeys=[${Object.keys(resolved).join(",")}], ` +
153
190
  `hasOutput=${resolved.output !== undefined}, ` +
154
191
  `outputKeys=${resolved.output ? JSON.stringify(Object.keys(resolved.output)) : "N/A"}, ` +
@@ -163,26 +200,64 @@ export async function callAgentAction(config, runtimeEnv, parentWorkflowId) {
163
200
  activityTaskQueue,
164
201
  runtimeEnv: runtimeEnvProto,
165
202
  });
166
- if (hasModel || hasOutputSchema) {
203
+ if (hasModel || hasCostCap || hasToolRounds || hasServiceTier || hasOutputSchema) {
167
204
  const execConfig = create(ExecutionConfigSchema, {});
168
205
  if (hasModel)
169
- execConfig.modelName = resolved.config.model;
206
+ execConfig.modelName = runConfig.model_name;
207
+ if (hasCostCap)
208
+ execConfig.maxCostUsd = runConfig.max_cost_usd;
209
+ if (hasToolRounds)
210
+ execConfig.maxToolRounds = runConfig.max_tool_rounds;
211
+ if (hasServiceTier)
212
+ execConfig.serviceTier = serviceTier;
170
213
  if (hasOutputSchema) {
171
214
  execConfig.structuredOutputSchema = resolved.output.schema;
172
215
  }
173
216
  executionSpec.executionConfig = execConfig;
174
217
  }
218
+ // Workflow provenance labels: the server's CreateExecutionContextStep
219
+ // keys the agent_call environment_refs resolution on these (the
220
+ // schedule-label lineage). The cloud edition additionally gates the
221
+ // branch on the trusted runner caller identity, so the labels are only
222
+ // load-bearing inside that trust boundary.
223
+ const labels = {};
224
+ if (wfExecId && taskName) {
225
+ labels["stigmer.ai/workflow-execution-id"] = wfExecId;
226
+ labels["stigmer.ai/workflow-task"] = taskName;
227
+ }
175
228
  await client.createAgentExecution(create(AgentExecutionSchema, {
176
229
  apiVersion: "agentic.stigmer.ai/v1",
177
230
  kind: "AgentExecution",
178
231
  metadata: create(ApiResourceMetadataSchema, {
179
232
  name: executionName,
180
233
  org: orgId,
234
+ labels,
181
235
  }),
182
236
  spec: executionSpec,
183
237
  }));
184
238
  throw new CompleteAsyncError();
185
239
  }
240
+ // buildWorkspaceEntries maps the task's git-only workspace entries onto the
241
+ // shared session WorkspaceEntry proto. Provisioning credentials are NOT the
242
+ // runner's concern here: the provisioner resolves GITHUB_TOKEN from the
243
+ // merged environment (DD-018 D-4), which the task's environment_refs feed
244
+ // via server-side resolution.
245
+ function buildWorkspaceEntries(entries) {
246
+ if (!entries || entries.length === 0)
247
+ return [];
248
+ return entries.map((entry) => create(WorkspaceEntrySchema, {
249
+ name: entry.name ?? "",
250
+ source: create(WorkspaceSourceSchema, {
251
+ source: {
252
+ case: "gitRepo",
253
+ value: create(GitRepoSourceSchema, {
254
+ url: entry.source.git_repo.url,
255
+ branch: entry.source.git_repo.branch ?? "",
256
+ }),
257
+ },
258
+ }),
259
+ }));
260
+ }
186
261
  function parseAgentReference(agentStr, defaultOrg) {
187
262
  if (agentStr.includes("/")) {
188
263
  const [org, slug] = agentStr.split("/", 2);
@@ -1 +1 @@
1
- {"version":3,"file":"call-agent.js","sourceRoot":"","sources":["../../src/activities/call-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-agent.js","sourceRoot":"","sources":["../../src/activities/call-agent.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,18 @@ export interface BuildPromptInput {
85
85
  * turn.
86
86
  */
87
87
  sessionContext?: string;
88
+ /**
89
+ * Conversation catchup from the execution spec's `conversation_catchup`
90
+ * (cloud DD-006): what happened on the channel conversation that the
91
+ * agent has not seen. PER-TURN, so unlike the three standing values
92
+ * above it rides BOTH prompt paths — the enhanced prompt and a resumed
93
+ * turn's prefix (the `interaction_mode` shape). Handback lands
94
+ * mid-session on a resumed agent: the resumed path is the one that
95
+ * matters. Once delivered, the digest persists in the agent's own
96
+ * conversation store; the next turn's field is composed fresh and is
97
+ * usually blank.
98
+ */
99
+ conversationCatchup?: string;
88
100
  }
89
101
  /**
90
102
  * Select and build the appropriate prompt based on resolution reason and
@@ -40,6 +40,7 @@ import { MessageAccumulator, cancelInProgressSubAgentProtos, collapseRedundantTo
40
40
  import { utcTimestamp, persistStatus, reportSetupProgress, slimStatus } from "../../shared/status.js";
41
41
  import { TimingRecorder, emitTimingLog } from "../../shared/cold-start-timing.js";
42
42
  import { readContextBridge } from "../../shared/context-bridge.js";
43
+ import { readConversationCatchup } from "../../shared/conversation-catchup.js";
43
44
  import { readSenderIdentity } from "../../shared/sender-identity.js";
44
45
  import { injectCallerIdentityEnv, resolveCallerIdentity, } from "../../shared/caller-identity.js";
45
46
  import { readSessionContext } from "../../shared/session-context.js";
@@ -55,6 +56,7 @@ import { resolveMcpServers, toCursorMcpConfig, validateMcpServerEnv } from "./mc
55
56
  import { resolveMcpTransportPosture } from "../../shared/mcp-transport-guard.js";
56
57
  import { synthesizeDatastoreAttachment } from "../../shared/datastore-attachment.js";
57
58
  import { discoverChannelMessaging, synthesizeChannelAttachment, } from "../../shared/channel-attachment.js";
59
+ import { readChannelConversationId, synthesizeConversationAttachment, } from "../../shared/conversation-attachment.js";
58
60
  import { injectSynthesizedAttachment } from "../../shared/synthesized-attachment.js";
59
61
  import { mergeApprovalPolicies } from "./approval-policy.js";
60
62
  import { deriveActiveLeases, isUnattendedApprovalMode } from "../../shared/approval-policy.js";
@@ -65,7 +67,7 @@ import { buildCursorSubAgentDefinitions } from "./subagent-config.js";
65
67
  import { resolveSkills } from "./skill-resolver.js";
66
68
  import { removeStigmerSymlink } from "../../shared/workspace/stigmer-link.js";
67
69
  import { resolveAttachments } from "./attachment-resolver.js";
68
- import { buildEnhancedPrompt, buildReinvocationPrompt, formatInteractionModePrefix, formatImplementPlanSection } from "./prompt-builder.js";
70
+ import { buildEnhancedPrompt, buildReinvocationPrompt, formatConversationCatchupSection, formatInteractionModePrefix, formatImplementPlanSection } from "./prompt-builder.js";
69
71
  import { installHitlGate, removeHitlGate } from "./workspace-setup.js";
70
72
  import { ensureHitlDir } from "../../shared/workspace/platform-dir.js";
71
73
  import { acquireWorkspaceLock, WorkspaceLockCancelledError, WorkspaceLockTimeoutError, } from "../../shared/workspace/workspace-lock.js";
@@ -86,6 +88,7 @@ import { statusProtoWriter } from "../../shared/execution-status-writer.js";
86
88
  import { setInterceptorExecutionId, runWithExecutionContext } from "./fetch-interceptor.js";
87
89
  import { closeProxySessions } from "./http2-interceptor.js";
88
90
  import { resolveModelId, ensureLoaded as ensurePricingLoaded } from "./model-pricing.js";
91
+ import { resolveEffectiveServiceTier, resolveServiceTierParams } from "./service-tier.js";
89
92
  import { UsageAccumulator } from "./usage-accumulator.js";
90
93
  import { StreamingUsageSummarySchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/usage_pb";
91
94
  import { activityStarted, activityFinished } from "../../idle-watchdog.js";
@@ -577,6 +580,25 @@ turnSeq) {
577
580
  };
578
581
  }
579
582
  }
583
+ // Phase 4a4: Synthesize the conversation participation attachment
584
+ // (channel-conversations DD-008 D-c) — the third sibling. The
585
+ // channel-id session label IS the attachment decision (stamped
586
+ // server-side on every channel session; a free local read, unlike
587
+ // the channels discovery RPC above). HTTP-only: synthesize answers
588
+ // undefined with no bridge endpoint by design (see
589
+ // shared/conversation-attachment.ts).
590
+ const conversationAttachment = synthesizeConversationAttachment(readChannelConversationId(session.metadata?.labels), {
591
+ bridgeEndpoint: config.mcpBridgeEndpoint,
592
+ credential: attachmentCredential,
593
+ backendEndpoint: config.stigmerBackendEndpoint,
594
+ });
595
+ if (conversationAttachment) {
596
+ const resolvedServers = injectSynthesizedAttachment(mcpResolution.resolvedServers, conversationAttachment, "conversation participation");
597
+ mcpResolution = {
598
+ resolvedServers,
599
+ cursorConfig: toCursorMcpConfig(resolvedServers),
600
+ };
601
+ }
580
602
  const mcpConfig = mcpResolution.cursorConfig;
581
603
  // Phase 4b: Merge approval policies from all layers.
582
604
  //
@@ -747,12 +769,15 @@ turnSeq) {
747
769
  // Phase 5d: Ensure model pricing registry is populated before validation
748
770
  await ensurePricingLoaded();
749
771
  setupTiming.mark("load_pricing");
750
- // Phase 6: Validate model selection
772
+ // Phase 6: Validate model selection and resolve the service tier.
773
+ // UNSPECIFIED → STANDARD resolves here and nowhere else (#357): every
774
+ // upstream layer preserves the caller's raw enum value.
751
775
  const requestedModel = spec.executionConfig?.modelName || "default";
752
776
  const validatedModel = resolveModelId(requestedModel);
753
777
  if (validatedModel !== requestedModel) {
754
778
  console.log(`ExecuteCursor model resolved: execution=${executionId}, requested="${requestedModel}", using="${validatedModel}"`);
755
779
  }
780
+ const requestedServiceTier = resolveEffectiveServiceTier(spec.executionConfig?.serviceTier);
756
781
  heartbeat();
757
782
  // Phase 7: Resolve Cursor Agent (create, resume, or graceful fallback)
758
783
  await reportSetupProgress(client, executionId, "Initializing Cursor agent");
@@ -777,10 +802,20 @@ turnSeq) {
777
802
  console.log(`ExecuteCursor registering ${Object.keys(cursorSubAgents).length} custom sub-agent(s): ` +
778
803
  `execution=${executionId}, names=${Object.keys(cursorSubAgents).join(", ")}`);
779
804
  }
805
+ // Translate the tier into the explicit variant params sent with every
806
+ // create/resume. Never a bare { id }: the catalog's default variant is
807
+ // account-influenced and picks the price (#357).
808
+ const modelParams = await resolveServiceTierParams({
809
+ apiKey: effectiveApiKey,
810
+ modelId: validatedModel,
811
+ tier: requestedServiceTier,
812
+ executionId,
813
+ });
780
814
  const createOptions = agentMode === "cloud"
781
815
  ? {
782
816
  apiKey: effectiveApiKey,
783
817
  model: validatedModel || undefined,
818
+ modelParams,
784
819
  repos: blueprint.cloudRepos,
785
820
  sessionId,
786
821
  mcpServers: mcpConfig,
@@ -789,6 +824,7 @@ turnSeq) {
789
824
  : {
790
825
  apiKey: effectiveApiKey,
791
826
  model: validatedModel,
827
+ modelParams,
792
828
  workspaceDirs: blueprint.workspaceDirs,
793
829
  sessionId,
794
830
  workspaceRootDir: config.workspaceRootDir,
@@ -888,6 +924,7 @@ turnSeq) {
888
924
  contextBridge: readContextBridge(blueprint.sessionSpec.metadata),
889
925
  senderIdentity: readSenderIdentity(blueprint.sessionSpec.metadata),
890
926
  sessionContext: readSessionContext(blueprint.sessionSpec.metadata),
927
+ conversationCatchup: readConversationCatchup(spec.conversationCatchup),
891
928
  });
892
929
  // Phase 10a: Inject structured output instruction for Cursor harness
893
930
  let effectivePrompt = prompt;
@@ -903,7 +940,7 @@ turnSeq) {
903
940
  `resolution=${resolution.reason}, mode=${resolution.mode}`);
904
941
  // Phase 10b: Initialize usage accumulator for runner-side token tracking
905
942
  await ensurePricingLoaded();
906
- const usageAccumulator = new UsageAccumulator(validatedModel);
943
+ const usageAccumulator = new UsageAccumulator(validatedModel, requestedServiceTier, modelParams);
907
944
  // Phase 10c: Start OTel turn span. Coarse-grained — spans the whole turn
908
945
  // (agent.send + stream + any recovery retry + the turn boundary), ended once
909
946
  // from the finally via finishTurnTelemetry with the final token snapshot.
@@ -1339,10 +1376,29 @@ turnSeq) {
1339
1376
  }
1340
1377
  // Phase 13: Map final result
1341
1378
  const result = await run.wait();
1342
- const sdkResolvedModel = result.model?.id || undefined;
1343
1379
  console.log(`ExecuteCursor run.wait() result: execution=${executionId}, result=${JSON.stringify(result)}`);
1344
- if (sdkResolvedModel && sdkResolvedModel !== validatedModel) {
1345
- console.log(`ExecuteCursor model divergence: execution=${executionId}, requested=${validatedModel}, sdkResolved=${sdkResolvedModel}`);
1380
+ // Echo sanity check only: result.model ECHOES the requested selection —
1381
+ // the SDK never reports the variant that actually served the call
1382
+ // (verified against the billing ledger, #357). A mismatch here means the
1383
+ // SDK rewrote our selection (contract change), not variant drift; the
1384
+ // authoritative requested-vs-billed reconciliation is the cloud billing
1385
+ // handler's pricing_variant mismatch metric.
1386
+ const echoedSelection = result.model;
1387
+ if (echoedSelection) {
1388
+ const idMatches = echoedSelection.id === validatedModel;
1389
+ // Compare id/value pairs explicitly, never serialized objects: the SDK
1390
+ // may add fields to ModelParameterValue or reorder keys, and neither
1391
+ // is contract drift.
1392
+ const echoedParams = [...(echoedSelection.params ?? [])]
1393
+ .sort((a, b) => a.id.localeCompare(b.id));
1394
+ const paramsMatch = echoedParams.length === modelParams.length &&
1395
+ echoedParams.every((p, i) => p.id === modelParams[i].id && p.value === modelParams[i].value);
1396
+ if (!idMatches || !paramsMatch) {
1397
+ console.warn(`ExecuteCursor model selection echo mismatch (SDK contract drift?): ` +
1398
+ `execution=${executionId}, ` +
1399
+ `requested=${JSON.stringify({ id: validatedModel, params: modelParams })}, ` +
1400
+ `echoed=${JSON.stringify(echoedSelection)}`);
1401
+ }
1346
1402
  }
1347
1403
  status.completedAt = utcTimestamp();
1348
1404
  switch (result.status) {
@@ -1411,9 +1467,15 @@ turnSeq) {
1411
1467
  attachmentPaths,
1412
1468
  pendingApprovals: adjudicatedApprovals,
1413
1469
  interactionMode,
1470
+ // buildFromPlan was silently dropped here until T03 Sitting 3 —
1471
+ // a build turn that hit handle recovery lost its directive. The
1472
+ // fresh prompt must carry every per-turn directive the original
1473
+ // did.
1474
+ buildFromPlan,
1414
1475
  contextBridge: readContextBridge(blueprint.sessionSpec.metadata),
1415
1476
  senderIdentity: readSenderIdentity(blueprint.sessionSpec.metadata),
1416
1477
  sessionContext: readSessionContext(blueprint.sessionSpec.metadata),
1478
+ conversationCatchup: readConversationCatchup(spec.conversationCatchup),
1417
1479
  });
1418
1480
  console.log(`ExecuteCursor retry with fresh agent: execution=${executionId}, ` +
1419
1481
  `newAgentId=${freshAgent.agentId}`);
@@ -1893,7 +1955,7 @@ import { jsonSchemaToZod } from "../../shared/json-schema-to-zod.js";
1893
1955
  * agent after resume failure skills; no prior conversation to inherit)
1894
1956
  */
1895
1957
  export function buildPrompt(input) {
1896
- const { resolution, approvalDecisions, instructions, userMessage, skills, subAgents, workspaceDirs, workspaceFileRefs, attachmentPaths, interactionMode, buildFromPlan, } = input;
1958
+ const { resolution, approvalDecisions, instructions, userMessage, skills, subAgents, workspaceDirs, workspaceFileRefs, attachmentPaths, interactionMode, buildFromPlan, conversationCatchup, } = input;
1897
1959
  const isHitlReinvocation = approvalDecisions !== undefined && approvalDecisions.size > 0;
1898
1960
  // HITL reinvocation: the agent is resumed, so its native context carries the
1899
1961
  // prior conversation; the reinvocation prompt conveys the approval decisions
@@ -1903,15 +1965,22 @@ export function buildPrompt(input) {
1903
1965
  }
1904
1966
  // A successfully resumed agent carries its own conversation context via the
1905
1967
  // SDK's native store — send the raw user message with no preamble. The
1906
- // exceptions are the per-EXECUTION directives, which never inherit from the
1968
+ // exceptions are the per-EXECUTION values, which never inherit from the
1907
1969
  // session's first turn: the interaction-mode prefix (a follow-up can switch
1908
1970
  // Agent→Plan mid-session, and for Cursor the prompt is the only plan-mode
1909
- // enforcement) and the implement-plan directive (the build turn is usually
1910
- // a follow-up on a resumed agent).
1971
+ // enforcement), the implement-plan directive (the build turn is usually a
1972
+ // follow-up on a resumed agent), and the conversation catchup (handback
1973
+ // ALWAYS lands mid-session on a resumed agent — this prefix is the property
1974
+ // the metadata lane structurally cannot deliver, cloud DD-006). Catchup
1975
+ // last: it is context, and context sits closest to the task (the enhanced
1976
+ // prompt's own ordering doctrine).
1911
1977
  if (resolution.reason === "resumed_successfully") {
1912
1978
  const prefixes = [
1913
1979
  formatInteractionModePrefix(interactionMode),
1914
1980
  formatImplementPlanSection(buildFromPlan, attachmentPaths),
1981
+ conversationCatchup !== undefined
1982
+ ? formatConversationCatchupSection(conversationCatchup)
1983
+ : undefined,
1915
1984
  ].filter((p) => p !== undefined);
1916
1985
  return prefixes.length > 0
1917
1986
  ? [...prefixes, userMessage].join("\n\n")
@@ -1935,6 +2004,7 @@ export function buildPrompt(input) {
1935
2004
  contextBridge: input.contextBridge,
1936
2005
  senderIdentity: input.senderIdentity,
1937
2006
  sessionContext: input.sessionContext,
2007
+ conversationCatchup,
1938
2008
  });
1939
2009
  }
1940
2010
  // ---------------------------------------------------------------------------