@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.
- package/dist/.build-fingerprint +1 -1
- package/dist/activities/call-agent.js +85 -10
- package/dist/activities/call-agent.js.map +1 -1
- package/dist/activities/execute-cursor/index.d.ts +12 -0
- package/dist/activities/execute-cursor/index.js +80 -10
- package/dist/activities/execute-cursor/index.js.map +1 -1
- package/dist/activities/execute-cursor/model-pricing.d.ts +9 -0
- package/dist/activities/execute-cursor/model-pricing.js +19 -0
- package/dist/activities/execute-cursor/model-pricing.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.d.ts +11 -0
- package/dist/activities/execute-cursor/prompt-builder.js +11 -0
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/service-tier.d.ts +68 -0
- package/dist/activities/execute-cursor/service-tier.js +187 -0
- package/dist/activities/execute-cursor/service-tier.js.map +1 -0
- package/dist/activities/execute-cursor/session-lifecycle.d.ts +16 -1
- package/dist/activities/execute-cursor/session-lifecycle.js +12 -4
- package/dist/activities/execute-cursor/session-lifecycle.js.map +1 -1
- package/dist/activities/execute-cursor/usage-accumulator.d.ts +21 -1
- package/dist/activities/execute-cursor/usage-accumulator.js +23 -3
- package/dist/activities/execute-cursor/usage-accumulator.js.map +1 -1
- package/dist/activities/execute-deep-agent/mcp-gate.d.ts +28 -0
- package/dist/activities/execute-deep-agent/mcp-gate.js +22 -0
- package/dist/activities/execute-deep-agent/mcp-gate.js.map +1 -0
- package/dist/activities/execute-deep-agent/prompt-builder.d.ts +11 -0
- package/dist/activities/execute-deep-agent/prompt-builder.js +16 -0
- package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
- package/dist/activities/execute-deep-agent/setup.js +30 -4
- package/dist/activities/execute-deep-agent/setup.js.map +1 -1
- package/dist/client/stigmer-client.d.ts +6 -1
- package/dist/client/stigmer-client.js +5 -2
- package/dist/client/stigmer-client.js.map +1 -1
- package/dist/main.js +18 -0
- package/dist/main.js.map +1 -1
- package/dist/runner.js +48 -0
- package/dist/runner.js.map +1 -1
- package/dist/sandbox-token-renewal.d.ts +65 -0
- package/dist/sandbox-token-renewal.js +169 -0
- package/dist/sandbox-token-renewal.js.map +1 -0
- package/dist/shared/artifact-storage.d.ts +17 -3
- package/dist/shared/artifact-storage.js +22 -4
- package/dist/shared/artifact-storage.js.map +1 -1
- package/dist/shared/channel-attachment.d.ts +3 -1
- package/dist/shared/channel-attachment.js +3 -1
- package/dist/shared/channel-attachment.js.map +1 -1
- package/dist/shared/conversation-attachment.d.ts +81 -0
- package/dist/shared/conversation-attachment.js +102 -0
- package/dist/shared/conversation-attachment.js.map +1 -0
- package/dist/shared/conversation-catchup.d.ts +33 -0
- package/dist/shared/conversation-catchup.js +53 -0
- package/dist/shared/conversation-catchup.js.map +1 -0
- package/dist/workflow-engine/loader.js +99 -2
- package/dist/workflow-engine/loader.js.map +1 -1
- package/dist/workflow-engine/tasks/call-agent.d.ts +0 -2
- package/dist/workflow-engine/tasks/call-agent.js +0 -2
- package/dist/workflow-engine/tasks/call-agent.js.map +1 -1
- package/dist/workflow-engine/types.d.ts +39 -7
- package/dist/workflow-engine/types.js.map +1 -1
- package/dist/workflows/call-agent-orchestrator.d.ts +3 -2
- package/dist/workflows/call-agent-orchestrator.js +8 -2
- package/dist/workflows/call-agent-orchestrator.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/sandbox-token-renewal.test.ts +174 -0
- package/src/activities/__tests__/call-agent-contracts.test.ts +4 -4
- package/src/activities/__tests__/call-agent.test.ts +219 -4
- package/src/activities/call-agent.ts +94 -10
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +79 -0
- package/src/activities/execute-cursor/__tests__/model-pricing.test.ts +20 -0
- package/src/activities/execute-cursor/__tests__/service-tier.test.ts +170 -0
- package/src/activities/execute-cursor/__tests__/usage-accumulator.test.ts +87 -1
- package/src/activities/execute-cursor/index.ts +111 -11
- package/src/activities/execute-cursor/model-pricing.ts +23 -0
- package/src/activities/execute-cursor/prompt-builder.ts +23 -0
- package/src/activities/execute-cursor/service-tier.ts +244 -0
- package/src/activities/execute-cursor/session-lifecycle.ts +33 -5
- package/src/activities/execute-cursor/usage-accumulator.ts +35 -3
- package/src/activities/execute-deep-agent/__tests__/mcp-gate.test.ts +42 -0
- package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +39 -1
- package/src/activities/execute-deep-agent/mcp-gate.ts +37 -0
- package/src/activities/execute-deep-agent/prompt-builder.ts +22 -2
- package/src/activities/execute-deep-agent/setup.ts +40 -4
- package/src/client/stigmer-client.ts +11 -4
- package/src/main.ts +20 -0
- package/src/runner.ts +62 -0
- package/src/sandbox-token-renewal.ts +212 -0
- package/src/shared/__tests__/channel-attachment.test.ts +3 -3
- package/src/shared/__tests__/conversation-attachment.test.ts +138 -0
- package/src/shared/__tests__/conversation-catchup.test.ts +70 -0
- package/src/shared/__tests__/synthesized-attachment.test.ts +120 -0
- package/src/shared/artifact-storage.ts +32 -7
- package/src/shared/channel-attachment.ts +3 -1
- package/src/shared/conversation-attachment.ts +115 -0
- package/src/shared/conversation-catchup.ts +60 -0
- package/src/workflow-engine/__tests__/golden-execution.test.ts +8 -8
- package/src/workflow-engine/__tests__/loader.test.ts +192 -7
- package/src/workflow-engine/__tests__/tasks/call-agent.test.ts +9 -9
- package/src/workflow-engine/loader.ts +113 -2
- package/src/workflow-engine/tasks/call-agent.ts +0 -2
- package/src/workflow-engine/types.ts +40 -7
- package/src/workflows/call-agent-orchestrator.ts +8 -2
package/dist/.build-fingerprint
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"hash":"
|
|
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
|
-
|
|
50
|
-
|
|
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
|
-
"
|
|
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] = {
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
1345
|
-
|
|
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
|
|
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)
|
|
1910
|
-
//
|
|
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
|
// ---------------------------------------------------------------------------
|