@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,3 +1,4 @@
|
|
|
1
|
+
import { parseDuration } from "@blokjs/helper";
|
|
1
2
|
/**
|
|
2
3
|
* WorkflowNormalizer — accepts v1 or v2 workflow shapes and projects both
|
|
3
4
|
* to the single canonical internal shape that `Configuration.getSteps` /
|
|
@@ -88,6 +89,25 @@ export function normalizeWorkflow(raw, sourcePath) {
|
|
|
88
89
|
internalNodes[internalStep.name] = nodeConfig;
|
|
89
90
|
continue;
|
|
90
91
|
}
|
|
92
|
+
// v2 sub-workflow — { id, subworkflow: "<name>", inputs?, wait? }
|
|
93
|
+
// Discriminator is the presence of a non-empty `subworkflow` string.
|
|
94
|
+
// Resolves to a SubworkflowNode that looks up the child in the
|
|
95
|
+
// WorkflowRegistry at run time.
|
|
96
|
+
if (typeof step.subworkflow === "string" && step.subworkflow.length > 0) {
|
|
97
|
+
const { internalStep, nodeConfig } = normalizeSubworkflowStep(step, i);
|
|
98
|
+
internalSteps.push(internalStep);
|
|
99
|
+
if (nodeConfig)
|
|
100
|
+
internalNodes[internalStep.name] = nodeConfig;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
// v2 wait — { id, wait: { for?, until? } } (PR 4).
|
|
104
|
+
// Discriminator: `wait` is an object (sub-workflow uses `wait: boolean`).
|
|
105
|
+
if (isPlainObject(step.wait) &&
|
|
106
|
+
(step.wait.for !== undefined || step.wait.until !== undefined)) {
|
|
107
|
+
const internalStep = normalizeWaitStep(step, i);
|
|
108
|
+
internalSteps.push(internalStep);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
91
111
|
// v2 regular — { id, use, inputs?, as?, spread?, ephemeral?, ... }
|
|
92
112
|
// or v1 regular — { name, node, type } + nodes[name].inputs
|
|
93
113
|
const { internalStep, nodeConfig } = normalizeRegularStep(step, nodesInput, i);
|
|
@@ -161,6 +181,32 @@ function normalizeRegularStep(step, nodesInput, index) {
|
|
|
161
181
|
};
|
|
162
182
|
if (typeof step.stream_logs === "boolean")
|
|
163
183
|
internalStep.stream_logs = step.stream_logs;
|
|
184
|
+
// Idempotency cache + retry — pass through verbatim. The runner reads
|
|
185
|
+
// these in RunnerSteps to wrap step.process() with cache-check + retry-
|
|
186
|
+
// loop. They never reach PersistenceHelper.applyStepOutput; caching
|
|
187
|
+
// layers ABOVE that.
|
|
188
|
+
if (typeof step.idempotencyKey === "string" && step.idempotencyKey.length > 0) {
|
|
189
|
+
internalStep.idempotencyKey = step.idempotencyKey;
|
|
190
|
+
}
|
|
191
|
+
if (typeof step.idempotencyKeyTTL === "number" && Number.isFinite(step.idempotencyKeyTTL)) {
|
|
192
|
+
internalStep.idempotencyKeyTTL = step.idempotencyKeyTTL;
|
|
193
|
+
}
|
|
194
|
+
if (isPlainObject(step.retry)) {
|
|
195
|
+
const r = step.retry;
|
|
196
|
+
if (typeof r.maxAttempts === "number" && Number.isInteger(r.maxAttempts)) {
|
|
197
|
+
const retry = { maxAttempts: r.maxAttempts };
|
|
198
|
+
if (typeof r.minTimeoutInMs === "number")
|
|
199
|
+
retry.minTimeoutInMs = r.minTimeoutInMs;
|
|
200
|
+
if (typeof r.maxTimeoutInMs === "number")
|
|
201
|
+
retry.maxTimeoutInMs = r.maxTimeoutInMs;
|
|
202
|
+
if (typeof r.factor === "number")
|
|
203
|
+
retry.factor = r.factor;
|
|
204
|
+
internalStep.retry = retry;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (typeof step.maxDuration === "number" || typeof step.maxDuration === "string") {
|
|
208
|
+
internalStep.maxDuration = step.maxDuration;
|
|
209
|
+
}
|
|
164
210
|
// Build node config — only include `inputs` if present.
|
|
165
211
|
let nodeConfig = null;
|
|
166
212
|
if (inputs) {
|
|
@@ -243,6 +289,142 @@ function normalizeBranchStep(step, index) {
|
|
|
243
289
|
const nodeConfig = { conditions };
|
|
244
290
|
return { internalStep, nodeConfig };
|
|
245
291
|
}
|
|
292
|
+
const SUBWORKFLOW_NODE_REF = "@blokjs/subworkflow";
|
|
293
|
+
/**
|
|
294
|
+
* Normalize a v2 sub-workflow step into the canonical InternalStep
|
|
295
|
+
* shape. Resolves to a `SubworkflowNode` at run time
|
|
296
|
+
* (Configuration.nodeTypes.subworkflow).
|
|
297
|
+
*
|
|
298
|
+
* Inputs are placed on `nodeConfig.inputs` so the existing
|
|
299
|
+
* blueprint-mapper resolution path resolves `$.state.<id>` /
|
|
300
|
+
* `$.req.body.<key>` refs into concrete values BEFORE the
|
|
301
|
+
* sub-workflow node runs (mirrors how regular steps work).
|
|
302
|
+
*/
|
|
303
|
+
function normalizeSubworkflowStep(step, index) {
|
|
304
|
+
const id = pickString(step.id);
|
|
305
|
+
if (!id) {
|
|
306
|
+
throw new Error(`[blok] WorkflowNormalizer: sub-workflow step at index ${index} is missing \`id\`.`);
|
|
307
|
+
}
|
|
308
|
+
const subworkflow = pickString(step.subworkflow);
|
|
309
|
+
if (!subworkflow) {
|
|
310
|
+
throw new Error(`[blok] WorkflowNormalizer: sub-workflow step "${id}" is missing \`subworkflow\` (workflow name to invoke).`);
|
|
311
|
+
}
|
|
312
|
+
// `wait: false` (fire-and-forget) is now supported. The async dispatch
|
|
313
|
+
// branch lives in SubworkflowNode.run; the field is threaded through
|
|
314
|
+
// onto InternalStep below for the resolver to copy onto the
|
|
315
|
+
// SubworkflowNode instance.
|
|
316
|
+
// Persistence + retry + idempotency knobs — pass through verbatim
|
|
317
|
+
// (mirrors normalizeRegularStep). `as` and `spread` mutual exclusion
|
|
318
|
+
// is also enforced at the schema level; defensive check here.
|
|
319
|
+
const ephemeral = step.ephemeral === true;
|
|
320
|
+
const as = pickString(step.as);
|
|
321
|
+
const spread = step.spread === true;
|
|
322
|
+
if (as && spread) {
|
|
323
|
+
throw new Error(`[blok] WorkflowNormalizer: sub-workflow step "${id}" sets both \`as\` and \`spread\` — they are mutually exclusive.`);
|
|
324
|
+
}
|
|
325
|
+
const internalStep = {
|
|
326
|
+
name: id,
|
|
327
|
+
node: SUBWORKFLOW_NODE_REF,
|
|
328
|
+
type: "subworkflow",
|
|
329
|
+
active: step.active === undefined ? true : Boolean(step.active),
|
|
330
|
+
stop: step.stop === true,
|
|
331
|
+
as,
|
|
332
|
+
spread,
|
|
333
|
+
ephemeral,
|
|
334
|
+
subworkflow,
|
|
335
|
+
// Default `wait: true` when omitted. `wait: false` triggers the
|
|
336
|
+
// async dispatch branch in SubworkflowNode.run.
|
|
337
|
+
wait: step.wait === undefined ? true : Boolean(step.wait),
|
|
338
|
+
};
|
|
339
|
+
if (typeof step.idempotencyKey === "string" && step.idempotencyKey.length > 0) {
|
|
340
|
+
internalStep.idempotencyKey = step.idempotencyKey;
|
|
341
|
+
}
|
|
342
|
+
if (typeof step.idempotencyKeyTTL === "number" && Number.isFinite(step.idempotencyKeyTTL)) {
|
|
343
|
+
internalStep.idempotencyKeyTTL = step.idempotencyKeyTTL;
|
|
344
|
+
}
|
|
345
|
+
if (isPlainObject(step.retry)) {
|
|
346
|
+
const r = step.retry;
|
|
347
|
+
if (typeof r.maxAttempts === "number" && Number.isInteger(r.maxAttempts)) {
|
|
348
|
+
const retry = { maxAttempts: r.maxAttempts };
|
|
349
|
+
if (typeof r.minTimeoutInMs === "number")
|
|
350
|
+
retry.minTimeoutInMs = r.minTimeoutInMs;
|
|
351
|
+
if (typeof r.maxTimeoutInMs === "number")
|
|
352
|
+
retry.maxTimeoutInMs = r.maxTimeoutInMs;
|
|
353
|
+
if (typeof r.factor === "number")
|
|
354
|
+
retry.factor = r.factor;
|
|
355
|
+
internalStep.retry = retry;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
if (typeof step.maxDuration === "number" || typeof step.maxDuration === "string") {
|
|
359
|
+
internalStep.maxDuration = step.maxDuration;
|
|
360
|
+
}
|
|
361
|
+
// Inputs land on nodeConfig so the blueprint mapper resolves
|
|
362
|
+
// $.<path> / js/... refs before SubworkflowNode reads them via
|
|
363
|
+
// `ctx.config[step.name]`.
|
|
364
|
+
const inlineInputs = isPlainObject(step.inputs) ? step.inputs : null;
|
|
365
|
+
const nodeConfig = inlineInputs ? { inputs: inlineInputs } : null;
|
|
366
|
+
return { internalStep, nodeConfig };
|
|
367
|
+
}
|
|
368
|
+
const WAIT_NODE_REF = "@blokjs/wait";
|
|
369
|
+
/**
|
|
370
|
+
* PR 4 — normalize a v2 wait step.
|
|
371
|
+
*
|
|
372
|
+
* Wait steps are intercepted by `RunnerSteps` BEFORE `step.process` is
|
|
373
|
+
* invoked (the wait IS the runner-level deferral); the resolved node is
|
|
374
|
+
* a no-op placeholder. The runner reads `waitForMs` / `waitUntil` off
|
|
375
|
+
* the InternalStep to decide how long to wait.
|
|
376
|
+
*
|
|
377
|
+
* `wait.for` (duration string or number) is parsed to milliseconds via
|
|
378
|
+
* `parseDuration`. `wait.until` is left as-is — the runner resolves
|
|
379
|
+
* $-proxy expressions against the live ctx at first-pass invocation.
|
|
380
|
+
*/
|
|
381
|
+
function normalizeWaitStep(step, index) {
|
|
382
|
+
const id = pickString(step.id);
|
|
383
|
+
if (!id) {
|
|
384
|
+
throw new Error(`[blok] WorkflowNormalizer: wait step at index ${index} is missing \`id\`.`);
|
|
385
|
+
}
|
|
386
|
+
const waitObj = step.wait;
|
|
387
|
+
const hasFor = waitObj.for !== undefined;
|
|
388
|
+
const hasUntil = waitObj.until !== undefined;
|
|
389
|
+
if (hasFor === hasUntil) {
|
|
390
|
+
throw new Error(`[blok] WorkflowNormalizer: wait step "${id}" must set exactly one of \`wait.for\` or \`wait.until\`.`);
|
|
391
|
+
}
|
|
392
|
+
let waitForMs;
|
|
393
|
+
let waitUntil;
|
|
394
|
+
if (hasFor) {
|
|
395
|
+
const raw = waitObj.for;
|
|
396
|
+
if (typeof raw === "number") {
|
|
397
|
+
waitForMs = raw;
|
|
398
|
+
}
|
|
399
|
+
else if (typeof raw === "string") {
|
|
400
|
+
// parseDuration may throw on invalid grammar — let it surface.
|
|
401
|
+
waitForMs = parseDuration(raw);
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
throw new Error(`[blok] WorkflowNormalizer: wait step "${id}" has invalid \`wait.for\` (must be number ms or duration string).`);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
if (hasUntil) {
|
|
408
|
+
const raw = waitObj.until;
|
|
409
|
+
if (typeof raw !== "number" && typeof raw !== "string") {
|
|
410
|
+
throw new Error(`[blok] WorkflowNormalizer: wait step "${id}" has invalid \`wait.until\` (must be number ms or string).`);
|
|
411
|
+
}
|
|
412
|
+
waitUntil = raw;
|
|
413
|
+
}
|
|
414
|
+
const ephemeral = step.ephemeral === true;
|
|
415
|
+
const as = pickString(step.as);
|
|
416
|
+
return {
|
|
417
|
+
name: id,
|
|
418
|
+
node: WAIT_NODE_REF,
|
|
419
|
+
type: "wait",
|
|
420
|
+
active: step.active === undefined ? true : step.active === true,
|
|
421
|
+
stop: step.stop === true,
|
|
422
|
+
as,
|
|
423
|
+
ephemeral,
|
|
424
|
+
waitForMs,
|
|
425
|
+
waitUntil,
|
|
426
|
+
};
|
|
427
|
+
}
|
|
246
428
|
function normalizeTrigger(rawTrigger, sourcePath) {
|
|
247
429
|
if (!isPlainObject(rawTrigger))
|
|
248
430
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowNormalizer.js","sourceRoot":"","sources":["../../src/workflow/WorkflowNormalizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkflowNormalizer.js","sourceRoot":"","sources":["../../src/workflow/WorkflowNormalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkflowRegistry — process-wide name → workflow lookup that the
|
|
3
|
+
* sub-workflow primitive uses to find the child to invoke.
|
|
4
|
+
*
|
|
5
|
+
* Triggers (HTTP, future worker/cron, etc.) feed the registry at boot
|
|
6
|
+
* by calling `registerAll()` with the workflows they discovered. The
|
|
7
|
+
* `SubworkflowNode` then calls `get(name)` at run time to materialize
|
|
8
|
+
* the child.
|
|
9
|
+
*
|
|
10
|
+
* **Lookup contract**: keyed on the workflow's `name:` field — same
|
|
11
|
+
* value the author writes in their workflow definition. Two workflows
|
|
12
|
+
* with the same name from different sources are a load-time error
|
|
13
|
+
* (the registry throws on collision). Re-registration of the same
|
|
14
|
+
* `(name, source)` pair is idempotent (HMR-friendly).
|
|
15
|
+
*
|
|
16
|
+
* **Lifecycle**: singleton, lives for the process. Triggers should
|
|
17
|
+
* `clear()` before re-registering when workflow files change (HMR);
|
|
18
|
+
* the in-repo HTTP trigger does this on every scan.
|
|
19
|
+
*
|
|
20
|
+
* **Why a separate class** (vs reusing the HTTP trigger's RouteEntry[]):
|
|
21
|
+
* - Decoupled from HTTP — worker/cron triggers feed the same registry.
|
|
22
|
+
* - Lookup by `name:` is what authors write; route table is keyed on
|
|
23
|
+
* `(method, path)` which sub-workflow callers don't know.
|
|
24
|
+
* - Test isolation — `resetInstance()` is cheap.
|
|
25
|
+
*/
|
|
26
|
+
export interface RegisteredWorkflow {
|
|
27
|
+
/** The workflow's `name:` field. Sub-workflow steps reference this. */
|
|
28
|
+
readonly name: string;
|
|
29
|
+
/** Filesystem path or `"<inline>"` for builder-constructed workflows. */
|
|
30
|
+
readonly source: string;
|
|
31
|
+
/**
|
|
32
|
+
* Raw workflow object (pre-normalization). The `SubworkflowNode`
|
|
33
|
+
* passes this to `Configuration.init(name, opts, preloaded)` which
|
|
34
|
+
* runs it through `normalizeWorkflow` → resolved nodes.
|
|
35
|
+
*/
|
|
36
|
+
readonly workflow: unknown;
|
|
37
|
+
}
|
|
38
|
+
export declare class WorkflowRegistry {
|
|
39
|
+
private static instance;
|
|
40
|
+
private workflows;
|
|
41
|
+
static getInstance(): WorkflowRegistry;
|
|
42
|
+
/** Test-only — drop the singleton so suites start fresh. */
|
|
43
|
+
static resetInstance(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Register a single workflow. Throws on collision when a workflow
|
|
46
|
+
* with the same `name` is already registered from a different
|
|
47
|
+
* `source`. Re-registration of the same `(name, source)` is a
|
|
48
|
+
* no-op (HMR-friendly).
|
|
49
|
+
*/
|
|
50
|
+
register(entry: RegisteredWorkflow): void;
|
|
51
|
+
/** Convenience — register many at once. Stops on first collision. */
|
|
52
|
+
registerAll(entries: readonly RegisteredWorkflow[]): void;
|
|
53
|
+
/** Fetch the registered workflow by name, or undefined on miss. */
|
|
54
|
+
get(name: string): RegisteredWorkflow | undefined;
|
|
55
|
+
/** Cheap existence check (avoids the `?: undefined` dance). */
|
|
56
|
+
has(name: string): boolean;
|
|
57
|
+
/** Snapshot of all registered workflows — used for error messages. */
|
|
58
|
+
list(): RegisteredWorkflow[];
|
|
59
|
+
/**
|
|
60
|
+
* Drop every registered workflow. Triggers call this before
|
|
61
|
+
* re-scanning on HMR so stale entries don't survive a file rename.
|
|
62
|
+
*/
|
|
63
|
+
clear(): void;
|
|
64
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkflowRegistry — process-wide name → workflow lookup that the
|
|
3
|
+
* sub-workflow primitive uses to find the child to invoke.
|
|
4
|
+
*
|
|
5
|
+
* Triggers (HTTP, future worker/cron, etc.) feed the registry at boot
|
|
6
|
+
* by calling `registerAll()` with the workflows they discovered. The
|
|
7
|
+
* `SubworkflowNode` then calls `get(name)` at run time to materialize
|
|
8
|
+
* the child.
|
|
9
|
+
*
|
|
10
|
+
* **Lookup contract**: keyed on the workflow's `name:` field — same
|
|
11
|
+
* value the author writes in their workflow definition. Two workflows
|
|
12
|
+
* with the same name from different sources are a load-time error
|
|
13
|
+
* (the registry throws on collision). Re-registration of the same
|
|
14
|
+
* `(name, source)` pair is idempotent (HMR-friendly).
|
|
15
|
+
*
|
|
16
|
+
* **Lifecycle**: singleton, lives for the process. Triggers should
|
|
17
|
+
* `clear()` before re-registering when workflow files change (HMR);
|
|
18
|
+
* the in-repo HTTP trigger does this on every scan.
|
|
19
|
+
*
|
|
20
|
+
* **Why a separate class** (vs reusing the HTTP trigger's RouteEntry[]):
|
|
21
|
+
* - Decoupled from HTTP — worker/cron triggers feed the same registry.
|
|
22
|
+
* - Lookup by `name:` is what authors write; route table is keyed on
|
|
23
|
+
* `(method, path)` which sub-workflow callers don't know.
|
|
24
|
+
* - Test isolation — `resetInstance()` is cheap.
|
|
25
|
+
*/
|
|
26
|
+
export class WorkflowRegistry {
|
|
27
|
+
static instance = null;
|
|
28
|
+
workflows = new Map();
|
|
29
|
+
static getInstance() {
|
|
30
|
+
if (!WorkflowRegistry.instance) {
|
|
31
|
+
WorkflowRegistry.instance = new WorkflowRegistry();
|
|
32
|
+
}
|
|
33
|
+
return WorkflowRegistry.instance;
|
|
34
|
+
}
|
|
35
|
+
/** Test-only — drop the singleton so suites start fresh. */
|
|
36
|
+
static resetInstance() {
|
|
37
|
+
WorkflowRegistry.instance = null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Register a single workflow. Throws on collision when a workflow
|
|
41
|
+
* with the same `name` is already registered from a different
|
|
42
|
+
* `source`. Re-registration of the same `(name, source)` is a
|
|
43
|
+
* no-op (HMR-friendly).
|
|
44
|
+
*/
|
|
45
|
+
register(entry) {
|
|
46
|
+
if (!entry.name || entry.name.length === 0) {
|
|
47
|
+
throw new Error("[blok] WorkflowRegistry.register: workflow `name` is required.");
|
|
48
|
+
}
|
|
49
|
+
const existing = this.workflows.get(entry.name);
|
|
50
|
+
if (existing && existing.source !== entry.source) {
|
|
51
|
+
throw new Error(`[blok] WorkflowRegistry: workflow name collision — "${entry.name}" is already registered from "${existing.source}"; cannot also register from "${entry.source}". Workflow names must be unique across the process.`);
|
|
52
|
+
}
|
|
53
|
+
this.workflows.set(entry.name, entry);
|
|
54
|
+
}
|
|
55
|
+
/** Convenience — register many at once. Stops on first collision. */
|
|
56
|
+
registerAll(entries) {
|
|
57
|
+
for (const entry of entries) {
|
|
58
|
+
this.register(entry);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Fetch the registered workflow by name, or undefined on miss. */
|
|
62
|
+
get(name) {
|
|
63
|
+
return this.workflows.get(name);
|
|
64
|
+
}
|
|
65
|
+
/** Cheap existence check (avoids the `?: undefined` dance). */
|
|
66
|
+
has(name) {
|
|
67
|
+
return this.workflows.has(name);
|
|
68
|
+
}
|
|
69
|
+
/** Snapshot of all registered workflows — used for error messages. */
|
|
70
|
+
list() {
|
|
71
|
+
return Array.from(this.workflows.values());
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Drop every registered workflow. Triggers call this before
|
|
75
|
+
* re-scanning on HMR so stale entries don't survive a file rename.
|
|
76
|
+
*/
|
|
77
|
+
clear() {
|
|
78
|
+
this.workflows.clear();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=WorkflowRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowRegistry.js","sourceRoot":"","sources":["../../src/workflow/WorkflowRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAeH,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAC,QAAQ,GAA4B,IAAI,CAAC;IAChD,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAE1D,MAAM,CAAC,WAAW;QACjB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAChC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACpD,CAAC;QACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,4DAA4D;IAC5D,MAAM,CAAC,aAAa;QACnB,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,KAAyB;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CACd,uDAAuD,KAAK,CAAC,IAAI,iCAAiC,QAAQ,CAAC,MAAM,iCAAiC,KAAK,CAAC,MAAM,sDAAsD,CACpN,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,qEAAqE;IACrE,WAAW,CAAC,OAAsC;QACjD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IAED,mEAAmE;IACnE,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,+DAA+D;IAC/D,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,sEAAsE;IACtE,IAAI;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,KAAK;QACJ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blokjs/runner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18.0.0"
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"vitest": "^4.0.18"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@blokjs/helper": "^0.
|
|
42
|
-
"@blokjs/shared": "^0.
|
|
41
|
+
"@blokjs/helper": "^0.4.0",
|
|
42
|
+
"@blokjs/shared": "^0.4.0",
|
|
43
43
|
"@grpc/grpc-js": "^1.12.0",
|
|
44
44
|
"@grpc/proto-loader": "^0.7.13",
|
|
45
45
|
"@opentelemetry/api": "^1.9.0",
|