@proposit/proposit-core 2.3.1 → 2.4.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.
- package/dist/cli/builder-repl.d.ts +3 -0
- package/dist/cli/builder-repl.d.ts.map +1 -0
- package/dist/cli/builder-repl.js +174 -0
- package/dist/cli/builder-repl.js.map +1 -0
- package/dist/extensions/builder/distill.d.ts +38 -0
- package/dist/extensions/builder/distill.d.ts.map +1 -0
- package/dist/extensions/builder/distill.js +81 -0
- package/dist/extensions/builder/distill.js.map +1 -0
- package/dist/extensions/builder/index.d.ts +7 -0
- package/dist/extensions/builder/index.d.ts.map +1 -0
- package/dist/extensions/builder/index.js +11 -0
- package/dist/extensions/builder/index.js.map +1 -0
- package/dist/extensions/builder/review.d.ts +11 -0
- package/dist/extensions/builder/review.d.ts.map +1 -0
- package/dist/extensions/builder/review.js +32 -0
- package/dist/extensions/builder/review.js.map +1 -0
- package/dist/extensions/builder/simulate.d.ts +12 -0
- package/dist/extensions/builder/simulate.d.ts.map +1 -0
- package/dist/extensions/builder/simulate.js +33 -0
- package/dist/extensions/builder/simulate.js.map +1 -0
- package/dist/extensions/openai/provider.d.ts.map +1 -1
- package/dist/extensions/openai/provider.js +3 -0
- package/dist/extensions/openai/provider.js.map +1 -1
- package/dist/extensions/openai/types.d.ts +2 -0
- package/dist/extensions/openai/types.d.ts.map +1 -1
- package/dist/lib/conversation/contract.d.ts +16 -0
- package/dist/lib/conversation/contract.d.ts.map +1 -0
- package/dist/lib/conversation/contract.js +9 -0
- package/dist/lib/conversation/contract.js.map +1 -0
- package/dist/lib/conversation/conversation.d.ts +43 -0
- package/dist/lib/conversation/conversation.d.ts.map +1 -0
- package/dist/lib/conversation/conversation.js +65 -0
- package/dist/lib/conversation/conversation.js.map +1 -0
- package/dist/lib/conversation/index.d.ts +8 -0
- package/dist/lib/conversation/index.d.ts.map +1 -0
- package/dist/lib/conversation/index.js +7 -0
- package/dist/lib/conversation/index.js.map +1 -0
- package/dist/lib/conversation/turn.d.ts +55 -0
- package/dist/lib/conversation/turn.d.ts.map +1 -0
- package/dist/lib/conversation/turn.js +112 -0
- package/dist/lib/conversation/turn.js.map +1 -0
- package/dist/lib/core/expression-manager-checks.d.ts +73 -0
- package/dist/lib/core/expression-manager-checks.d.ts.map +1 -0
- package/dist/lib/core/expression-manager-checks.js +355 -0
- package/dist/lib/core/expression-manager-checks.js.map +1 -0
- package/dist/lib/core/expression-manager-dirty-set.d.ts +21 -0
- package/dist/lib/core/expression-manager-dirty-set.d.ts.map +1 -0
- package/dist/lib/core/expression-manager-dirty-set.js +93 -0
- package/dist/lib/core/expression-manager-dirty-set.js.map +1 -0
- package/dist/lib/core/expression-manager-invariants.d.ts +14 -0
- package/dist/lib/core/expression-manager-invariants.d.ts.map +1 -0
- package/dist/lib/core/expression-manager-invariants.js +171 -0
- package/dist/lib/core/expression-manager-invariants.js.map +1 -0
- package/dist/lib/core/expression-manager.d.ts +2 -3
- package/dist/lib/core/expression-manager.d.ts.map +1 -1
- package/dist/lib/core/expression-manager.js +18 -523
- package/dist/lib/core/expression-manager.js.map +1 -1
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +6 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/llm/index.d.ts +1 -1
- package/dist/lib/llm/index.d.ts.map +1 -1
- package/dist/lib/llm/types.d.ts +13 -0
- package/dist/lib/llm/types.d.ts.map +1 -1
- package/dist/lib/parsing/prompt-builder.d.ts.map +1 -1
- package/dist/lib/parsing/prompt-builder.js +13 -5
- package/dist/lib/parsing/prompt-builder.js.map +1 -1
- package/dist/lib/pipelines/index.d.ts +4 -2
- package/dist/lib/pipelines/index.d.ts.map +1 -1
- package/dist/lib/pipelines/index.js +2 -1
- package/dist/lib/pipelines/index.js.map +1 -1
- package/dist/lib/pipelines/llm-stage-helpers.d.ts +126 -0
- package/dist/lib/pipelines/llm-stage-helpers.d.ts.map +1 -0
- package/dist/lib/pipelines/llm-stage-helpers.js +567 -0
- package/dist/lib/pipelines/llm-stage-helpers.js.map +1 -0
- package/dist/lib/pipelines/scheduler.d.ts +62 -0
- package/dist/lib/pipelines/scheduler.d.ts.map +1 -0
- package/dist/lib/pipelines/{execute.js → scheduler.js} +8 -325
- package/dist/lib/pipelines/scheduler.js.map +1 -0
- package/dist/lib/pipelines/{execute.d.ts → single-stage.d.ts} +2 -22
- package/dist/lib/pipelines/{execute.d.ts.map → single-stage.d.ts.map} +1 -1
- package/dist/lib/pipelines/single-stage.js +333 -0
- package/dist/lib/pipelines/single-stage.js.map +1 -0
- package/dist/lib/pipelines/stage-helpers.d.ts +4 -123
- package/dist/lib/pipelines/stage-helpers.d.ts.map +1 -1
- package/dist/lib/pipelines/stage-helpers.js +28 -567
- package/dist/lib/pipelines/stage-helpers.js.map +1 -1
- package/package.json +13 -3
- package/dist/lib/pipelines/execute.js.map +0 -1
|
@@ -3,14 +3,16 @@
|
|
|
3
3
|
// - `deterministicStage` — pure (or async-pure) compute, no LLM call.
|
|
4
4
|
// - `llmStage` — wraps an LLM call with structured-output validation
|
|
5
5
|
// and the framework retry policy (schema-validation + transient).
|
|
6
|
+
// Implementation lives in `llm-stage-helpers.ts`; this file re-exports
|
|
7
|
+
// it (and its supporting seam functions) so the ~20 existing direct
|
|
8
|
+
// import sites under `src/extensions/` and the public barrel see no
|
|
9
|
+
// path change.
|
|
6
10
|
// - `subPipelineStage` — recursively executes a nested pipeline as a
|
|
7
11
|
// single stage in the outer pipeline. Reserved for future
|
|
8
12
|
// composition; implemented + tested but not yet used by any shipped
|
|
9
13
|
// pipeline.
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
import { executePipeline } from "./execute.js";
|
|
13
|
-
import { LLM_NON_RETRYABLE_ERROR, LLM_QUOTA_EXHAUSTED, LLM_RATE_LIMITED, LLM_TRANSIENT_ERROR, LLM_UNKNOWN_ERROR, OUTPUT_SCHEMA_INVALID, } from "./failure-codes.js";
|
|
14
|
+
import { executePipeline } from "./scheduler.js";
|
|
15
|
+
export { readLlmStageConfig, isLlmStage, applyRetrySuffix, buildLlmRequest, validateLlmOutcome, failureRetryReason, llmStage, LlmStageRetryExhaustedError, } from "./llm-stage-helpers.js";
|
|
14
16
|
// -- Deterministic --
|
|
15
17
|
export function deterministicStage(config) {
|
|
16
18
|
return {
|
|
@@ -26,23 +28,6 @@ export const DEFAULT_RETRY_POLICY = {
|
|
|
26
28
|
retryOn: ["schema_validation", "transient"],
|
|
27
29
|
maxAppendedErrorBytes: 2048,
|
|
28
30
|
};
|
|
29
|
-
const TRUNCATION_SUFFIX = "…<truncated>";
|
|
30
|
-
function truncateValidationError(error, capBytes) {
|
|
31
|
-
// NOTE: `capBytes` is measured in JavaScript `string.length` —
|
|
32
|
-
// UTF-16 code units, not UTF-8 bytes. The spec (§6.3) phrases the
|
|
33
|
-
// cap as "bytes"; for ASCII-heavy validation errors the two are
|
|
34
|
-
// equal, and for non-ASCII paths a 2048 cap is roughly 2–4 KB of
|
|
35
|
-
// UTF-8 depending on character distribution. We accept this drift
|
|
36
|
-
// for V1: realistic TypeBox validation errors are short and
|
|
37
|
-
// English; a future polish pass can switch to
|
|
38
|
-
// `new TextEncoder().encode(error).length` if a real workload
|
|
39
|
-
// shows the distinction matters.
|
|
40
|
-
if (error.length <= capBytes) {
|
|
41
|
-
return error;
|
|
42
|
-
}
|
|
43
|
-
const head = Math.max(0, capBytes - TRUNCATION_SUFFIX.length);
|
|
44
|
-
return error.slice(0, head) + TRUNCATION_SUFFIX;
|
|
45
|
-
}
|
|
46
31
|
/**
|
|
47
32
|
* Thrown by any stage when an `AbortSignal` cancels execution
|
|
48
33
|
* mid-flight. The executor recognizes this class and marks the stage
|
|
@@ -60,6 +45,28 @@ export class StageAbortedError extends Error {
|
|
|
60
45
|
this.stageId = args.stageId;
|
|
61
46
|
}
|
|
62
47
|
}
|
|
48
|
+
// -- Token-usage side channel ---------------------------------------------
|
|
49
|
+
//
|
|
50
|
+
// llmStage (in llm-stage-helpers.ts) and the executor (in scheduler.ts)
|
|
51
|
+
// share a tiny side-channel so the executor can attach token usage to the
|
|
52
|
+
// matching `stage:end` event without changing the stage `run` return
|
|
53
|
+
// shape. The side channel is a per-pipeline-run weak map keyed by the
|
|
54
|
+
// StageContext object. `stashTokenUsage` is exported (rather than kept
|
|
55
|
+
// module-private) solely so `llmStage`'s implementation, which now lives
|
|
56
|
+
// in the sibling `llm-stage-helpers.ts`, can write into the same map
|
|
57
|
+
// `readStashedTokenUsage` reads from.
|
|
58
|
+
const TOKEN_USAGE_CHANNELS = new WeakMap();
|
|
59
|
+
export function stashTokenUsage(ctx, stageId, usage) {
|
|
60
|
+
let bucket = TOKEN_USAGE_CHANNELS.get(ctx);
|
|
61
|
+
if (!bucket) {
|
|
62
|
+
bucket = new Map();
|
|
63
|
+
TOKEN_USAGE_CHANNELS.set(ctx, bucket);
|
|
64
|
+
}
|
|
65
|
+
bucket.set(stageId, usage);
|
|
66
|
+
}
|
|
67
|
+
export function readStashedTokenUsage(ctx, stageId) {
|
|
68
|
+
return TOKEN_USAGE_CHANNELS.get(ctx)?.get(stageId);
|
|
69
|
+
}
|
|
63
70
|
/**
|
|
64
71
|
* Thrown by `subPipelineStage`'s wrapper when the nested pipeline
|
|
65
72
|
* returns `output: null` (any required dep of its finalize was
|
|
@@ -81,552 +88,6 @@ export class SubPipelineFailedError extends Error {
|
|
|
81
88
|
this.failureContext = args.context;
|
|
82
89
|
}
|
|
83
90
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Thrown internally by `llmStage` after retry exhaustion. The
|
|
86
|
-
* executor catches it and converts it into a `ProcessingFailure`.
|
|
87
|
-
*/
|
|
88
|
-
export class LlmStageRetryExhaustedError extends Error {
|
|
89
|
-
reason;
|
|
90
|
-
code;
|
|
91
|
-
attempts;
|
|
92
|
-
stageId;
|
|
93
|
-
failureContext;
|
|
94
|
-
constructor(args) {
|
|
95
|
-
super(args.message);
|
|
96
|
-
this.name = "LlmStageRetryExhaustedError";
|
|
97
|
-
this.stageId = args.stageId;
|
|
98
|
-
this.reason = args.reason;
|
|
99
|
-
this.code = args.code;
|
|
100
|
-
this.attempts = args.attempts;
|
|
101
|
-
this.failureContext = args.context;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
function classifyError(err) {
|
|
105
|
-
if (typeof err !== "object" || err === null) {
|
|
106
|
-
return "non_retryable";
|
|
107
|
-
}
|
|
108
|
-
const tag = err.retryReason;
|
|
109
|
-
if (tag === "transient" ||
|
|
110
|
-
tag === "rate_limit" ||
|
|
111
|
-
tag === "quota_exhausted") {
|
|
112
|
-
return tag;
|
|
113
|
-
}
|
|
114
|
-
return "non_retryable";
|
|
115
|
-
}
|
|
116
|
-
async function sleep(ms, signal) {
|
|
117
|
-
if (ms <= 0)
|
|
118
|
-
return;
|
|
119
|
-
if (signal.aborted)
|
|
120
|
-
return;
|
|
121
|
-
await new Promise((resolve) => {
|
|
122
|
-
const timer = setTimeout(() => {
|
|
123
|
-
signal.removeEventListener("abort", onAbort);
|
|
124
|
-
resolve();
|
|
125
|
-
}, ms);
|
|
126
|
-
const onAbort = () => {
|
|
127
|
-
clearTimeout(timer);
|
|
128
|
-
signal.removeEventListener("abort", onAbort);
|
|
129
|
-
resolve();
|
|
130
|
-
};
|
|
131
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
function emitRetry(ctx, stageId, attempt, reason) {
|
|
135
|
-
const event = {
|
|
136
|
-
kind: "stage:retry",
|
|
137
|
-
stageId,
|
|
138
|
-
attempt,
|
|
139
|
-
reason,
|
|
140
|
-
at: now(),
|
|
141
|
-
};
|
|
142
|
-
ctx.emit(event);
|
|
143
|
-
}
|
|
144
|
-
function now() {
|
|
145
|
-
return typeof performance !== "undefined" && performance.now
|
|
146
|
-
? performance.now()
|
|
147
|
-
: Date.now();
|
|
148
|
-
}
|
|
149
|
-
// Internal-symbol key for the config carrier. Not exported, so no consumer
|
|
150
|
-
// can read or forge it; only this module's `readLlmStageConfig` recovers it.
|
|
151
|
-
const LLM_STAGE_CONFIG = Symbol("propositLlmStageConfig");
|
|
152
|
-
/**
|
|
153
|
-
* Recover the resolved `llmStage` config from a stage built by
|
|
154
|
-
* `llmStage`. Returns `undefined` for any stage that is not an LLM stage
|
|
155
|
-
* (a deterministic / sub-pipeline stage carries no config). Package-internal.
|
|
156
|
-
*/
|
|
157
|
-
export function readLlmStageConfig(stage) {
|
|
158
|
-
return stage[LLM_STAGE_CONFIG];
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* True iff `stage` is an LLM-background stage — one built by `llmStage` that
|
|
162
|
-
* carries the resolved LLM config and is therefore driven by `launchStage` /
|
|
163
|
-
* `completeStage`. False for deterministic and sub-pipeline stages (drive those
|
|
164
|
-
* with `executeStage`). Mirrors exactly the check `launchStage`/`completeStage`
|
|
165
|
-
* apply internally, so a consumer driving a pipeline out-of-process can route a
|
|
166
|
-
* stage to the right driver without catching a thrown `PipelineConfigurationError`.
|
|
167
|
-
*/
|
|
168
|
-
export function isLlmStage(stage) {
|
|
169
|
-
return readLlmStageConfig(stage) != null;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Append the retry-suffix the in-process loop adds after a failed
|
|
173
|
-
* schema-validation attempt. Shared by the loop and `launchStage` (so a
|
|
174
|
-
* re-launched attempt 2+ rebuilds the identical `userMessage`).
|
|
175
|
-
* Package-internal.
|
|
176
|
-
*/
|
|
177
|
-
export function applyRetrySuffix(baseUser, validationError, errorCap) {
|
|
178
|
-
const truncated = truncateValidationError(validationError, errorCap);
|
|
179
|
-
return (baseUser +
|
|
180
|
-
"\n\nYour previous response failed schema validation: " +
|
|
181
|
-
truncated +
|
|
182
|
-
". Please retry conforming to the schema.");
|
|
183
|
-
}
|
|
184
|
-
// Resolved error-cap for a config's retry policy (the per-retry appended
|
|
185
|
-
// validation-error byte bound), defaulted the same way the factory does.
|
|
186
|
-
function resolveErrorCap(policy) {
|
|
187
|
-
return (policy.maxAppendedErrorBytes ??
|
|
188
|
-
DEFAULT_RETRY_POLICY.maxAppendedErrorBytes ??
|
|
189
|
-
2048);
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Front half of the seam: build the per-attempt prompts + `TLlmRequest`.
|
|
193
|
-
* `userMessage` overrides the prompt's user message (the loop / launch
|
|
194
|
-
* pass the retry-suffixed message on attempt 2+); it defaults to
|
|
195
|
-
* `buildPrompt(ctx).user`. The returned `req` carries NO `onResponseCreated`
|
|
196
|
-
* — the in-process loop attaches its own emitter; the launch path uses the
|
|
197
|
-
* submit return value instead. Package-internal.
|
|
198
|
-
*/
|
|
199
|
-
export function buildLlmRequest(cfg, ctx, userMessage) {
|
|
200
|
-
const prompt = cfg.buildPrompt(ctx);
|
|
201
|
-
const user = userMessage ?? prompt.user;
|
|
202
|
-
const req = {
|
|
203
|
-
model: cfg.model,
|
|
204
|
-
reasoningEffort: cfg.reasoningEffort,
|
|
205
|
-
systemPrompt: prompt.system,
|
|
206
|
-
userMessage: user,
|
|
207
|
-
outputSchema: cfg.outputSchema,
|
|
208
|
-
tools: cfg.tools,
|
|
209
|
-
maxOutputTokens: cfg.maxOutputTokens,
|
|
210
|
-
signal: ctx.signal,
|
|
211
|
-
};
|
|
212
|
-
return { req, prompts: { system: prompt.system, user } };
|
|
213
|
-
}
|
|
214
|
-
// The genuinely-shared validation core: check a PARSED output value
|
|
215
|
-
// against the stage schema and format the validation error. Used by both
|
|
216
|
-
// the in-process loop (output already parsed by the provider) and
|
|
217
|
-
// `validateLlmOutcome`'s completed branch (output parsed from raw text).
|
|
218
|
-
// Truncate every string longer than its schema's `maxLength` to that cap,
|
|
219
|
-
// mutating `value` in place. Driven off the validator's own `maxLength`
|
|
220
|
-
// errors (which carry the JSON-pointer path + the limit), so it handles
|
|
221
|
-
// nested objects, arrays, and discriminated unions without walking the
|
|
222
|
-
// schema by hand. Re-runs because a union surfaces a failing variant's
|
|
223
|
-
// inner errors only once its siblings are reconciled; truncation is
|
|
224
|
-
// monotonic (strings only shrink) so the loop converges. The pass cap is a
|
|
225
|
-
// backstop against a degenerate schema.
|
|
226
|
-
//
|
|
227
|
-
// Truncation is non-fatal (ingestion output is human-proofread before
|
|
228
|
-
// publish), so it does not surface to the caller. It does emit a
|
|
229
|
-
// debug-gated breadcrumb per clipped field — the only signal of whether
|
|
230
|
-
// the upstream length steering (shrunk wire `maxLength` + budget hint)
|
|
231
|
-
// is still letting overshoots through. `stageId` tags the breadcrumb so
|
|
232
|
-
// it groups with the stage's other diagnostic lines.
|
|
233
|
-
function clampMaxLengthStrings(stageId, schema, value) {
|
|
234
|
-
for (let pass = 0; pass < 16; pass++) {
|
|
235
|
-
let changed = false;
|
|
236
|
-
for (const err of Value.Errors(schema, value)) {
|
|
237
|
-
if (err.keyword !== "maxLength")
|
|
238
|
-
continue;
|
|
239
|
-
const limit = err.params.limit;
|
|
240
|
-
const current = Pointer.Get(value, err.instancePath);
|
|
241
|
-
if (typeof current === "string" && current.length > limit) {
|
|
242
|
-
debugMaxLengthTruncation({
|
|
243
|
-
stageId,
|
|
244
|
-
instancePath: err.instancePath,
|
|
245
|
-
limit,
|
|
246
|
-
originalLength: current.length,
|
|
247
|
-
});
|
|
248
|
-
Pointer.Set(value, err.instancePath, current.slice(0, limit));
|
|
249
|
-
changed = true;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
if (!changed)
|
|
253
|
-
break;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
function checkLlmOutput(cfg, output) {
|
|
257
|
-
if (Value.Check(cfg.outputSchema, output)) {
|
|
258
|
-
return { valid: true };
|
|
259
|
-
}
|
|
260
|
-
// OpenAI strict structured-output IGNORES JSON-Schema string `maxLength`,
|
|
261
|
-
// so a model can return an over-long string the schema forbids — a
|
|
262
|
-
// recoverable issue that must NOT fail the whole stage. Truncate any
|
|
263
|
-
// over-long string to its declared cap (in place) and re-check, rather
|
|
264
|
-
// than rejecting the output and halting the pipeline.
|
|
265
|
-
clampMaxLengthStrings(cfg.id, cfg.outputSchema, output);
|
|
266
|
-
if (Value.Check(cfg.outputSchema, output)) {
|
|
267
|
-
return { valid: true };
|
|
268
|
-
}
|
|
269
|
-
const errors = [...Value.Errors(cfg.outputSchema, output)];
|
|
270
|
-
const validationError = errors
|
|
271
|
-
.map((e) => `${e.instancePath}: ${e.message}`)
|
|
272
|
-
.join("; ");
|
|
273
|
-
return { valid: false, validationError };
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Back half of the seam: turn a retrieved background response (RAW
|
|
277
|
-
* assistant text + terminal status + `incompleteReason`) into an outcome
|
|
278
|
-
* + optional typed output + a retry classification.
|
|
279
|
-
*
|
|
280
|
-
* The parse + `Value.Check` half is genuinely shared with the in-process
|
|
281
|
-
* loop (via `checkLlmOutput`). The status/reason → outcome+retry mapping
|
|
282
|
-
* is a DELIBERATE `lib/`-side MIRROR of the OpenAI provider's
|
|
283
|
-
* classification (`extensions/openai/provider.ts`): `src/lib/` may not
|
|
284
|
-
* import the extension classifier (the zero-SDK-import invariant), so the
|
|
285
|
-
* mapping is duplicated here and pinned to the provider by a contract test.
|
|
286
|
-
* Package-internal.
|
|
287
|
-
*/
|
|
288
|
-
export function validateLlmOutcome(cfg, rawText, status, incompleteReason) {
|
|
289
|
-
if (status === "completed") {
|
|
290
|
-
// Parse the RAW assistant text first. A parse throw mirrors the
|
|
291
|
-
// provider's `SchemaValidationLlmError` (malformed structured-output
|
|
292
|
-
// JSON), which classifies as retryable `schema_validation`.
|
|
293
|
-
let parsed;
|
|
294
|
-
try {
|
|
295
|
-
parsed = JSON.parse(rawText ?? "");
|
|
296
|
-
}
|
|
297
|
-
catch (err) {
|
|
298
|
-
const message = `Provider returned malformed JSON in structured-output text: ${err instanceof Error ? err.message : String(err)}`;
|
|
299
|
-
return {
|
|
300
|
-
outcome: "failed",
|
|
301
|
-
failure: {
|
|
302
|
-
reason: "schema_validation",
|
|
303
|
-
code: OUTPUT_SCHEMA_INVALID,
|
|
304
|
-
message,
|
|
305
|
-
},
|
|
306
|
-
validationError: message,
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
const checked = checkLlmOutput(cfg, parsed);
|
|
310
|
-
if (checked.valid) {
|
|
311
|
-
return { outcome: "completed", output: parsed };
|
|
312
|
-
}
|
|
313
|
-
const validationError = checked.validationError ?? "schema validation failed";
|
|
314
|
-
return {
|
|
315
|
-
outcome: "failed",
|
|
316
|
-
failure: {
|
|
317
|
-
reason: "schema_validation",
|
|
318
|
-
code: OUTPUT_SCHEMA_INVALID,
|
|
319
|
-
message: validationError,
|
|
320
|
-
},
|
|
321
|
-
validationError,
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
if (status === "cancelled") {
|
|
325
|
-
// A cancelled background response mirrors a mid-flight abort:
|
|
326
|
-
// recorded `skipped`, NO `ProcessingFailure`, so a consumer can
|
|
327
|
-
// distinguish a cancel from a genuine error.
|
|
328
|
-
return { outcome: "skipped" };
|
|
329
|
-
}
|
|
330
|
-
if (status === "incomplete") {
|
|
331
|
-
const reason = incompleteReason ?? "unspecified";
|
|
332
|
-
if (reason === "content_filter") {
|
|
333
|
-
// Deterministic — the policy filter won't change on a re-roll;
|
|
334
|
-
// fail-fast (NO retryReason), mirroring NonRetryableLlmError.
|
|
335
|
-
return {
|
|
336
|
-
outcome: "failed",
|
|
337
|
-
failure: {
|
|
338
|
-
reason: "transient",
|
|
339
|
-
code: LLM_NON_RETRYABLE_ERROR,
|
|
340
|
-
message: formatIncompleteMirror(reason),
|
|
341
|
-
},
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
// `max_output_tokens` and any other/unspecified reason → retryable
|
|
345
|
-
// transient (mirrors the provider's conservative TransientLlmError).
|
|
346
|
-
return {
|
|
347
|
-
outcome: "failed",
|
|
348
|
-
failure: {
|
|
349
|
-
reason: "transient",
|
|
350
|
-
code: LLM_TRANSIENT_ERROR,
|
|
351
|
-
message: formatIncompleteMirror(reason),
|
|
352
|
-
},
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
|
-
// status === "failed" (or any other non-terminal value reaching here):
|
|
356
|
-
// a terminal failed envelope is NonRetryableLlmError → fail-fast (NO
|
|
357
|
-
// retryReason). `transient` would be WRONG (it's in the default
|
|
358
|
-
// retryOn, so the workflow would retry a definitively-failed response).
|
|
359
|
-
return {
|
|
360
|
-
outcome: "failed",
|
|
361
|
-
failure: {
|
|
362
|
-
reason: "transient",
|
|
363
|
-
code: LLM_NON_RETRYABLE_ERROR,
|
|
364
|
-
message: `Provider returned status "${status}".`,
|
|
365
|
-
},
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
// `lib/`-side mirror of the provider's incomplete-reason message. Kept
|
|
369
|
-
// terse + reason-naming (the provider's full guidance text lives in
|
|
370
|
-
// `extensions/openai/provider.ts#formatIncompleteMessage`, which `lib/`
|
|
371
|
-
// cannot import).
|
|
372
|
-
function formatIncompleteMirror(reason) {
|
|
373
|
-
return `Provider returned status "incomplete" (reason: ${reason}).`;
|
|
374
|
-
}
|
|
375
|
-
// Whether the failure's `reason` is a RETRYABLE classification to surface
|
|
376
|
-
// on `TExecuteStageResult.retryReason`. Fail-fast failures carry a
|
|
377
|
-
// `non-retryable` code (LLM_NON_RETRYABLE_ERROR) and surface NO
|
|
378
|
-
// retryReason; the genuinely-retryable reasons are the workflow's
|
|
379
|
-
// re-launch signal. Package-internal.
|
|
380
|
-
export function failureRetryReason(failure) {
|
|
381
|
-
if (failure.code === LLM_NON_RETRYABLE_ERROR)
|
|
382
|
-
return undefined;
|
|
383
|
-
return failure.reason;
|
|
384
|
-
}
|
|
385
|
-
// -- LLM stage --
|
|
386
|
-
export function llmStage(config) {
|
|
387
|
-
const policy = {
|
|
388
|
-
...DEFAULT_RETRY_POLICY,
|
|
389
|
-
...config.retry,
|
|
390
|
-
retryOn: config.retry?.retryOn ?? DEFAULT_RETRY_POLICY.retryOn,
|
|
391
|
-
};
|
|
392
|
-
const errorCap = resolveErrorCap(policy);
|
|
393
|
-
const cfg = {
|
|
394
|
-
id: config.id,
|
|
395
|
-
outputSchema: config.outputSchema,
|
|
396
|
-
model: config.model,
|
|
397
|
-
reasoningEffort: config.reasoningEffort,
|
|
398
|
-
buildPrompt: config.buildPrompt,
|
|
399
|
-
tools: config.tools,
|
|
400
|
-
maxOutputTokens: config.maxOutputTokens,
|
|
401
|
-
retryPolicy: policy,
|
|
402
|
-
};
|
|
403
|
-
const stage = {
|
|
404
|
-
id: config.id,
|
|
405
|
-
dependsOn: config.dependsOn,
|
|
406
|
-
outputSchema: config.outputSchema,
|
|
407
|
-
run: async (ctx) => {
|
|
408
|
-
const prompt = config.buildPrompt(ctx);
|
|
409
|
-
let userMessage = prompt.user;
|
|
410
|
-
let attempt = 0;
|
|
411
|
-
let lastError = null;
|
|
412
|
-
while (attempt < policy.maxAttempts) {
|
|
413
|
-
attempt += 1;
|
|
414
|
-
if (ctx.signal.aborted) {
|
|
415
|
-
// Loop-top abort: caller cancelled before (or
|
|
416
|
-
// between) attempts. Surface as a `skipped` stage
|
|
417
|
-
// rather than a failure.
|
|
418
|
-
throw new StageAbortedError({ stageId: config.id });
|
|
419
|
-
}
|
|
420
|
-
// Emit the `stage:llm-response-created` event the moment
|
|
421
|
-
// the provider surfaces a response id. In background-stream
|
|
422
|
-
// mode this fires MID-FLIGHT — before `respond()` resolves
|
|
423
|
-
// — from the provider's `onResponseCreated` callback (the
|
|
424
|
-
// first `response.created` SSE event). That early emit is
|
|
425
|
-
// load-bearing: a consumer persists the id before a
|
|
426
|
-
// possible crash, so a call interrupted mid-generation can
|
|
427
|
-
// be recovered from the upstream's stored copy rather than
|
|
428
|
-
// blindly re-run. In synchronous mode the callback never
|
|
429
|
-
// fires; the id is surfaced only at completion (below). The
|
|
430
|
-
// `responseIdEmitted` flag dedupes so the event fires at
|
|
431
|
-
// most once per attempt.
|
|
432
|
-
let responseIdEmitted = false;
|
|
433
|
-
const emitResponseCreated = (responseId) => {
|
|
434
|
-
if (responseIdEmitted)
|
|
435
|
-
return;
|
|
436
|
-
responseIdEmitted = true;
|
|
437
|
-
ctx.emit({
|
|
438
|
-
kind: "stage:llm-response-created",
|
|
439
|
-
stageId: config.id,
|
|
440
|
-
attempt,
|
|
441
|
-
responseId,
|
|
442
|
-
at: now(),
|
|
443
|
-
});
|
|
444
|
-
};
|
|
445
|
-
// Build the request via the shared seam, then attach this
|
|
446
|
-
// attempt's mid-flight id emitter (the seam leaves
|
|
447
|
-
// `onResponseCreated` unset — the launch path uses the
|
|
448
|
-
// submit return value instead).
|
|
449
|
-
const { req } = buildLlmRequest(cfg, ctx, userMessage);
|
|
450
|
-
req.onResponseCreated = emitResponseCreated;
|
|
451
|
-
// Emit the pre-call stage-input event. Fires inside the
|
|
452
|
-
// retry loop after `attempt` is incremented and after the
|
|
453
|
-
// request is built, immediately before `respond()` — so a
|
|
454
|
-
// consumer can surface the as-sent prompts the instant the
|
|
455
|
-
// call starts, without waiting for the post-call
|
|
456
|
-
// `stage:llm-call`. On attempt 2+ `userMessage` already
|
|
457
|
-
// carries the retry-suffix appended by the prior attempt's
|
|
458
|
-
// schema-validation failure path, matching this attempt's
|
|
459
|
-
// eventual `stage:llm-call.prompts.user`.
|
|
460
|
-
ctx.emit({
|
|
461
|
-
kind: "stage:llm-request",
|
|
462
|
-
stageId: config.id,
|
|
463
|
-
attempt,
|
|
464
|
-
prompts: {
|
|
465
|
-
system: prompt.system,
|
|
466
|
-
user: userMessage,
|
|
467
|
-
},
|
|
468
|
-
at: now(),
|
|
469
|
-
});
|
|
470
|
-
try {
|
|
471
|
-
const response = await ctx.llm.respond(req);
|
|
472
|
-
// Completion-time fallback: if the provider surfaced an
|
|
473
|
-
// id but did NOT fire the mid-flight callback (the
|
|
474
|
-
// synchronous / poll paths), emit here so the event
|
|
475
|
-
// still precedes `stage:llm-call` on this attempt.
|
|
476
|
-
if (response.rawResponseId) {
|
|
477
|
-
emitResponseCreated(response.rawResponseId);
|
|
478
|
-
}
|
|
479
|
-
// Shared validation core (same check the launch/complete
|
|
480
|
-
// path runs via validateLlmOutcome's completed branch).
|
|
481
|
-
const checked = checkLlmOutput(cfg, response.output);
|
|
482
|
-
const validationPassed = checked.valid;
|
|
483
|
-
const validationError = checked.validationError;
|
|
484
|
-
// Emit per-attempt LLM-call event. Fires after the
|
|
485
|
-
// call returns and after schema validation has run,
|
|
486
|
-
// before retry/return branching. `validationError`
|
|
487
|
-
// is `undefined` when the schema accepted the
|
|
488
|
-
// output, a string when it rejected. `prompts.user`
|
|
489
|
-
// is the as-sent message — on attempt 2+ this
|
|
490
|
-
// includes any retry-suffix appended by the prior
|
|
491
|
-
// attempt's schema-validation failure path.
|
|
492
|
-
ctx.emit({
|
|
493
|
-
kind: "stage:llm-call",
|
|
494
|
-
stageId: config.id,
|
|
495
|
-
attempt,
|
|
496
|
-
prompts: {
|
|
497
|
-
system: prompt.system,
|
|
498
|
-
user: userMessage,
|
|
499
|
-
},
|
|
500
|
-
output: response.output,
|
|
501
|
-
tokenUsage: response.tokenUsage,
|
|
502
|
-
rawResponseId: response.rawResponseId,
|
|
503
|
-
validationError,
|
|
504
|
-
at: now(),
|
|
505
|
-
});
|
|
506
|
-
if (!validationPassed) {
|
|
507
|
-
// validationError is defined here because
|
|
508
|
-
// validationPassed is false.
|
|
509
|
-
const validationMessage = validationError;
|
|
510
|
-
lastError = {
|
|
511
|
-
reason: "schema_validation",
|
|
512
|
-
code: OUTPUT_SCHEMA_INVALID,
|
|
513
|
-
message: validationMessage,
|
|
514
|
-
};
|
|
515
|
-
const retryable = policy.retryOn.includes("schema_validation");
|
|
516
|
-
if (!retryable || attempt >= policy.maxAttempts) {
|
|
517
|
-
break;
|
|
518
|
-
}
|
|
519
|
-
emitRetry(ctx, config.id, attempt, "schema_validation");
|
|
520
|
-
userMessage = applyRetrySuffix(prompt.user, validationMessage, errorCap);
|
|
521
|
-
await sleep(policy.backoffMs, ctx.signal);
|
|
522
|
-
continue;
|
|
523
|
-
}
|
|
524
|
-
// Token usage emission is handled by the executor at
|
|
525
|
-
// stage:end time; we return the response output and
|
|
526
|
-
// attach the usage onto a side channel via failure-free
|
|
527
|
-
// path.
|
|
528
|
-
// We stash token usage on a per-stage well-known key
|
|
529
|
-
// recognized by the executor.
|
|
530
|
-
stashTokenUsage(ctx, config.id, response.tokenUsage);
|
|
531
|
-
return response.output;
|
|
532
|
-
}
|
|
533
|
-
catch (err) {
|
|
534
|
-
if (err instanceof LlmStageRetryExhaustedError &&
|
|
535
|
-
err.stageId === config.id) {
|
|
536
|
-
// Re-throw our own marker; the catch below shouldn't
|
|
537
|
-
// see it. Defensive.
|
|
538
|
-
throw err;
|
|
539
|
-
}
|
|
540
|
-
if (err instanceof StageAbortedError) {
|
|
541
|
-
throw err;
|
|
542
|
-
}
|
|
543
|
-
// Mid-flight abort surfaces here when the provider
|
|
544
|
-
// honored the signal and threw. Recognize it before
|
|
545
|
-
// classifying as a generic non-retryable failure so
|
|
546
|
-
// the executor can mark this stage `skipped`, not
|
|
547
|
-
// `failed` with `LLM_NON_RETRYABLE_ERROR`.
|
|
548
|
-
if (ctx.signal.aborted) {
|
|
549
|
-
throw new StageAbortedError({ stageId: config.id });
|
|
550
|
-
}
|
|
551
|
-
const reason = classifyError(err);
|
|
552
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
553
|
-
if (reason === "non_retryable") {
|
|
554
|
-
lastError = {
|
|
555
|
-
reason: "transient",
|
|
556
|
-
code: LLM_NON_RETRYABLE_ERROR,
|
|
557
|
-
message,
|
|
558
|
-
};
|
|
559
|
-
break;
|
|
560
|
-
}
|
|
561
|
-
lastError = {
|
|
562
|
-
reason,
|
|
563
|
-
code: reason === "quota_exhausted"
|
|
564
|
-
? LLM_QUOTA_EXHAUSTED
|
|
565
|
-
: reason === "rate_limit"
|
|
566
|
-
? LLM_RATE_LIMITED
|
|
567
|
-
: LLM_TRANSIENT_ERROR,
|
|
568
|
-
message,
|
|
569
|
-
};
|
|
570
|
-
// Fail-fast for any reason not opted into `retryOn`.
|
|
571
|
-
// `quota_exhausted` is absent from every default
|
|
572
|
-
// policy, so a quota 429 breaks here on attempt 1 —
|
|
573
|
-
// same control flow `rate_limit` already takes.
|
|
574
|
-
if (!policy.retryOn.includes(reason)) {
|
|
575
|
-
break;
|
|
576
|
-
}
|
|
577
|
-
if (attempt >= policy.maxAttempts) {
|
|
578
|
-
break;
|
|
579
|
-
}
|
|
580
|
-
emitRetry(ctx, config.id, attempt, reason);
|
|
581
|
-
await sleep(policy.backoffMs, ctx.signal);
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
const failure = lastError ?? {
|
|
585
|
-
reason: "transient",
|
|
586
|
-
code: LLM_UNKNOWN_ERROR,
|
|
587
|
-
message: "llmStage retry loop exited without error context",
|
|
588
|
-
};
|
|
589
|
-
throw new LlmStageRetryExhaustedError({
|
|
590
|
-
stageId: config.id,
|
|
591
|
-
reason: failure.reason,
|
|
592
|
-
code: failure.code,
|
|
593
|
-
attempts: attempt,
|
|
594
|
-
message: failure.message,
|
|
595
|
-
context: failure.context,
|
|
596
|
-
});
|
|
597
|
-
},
|
|
598
|
-
};
|
|
599
|
-
// Attach the resolved config on a non-enumerable, internal-symbol-keyed
|
|
600
|
-
// carrier so `launchStage`/`completeStage` (same package) can recover it
|
|
601
|
-
// via `readLlmStageConfig`. Non-enumerable + symbol-keyed keeps it off
|
|
602
|
-
// every enumeration and JSON serialization of the stage object, and out
|
|
603
|
-
// of the public `TStage` shape.
|
|
604
|
-
Object.defineProperty(stage, LLM_STAGE_CONFIG, {
|
|
605
|
-
value: cfg,
|
|
606
|
-
enumerable: false,
|
|
607
|
-
writable: false,
|
|
608
|
-
configurable: false,
|
|
609
|
-
});
|
|
610
|
-
return stage;
|
|
611
|
-
}
|
|
612
|
-
// -- Token-usage side channel ---------------------------------------------
|
|
613
|
-
//
|
|
614
|
-
// llmStage and the executor share a tiny side-channel so the executor
|
|
615
|
-
// can attach token usage to the matching `stage:end` event without
|
|
616
|
-
// changing the stage `run` return shape. The side channel is a per-
|
|
617
|
-
// pipeline-run weak map keyed by the StageContext object.
|
|
618
|
-
const TOKEN_USAGE_CHANNELS = new WeakMap();
|
|
619
|
-
function stashTokenUsage(ctx, stageId, usage) {
|
|
620
|
-
let bucket = TOKEN_USAGE_CHANNELS.get(ctx);
|
|
621
|
-
if (!bucket) {
|
|
622
|
-
bucket = new Map();
|
|
623
|
-
TOKEN_USAGE_CHANNELS.set(ctx, bucket);
|
|
624
|
-
}
|
|
625
|
-
bucket.set(stageId, usage);
|
|
626
|
-
}
|
|
627
|
-
export function readStashedTokenUsage(ctx, stageId) {
|
|
628
|
-
return TOKEN_USAGE_CHANNELS.get(ctx)?.get(stageId);
|
|
629
|
-
}
|
|
630
91
|
// -- Sub-pipeline --
|
|
631
92
|
export function subPipelineStage(config) {
|
|
632
93
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-helpers.js","sourceRoot":"","sources":["../../../src/lib/pipelines/stage-helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stage-helpers.js","sourceRoot":"","sources":["../../../src/lib/pipelines/stage-helpers.ts"],"names":[],"mappings":"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"}
|