@plurnk/plurnk-providers 1.0.5 → 1.0.7
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/.env.defaults +20 -4
- package/README.md +3 -3
- package/SPEC.md +55 -37
- package/dist/Mock.d.ts +10 -4
- package/dist/Mock.d.ts.map +1 -1
- package/dist/Mock.js +20 -4
- package/dist/Mock.js.map +1 -1
- package/dist/OpenAICompat.d.ts +13 -7
- package/dist/OpenAICompat.d.ts.map +1 -1
- package/dist/OpenAICompat.js +150 -54
- package/dist/OpenAICompat.js.map +1 -1
- package/dist/env.d.ts +16 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +66 -10
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/openaiStream.d.ts +5 -0
- package/dist/openaiStream.d.ts.map +1 -1
- package/dist/openaiStream.js +31 -1
- package/dist/openaiStream.js.map +1 -1
- package/dist/standardProviders.d.ts +1 -0
- package/dist/standardProviders.d.ts.map +1 -1
- package/dist/standardProviders.js +30 -19
- package/dist/standardProviders.js.map +1 -1
- package/dist/types.d.ts +9 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/usage.d.ts +1 -1
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +16 -2
- package/dist/usage.js.map +1 -1
- package/package.json +6 -6
package/dist/OpenAICompat.js
CHANGED
|
@@ -27,10 +27,31 @@ const sleepWithAbort = (ms, signal) => new Promise((resolve, reject) => {
|
|
|
27
27
|
const timer = setTimeout(resolve, ms);
|
|
28
28
|
signal?.addEventListener("abort", () => { clearTimeout(timer); reject(signal.reason); }, { once: true });
|
|
29
29
|
});
|
|
30
|
-
// SPEC §2 closed set.
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
// SPEC §2 closed set. The four canonical values pass through; known per-backend
|
|
31
|
+
// synonyms translate INTO them (anthropic max_tokens/end_turn, gemini MAX_TOKENS/
|
|
32
|
+
// SAFETY/RECITATION) so a token-cap hit canonicalizes to "length" whatever the
|
|
33
|
+
// backend names it -- core's `finishReason === "length"` truncation check (#425)
|
|
34
|
+
// is then an invariant by construction, not a convention each backend must
|
|
35
|
+
// independently honor. A non-empty value outside both the set and the table
|
|
36
|
+
// collapses to null AND warns once, so a new backend's unmapped cap string
|
|
37
|
+
// surfaces instead of silently becoming "no signal" (which would make core miss
|
|
38
|
+
// the truncation entirely). Case-folded: gemini shouts its reasons.
|
|
39
|
+
const FINISH_SYNONYMS = new Map([
|
|
40
|
+
["stop", "stop"], ["length", "length"], ["tool_calls", "tool_calls"], ["content_filter", "content_filter"],
|
|
41
|
+
["max_tokens", "length"], ["model_length", "length"], ["max_completion_tokens", "length"],
|
|
42
|
+
["end_turn", "stop"], ["stop_sequence", "stop"], ["eos_token", "stop"],
|
|
43
|
+
["tool_use", "tool_calls"],
|
|
44
|
+
["safety", "content_filter"], ["recitation", "content_filter"],
|
|
45
|
+
]);
|
|
46
|
+
const normalizeFinishReason = (raw) => {
|
|
47
|
+
if (raw === null || raw.length === 0)
|
|
48
|
+
return null;
|
|
49
|
+
const hit = FINISH_SYNONYMS.get(raw.toLowerCase());
|
|
50
|
+
if (hit !== undefined)
|
|
51
|
+
return hit;
|
|
52
|
+
emitWarningOnce(`unrecognized finish_reason "${raw}"; treated as no-signal (finishReason=null). If it denotes a token-cap hit, core's length-cap detection will miss it -- add it to FINISH_SYNONYMS.`, "PLURNK_FINISH_REASON_UNKNOWN");
|
|
53
|
+
return null;
|
|
54
|
+
};
|
|
34
55
|
// Shared budget→effort breakpoints (xai and google had identical copies).
|
|
35
56
|
export const effortFromBudget = (budget) => {
|
|
36
57
|
if (budget <= 1000)
|
|
@@ -42,9 +63,24 @@ export const effortFromBudget = (budget) => {
|
|
|
42
63
|
// chars/2 upper bound (see ./tokenizers.ts) — overcounts safely, never under.
|
|
43
64
|
const heuristicTokens = (text) => (text.length === 0 ? 0 : Math.ceil(text.length / 2));
|
|
44
65
|
// Body keys the provider owns — a caller's `sampling` passthrough may not set
|
|
45
|
-
// these
|
|
46
|
-
//
|
|
47
|
-
|
|
66
|
+
// these. Two families (#477 audit):
|
|
67
|
+
// transport/managed — grammar transport, the stream/JSON choice, slot pinning,
|
|
68
|
+
// data capture (SPEC §8: backend-specific fields never cross the contract);
|
|
69
|
+
// contract invariants — `n` (atomic single completion: choices[0] is the
|
|
70
|
+
// response; n>1 = paid, dropped output), the tool-calling family (tools-in-
|
|
71
|
+
// body doctrine, §2: native tool_calls return null content = a broken turn),
|
|
72
|
+
// modalities/audio (text-only contract), prediction (decode semantics, not
|
|
73
|
+
// sampling), and the token caps (the envelope is the managed maxTokens —
|
|
74
|
+
// sampling must not bypass the consumer's #425 cap).
|
|
75
|
+
// Sampling intent (temperature, top_p, penalties, stop, seed, logit_bias) and
|
|
76
|
+
// platform knobs (user, service_tier, prompt_cache_*, safety_identifier,
|
|
77
|
+
// metadata, store, verbosity) pass through; the managed floors spread UNDER
|
|
78
|
+
// sampling stay deliberately caller-overridable.
|
|
79
|
+
const RESERVED_BODY_KEYS = new Set([
|
|
80
|
+
"model", "messages", "stream", "stream_options", "grammar", "response_format", "id_slot", "logprobs", "top_logprobs",
|
|
81
|
+
"n", "tools", "tool_choice", "functions", "function_call", "parallel_tool_calls",
|
|
82
|
+
"modalities", "audio", "prediction", "max_tokens", "max_completion_tokens",
|
|
83
|
+
]);
|
|
48
84
|
// Render a non-accept verdict into a terse, factual grammar_unenforced message
|
|
49
85
|
// (SPEC §12 message policy: no guidance prose). `reject` names the diverging code
|
|
50
86
|
// point + what the grammar would have accepted; `incomplete` names the valid-prefix
|
|
@@ -63,10 +99,11 @@ export default class OpenAICompatProvider {
|
|
|
63
99
|
#url;
|
|
64
100
|
#fetchTimeoutMs;
|
|
65
101
|
#headers;
|
|
66
|
-
#
|
|
102
|
+
#contextWindow;
|
|
67
103
|
#reasoning;
|
|
68
104
|
#temperature;
|
|
69
105
|
#repeatPenalty;
|
|
106
|
+
#frequencyPenalty;
|
|
70
107
|
#retryDelayMs;
|
|
71
108
|
#reasoningStyle;
|
|
72
109
|
#countTokens;
|
|
@@ -80,7 +117,10 @@ export default class OpenAICompatProvider {
|
|
|
80
117
|
#supportsSlotPinning;
|
|
81
118
|
#slotCount;
|
|
82
119
|
#retryAttempts;
|
|
83
|
-
#
|
|
120
|
+
#topLogprobs;
|
|
121
|
+
#reasoningReserve;
|
|
122
|
+
#completionReserve;
|
|
123
|
+
#tuningFloors;
|
|
84
124
|
#rawBody;
|
|
85
125
|
#servedModel;
|
|
86
126
|
#requiresMaxTokens;
|
|
@@ -94,7 +134,7 @@ export default class OpenAICompatProvider {
|
|
|
94
134
|
this.#url = config.url;
|
|
95
135
|
this.#fetchTimeoutMs = config.fetchTimeoutMs;
|
|
96
136
|
this.#headers = config.headers ?? {};
|
|
97
|
-
this.#
|
|
137
|
+
this.#contextWindow = config.contextWindow ?? null;
|
|
98
138
|
this.#reasoning = config.reasoning;
|
|
99
139
|
// Loud guard: an out-of-date consumer (stale daughter dist) omitting the
|
|
100
140
|
// required tuning fields must fail at construction, not silently send
|
|
@@ -104,6 +144,7 @@ export default class OpenAICompatProvider {
|
|
|
104
144
|
}
|
|
105
145
|
this.#temperature = config.temperature;
|
|
106
146
|
this.#repeatPenalty = config.repeatPenalty;
|
|
147
|
+
this.#frequencyPenalty = typeof config.frequencyPenalty === "number" ? config.frequencyPenalty : 0;
|
|
107
148
|
this.#retryDelayMs = config.retryDelayMs;
|
|
108
149
|
this.#retryAttempts = config.retryAttempts;
|
|
109
150
|
this.#reasoningStyle = config.reasoningStyle ?? "none";
|
|
@@ -117,7 +158,10 @@ export default class OpenAICompatProvider {
|
|
|
117
158
|
this.#balanceMetaKey = config.balanceMetaKey;
|
|
118
159
|
this.#supportsSlotPinning = config.supportsSlotPinning ?? false;
|
|
119
160
|
this.#slotCount = config.slotCount ?? null;
|
|
120
|
-
this.#
|
|
161
|
+
this.#topLogprobs = config.topLogprobs ?? null;
|
|
162
|
+
this.#reasoningReserve = config.reasoningReserve;
|
|
163
|
+
this.#completionReserve = config.completionReserve;
|
|
164
|
+
this.#tuningFloors = config.tuningFloors ?? true;
|
|
121
165
|
this.#rawBody = config.rawBody ?? false;
|
|
122
166
|
this.#servedModel = config.servedModel;
|
|
123
167
|
this.#requiresMaxTokens = config.requiresMaxTokens;
|
|
@@ -140,7 +184,18 @@ export default class OpenAICompatProvider {
|
|
|
140
184
|
};
|
|
141
185
|
}
|
|
142
186
|
}
|
|
143
|
-
get
|
|
187
|
+
get contextWindow() { return this.#contextWindow; }
|
|
188
|
+
// #507: envelope reserves — absolute pins stand alone; percentages need the
|
|
189
|
+
// detected window; null = underivable (no claim for core's no-cap path).
|
|
190
|
+
#resolveReserve(spec) {
|
|
191
|
+
if (spec === undefined)
|
|
192
|
+
return null;
|
|
193
|
+
if ("tokens" in spec)
|
|
194
|
+
return spec.tokens;
|
|
195
|
+
return this.#contextWindow === null ? null : Math.round(spec.percent * this.#contextWindow);
|
|
196
|
+
}
|
|
197
|
+
get reasoningReserve() { return this.#resolveReserve(this.#reasoningReserve); }
|
|
198
|
+
get completionReserve() { return this.#resolveReserve(this.#completionReserve); }
|
|
144
199
|
get model() { return this.#model; }
|
|
145
200
|
// #37: backend's self-reported served id; undefined when unprobed/unknown.
|
|
146
201
|
get servedModel() { return this.#servedModel; }
|
|
@@ -152,7 +207,7 @@ export default class OpenAICompatProvider {
|
|
|
152
207
|
get constrainsOutput() { return this.#grammarStyle !== "none"; }
|
|
153
208
|
countTokens(text) { return this.#countTokens(text); }
|
|
154
209
|
costFor(usage) { return this.#costFor(usage); }
|
|
155
|
-
// Maps the
|
|
210
|
+
// Maps the reasoning INTENT (off | adaptive | on+budget, #33) to the
|
|
156
211
|
// backend's wire mechanism — including under a transported grammar. The #32
|
|
157
212
|
// clamp (force reasoning_effort "none" under response_format) is LIFTED:
|
|
158
213
|
// canary-verified live that fireworks masks ONLY the content channel — the
|
|
@@ -169,6 +224,18 @@ export default class OpenAICompatProvider {
|
|
|
169
224
|
// enable_thinking:false is the only working off-switch on llama-server
|
|
170
225
|
// (§13). Activation only; budget is enforced by the box's
|
|
171
226
|
// --reasoning-budget launch flag (per-request numerics ignored, F7).
|
|
227
|
+
//
|
|
228
|
+
// #488 postmortem: intent maps IDENTICALLY under a transported
|
|
229
|
+
// grammar. The brief rails-win-the-channel clamp (enable_thinking
|
|
230
|
+
// forced false under a grammar) is REVERTED — specimens proved the
|
|
231
|
+
// SANCTIONED think block is the protection, not the hazard: the
|
|
232
|
+
// server auto-gates the grammar around it and content decodes
|
|
233
|
+
// constrained (26-run baseline green; zero grammar rejects across
|
|
234
|
+
// the #488 "railless" specimens). Closing the channel starved a
|
|
235
|
+
// reasoning-tuned model into ESCAPING mid-content into the raw
|
|
236
|
+
// thought channel — discarded server-side, decode unconstrained,
|
|
237
|
+
// 12,288 tokens billed for 1,033 visible chars. The escape is
|
|
238
|
+
// surfaced instead (vanished-token telemetry + meta rail state).
|
|
172
239
|
case "template": return { chat_template_kwargs: { enable_thinking: on } };
|
|
173
240
|
case "think": return on ? { think: true } : {};
|
|
174
241
|
case "include_reasoning": return on ? { include_reasoning: true } : {};
|
|
@@ -194,16 +261,16 @@ export default class OpenAICompatProvider {
|
|
|
194
261
|
}
|
|
195
262
|
}
|
|
196
263
|
// Per-run slot affinity (#11): the consumer passes WHICH run this is; the
|
|
197
|
-
// provider owns WHICH slot serves it. Sticky per
|
|
264
|
+
// provider owns WHICH slot serves it. Sticky per workerId, round-robin across
|
|
198
265
|
// new runs (distinct runs → distinct slots while slots last), LRU-bounded
|
|
199
266
|
// bookkeeping so a long-lived daemon never grows the map unboundedly —
|
|
200
267
|
// an evicted-and-returning run simply re-pins, worst case one cold prefill.
|
|
201
268
|
#runSlots = new Map();
|
|
202
269
|
#nextSlot = 0;
|
|
203
|
-
#slotBody(
|
|
270
|
+
#slotBody(workerId) {
|
|
204
271
|
if (!this.#supportsSlotPinning || this.#slotCount === null || this.#slotCount < 1)
|
|
205
272
|
return {};
|
|
206
|
-
let slot = this.#runSlots.get(
|
|
273
|
+
let slot = this.#runSlots.get(workerId);
|
|
207
274
|
if (slot === undefined) {
|
|
208
275
|
slot = this.#nextSlot++ % this.#slotCount;
|
|
209
276
|
if (this.#runSlots.size >= this.#slotCount * 8) {
|
|
@@ -211,9 +278,9 @@ export default class OpenAICompatProvider {
|
|
|
211
278
|
}
|
|
212
279
|
}
|
|
213
280
|
else {
|
|
214
|
-
this.#runSlots.delete(
|
|
281
|
+
this.#runSlots.delete(workerId); // re-insert to refresh LRU recency
|
|
215
282
|
}
|
|
216
|
-
this.#runSlots.set(
|
|
283
|
+
this.#runSlots.set(workerId, slot);
|
|
217
284
|
return { id_slot: slot };
|
|
218
285
|
}
|
|
219
286
|
// Grammar transport (SPEC §13): carry the caller-supplied GBNF in the shape
|
|
@@ -234,6 +301,22 @@ export default class OpenAICompatProvider {
|
|
|
234
301
|
case "none": return {};
|
|
235
302
|
}
|
|
236
303
|
}
|
|
304
|
+
// Anti-degeneration DEFAULT on EVERY request (#426), keyed to the backend's wire
|
|
305
|
+
// convention - NOT grammar-bound. GBNF is a local rail (off for cloud), so a cloud
|
|
306
|
+
// alias runs the sampler bare: firefast (deepseek/fireworks) ran 4/86 bench turns
|
|
307
|
+
// straight to the token cap on pure looped repetition (run52). Ships next to
|
|
308
|
+
// temperature so caller `sampling` can tune it; the grammar path re-asserts it as a
|
|
309
|
+
// managed FLOOR in #grammarBody. Per backend: llama.cpp/response_format take the
|
|
310
|
+
// repeat_penalty MULTIPLIER; the plain cloud path ("none") can't, so it gets
|
|
311
|
+
// frequency_penalty - OpenAI-standard, accepted by every OpenAI-compat backend (verified
|
|
312
|
+
// live: together/deepinfra/fireworks; it is OpenAI's own param, so real OpenAI takes it too).
|
|
313
|
+
#repetitionPenaltyBody() {
|
|
314
|
+
switch (this.#grammarStyle) {
|
|
315
|
+
case "llamacpp": return { repeat_penalty: this.#repeatPenalty };
|
|
316
|
+
case "response_format": return { repetition_penalty: this.#repeatPenalty };
|
|
317
|
+
case "none": return this.#frequencyPenalty > 0 ? { frequency_penalty: this.#frequencyPenalty } : {};
|
|
318
|
+
}
|
|
319
|
+
}
|
|
237
320
|
// First-party telemetry headers (SPEC §5): forwarded ONLY when the spec
|
|
238
321
|
// opted in (the plurnk endpoint). The gate is here, not at the call site, so
|
|
239
322
|
// attributions/client/strikes can never reach a third-party backend even if
|
|
@@ -242,7 +325,7 @@ export default class OpenAICompatProvider {
|
|
|
242
325
|
// absent (consumer didn't report); contract per plurnk-service#313. Strikes
|
|
243
326
|
// ride HTTP headers only — the packet never carries them (the model must
|
|
244
327
|
// never see strike state; engine accounting is not a metric to game).
|
|
245
|
-
#metadataHeaders(attributions, client, strikes,
|
|
328
|
+
#metadataHeaders(attributions, client, strikes, workerId, workspaceId, loop, turn) {
|
|
246
329
|
if (!this.#firstPartyMetadata)
|
|
247
330
|
return {};
|
|
248
331
|
const h = {};
|
|
@@ -252,16 +335,16 @@ export default class OpenAICompatProvider {
|
|
|
252
335
|
h["Plurnk-Client"] = client;
|
|
253
336
|
if (strikes !== undefined && Number.isInteger(strikes) && strikes >= 0)
|
|
254
337
|
h["Plurnk-Strikes"] = String(strikes);
|
|
255
|
-
// Run identity (#26): the opaque
|
|
256
|
-
// forwarded so the endpoint can key per-
|
|
338
|
+
// Run identity (#26): the opaque workerId the consumer already supplies,
|
|
339
|
+
// forwarded so the endpoint can key per-worker affinity/telemetry — same
|
|
257
340
|
// gate as every first-party signal.
|
|
258
|
-
h["Plurnk-Run-Id"] =
|
|
259
|
-
// Turn coordinate (#404, extends #26 per #391):
|
|
341
|
+
h["Plurnk-Run-Id"] = workerId;
|
|
342
|
+
// Turn coordinate (#404, extends #26 per #391): workspace/loop/turn, the
|
|
260
343
|
// daemon-side sequence the endpoint can never scrape from the wire.
|
|
261
344
|
// Coordinates are 1-based — 0 is not a real value, so no strikes-style
|
|
262
345
|
// zero exception; absent/empty/0 emits no header.
|
|
263
|
-
if (
|
|
264
|
-
h["Plurnk-
|
|
346
|
+
if (workspaceId !== undefined && workspaceId.length > 0)
|
|
347
|
+
h["Plurnk-Workspace-Id"] = workspaceId;
|
|
265
348
|
if (loop !== undefined && Number.isInteger(loop) && loop >= 1)
|
|
266
349
|
h["Plurnk-Loop"] = String(loop);
|
|
267
350
|
if (turn !== undefined && Number.isInteger(turn) && turn >= 1)
|
|
@@ -291,22 +374,6 @@ export default class OpenAICompatProvider {
|
|
|
291
374
|
return null;
|
|
292
375
|
}
|
|
293
376
|
}
|
|
294
|
-
// Conformance observation (SPEC §13). A COMPLETED exchange always returns —
|
|
295
|
-
// the model's bytes flow in `assistant` no matter what — and a non-accept
|
|
296
|
-
// verdict rides `response.telemetry` as a grammar_unenforced OBSERVATION
|
|
297
|
-
// carrying the divergence position. One check, both paths (grammar
|
|
298
|
-
// transported OR withheld under PLURNK_PROVIDERS_GBNF_DEBUG); whether to discard,
|
|
299
|
-
// retry, escalate, or feed the divergence back is CONSUMER policy — the
|
|
300
|
-
// provider transports and observes, it never adjudicates. (Every measured
|
|
301
|
-
// "failure" in the field was a legal prefix; throwing destroyed billed
|
|
302
|
-
// bytes the consumer wanted — #31's error payload, now subsumed by the
|
|
303
|
-
// response itself.) null when the output conforms or the verify gap fired.
|
|
304
|
-
#grammarConflictEvent(grammar, content) {
|
|
305
|
-
const verdict = this.#grammarVerdict(grammar, content);
|
|
306
|
-
if (verdict === null || verdict.status === "accept")
|
|
307
|
-
return null;
|
|
308
|
-
return { source: this.#source, kind: "grammar_unenforced", message: describeUnenforced(verdict), position: verdict.pos };
|
|
309
|
-
}
|
|
310
377
|
// PLURNK_PROVIDERS_GBNF_DEBUG (SPEC §13): validate the supplied GBNF locally and fail
|
|
311
378
|
// hard if it's malformed, BEFORE any wire call — and the grammar is NOT
|
|
312
379
|
// transported, so the request runs unconstrained. A debug aid to catch invalid
|
|
@@ -352,10 +419,10 @@ export default class OpenAICompatProvider {
|
|
|
352
419
|
out[k] = v;
|
|
353
420
|
return out;
|
|
354
421
|
}
|
|
355
|
-
async generate({ messages,
|
|
356
|
-
// Boundary validation (SPEC §2): the
|
|
357
|
-
if (
|
|
358
|
-
throw new Error("generate:
|
|
422
|
+
async generate({ messages, workerId, signal, grammar, maxTokens, attributions, client, strikes, workspaceId, loop, turn, sampling }) {
|
|
423
|
+
// Boundary validation (SPEC §2): the worker identity is required.
|
|
424
|
+
if (workerId === undefined || workerId.length === 0)
|
|
425
|
+
throw new Error("generate: workerId is required — the worker's stable, opaque identity");
|
|
359
426
|
// Reject before any wire call when already aborted (SPEC §10.8).
|
|
360
427
|
signal?.throwIfAborted();
|
|
361
428
|
// Grammar handling (SPEC §13). PLURNK_PROVIDERS_GBNF_DEBUG validates the supplied
|
|
@@ -373,7 +440,9 @@ export default class OpenAICompatProvider {
|
|
|
373
440
|
// paths and the name promises every request) < the caller's `sampling`
|
|
374
441
|
// < the managed fields, which always win.
|
|
375
442
|
const body = {
|
|
376
|
-
|
|
443
|
+
// #507: floors suppressed on router-owned-tuning providers (plurnk) —
|
|
444
|
+
// the router's per-model tuning must not be overridden by client floors.
|
|
445
|
+
...(this.#tuningFloors ? { temperature: this.#temperature, ...this.#repetitionPenaltyBody() } : {}),
|
|
377
446
|
...this.#samplingBody(sampling),
|
|
378
447
|
model: this.#model,
|
|
379
448
|
messages,
|
|
@@ -382,8 +451,8 @@ export default class OpenAICompatProvider {
|
|
|
382
451
|
...(maxTokens !== undefined ? { max_tokens: maxTokens } : {}),
|
|
383
452
|
// #36: request per-token logprobs only when enabled (managed field —
|
|
384
453
|
// reserved from caller sampling; the env flag is the single control).
|
|
385
|
-
...(this.#
|
|
386
|
-
...this.#slotBody(
|
|
454
|
+
...(this.#topLogprobs !== null ? { logprobs: true, top_logprobs: this.#topLogprobs } : {}),
|
|
455
|
+
...this.#slotBody(workerId),
|
|
387
456
|
};
|
|
388
457
|
// Transient-failure retry (#18). Each attempt gets a FRESH fetch timeout
|
|
389
458
|
// (the budget is per-request, not shared across retries); the caller's
|
|
@@ -398,7 +467,7 @@ export default class OpenAICompatProvider {
|
|
|
398
467
|
const grammarBreaksStream = sendGrammar !== undefined && this.#grammarStyle === "response_format";
|
|
399
468
|
const transport = this.#streaming && !grammarBreaksStream ? chatCompletionStream : chatCompletion;
|
|
400
469
|
// Per-request headers = static auth/routing + any first-party telemetry.
|
|
401
|
-
const metaHeaders = this.#metadataHeaders(attributions, client, strikes,
|
|
470
|
+
const metaHeaders = this.#metadataHeaders(attributions, client, strikes, workerId, workspaceId, loop, turn);
|
|
402
471
|
const headers = Object.keys(metaHeaders).length > 0 ? { ...this.#headers, ...metaHeaders } : this.#headers;
|
|
403
472
|
let raw;
|
|
404
473
|
for (let attempt = 0;; attempt++) {
|
|
@@ -427,13 +496,37 @@ export default class OpenAICompatProvider {
|
|
|
427
496
|
// (message + divergence position) and the response returns normally.
|
|
428
497
|
// Discard/retry/escalate/self-correct is the consumer's policy.
|
|
429
498
|
let telemetry;
|
|
499
|
+
let railsMeta;
|
|
500
|
+
const usage = normalizeUsage(raw.usage, raw.reasoning_content, raw.content);
|
|
430
501
|
const observedGrammar = sendGrammar ?? (wantGrammar && this.#gbnfDebug ? grammar : undefined);
|
|
431
502
|
if (observedGrammar !== undefined) {
|
|
432
|
-
const
|
|
433
|
-
if (
|
|
434
|
-
telemetry = [
|
|
503
|
+
const verdict = this.#grammarVerdict(observedGrammar, raw.content);
|
|
504
|
+
if (verdict !== null && verdict.status !== "accept") {
|
|
505
|
+
telemetry = [{ source: this.#source, kind: "grammar_unenforced", message: describeUnenforced(verdict), position: verdict.pos }];
|
|
506
|
+
}
|
|
507
|
+
// #488 per-request loud state: rail attachment + conformance verdict
|
|
508
|
+
// ride `meta` into the consumer's turn row, so a drill reads rail
|
|
509
|
+
// presence PER TURN from the run db instead of inferring it from
|
|
510
|
+
// output shape (the #488 misdiagnosis, twice).
|
|
511
|
+
railsMeta = { railsAttached: sendGrammar !== undefined, railsVerdict: verdict?.status ?? "unverifiable" };
|
|
512
|
+
// #488 channel-escape detector (the run105 class): completion tokens
|
|
513
|
+
// billed far beyond every visible channel mean the decode ESCAPED into
|
|
514
|
+
// a server-discarded reasoning block mid-emission — unconstrained,
|
|
515
|
+
// invisible, billed (12,288 billed vs 1,033 chars visible, live).
|
|
516
|
+
// countTokens OVERCOUNTS text (chars/2 upper bound), so billed
|
|
517
|
+
// exceeding visible-plus-slack is real vanishing, not estimator noise.
|
|
518
|
+
const visible = this.#countTokens(raw.content) + this.#countTokens(raw.reasoning_content);
|
|
519
|
+
if (sendGrammar !== undefined && usage.completion > visible + 64) {
|
|
520
|
+
(telemetry ??= []).push({
|
|
521
|
+
source: this.#source,
|
|
522
|
+
kind: "grammar_unenforced",
|
|
523
|
+
message: `decode escaped the grammar: ${usage.completion} completion tokens billed but only ~${visible} visible across content+reasoning — the balance ran unconstrained in a discarded reasoning channel`,
|
|
524
|
+
position: [...raw.content].length,
|
|
525
|
+
});
|
|
526
|
+
}
|
|
435
527
|
}
|
|
436
|
-
const
|
|
528
|
+
const builtMeta = this.#buildMeta(raw.chunkMetadata);
|
|
529
|
+
const meta = railsMeta !== undefined ? { ...builtMeta, ...railsMeta } : builtMeta;
|
|
437
530
|
// #36: surface per-token logprobs + their mean when the backend returned
|
|
438
531
|
// them (only possible when the flag requested them). Absent otherwise —
|
|
439
532
|
// never synthesized.
|
|
@@ -445,7 +538,10 @@ export default class OpenAICompatProvider {
|
|
|
445
538
|
assistant: {
|
|
446
539
|
content: raw.content,
|
|
447
540
|
reasoning: raw.reasoning_content.length > 0 ? raw.reasoning_content : null,
|
|
448
|
-
|
|
541
|
+
// #482: sealed relay blobs ride only when present — same absence
|
|
542
|
+
// discipline as logprobs (never synthesized, never empty-array).
|
|
543
|
+
...(raw.reasoning_encrypted.length > 0 ? { reasoningEncrypted: raw.reasoning_encrypted } : {}),
|
|
544
|
+
usage,
|
|
449
545
|
finishReason: normalizeFinishReason(raw.finish_reason),
|
|
450
546
|
model: raw.model ?? this.#model,
|
|
451
547
|
...(logprobs !== undefined ? { logprobs, meanLogprob } : {}),
|
package/dist/OpenAICompat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAICompat.js","sourceRoot":"","sources":["../src/OpenAICompat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenAICompat.js","sourceRoot":"","sources":["../src/OpenAICompat.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
CHANGED
|
@@ -3,9 +3,24 @@ export declare const parseOptionalInt: (raw: string | undefined, name: string, l
|
|
|
3
3
|
export declare const parseRequiredFloat: (raw: string | undefined, name: string, label: string, min: number) => number;
|
|
4
4
|
export declare const requireEnv: (raw: string | undefined, name: string, label: string) => string;
|
|
5
5
|
export declare const dataCaptureFromEnv: (env: NodeJS.ProcessEnv, label: string) => {
|
|
6
|
-
|
|
6
|
+
topLogprobs: number | null;
|
|
7
7
|
rawBody: boolean;
|
|
8
8
|
};
|
|
9
|
+
export declare const contextWindowFromEnv: (env: NodeJS.ProcessEnv, label: string) => number | null;
|
|
10
|
+
export type ReserveSpec = {
|
|
11
|
+
percent: number;
|
|
12
|
+
} | {
|
|
13
|
+
tokens: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const envelopeFromEnv: (env: NodeJS.ProcessEnv, label: string) => {
|
|
16
|
+
reasoningReserve: ReserveSpec;
|
|
17
|
+
completionReserve: ReserveSpec;
|
|
18
|
+
};
|
|
19
|
+
export declare const resolveReserve: (spec: ReserveSpec, window: number | null) => number | null;
|
|
20
|
+
export declare const resolveEnvelopeFromEnv: (env: NodeJS.ProcessEnv, window: number | null) => {
|
|
21
|
+
reasoningReserve: number | null;
|
|
22
|
+
completionReserve: number | null;
|
|
23
|
+
};
|
|
9
24
|
export type ReasoningMode = "off" | "adaptive" | "on";
|
|
10
25
|
export type Reasoning = {
|
|
11
26
|
mode: ReasoningMode;
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAKvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAAM,GAAG,IAKhG,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,KAAG,MAKtG,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAGjF,CAAC;AASF,eAAO,MAAM,kBAAkB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG;IAAE,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAKvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAAM,GAAG,IAKhG,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,KAAG,MAKtG,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAGjF,CAAC;AASF,eAAO,MAAM,kBAAkB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAWxH,CAAC;AAMF,eAAO,MAAM,oBAAoB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,MAAM,GAAG,IAKrF,CAAC;AAcF,MAAM,MAAM,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAenE,eAAO,MAAM,eAAe,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG;IAAE,gBAAgB,EAAE,WAAW,CAAC;IAAC,iBAAiB,EAAE,WAAW,CAAA;CAGrI,CAAC;AAIH,eAAO,MAAM,cAAc,SAAU,WAAW,UAAU,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IACY,CAAC;AAQhG,eAAO,MAAM,sBAAsB,QAAS,MAAM,CAAC,UAAU,UAAU,MAAM,GAAG,IAAI,KAAG;IAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAOzJ,CAAC;AAWF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEvE,eAAO,MAAM,gBAAgB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,SAqBxE,CAAC;AASF,eAAO,MAAM,eAAe,mBAkB1B,CAAC;AAaH,eAAO,MAAM,eAAe,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,UAAS,SAAS,MAAM,EAAE,KAAqB,MAAM,CAAC,UAkB1H,CAAC"}
|
package/dist/env.js
CHANGED
|
@@ -33,14 +33,67 @@ export const requireEnv = (raw, name, label) => {
|
|
|
33
33
|
// Data-capture knobs (#36), read identically by every provider (standard AND
|
|
34
34
|
// daughter) so the opt-in surface is one source of truth. Both OFF by default —
|
|
35
35
|
// the flag is the isolation, so serving turns request and carry nothing.
|
|
36
|
-
//
|
|
37
|
-
// per-token logprobs; unset
|
|
36
|
+
// PLURNK_PROVIDERS_TOP_LOGPROBS non-negative int = the OpenAI `top_logprobs`
|
|
37
|
+
// count (set -> request per-token logprobs; unset -> off). Per-alias-scopable.
|
|
38
38
|
// PLURNK_PROVIDERS_RAWBODY truthy (not ""/"0") → attach the verbatim wire
|
|
39
39
|
// body to response.rawBody. Per-alias-scopable.
|
|
40
|
-
export const dataCaptureFromEnv = (env, label) =>
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
export const dataCaptureFromEnv = (env, label) => {
|
|
41
|
+
// Old-name shed (OpenAI-lexicon ruling, same pattern as #399): the knob sets
|
|
42
|
+
// the wire `top_logprobs`, so it carries that name. A still-set old name
|
|
43
|
+
// fails hard with the pointer, never silently coexists.
|
|
44
|
+
if (env.PLURNK_PROVIDERS_LOGPROB !== undefined && env.PLURNK_PROVIDERS_LOGPROB.length > 0) {
|
|
45
|
+
throw new Error(`${label} provider: PLURNK_PROVIDERS_LOGPROB was renamed to PLURNK_PROVIDERS_TOP_LOGPROBS (the OpenAI wire term); update the env`);
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
topLogprobs: parseOptionalInt(env.PLURNK_PROVIDERS_TOP_LOGPROBS, "PLURNK_PROVIDERS_TOP_LOGPROBS", label),
|
|
49
|
+
rawBody: env.PLURNK_PROVIDERS_RAWBODY !== undefined && env.PLURNK_PROVIDERS_RAWBODY !== "" && env.PLURNK_PROVIDERS_RAWBODY !== "0",
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
// The context-window pin (SPEC §4) under its OpenAI-lexicon name (#472) — the
|
|
53
|
+
// industry term is "context window" (OpenAI/Anthropic docs, models.dev
|
|
54
|
+
// contextWindow); CONTEXT_SIZE was home-grown. One reader for base AND
|
|
55
|
+
// daughters, so the shed fires everywhere the knob is honored.
|
|
56
|
+
export const contextWindowFromEnv = (env, label) => {
|
|
57
|
+
if (env.PLURNK_PROVIDERS_CONTEXT_SIZE !== undefined && env.PLURNK_PROVIDERS_CONTEXT_SIZE.length > 0) {
|
|
58
|
+
throw new Error(`${label} provider: PLURNK_PROVIDERS_CONTEXT_SIZE was renamed to PLURNK_PROVIDERS_CONTEXT_WINDOW (the industry term, #472); update the env`);
|
|
59
|
+
}
|
|
60
|
+
return parseOptionalInt(env.PLURNK_PROVIDERS_CONTEXT_WINDOW, "PLURNK_PROVIDERS_CONTEXT_WINDOW", label);
|
|
61
|
+
};
|
|
62
|
+
const parseReserve = (raw, name, label) => {
|
|
63
|
+
if (raw === undefined || raw.length === 0)
|
|
64
|
+
throw new Error(`${label} provider: ${name} must be set (a percentage of the window like "10%", or an absolute token count)`);
|
|
65
|
+
const pct = /^([0-9]+(?:\.[0-9]+)?)%$/.exec(raw);
|
|
66
|
+
if (pct !== null) {
|
|
67
|
+
const p = Number(pct[1]);
|
|
68
|
+
if (!Number.isFinite(p) || p <= 0 || p >= 100)
|
|
69
|
+
throw new Error(`${label} provider: ${name} percentage must be in (0, 100) (got "${raw}")`);
|
|
70
|
+
return { percent: p / 100 };
|
|
71
|
+
}
|
|
72
|
+
const n = Number(raw);
|
|
73
|
+
if (!Number.isInteger(n) || n <= 0)
|
|
74
|
+
throw new Error(`${label} provider: ${name} must be "<pct>%" or a positive integer token count (got "${raw}")`);
|
|
75
|
+
return { tokens: n };
|
|
76
|
+
};
|
|
77
|
+
export const envelopeFromEnv = (env, label) => ({
|
|
78
|
+
reasoningReserve: parseReserve(env.PLURNK_PROVIDERS_REASONING_RESERVE, "PLURNK_PROVIDERS_REASONING_RESERVE", label),
|
|
79
|
+
completionReserve: parseReserve(env.PLURNK_PROVIDERS_COMPLETION_RESERVE, "PLURNK_PROVIDERS_COMPLETION_RESERVE", label),
|
|
43
80
|
});
|
|
81
|
+
// Resolve a ReserveSpec against a known window: absolutes stand alone; a
|
|
82
|
+
// percentage needs the window (null when unknown — the underivable/no-cap case).
|
|
83
|
+
export const resolveReserve = (spec, window) => "tokens" in spec ? spec.tokens : window === null ? null : Math.round(spec.percent * window);
|
|
84
|
+
// TOLERANT envelope read for fixtures + consumers that resolve reserves against
|
|
85
|
+
// a known window and treat ABSENCE as "no claim" (null), never fail-hard —
|
|
86
|
+
// unlike envelopeFromEnv (the REQUIRED provider path, fed by the shipped floor).
|
|
87
|
+
// Mock uses this so the service's partition/budget suite drives the SAME
|
|
88
|
+
// env→reserve resolution a real provider does, without the floor. An invalid
|
|
89
|
+
// value still throws (a malformed reserve is an error, not an absence).
|
|
90
|
+
export const resolveEnvelopeFromEnv = (env, window) => {
|
|
91
|
+
const one = (raw, name) => raw === undefined || raw.length === 0 ? null : resolveReserve(parseReserve(raw, name, "mock"), window);
|
|
92
|
+
return {
|
|
93
|
+
reasoningReserve: one(env.PLURNK_PROVIDERS_REASONING_RESERVE, "PLURNK_PROVIDERS_REASONING_RESERVE"),
|
|
94
|
+
completionReserve: one(env.PLURNK_PROVIDERS_COMPLETION_RESERVE, "PLURNK_PROVIDERS_COMPLETION_RESERVE"),
|
|
95
|
+
};
|
|
96
|
+
};
|
|
44
97
|
export const reasoningFromEnv = (env, label) => {
|
|
45
98
|
// Old-name shed (#399, industry-standard ruling): the family word is
|
|
46
99
|
// REASONING — the wire standard we actually speak. A still-set old name
|
|
@@ -76,19 +129,22 @@ export const reasoningFromEnv = (env, label) => {
|
|
|
76
129
|
// facts (API keys, canonical endpoints) remain vendor-named; the per-alias
|
|
77
130
|
// endpoint override stays PLURNK_BASEURL_<alias> (its existing precedent).
|
|
78
131
|
export const PROVIDERS_KNOBS = Object.freeze([
|
|
132
|
+
"PLURNK_PROVIDERS_REASONING_RESERVE",
|
|
133
|
+
"PLURNK_PROVIDERS_COMPLETION_RESERVE",
|
|
79
134
|
"PLURNK_PROVIDERS_REASONING_BUDGET",
|
|
80
135
|
"PLURNK_PROVIDERS_REASONING",
|
|
81
|
-
"
|
|
136
|
+
"PLURNK_PROVIDERS_CONTEXT_WINDOW",
|
|
82
137
|
"PLURNK_PROVIDERS_RETRY_ATTEMPTS",
|
|
83
138
|
"PLURNK_PROVIDERS_FETCH_TIMEOUT",
|
|
84
139
|
"PLURNK_PROVIDERS_LLAMA_SERVER",
|
|
85
140
|
"PLURNK_PROVIDERS_TEMPERATURE",
|
|
86
141
|
"PLURNK_PROVIDERS_REPEAT_PENALTY",
|
|
142
|
+
"PLURNK_PROVIDERS_FREQUENCY_PENALTY",
|
|
87
143
|
"PLURNK_PROVIDERS_RETRY_DELAY",
|
|
88
144
|
"PLURNK_PROVIDERS_PROBE_ATTEMPTS",
|
|
89
145
|
"PLURNK_PROVIDERS_PROBE_DELAY",
|
|
90
146
|
"PLURNK_PROVIDERS_GBNF_DEBUG",
|
|
91
|
-
"
|
|
147
|
+
"PLURNK_PROVIDERS_TOP_LOGPROBS",
|
|
92
148
|
"PLURNK_PROVIDERS_RAWBODY",
|
|
93
149
|
]);
|
|
94
150
|
// Materialize an alias-scoped VIEW of env: for each known knob with a
|
|
@@ -98,8 +154,8 @@ export const PROVIDERS_KNOBS = Object.freeze([
|
|
|
98
154
|
// so fromEnv implementations (and daughters) need zero changes.
|
|
99
155
|
//
|
|
100
156
|
// `knobs` (optional) lets a CONSUMER scope its OWN closed knob list with this
|
|
101
|
-
// same parser — e.g. the service's window-partition vars (
|
|
102
|
-
//
|
|
157
|
+
// same parser — e.g. the service's window-partition vars (PLURNK_SERVICE_CONTEXT_WINDOW/
|
|
158
|
+
// MAX_TURNS/...), so a 64k cloud envelope and a 12k gemma envelope
|
|
103
159
|
// coexist per-alias without the service reimplementing the suffix/collision
|
|
104
160
|
// rules. Default stays the providers-family list; my call sites pass nothing.
|
|
105
161
|
export const scopeEnvToAlias = (env, alias, knobs = PROVIDERS_KNOBS) => {
|
|
@@ -112,7 +168,7 @@ export const scopeEnvToAlias = (env, alias, knobs = PROVIDERS_KNOBS) => {
|
|
|
112
168
|
if (!key.startsWith(knob + "_"))
|
|
113
169
|
continue;
|
|
114
170
|
// A bare knob can prefix another bare knob (_REASONING prefixes
|
|
115
|
-
// _REASONING_BUDGET,
|
|
171
|
+
// _REASONING_BUDGET, _CONTEXT prefixes a hypothetical _CONTEXT_WINDOW): a key
|
|
116
172
|
// that IS a known knob is never a suffixed override, whatever the
|
|
117
173
|
// alias is named.
|
|
118
174
|
if (knobs.includes(key))
|