llm-relay 0.45.1 → 0.46.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.
@@ -1,4 +1,5 @@
1
1
  import type { JsonSchema } from "./anthropic.js";
2
+ import { type DialectRefusalSignal } from "./tool-dialects.js";
2
3
  /** Result of inspecting a buffered native Chat completion for leaked dialect text. */
3
4
  export type OpenAiChatDialectOutcome = {
4
5
  status: "none";
@@ -9,6 +10,12 @@ export type OpenAiChatDialectOutcome = {
9
10
  } | {
10
11
  status: "detected";
11
12
  dialect: string;
13
+ }
14
+ /** A recovered call names a tool on the operator's destructive list — refused, never committed. */
15
+ | {
16
+ status: "refused-destructive";
17
+ dialect: string;
18
+ refused: string[];
12
19
  };
13
20
  type ToolSchemas = Map<string, JsonSchema | null>;
14
21
  export interface RecoveredOpenAiChat {
@@ -28,7 +35,7 @@ export type RecoveredOpenAiChatProcessor = (recovered: RecoveredOpenAiChat) => P
28
35
  * and coercion rules remain owned by `tool-dialects.ts`, and an unparseable marker is reported to
29
36
  * the caller so it can fail the candidate cleanly.
30
37
  */
31
- export declare function inspectDialectInOpenAiChat(input: Record<string, unknown>, schemas: ToolSchemas, processRecovered?: RecoveredOpenAiChatProcessor): Promise<OpenAiChatDialectOutcome>;
38
+ export declare function inspectDialectInOpenAiChat(input: Record<string, unknown>, schemas: ToolSchemas, isDestructive: (name: string) => boolean, processRecovered?: RecoveredOpenAiChatProcessor): Promise<OpenAiChatDialectOutcome>;
32
39
  /**
33
40
  * Native OpenAI Chat streaming dialect adapter.
34
41
  *
@@ -38,5 +45,5 @@ export declare function inspectDialectInOpenAiChat(input: Record<string, unknown
38
45
  * final-wire commit probe then decides whether that error is still an invisible failover or an
39
46
  * honest post-commit stream error.
40
47
  */
41
- export declare function recoverDialectInOpenAiChatStream(upstream: ReadableStream<Uint8Array>, schemas: ToolSchemas, onRecovered?: (dialect: string) => void, processRecovered?: RecoveredOpenAiChatProcessor): ReadableStream<Uint8Array>;
48
+ export declare function recoverDialectInOpenAiChatStream(upstream: ReadableStream<Uint8Array>, schemas: ToolSchemas, isDestructive: (name: string) => boolean, onRecovered?: (dialect: string) => void, processRecovered?: RecoveredOpenAiChatProcessor, refusalSignal?: DialectRefusalSignal): ReadableStream<Uint8Array>;
42
49
  export {};
@@ -1,5 +1,5 @@
1
1
  import { STREAM_PREFLIGHT_LIMIT } from "./stream-commit.js";
2
- import { markerStart, recoverToolCalls, scanForMarker } from "./tool-dialects.js";
2
+ import { DIALECT_REFUSED_DESTRUCTIVE_CODE, describeRefused, markerStart, recoverToolCalls, scanForMarker } from "./tool-dialects.js";
3
3
  function isRecord(value) {
4
4
  return typeof value === "object" && value !== null && !Array.isArray(value);
5
5
  }
@@ -30,7 +30,7 @@ function recoveredValue(outcome, choiceIndex) {
30
30
  * and coercion rules remain owned by `tool-dialects.ts`, and an unparseable marker is reported to
31
31
  * the caller so it can fail the candidate cleanly.
32
32
  */
33
- export async function inspectDialectInOpenAiChat(input, schemas, processRecovered) {
33
+ export async function inspectDialectInOpenAiChat(input, schemas, isDestructive, processRecovered) {
34
34
  if (schemas.size === 0 || !Array.isArray(input.choices))
35
35
  return { status: "none" };
36
36
  const typedSchemas = recoverySchemas(schemas);
@@ -45,9 +45,15 @@ export async function inspectDialectInOpenAiChat(input, schemas, processRecovere
45
45
  continue;
46
46
  if (typeof message.content !== "string" || message.content.length === 0)
47
47
  continue;
48
- const outcome = recoverToolCalls(message.content, typedSchemas);
48
+ const outcome = recoverToolCalls(message.content, typedSchemas, isDestructive);
49
49
  if (outcome.status === "detected")
50
50
  return { status: "detected", dialect: outcome.dialect };
51
+ // Refuse the WHOLE completion, and refuse it here — before the `pending` loop spends a
52
+ // reshaper call on any choice. Same ordering reason as the detected branch: one unusable
53
+ // choice makes the completion unusable, so nothing downstream may run first.
54
+ if (outcome.status === "refused-destructive") {
55
+ return { status: "refused-destructive", dialect: outcome.dialect, refused: outcome.refused };
56
+ }
51
57
  if (outcome.status === "none")
52
58
  continue;
53
59
  recoveredDialect ??= outcome.dialect;
@@ -128,11 +134,16 @@ function withoutContent(choice) {
128
134
  const hasFinish = choice.finish_reason !== null && choice.finish_reason !== undefined;
129
135
  return hasOtherDelta || hasFinish ? { ...choice, delta } : null;
130
136
  }
131
- function errorEvent(message, code) {
137
+ /**
138
+ * `type` defaults to `upstream_error` because that is what an in-band stream failure normally is.
139
+ * A relay-authored refusal passes its own type so the commit probe reads it as LOCAL and the walk
140
+ * does not reroll a decision the relay already made.
141
+ */
142
+ function errorEvent(message, code, type = "upstream_error") {
132
143
  return encodeEvent("", {
133
144
  error: {
134
145
  message,
135
- type: "upstream_error",
146
+ type,
136
147
  code,
137
148
  },
138
149
  });
@@ -165,7 +176,7 @@ function recoveredEvents(template, choice, recovered, eventName) {
165
176
  * final-wire commit probe then decides whether that error is still an invisible failover or an
166
177
  * honest post-commit stream error.
167
178
  */
168
- export function recoverDialectInOpenAiChatStream(upstream, schemas, onRecovered = () => { }, processRecovered) {
179
+ export function recoverDialectInOpenAiChatStream(upstream, schemas, isDestructive, onRecovered = () => { }, processRecovered, refusalSignal) {
169
180
  if (schemas.size === 0)
170
181
  return upstream;
171
182
  const decoder = new TextDecoder();
@@ -191,11 +202,11 @@ export function recoverDialectInOpenAiChatStream(upstream, schemas, onRecovered
191
202
  }
192
203
  return state;
193
204
  };
194
- const fail = async (message, code) => {
205
+ const fail = async (message, code, type) => {
195
206
  if (terminated)
196
207
  return;
197
208
  terminated = true;
198
- push(errorEvent(message, code));
209
+ push(type === undefined ? errorEvent(message, code) : errorEvent(message, code, type));
199
210
  await reader.cancel(message).catch(() => { });
200
211
  };
201
212
  const settleChoice = async (index, state, eventName) => {
@@ -209,7 +220,17 @@ export function recoverDialectInOpenAiChatStream(upstream, schemas, onRecovered
209
220
  return [];
210
221
  return [encodeEvent(eventName, withChoices(state.lastChunk, [withContent(state.lastChoice, tail)]))];
211
222
  }
212
- const outcome = recoverToolCalls(state.envelope, typedSchemas);
223
+ const outcome = recoverToolCalls(state.envelope, typedSchemas, isDestructive);
224
+ if (outcome.status === "refused-destructive") {
225
+ // Declared provenance — see `DialectRefusalSignal`. The wire code alone is forgeable.
226
+ if (refusalSignal)
227
+ refusalSignal.refused = true;
228
+ // Headers are already flushed here, so the refusal travels as the mid-stream error event
229
+ // — the shape the unparseable case uses, with its own code. Refused whole: the surviving
230
+ // calls are not committed, because dropping one silently changes the model's intent.
231
+ await fail(`llm-relay: refused a ${outcome.dialect} tool call recovered from text because it names a destructive tool: ${describeRefused(outcome.refused)}`, DIALECT_REFUSED_DESTRUCTIVE_CODE, DIALECT_REFUSED_DESTRUCTIVE_CODE);
232
+ return [];
233
+ }
213
234
  if (outcome.status !== "parsed") {
214
235
  const dialect = outcome.status === "detected" ? outcome.dialect : "unknown";
215
236
  await fail(`llm-relay: backend returned an unparseable ${dialect} tool-call envelope as text`, "tool_dialect_unparseable");
@@ -1 +1 @@
1
- {"version":3,"file":"openai-dialect.js","sourceRoot":"","sources":["../src/openai-dialect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-dialect.js","sourceRoot":"","sources":["../src/openai-dialect.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -12,7 +12,8 @@ import { reconstructFromSse } from "./sse.js";
12
12
  import { emitSse, emitSseTail, syntheticMessageId } from "./emitSse.js";
13
13
  import { repair, destructiveMatcher } from "./repair.js";
14
14
  import { CredentialWalkReshaper, HttpReshaper, } from "./reshaper.js";
15
- import { fetchBackend, fetchOpenAiFront, normalizeOpenAiErrorBody, parseRetryAfterMs, postHeaderBodyFailure, upstreamReportedModel, toolUseIdRewrites, toolCallIdRewrites, thoughtSignatureSentinels, SERVED_BY_HEADER, POOL_ATTEMPTS_HEADER, UNKNOWN_REFUSAL_HEADER, DEGRADED_HEADER, PAID_HEADER, QUOTA_DEMOTED_HEADER, CREDENTIAL_HEADER, CREDENTIAL_ATTEMPTS_HEADER, HARD_CAP_HEADER, errorOrigin } from "./backend.js";
15
+ import { DIALECT_REFUSED_DESTRUCTIVE_CODE } from "./tool-dialects.js";
16
+ import { dialectRefusalSignalOf, ERROR_ORIGIN_HEADER, TOOL_DIALECT_HEADER, fetchBackend, fetchOpenAiFront, normalizeOpenAiErrorBody, parseRetryAfterMs, postHeaderBodyFailure, upstreamReportedModel, toolUseIdRewrites, toolCallIdRewrites, thoughtSignatureSentinels, SERVED_BY_HEADER, POOL_ATTEMPTS_HEADER, UNKNOWN_REFUSAL_HEADER, DEGRADED_HEADER, PAID_HEADER, QUOTA_DEMOTED_HEADER, CREDENTIAL_HEADER, CREDENTIAL_ATTEMPTS_HEADER, HARD_CAP_HEADER, errorOrigin } from "./backend.js";
16
17
  import { probeStreamForCommit } from "./stream-commit.js";
17
18
  import { ModelCatalog } from "./catalog.js";
18
19
  import { handleAdminRoutes } from "./routes/admin.js";
@@ -22,7 +23,7 @@ import { recordModelCall } from "./ping/runtime-telemetry.js";
22
23
  import { createUsageAccumulator } from "./usage-observer.js";
23
24
  import { createAccountingRequest, NOOP_ACCOUNTING_RECORDER, } from "./accounting.js";
24
25
  import { DashboardAuthManager } from "./dashboard-auth.js";
25
- import { handleDashboardRoute } from "./dashboard-routes.js";
26
+ import { BODY_TOO_LARGE_CODE, handleDashboardRoute } from "./dashboard-routes.js";
26
27
  import { createDashboardSnapshotReadPort } from "./dashboard-snapshot.js";
27
28
  import { createAvailabilityProducer } from "./availability-snapshot.js";
28
29
  import { DASHBOARD_STATIC_SECURITY_HEADERS, DashboardStaticHandler, getProductionDashboardAssetRoot, } from "./dashboard-static.js";
@@ -1153,6 +1154,9 @@ async function handle(req, res, cfg, h) {
1153
1154
  reqJson,
1154
1155
  anthropicHeaders: forwardHeaders,
1155
1156
  wantsStream,
1157
+ // Reaches the dialect-rescue commit points: a tool call the relay reconstructs out of
1158
+ // model TEXT is refused when it names a destructive tool.
1159
+ isDestructive: h.isDestructive,
1156
1160
  usage,
1157
1161
  signal: controller.signal,
1158
1162
  onEgress,
@@ -1275,6 +1279,10 @@ async function handle(req, res, cfg, h) {
1275
1279
  ? await probeStreamForCommit(backendRes.body, "anthropic-messages", {
1276
1280
  isCancelled: () => res.destroyed,
1277
1281
  malformedProvenance: target.kind === "openai" ? "local" : "upstream",
1282
+ // Declared, never inferred from the wire: only a stream the dialect wrapper actually
1283
+ // wrapped has a signal, so an upstream echoing the refusal code cannot mint `local`
1284
+ // provenance for itself and thereby dodge both failover and breaker accounting.
1285
+ ...(dialectRefusalSignalOf(backendRes) ? { relayRefusal: dialectRefusalSignalOf(backendRes) } : {}),
1278
1286
  })
1279
1287
  : { kind: "dead", reason: "stream has no body", provenance: "upstream" };
1280
1288
  if (probe.kind === "cancelled") {
@@ -1308,13 +1316,20 @@ async function handle(req, res, cfg, h) {
1308
1316
  pool429.recordFinal(502);
1309
1317
  const headers = {
1310
1318
  [SERVED_BY_HEADER]: tried.join(", "),
1319
+ // Who produced this status. A dead PRE-COMMIT stream the relay judged `local` is the
1320
+ // proxy's own verdict, and saying so is the header's documented job — it was simply
1321
+ // never written on this path.
1322
+ [ERROR_ORIGIN_HEADER]: probe.provenance,
1311
1323
  ...(stickyProvenanceHeaders(sticky) ?? {}),
1312
1324
  ...credentialTrace.headers(),
1325
+ ...(probe.errorType === DIALECT_REFUSED_DESTRUCTIVE_CODE
1326
+ ? { [TOOL_DIALECT_HEADER]: "refused-destructive" }
1327
+ : {}),
1313
1328
  };
1314
1329
  const summary = pool429.summary();
1315
1330
  if (summary)
1316
1331
  headers[POOL_ATTEMPTS_HEADER] = summary;
1317
- failClosed(res, 502, `llm-relay: ${probe.reason}`, headers);
1332
+ failClosed(res, 502, `llm-relay: ${probe.reason}`, headers, probe.errorType);
1318
1333
  h.logger.write(baseLog(started, path, hadTools, true, 502, "skipped", target, attemptTrace.snapshot(), upstreamReportedModel(reportedModelSource)));
1319
1334
  return;
1320
1335
  }
@@ -2787,6 +2802,7 @@ async function openAiFrontPath(res, credentialWalk, credentialTrace, ctx, h) {
2787
2802
  protocol: ctx.protocol,
2788
2803
  anthropicHeaders: forwardHeaders,
2789
2804
  signal: controller.signal,
2805
+ isDestructive: h.isDestructive,
2790
2806
  processRecoveredChat,
2791
2807
  usage,
2792
2808
  onEgress,
@@ -2933,6 +2949,7 @@ async function openAiFrontPath(res, credentialWalk, credentialTrace, ctx, h) {
2933
2949
  ? await probeStreamForCommit(upstream.body, protocol, {
2934
2950
  isCancelled: () => res.destroyed,
2935
2951
  malformedProvenance: target.kind === "openai" && ctx.protocol === "chat" ? "upstream" : "local",
2952
+ ...(dialectRefusalSignalOf(upstream) ? { relayRefusal: dialectRefusalSignalOf(upstream) } : {}),
2936
2953
  })
2937
2954
  : { kind: "dead", reason: "stream has no body", provenance: "upstream" };
2938
2955
  if (probe.kind === "cancelled") {
@@ -2967,15 +2984,19 @@ async function openAiFrontPath(res, credentialWalk, credentialTrace, ctx, h) {
2967
2984
  const headers = {
2968
2985
  "content-type": "application/json",
2969
2986
  [SERVED_BY_HEADER]: tried.join(", "),
2987
+ [ERROR_ORIGIN_HEADER]: probe.provenance,
2970
2988
  ...(stickyProvenanceHeaders(ctx.sticky) ?? {}),
2971
2989
  ...credentialTrace.headers(),
2990
+ ...(probe.errorType === DIALECT_REFUSED_DESTRUCTIVE_CODE
2991
+ ? { [TOOL_DIALECT_HEADER]: "refused-destructive" }
2992
+ : {}),
2972
2993
  };
2973
2994
  const summary = pool429.summary();
2974
2995
  if (summary)
2975
2996
  headers[POOL_ATTEMPTS_HEADER] = summary;
2976
2997
  res.writeHead(502, headers);
2977
2998
  res.end(JSON.stringify({
2978
- error: { message: `llm-relay: ${probe.reason}`, type: "api_error" },
2999
+ error: { message: `llm-relay: ${probe.reason}`, type: probe.errorType ?? "api_error" },
2979
3000
  }));
2980
3001
  h.logger.write(baseLog(ctx.started, ctx.path, ctx.hadTools, true, 502, "skipped", target, attemptTrace.snapshot(), upstreamReportedModel(reportedModelSource)));
2981
3002
  return;
@@ -3901,7 +3922,10 @@ function readBody(req, maxBytes = DEFAULT_MAX_BODY_BYTES) {
3901
3922
  cleanup();
3902
3923
  // Drain without retaining the rest so the client can receive the explicit 413 response.
3903
3924
  req.resume();
3904
- reject(new Error("request body too large"));
3925
+ // Tagged, not described: the dashboard route classifies 413-vs-500 from this CODE. It used
3926
+ // to regex-match this very message string, i.e. the relay inferring its own intent from
3927
+ // prose — see `BODY_TOO_LARGE_CODE`. Harmless for the other caller, which ignores it.
3928
+ reject(Object.assign(new Error("request body too large"), { code: BODY_TOO_LARGE_CODE }));
3905
3929
  return;
3906
3930
  }
3907
3931
  chunks.push(c);
@@ -3954,14 +3978,19 @@ async function writeChunk(res, chunk, beforeWrite) {
3954
3978
  return false;
3955
3979
  }
3956
3980
  }
3957
- function failClosed(res, status, message, headers) {
3981
+ function failClosed(res, status, message, headers,
3982
+ /**
3983
+ * Error type for the body. Defaults to `api_error`, which is what every caller wanted before a
3984
+ * relay-authored refusal could reach here — so an omitted argument is byte-identical to before.
3985
+ */
3986
+ errorType = "api_error") {
3958
3987
  if (res.headersSent) {
3959
3988
  if (!res.writableEnded)
3960
3989
  res.end();
3961
3990
  return;
3962
3991
  }
3963
3992
  res.writeHead(status, { ...headers, "content-type": "application/json" });
3964
- res.end(JSON.stringify({ type: "error", error: { type: "api_error", message } }));
3993
+ res.end(JSON.stringify({ type: "error", error: { type: errorType, message } }));
3965
3994
  }
3966
3995
  /**
3967
3996
  * Build the metadata record for one turn.