@proposit/proposit-core 1.0.1 → 1.1.1

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 (114) hide show
  1. package/README.md +0 -1
  2. package/dist/cli/commands/parse.d.ts.map +1 -1
  3. package/dist/cli/commands/parse.js +62 -27
  4. package/dist/cli/commands/parse.js.map +1 -1
  5. package/dist/cli/llm/index.d.ts +5 -4
  6. package/dist/cli/llm/index.d.ts.map +1 -1
  7. package/dist/cli/llm/index.js +15 -3
  8. package/dist/cli/llm/index.js.map +1 -1
  9. package/dist/extensions/argument-ingestion/index.d.ts +9 -0
  10. package/dist/extensions/argument-ingestion/index.d.ts.map +1 -0
  11. package/dist/extensions/argument-ingestion/index.js +11 -0
  12. package/dist/extensions/argument-ingestion/index.js.map +1 -0
  13. package/dist/extensions/argument-ingestion/shared/basics-extension.d.ts +9 -0
  14. package/dist/extensions/argument-ingestion/shared/basics-extension.d.ts.map +1 -0
  15. package/dist/extensions/argument-ingestion/shared/basics-extension.js +25 -0
  16. package/dist/extensions/argument-ingestion/shared/basics-extension.js.map +1 -0
  17. package/dist/extensions/argument-ingestion/shared/finalize-response.d.ts +21 -0
  18. package/dist/extensions/argument-ingestion/shared/finalize-response.d.ts.map +1 -0
  19. package/dist/extensions/argument-ingestion/shared/finalize-response.js +33 -0
  20. package/dist/extensions/argument-ingestion/shared/finalize-response.js.map +1 -0
  21. package/dist/extensions/argument-ingestion/shared/role-derivation.d.ts +11 -0
  22. package/dist/extensions/argument-ingestion/shared/role-derivation.d.ts.map +1 -0
  23. package/dist/extensions/argument-ingestion/shared/role-derivation.js +26 -0
  24. package/dist/extensions/argument-ingestion/shared/role-derivation.js.map +1 -0
  25. package/dist/extensions/argument-ingestion/shared/types.d.ts +34 -0
  26. package/dist/extensions/argument-ingestion/shared/types.d.ts.map +1 -0
  27. package/dist/extensions/argument-ingestion/shared/types.js +16 -0
  28. package/dist/extensions/argument-ingestion/shared/types.js.map +1 -0
  29. package/dist/extensions/argument-ingestion/v1-single-shot.d.ts +18 -0
  30. package/dist/extensions/argument-ingestion/v1-single-shot.d.ts.map +1 -0
  31. package/dist/extensions/argument-ingestion/v1-single-shot.js +105 -0
  32. package/dist/extensions/argument-ingestion/v1-single-shot.js.map +1 -0
  33. package/dist/extensions/basics/schemata.d.ts +39 -0
  34. package/dist/extensions/basics/schemata.d.ts.map +1 -1
  35. package/dist/extensions/basics/schemata.js +21 -7
  36. package/dist/extensions/basics/schemata.js.map +1 -1
  37. package/dist/extensions/openai/errors.d.ts +49 -0
  38. package/dist/extensions/openai/errors.d.ts.map +1 -0
  39. package/dist/extensions/openai/errors.js +85 -0
  40. package/dist/extensions/openai/errors.js.map +1 -0
  41. package/dist/extensions/openai/index.d.ts +7 -0
  42. package/dist/extensions/openai/index.d.ts.map +1 -0
  43. package/dist/extensions/openai/index.js +10 -0
  44. package/dist/extensions/openai/index.js.map +1 -0
  45. package/dist/extensions/openai/provider.d.ts +22 -0
  46. package/dist/extensions/openai/provider.d.ts.map +1 -0
  47. package/dist/extensions/openai/provider.js +385 -0
  48. package/dist/extensions/openai/provider.js.map +1 -0
  49. package/dist/extensions/openai/structured-output.d.ts +18 -0
  50. package/dist/extensions/openai/structured-output.d.ts.map +1 -0
  51. package/dist/extensions/openai/structured-output.js +201 -0
  52. package/dist/extensions/openai/structured-output.js.map +1 -0
  53. package/dist/extensions/openai/types.d.ts +81 -0
  54. package/dist/extensions/openai/types.d.ts.map +1 -0
  55. package/dist/extensions/openai/types.js +21 -0
  56. package/dist/extensions/openai/types.js.map +1 -0
  57. package/dist/lib/core/argument-engine.d.ts.map +1 -1
  58. package/dist/lib/core/argument-engine.js +56 -1
  59. package/dist/lib/core/argument-engine.js.map +1 -1
  60. package/dist/lib/core/expression-manager.d.ts.map +1 -1
  61. package/dist/lib/core/expression-manager.js +16 -30
  62. package/dist/lib/core/expression-manager.js.map +1 -1
  63. package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts +30 -2
  64. package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts.map +1 -1
  65. package/dist/lib/core/premise-engine.d.ts.map +1 -1
  66. package/dist/lib/core/premise-engine.js +7 -13
  67. package/dist/lib/core/premise-engine.js.map +1 -1
  68. package/dist/lib/grammar/repair.js +17 -0
  69. package/dist/lib/grammar/repair.js.map +1 -1
  70. package/dist/lib/grammar/validators/evaluable.d.ts +10 -0
  71. package/dist/lib/grammar/validators/evaluable.d.ts.map +1 -1
  72. package/dist/lib/grammar/validators/evaluable.js +10 -0
  73. package/dist/lib/grammar/validators/evaluable.js.map +1 -1
  74. package/dist/lib/grammar/validators/structural.d.ts +12 -6
  75. package/dist/lib/grammar/validators/structural.d.ts.map +1 -1
  76. package/dist/lib/grammar/validators/structural.js +13 -19
  77. package/dist/lib/grammar/validators/structural.js.map +1 -1
  78. package/dist/lib/index.d.ts +8 -0
  79. package/dist/lib/index.d.ts.map +1 -1
  80. package/dist/lib/index.js +15 -0
  81. package/dist/lib/index.js.map +1 -1
  82. package/dist/lib/llm/index.d.ts +2 -0
  83. package/dist/lib/llm/index.d.ts.map +1 -0
  84. package/dist/lib/llm/index.js +3 -0
  85. package/dist/lib/llm/index.js.map +1 -0
  86. package/dist/lib/llm/types.d.ts +49 -0
  87. package/dist/lib/llm/types.d.ts.map +1 -0
  88. package/dist/lib/llm/types.js +15 -0
  89. package/dist/lib/llm/types.js.map +1 -0
  90. package/dist/lib/pipelines/execute.d.ts +23 -0
  91. package/dist/lib/pipelines/execute.d.ts.map +1 -0
  92. package/dist/lib/pipelines/execute.js +541 -0
  93. package/dist/lib/pipelines/execute.js.map +1 -0
  94. package/dist/lib/pipelines/index.d.ts +7 -0
  95. package/dist/lib/pipelines/index.d.ts.map +1 -0
  96. package/dist/lib/pipelines/index.js +5 -0
  97. package/dist/lib/pipelines/index.js.map +1 -0
  98. package/dist/lib/pipelines/stage-helpers.d.ts +94 -0
  99. package/dist/lib/pipelines/stage-helpers.d.ts.map +1 -0
  100. package/dist/lib/pipelines/stage-helpers.js +354 -0
  101. package/dist/lib/pipelines/stage-helpers.js.map +1 -0
  102. package/dist/lib/pipelines/types.d.ts +88 -0
  103. package/dist/lib/pipelines/types.d.ts.map +1 -0
  104. package/dist/lib/pipelines/types.js +36 -0
  105. package/dist/lib/pipelines/types.js.map +1 -0
  106. package/package.json +14 -1
  107. package/dist/cli/llm/openai.d.ts +0 -4
  108. package/dist/cli/llm/openai.d.ts.map +0 -1
  109. package/dist/cli/llm/openai.js +0 -44
  110. package/dist/cli/llm/openai.js.map +0 -1
  111. package/dist/cli/llm/types.d.ts +0 -14
  112. package/dist/cli/llm/types.d.ts.map +0 -1
  113. package/dist/cli/llm/types.js +0 -2
  114. package/dist/cli/llm/types.js.map +0 -1
@@ -0,0 +1,541 @@
1
+ // The pipeline scheduler.
2
+ //
3
+ // Validates input + DAG up front, then runs eligible stages
4
+ // concurrently (bounded by `concurrencyLimit`). Failure propagation
5
+ // is required-vs-optional aware: a failed stage marks downstream
6
+ // stages with required deps on it as `skipped`; optional dependents
7
+ // run with `ctx.get` returning `undefined`.
8
+ //
9
+ // Schema-validation failures on a stage's `outputSchema` and
10
+ // retry-exhaustion thrown from `llmStage` turn into
11
+ // `ProcessingFailure { severity: "error" }`. Throws that escape are
12
+ // reserved for executor-build errors: DAG misconfiguration, input-
13
+ // schema rejection, and abort (we surface those by returning early
14
+ // with `output: null` for abort; we throw for misconfiguration).
15
+ import { Value } from "typebox/value";
16
+ import { depId, isOptionalDep } from "./types.js";
17
+ import { LlmStageRetryExhaustedError, StageAbortedError, SubPipelineFailedError, readStashedTokenUsage, } from "./stage-helpers.js";
18
+ export class PipelineConfigurationError extends Error {
19
+ code;
20
+ stageId;
21
+ depId;
22
+ constructor(args) {
23
+ super(args.message);
24
+ this.name = "PipelineConfigurationError";
25
+ this.code = args.code;
26
+ this.stageId = args.stageId;
27
+ this.depId = args.depId;
28
+ }
29
+ }
30
+ function now() {
31
+ return typeof performance !== "undefined" && performance.now
32
+ ? performance.now()
33
+ : Date.now();
34
+ }
35
+ function defaultGenerateId() {
36
+ return globalThis.crypto.randomUUID();
37
+ }
38
+ function noopEmit(_event) {
39
+ // intentional no-op
40
+ }
41
+ function validateDag(pipeline) {
42
+ const stageById = new Map();
43
+ for (const stage of pipeline.stages) {
44
+ if (stageById.has(stage.id)) {
45
+ throw new PipelineConfigurationError({
46
+ code: "DUPLICATE_STAGE_ID",
47
+ message: `Duplicate stage id "${stage.id}" in pipeline ${pipeline.id}.`,
48
+ stageId: stage.id,
49
+ });
50
+ }
51
+ stageById.set(stage.id, stage);
52
+ }
53
+ const checkRef = (stageId, deps, kind) => {
54
+ for (const dep of deps) {
55
+ const id = depId(dep);
56
+ if (kind === "stage" && id === stageId) {
57
+ throw new PipelineConfigurationError({
58
+ code: "SELF_DEP",
59
+ message: `Stage "${stageId}" cannot depend on itself.`,
60
+ stageId,
61
+ depId: id,
62
+ });
63
+ }
64
+ if (!stageById.has(id)) {
65
+ throw new PipelineConfigurationError({
66
+ code: "UNKNOWN_DEP",
67
+ message: `${kind === "stage"
68
+ ? `Stage "${stageId}"`
69
+ : `Finalize step in pipeline "${pipeline.id}"`} depends on unknown stage "${id}".`,
70
+ stageId: kind === "stage" ? stageId : undefined,
71
+ depId: id,
72
+ });
73
+ }
74
+ }
75
+ };
76
+ for (const stage of pipeline.stages) {
77
+ checkRef(stage.id, stage.dependsOn, "stage");
78
+ }
79
+ checkRef(pipeline.id, pipeline.finalize.dependsOn, "finalize");
80
+ const visit = new Map();
81
+ for (const stage of pipeline.stages) {
82
+ visit.set(stage.id, "unvisited");
83
+ }
84
+ const stack = [];
85
+ const dfs = (stageId) => {
86
+ const state = visit.get(stageId);
87
+ if (state === "visiting") {
88
+ const cycleStart = stack.indexOf(stageId);
89
+ const cycle = stack.slice(cycleStart).concat(stageId).join(" → ");
90
+ throw new PipelineConfigurationError({
91
+ code: "DAG_CYCLE",
92
+ message: `Cycle detected in pipeline "${pipeline.id}": ${cycle}.`,
93
+ stageId,
94
+ });
95
+ }
96
+ if (state === "visited") {
97
+ return;
98
+ }
99
+ visit.set(stageId, "visiting");
100
+ stack.push(stageId);
101
+ const stage = stageById.get(stageId);
102
+ if (stage) {
103
+ for (const dep of stage.dependsOn) {
104
+ dfs(depId(dep));
105
+ }
106
+ }
107
+ stack.pop();
108
+ visit.set(stageId, "visited");
109
+ };
110
+ for (const stage of pipeline.stages) {
111
+ dfs(stage.id);
112
+ }
113
+ return { stageById };
114
+ }
115
+ export async function executePipeline(pipeline, input, deps) {
116
+ // 1. Input validation. A schema mismatch is a caller bug; we throw.
117
+ // Value.Parse infers its return type from the schema; since
118
+ // pipeline.inputSchema is typed as TSchema, that inference comes
119
+ // out broad — we re-narrow to TInput, which is the caller's
120
+ // declared input type for the pipeline.
121
+ const parsedInput = Value.Parse(pipeline.inputSchema, input);
122
+ const validatedInput = parsedInput;
123
+ // 2. DAG validation. All before any stage runs.
124
+ const { stageById } = validateDag(pipeline);
125
+ const emit = deps.onEvent ?? noopEmit;
126
+ const signal = deps.signal ?? new AbortController().signal;
127
+ const generateId = deps.generateId ?? defaultGenerateId;
128
+ const concurrencyLimit = deps.concurrencyLimit ?? 4;
129
+ const startAt = now();
130
+ emit({
131
+ kind: "pipeline:start",
132
+ pipelineId: pipeline.id,
133
+ pipelineVersion: pipeline.version,
134
+ at: startAt,
135
+ });
136
+ const failures = [];
137
+ const records = new Map();
138
+ // A PipelineConfigurationError raised inside a stage's `run`
139
+ // (i.e. a `ctx.get` called on a non-dependency stage id) is a
140
+ // caller bug, not a recoverable runtime failure. We capture the
141
+ // first one and re-throw after the scheduler drains so the
142
+ // executor still emits the bookend events.
143
+ let capturedConfigError = null;
144
+ // Build per-stage `ctx.get` dep sets up front so we can throw on
145
+ // out-of-deps access.
146
+ const stageDepIds = new Map();
147
+ for (const stage of pipeline.stages) {
148
+ stageDepIds.set(stage.id, new Set(stage.dependsOn.map((d) => depId(d))));
149
+ }
150
+ const finalizeDepIds = new Set(pipeline.finalize.dependsOn.map((d) => depId(d)));
151
+ // -- Helpers --
152
+ const makeCtx = (allowedDeps, contextLabel) => {
153
+ const ctx = {
154
+ input: validatedInput,
155
+ get(stageId) {
156
+ if (!allowedDeps.has(stageId)) {
157
+ throw new PipelineConfigurationError({
158
+ code: "GET_OUTSIDE_DEPS",
159
+ message: `${contextLabel} called ctx.get("${stageId}"), which is not in its dependsOn.`,
160
+ stageId: contextLabel,
161
+ depId: stageId,
162
+ });
163
+ }
164
+ const record = records.get(stageId);
165
+ if (!record)
166
+ return undefined;
167
+ if (record.outcome !== "completed")
168
+ return undefined;
169
+ return record.output;
170
+ },
171
+ stageStatus(stageId) {
172
+ // Mirror the `ctx.get` strictness: stages may only
173
+ // query the status of stages declared in their own
174
+ // `dependsOn` (required OR optional). Querying a
175
+ // non-dependency is a caller bug — surface it loudly
176
+ // rather than silently returning "skipped" for a
177
+ // stage id the calling stage shouldn't be peeking at.
178
+ if (!allowedDeps.has(stageId)) {
179
+ throw new PipelineConfigurationError({
180
+ code: "STATUS_OUTSIDE_DEPS",
181
+ message: `${contextLabel} called ctx.stageStatus("${stageId}"), which is not in its dependsOn.`,
182
+ stageId: contextLabel,
183
+ depId: stageId,
184
+ });
185
+ }
186
+ const record = records.get(stageId);
187
+ if (record)
188
+ return record.outcome;
189
+ return "skipped";
190
+ },
191
+ llm: deps.llm,
192
+ generateId,
193
+ signal,
194
+ emit,
195
+ addFailure: (failure) => {
196
+ failures.push({ ...failure, stage: contextLabel });
197
+ },
198
+ };
199
+ return ctx;
200
+ };
201
+ const isStageEligible = (stage) => {
202
+ for (const dep of stage.dependsOn) {
203
+ const id = depId(dep);
204
+ const record = records.get(id);
205
+ if (isOptionalDep(dep)) {
206
+ // Optional: eligible once the upstream has any final outcome.
207
+ if (!record)
208
+ return false;
209
+ continue;
210
+ }
211
+ if (!record)
212
+ return false;
213
+ if (record.outcome !== "completed")
214
+ return false;
215
+ }
216
+ return true;
217
+ };
218
+ const hasRequiredFailureUpstream = (stage) => {
219
+ for (const dep of stage.dependsOn) {
220
+ if (isOptionalDep(dep))
221
+ continue;
222
+ const record = records.get(depId(dep));
223
+ if (record && record.outcome !== "completed")
224
+ return true;
225
+ }
226
+ return false;
227
+ };
228
+ // -- Stage execution --
229
+ const runStage = async (stage) => {
230
+ if (signal.aborted) {
231
+ // Pending stages don't start once aborted. Emit `stage:start`
232
+ // before `stage:end` so consumers walking the event stream
233
+ // for symmetric pairs (e.g. the SSE bridge in slice 2C) see
234
+ // a balanced sequence — every `stage:end` is preceded by a
235
+ // matching `stage:start`.
236
+ const startAt = now();
237
+ emit({ kind: "stage:start", stageId: stage.id, at: startAt });
238
+ records.set(stage.id, { outcome: "skipped", output: undefined });
239
+ emit({
240
+ kind: "stage:end",
241
+ stageId: stage.id,
242
+ status: "skipped",
243
+ at: now(),
244
+ });
245
+ return;
246
+ }
247
+ emit({ kind: "stage:start", stageId: stage.id, at: now() });
248
+ const ctx = makeCtx(stageDepIds.get(stage.id) ?? new Set(), stage.id);
249
+ try {
250
+ const output = await stage.run(ctx);
251
+ if (!Value.Check(stage.outputSchema, output)) {
252
+ const errors = [...Value.Errors(stage.outputSchema, output)];
253
+ const message = errors
254
+ .map((e) => `${e.instancePath}: ${e.message}`)
255
+ .join("; ");
256
+ failures.push({
257
+ stage: stage.id,
258
+ code: "OUTPUT_SCHEMA_INVALID",
259
+ message,
260
+ severity: "error",
261
+ });
262
+ records.set(stage.id, {
263
+ outcome: "failed",
264
+ output: undefined,
265
+ });
266
+ emit({
267
+ kind: "stage:end",
268
+ stageId: stage.id,
269
+ status: "failed",
270
+ at: now(),
271
+ });
272
+ return;
273
+ }
274
+ const tokenUsage = readStashedTokenUsage(ctx, stage.id);
275
+ records.set(stage.id, {
276
+ outcome: "completed",
277
+ output,
278
+ tokenUsage,
279
+ });
280
+ emit({
281
+ kind: "stage:end",
282
+ stageId: stage.id,
283
+ status: "completed",
284
+ tokenUsage,
285
+ at: now(),
286
+ });
287
+ }
288
+ catch (err) {
289
+ if (err instanceof PipelineConfigurationError) {
290
+ // ctx.get violation — caller bug. Stash for re-throw,
291
+ // mark the stage failed for bookkeeping, and emit
292
+ // stage:end so consumers see a clean per-stage close.
293
+ records.set(stage.id, {
294
+ outcome: "failed",
295
+ output: undefined,
296
+ });
297
+ emit({
298
+ kind: "stage:end",
299
+ stageId: stage.id,
300
+ status: "failed",
301
+ at: now(),
302
+ });
303
+ capturedConfigError ??= err;
304
+ return;
305
+ }
306
+ if (err instanceof StageAbortedError) {
307
+ // Caller cancellation surfaced mid-stage. This is not
308
+ // a stage failure to report — no ProcessingFailure is
309
+ // recorded — and the outcome is `skipped` rather than
310
+ // `failed` so consumers can distinguish abort from a
311
+ // genuine provider error.
312
+ records.set(stage.id, {
313
+ outcome: "skipped",
314
+ output: undefined,
315
+ });
316
+ emit({
317
+ kind: "stage:end",
318
+ stageId: stage.id,
319
+ status: "skipped",
320
+ at: now(),
321
+ });
322
+ return;
323
+ }
324
+ if (err instanceof LlmStageRetryExhaustedError) {
325
+ failures.push({
326
+ stage: stage.id,
327
+ code: err.code,
328
+ message: err.message,
329
+ severity: "error",
330
+ context: err.failureContext,
331
+ });
332
+ records.set(stage.id, {
333
+ outcome: "failed",
334
+ output: undefined,
335
+ });
336
+ emit({
337
+ kind: "stage:end",
338
+ stageId: stage.id,
339
+ status: "failed",
340
+ at: now(),
341
+ });
342
+ return;
343
+ }
344
+ if (err instanceof SubPipelineFailedError) {
345
+ failures.push({
346
+ stage: stage.id,
347
+ code: err.code,
348
+ message: err.message,
349
+ severity: "error",
350
+ context: err.failureContext,
351
+ });
352
+ records.set(stage.id, {
353
+ outcome: "failed",
354
+ output: undefined,
355
+ });
356
+ emit({
357
+ kind: "stage:end",
358
+ stageId: stage.id,
359
+ status: "failed",
360
+ at: now(),
361
+ });
362
+ return;
363
+ }
364
+ const message = err instanceof Error ? err.message : String(err);
365
+ failures.push({
366
+ stage: stage.id,
367
+ code: "STAGE_UNCAUGHT_ERROR",
368
+ message,
369
+ severity: "error",
370
+ });
371
+ records.set(stage.id, { outcome: "failed", output: undefined });
372
+ emit({
373
+ kind: "stage:end",
374
+ stageId: stage.id,
375
+ status: "failed",
376
+ at: now(),
377
+ });
378
+ }
379
+ };
380
+ // -- Scheduler loop --
381
+ //
382
+ // We maintain a pool of in-flight stage promises capped at
383
+ // concurrencyLimit. On each iteration, we mark newly skip-eligible
384
+ // stages (whose required deps are known-failed), then start any
385
+ // eligible stages until either the pool is full or no eligible
386
+ // stages remain. We await `Promise.race(pool)` to yield, then loop.
387
+ const remaining = new Set(pipeline.stages.map((s) => s.id));
388
+ const pool = [];
389
+ while (remaining.size > 0 || pool.length > 0) {
390
+ // Eagerly mark skipped stages whose required deps are now failed.
391
+ let skippedAny = true;
392
+ while (skippedAny) {
393
+ skippedAny = false;
394
+ for (const id of remaining) {
395
+ const stage = stageById.get(id);
396
+ if (!stage)
397
+ continue;
398
+ if (hasRequiredFailureUpstream(stage)) {
399
+ records.set(stage.id, {
400
+ outcome: "skipped",
401
+ output: undefined,
402
+ });
403
+ emit({
404
+ kind: "stage:start",
405
+ stageId: stage.id,
406
+ at: now(),
407
+ });
408
+ emit({
409
+ kind: "stage:end",
410
+ stageId: stage.id,
411
+ status: "skipped",
412
+ at: now(),
413
+ });
414
+ remaining.delete(id);
415
+ skippedAny = true;
416
+ break;
417
+ }
418
+ }
419
+ }
420
+ // Start eligible stages up to the concurrency cap.
421
+ let startedSomething = true;
422
+ while (startedSomething && pool.length < concurrencyLimit) {
423
+ startedSomething = false;
424
+ for (const id of remaining) {
425
+ const stage = stageById.get(id);
426
+ if (!stage)
427
+ continue;
428
+ if (!isStageEligible(stage))
429
+ continue;
430
+ remaining.delete(id);
431
+ const promise = runStage(stage).then(() => {
432
+ const idx = pool.findIndex((p) => p.id === id);
433
+ if (idx >= 0)
434
+ pool.splice(idx, 1);
435
+ }, (err) => {
436
+ const idx = pool.findIndex((p) => p.id === id);
437
+ if (idx >= 0)
438
+ pool.splice(idx, 1);
439
+ throw err;
440
+ });
441
+ pool.push({ id, promise });
442
+ startedSomething = true;
443
+ if (pool.length >= concurrencyLimit)
444
+ break;
445
+ }
446
+ }
447
+ if (pool.length === 0) {
448
+ // Nothing in flight and nothing eligible. If `remaining`
449
+ // is non-empty, those stages are unreachable — DAG
450
+ // validation should have caught this; fail loudly.
451
+ if (remaining.size > 0) {
452
+ throw new PipelineConfigurationError({
453
+ code: "DAG_CYCLE",
454
+ message: `Unreachable stages remain at scheduler exhaustion: ${[
455
+ ...remaining,
456
+ ].join(", ")}.`,
457
+ });
458
+ }
459
+ break;
460
+ }
461
+ await Promise.race(pool.map((p) => p.promise));
462
+ }
463
+ // Wait for the pool to drain (race exits at the first settled
464
+ // promise; we want them all settled).
465
+ await Promise.allSettled(pool.map((p) => p.promise));
466
+ // If a stage observed a configuration violation (ctx.get on a
467
+ // non-dep), surface that as a thrown error after emitting the
468
+ // pipeline:end bookend so event consumers still see a clean
469
+ // close.
470
+ if (capturedConfigError !== null) {
471
+ const err = capturedConfigError;
472
+ emit({
473
+ kind: "pipeline:end",
474
+ status: "failed",
475
+ output: "null",
476
+ at: now(),
477
+ });
478
+ throw err;
479
+ }
480
+ // -- Finalize --
481
+ let output = null;
482
+ const finalizeRequiredOk = () => {
483
+ for (const dep of pipeline.finalize.dependsOn) {
484
+ if (isOptionalDep(dep))
485
+ continue;
486
+ const record = records.get(depId(dep));
487
+ if (record?.outcome !== "completed")
488
+ return false;
489
+ }
490
+ return true;
491
+ };
492
+ if (finalizeRequiredOk() && !signal.aborted) {
493
+ const finalizeCtx = makeCtx(finalizeDepIds, "finalize");
494
+ try {
495
+ output = pipeline.finalize.run(finalizeCtx);
496
+ }
497
+ catch (err) {
498
+ const message = err instanceof Error ? err.message : String(err);
499
+ failures.push({
500
+ stage: "finalize",
501
+ code: "FINALIZE_UNCAUGHT_ERROR",
502
+ message,
503
+ severity: "error",
504
+ });
505
+ output = null;
506
+ }
507
+ }
508
+ // Aggregate stage outcomes + token usage.
509
+ const stageOutcomes = {};
510
+ let aggregatedTokens;
511
+ for (const stage of pipeline.stages) {
512
+ const record = records.get(stage.id);
513
+ stageOutcomes[stage.id] = record?.outcome ?? "skipped";
514
+ if (record?.tokenUsage) {
515
+ aggregatedTokens ??= { input: 0, output: 0 };
516
+ aggregatedTokens.input += record.tokenUsage.input;
517
+ aggregatedTokens.output += record.tokenUsage.output;
518
+ if (record.tokenUsage.reasoning !== undefined) {
519
+ aggregatedTokens.reasoning =
520
+ (aggregatedTokens.reasoning ?? 0) +
521
+ record.tokenUsage.reasoning;
522
+ }
523
+ }
524
+ }
525
+ const endStatus = signal.aborted
526
+ ? "failed"
527
+ : "completed";
528
+ emit({
529
+ kind: "pipeline:end",
530
+ status: endStatus,
531
+ output: output === null ? "null" : "present",
532
+ at: now(),
533
+ });
534
+ return {
535
+ output,
536
+ failures,
537
+ stageOutcomes,
538
+ tokenUsage: aggregatedTokens,
539
+ };
540
+ }
541
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/lib/pipelines/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { optional, isOptionalDep, depId } from "./types.js";
2
+ export type { TDepSpec, TOptionalDep, TStage, TStageContext, TStageStatus, TPipeline, TPipelineFinalize, TProcessingFailure, TPipelineResult, TPipelineEvent, } from "./types.js";
3
+ export { deterministicStage, llmStage, subPipelineStage, DEFAULT_RETRY_POLICY, LlmStageRetryExhaustedError, StageAbortedError, SubPipelineFailedError, } from "./stage-helpers.js";
4
+ export type { TRetryPolicy, TRetryReason } from "./stage-helpers.js";
5
+ export { executePipeline, PipelineConfigurationError } from "./execute.js";
6
+ export type { TExecutePipelineDeps } from "./execute.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/pipelines/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC3D,YAAY,EACR,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,cAAc,GACjB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACH,kBAAkB,EAClB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEpE,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAC1E,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,5 @@
1
+ // Public barrel for the pipeline framework.
2
+ export { optional, isOptionalDep, depId } from "./types.js";
3
+ export { deterministicStage, llmStage, subPipelineStage, DEFAULT_RETRY_POLICY, LlmStageRetryExhaustedError, StageAbortedError, SubPipelineFailedError, } from "./stage-helpers.js";
4
+ export { executePipeline, PipelineConfigurationError } from "./execute.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pipelines/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAc3D,OAAO,EACH,kBAAkB,EAClB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA"}