@stigmer/runner 3.0.8-dev.20260613074252 → 3.0.8
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/execute-cursor/hook-script.d.ts +23 -12
- package/dist/activities/execute-cursor/hook-script.js +85 -51
- package/dist/activities/execute-cursor/hook-script.js.map +1 -1
- package/dist/activities/execute-cursor/index.js +210 -79
- package/dist/activities/execute-cursor/index.js.map +1 -1
- package/dist/activities/execute-cursor/message-translator.d.ts +35 -0
- package/dist/activities/execute-cursor/message-translator.js +114 -6
- package/dist/activities/execute-cursor/message-translator.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.d.ts +25 -0
- package/dist/activities/execute-cursor/prompt-builder.js +54 -0
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/workspace-setup.d.ts +8 -2
- package/dist/activities/execute-cursor/workspace-setup.js +62 -30
- package/dist/activities/execute-cursor/workspace-setup.js.map +1 -1
- package/dist/activities/execute-deep-agent/index.js +14 -4
- package/dist/activities/execute-deep-agent/index.js.map +1 -1
- package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +0 -1
- package/dist/activities/execute-deep-agent/status-builder-shared.js +32 -8
- package/dist/activities/execute-deep-agent/status-builder-shared.js.map +1 -1
- package/dist/activities/execute-deep-agent/status-builder.js +4 -5
- package/dist/activities/execute-deep-agent/status-builder.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming-v3.js +3 -4
- package/dist/activities/execute-deep-agent/streaming-v3.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming.d.ts +8 -0
- package/dist/activities/execute-deep-agent/streaming.js +3 -4
- package/dist/activities/execute-deep-agent/streaming.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-tracker.js +4 -5
- package/dist/activities/execute-deep-agent/subagent-tracker.js.map +1 -1
- package/dist/activities/execute-deep-agent/v3-status-builder.js +6 -5
- package/dist/activities/execute-deep-agent/v3-status-builder.js.map +1 -1
- package/dist/config.d.ts +21 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/in-flight.d.ts +35 -0
- package/dist/in-flight.js +61 -0
- package/dist/in-flight.js.map +1 -0
- package/dist/main.js +6 -3
- package/dist/main.js.map +1 -1
- package/dist/runner-manager.d.ts +2 -0
- package/dist/runner-manager.js +90 -29
- package/dist/runner-manager.js.map +1 -1
- package/dist/runner.d.ts +2 -0
- package/dist/runner.js +2 -0
- package/dist/runner.js.map +1 -1
- package/dist/shared/grpc-retry.d.ts +9 -20
- package/dist/shared/grpc-retry.js +9 -52
- package/dist/shared/grpc-retry.js.map +1 -1
- package/dist/shared/stall-watchdog.d.ts +68 -0
- package/dist/shared/stall-watchdog.js +102 -0
- package/dist/shared/stall-watchdog.js.map +1 -0
- package/dist/shared/status-offload.d.ts +84 -0
- package/dist/shared/status-offload.js +292 -0
- package/dist/shared/status-offload.js.map +1 -0
- package/dist/shared/status.d.ts +34 -3
- package/dist/shared/status.js +102 -9
- package/dist/shared/status.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/config.test.ts +8 -0
- package/src/__tests__/in-flight.test.ts +84 -0
- package/src/activities/__tests__/classify-tool-approvals.test.ts +1 -0
- package/src/activities/__tests__/discover-mcp-server.test.ts +1 -0
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +74 -0
- package/src/activities/execute-cursor/__tests__/hook-script.test.ts +90 -15
- package/src/activities/execute-cursor/__tests__/tool-result-image.test.ts +244 -0
- package/src/activities/execute-cursor/__tests__/workspace-setup.test.ts +53 -4
- package/src/activities/execute-cursor/hook-script.ts +85 -51
- package/src/activities/execute-cursor/index.ts +170 -35
- package/src/activities/execute-cursor/message-translator.ts +113 -6
- package/src/activities/execute-cursor/prompt-builder.ts +59 -0
- package/src/activities/execute-cursor/workspace-setup.ts +76 -44
- package/src/activities/execute-deep-agent/__tests__/index.test.ts +1 -0
- package/src/activities/execute-deep-agent/__tests__/status-builder-shared.test.ts +66 -0
- package/src/activities/execute-deep-agent/__tests__/status-builder.test.ts +6 -3
- package/src/activities/execute-deep-agent/__tests__/streaming-v3.test.ts +70 -0
- package/src/activities/execute-deep-agent/index.ts +16 -4
- package/src/activities/execute-deep-agent/status-builder-shared.ts +27 -5
- package/src/activities/execute-deep-agent/status-builder.ts +3 -5
- package/src/activities/execute-deep-agent/streaming-v3.ts +4 -4
- package/src/activities/execute-deep-agent/streaming.ts +13 -4
- package/src/activities/execute-deep-agent/subagent-tracker.ts +4 -5
- package/src/activities/execute-deep-agent/v3-status-builder.ts +5 -5
- package/src/config.ts +27 -0
- package/src/in-flight.ts +71 -0
- package/src/main.ts +7 -2
- package/src/runner-manager.ts +127 -33
- package/src/runner.ts +6 -0
- package/src/shared/__tests__/artifact-storage.test.ts +1 -0
- package/src/shared/__tests__/grpc-retry-extended.test.ts +6 -144
- package/src/shared/__tests__/grpc-retry.test.ts +5 -134
- package/src/shared/__tests__/stall-watchdog.test.ts +193 -0
- package/src/shared/__tests__/status-offload.test.ts +256 -0
- package/src/shared/__tests__/status.test.ts +199 -0
- package/src/shared/grpc-retry.ts +9 -72
- package/src/shared/stall-watchdog.ts +122 -0
- package/src/shared/status-offload.ts +342 -0
- package/src/shared/status.ts +142 -8
package/dist/runner-manager.js
CHANGED
|
@@ -14,9 +14,15 @@ import { join } from "node:path";
|
|
|
14
14
|
import { homedir, tmpdir } from "node:os";
|
|
15
15
|
import { createRequire } from "node:module";
|
|
16
16
|
import { NativeConnection, Worker, bundleWorkflowCode, } from "@temporalio/worker";
|
|
17
|
+
import { DEFAULT_CURSOR_STREAM_STALL_TIMEOUT_MS } from "./config.js";
|
|
17
18
|
import { resolveWorkflowSource, OTEL_WORKFLOW_INTERCEPTOR_MODULE } from "./workflow-source.js";
|
|
18
19
|
import { resolveRunnerBootstrap, refreshRunnerAccessToken } from "./bootstrap.js";
|
|
19
20
|
import { createRunnerTokenCoordinator } from "./runner-token-coordinator.js";
|
|
21
|
+
// Per-task-queue in-flight activity tracking lives in ./in-flight.ts so the
|
|
22
|
+
// activity interceptor (no manager-closure handle) and unit tests can reach it.
|
|
23
|
+
// This is what keeps a session worker alive while ExecuteCursor is running, so a
|
|
24
|
+
// view close can no longer reap the worker mid-run.
|
|
25
|
+
import { activityStartedOnQueue, activityFinishedOnQueue, inFlightCountForQueue, setQueueDrainCallback, forgetQueue, } from "./in-flight.js";
|
|
20
26
|
const SESSION_QUEUE_PREFIX = "session:";
|
|
21
27
|
const WFEXEC_QUEUE_PREFIX = "wfexec:";
|
|
22
28
|
/**
|
|
@@ -177,34 +183,82 @@ export async function createStigmerRunnerManager(options) {
|
|
|
177
183
|
const runPromise = worker.run().catch((err) => {
|
|
178
184
|
console.error(`[runner-manager] Worker for queue ${taskQueue} exited with error:`, err);
|
|
179
185
|
});
|
|
180
|
-
return { worker, runPromise, shutdownController };
|
|
186
|
+
return { worker, runPromise, shutdownController, pendingClose: false };
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Re-opening a session/execution whose teardown was deferred: cancel the
|
|
190
|
+
* pending close so the worker keeps serving the reused queue. Returns true
|
|
191
|
+
* when an existing managed worker was found (caller should not recreate one).
|
|
192
|
+
*/
|
|
193
|
+
function reuseExistingWorker(registry, id, taskQueue, kind) {
|
|
194
|
+
const existing = registry.get(id);
|
|
195
|
+
if (!existing)
|
|
196
|
+
return false;
|
|
197
|
+
if (existing.pendingClose) {
|
|
198
|
+
existing.pendingClose = false;
|
|
199
|
+
setQueueDrainCallback(taskQueue, undefined);
|
|
200
|
+
console.log(`[runner-manager] Re-opened ${kind} ${id}; cancelled deferred teardown`);
|
|
201
|
+
}
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Graceful teardown of a managed worker. Never aborts: callers only reach the
|
|
206
|
+
* actual teardown once no activity is in flight, so a plain worker.shutdown()
|
|
207
|
+
* drains the (idle) queue cleanly. The abort-before-shutdown that used to live
|
|
208
|
+
* here is what killed running activities on a view close.
|
|
209
|
+
*/
|
|
210
|
+
async function teardownManaged(registry, id, taskQueue, kind) {
|
|
211
|
+
const managed = registry.get(id);
|
|
212
|
+
if (!managed)
|
|
213
|
+
return;
|
|
214
|
+
managed.worker.shutdown();
|
|
215
|
+
await managed.runPromise;
|
|
216
|
+
registry.delete(id);
|
|
217
|
+
shutdownSignals.delete(taskQueue);
|
|
218
|
+
_shutdownSignalRegistry.delete(taskQueue);
|
|
219
|
+
forgetQueue(taskQueue);
|
|
220
|
+
console.log(`[runner-manager] Removed ${kind} ${id} (active=${registry.size})`);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Remove a managed worker, deferring teardown while activities are in flight.
|
|
224
|
+
* This is the server-side safety invariant that lets a run continue in the
|
|
225
|
+
* background after its session view closes: the worker is reaped only when the
|
|
226
|
+
* last activity finishes (or immediately if the queue is already idle).
|
|
227
|
+
*/
|
|
228
|
+
async function removeManaged(registry, id, taskQueue, kind) {
|
|
229
|
+
const managed = registry.get(id);
|
|
230
|
+
if (!managed)
|
|
231
|
+
return;
|
|
232
|
+
if (inFlightCountForQueue(taskQueue) > 0) {
|
|
233
|
+
managed.pendingClose = true;
|
|
234
|
+
setQueueDrainCallback(taskQueue, () => {
|
|
235
|
+
// Skip if a full shutdown() is already reaping every worker, so we
|
|
236
|
+
// never call worker.shutdown() twice on the same worker.
|
|
237
|
+
if (shuttingDown)
|
|
238
|
+
return;
|
|
239
|
+
void teardownManaged(registry, id, taskQueue, kind);
|
|
240
|
+
});
|
|
241
|
+
console.log(`[runner-manager] Deferring teardown of ${kind} ${id} — ` +
|
|
242
|
+
`${inFlightCountForQueue(taskQueue)} activity(ies) still in flight (runs in background)`);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
await teardownManaged(registry, id, taskQueue, kind);
|
|
181
246
|
}
|
|
182
247
|
return {
|
|
183
248
|
async addSession(sessionId) {
|
|
184
249
|
if (shuttingDown) {
|
|
185
250
|
throw new Error("RunnerManager is shutting down");
|
|
186
251
|
}
|
|
187
|
-
|
|
252
|
+
const taskQueue = SESSION_QUEUE_PREFIX + sessionId;
|
|
253
|
+
if (reuseExistingWorker(sessions, sessionId, taskQueue, "session")) {
|
|
188
254
|
return;
|
|
189
255
|
}
|
|
190
|
-
const taskQueue = SESSION_QUEUE_PREFIX + sessionId;
|
|
191
256
|
const managed = await createWorkerOnQueue(taskQueue);
|
|
192
257
|
sessions.set(sessionId, managed);
|
|
193
258
|
console.log(`[runner-manager] Added session ${sessionId} (queue=${taskQueue}, active=${sessions.size})`);
|
|
194
259
|
},
|
|
195
260
|
async removeSession(sessionId) {
|
|
196
|
-
|
|
197
|
-
if (!session) {
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
const taskQueue = SESSION_QUEUE_PREFIX + sessionId;
|
|
201
|
-
session.shutdownController.abort();
|
|
202
|
-
session.worker.shutdown();
|
|
203
|
-
await session.runPromise;
|
|
204
|
-
sessions.delete(sessionId);
|
|
205
|
-
shutdownSignals.delete(taskQueue);
|
|
206
|
-
_shutdownSignalRegistry.delete(taskQueue);
|
|
207
|
-
console.log(`[runner-manager] Removed session ${sessionId} (active=${sessions.size})`);
|
|
261
|
+
await removeManaged(sessions, sessionId, SESSION_QUEUE_PREFIX + sessionId, "session");
|
|
208
262
|
},
|
|
209
263
|
activeSessions() {
|
|
210
264
|
return Array.from(sessions.keys());
|
|
@@ -213,27 +267,16 @@ export async function createStigmerRunnerManager(options) {
|
|
|
213
267
|
if (shuttingDown) {
|
|
214
268
|
throw new Error("RunnerManager is shutting down");
|
|
215
269
|
}
|
|
216
|
-
|
|
270
|
+
const taskQueue = WFEXEC_QUEUE_PREFIX + executionId;
|
|
271
|
+
if (reuseExistingWorker(workflowExecutions, executionId, taskQueue, "workflow execution")) {
|
|
217
272
|
return;
|
|
218
273
|
}
|
|
219
|
-
const taskQueue = WFEXEC_QUEUE_PREFIX + executionId;
|
|
220
274
|
const managed = await createWorkerOnQueue(taskQueue);
|
|
221
275
|
workflowExecutions.set(executionId, managed);
|
|
222
276
|
console.log(`[runner-manager] Added workflow execution ${executionId} (queue=${taskQueue}, active=${workflowExecutions.size})`);
|
|
223
277
|
},
|
|
224
278
|
async removeWorkflowExecution(executionId) {
|
|
225
|
-
|
|
226
|
-
if (!execution) {
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
const taskQueue = WFEXEC_QUEUE_PREFIX + executionId;
|
|
230
|
-
execution.shutdownController.abort();
|
|
231
|
-
execution.worker.shutdown();
|
|
232
|
-
await execution.runPromise;
|
|
233
|
-
workflowExecutions.delete(executionId);
|
|
234
|
-
shutdownSignals.delete(taskQueue);
|
|
235
|
-
_shutdownSignalRegistry.delete(taskQueue);
|
|
236
|
-
console.log(`[runner-manager] Removed workflow execution ${executionId} (active=${workflowExecutions.size})`);
|
|
279
|
+
await removeManaged(workflowExecutions, executionId, WFEXEC_QUEUE_PREFIX + executionId, "workflow execution");
|
|
237
280
|
},
|
|
238
281
|
activeWorkflowExecutions() {
|
|
239
282
|
return Array.from(workflowExecutions.keys());
|
|
@@ -314,6 +357,7 @@ export function mapManagerOptionsToConfig(options, tokenRef) {
|
|
|
314
357
|
checkpointerType: options.checkpointerType ?? (proxyActive ? "http" : "memory"),
|
|
315
358
|
checkpointerProxyEndpoint: options.checkpointerProxyEndpoint ?? options.proxyEndpoint ?? null,
|
|
316
359
|
primaryModel: options.primaryModel ?? "gpt-4.1",
|
|
360
|
+
cursorStreamStallTimeoutMs: options.cursorStreamStallTimeoutMs ?? DEFAULT_CURSOR_STREAM_STALL_TIMEOUT_MS,
|
|
317
361
|
};
|
|
318
362
|
}
|
|
319
363
|
async function createAllActivities(config) {
|
|
@@ -370,6 +414,23 @@ async function buildInterceptorConfig() {
|
|
|
370
414
|
const activityInterceptors = [];
|
|
371
415
|
let sinks = { ...createWorkflowMetricsSinks() };
|
|
372
416
|
const workflowInterceptorModules = [];
|
|
417
|
+
// In-flight activity counter: keeps a session/wfexec worker alive while one of
|
|
418
|
+
// its activities (notably the long ExecuteCursor) is running, so a view close
|
|
419
|
+
// can no longer reap the worker mid-run. Always installed; cheap and global.
|
|
420
|
+
activityInterceptors.push((ctx) => ({
|
|
421
|
+
inbound: {
|
|
422
|
+
async execute(input, next) {
|
|
423
|
+
const taskQueue = ctx.info.taskQueue;
|
|
424
|
+
activityStartedOnQueue(taskQueue);
|
|
425
|
+
try {
|
|
426
|
+
return await next(input);
|
|
427
|
+
}
|
|
428
|
+
finally {
|
|
429
|
+
activityFinishedOnQueue(taskQueue);
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
},
|
|
433
|
+
}));
|
|
373
434
|
if (process.env.OTEL_EXPORTER_OTLP_ENDPOINT) {
|
|
374
435
|
const { OpenTelemetryActivityInboundInterceptor, makeWorkflowExporter } = await import("@temporalio/interceptors-opentelemetry");
|
|
375
436
|
const { OTLPTraceExporter } = await import("@opentelemetry/exporter-trace-otlp-grpc");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-manager.js","sourceRoot":"","sources":["../src/runner-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner-manager.js","sourceRoot":"","sources":["../src/runner-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ export interface StigmerRunnerOptions {
|
|
|
47
47
|
readonly proxyEndpoint?: string;
|
|
48
48
|
/** Default LLM model identifier. @default "gpt-4.1" */
|
|
49
49
|
readonly primaryModel?: string;
|
|
50
|
+
/** No-progress bound for the Cursor harness stream (ms). @default 180000 */
|
|
51
|
+
readonly cursorStreamStallTimeoutMs?: number;
|
|
50
52
|
/** Checkpointer type for LangGraph agent state. @default "memory" (or "http" if proxyEndpoint is set) */
|
|
51
53
|
readonly checkpointerType?: "memory" | "http";
|
|
52
54
|
/** Checkpointer proxy endpoint. Falls back to proxyEndpoint. */
|
package/dist/runner.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import { mkdirSync } from "node:fs";
|
|
15
15
|
import { join } from "node:path";
|
|
16
16
|
import { homedir, tmpdir } from "node:os";
|
|
17
|
+
import { DEFAULT_CURSOR_STREAM_STALL_TIMEOUT_MS } from "./config.js";
|
|
17
18
|
import { resolveRunnerBootstrap } from "./bootstrap.js";
|
|
18
19
|
/**
|
|
19
20
|
* Create a Stigmer runner ready to poll a Temporal task queue.
|
|
@@ -149,6 +150,7 @@ export function mapOptionsToConfig(options) {
|
|
|
149
150
|
?? options.proxyEndpoint
|
|
150
151
|
?? null,
|
|
151
152
|
primaryModel: options.primaryModel ?? "gpt-4.1",
|
|
153
|
+
cursorStreamStallTimeoutMs: options.cursorStreamStallTimeoutMs ?? DEFAULT_CURSOR_STREAM_STALL_TIMEOUT_MS,
|
|
152
154
|
};
|
|
153
155
|
}
|
|
154
156
|
/**
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* gRPC error classification for status persistence retries.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* fire-and-forget persistStatus in shared/status.ts is preserved
|
|
11
|
-
* for ExecuteCursor and non-streaming callers.
|
|
4
|
+
* Status persistence flows through a single chokepoint — `persistStatus` in
|
|
5
|
+
* status.ts — which uses these helpers to decide whether a failed
|
|
6
|
+
* `updateStatus` should back off and retry (transient transport errors) or
|
|
7
|
+
* fail fast (deterministic errors). This module is intentionally just the
|
|
8
|
+
* classification policy + its options type, kept small and separately tested;
|
|
9
|
+
* the persist loop that consumes it lives with the rest of the persist logic.
|
|
12
10
|
*/
|
|
13
|
-
import { ExecutionControlSignal } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
14
|
-
import type { AgentExecutionStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
15
|
-
import type { StigmerClient } from "../client/stigmer-client.js";
|
|
16
11
|
export interface RetryOptions {
|
|
17
12
|
/** Base delay before the first retry (ms). Default: 100. */
|
|
18
13
|
readonly baseDelayMs?: number;
|
|
@@ -23,13 +18,7 @@ export interface RetryOptions {
|
|
|
23
18
|
/** Injectable delay function for testing. */
|
|
24
19
|
readonly delayFn?: (ms: number) => Promise<void>;
|
|
25
20
|
}
|
|
21
|
+
/** True for transient transport errors that are worth retrying with backoff. */
|
|
26
22
|
export declare function isRetryableError(err: unknown): boolean;
|
|
23
|
+
/** True for deterministic errors that retrying cannot fix. */
|
|
27
24
|
export declare function isTerminalError(err: unknown): boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Persist execution status with exponential-backoff retry.
|
|
30
|
-
*
|
|
31
|
-
* Returns the ExecutionControlSignal from the server on success.
|
|
32
|
-
* On permanent or exhausted-retry failure, logs the error and
|
|
33
|
-
* returns UNSPECIFIED (never throws).
|
|
34
|
-
*/
|
|
35
|
-
export declare function persistWithRetry(client: StigmerClient, executionId: string, status: AgentExecutionStatus, options?: RetryOptions): Promise<ExecutionControlSignal>;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* gRPC error classification for status persistence retries.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* fire-and-forget persistStatus in shared/status.ts is preserved
|
|
11
|
-
* for ExecuteCursor and non-streaming callers.
|
|
4
|
+
* Status persistence flows through a single chokepoint — `persistStatus` in
|
|
5
|
+
* status.ts — which uses these helpers to decide whether a failed
|
|
6
|
+
* `updateStatus` should back off and retry (transient transport errors) or
|
|
7
|
+
* fail fast (deterministic errors). This module is intentionally just the
|
|
8
|
+
* classification policy + its options type, kept small and separately tested;
|
|
9
|
+
* the persist loop that consumes it lives with the rest of the persist logic.
|
|
12
10
|
*/
|
|
13
11
|
import { ConnectError, Code } from "@connectrpc/connect";
|
|
14
|
-
import { ExecutionControlSignal } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
15
12
|
const RETRYABLE_CODES = new Set([
|
|
16
13
|
Code.Unavailable,
|
|
17
14
|
Code.DeadlineExceeded,
|
|
@@ -21,58 +18,18 @@ const TERMINAL_CODES = new Set([
|
|
|
21
18
|
Code.NotFound,
|
|
22
19
|
Code.PermissionDenied,
|
|
23
20
|
]);
|
|
21
|
+
/** True for transient transport errors that are worth retrying with backoff. */
|
|
24
22
|
export function isRetryableError(err) {
|
|
25
23
|
if (err instanceof ConnectError) {
|
|
26
24
|
return RETRYABLE_CODES.has(err.code);
|
|
27
25
|
}
|
|
28
26
|
return false;
|
|
29
27
|
}
|
|
28
|
+
/** True for deterministic errors that retrying cannot fix. */
|
|
30
29
|
export function isTerminalError(err) {
|
|
31
30
|
if (err instanceof ConnectError) {
|
|
32
31
|
return TERMINAL_CODES.has(err.code);
|
|
33
32
|
}
|
|
34
33
|
return false;
|
|
35
34
|
}
|
|
36
|
-
function defaultDelay(ms) {
|
|
37
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Persist execution status with exponential-backoff retry.
|
|
41
|
-
*
|
|
42
|
-
* Returns the ExecutionControlSignal from the server on success.
|
|
43
|
-
* On permanent or exhausted-retry failure, logs the error and
|
|
44
|
-
* returns UNSPECIFIED (never throws).
|
|
45
|
-
*/
|
|
46
|
-
export async function persistWithRetry(client, executionId, status, options) {
|
|
47
|
-
const baseDelay = options?.baseDelayMs ?? 100;
|
|
48
|
-
const factor = options?.backoffFactor ?? 2;
|
|
49
|
-
const maxRetries = options?.maxRetries ?? 3;
|
|
50
|
-
const delay = options?.delayFn ?? defaultDelay;
|
|
51
|
-
let lastError;
|
|
52
|
-
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
53
|
-
try {
|
|
54
|
-
const response = await client.updateStatus(executionId, status);
|
|
55
|
-
return response.signal;
|
|
56
|
-
}
|
|
57
|
-
catch (err) {
|
|
58
|
-
lastError = err;
|
|
59
|
-
if (isTerminalError(err)) {
|
|
60
|
-
const code = err.code;
|
|
61
|
-
console.error(`[grpc-retry] Terminal error persisting status for ${executionId}: ` +
|
|
62
|
-
`code=${Code[code]} (attempt ${attempt + 1}/${maxRetries + 1})`);
|
|
63
|
-
return ExecutionControlSignal.UNSPECIFIED;
|
|
64
|
-
}
|
|
65
|
-
if (!isRetryableError(err) || attempt === maxRetries) {
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
const delayMs = baseDelay * Math.pow(factor, attempt);
|
|
69
|
-
console.warn(`[grpc-retry] Retryable error for ${executionId}: ` +
|
|
70
|
-
`code=${err instanceof ConnectError ? Code[err.code] : "unknown"} ` +
|
|
71
|
-
`(attempt ${attempt + 1}/${maxRetries + 1}, retry in ${delayMs}ms)`);
|
|
72
|
-
await delay(delayMs);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
console.error(`[grpc-retry] All retries exhausted for ${executionId}: ${lastError}`);
|
|
76
|
-
return ExecutionControlSignal.UNSPECIFIED;
|
|
77
|
-
}
|
|
78
35
|
//# sourceMappingURL=grpc-retry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-retry.js","sourceRoot":"","sources":["../../src/shared/grpc-retry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"grpc-retry.js","sourceRoot":"","sources":["../../src/shared/grpc-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAazD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAO;IACpC,IAAI,CAAC,WAAW;IAChB,IAAI,CAAC,gBAAgB;CACtB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAO;IACnC,IAAI,CAAC,eAAe;IACpB,IAAI,CAAC,QAAQ;IACb,IAAI,CAAC,gBAAgB;CACtB,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress-based stall watchdog.
|
|
3
|
+
*
|
|
4
|
+
* Long-running agent turns are kept alive against Temporal by a periodic
|
|
5
|
+
* keep-alive heartbeat (see {@link ./heartbeat.ts}). That heartbeat proves the
|
|
6
|
+
* runner *process* is alive, but it says nothing about whether the agent is
|
|
7
|
+
* making *progress*: a turn that wedges inside the harness stream loop (a tool
|
|
8
|
+
* call that never returns, a model connection that silently dies) keeps
|
|
9
|
+
* heartbeating forever and never times out. The execution then sits at
|
|
10
|
+
* EXECUTION_IN_PROGRESS indefinitely.
|
|
11
|
+
*
|
|
12
|
+
* This watchdog closes that gap. It is an *out-of-band* timer: callers report
|
|
13
|
+
* progress via {@link StallWatchdog.recordActivity} on every stream event AND
|
|
14
|
+
* every token delta, and the watchdog fires `onStall` once if no progress is
|
|
15
|
+
* reported for `stallMs`. "Out-of-band" is the deliberate correctness property
|
|
16
|
+
* — the check runs on its own timer rather than inside the consumer's loop, so
|
|
17
|
+
* it catches a true "no new events for N minutes" hang. An in-band check that
|
|
18
|
+
* only runs when the loop advances cannot fire while the loop is blocked
|
|
19
|
+
* awaiting the next event, which is exactly the wedge we need to detect.
|
|
20
|
+
*
|
|
21
|
+
* This module is the convergence target for stall detection across harnesses:
|
|
22
|
+
* the Cursor harness wires it here, and the native deep-agent harness has its
|
|
23
|
+
* own (harness-local, in-band) check that should later converge onto this one.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Canonical default stall window. Harnesses may override with a larger value
|
|
27
|
+
* when their tool calls routinely run longer without emitting stream activity.
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_STALL_TIMEOUT_MS = 120000;
|
|
30
|
+
/**
|
|
31
|
+
* Thrown / reported when an agent stream makes no progress for longer than the
|
|
32
|
+
* configured stall window. Carries the observed idle duration so callers can
|
|
33
|
+
* build an actionable, recognizable error message.
|
|
34
|
+
*/
|
|
35
|
+
export declare class StallTimeoutError extends Error {
|
|
36
|
+
readonly stalledMs: number;
|
|
37
|
+
constructor(stalledMs: number, detail?: string);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Recognizable prefix on every stall-induced failure message. Single source of
|
|
41
|
+
* truth so callers (and any future UI/log keying) match on one constant.
|
|
42
|
+
*/
|
|
43
|
+
export declare const STALL_ERROR_PREFIX = "[StallTimeoutError]";
|
|
44
|
+
/**
|
|
45
|
+
* Build the user-facing failure text for a stall. Keeps the canonical wording
|
|
46
|
+
* (prefix + actionable "Retry or resume.") next to the error it describes.
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatStallFailure(error: StallTimeoutError): string;
|
|
49
|
+
export interface StallWatchdog {
|
|
50
|
+
/** Reset the idle timer. Call on every stream event AND every token delta. */
|
|
51
|
+
recordActivity(): void;
|
|
52
|
+
/** Disarm the watchdog. Idempotent; safe to call in a `finally`. */
|
|
53
|
+
stop(): void;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Start an out-of-band stall watchdog.
|
|
57
|
+
*
|
|
58
|
+
* @param stallMs Idle window after which `onStall` fires.
|
|
59
|
+
* @param onStall Invoked at most once with the observed idle duration (ms)
|
|
60
|
+
* when `Date.now() - lastActivityAt` exceeds `stallMs`. The
|
|
61
|
+
* watchdog disarms itself before invoking, so `onStall` runs
|
|
62
|
+
* exactly once even if its handler is slow.
|
|
63
|
+
*
|
|
64
|
+
* The poll interval is `stallMs / 4` capped at 15s: frequent enough to detect a
|
|
65
|
+
* stall promptly without busy-looping, and bounded so a large `stallMs` still
|
|
66
|
+
* polls on a sane cadence.
|
|
67
|
+
*/
|
|
68
|
+
export declare function startStallWatchdog(stallMs: number, onStall: (idleMs: number) => void): StallWatchdog;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress-based stall watchdog.
|
|
3
|
+
*
|
|
4
|
+
* Long-running agent turns are kept alive against Temporal by a periodic
|
|
5
|
+
* keep-alive heartbeat (see {@link ./heartbeat.ts}). That heartbeat proves the
|
|
6
|
+
* runner *process* is alive, but it says nothing about whether the agent is
|
|
7
|
+
* making *progress*: a turn that wedges inside the harness stream loop (a tool
|
|
8
|
+
* call that never returns, a model connection that silently dies) keeps
|
|
9
|
+
* heartbeating forever and never times out. The execution then sits at
|
|
10
|
+
* EXECUTION_IN_PROGRESS indefinitely.
|
|
11
|
+
*
|
|
12
|
+
* This watchdog closes that gap. It is an *out-of-band* timer: callers report
|
|
13
|
+
* progress via {@link StallWatchdog.recordActivity} on every stream event AND
|
|
14
|
+
* every token delta, and the watchdog fires `onStall` once if no progress is
|
|
15
|
+
* reported for `stallMs`. "Out-of-band" is the deliberate correctness property
|
|
16
|
+
* — the check runs on its own timer rather than inside the consumer's loop, so
|
|
17
|
+
* it catches a true "no new events for N minutes" hang. An in-band check that
|
|
18
|
+
* only runs when the loop advances cannot fire while the loop is blocked
|
|
19
|
+
* awaiting the next event, which is exactly the wedge we need to detect.
|
|
20
|
+
*
|
|
21
|
+
* This module is the convergence target for stall detection across harnesses:
|
|
22
|
+
* the Cursor harness wires it here, and the native deep-agent harness has its
|
|
23
|
+
* own (harness-local, in-band) check that should later converge onto this one.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Canonical default stall window. Harnesses may override with a larger value
|
|
27
|
+
* when their tool calls routinely run longer without emitting stream activity.
|
|
28
|
+
*/
|
|
29
|
+
export const DEFAULT_STALL_TIMEOUT_MS = 120_000;
|
|
30
|
+
/**
|
|
31
|
+
* Thrown / reported when an agent stream makes no progress for longer than the
|
|
32
|
+
* configured stall window. Carries the observed idle duration so callers can
|
|
33
|
+
* build an actionable, recognizable error message.
|
|
34
|
+
*/
|
|
35
|
+
export class StallTimeoutError extends Error {
|
|
36
|
+
stalledMs;
|
|
37
|
+
constructor(stalledMs, detail) {
|
|
38
|
+
super(`Agent stream stalled: no activity for ${Math.round(stalledMs / 1000)}s` +
|
|
39
|
+
(detail ? ` (${detail})` : ""));
|
|
40
|
+
this.stalledMs = stalledMs;
|
|
41
|
+
this.name = "StallTimeoutError";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Recognizable prefix on every stall-induced failure message. Single source of
|
|
46
|
+
* truth so callers (and any future UI/log keying) match on one constant.
|
|
47
|
+
*/
|
|
48
|
+
export const STALL_ERROR_PREFIX = "[StallTimeoutError]";
|
|
49
|
+
/**
|
|
50
|
+
* Build the user-facing failure text for a stall. Keeps the canonical wording
|
|
51
|
+
* (prefix + actionable "Retry or resume.") next to the error it describes.
|
|
52
|
+
*/
|
|
53
|
+
export function formatStallFailure(error) {
|
|
54
|
+
return `${STALL_ERROR_PREFIX} ${error.message}. Retry or resume.`;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Start an out-of-band stall watchdog.
|
|
58
|
+
*
|
|
59
|
+
* @param stallMs Idle window after which `onStall` fires.
|
|
60
|
+
* @param onStall Invoked at most once with the observed idle duration (ms)
|
|
61
|
+
* when `Date.now() - lastActivityAt` exceeds `stallMs`. The
|
|
62
|
+
* watchdog disarms itself before invoking, so `onStall` runs
|
|
63
|
+
* exactly once even if its handler is slow.
|
|
64
|
+
*
|
|
65
|
+
* The poll interval is `stallMs / 4` capped at 15s: frequent enough to detect a
|
|
66
|
+
* stall promptly without busy-looping, and bounded so a large `stallMs` still
|
|
67
|
+
* polls on a sane cadence.
|
|
68
|
+
*/
|
|
69
|
+
export function startStallWatchdog(stallMs, onStall) {
|
|
70
|
+
let lastActivityAt = Date.now();
|
|
71
|
+
let fired = false;
|
|
72
|
+
let timer;
|
|
73
|
+
const tickMs = Math.min(Math.max(Math.floor(stallMs / 4), 1), 15_000);
|
|
74
|
+
const disarm = () => {
|
|
75
|
+
if (timer !== undefined) {
|
|
76
|
+
clearInterval(timer);
|
|
77
|
+
timer = undefined;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
timer = setInterval(() => {
|
|
81
|
+
if (fired)
|
|
82
|
+
return;
|
|
83
|
+
const idleMs = Date.now() - lastActivityAt;
|
|
84
|
+
if (idleMs >= stallMs) {
|
|
85
|
+
fired = true;
|
|
86
|
+
disarm();
|
|
87
|
+
onStall(idleMs);
|
|
88
|
+
}
|
|
89
|
+
}, tickMs);
|
|
90
|
+
// Do not keep the event loop alive solely for the watchdog.
|
|
91
|
+
timer.unref?.();
|
|
92
|
+
return {
|
|
93
|
+
recordActivity() {
|
|
94
|
+
lastActivityAt = Date.now();
|
|
95
|
+
},
|
|
96
|
+
stop() {
|
|
97
|
+
fired = true;
|
|
98
|
+
disarm();
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=stall-watchdog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stall-watchdog.js","sourceRoot":"","sources":["../../src/shared/stall-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAEhD;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB;IADlB,YACkB,SAAiB,EACjC,MAAe;QAEf,KAAK,CACH,yCAAyC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;YACtE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACjC,CAAC;QANc,cAAS,GAAT,SAAS,CAAQ;QAOjC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IACzD,OAAO,GAAG,kBAAkB,IAAI,KAAK,CAAC,OAAO,oBAAoB,CAAC;AACpE,CAAC;AASD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,OAAiC;IAEjC,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,KAAiD,CAAC;IAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAEtE,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QACvB,IAAI,KAAK;YAAE,OAAO;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;QAC3C,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,EAAE,MAAM,CAAC,CAAC;IACX,4DAA4D;IAC5D,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAEhB,OAAO;QACL,cAAc;YACZ,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI;YACF,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,EAAE,CAAC;QACX,CAAC;KACF,CAAC;AACJ,CAAC"}
|