@blokjs/runner 0.2.1 → 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.
Files changed (159) hide show
  1. package/dist/Blok.js +11 -11
  2. package/dist/Blok.js.map +1 -1
  3. package/dist/Configuration.d.ts +39 -2
  4. package/dist/Configuration.js +337 -28
  5. package/dist/Configuration.js.map +1 -1
  6. package/dist/ConfigurationResolver.d.ts +9 -0
  7. package/dist/ConfigurationResolver.js +17 -1
  8. package/dist/ConfigurationResolver.js.map +1 -1
  9. package/dist/PayloadTooLargeError.d.ts +19 -0
  10. package/dist/PayloadTooLargeError.js +29 -0
  11. package/dist/PayloadTooLargeError.js.map +1 -0
  12. package/dist/RunCancelledError.d.ts +17 -0
  13. package/dist/RunCancelledError.js +25 -0
  14. package/dist/RunCancelledError.js.map +1 -0
  15. package/dist/RunnerSteps.js +363 -23
  16. package/dist/RunnerSteps.js.map +1 -1
  17. package/dist/RuntimeAdapterNode.d.ts +32 -2
  18. package/dist/RuntimeAdapterNode.js +122 -27
  19. package/dist/RuntimeAdapterNode.js.map +1 -1
  20. package/dist/SubworkflowNode.d.ts +75 -0
  21. package/dist/SubworkflowNode.js +221 -0
  22. package/dist/SubworkflowNode.js.map +1 -0
  23. package/dist/TriggerBase.d.ts +128 -0
  24. package/dist/TriggerBase.js +808 -6
  25. package/dist/TriggerBase.js.map +1 -1
  26. package/dist/WaitDispatchRequest.d.ts +38 -0
  27. package/dist/WaitDispatchRequest.js +13 -0
  28. package/dist/WaitDispatchRequest.js.map +1 -0
  29. package/dist/WaitNode.d.ts +23 -0
  30. package/dist/WaitNode.js +26 -0
  31. package/dist/WaitNode.js.map +1 -0
  32. package/dist/adapters/BunRuntimeAdapter.d.ts +1 -0
  33. package/dist/adapters/BunRuntimeAdapter.js +1 -0
  34. package/dist/adapters/BunRuntimeAdapter.js.map +1 -1
  35. package/dist/adapters/DockerRuntimeAdapter.d.ts +2 -1
  36. package/dist/adapters/DockerRuntimeAdapter.js +10 -1
  37. package/dist/adapters/DockerRuntimeAdapter.js.map +1 -1
  38. package/dist/adapters/HttpRuntimeAdapter.d.ts +26 -5
  39. package/dist/adapters/HttpRuntimeAdapter.js +97 -16
  40. package/dist/adapters/HttpRuntimeAdapter.js.map +1 -1
  41. package/dist/adapters/NodeJsRuntimeAdapter.d.ts +1 -0
  42. package/dist/adapters/NodeJsRuntimeAdapter.js +1 -0
  43. package/dist/adapters/NodeJsRuntimeAdapter.js.map +1 -1
  44. package/dist/adapters/RuntimeAdapter.d.ts +17 -0
  45. package/dist/adapters/WasmRuntimeAdapter.d.ts +1 -0
  46. package/dist/adapters/WasmRuntimeAdapter.js +1 -0
  47. package/dist/adapters/WasmRuntimeAdapter.js.map +1 -1
  48. package/dist/adapters/grpc/GrpcChannelOptions.d.ts +31 -0
  49. package/dist/adapters/grpc/GrpcChannelOptions.js +68 -0
  50. package/dist/adapters/grpc/GrpcChannelOptions.js.map +1 -0
  51. package/dist/adapters/grpc/GrpcClientPool.d.ts +43 -0
  52. package/dist/adapters/grpc/GrpcClientPool.js +89 -0
  53. package/dist/adapters/grpc/GrpcClientPool.js.map +1 -0
  54. package/dist/adapters/grpc/GrpcCodec.d.ts +226 -0
  55. package/dist/adapters/grpc/GrpcCodec.js +275 -0
  56. package/dist/adapters/grpc/GrpcCodec.js.map +1 -0
  57. package/dist/adapters/grpc/GrpcErrors.d.ts +59 -0
  58. package/dist/adapters/grpc/GrpcErrors.js +190 -0
  59. package/dist/adapters/grpc/GrpcErrors.js.map +1 -0
  60. package/dist/adapters/grpc/GrpcHealthChecker.d.ts +69 -0
  61. package/dist/adapters/grpc/GrpcHealthChecker.js +96 -0
  62. package/dist/adapters/grpc/GrpcHealthChecker.js.map +1 -0
  63. package/dist/adapters/grpc/GrpcRuntimeAdapter.d.ts +98 -0
  64. package/dist/adapters/grpc/GrpcRuntimeAdapter.js +478 -0
  65. package/dist/adapters/grpc/GrpcRuntimeAdapter.js.map +1 -0
  66. package/dist/adapters/grpc/index.d.ts +13 -0
  67. package/dist/adapters/grpc/index.js +14 -0
  68. package/dist/adapters/grpc/index.js.map +1 -0
  69. package/dist/adapters/grpc/proto/blok/runtime/v1/runtime.proto +302 -0
  70. package/dist/adapters/grpc/types.d.ts +97 -0
  71. package/dist/adapters/grpc/types.js +41 -0
  72. package/dist/adapters/grpc/types.js.map +1 -0
  73. package/dist/adapters/transport.d.ts +108 -0
  74. package/dist/adapters/transport.js +196 -0
  75. package/dist/adapters/transport.js.map +1 -0
  76. package/dist/concurrency/ConcurrencyBackend.d.ts +61 -0
  77. package/dist/concurrency/ConcurrencyBackend.js +20 -0
  78. package/dist/concurrency/ConcurrencyBackend.js.map +1 -0
  79. package/dist/concurrency/ConcurrencyLimitError.d.ts +37 -0
  80. package/dist/concurrency/ConcurrencyLimitError.js +16 -0
  81. package/dist/concurrency/ConcurrencyLimitError.js.map +1 -0
  82. package/dist/concurrency/NatsKvConcurrencyBackend.d.ts +64 -0
  83. package/dist/concurrency/NatsKvConcurrencyBackend.js +297 -0
  84. package/dist/concurrency/NatsKvConcurrencyBackend.js.map +1 -0
  85. package/dist/concurrency/QueueExpiredError.d.ts +40 -0
  86. package/dist/concurrency/QueueExpiredError.js +15 -0
  87. package/dist/concurrency/QueueExpiredError.js.map +1 -0
  88. package/dist/concurrency/createConcurrencyBackend.d.ts +23 -0
  89. package/dist/concurrency/createConcurrencyBackend.js +34 -0
  90. package/dist/concurrency/createConcurrencyBackend.js.map +1 -0
  91. package/dist/concurrency/readConcurrencyConfig.d.ts +60 -0
  92. package/dist/concurrency/readConcurrencyConfig.js +60 -0
  93. package/dist/concurrency/readConcurrencyConfig.js.map +1 -0
  94. package/dist/idempotency/resolveIdempotencyKey.d.ts +20 -0
  95. package/dist/idempotency/resolveIdempotencyKey.js +37 -0
  96. package/dist/idempotency/resolveIdempotencyKey.js.map +1 -0
  97. package/dist/index.d.ts +35 -3
  98. package/dist/index.js +61 -2
  99. package/dist/index.js.map +1 -1
  100. package/dist/monitoring/ConcurrencyMetrics.d.ts +56 -0
  101. package/dist/monitoring/ConcurrencyMetrics.js +107 -0
  102. package/dist/monitoring/ConcurrencyMetrics.js.map +1 -0
  103. package/dist/monitoring/JanitorMetrics.d.ts +27 -0
  104. package/dist/monitoring/JanitorMetrics.js +48 -0
  105. package/dist/monitoring/JanitorMetrics.js.map +1 -0
  106. package/dist/scheduling/DebounceCoordinator.d.ts +88 -0
  107. package/dist/scheduling/DebounceCoordinator.js +141 -0
  108. package/dist/scheduling/DebounceCoordinator.js.map +1 -0
  109. package/dist/scheduling/DeferredDispatchSignal.d.ts +50 -0
  110. package/dist/scheduling/DeferredDispatchSignal.js +14 -0
  111. package/dist/scheduling/DeferredDispatchSignal.js.map +1 -0
  112. package/dist/scheduling/DeferredRunScheduler.d.ts +68 -0
  113. package/dist/scheduling/DeferredRunScheduler.js +154 -0
  114. package/dist/scheduling/DeferredRunScheduler.js.map +1 -0
  115. package/dist/scheduling/readSchedulingConfig.d.ts +24 -0
  116. package/dist/scheduling/readSchedulingConfig.js +52 -0
  117. package/dist/scheduling/readSchedulingConfig.js.map +1 -0
  118. package/dist/testing/WorkflowTestRunner.js +12 -0
  119. package/dist/testing/WorkflowTestRunner.js.map +1 -1
  120. package/dist/timeouts/StepTimeoutError.d.ts +22 -0
  121. package/dist/timeouts/StepTimeoutError.js +31 -0
  122. package/dist/timeouts/StepTimeoutError.js.map +1 -0
  123. package/dist/tracing/InMemoryRunStore.d.ts +28 -1
  124. package/dist/tracing/InMemoryRunStore.js +150 -0
  125. package/dist/tracing/InMemoryRunStore.js.map +1 -1
  126. package/dist/tracing/Janitor.d.ts +70 -0
  127. package/dist/tracing/Janitor.js +150 -0
  128. package/dist/tracing/Janitor.js.map +1 -0
  129. package/dist/tracing/PostgresRunStore.d.ts +30 -0
  130. package/dist/tracing/PostgresRunStore.js +435 -3
  131. package/dist/tracing/PostgresRunStore.js.map +1 -1
  132. package/dist/tracing/RunStore.d.ts +100 -1
  133. package/dist/tracing/RunTracker.d.ts +261 -11
  134. package/dist/tracing/RunTracker.js +691 -11
  135. package/dist/tracing/RunTracker.js.map +1 -1
  136. package/dist/tracing/SqliteRunStore.d.ts +23 -1
  137. package/dist/tracing/SqliteRunStore.js +421 -6
  138. package/dist/tracing/SqliteRunStore.js.map +1 -1
  139. package/dist/tracing/TraceRouter.d.ts +20 -2
  140. package/dist/tracing/TraceRouter.js +494 -9
  141. package/dist/tracing/TraceRouter.js.map +1 -1
  142. package/dist/tracing/sanitize.d.ts +11 -0
  143. package/dist/tracing/sanitize.js +29 -0
  144. package/dist/tracing/sanitize.js.map +1 -1
  145. package/dist/tracing/types.d.ts +429 -11
  146. package/dist/types/GlobalOptions.d.ts +9 -2
  147. package/dist/utils/createChildContext.d.ts +32 -0
  148. package/dist/utils/createChildContext.js +113 -0
  149. package/dist/utils/createChildContext.js.map +1 -0
  150. package/dist/workflow/PersistenceHelper.d.ts +46 -0
  151. package/dist/workflow/PersistenceHelper.js +57 -0
  152. package/dist/workflow/PersistenceHelper.js.map +1 -0
  153. package/dist/workflow/WorkflowNormalizer.d.ts +79 -0
  154. package/dist/workflow/WorkflowNormalizer.js +486 -0
  155. package/dist/workflow/WorkflowNormalizer.js.map +1 -0
  156. package/dist/workflow/WorkflowRegistry.d.ts +64 -0
  157. package/dist/workflow/WorkflowRegistry.js +81 -0
  158. package/dist/workflow/WorkflowRegistry.js.map +1 -0
  159. package/package.json +10 -7
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tier 2 quick-wins — thrown by `RunnerSteps` when a step's
3
+ * `step.process()` exceeds its `maxDuration` cap.
4
+ *
5
+ * The error participates in the existing retry loop: each retry
6
+ * attempt wraps its own setTimeout-based timeout, so a step that
7
+ * times out N times will trigger N retries (each capped at
8
+ * `maxDuration`) before the run flips to `"timedOut"`.
9
+ *
10
+ * Note: setTimeout-based timeout REJECTS the wrapper promise but
11
+ * doesn't truly abort the underlying async work — the
12
+ * `step.process()` continues running until natural completion.
13
+ * The parent runner has already moved on; the orphaned promise
14
+ * resolves harmlessly into the void. Proper cooperative
15
+ * cancellation via `AbortSignal` is a deferred follow-up.
16
+ */
17
+ export declare class StepTimeoutError extends Error {
18
+ readonly stepName: string;
19
+ readonly maxDurationMs: number;
20
+ constructor(stepName: string, maxDurationMs: number);
21
+ }
22
+ export declare function isStepTimeoutError(err: unknown): err is StepTimeoutError;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Tier 2 quick-wins — thrown by `RunnerSteps` when a step's
3
+ * `step.process()` exceeds its `maxDuration` cap.
4
+ *
5
+ * The error participates in the existing retry loop: each retry
6
+ * attempt wraps its own setTimeout-based timeout, so a step that
7
+ * times out N times will trigger N retries (each capped at
8
+ * `maxDuration`) before the run flips to `"timedOut"`.
9
+ *
10
+ * Note: setTimeout-based timeout REJECTS the wrapper promise but
11
+ * doesn't truly abort the underlying async work — the
12
+ * `step.process()` continues running until natural completion.
13
+ * The parent runner has already moved on; the orphaned promise
14
+ * resolves harmlessly into the void. Proper cooperative
15
+ * cancellation via `AbortSignal` is a deferred follow-up.
16
+ */
17
+ export class StepTimeoutError extends Error {
18
+ stepName;
19
+ maxDurationMs;
20
+ constructor(stepName, maxDurationMs) {
21
+ super(`Step '${stepName}' exceeded maxDuration of ${maxDurationMs}ms`);
22
+ this.name = "StepTimeoutError";
23
+ this.stepName = stepName;
24
+ this.maxDurationMs = maxDurationMs;
25
+ Object.setPrototypeOf(this, StepTimeoutError.prototype);
26
+ }
27
+ }
28
+ export function isStepTimeoutError(err) {
29
+ return err instanceof StepTimeoutError;
30
+ }
31
+ //# sourceMappingURL=StepTimeoutError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepTimeoutError.js","sourceRoot":"","sources":["../../src/timeouts/StepTimeoutError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAC1B,QAAQ,CAAS;IACjB,aAAa,CAAS;IAEtC,YAAY,QAAgB,EAAE,aAAqB;QAClD,KAAK,CAAC,SAAS,QAAQ,6BAA6B,aAAa,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACD;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC9C,OAAO,GAAG,YAAY,gBAAgB,CAAC;AACxC,CAAC"}
@@ -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
  * In-memory implementation of RunStore using Maps.
5
5
  * Zero dependencies, fastest possible reads/writes.
@@ -12,6 +12,11 @@ export declare class InMemoryRunStore implements RunStore {
12
12
  private events;
13
13
  private logs;
14
14
  private dashboards;
15
+ private idempotencyCache;
16
+ private concurrencyLocks;
17
+ private scheduledDispatches;
18
+ private idemKey;
19
+ private concurrencyBucketKey;
15
20
  saveRun(run: WorkflowRun): void;
16
21
  updateRun(runId: string, updates: Partial<WorkflowRun>): void;
17
22
  saveNodeRun(nodeRun: NodeRun): void;
@@ -25,6 +30,7 @@ export declare class InMemoryRunStore implements RunStore {
25
30
  };
26
31
  getNodeRuns(runId: string): NodeRun[];
27
32
  getNodeRun(nodeRunId: string): NodeRun | undefined;
33
+ getRunsByParent(parentRunId: string): WorkflowRun[];
28
34
  getEvents(runId: string, since?: number): RunEvent[];
29
35
  getLogs(runId: string, nodeId?: string): TraceLogEntry[];
30
36
  getWorkflowSummaries(): WorkflowSummary[];
@@ -39,6 +45,27 @@ export declare class InMemoryRunStore implements RunStore {
39
45
  clearAll(): number;
40
46
  deleteRunsBefore(timestamp: number): number;
41
47
  evictOldRuns(maxRuns: number): void;
48
+ getIdempotencyCache(workflowName: string, stepId: string, key: string): CachedStepResult | null;
49
+ setIdempotencyCache(workflowName: string, stepId: string, key: string, entry: CachedStepResult): void;
50
+ purgeExpiredIdempotencyCache(now: number): number;
51
+ acquireConcurrencySlot(workflowName: string, concurrencyKey: string, concurrencyLimit: number, runId: string, leaseExpiresAt: number): ConcurrencySlotResult;
52
+ releaseConcurrencySlot(workflowName: string, concurrencyKey: string, runId: string): void;
53
+ purgeExpiredConcurrencySlots(now: number): number;
54
+ getConcurrencySnapshot(now: number): Array<{
55
+ workflowName: string;
56
+ concurrencyKey: string;
57
+ leases: Array<{
58
+ runId: string;
59
+ expiresAt: number;
60
+ }>;
61
+ }>;
62
+ upsertScheduledDispatch(row: ScheduledDispatchRow): void;
63
+ deleteScheduledDispatch(runId: string): boolean;
64
+ getScheduledDispatches(opts?: {
65
+ triggerType?: string;
66
+ status?: string;
67
+ }): ScheduledDispatchRow[];
68
+ purgeExpiredScheduledDispatches(now: number): number;
42
69
  close(): void;
43
70
  private deleteRun;
44
71
  }
@@ -10,6 +10,17 @@ export class InMemoryRunStore {
10
10
  events = new Map(); // runId → RunEvent[]
11
11
  logs = new Map(); // runId → LogEntry[]
12
12
  dashboards = new Map();
13
+ idempotencyCache = new Map();
14
+ concurrencyLocks = new Map();
15
+ scheduledDispatches = new Map();
16
+ idemKey(workflowName, stepId, key) {
17
+ // US (\x1f) is non-printable and never appears in identifiers, so it
18
+ // cannot collide with characters in workflow / step / key strings.
19
+ return `${workflowName}\x1f${stepId}\x1f${key}`;
20
+ }
21
+ concurrencyBucketKey(workflowName, concurrencyKey) {
22
+ return `${workflowName}\x1f${concurrencyKey}`;
23
+ }
13
24
  // === Writes ===
14
25
  saveRun(run) {
15
26
  this.runs.set(run.id, run);
@@ -64,6 +75,13 @@ export class InMemoryRunStore {
64
75
  const filterTags = opts.tags;
65
76
  runs = runs.filter((r) => r.tags && filterTags.every((tag) => r.tags?.includes(tag)));
66
77
  }
78
+ if (opts?.metadata) {
79
+ const entries = Object.entries(opts.metadata);
80
+ if (entries.length > 0) {
81
+ runs = runs.filter((r) => r.metadata != null &&
82
+ entries.every(([k, v]) => r.metadata?.[k] !== undefined && String(r.metadata[k]) === v));
83
+ }
84
+ }
67
85
  // asc = oldest first (a.startedAt - b.startedAt), desc = newest first
68
86
  const sortDir = opts?.sort === "asc" ? 1 : -1;
69
87
  runs.sort((a, b) => sortDir * (a.startedAt - b.startedAt));
@@ -79,6 +97,15 @@ export class InMemoryRunStore {
79
97
  getNodeRun(nodeRunId) {
80
98
  return this.nodeRunIndex.get(nodeRunId);
81
99
  }
100
+ getRunsByParent(parentRunId) {
101
+ const matches = [];
102
+ for (const run of this.runs.values()) {
103
+ if (run.parentRunId === parentRunId)
104
+ matches.push(run);
105
+ }
106
+ matches.sort((a, b) => a.startedAt - b.startedAt);
107
+ return matches;
108
+ }
82
109
  getEvents(runId, since) {
83
110
  const events = this.events.get(runId) || [];
84
111
  if (since) {
@@ -297,6 +324,8 @@ export class InMemoryRunStore {
297
324
  this.events.clear();
298
325
  this.logs.clear();
299
326
  this.dashboards.clear();
327
+ this.idempotencyCache.clear();
328
+ this.concurrencyLocks.clear();
300
329
  return count;
301
330
  }
302
331
  deleteRunsBefore(timestamp) {
@@ -321,6 +350,127 @@ export class InMemoryRunStore {
321
350
  this.deleteRun(runId);
322
351
  }
323
352
  }
353
+ // === Idempotency cache ===
354
+ getIdempotencyCache(workflowName, stepId, key) {
355
+ const k = this.idemKey(workflowName, stepId, key);
356
+ const entry = this.idempotencyCache.get(k);
357
+ if (!entry)
358
+ return null;
359
+ if (entry.expiresAt !== null && entry.expiresAt <= Date.now()) {
360
+ this.idempotencyCache.delete(k);
361
+ return null;
362
+ }
363
+ return entry;
364
+ }
365
+ setIdempotencyCache(workflowName, stepId, key, entry) {
366
+ this.idempotencyCache.set(this.idemKey(workflowName, stepId, key), entry);
367
+ }
368
+ purgeExpiredIdempotencyCache(now) {
369
+ let removed = 0;
370
+ for (const [k, entry] of this.idempotencyCache.entries()) {
371
+ if (entry.expiresAt !== null && entry.expiresAt <= now) {
372
+ this.idempotencyCache.delete(k);
373
+ removed++;
374
+ }
375
+ }
376
+ return removed;
377
+ }
378
+ // === Concurrency gating (Tier 2 #6) ===
379
+ acquireConcurrencySlot(workflowName, concurrencyKey, concurrencyLimit, runId, leaseExpiresAt) {
380
+ const bucketKey = this.concurrencyBucketKey(workflowName, concurrencyKey);
381
+ let bucket = this.concurrencyLocks.get(bucketKey);
382
+ if (!bucket) {
383
+ bucket = new Map();
384
+ this.concurrencyLocks.set(bucketKey, bucket);
385
+ }
386
+ // Lazy-purge expired leases for THIS bucket so we don't deny based
387
+ // on a slot held by a process that crashed mid-run.
388
+ const now = Date.now();
389
+ for (const [otherRunId, expiresAt] of bucket) {
390
+ if (expiresAt <= now)
391
+ bucket.delete(otherRunId);
392
+ }
393
+ // Idempotent re-acquire — if the same runId already holds a slot,
394
+ // refresh its lease and report success without growing the count.
395
+ if (bucket.has(runId)) {
396
+ bucket.set(runId, leaseExpiresAt);
397
+ return { acquired: true, currentInFlight: bucket.size };
398
+ }
399
+ if (bucket.size >= concurrencyLimit) {
400
+ return { acquired: false, currentInFlight: bucket.size };
401
+ }
402
+ bucket.set(runId, leaseExpiresAt);
403
+ return { acquired: true, currentInFlight: bucket.size };
404
+ }
405
+ releaseConcurrencySlot(workflowName, concurrencyKey, runId) {
406
+ const bucketKey = this.concurrencyBucketKey(workflowName, concurrencyKey);
407
+ const bucket = this.concurrencyLocks.get(bucketKey);
408
+ if (!bucket)
409
+ return;
410
+ bucket.delete(runId);
411
+ if (bucket.size === 0)
412
+ this.concurrencyLocks.delete(bucketKey);
413
+ }
414
+ purgeExpiredConcurrencySlots(now) {
415
+ let removed = 0;
416
+ for (const [bucketKey, bucket] of this.concurrencyLocks.entries()) {
417
+ for (const [runId, expiresAt] of bucket) {
418
+ if (expiresAt <= now) {
419
+ bucket.delete(runId);
420
+ removed++;
421
+ }
422
+ }
423
+ if (bucket.size === 0)
424
+ this.concurrencyLocks.delete(bucketKey);
425
+ }
426
+ return removed;
427
+ }
428
+ getConcurrencySnapshot(now) {
429
+ const out = [];
430
+ for (const [bucketKey, bucket] of this.concurrencyLocks.entries()) {
431
+ const [workflowName, concurrencyKey] = bucketKey.split("\x1f");
432
+ const leases = [];
433
+ for (const [runId, expiresAt] of bucket) {
434
+ if (expiresAt > now)
435
+ leases.push({ runId, expiresAt });
436
+ }
437
+ if (leases.length > 0)
438
+ out.push({ workflowName, concurrencyKey, leases });
439
+ }
440
+ return out;
441
+ }
442
+ // === Durable scheduling (Tier 2 #5+#7 follow-up) ===
443
+ upsertScheduledDispatch(row) {
444
+ // Clone to avoid external mutations bleeding into the store.
445
+ this.scheduledDispatches.set(row.runId, { ...row });
446
+ }
447
+ deleteScheduledDispatch(runId) {
448
+ return this.scheduledDispatches.delete(runId);
449
+ }
450
+ getScheduledDispatches(opts) {
451
+ const triggerType = opts?.triggerType;
452
+ const status = opts?.status;
453
+ const out = [];
454
+ for (const row of this.scheduledDispatches.values()) {
455
+ if (triggerType && row.triggerType !== triggerType)
456
+ continue;
457
+ if (status && row.dispatchStatus !== status)
458
+ continue;
459
+ out.push({ ...row });
460
+ }
461
+ out.sort((a, b) => a.scheduledAt - b.scheduledAt);
462
+ return out;
463
+ }
464
+ purgeExpiredScheduledDispatches(now) {
465
+ let removed = 0;
466
+ for (const [runId, row] of this.scheduledDispatches.entries()) {
467
+ if (row.expiresAt !== undefined && row.expiresAt < now) {
468
+ this.scheduledDispatches.delete(runId);
469
+ removed++;
470
+ }
471
+ }
472
+ return removed;
473
+ }
324
474
  close() {
325
475
  // No-op for in-memory store
326
476
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryRunStore.js","sourceRoot":"","sources":["../../src/tracing/InMemoryRunStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InMemoryRunStore.js","sourceRoot":"","sources":["../../src/tracing/InMemoryRunStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Tier 2 follow-up · periodic janitor sweep for stale storage rows.
3
+ *
4
+ * Background task that runs on a configurable interval (default 5 min,
5
+ * override via `BLOK_JANITOR_INTERVAL_MS`) and invokes the existing
6
+ * lazy-purge methods to clean up:
7
+ *
8
+ * - `idempotency_cache` — entries past `expires_at`
9
+ * - `concurrency_locks` — leases past `expires_at`
10
+ * - `scheduled_dispatches` — rows past `expires_at` (Tier 2 #5+#7 follow-up)
11
+ *
12
+ * Each store's per-call lazy-purge handles the hot path (e.g.,
13
+ * `acquireConcurrencySlot` purges the bucket it touches). The janitor
14
+ * catches stale entries in cold buckets that nothing else accesses.
15
+ *
16
+ * Idempotent + interval-bounded — runs every `intervalMs`; concurrent
17
+ * `runOnce()` calls are serialized via the `inFlight` flag to prevent
18
+ * overlapping sweeps under slow stores. Errors per sweep are caught
19
+ * and logged; one failing sweep doesn't stop the loop or block others.
20
+ *
21
+ * Kill-switch: `BLOK_JANITOR_DISABLED=1`.
22
+ */
23
+ import type { RunStore } from "./RunStore";
24
+ interface JanitorLogger {
25
+ error?: (message: string) => void;
26
+ log?: (message: string) => void;
27
+ }
28
+ export interface JanitorStats {
29
+ idempotencyCachePurged: number;
30
+ concurrencySlotsPurged: number;
31
+ scheduledDispatchesPurged: number;
32
+ durationMs: number;
33
+ }
34
+ export declare class Janitor {
35
+ private static instance;
36
+ private readonly store;
37
+ private readonly logger?;
38
+ private timer;
39
+ private inFlight;
40
+ private stopped;
41
+ private constructor();
42
+ /**
43
+ * Get or initialize the singleton. The first call wins — subsequent
44
+ * calls return the existing instance regardless of arguments.
45
+ */
46
+ static getInstance(store: RunStore, logger?: JanitorLogger): Janitor;
47
+ /** Test-only — reset the singleton. Stops any running interval. */
48
+ static resetInstance(): void;
49
+ /**
50
+ * Start the periodic sweep. Idempotent — calling twice is a no-op.
51
+ * Returns false when the kill-switch is set or the janitor was
52
+ * already started.
53
+ */
54
+ start(intervalMs?: number): boolean;
55
+ /** Stop the periodic sweep. Idempotent. */
56
+ stop(): void;
57
+ /**
58
+ * Run one sweep immediately. Useful for tests + as a manual janitor
59
+ * command. Concurrent invocations are serialized via the `inFlight`
60
+ * flag — overlapping calls return the same in-progress sweep's stats
61
+ * via the resolved promise.
62
+ *
63
+ * Errors per individual purge method are caught + logged; one failing
64
+ * purge doesn't abort the others.
65
+ */
66
+ runOnce(): Promise<JanitorStats>;
67
+ /** Whether the janitor is currently running on its interval. */
68
+ isRunning(): boolean;
69
+ }
70
+ export {};
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Tier 2 follow-up · periodic janitor sweep for stale storage rows.
3
+ *
4
+ * Background task that runs on a configurable interval (default 5 min,
5
+ * override via `BLOK_JANITOR_INTERVAL_MS`) and invokes the existing
6
+ * lazy-purge methods to clean up:
7
+ *
8
+ * - `idempotency_cache` — entries past `expires_at`
9
+ * - `concurrency_locks` — leases past `expires_at`
10
+ * - `scheduled_dispatches` — rows past `expires_at` (Tier 2 #5+#7 follow-up)
11
+ *
12
+ * Each store's per-call lazy-purge handles the hot path (e.g.,
13
+ * `acquireConcurrencySlot` purges the bucket it touches). The janitor
14
+ * catches stale entries in cold buckets that nothing else accesses.
15
+ *
16
+ * Idempotent + interval-bounded — runs every `intervalMs`; concurrent
17
+ * `runOnce()` calls are serialized via the `inFlight` flag to prevent
18
+ * overlapping sweeps under slow stores. Errors per sweep are caught
19
+ * and logged; one failing sweep doesn't stop the loop or block others.
20
+ *
21
+ * Kill-switch: `BLOK_JANITOR_DISABLED=1`.
22
+ */
23
+ import { JanitorMetrics } from "../monitoring/JanitorMetrics";
24
+ const DEFAULT_INTERVAL_MS = 5 * 60 * 1000;
25
+ export class Janitor {
26
+ static instance = null;
27
+ store;
28
+ logger;
29
+ timer = null;
30
+ inFlight = false;
31
+ stopped = false;
32
+ constructor(store, logger) {
33
+ this.store = store;
34
+ this.logger = logger;
35
+ }
36
+ /**
37
+ * Get or initialize the singleton. The first call wins — subsequent
38
+ * calls return the existing instance regardless of arguments.
39
+ */
40
+ static getInstance(store, logger) {
41
+ if (!Janitor.instance) {
42
+ Janitor.instance = new Janitor(store, logger);
43
+ }
44
+ return Janitor.instance;
45
+ }
46
+ /** Test-only — reset the singleton. Stops any running interval. */
47
+ static resetInstance() {
48
+ Janitor.instance?.stop();
49
+ Janitor.instance = null;
50
+ }
51
+ /**
52
+ * Start the periodic sweep. Idempotent — calling twice is a no-op.
53
+ * Returns false when the kill-switch is set or the janitor was
54
+ * already started.
55
+ */
56
+ start(intervalMs) {
57
+ if (process.env.BLOK_JANITOR_DISABLED === "1")
58
+ return false;
59
+ if (this.timer !== null)
60
+ return false;
61
+ this.stopped = false;
62
+ const envIntervalRaw = process.env.BLOK_JANITOR_INTERVAL_MS;
63
+ const envInterval = envIntervalRaw && /^\d+$/.test(envIntervalRaw) ? Number(envIntervalRaw) : null;
64
+ const interval = intervalMs ?? envInterval ?? DEFAULT_INTERVAL_MS;
65
+ // `unref()` so the janitor doesn't keep the event loop alive on
66
+ // its own — when all triggers shut down, the process should exit.
67
+ this.timer = setInterval(() => {
68
+ void this.runOnce();
69
+ }, interval);
70
+ this.timer.unref?.();
71
+ this.logger?.log?.(`[blok][janitor] started — interval=${interval}ms`);
72
+ return true;
73
+ }
74
+ /** Stop the periodic sweep. Idempotent. */
75
+ stop() {
76
+ this.stopped = true;
77
+ if (this.timer !== null) {
78
+ clearInterval(this.timer);
79
+ this.timer = null;
80
+ }
81
+ }
82
+ /**
83
+ * Run one sweep immediately. Useful for tests + as a manual janitor
84
+ * command. Concurrent invocations are serialized via the `inFlight`
85
+ * flag — overlapping calls return the same in-progress sweep's stats
86
+ * via the resolved promise.
87
+ *
88
+ * Errors per individual purge method are caught + logged; one failing
89
+ * purge doesn't abort the others.
90
+ */
91
+ async runOnce() {
92
+ if (this.stopped) {
93
+ return { idempotencyCachePurged: 0, concurrencySlotsPurged: 0, scheduledDispatchesPurged: 0, durationMs: 0 };
94
+ }
95
+ if (this.inFlight) {
96
+ // Skip overlapping invocations — return zero stats so callers
97
+ // don't wait on a sweep that's already running.
98
+ return { idempotencyCachePurged: 0, concurrencySlotsPurged: 0, scheduledDispatchesPurged: 0, durationMs: 0 };
99
+ }
100
+ this.inFlight = true;
101
+ const start = Date.now();
102
+ const stats = {
103
+ idempotencyCachePurged: 0,
104
+ concurrencySlotsPurged: 0,
105
+ scheduledDispatchesPurged: 0,
106
+ durationMs: 0,
107
+ };
108
+ try {
109
+ // PR 3 D3 — record per-table duration + rows purged via OTel.
110
+ const idemStart = Date.now();
111
+ try {
112
+ stats.idempotencyCachePurged = this.store.purgeExpiredIdempotencyCache(start);
113
+ }
114
+ catch (err) {
115
+ this.logger?.error?.(`[blok][janitor] purgeExpiredIdempotencyCache failed: ${err instanceof Error ? err.message : String(err)}`);
116
+ }
117
+ JanitorMetrics.getInstance().recordSweep({ table: "idempotency_cache" }, Date.now() - idemStart, stats.idempotencyCachePurged);
118
+ const locksStart = Date.now();
119
+ try {
120
+ stats.concurrencySlotsPurged = this.store.purgeExpiredConcurrencySlots(start);
121
+ }
122
+ catch (err) {
123
+ this.logger?.error?.(`[blok][janitor] purgeExpiredConcurrencySlots failed: ${err instanceof Error ? err.message : String(err)}`);
124
+ }
125
+ JanitorMetrics.getInstance().recordSweep({ table: "concurrency_locks" }, Date.now() - locksStart, stats.concurrencySlotsPurged);
126
+ const dispStart = Date.now();
127
+ try {
128
+ stats.scheduledDispatchesPurged = this.store.purgeExpiredScheduledDispatches(start);
129
+ }
130
+ catch (err) {
131
+ this.logger?.error?.(`[blok][janitor] purgeExpiredScheduledDispatches failed: ${err instanceof Error ? err.message : String(err)}`);
132
+ }
133
+ JanitorMetrics.getInstance().recordSweep({ table: "scheduled_dispatches" }, Date.now() - dispStart, stats.scheduledDispatchesPurged);
134
+ stats.durationMs = Date.now() - start;
135
+ const totalPurged = stats.idempotencyCachePurged + stats.concurrencySlotsPurged + stats.scheduledDispatchesPurged;
136
+ if (totalPurged > 0) {
137
+ this.logger?.log?.(`[blok][janitor] sweep done — idem=${stats.idempotencyCachePurged} locks=${stats.concurrencySlotsPurged} dispatches=${stats.scheduledDispatchesPurged} (${stats.durationMs}ms)`);
138
+ }
139
+ }
140
+ finally {
141
+ this.inFlight = false;
142
+ }
143
+ return stats;
144
+ }
145
+ /** Whether the janitor is currently running on its interval. */
146
+ isRunning() {
147
+ return this.timer !== null;
148
+ }
149
+ }
150
+ //# sourceMappingURL=Janitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Janitor.js","sourceRoot":"","sources":["../../src/tracing/Janitor.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,14 @@ export declare class PostgresRunStore implements RunStore {
41
41
  ready(): Promise<void>;
42
42
  private initialize;
43
43
  private migrate;
44
+ /**
45
+ * Review fix-up · CONCERN-2. Per-table cap on `loadRecent`'s rehydration
46
+ * queries. Without it, a deployment with 1M+ idempotency cache entries
47
+ * spends seconds + memory on every boot loading rows it'll never read
48
+ * before the Janitor sweeps them. Default 100K rows per table — well
49
+ * above any reasonable hot-set size yet bounded for boot latency.
50
+ */
51
+ private getLoadRecentLimit;
44
52
  private loadRecent;
45
53
  saveRun(run: WorkflowRun): void;
46
54
  updateRun(runId: string, updates: Partial<WorkflowRun>): void;
@@ -55,6 +63,7 @@ export declare class PostgresRunStore implements RunStore {
55
63
  };
56
64
  getNodeRuns(runId: string): NodeRun[];
57
65
  getNodeRun(nodeRunId: string): NodeRun | undefined;
66
+ getRunsByParent(parentRunId: string): WorkflowRun[];
58
67
  getEvents(runId: string, since?: number): RunEvent[];
59
68
  getLogs(runId: string, nodeId?: string): TraceLogEntry[];
60
69
  getWorkflowSummaries(): WorkflowSummary[];
@@ -70,6 +79,27 @@ export declare class PostgresRunStore implements RunStore {
70
79
  deleteRunsBefore(timestamp: number): number;
71
80
  evictOldRuns(maxRuns: number): void;
72
81
  close(): void;
82
+ getIdempotencyCache(workflowName: string, stepId: string, key: string): import("./types").CachedStepResult | null;
83
+ setIdempotencyCache(workflowName: string, stepId: string, key: string, entry: Parameters<typeof this.memory.setIdempotencyCache>[3]): void;
84
+ purgeExpiredIdempotencyCache(now: number): number;
85
+ acquireConcurrencySlot(workflowName: string, concurrencyKey: string, concurrencyLimit: number, runId: string, leaseExpiresAt: number): import("./types").ConcurrencySlotResult;
86
+ releaseConcurrencySlot(workflowName: string, concurrencyKey: string, runId: string): void;
87
+ purgeExpiredConcurrencySlots(now: number): number;
88
+ getConcurrencySnapshot(now: number): {
89
+ workflowName: string;
90
+ concurrencyKey: string;
91
+ leases: Array<{
92
+ runId: string;
93
+ expiresAt: number;
94
+ }>;
95
+ }[];
96
+ upsertScheduledDispatch(row: Parameters<typeof this.memory.upsertScheduledDispatch>[0]): void;
97
+ deleteScheduledDispatch(runId: string): boolean;
98
+ getScheduledDispatches(opts?: {
99
+ triggerType?: string;
100
+ status?: string;
101
+ }): import("./types").ScheduledDispatchRow[];
102
+ purgeExpiredScheduledDispatches(now: number): number;
73
103
  private enqueueWrite;
74
104
  private flush;
75
105
  private startFlushLoop;