@blokjs/runner 0.2.2 → 0.4.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/Configuration.d.ts +18 -0
- package/dist/Configuration.js +151 -4
- package/dist/Configuration.js.map +1 -1
- package/dist/PayloadTooLargeError.d.ts +19 -0
- package/dist/PayloadTooLargeError.js +29 -0
- package/dist/PayloadTooLargeError.js.map +1 -0
- package/dist/RunCancelledError.d.ts +17 -0
- package/dist/RunCancelledError.js +25 -0
- package/dist/RunCancelledError.js.map +1 -0
- package/dist/RunnerSteps.js +330 -33
- package/dist/RunnerSteps.js.map +1 -1
- package/dist/SubworkflowNode.d.ts +75 -0
- package/dist/SubworkflowNode.js +221 -0
- package/dist/SubworkflowNode.js.map +1 -0
- package/dist/TriggerBase.d.ts +128 -0
- package/dist/TriggerBase.js +773 -4
- package/dist/TriggerBase.js.map +1 -1
- package/dist/WaitDispatchRequest.d.ts +38 -0
- package/dist/WaitDispatchRequest.js +13 -0
- package/dist/WaitDispatchRequest.js.map +1 -0
- package/dist/WaitNode.d.ts +23 -0
- package/dist/WaitNode.js +26 -0
- package/dist/WaitNode.js.map +1 -0
- package/dist/concurrency/ConcurrencyBackend.d.ts +61 -0
- package/dist/concurrency/ConcurrencyBackend.js +20 -0
- package/dist/concurrency/ConcurrencyBackend.js.map +1 -0
- package/dist/concurrency/ConcurrencyLimitError.d.ts +37 -0
- package/dist/concurrency/ConcurrencyLimitError.js +16 -0
- package/dist/concurrency/ConcurrencyLimitError.js.map +1 -0
- package/dist/concurrency/NatsKvConcurrencyBackend.d.ts +64 -0
- package/dist/concurrency/NatsKvConcurrencyBackend.js +297 -0
- package/dist/concurrency/NatsKvConcurrencyBackend.js.map +1 -0
- package/dist/concurrency/QueueExpiredError.d.ts +40 -0
- package/dist/concurrency/QueueExpiredError.js +15 -0
- package/dist/concurrency/QueueExpiredError.js.map +1 -0
- package/dist/concurrency/createConcurrencyBackend.d.ts +23 -0
- package/dist/concurrency/createConcurrencyBackend.js +34 -0
- package/dist/concurrency/createConcurrencyBackend.js.map +1 -0
- package/dist/concurrency/readConcurrencyConfig.d.ts +60 -0
- package/dist/concurrency/readConcurrencyConfig.js +60 -0
- package/dist/concurrency/readConcurrencyConfig.js.map +1 -0
- package/dist/idempotency/resolveIdempotencyKey.d.ts +20 -0
- package/dist/idempotency/resolveIdempotencyKey.js +37 -0
- package/dist/idempotency/resolveIdempotencyKey.js.map +1 -0
- package/dist/index.d.ts +23 -3
- package/dist/index.js +47 -2
- package/dist/index.js.map +1 -1
- package/dist/monitoring/ConcurrencyMetrics.d.ts +56 -0
- package/dist/monitoring/ConcurrencyMetrics.js +107 -0
- package/dist/monitoring/ConcurrencyMetrics.js.map +1 -0
- package/dist/monitoring/JanitorMetrics.d.ts +27 -0
- package/dist/monitoring/JanitorMetrics.js +48 -0
- package/dist/monitoring/JanitorMetrics.js.map +1 -0
- package/dist/scheduling/DebounceCoordinator.d.ts +88 -0
- package/dist/scheduling/DebounceCoordinator.js +141 -0
- package/dist/scheduling/DebounceCoordinator.js.map +1 -0
- package/dist/scheduling/DeferredDispatchSignal.d.ts +50 -0
- package/dist/scheduling/DeferredDispatchSignal.js +14 -0
- package/dist/scheduling/DeferredDispatchSignal.js.map +1 -0
- package/dist/scheduling/DeferredRunScheduler.d.ts +68 -0
- package/dist/scheduling/DeferredRunScheduler.js +154 -0
- package/dist/scheduling/DeferredRunScheduler.js.map +1 -0
- package/dist/scheduling/readSchedulingConfig.d.ts +24 -0
- package/dist/scheduling/readSchedulingConfig.js +52 -0
- package/dist/scheduling/readSchedulingConfig.js.map +1 -0
- package/dist/timeouts/StepTimeoutError.d.ts +22 -0
- package/dist/timeouts/StepTimeoutError.js +31 -0
- package/dist/timeouts/StepTimeoutError.js.map +1 -0
- package/dist/tracing/InMemoryRunStore.d.ts +28 -1
- package/dist/tracing/InMemoryRunStore.js +150 -0
- package/dist/tracing/InMemoryRunStore.js.map +1 -1
- package/dist/tracing/Janitor.d.ts +70 -0
- package/dist/tracing/Janitor.js +150 -0
- package/dist/tracing/Janitor.js.map +1 -0
- package/dist/tracing/PostgresRunStore.d.ts +30 -0
- package/dist/tracing/PostgresRunStore.js +435 -3
- package/dist/tracing/PostgresRunStore.js.map +1 -1
- package/dist/tracing/RunStore.d.ts +100 -1
- package/dist/tracing/RunTracker.d.ts +238 -9
- package/dist/tracing/RunTracker.js +571 -1
- package/dist/tracing/RunTracker.js.map +1 -1
- package/dist/tracing/SqliteRunStore.d.ts +23 -1
- package/dist/tracing/SqliteRunStore.js +405 -6
- package/dist/tracing/SqliteRunStore.js.map +1 -1
- package/dist/tracing/TraceRouter.d.ts +20 -2
- package/dist/tracing/TraceRouter.js +249 -5
- package/dist/tracing/TraceRouter.js.map +1 -1
- package/dist/tracing/sanitize.d.ts +11 -0
- package/dist/tracing/sanitize.js +29 -0
- package/dist/tracing/sanitize.js.map +1 -1
- package/dist/tracing/types.d.ts +348 -2
- package/dist/utils/createChildContext.d.ts +32 -0
- package/dist/utils/createChildContext.js +113 -0
- package/dist/utils/createChildContext.js.map +1 -0
- package/dist/workflow/WorkflowNormalizer.d.ts +29 -41
- package/dist/workflow/WorkflowNormalizer.js +182 -0
- package/dist/workflow/WorkflowNormalizer.js.map +1 -1
- package/dist/workflow/WorkflowRegistry.d.ts +64 -0
- package/dist/workflow/WorkflowRegistry.js +81 -0
- package/dist/workflow/WorkflowRegistry.js.map +1 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunTracker.js","sourceRoot":"","sources":["../../src/tracing/RunTracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RunTracker.js","sourceRoot":"","sources":["../../src/tracing/RunTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RunStore } from "./RunStore";
|
|
2
|
-
import type { Dashboard, MetricsResult, NodeRun, RunEvent, RunQuery, TraceLogEntry, WorkflowRun, WorkflowSummary } from "./types";
|
|
2
|
+
import type { CachedStepResult, ConcurrencySlotResult, Dashboard, MetricsResult, NodeRun, RunEvent, RunQuery, ScheduledDispatchRow, TraceLogEntry, WorkflowRun, WorkflowSummary } from "./types";
|
|
3
3
|
/**
|
|
4
4
|
* SQLite-backed RunStore supporting both bun:sqlite and better-sqlite3.
|
|
5
5
|
*
|
|
@@ -30,6 +30,7 @@ export declare class SqliteRunStore implements RunStore {
|
|
|
30
30
|
};
|
|
31
31
|
getNodeRuns(runId: string): NodeRun[];
|
|
32
32
|
getNodeRun(nodeRunId: string): NodeRun | undefined;
|
|
33
|
+
getRunsByParent(parentRunId: string): WorkflowRun[];
|
|
33
34
|
getEvents(runId: string, since?: number): RunEvent[];
|
|
34
35
|
getLogs(runId: string, nodeId?: string): TraceLogEntry[];
|
|
35
36
|
getWorkflowSummaries(): WorkflowSummary[];
|
|
@@ -42,6 +43,27 @@ export declare class SqliteRunStore implements RunStore {
|
|
|
42
43
|
deleteDashboard(dashboardId: string): boolean;
|
|
43
44
|
updateDashboard(dashboardId: string, updates: Partial<Dashboard>): void;
|
|
44
45
|
clearAll(): number;
|
|
46
|
+
getIdempotencyCache(workflowName: string, stepId: string, key: string): CachedStepResult | null;
|
|
47
|
+
setIdempotencyCache(workflowName: string, stepId: string, key: string, entry: CachedStepResult): void;
|
|
48
|
+
purgeExpiredIdempotencyCache(now: number): number;
|
|
49
|
+
acquireConcurrencySlot(workflowName: string, concurrencyKey: string, concurrencyLimit: number, runId: string, leaseExpiresAt: number): ConcurrencySlotResult;
|
|
50
|
+
releaseConcurrencySlot(workflowName: string, concurrencyKey: string, runId: string): void;
|
|
51
|
+
purgeExpiredConcurrencySlots(now: number): number;
|
|
52
|
+
getConcurrencySnapshot(now: number): Array<{
|
|
53
|
+
workflowName: string;
|
|
54
|
+
concurrencyKey: string;
|
|
55
|
+
leases: Array<{
|
|
56
|
+
runId: string;
|
|
57
|
+
expiresAt: number;
|
|
58
|
+
}>;
|
|
59
|
+
}>;
|
|
60
|
+
upsertScheduledDispatch(row: ScheduledDispatchRow): void;
|
|
61
|
+
deleteScheduledDispatch(runId: string): boolean;
|
|
62
|
+
getScheduledDispatches(opts?: {
|
|
63
|
+
triggerType?: string;
|
|
64
|
+
status?: string;
|
|
65
|
+
}): ScheduledDispatchRow[];
|
|
66
|
+
purgeExpiredScheduledDispatches(now: number): number;
|
|
45
67
|
deleteRunsBefore(timestamp: number): number;
|
|
46
68
|
evictOldRuns(maxRuns: number): void;
|
|
47
69
|
close(): void;
|
|
@@ -159,6 +159,179 @@ export class SqliteRunStore {
|
|
|
159
159
|
CREATE INDEX IF NOT EXISTS idx_runs_environment ON workflow_runs(environment);
|
|
160
160
|
`,
|
|
161
161
|
},
|
|
162
|
+
{
|
|
163
|
+
// Tier 1 · idempotency caching. Adds:
|
|
164
|
+
// - `node_runs.cached_json` for cache-hit lineage on a node
|
|
165
|
+
// that short-circuited rather than ran.
|
|
166
|
+
// - `idempotency_cache` table for the cache backend keyed
|
|
167
|
+
// on (workflow_name, step_id, idempotency_key). Existing
|
|
168
|
+
// `node_runs` rows get NULL `cached_json` (a non-cached
|
|
169
|
+
// historical execution).
|
|
170
|
+
version: 4,
|
|
171
|
+
sql: `
|
|
172
|
+
ALTER TABLE node_runs ADD COLUMN cached_json TEXT;
|
|
173
|
+
|
|
174
|
+
CREATE TABLE IF NOT EXISTS idempotency_cache (
|
|
175
|
+
workflow_name TEXT NOT NULL,
|
|
176
|
+
step_id TEXT NOT NULL,
|
|
177
|
+
idempotency_key TEXT NOT NULL,
|
|
178
|
+
data_json TEXT NOT NULL,
|
|
179
|
+
cached_at INTEGER NOT NULL,
|
|
180
|
+
expires_at INTEGER,
|
|
181
|
+
source_run_id TEXT NOT NULL,
|
|
182
|
+
source_node_run_id TEXT NOT NULL,
|
|
183
|
+
PRIMARY KEY (workflow_name, step_id, idempotency_key)
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
CREATE INDEX IF NOT EXISTS idx_idem_expires ON idempotency_cache(expires_at);
|
|
187
|
+
`,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
// Tier 1 · retry loop + replay lineage. Adds:
|
|
191
|
+
// - `node_runs.attempts_json` for the per-attempt failure
|
|
192
|
+
// history before the node ultimately succeeded or was
|
|
193
|
+
// fail-noded (capped at MAX_STORED_ATTEMPTS by RunTracker).
|
|
194
|
+
// - `workflow_runs.replay_of` for the source run id when a
|
|
195
|
+
// run is started via `POST /__blok/runs/:id/replay`.
|
|
196
|
+
// Existing rows: NULL on both → "no retries; not a replay".
|
|
197
|
+
version: 5,
|
|
198
|
+
sql: `
|
|
199
|
+
ALTER TABLE node_runs ADD COLUMN attempts_json TEXT;
|
|
200
|
+
ALTER TABLE workflow_runs ADD COLUMN replay_of TEXT;
|
|
201
|
+
CREATE INDEX IF NOT EXISTS idx_runs_replay_of ON workflow_runs(replay_of);
|
|
202
|
+
`,
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
// Tier 2 · sub-workflow lineage. Adds parent/child run linkage:
|
|
206
|
+
// - `workflow_runs.parent_run_id` — the parent run that
|
|
207
|
+
// invoked this run via a `subworkflow:` step.
|
|
208
|
+
// - `workflow_runs.parent_node_run_id` — the specific
|
|
209
|
+
// NodeRun within the parent that was the sub-workflow
|
|
210
|
+
// step (lets Studio jump to the exact invocation site).
|
|
211
|
+
// Index on parent_run_id for efficient `getRunsByParent` queries.
|
|
212
|
+
// Existing rows: NULL on both → "first-class triggered run".
|
|
213
|
+
version: 6,
|
|
214
|
+
sql: `
|
|
215
|
+
ALTER TABLE workflow_runs ADD COLUMN parent_run_id TEXT;
|
|
216
|
+
ALTER TABLE workflow_runs ADD COLUMN parent_node_run_id TEXT;
|
|
217
|
+
CREATE INDEX IF NOT EXISTS idx_runs_parent_run ON workflow_runs(parent_run_id);
|
|
218
|
+
`,
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
// Tier 2 #6 · concurrency keys. Adds a per-(workflow, key)
|
|
222
|
+
// in-flight slot table. Composite PK on (workflow_name,
|
|
223
|
+
// concurrency_key, run_id) lets a single run hold at most
|
|
224
|
+
// one slot per bucket while still permitting the
|
|
225
|
+
// `concurrencyLimit` runs to coexist within a bucket.
|
|
226
|
+
// `expires_at` is the lease upper bound — covers
|
|
227
|
+
// crash-safety when a process dies before releasing.
|
|
228
|
+
version: 7,
|
|
229
|
+
sql: `
|
|
230
|
+
CREATE TABLE IF NOT EXISTS concurrency_locks (
|
|
231
|
+
workflow_name TEXT NOT NULL,
|
|
232
|
+
concurrency_key TEXT NOT NULL,
|
|
233
|
+
run_id TEXT NOT NULL,
|
|
234
|
+
acquired_at INTEGER NOT NULL,
|
|
235
|
+
expires_at INTEGER NOT NULL,
|
|
236
|
+
PRIMARY KEY (workflow_name, concurrency_key, run_id)
|
|
237
|
+
);
|
|
238
|
+
CREATE INDEX IF NOT EXISTS idx_locks_expires ON concurrency_locks(expires_at);
|
|
239
|
+
CREATE INDEX IF NOT EXISTS idx_locks_workflow_key ON concurrency_locks(workflow_name, concurrency_key);
|
|
240
|
+
`,
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
// Tier 2 #5 + #7 · scheduling fields on workflow_runs:
|
|
244
|
+
// - `scheduled_at` — dispatch time (ms since epoch) for
|
|
245
|
+
// runs deferred via `trigger.delay`. NULL on immediate
|
|
246
|
+
// runs.
|
|
247
|
+
// - `expires_at` — TTL deadline (ms since epoch). When
|
|
248
|
+
// `now > expires_at` at dispatch time, the run is
|
|
249
|
+
// marked `expired` and skipped.
|
|
250
|
+
// - `debounce_key` — resolved key for runs that absorbed
|
|
251
|
+
// pings via `trigger.debounce`. NULL on non-debounced
|
|
252
|
+
// runs.
|
|
253
|
+
// - `debounce_mode` — `leading` | `trailing`.
|
|
254
|
+
// - `ping_count` — number of pings absorbed by this run.
|
|
255
|
+
// Indexes:
|
|
256
|
+
// - `idx_runs_scheduled_at` for "list scheduled runs"
|
|
257
|
+
// queries (Studio surface).
|
|
258
|
+
// - `idx_runs_debounce_key` for the debounce coordinator's
|
|
259
|
+
// "is there an active run for this key?" lookup
|
|
260
|
+
// (in-memory map is the hot path; SQLite is the
|
|
261
|
+
// fallback / restart-recovery).
|
|
262
|
+
// Existing rows: NULL on every new column. Backward-compat.
|
|
263
|
+
version: 8,
|
|
264
|
+
sql: `
|
|
265
|
+
ALTER TABLE workflow_runs ADD COLUMN scheduled_at INTEGER;
|
|
266
|
+
ALTER TABLE workflow_runs ADD COLUMN expires_at INTEGER;
|
|
267
|
+
ALTER TABLE workflow_runs ADD COLUMN debounce_key TEXT;
|
|
268
|
+
ALTER TABLE workflow_runs ADD COLUMN debounce_mode TEXT;
|
|
269
|
+
ALTER TABLE workflow_runs ADD COLUMN ping_count INTEGER;
|
|
270
|
+
CREATE INDEX IF NOT EXISTS idx_runs_scheduled_at ON workflow_runs(scheduled_at);
|
|
271
|
+
CREATE INDEX IF NOT EXISTS idx_runs_debounce_key ON workflow_runs(workflow_name, debounce_key);
|
|
272
|
+
`,
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
// Tier 2 #5+#7 follow-up · durable scheduler.
|
|
276
|
+
//
|
|
277
|
+
// `scheduled_dispatches` persists the minimum payload needed
|
|
278
|
+
// to re-fire a deferred dispatch after a process crash. The
|
|
279
|
+
// `DeferredRunScheduler` writes a row when a dispatch is
|
|
280
|
+
// scheduled, deletes it when the dispatch fires or is
|
|
281
|
+
// cancelled. On boot, HttpTrigger.recoverDispatches scans
|
|
282
|
+
// the table, marks past-due+TTL-expired rows as `expired`,
|
|
283
|
+
// and re-registers timers for live dispatches.
|
|
284
|
+
//
|
|
285
|
+
// Workers don't need this — broker (BullMQ/NATS) already
|
|
286
|
+
// owns delayed delivery.
|
|
287
|
+
//
|
|
288
|
+
// Columns:
|
|
289
|
+
// - `run_id` — PK, FK-style reference to `workflow_runs.id`.
|
|
290
|
+
// - `workflow_name` — used by trigger boot recovery to
|
|
291
|
+
// filter rows it owns (when multiple HTTP triggers
|
|
292
|
+
// share the same store).
|
|
293
|
+
// - `trigger_type` — `"http"` for v1; future triggers
|
|
294
|
+
// can opt in by writing this column.
|
|
295
|
+
// - `scheduled_at` — ms since epoch when to fire.
|
|
296
|
+
// - `expires_at` — TTL deadline (NULL = no TTL).
|
|
297
|
+
// - `dispatch_status` — `"delayed"` | `"queued"` |
|
|
298
|
+
// `"debounced"`. Mirrors the run record's status.
|
|
299
|
+
// - `payload_json` — JSON-serialized minimal Context
|
|
300
|
+
// subset (HTTP: method, path, headers, body, params,
|
|
301
|
+
// query, workflow_path). Headers are pre-stripped of
|
|
302
|
+
// sensitive keys (authorization, cookie, x-api-key).
|
|
303
|
+
// - `created_at` — when the row was first written.
|
|
304
|
+
version: 9,
|
|
305
|
+
sql: `
|
|
306
|
+
CREATE TABLE IF NOT EXISTS scheduled_dispatches (
|
|
307
|
+
run_id TEXT PRIMARY KEY,
|
|
308
|
+
workflow_name TEXT NOT NULL,
|
|
309
|
+
trigger_type TEXT NOT NULL,
|
|
310
|
+
scheduled_at INTEGER NOT NULL,
|
|
311
|
+
expires_at INTEGER,
|
|
312
|
+
dispatch_status TEXT NOT NULL,
|
|
313
|
+
payload_json TEXT NOT NULL,
|
|
314
|
+
created_at INTEGER NOT NULL
|
|
315
|
+
);
|
|
316
|
+
CREATE INDEX IF NOT EXISTS idx_scheduled_dispatches_at ON scheduled_dispatches(scheduled_at);
|
|
317
|
+
CREATE INDEX IF NOT EXISTS idx_scheduled_dispatches_trigger ON scheduled_dispatches(trigger_type, workflow_name);
|
|
318
|
+
`,
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
// PR 4 — wait.for(duration) / wait.until(date) step primitive.
|
|
322
|
+
//
|
|
323
|
+
// On dispatchDeferred re-entry, the runner needs to know which
|
|
324
|
+
// steps already completed in the previous pass so it can skip
|
|
325
|
+
// past them. last_completed_step_index is the canonical
|
|
326
|
+
// resume cursor — runner increments after each non-wait
|
|
327
|
+
// step, then on re-entry skips steps with
|
|
328
|
+
// stepIndex <= last_completed_step_index. Default NULL (= no
|
|
329
|
+
// resume cursor; runner starts at step 0 as today).
|
|
330
|
+
version: 10,
|
|
331
|
+
sql: `
|
|
332
|
+
ALTER TABLE workflow_runs ADD COLUMN last_completed_step_index INTEGER;
|
|
333
|
+
`,
|
|
334
|
+
},
|
|
162
335
|
];
|
|
163
336
|
const applyMigration = this.db.transaction((m) => {
|
|
164
337
|
this.db.exec(m.sql);
|
|
@@ -183,9 +356,12 @@ export class SqliteRunStore {
|
|
|
183
356
|
INSERT OR REPLACE INTO workflow_runs
|
|
184
357
|
(id, workflow_name, workflow_path, trigger_type, trigger_summary,
|
|
185
358
|
status, started_at, finished_at, duration_ms, error_json,
|
|
186
|
-
tags_json, metadata_json, node_count, completed_nodes, environment
|
|
187
|
-
|
|
188
|
-
|
|
359
|
+
tags_json, metadata_json, node_count, completed_nodes, environment, replay_of,
|
|
360
|
+
parent_run_id, parent_node_run_id,
|
|
361
|
+
scheduled_at, expires_at, debounce_key, debounce_mode, ping_count,
|
|
362
|
+
last_completed_step_index)
|
|
363
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
364
|
+
`).run(run.id, run.workflowName, run.workflowPath, run.triggerType, run.triggerSummary, run.status, run.startedAt, run.finishedAt ?? null, run.durationMs ?? null, run.error ? JSON.stringify(run.error) : null, JSON.stringify(run.tags || []), run.metadata ? JSON.stringify(run.metadata) : null, run.nodeCount, run.completedNodes, run.environment ?? null, run.replayOf ?? null, run.parentRunId ?? null, run.parentNodeRunId ?? null, run.scheduledAt ?? null, run.expiresAt ?? null, run.debounceKey ?? null, run.debounceMode ?? null, run.pingCount ?? null, run.lastCompletedStepIndex ?? null);
|
|
189
365
|
}
|
|
190
366
|
updateRun(runId, updates) {
|
|
191
367
|
const setClauses = [];
|
|
@@ -218,6 +394,46 @@ export class SqliteRunStore {
|
|
|
218
394
|
setClauses.push("metadata_json = ?");
|
|
219
395
|
values.push(JSON.stringify(updates.metadata));
|
|
220
396
|
}
|
|
397
|
+
if (updates.replayOf !== undefined) {
|
|
398
|
+
setClauses.push("replay_of = ?");
|
|
399
|
+
values.push(updates.replayOf);
|
|
400
|
+
}
|
|
401
|
+
if (updates.parentRunId !== undefined) {
|
|
402
|
+
setClauses.push("parent_run_id = ?");
|
|
403
|
+
values.push(updates.parentRunId);
|
|
404
|
+
}
|
|
405
|
+
if (updates.parentNodeRunId !== undefined) {
|
|
406
|
+
setClauses.push("parent_node_run_id = ?");
|
|
407
|
+
values.push(updates.parentNodeRunId);
|
|
408
|
+
}
|
|
409
|
+
if (updates.scheduledAt !== undefined) {
|
|
410
|
+
setClauses.push("scheduled_at = ?");
|
|
411
|
+
values.push(updates.scheduledAt);
|
|
412
|
+
}
|
|
413
|
+
if (updates.expiresAt !== undefined) {
|
|
414
|
+
setClauses.push("expires_at = ?");
|
|
415
|
+
values.push(updates.expiresAt);
|
|
416
|
+
}
|
|
417
|
+
if (updates.debounceKey !== undefined) {
|
|
418
|
+
setClauses.push("debounce_key = ?");
|
|
419
|
+
values.push(updates.debounceKey);
|
|
420
|
+
}
|
|
421
|
+
if (updates.debounceMode !== undefined) {
|
|
422
|
+
setClauses.push("debounce_mode = ?");
|
|
423
|
+
values.push(updates.debounceMode);
|
|
424
|
+
}
|
|
425
|
+
if (updates.pingCount !== undefined) {
|
|
426
|
+
setClauses.push("ping_count = ?");
|
|
427
|
+
values.push(updates.pingCount);
|
|
428
|
+
}
|
|
429
|
+
if (updates.lastCompletedStepIndex !== undefined) {
|
|
430
|
+
setClauses.push("last_completed_step_index = ?");
|
|
431
|
+
values.push(updates.lastCompletedStepIndex);
|
|
432
|
+
}
|
|
433
|
+
if (updates.startedAt !== undefined) {
|
|
434
|
+
setClauses.push("started_at = ?");
|
|
435
|
+
values.push(updates.startedAt);
|
|
436
|
+
}
|
|
221
437
|
if (setClauses.length === 0)
|
|
222
438
|
return;
|
|
223
439
|
values.push(runId);
|
|
@@ -229,9 +445,9 @@ export class SqliteRunStore {
|
|
|
229
445
|
(id, run_id, node_name, node_type, runtime_kind,
|
|
230
446
|
status, started_at, finished_at, duration_ms,
|
|
231
447
|
inputs_json, outputs_json, error_json,
|
|
232
|
-
parent_node_id, depth, step_index, metrics_json)
|
|
233
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
234
|
-
`).run(nodeRun.id, nodeRun.runId, nodeRun.nodeName, nodeRun.nodeType, nodeRun.runtimeKind ?? null, nodeRun.status, nodeRun.startedAt, nodeRun.finishedAt ?? null, nodeRun.durationMs ?? null, nodeRun.inputs !== undefined ? JSON.stringify(nodeRun.inputs) : null, nodeRun.outputs !== undefined ? JSON.stringify(nodeRun.outputs) : null, nodeRun.error ? JSON.stringify(nodeRun.error) : null, nodeRun.parentNodeId ?? null, nodeRun.depth, nodeRun.stepIndex, nodeRun.metrics ? JSON.stringify(nodeRun.metrics) : null);
|
|
448
|
+
parent_node_id, depth, step_index, metrics_json, cached_json, attempts_json)
|
|
449
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
450
|
+
`).run(nodeRun.id, nodeRun.runId, nodeRun.nodeName, nodeRun.nodeType, nodeRun.runtimeKind ?? null, nodeRun.status, nodeRun.startedAt, nodeRun.finishedAt ?? null, nodeRun.durationMs ?? null, nodeRun.inputs !== undefined ? JSON.stringify(nodeRun.inputs) : null, nodeRun.outputs !== undefined ? JSON.stringify(nodeRun.outputs) : null, nodeRun.error ? JSON.stringify(nodeRun.error) : null, nodeRun.parentNodeId ?? null, nodeRun.depth, nodeRun.stepIndex, nodeRun.metrics ? JSON.stringify(nodeRun.metrics) : null, nodeRun.cached ? JSON.stringify(nodeRun.cached) : null, nodeRun.attempts ? JSON.stringify(nodeRun.attempts) : null);
|
|
235
451
|
}
|
|
236
452
|
updateNodeRun(nodeRunId, updates) {
|
|
237
453
|
const setClauses = [];
|
|
@@ -260,6 +476,14 @@ export class SqliteRunStore {
|
|
|
260
476
|
setClauses.push("metrics_json = ?");
|
|
261
477
|
values.push(JSON.stringify(updates.metrics));
|
|
262
478
|
}
|
|
479
|
+
if (updates.cached !== undefined) {
|
|
480
|
+
setClauses.push("cached_json = ?");
|
|
481
|
+
values.push(JSON.stringify(updates.cached));
|
|
482
|
+
}
|
|
483
|
+
if (updates.attempts !== undefined) {
|
|
484
|
+
setClauses.push("attempts_json = ?");
|
|
485
|
+
values.push(JSON.stringify(updates.attempts));
|
|
486
|
+
}
|
|
263
487
|
if (setClauses.length === 0)
|
|
264
488
|
return;
|
|
265
489
|
values.push(nodeRunId);
|
|
@@ -293,6 +517,23 @@ export class SqliteRunStore {
|
|
|
293
517
|
conditions.push("status = ?");
|
|
294
518
|
params.push(opts.status);
|
|
295
519
|
}
|
|
520
|
+
// Tier 2 quick-wins — metadata key=value filter via json_extract.
|
|
521
|
+
// Multiple key=value pairs combine with AND semantics. Indexed scans
|
|
522
|
+
// aren't possible against arbitrary JSON keys; sequential scan is
|
|
523
|
+
// acceptable given the runs table has size cap via evictOldRuns.
|
|
524
|
+
if (opts?.metadata) {
|
|
525
|
+
const entries = Object.entries(opts.metadata);
|
|
526
|
+
for (const [k, v] of entries) {
|
|
527
|
+
// Use prefixed paths for safety: only allow keys matching
|
|
528
|
+
// /^[a-zA-Z0-9_-]+$/ to prevent JSON path injection. Keys with
|
|
529
|
+
// special characters silently skip filtering — caller can
|
|
530
|
+
// always fall back to client-side filter for those.
|
|
531
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(k))
|
|
532
|
+
continue;
|
|
533
|
+
conditions.push(`json_extract(metadata_json, '$.${k}') = ?`);
|
|
534
|
+
params.push(v);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
296
537
|
const tags = opts?.tags;
|
|
297
538
|
if (tags && tags.length > 0) {
|
|
298
539
|
// For each tag, check that it exists in the JSON array
|
|
@@ -370,6 +611,10 @@ export class SqliteRunStore {
|
|
|
370
611
|
const row = this.stmt("getNodeRun", "SELECT * FROM node_runs WHERE id = ?").get(nodeRunId);
|
|
371
612
|
return row ? this.rowToNodeRun(row) : undefined;
|
|
372
613
|
}
|
|
614
|
+
getRunsByParent(parentRunId) {
|
|
615
|
+
const rows = this.stmt("getRunsByParent", "SELECT * FROM workflow_runs WHERE parent_run_id = ? ORDER BY started_at ASC").all(parentRunId);
|
|
616
|
+
return rows.map((r) => this.rowToRun(r));
|
|
617
|
+
}
|
|
373
618
|
getEvents(runId, since) {
|
|
374
619
|
if (since) {
|
|
375
620
|
return this.stmt("getEventsSince", "SELECT * FROM run_events WHERE run_id = ? AND timestamp > ? ORDER BY timestamp").all(runId, since).map((r) => this.rowToEvent(r));
|
|
@@ -608,8 +853,151 @@ export class SqliteRunStore {
|
|
|
608
853
|
this.db.exec("DELETE FROM node_runs");
|
|
609
854
|
this.db.exec("DELETE FROM workflow_runs");
|
|
610
855
|
this.db.exec("DELETE FROM dashboards");
|
|
856
|
+
this.db.exec("DELETE FROM idempotency_cache");
|
|
857
|
+
this.db.exec("DELETE FROM concurrency_locks");
|
|
611
858
|
return count;
|
|
612
859
|
}
|
|
860
|
+
// === Idempotency cache ===
|
|
861
|
+
getIdempotencyCache(workflowName, stepId, key) {
|
|
862
|
+
const row = this.stmt("getIdempotencyCache", "SELECT * FROM idempotency_cache WHERE workflow_name = ? AND step_id = ? AND idempotency_key = ?").get(workflowName, stepId, key);
|
|
863
|
+
if (!row)
|
|
864
|
+
return null;
|
|
865
|
+
if (row.expires_at !== null && row.expires_at <= Date.now()) {
|
|
866
|
+
// Lazy purge — remove the expired entry inline so subsequent
|
|
867
|
+
// reads don't even pay for the row materialization.
|
|
868
|
+
this.stmt("deleteExpiredIdempotency", "DELETE FROM idempotency_cache WHERE workflow_name = ? AND step_id = ? AND idempotency_key = ?").run(workflowName, stepId, key);
|
|
869
|
+
return null;
|
|
870
|
+
}
|
|
871
|
+
return {
|
|
872
|
+
data: JSON.parse(row.data_json),
|
|
873
|
+
cachedAt: row.cached_at,
|
|
874
|
+
expiresAt: row.expires_at,
|
|
875
|
+
sourceRunId: row.source_run_id,
|
|
876
|
+
sourceNodeRunId: row.source_node_run_id,
|
|
877
|
+
};
|
|
878
|
+
}
|
|
879
|
+
setIdempotencyCache(workflowName, stepId, key, entry) {
|
|
880
|
+
this.stmt("setIdempotencyCache", `
|
|
881
|
+
INSERT OR REPLACE INTO idempotency_cache
|
|
882
|
+
(workflow_name, step_id, idempotency_key, data_json, cached_at, expires_at,
|
|
883
|
+
source_run_id, source_node_run_id)
|
|
884
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
885
|
+
`).run(workflowName, stepId, key, JSON.stringify(entry.data), entry.cachedAt, entry.expiresAt, entry.sourceRunId, entry.sourceNodeRunId);
|
|
886
|
+
}
|
|
887
|
+
purgeExpiredIdempotencyCache(now) {
|
|
888
|
+
const result = this.stmt("purgeExpiredIdempotency", "DELETE FROM idempotency_cache WHERE expires_at IS NOT NULL AND expires_at <= ?").run(now);
|
|
889
|
+
return result.changes;
|
|
890
|
+
}
|
|
891
|
+
// === Concurrency gating (Tier 2 #6) ===
|
|
892
|
+
acquireConcurrencySlot(workflowName, concurrencyKey, concurrencyLimit, runId, leaseExpiresAt) {
|
|
893
|
+
// Wrap the read-modify-write in a transaction so two concurrent
|
|
894
|
+
// `acquireConcurrencySlot` calls can't both see N < limit and
|
|
895
|
+
// both grant a slot. better-sqlite3 / bun:sqlite serialize within
|
|
896
|
+
// a single connection; the transaction is the safety net for any
|
|
897
|
+
// future multi-connection setup.
|
|
898
|
+
const txn = this.db.transaction(() => {
|
|
899
|
+
const now = Date.now();
|
|
900
|
+
// Lazy-purge expired leases for THIS bucket so we don't deny
|
|
901
|
+
// based on a slot held by a process that crashed mid-run.
|
|
902
|
+
this.stmt("deleteExpiredLocksForBucket", "DELETE FROM concurrency_locks WHERE workflow_name = ? AND concurrency_key = ? AND expires_at <= ?").run(workflowName, concurrencyKey, now);
|
|
903
|
+
// Idempotent re-acquire — if the same runId already holds a
|
|
904
|
+
// slot, refresh its lease (UPSERT on PK) and report success
|
|
905
|
+
// without growing the count.
|
|
906
|
+
const existing = this.stmt("getLockForRun", "SELECT 1 FROM concurrency_locks WHERE workflow_name = ? AND concurrency_key = ? AND run_id = ?").get(workflowName, concurrencyKey, runId);
|
|
907
|
+
if (existing) {
|
|
908
|
+
this.stmt("refreshLockLease", "UPDATE concurrency_locks SET expires_at = ? WHERE workflow_name = ? AND concurrency_key = ? AND run_id = ?").run(leaseExpiresAt, workflowName, concurrencyKey, runId);
|
|
909
|
+
const count = this.stmt("countLocksForBucket", "SELECT COUNT(*) as c FROM concurrency_locks WHERE workflow_name = ? AND concurrency_key = ?").get(workflowName, concurrencyKey)?.c ?? 0;
|
|
910
|
+
return { acquired: true, currentInFlight: count };
|
|
911
|
+
}
|
|
912
|
+
const currentCount = this.stmt("countLocksForBucket", "SELECT COUNT(*) as c FROM concurrency_locks WHERE workflow_name = ? AND concurrency_key = ?").get(workflowName, concurrencyKey)?.c ?? 0;
|
|
913
|
+
if (currentCount >= concurrencyLimit) {
|
|
914
|
+
return { acquired: false, currentInFlight: currentCount };
|
|
915
|
+
}
|
|
916
|
+
this.stmt("insertLock", `INSERT INTO concurrency_locks
|
|
917
|
+
(workflow_name, concurrency_key, run_id, acquired_at, expires_at)
|
|
918
|
+
VALUES (?, ?, ?, ?, ?)`).run(workflowName, concurrencyKey, runId, now, leaseExpiresAt);
|
|
919
|
+
return { acquired: true, currentInFlight: currentCount + 1 };
|
|
920
|
+
});
|
|
921
|
+
return txn();
|
|
922
|
+
}
|
|
923
|
+
releaseConcurrencySlot(workflowName, concurrencyKey, runId) {
|
|
924
|
+
this.stmt("releaseLock", "DELETE FROM concurrency_locks WHERE workflow_name = ? AND concurrency_key = ? AND run_id = ?").run(workflowName, concurrencyKey, runId);
|
|
925
|
+
}
|
|
926
|
+
purgeExpiredConcurrencySlots(now) {
|
|
927
|
+
const result = this.stmt("purgeExpiredLocks", "DELETE FROM concurrency_locks WHERE expires_at <= ?").run(now);
|
|
928
|
+
return result.changes;
|
|
929
|
+
}
|
|
930
|
+
getConcurrencySnapshot(now) {
|
|
931
|
+
const rows = this.db
|
|
932
|
+
.prepare("SELECT workflow_name, concurrency_key, run_id, expires_at FROM concurrency_locks WHERE expires_at > ?")
|
|
933
|
+
.all(now);
|
|
934
|
+
const buckets = new Map();
|
|
935
|
+
for (const r of rows) {
|
|
936
|
+
const key = `${r.workflow_name}\x1f${r.concurrency_key}`;
|
|
937
|
+
let bucket = buckets.get(key);
|
|
938
|
+
if (!bucket) {
|
|
939
|
+
bucket = { workflowName: r.workflow_name, concurrencyKey: r.concurrency_key, leases: [] };
|
|
940
|
+
buckets.set(key, bucket);
|
|
941
|
+
}
|
|
942
|
+
bucket.leases.push({ runId: r.run_id, expiresAt: r.expires_at });
|
|
943
|
+
}
|
|
944
|
+
return Array.from(buckets.values());
|
|
945
|
+
}
|
|
946
|
+
// === Durable scheduling (Tier 2 #5+#7 follow-up) ===
|
|
947
|
+
upsertScheduledDispatch(row) {
|
|
948
|
+
this.stmt("upsertScheduledDispatch", `INSERT INTO scheduled_dispatches
|
|
949
|
+
(run_id, workflow_name, trigger_type, scheduled_at, expires_at, dispatch_status, payload_json, created_at)
|
|
950
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
951
|
+
ON CONFLICT(run_id) DO UPDATE SET
|
|
952
|
+
scheduled_at = excluded.scheduled_at,
|
|
953
|
+
expires_at = excluded.expires_at,
|
|
954
|
+
dispatch_status = excluded.dispatch_status,
|
|
955
|
+
payload_json = excluded.payload_json`).run(row.runId, row.workflowName, row.triggerType, row.scheduledAt, row.expiresAt ?? null, row.dispatchStatus, JSON.stringify(row.payload ?? null), row.createdAt);
|
|
956
|
+
}
|
|
957
|
+
deleteScheduledDispatch(runId) {
|
|
958
|
+
const result = this.stmt("deleteScheduledDispatch", "DELETE FROM scheduled_dispatches WHERE run_id = ?").run(runId);
|
|
959
|
+
return result.changes > 0;
|
|
960
|
+
}
|
|
961
|
+
getScheduledDispatches(opts) {
|
|
962
|
+
const triggerType = opts?.triggerType;
|
|
963
|
+
const status = opts?.status;
|
|
964
|
+
const clauses = [];
|
|
965
|
+
const args = [];
|
|
966
|
+
if (triggerType) {
|
|
967
|
+
clauses.push("trigger_type = ?");
|
|
968
|
+
args.push(triggerType);
|
|
969
|
+
}
|
|
970
|
+
if (status) {
|
|
971
|
+
clauses.push("dispatch_status = ?");
|
|
972
|
+
args.push(status);
|
|
973
|
+
}
|
|
974
|
+
const where = clauses.length > 0 ? `WHERE ${clauses.join(" AND ")}` : "";
|
|
975
|
+
const sql = `SELECT * FROM scheduled_dispatches ${where} ORDER BY scheduled_at ASC`;
|
|
976
|
+
const rows = this.db.prepare(sql).all(...args);
|
|
977
|
+
return rows.map((r) => {
|
|
978
|
+
let parsedPayload = null;
|
|
979
|
+
try {
|
|
980
|
+
parsedPayload = JSON.parse(r.payload_json);
|
|
981
|
+
}
|
|
982
|
+
catch {
|
|
983
|
+
parsedPayload = null;
|
|
984
|
+
}
|
|
985
|
+
return {
|
|
986
|
+
runId: r.run_id,
|
|
987
|
+
workflowName: r.workflow_name,
|
|
988
|
+
triggerType: r.trigger_type,
|
|
989
|
+
scheduledAt: r.scheduled_at,
|
|
990
|
+
expiresAt: r.expires_at ?? undefined,
|
|
991
|
+
dispatchStatus: r.dispatch_status,
|
|
992
|
+
payload: parsedPayload,
|
|
993
|
+
createdAt: r.created_at,
|
|
994
|
+
};
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
purgeExpiredScheduledDispatches(now) {
|
|
998
|
+
const result = this.stmt("purgeExpiredScheduledDispatches", "DELETE FROM scheduled_dispatches WHERE expires_at IS NOT NULL AND expires_at < ?").run(now);
|
|
999
|
+
return result.changes;
|
|
1000
|
+
}
|
|
613
1001
|
deleteRunsBefore(timestamp) {
|
|
614
1002
|
// Foreign key CASCADE handles child tables
|
|
615
1003
|
const result = this.db
|
|
@@ -658,6 +1046,15 @@ export class SqliteRunStore {
|
|
|
658
1046
|
// "production" so the EnvChip default-scope still surfaces
|
|
659
1047
|
// historical data without a backfill.
|
|
660
1048
|
environment: row.environment ?? "production",
|
|
1049
|
+
replayOf: row.replay_of ?? undefined,
|
|
1050
|
+
parentRunId: row.parent_run_id ?? undefined,
|
|
1051
|
+
parentNodeRunId: row.parent_node_run_id ?? undefined,
|
|
1052
|
+
scheduledAt: row.scheduled_at ?? undefined,
|
|
1053
|
+
expiresAt: row.expires_at ?? undefined,
|
|
1054
|
+
debounceKey: row.debounce_key ?? undefined,
|
|
1055
|
+
debounceMode: (row.debounce_mode ?? undefined),
|
|
1056
|
+
pingCount: row.ping_count ?? undefined,
|
|
1057
|
+
lastCompletedStepIndex: row.last_completed_step_index ?? undefined,
|
|
661
1058
|
};
|
|
662
1059
|
}
|
|
663
1060
|
rowToNodeRun(row) {
|
|
@@ -678,6 +1075,8 @@ export class SqliteRunStore {
|
|
|
678
1075
|
depth: row.depth,
|
|
679
1076
|
stepIndex: row.step_index,
|
|
680
1077
|
metrics: row.metrics_json ? JSON.parse(row.metrics_json) : undefined,
|
|
1078
|
+
cached: row.cached_json ? JSON.parse(row.cached_json) : undefined,
|
|
1079
|
+
attempts: row.attempts_json ? JSON.parse(row.attempts_json) : undefined,
|
|
681
1080
|
};
|
|
682
1081
|
}
|
|
683
1082
|
rowToEvent(row) {
|