@sigil0/looking-glass 0.2.5 → 0.3.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/errors.js ADDED
@@ -0,0 +1,316 @@
1
+ const MAX_DETAIL = 512;
2
+ const MAX_RAW_DETAIL = 16 * 1024;
3
+ const MAX_CONTEXT_PART = 96;
4
+ const MAX_CAUSE_DEPTH = 8;
5
+ function isRecord(value) {
6
+ return typeof value === "object" && value !== null;
7
+ }
8
+ function read(value, key) {
9
+ if (!isRecord(value))
10
+ return undefined;
11
+ try {
12
+ return value[key];
13
+ }
14
+ catch {
15
+ return undefined;
16
+ }
17
+ }
18
+ function textValue(value) {
19
+ return typeof value === "string" ? value : undefined;
20
+ }
21
+ function parseJsonString(value) {
22
+ const trimmed = value.trim();
23
+ if (!trimmed.startsWith("{") && !trimmed.startsWith("["))
24
+ return undefined;
25
+ try {
26
+ const parsed = JSON.parse(trimmed);
27
+ return isRecord(parsed) || Array.isArray(parsed) ? parsed : undefined;
28
+ }
29
+ catch {
30
+ return undefined;
31
+ }
32
+ }
33
+ function statusValue(value) {
34
+ if (typeof value === "number" && Number.isInteger(value) && value >= 100 && value <= 599)
35
+ return value;
36
+ if (typeof value === "string" && /^\d{3}$/.test(value)) {
37
+ const status = Number(value);
38
+ return status >= 100 && status <= 599 ? status : undefined;
39
+ }
40
+ return undefined;
41
+ }
42
+ function responseStatusValue(value) {
43
+ const status = statusValue(value);
44
+ if (status !== undefined)
45
+ return status;
46
+ if (typeof value !== "string")
47
+ return undefined;
48
+ const trimmed = value.trim();
49
+ return /^[A-Za-z][A-Za-z0-9_.:-]{0,79}$/.test(trimmed) ? trimmed : undefined;
50
+ }
51
+ function collectDetails(value, result, seen, depth = 0) {
52
+ if (depth > 6 || value === null || value === undefined)
53
+ return;
54
+ if (typeof value === "string") {
55
+ const parsed = parseJsonString(value);
56
+ if (parsed !== undefined)
57
+ collectDetails(parsed, result, seen, depth + 1);
58
+ else if (result.message === undefined)
59
+ result.message = value;
60
+ return;
61
+ }
62
+ if (!isRecord(value)) {
63
+ if (Array.isArray(value)) {
64
+ for (const item of value.slice(0, 8))
65
+ collectDetails(item, result, seen, depth + 1);
66
+ }
67
+ return;
68
+ }
69
+ if (seen.has(value))
70
+ return;
71
+ seen.add(value);
72
+ // Prefer the useful nested provider object over an SDK's generic outer message.
73
+ for (const key of ["error", "detail", "errors"]) {
74
+ collectDetails(read(value, key), result, seen, depth + 1);
75
+ }
76
+ // OpenRouter sometimes wraps the actual upstream response in metadata.raw.
77
+ // Inspect it before the generic outer message, while bounding both parsing
78
+ // and the eventual diagnostic detail.
79
+ const metadata = read(value, "metadata");
80
+ const raw = read(metadata, "raw");
81
+ if (typeof raw === "string") {
82
+ const bounded = raw.slice(0, MAX_RAW_DETAIL);
83
+ const parsed = parseJsonString(bounded);
84
+ if (parsed !== undefined)
85
+ collectDetails(parsed, result, seen, depth + 1);
86
+ else if (result.message === undefined)
87
+ result.message = bounded;
88
+ }
89
+ else if (raw !== undefined) {
90
+ collectDetails(raw, result, seen, depth + 1);
91
+ }
92
+ const message = textValue(read(value, "message"));
93
+ const rawCode = read(value, "code");
94
+ const numericCode = statusValue(rawCode);
95
+ if (result.status === undefined && numericCode !== undefined)
96
+ result.status = numericCode;
97
+ const code = textValue(rawCode);
98
+ // A numeric three-digit OpenRouter code is an HTTP status, not the useful
99
+ // provider error code. Keep the latter when it is available deeper in raw.
100
+ const usefulCode = code !== undefined && statusValue(code) === undefined ? code : undefined;
101
+ const type = textValue(read(value, "type"));
102
+ const param = textValue(read(value, "param"));
103
+ if (result.message === undefined && message !== undefined)
104
+ result.message = message;
105
+ if (result.code === undefined && usefulCode !== undefined)
106
+ result.code = usefulCode;
107
+ if (result.type === undefined && type !== undefined)
108
+ result.type = type;
109
+ if (result.param === undefined && param !== undefined)
110
+ result.param = param;
111
+ const rawStatus = read(value, "status");
112
+ const status = statusValue(rawStatus);
113
+ if (result.status === undefined && status !== undefined)
114
+ result.status = status;
115
+ if (result.responseStatus === undefined) {
116
+ const responseStatus = responseStatusValue(read(value, "responseStatus"))
117
+ ?? (status === undefined ? responseStatusValue(rawStatus) : undefined);
118
+ if (responseStatus !== undefined)
119
+ result.responseStatus = responseStatus;
120
+ }
121
+ }
122
+ function inspectCauses(value, result, seen, depth = 0) {
123
+ if (depth > MAX_CAUSE_DEPTH || value === null || value === undefined)
124
+ return;
125
+ if (typeof value === "string") {
126
+ result.entries.push({ message: value });
127
+ return;
128
+ }
129
+ if (!isRecord(value) || seen.has(value))
130
+ return;
131
+ seen.add(value);
132
+ const entry = {};
133
+ const code = textValue(read(value, "code"));
134
+ const name = textValue(read(value, "name"));
135
+ const message = textValue(read(value, "message"));
136
+ if (code !== undefined)
137
+ entry.code = code;
138
+ if (name !== undefined)
139
+ entry.name = name;
140
+ if (message !== undefined)
141
+ entry.message = message;
142
+ if (code !== undefined || name !== undefined || message !== undefined)
143
+ result.entries.push(entry);
144
+ inspectCauses(read(value, "cause"), result, seen, depth + 1);
145
+ }
146
+ function sanitizeText(value, secrets, limit = MAX_DETAIL) {
147
+ let result = value;
148
+ for (const secret of [...secrets].filter((item) => item.length > 0).sort((a, b) => b.length - a.length)) {
149
+ result = result.split(secret).join("[REDACTED]");
150
+ }
151
+ result = result
152
+ .replace(/\bBearer(?:\s*[:=]\s*|\s+)(?!\[REDACTED\])[^,\s;)}\]>"]+/gi, "Bearer [REDACTED]")
153
+ .replace(/(\b(?:authorization|proxy[-_ ]authorization|cookie|set[-_ ]cookie|api[-_ ]?key|(?:access|refresh|client|private|auth|session)[-_ ]?(?:token|secret|key)|aws[-_ ]?secret[-_ ]?access[-_ ]?key|token|secret|password)\s*[:=]\s*)(?!Bearer(?:\s|[:=]))(?:"[^"]*"|'[^']*'|[^\s,;)}>\"']+)/gi, "$1[REDACTED]")
154
+ .replace(/\bhttps?:\/\/[^\s<>"']+/gi, (url) => {
155
+ const withoutQuery = url.slice(0, url.search(/[?#]/) >= 0 ? url.search(/[?#]/) : url.length);
156
+ return withoutQuery.replace(/^(https?:\/\/)[^/@\s]+@/i, "$1");
157
+ })
158
+ .replace(/[\u0000-\u001F\u007F-\u009F]+/g, " ")
159
+ .replace(/\s+/g, " ")
160
+ .trim();
161
+ return result.length <= limit ? result : `${result.slice(0, Math.max(0, limit - 1))}…`;
162
+ }
163
+ function safeField(value, secrets, limit = 128) {
164
+ if (value === undefined)
165
+ return undefined;
166
+ const safe = sanitizeText(value, secrets, limit);
167
+ return safe || undefined;
168
+ }
169
+ function signalAborted(signal) {
170
+ try {
171
+ return signal?.aborted === true;
172
+ }
173
+ catch {
174
+ return false;
175
+ }
176
+ }
177
+ function has(value, pattern) {
178
+ return pattern.test(value);
179
+ }
180
+ function classifyError(context, clues, hasStatus, detail) {
181
+ const callerAborted = context.callerAborted === true || signalAborted(context.callerSignal);
182
+ const timedOut = context.timedOut === true || signalAborted(context.timeoutSignal);
183
+ if (callerAborted)
184
+ return "cancelled";
185
+ if (timedOut)
186
+ return "timeout";
187
+ const entries = clues.entries.map((entry) => ({
188
+ code: entry.code?.toUpperCase() ?? "",
189
+ name: entry.name?.toUpperCase() ?? "",
190
+ text: [entry.code, entry.name, entry.message].filter((part) => part !== undefined).join(" "),
191
+ }));
192
+ if (entries.some((entry) => has(entry.code, /^(?:ETIMEDOUT|ESOCKETTIMEDOUT|UND_ERR_(?:CONNECT|HEADERS)_TIMEOUT|ERR_SOCKET_TIMEOUT)$/)
193
+ || entry.name === "TIMEOUTERROR"))
194
+ return "timeout";
195
+ if (entries.some((entry) => has(entry.code, /^(?:ABORT_ERR|ERR_ABORTED)$/) || entry.name === "ABORTERROR"
196
+ || has(entry.text, /\b(?:aborted|cancelled|canceled)\b/i)))
197
+ return "cancelled";
198
+ if (entries.some((entry) => has(entry.code, /^(?:ENOTFOUND|EAI_AGAIN|EAI_FAIL|EAI_NODATA)$/)
199
+ || has(entry.text, /(?:dns|\bgetaddrinfo\b|name resolution|could not resolve)/i)))
200
+ return "dns";
201
+ if (entries.some((entry) => has(entry.code, /^(?:ECONNREFUSED)$/)
202
+ || has(entry.text, /connection refused/i)))
203
+ return "refused";
204
+ if (entries.some((entry) => has(entry.code, /^(?:ECONNRESET|EHOSTUNREACH|ENETUNREACH|ENETDOWN|EPIPE|ECONNABORTED|UND_ERR_SOCKET|ERR_NETWORK)$/)
205
+ || has(entry.text, /(?:socket hang up|network error|network connection)/i)))
206
+ return "network";
207
+ if (context.protocol === true || entries.some((entry) => has(entry.code, /(?:MALFORMED|INVALID_(?:JSON|RESPONSE)|PROTOCOL)/)
208
+ || has(entry.text, /(?:malformed|invalid json|unexpected token|unexpected end|not valid json|response (?:had no body|shape|schema))/i)
209
+ || has(detail.message ?? "", /(?:malformed|invalid json|unexpected token|unexpected end|not valid json|response (?:had no body|shape|schema))/i))) {
210
+ return "protocol";
211
+ }
212
+ if (!hasStatus && entries.some((entry) => has(entry.text, /\b(?:timed? ?out|timeout)\b/i)))
213
+ return "timeout";
214
+ return "generic";
215
+ }
216
+ function fieldSummary(detail, secrets) {
217
+ const message = safeField(detail.message, secrets);
218
+ const fields = [
219
+ ["code", detail.code],
220
+ ["type", detail.type],
221
+ ["param", detail.param],
222
+ ].flatMap(([key, value]) => {
223
+ const safe = safeField(value, secrets, 96);
224
+ return safe === undefined ? [] : [`${key}=${safe}`];
225
+ });
226
+ if (message !== undefined && fields.length > 0)
227
+ return `${message} (${fields.join(", ")})`;
228
+ return message ?? fields.join(", ");
229
+ }
230
+ function contextPart(value, secrets, fallback) {
231
+ return safeField(value, secrets, MAX_CONTEXT_PART) ?? fallback;
232
+ }
233
+ export function providerError(error, context) {
234
+ const secrets = [...(context.configuredSecrets ?? [])].filter((secret) => typeof secret === "string");
235
+ const detail = {};
236
+ collectDetails(error, detail, new Set());
237
+ const clues = { entries: [] };
238
+ inspectCauses(error, clues, new Set());
239
+ const contextStatus = statusValue(context.status);
240
+ const status = contextStatus ?? detail.status ?? statusValue(context.responseStatus) ?? statusValue(detail.responseStatus);
241
+ const responseStatus = responseStatusValue(context.responseStatus)
242
+ ?? responseStatusValue(detail.responseStatus)
243
+ ?? (status === undefined ? undefined : status);
244
+ const kind = classifyError(context, clues, status !== undefined, detail);
245
+ const provider = contextPart(context.provider, secrets, "provider");
246
+ const operation = contextPart(context.operation, secrets, "operation");
247
+ const prefix = `${provider} ${operation}`;
248
+ const summary = fieldSummary(detail, secrets);
249
+ let message;
250
+ if (status !== undefined && kind !== "timeout" && kind !== "cancelled") {
251
+ const httpDetail = kind === "protocol" && detail.message === undefined ? "malformed provider response" : summary;
252
+ message = `${prefix} failed with HTTP ${status}${httpDetail ? `: ${httpDetail}` : ""}`;
253
+ }
254
+ else {
255
+ switch (kind) {
256
+ case "timeout":
257
+ message = `${prefix} timed out`;
258
+ break;
259
+ case "cancelled":
260
+ message = `${prefix} was cancelled by the caller`;
261
+ break;
262
+ case "refused":
263
+ message = `${prefix} failed: connection refused`;
264
+ break;
265
+ case "dns":
266
+ message = `${prefix} failed: DNS lookup failed`;
267
+ break;
268
+ case "network":
269
+ message = `${prefix} failed: network connection failed`;
270
+ break;
271
+ case "protocol":
272
+ message = `${prefix} failed: malformed provider response`;
273
+ break;
274
+ default:
275
+ message = `${prefix} failed${summary ? `: ${summary}` : ""}`;
276
+ break;
277
+ }
278
+ }
279
+ const normalized = new Error(sanitizeText(message, secrets));
280
+ normalized.name = "ProviderError";
281
+ const fields = {};
282
+ const code = safeField(detail.code, secrets, 96);
283
+ const type = safeField(detail.type, secrets, 96);
284
+ const param = safeField(detail.param, secrets, 96);
285
+ if (code !== undefined)
286
+ fields.code = code;
287
+ if (type !== undefined)
288
+ fields.type = type;
289
+ if (param !== undefined)
290
+ fields.param = param;
291
+ if (status !== undefined)
292
+ fields.status = status;
293
+ if (responseStatus !== undefined)
294
+ fields.responseStatus = responseStatus;
295
+ Object.assign(normalized, fields);
296
+ return normalized;
297
+ }
298
+ export function providerHttpError(first, second, third) {
299
+ const hasExplicitStatus = third !== undefined;
300
+ const context = (hasExplicitStatus ? third : second);
301
+ const status = hasExplicitStatus
302
+ ? (typeof first === "number" ? statusValue(first) : statusValue(read(first, "status")))
303
+ : undefined;
304
+ const payload = hasExplicitStatus ? second : first;
305
+ const malformedJson = typeof payload === "string"
306
+ && (payload.trim().startsWith("{") || payload.trim().startsWith("["))
307
+ && parseJsonString(payload) === undefined;
308
+ const nextContext = {
309
+ ...context,
310
+ ...(status === undefined ? {} : { status }),
311
+ ...(malformedJson ? { protocol: true } : {}),
312
+ };
313
+ return providerError(malformedJson ? { code: "malformed_response" } : payload, nextContext);
314
+ }
315
+ export const normalizeProviderError = providerError;
316
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import OpenAI from "openai";
2
1
  import type { FunctionTool, Response, ResponseInputItem, ResponseStreamEvent } from "openai/resources/responses/responses";
3
2
  import type { GatewayProvider, GlassConfig, ModelInfo, ReasoningEffort, Verbosity } from "../types.js";
4
3
  interface ModelMetadata {
@@ -57,6 +56,28 @@ interface LmStudioModel {
57
56
  };
58
57
  };
59
58
  }
59
+ export interface OpenRouterModel {
60
+ id: string;
61
+ name?: string;
62
+ description?: string | null;
63
+ context_length?: number | null;
64
+ max_completion_tokens?: number | null;
65
+ max_output_tokens?: number | null;
66
+ architecture?: {
67
+ modality?: string | null;
68
+ input_modalities?: string[] | null;
69
+ output_modalities?: string[] | null;
70
+ } | null;
71
+ pricing?: {
72
+ prompt?: string | number | null;
73
+ completion?: string | number | null;
74
+ } | null;
75
+ supported_parameters?: string[] | null;
76
+ top_provider?: {
77
+ context_length?: number | null;
78
+ max_completion_tokens?: number | null;
79
+ } | null;
80
+ }
60
81
  export interface StreamCallbacks {
61
82
  onTextDelta?(delta: string): void;
62
83
  onReasoningDelta?(delta: string): void;
@@ -70,6 +91,7 @@ export interface ResponseRequest {
70
91
  promptCacheKey: string;
71
92
  reasoningEffort: ReasoningEffort;
72
93
  supportsReasoning: boolean;
94
+ supportsParallelToolCalls: boolean;
73
95
  verbosity: Verbosity;
74
96
  fast: boolean;
75
97
  previousResponseId?: string;
@@ -83,56 +105,27 @@ export interface CompactRequest {
83
105
  fast: boolean;
84
106
  signal?: AbortSignal;
85
107
  }
86
- export declare function buildResponseParams(provider: GatewayProvider, request: ResponseRequest): {
87
- store: boolean;
88
- text: {
89
- format: {
90
- type: "text";
91
- };
92
- verbosity?: never;
93
- };
94
- previous_response_id?: string;
95
- reasoning?: {
96
- effort: Exclude<ReasoningEffort, "ultra">;
97
- summary: "auto";
98
- };
99
- model: string;
100
- instructions: string;
101
- input: OpenAI.Responses.ResponseInputItem[];
102
- tools: OpenAI.Responses.FunctionTool[];
103
- parallel_tool_calls: boolean;
104
- } | {
105
- service_tier?: "priority";
106
- store: boolean;
107
- prompt_cache_key: string;
108
- include: "reasoning.encrypted_content"[];
109
- text: {
110
- verbosity: Verbosity;
111
- format?: never;
112
- };
113
- previous_response_id?: string;
114
- reasoning?: {
115
- effort: Exclude<ReasoningEffort, "ultra">;
116
- summary: "auto";
117
- };
118
- model: string;
119
- instructions: string;
120
- input: OpenAI.Responses.ResponseInputItem[];
121
- tools: OpenAI.Responses.FunctionTool[];
122
- parallel_tool_calls: boolean;
123
- };
108
+ interface ResponseParams {
109
+ input: ResponseInputItem[];
110
+ tools: FunctionTool[];
111
+ [key: string]: unknown;
112
+ }
113
+ export declare function buildResponseParams(provider: GatewayProvider, request: ResponseRequest): ResponseParams;
124
114
  export declare function isStaleResponseError(value: unknown, requestWasAnchored: boolean): boolean;
125
115
  export declare function modelInfo(raw: RawModel): ModelInfo;
126
116
  export declare function lmStudioModelInfo(raw: LmStudioModel): ModelInfo;
117
+ export declare function openRouterModelInfo(raw: OpenRouterModel): ModelInfo;
127
118
  export declare function responseText(response: Pick<Response, "output" | "output_text">): string;
119
+ type OpenRouterChatMessage = Record<string, unknown>;
120
+ export declare function openRouterMessages(instructions: string, input: ResponseInputItem[]): OpenRouterChatMessage[];
121
+ export declare function buildOpenRouterParams(request: ResponseRequest): Record<string, unknown>;
128
122
  export declare class CodexLbClient {
129
123
  private readonly config;
130
- private readonly client;
131
124
  private readonly apiKey;
132
125
  constructor(config: GlassConfig);
133
126
  supportsResponseContinuity(): boolean;
134
- private safeErrorMessage;
135
127
  models(signal?: AbortSignal): Promise<ModelInfo[]>;
128
+ private openRouterStream;
136
129
  stream(request: ResponseRequest, callbacks?: StreamCallbacks): Promise<Response>;
137
130
  compact(request: CompactRequest): Promise<Record<string, unknown>>;
138
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codex-lb.d.ts","sourceRoot":"","sources":["../../src/model/codex-lb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-lb.d.ts","sourceRoot":"","sources":["../../src/model/codex-lb.ts"],"names":[],"mappings":"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"}