@crewx/workflow 0.3.22-rc.128 → 0.3.22-rc.129

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.
@@ -0,0 +1,38 @@
1
+ import type { RetryPolicy } from './types';
2
+ export declare const RETRY_BASE_DELAY_MS = 1000;
3
+ export declare const RETRY_DEFAULT_MAX_DELAY_MS = 30000;
4
+ export declare const RETRY_HARD_MAX_DELAY_MS = 60000;
5
+ export declare const RETRY_MAX_ATTEMPTS_CEILING = 10;
6
+ export declare const DEFAULT_RETRYABLE_CODES: readonly ["NODE_EXIT_NONZERO", "NODE_TIMEOUT", "SPAWN_FAILED"];
7
+ export declare const RETRYABLE_NODE_TYPES: readonly ["agent_task", "skill_task", "shell_task"];
8
+ export type RetryPolicyParseResult = {
9
+ ok: true;
10
+ policy: RetryPolicy | undefined;
11
+ } | {
12
+ ok: false;
13
+ path: string;
14
+ reason: string;
15
+ };
16
+ export declare function parseRetryPolicy(node: unknown): RetryPolicyParseResult;
17
+ export interface RetryDecisionRun {
18
+ status?: 'pending' | 'running' | 'retrying' | 'completed' | 'failed' | 'cancelled';
19
+ last_failure?: {
20
+ failedNode?: unknown;
21
+ attempt?: unknown;
22
+ causeCode?: unknown;
23
+ };
24
+ node_attempts?: Record<string, unknown>;
25
+ }
26
+ export interface RetryDecisionInput {
27
+ policy?: RetryPolicy;
28
+ run: RetryDecisionRun;
29
+ nodeId: string;
30
+ }
31
+ export interface RetryDecision {
32
+ retry: boolean;
33
+ reason: string;
34
+ attempt?: number;
35
+ }
36
+ export declare function decideRetry(input: RetryDecisionInput): RetryDecision;
37
+ export declare function computeRetryDelayMs(policy: RetryPolicy, attempt: number): number;
38
+ //# sourceMappingURL=retry-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-policy.d.ts","sourceRoot":"","sources":["../../src/retry-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAEZ,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AACzC,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,eAAO,MAAM,uBAAuB,gEAIe,CAAC;AAEpD,eAAO,MAAM,oBAAoB,qDAIvB,CAAC;AAmBX,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAWhD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,CA4DtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACnF,YAAY,CAAC,EAAE;QACb,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,gBAAgB,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,wBAAgB,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CA8BpE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAShF"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RETRYABLE_NODE_TYPES = exports.DEFAULT_RETRYABLE_CODES = exports.RETRY_MAX_ATTEMPTS_CEILING = exports.RETRY_HARD_MAX_DELAY_MS = exports.RETRY_DEFAULT_MAX_DELAY_MS = exports.RETRY_BASE_DELAY_MS = void 0;
4
+ exports.parseRetryPolicy = parseRetryPolicy;
5
+ exports.decideRetry = decideRetry;
6
+ exports.computeRetryDelayMs = computeRetryDelayMs;
7
+ const types_1 = require("./types");
8
+ exports.RETRY_BASE_DELAY_MS = 1000;
9
+ exports.RETRY_DEFAULT_MAX_DELAY_MS = 30000;
10
+ exports.RETRY_HARD_MAX_DELAY_MS = 60000;
11
+ exports.RETRY_MAX_ATTEMPTS_CEILING = 10;
12
+ exports.DEFAULT_RETRYABLE_CODES = [
13
+ 'NODE_EXIT_NONZERO',
14
+ 'NODE_TIMEOUT',
15
+ 'SPAWN_FAILED',
16
+ ];
17
+ exports.RETRYABLE_NODE_TYPES = [
18
+ 'agent_task',
19
+ 'skill_task',
20
+ 'shell_task',
21
+ ];
22
+ const FAILURE_CODES = new Set([
23
+ 'CLI_UNRESOLVABLE',
24
+ 'SPAWN_FAILED',
25
+ 'NODE_TIMEOUT',
26
+ 'NODE_EXIT_NONZERO',
27
+ 'OUTPUT_INVALID',
28
+ 'RATE_LIMITED',
29
+ 'CONFIG_INVALID',
30
+ 'INTERRUPTED',
31
+ 'CANCELLED',
32
+ 'UNKNOWN',
33
+ ]);
34
+ function isRecord(value) {
35
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
36
+ }
37
+ function invalid(path, reason) {
38
+ return { ok: false, path, reason };
39
+ }
40
+ function parseRetryPolicy(node) {
41
+ if (!isRecord(node))
42
+ return invalid('retry', 'node must be an object');
43
+ const rawRetry = node.retry;
44
+ if (rawRetry === undefined)
45
+ return { ok: true, policy: undefined };
46
+ if (!isRecord(rawRetry))
47
+ return invalid('retry', 'retry must be an object');
48
+ const nodeType = node.type;
49
+ if (typeof nodeType !== 'string'
50
+ || !exports.RETRYABLE_NODE_TYPES.includes(nodeType)) {
51
+ return invalid('retry', 'retry is only supported on agent_task, skill_task, and shell_task nodes');
52
+ }
53
+ const max = rawRetry.max;
54
+ if (typeof max !== 'number' || !Number.isFinite(max)) {
55
+ return invalid('retry.max', 'retry.max must be a finite number');
56
+ }
57
+ if (!Number.isInteger(max))
58
+ return invalid('retry.max', 'retry.max must be an integer');
59
+ if (max < 0 || max > exports.RETRY_MAX_ATTEMPTS_CEILING) {
60
+ return invalid('retry.max', `retry.max must be between 0 and ${exports.RETRY_MAX_ATTEMPTS_CEILING}`);
61
+ }
62
+ const delay = rawRetry.delay;
63
+ if (delay !== 'fixed' && delay !== 'exponential') {
64
+ return invalid('retry.delay', 'retry.delay must be "fixed" or "exponential"');
65
+ }
66
+ let maxDelay = exports.RETRY_DEFAULT_MAX_DELAY_MS;
67
+ if (rawRetry.max_delay !== undefined) {
68
+ if (typeof rawRetry.max_delay !== 'number' || !Number.isFinite(rawRetry.max_delay)) {
69
+ return invalid('retry.max_delay', 'retry.max_delay must be a finite number');
70
+ }
71
+ if (!Number.isInteger(rawRetry.max_delay) || rawRetry.max_delay < 0) {
72
+ return invalid('retry.max_delay', 'retry.max_delay must be a non-negative integer');
73
+ }
74
+ maxDelay = rawRetry.max_delay;
75
+ }
76
+ let on = [...exports.DEFAULT_RETRYABLE_CODES];
77
+ if (rawRetry.on !== undefined) {
78
+ if (!Array.isArray(rawRetry.on))
79
+ return invalid('retry.on', 'retry.on must be an array');
80
+ on = [];
81
+ for (const [index, candidate] of rawRetry.on.entries()) {
82
+ if (typeof candidate !== 'string' || !FAILURE_CODES.has(candidate)) {
83
+ return invalid(`retry.on[${index}]`, `retry.on[${index}] is not a supported workflow failure code`);
84
+ }
85
+ const code = candidate;
86
+ if (types_1.NEVER_RETRYABLE.includes(code)) {
87
+ return invalid(`retry.on[${index}]`, `${code} cannot be retried`);
88
+ }
89
+ on.push(code);
90
+ }
91
+ }
92
+ return {
93
+ ok: true,
94
+ policy: { max, delay, max_delay: maxDelay, on },
95
+ };
96
+ }
97
+ function declined(reason) {
98
+ return { retry: false, reason };
99
+ }
100
+ function decideRetry(input) {
101
+ const { policy, run, nodeId } = input;
102
+ if (!policy)
103
+ return declined('retry policy is not configured');
104
+ if (run.status !== 'failed')
105
+ return declined('run is not failed');
106
+ const failure = run.last_failure;
107
+ if (!failure || failure.failedNode !== nodeId)
108
+ return declined('latest failure is not for this node');
109
+ const attempt = failure.attempt;
110
+ const storedAttempt = run.node_attempts?.[nodeId];
111
+ if (typeof attempt !== 'number'
112
+ || !Number.isInteger(attempt)
113
+ || attempt <= 0
114
+ || storedAttempt !== attempt) {
115
+ return declined('latest attempt is stale');
116
+ }
117
+ const causeCode = failure.causeCode;
118
+ if (typeof causeCode !== 'string')
119
+ return declined('latest failure has no supported cause');
120
+ if (types_1.NEVER_RETRYABLE.includes(causeCode)) {
121
+ return declined('latest failure is never retryable');
122
+ }
123
+ if (!policy.on.includes(causeCode)) {
124
+ return declined('latest failure is outside the retry policy');
125
+ }
126
+ if (attempt >= policy.max + 1)
127
+ return declined('retry budget is exhausted');
128
+ return { retry: true, reason: 'retry policy matched', attempt };
129
+ }
130
+ function computeRetryDelayMs(policy, attempt) {
131
+ const safeAttempt = Number.isInteger(attempt) && attempt > 0 ? attempt : 1;
132
+ const base = policy.delay === 'exponential'
133
+ ? exports.RETRY_BASE_DELAY_MS * (2 ** (safeAttempt - 1))
134
+ : exports.RETRY_BASE_DELAY_MS;
135
+ const configuredCap = typeof policy.max_delay === 'number' && Number.isFinite(policy.max_delay)
136
+ ? Math.max(0, policy.max_delay)
137
+ : exports.RETRY_DEFAULT_MAX_DELAY_MS;
138
+ return Math.min(base, configuredCap, exports.RETRY_HARD_MAX_DELAY_MS);
139
+ }
140
+ //# sourceMappingURL=retry-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-policy.js","sourceRoot":"","sources":["../../src/retry-policy.ts"],"names":[],"mappings":";;;AAqDA,4CA4DC;AA6BD,kCA8BC;AAGD,kDASC;AApLD,mCAA0C;AAE7B,QAAA,mBAAmB,GAAG,IAAK,CAAC;AAC5B,QAAA,0BAA0B,GAAG,KAAM,CAAC;AACpC,QAAA,uBAAuB,GAAG,KAAM,CAAC;AACjC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAEhC,QAAA,uBAAuB,GAAG;IACrC,mBAAmB;IACnB,cAAc;IACd,cAAc;CACmC,CAAC;AAEvC,QAAA,oBAAoB,GAAG;IAClC,YAAY;IACZ,YAAY;IACZ,YAAY;CACJ,CAAC;AAEX,MAAM,aAAa,GAAG,IAAI,GAAG,CAAsB;IACjD,kBAAkB;IAClB,cAAc;IACd,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAUH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,MAAc;IAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC;AAGD,SAAgB,gBAAgB,CAAC,IAAa;IAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;IAC5B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACnE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,IACE,OAAO,QAAQ,KAAK,QAAQ;WACzB,CAAE,4BAA0C,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAClE,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,yEAAyE,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;IACxF,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,kCAA0B,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC,WAAW,EAAE,mCAAmC,kCAA0B,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7B,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC,aAAa,EAAE,8CAA8C,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,QAAQ,GAAG,kCAA0B,CAAC;IAC1C,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnF,OAAO,OAAO,CAAC,iBAAiB,EAAE,yCAAyC,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,OAAO,CAAC,iBAAiB,EAAE,gDAAgD,CAAC,CAAC;QACtF,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,EAAE,GAA0B,CAAC,GAAG,+BAAuB,CAAC,CAAC;IAC7D,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,OAAO,OAAO,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;QACzF,EAAE,GAAG,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAgC,CAAC,EAAE,CAAC;gBAC1F,OAAO,OAAO,CAAC,YAAY,KAAK,GAAG,EAAE,YAAY,KAAK,4CAA4C,CAAC,CAAC;YACtG,CAAC;YACD,MAAM,IAAI,GAAG,SAAgC,CAAC;YAC9C,IAAI,uBAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,OAAO,OAAO,CAAC,YAAY,KAAK,GAAG,EAAE,GAAG,IAAI,oBAAoB,CAAC,CAAC;YACpE,CAAC;YACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;KAChD,CAAC;AACJ,CAAC;AAwBD,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAGD,SAAgB,WAAW,CAAC,KAAyB;IACnD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC,gCAAgC,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,qCAAqC,CAAC,CAAC;IAEtG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;IAClD,IACE,OAAO,OAAO,KAAK,QAAQ;WACxB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;WAC1B,OAAO,IAAI,CAAC;WACZ,aAAa,KAAK,OAAO,EAC5B,CAAC;QACD,OAAO,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,uCAAuC,CAAC,CAAC;IAC5F,IAAI,uBAAe,CAAC,QAAQ,CAAC,SAAgC,CAAC,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAgC,CAAC,EAAE,CAAC;QAC1D,OAAO,QAAQ,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAE5E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC;AAClE,CAAC;AAGD,SAAgB,mBAAmB,CAAC,MAAmB,EAAE,OAAe;IACtE,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,KAAK,aAAa;QACzC,CAAC,CAAC,2BAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,2BAAmB,CAAC;IACxB,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7F,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;QAC/B,CAAC,CAAC,kCAA0B,CAAC;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,+BAAuB,CAAC,CAAC;AAChE,CAAC"}
@@ -3,28 +3,36 @@ export { FileLock } from './file-lock';
3
3
  export declare const SKILL_TASK_DEFAULT_TIMEOUT = 600000;
4
4
  export declare const WORKFLOW_RUN_INTERRUPTED_ERROR = "Workflow run interrupted: runner process exited before completion";
5
5
  export declare const WORKFLOW_RUN_LEGACY_RECOVERY_GRACE_MS: number;
6
+ interface RunManagerDependencies {
7
+ sleep?: (ms: number) => Promise<void>;
8
+ }
6
9
  export declare function parseSetArgs(args: string[]): Record<string, unknown>;
7
10
  export declare function readStdin(): Promise<string>;
8
11
  export declare function interpolateTemplate(template: string, state: Record<string, unknown>): string;
9
12
  export declare function safeEvaluate(expr: string, state: Record<string, unknown>): unknown;
10
13
  export declare function safeEvaluateBranchCondition(expr: string, state: Record<string, unknown>): unknown;
11
14
  export declare function validateSafeBranchCondition(expr: string): void;
15
+ export declare function normalizeRunStatus(run: RunExecution, nowMs?: number): RunExecution;
12
16
  export declare function isRetryableFailure(run: RunExecution, spec: WorkflowSpec): boolean;
13
17
  export declare class RunManager {
14
18
  private runsDir;
15
19
  private readonly resolvedDir;
16
20
  private readonly projectRoot;
17
- constructor(runsDir?: string, projectRoot?: string);
21
+ private readonly sleep;
22
+ constructor(runsDir?: string, projectRoot?: string, deps?: RunManagerDependencies);
18
23
  ensureRunsDir(): void;
19
24
  private validateExecId;
25
+ private readRunRaw;
20
26
  private readRun;
21
- private isLegacyRetryStale;
27
+ private isLegacyStatuslessStale;
22
28
  private hasStaleRunner;
23
29
  private recoverStaleRunner;
24
30
  loadRun(execId: string): RunExecution | null;
25
31
  saveRun(run: RunExecution): void;
26
32
  atomicUpdate(execId: string, updater: (run: RunExecution) => void): RunExecution;
27
33
  atomicUpdateAsync(execId: string, updater: (run: RunExecution) => void): Promise<RunExecution>;
34
+ private reserveNodeAttempt;
35
+ private clearNodeAttempt;
28
36
  private loadWorkflowYaml;
29
37
  getNodeType(workflowFile: string, workflowId: string, nodeId: string): string | null;
30
38
  start(yamlPath: string, workflowId?: string, overrides?: Record<string, unknown>): RunExecution;
@@ -37,6 +45,10 @@ export declare class RunManager {
37
45
  }): Promise<RunExecution>;
38
46
  private claimAutoRunLease;
39
47
  private releaseAutoRunLease;
48
+ private failAutoConfiguration;
49
+ private reserveAutoRetry;
50
+ private waitForRetry;
51
+ private runNodeWithRetry;
40
52
  runAuto(execId: string): Promise<AutoRunResult>;
41
53
  cancelRun(execId: string, reason?: string): RunExecution;
42
54
  reset(execId: string): RunExecution;
@@ -1 +1 @@
1
- {"version":3,"file":"run-manager.d.ts","sourceRoot":"","sources":["../../src/run-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-manager.d.ts","sourceRoot":"","sources":["../../src/run-manager.ts"],"names":[],"mappings":"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"}