@jini-ai/agent-runtime 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +2 -2
  2. package/dist/agent-protocol/acp/session.d.ts +206 -1
  3. package/dist/agent-protocol/acp/session.d.ts.map +1 -1
  4. package/dist/agent-protocol/acp/session.js +505 -350
  5. package/dist/agent-protocol/acp/session.js.map +1 -1
  6. package/dist/agent-protocol/core/json-line-stream.d.ts +53 -0
  7. package/dist/agent-protocol/core/json-line-stream.d.ts.map +1 -1
  8. package/dist/agent-protocol/core/json-line-stream.js +307 -255
  9. package/dist/agent-protocol/core/json-line-stream.js.map +1 -1
  10. package/dist/agent-protocol/pi-rpc/events.d.ts +22 -1
  11. package/dist/agent-protocol/pi-rpc/events.d.ts.map +1 -1
  12. package/dist/agent-protocol/pi-rpc/events.js +189 -153
  13. package/dist/agent-protocol/pi-rpc/events.js.map +1 -1
  14. package/dist/agent-protocol/pi-rpc/session.d.ts +39 -0
  15. package/dist/agent-protocol/pi-rpc/session.d.ts.map +1 -1
  16. package/dist/agent-protocol/pi-rpc/session.js +143 -107
  17. package/dist/agent-protocol/pi-rpc/session.js.map +1 -1
  18. package/dist/claude-stream.d.ts +64 -1
  19. package/dist/claude-stream.d.ts.map +1 -1
  20. package/dist/claude-stream.js +568 -441
  21. package/dist/claude-stream.js.map +1 -1
  22. package/dist/defs/aider.d.ts.map +1 -1
  23. package/dist/defs/aider.js +13 -1
  24. package/dist/defs/aider.js.map +1 -1
  25. package/dist/defs/amp.d.ts.map +1 -1
  26. package/dist/defs/amp.js +16 -1
  27. package/dist/defs/amp.js.map +1 -1
  28. package/dist/defs/amr.d.ts +2 -1
  29. package/dist/defs/amr.d.ts.map +1 -1
  30. package/dist/defs/amr.js +12 -1
  31. package/dist/defs/amr.js.map +1 -1
  32. package/dist/defs/antigravity.d.ts +41 -2
  33. package/dist/defs/antigravity.d.ts.map +1 -1
  34. package/dist/defs/antigravity.js +201 -22
  35. package/dist/defs/antigravity.js.map +1 -1
  36. package/dist/defs/claude.d.ts +2 -0
  37. package/dist/defs/claude.d.ts.map +1 -1
  38. package/dist/defs/claude.js +58 -3
  39. package/dist/defs/claude.js.map +1 -1
  40. package/dist/defs/codebuddy.d.ts.map +1 -1
  41. package/dist/defs/codebuddy.js +9 -1
  42. package/dist/defs/codebuddy.js.map +1 -1
  43. package/dist/defs/codex.d.ts +1 -0
  44. package/dist/defs/codex.d.ts.map +1 -1
  45. package/dist/defs/codex.js +34 -0
  46. package/dist/defs/codex.js.map +1 -1
  47. package/dist/defs/copilot.d.ts.map +1 -1
  48. package/dist/defs/copilot.js +15 -1
  49. package/dist/defs/copilot.js.map +1 -1
  50. package/dist/defs/cursor-agent.d.ts.map +1 -1
  51. package/dist/defs/cursor-agent.js +24 -2
  52. package/dist/defs/cursor-agent.js.map +1 -1
  53. package/dist/defs/deepseek.d.ts.map +1 -1
  54. package/dist/defs/deepseek.js +12 -0
  55. package/dist/defs/deepseek.js.map +1 -1
  56. package/dist/defs/devin.d.ts +2 -1
  57. package/dist/defs/devin.d.ts.map +1 -1
  58. package/dist/defs/devin.js +12 -7
  59. package/dist/defs/devin.js.map +1 -1
  60. package/dist/defs/grok-build.d.ts.map +1 -1
  61. package/dist/defs/grok-build.js +10 -0
  62. package/dist/defs/grok-build.js.map +1 -1
  63. package/dist/defs/hermes.d.ts +1 -0
  64. package/dist/defs/hermes.d.ts.map +1 -1
  65. package/dist/defs/hermes.js +3 -0
  66. package/dist/defs/hermes.js.map +1 -1
  67. package/dist/defs/kilo.d.ts +1 -0
  68. package/dist/defs/kilo.d.ts.map +1 -1
  69. package/dist/defs/kilo.js +3 -0
  70. package/dist/defs/kilo.js.map +1 -1
  71. package/dist/defs/kimi.d.ts +1 -0
  72. package/dist/defs/kimi.d.ts.map +1 -1
  73. package/dist/defs/kimi.js +3 -0
  74. package/dist/defs/kimi.js.map +1 -1
  75. package/dist/defs/kiro.d.ts +1 -0
  76. package/dist/defs/kiro.d.ts.map +1 -1
  77. package/dist/defs/kiro.js +3 -0
  78. package/dist/defs/kiro.js.map +1 -1
  79. package/dist/defs/pi.d.ts +1 -1
  80. package/dist/defs/pi.d.ts.map +1 -1
  81. package/dist/defs/pi.js +6 -1
  82. package/dist/defs/pi.js.map +1 -1
  83. package/dist/defs/qoder.d.ts +1 -0
  84. package/dist/defs/qoder.d.ts.map +1 -1
  85. package/dist/defs/qoder.js +15 -0
  86. package/dist/defs/qoder.js.map +1 -1
  87. package/dist/defs/qwen.d.ts.map +1 -1
  88. package/dist/defs/qwen.js +9 -0
  89. package/dist/defs/qwen.js.map +1 -1
  90. package/dist/defs/reasonix.d.ts +1 -0
  91. package/dist/defs/reasonix.d.ts.map +1 -1
  92. package/dist/defs/reasonix.js +3 -0
  93. package/dist/defs/reasonix.js.map +1 -1
  94. package/dist/defs/shared.d.ts +31 -1
  95. package/dist/defs/shared.d.ts.map +1 -1
  96. package/dist/defs/shared.js +35 -0
  97. package/dist/defs/shared.js.map +1 -1
  98. package/dist/defs/trae-cli.d.ts +1 -0
  99. package/dist/defs/trae-cli.d.ts.map +1 -1
  100. package/dist/defs/trae-cli.js +3 -0
  101. package/dist/defs/trae-cli.js.map +1 -1
  102. package/dist/defs/vibe.d.ts +1 -0
  103. package/dist/defs/vibe.d.ts.map +1 -1
  104. package/dist/defs/vibe.js +3 -0
  105. package/dist/defs/vibe.js.map +1 -1
  106. package/dist/detection.d.ts +1 -1
  107. package/dist/detection.d.ts.map +1 -1
  108. package/dist/detection.js +7 -2
  109. package/dist/detection.js.map +1 -1
  110. package/dist/index.d.ts +2 -1
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +2 -1
  113. package/dist/index.js.map +1 -1
  114. package/dist/log-file.d.ts +23 -0
  115. package/dist/log-file.d.ts.map +1 -0
  116. package/dist/log-file.js +56 -0
  117. package/dist/log-file.js.map +1 -0
  118. package/dist/model-registry.d.ts +7 -45
  119. package/dist/model-registry.d.ts.map +1 -1
  120. package/dist/model-registry.js.map +1 -1
  121. package/dist/providers/anthropic-messages.d.ts +198 -6
  122. package/dist/providers/anthropic-messages.d.ts.map +1 -1
  123. package/dist/providers/anthropic-messages.js +317 -140
  124. package/dist/providers/anthropic-messages.js.map +1 -1
  125. package/dist/providers/azure-chat.d.ts +113 -3
  126. package/dist/providers/azure-chat.d.ts.map +1 -1
  127. package/dist/providers/azure-chat.js +114 -21
  128. package/dist/providers/azure-chat.js.map +1 -1
  129. package/dist/providers/connection-guard.d.ts +121 -1
  130. package/dist/providers/connection-guard.d.ts.map +1 -1
  131. package/dist/providers/connection-guard.js +205 -3
  132. package/dist/providers/connection-guard.js.map +1 -1
  133. package/dist/providers/connection-test.d.ts +62 -0
  134. package/dist/providers/connection-test.d.ts.map +1 -0
  135. package/dist/providers/connection-test.js +404 -0
  136. package/dist/providers/connection-test.js.map +1 -0
  137. package/dist/providers/elevenlabs.d.ts.map +1 -1
  138. package/dist/providers/elevenlabs.js +3 -2
  139. package/dist/providers/elevenlabs.js.map +1 -1
  140. package/dist/providers/google-messages.d.ts +208 -7
  141. package/dist/providers/google-messages.d.ts.map +1 -1
  142. package/dist/providers/google-messages.js +331 -105
  143. package/dist/providers/google-messages.js.map +1 -1
  144. package/dist/providers/index.d.ts +1 -0
  145. package/dist/providers/index.d.ts.map +1 -1
  146. package/dist/providers/index.js +1 -0
  147. package/dist/providers/index.js.map +1 -1
  148. package/dist/providers/model-catalog.d.ts.map +1 -1
  149. package/dist/providers/model-catalog.js +21 -0
  150. package/dist/providers/model-catalog.js.map +1 -1
  151. package/dist/providers/ollama-chat.d.ts +190 -1
  152. package/dist/providers/ollama-chat.d.ts.map +1 -1
  153. package/dist/providers/ollama-chat.js +319 -110
  154. package/dist/providers/ollama-chat.js.map +1 -1
  155. package/dist/providers/openai-chat.d.ts +222 -14
  156. package/dist/providers/openai-chat.d.ts.map +1 -1
  157. package/dist/providers/openai-chat.js +377 -128
  158. package/dist/providers/openai-chat.js.map +1 -1
  159. package/dist/providers/sse-decode.d.ts +2 -2
  160. package/dist/providers/sse-decode.js +2 -2
  161. package/dist/types.d.ts +169 -87
  162. package/dist/types.d.ts.map +1 -1
  163. package/package.json +6 -4
@@ -41,15 +41,60 @@
41
41
  * `finishReason` comparison — the one structural place this adapter
42
42
  * cannot mirror `anthropic-messages.ts`/`openai-chat.ts` byte-for-byte.
43
43
  *
44
- * **Scope for this pass:** text + function-call parts and the tool-
45
- * execution loop only. `inlineData`/`fileData` parts (multimodal input/
46
- * output) and `promptFeedback`'s per-category safety ratings are out of
47
- * scope — a blocked prompt (`promptFeedback.blockReason` present, no
48
- * candidates) is still surfaced as an `error` event rather than silently
49
- * hanging, but the detailed safety-rating breakdown is not modeled.
44
+ * **Scope for this pass:** text + function-call parts, `inlineData` image
45
+ * parts, and the tool-execution loop. `fileData` parts (the Files-API
46
+ * reference form, for content too large to inline) and `promptFeedback`'s
47
+ * per-category safety ratings are still out of scope — a blocked prompt
48
+ * (`promptFeedback.blockReason` present, no candidates) is still surfaced as
49
+ * an `error` event rather than silently hanging, but the detailed
50
+ * safety-rating breakdown is not modeled.
51
+ *
52
+ * **Image support**: `inlineData: {mimeType, data}` (base64) — canonical
53
+ * proto3 JSON field names confirmed via `ai.google.dev/api/rest/v1beta/
54
+ * Content` (`inline_data`/`mime_type` also parse, per proto3's JSON mapping,
55
+ * but this module sends the camelCase canonical form to match every other
56
+ * field it already sends: `functionCall`, `functionResponse`,
57
+ * `usageMetadata`, etc.). Supported formats and the 20 MB total-inline-
58
+ * request budget (text + system instructions + inline bytes combined) per
59
+ * `ai.google.dev/gemini-api/docs/image-understanding` — see
60
+ * `MAX_INLINE_IMAGE_BASE64_CHARS`'s doc for how this module applies that
61
+ * budget per-image.
62
+ *
63
+ * **No documented way to attach an image to a `functionResponse` in this
64
+ * (classic) API.** Checked `ai.google.dev/api/rest/v1beta/Content` and
65
+ * `ai.google.dev/gemini-api/docs/image-understanding` directly for a
66
+ * `FunctionResponse.parts` field or similar — neither documents one; images
67
+ * are only documented as ordinary `Content` input. (A "multimodal function
68
+ * response" feature does exist under `ai.google.dev/gemini-api/docs/
69
+ * function-calling`, but confirmed to belong exclusively to the newer
70
+ * `interactions` API this module already deliberately excludes — see the
71
+ * "Two REST APIs coexist" note above; its `result`/`function_result` shape
72
+ * does not apply here.) So a tool result carrying an image keeps
73
+ * `functionResponse.response` as a plain string (same shape as before), and
74
+ * `runGoogleToolTurn` appends the image as ordinary `inlineData` parts in
75
+ * the *same* `role: 'user'` `Content` alongside the `functionResponse` parts
76
+ * — unlike `openai-chat.ts`, which is forced onto a separate follow-up
77
+ * message because OpenAI's wire `tool` role is hard-restricted to text.
78
+ * Gemini's `Content.parts` has no such restriction: it is just an ordered
79
+ * list of `Part` union members, so mixing `functionResponse` and
80
+ * `inlineData` parts in one `Content` is exactly the same pattern this
81
+ * module already uses for `modelParts` (text + `functionCall` together).
82
+ *
83
+ * **This is still a workaround for a real protocol limitation, not this module inventing
84
+ * structure** — Anthropic's `tool_result` content block can carry an image natively and needs no
85
+ * such fold (see `anthropic-messages.ts`). Both `openai-chat.ts`'s separate-message form and this
86
+ * module's same-`Content` form exist for the identical underlying reason: `FunctionResponse`/`tool`
87
+ * has no documented image slot, so the image has to travel some other way. Each `inlineData` part
88
+ * appended this way is preceded by a plain-text label naming the tool call it answers (name + id)
89
+ * — an unlabeled image is otherwise indistinguishable from a human-supplied one, which in a vision
90
+ * self-check loop risks the model treating its own tool's output as a new user turn. When a batch
91
+ * has parallel tool calls, ALL `functionResponse` parts for the batch are assembled first and every
92
+ * labeled image is appended after them, in one `Content` — never one `Content` per tool result —
93
+ * matching this module's existing single-continuation-turn shape (see `runGoogleToolTurn`'s
94
+ * tool-loop body and its test file's multi-tool-call image test).
50
95
  */
51
96
  import { createRoleMarkerGuard } from '../role-marker-guard.js';
52
- import { defaultDnsLookup, redactSecrets, validateBaseUrlResolved } from './connection-guard.js';
97
+ import { defaultDnsLookup, pinnedFetch, redactSecrets, validateBaseUrlResolved } from './connection-guard.js';
53
98
  import { googleStreamGenerateContentUrl } from './google.js';
54
99
  import { decodeSseStream } from './sse-decode.js';
55
100
  import { createTurnEndGuard } from './turn-end-guard.js';
@@ -105,29 +150,130 @@ function extractGoogleErrorDetail(rawText) {
105
150
  }
106
151
  return rawText.trim().slice(0, 500);
107
152
  }
108
- /** Runs exactly one Gemini `streamGenerateContent` request and reduces its SSE events into a single outcome. Mirrors `anthropic-messages.ts#runSingleAnthropicRequest`'s `emitEnd` contract — see that function's doc. */
109
- async function runSingleGoogleRequest(options, contents, emitEnd) {
153
+ export function applyGoogleUsage(state, data, onEvent) {
154
+ if (!isRecord(data.usageMetadata))
155
+ return;
156
+ state.usage = data.usageMetadata;
157
+ onEvent({ type: 'usage', usage: state.usage });
158
+ }
159
+ /** The frame's first candidate, unnarrowed — `processGoogleFrame` distinguishes "no candidate at all" (checks `promptFeedback` for a blocked-prompt error) from "a candidate that isn't a record" (silently skipped), so this deliberately does not collapse both into one `null`. */
160
+ function firstGoogleCandidate(data) {
161
+ const candidates = Array.isArray(data.candidates) ? data.candidates : [];
162
+ return candidates[0];
163
+ }
164
+ /** Checks `data.promptFeedback` for a documented block reason and, if present, emits the `error` event for it (the caller emits `end` — see `processGoogleFrame`). Returns whether the frame loop should stop. */
165
+ export function handleGoogleBlockedPrompt(data, onEvent) {
166
+ if (!isRecord(data.promptFeedback) || typeof data.promptFeedback.blockReason !== 'string')
167
+ return false;
168
+ onEvent({ type: 'error', message: `prompt blocked: ${data.promptFeedback.blockReason}`, code: data.promptFeedback.blockReason });
169
+ return true;
170
+ }
171
+ function googleCandidateParts(candidate) {
172
+ const content = isRecord(candidate.content) ? candidate.content : null;
173
+ return content && Array.isArray(content.parts) ? content.parts : [];
174
+ }
175
+ /**
176
+ * Feeds one text part through the role-marker guard and emits the safe portion. Returns `'break'`
177
+ * once the guard flags contamination (the caller ends the turn immediately), otherwise
178
+ * `'continue'` — same contract as `anthropic-messages.ts#handleAnthropicTextDelta`.
179
+ */
180
+ export function handleGoogleTextPart(state, text, onEvent) {
181
+ const safe = state.guard.feedText(text);
182
+ if (safe.length > 0) {
183
+ state.fullText += safe;
184
+ onEvent({ type: 'text_delta', delta: safe });
185
+ }
186
+ if (!state.guard.contaminated)
187
+ return 'continue';
188
+ const warn = state.guard.warningEvent();
189
+ if (warn)
190
+ onEvent(warn);
191
+ return 'break';
192
+ }
193
+ /** `rawPart.functionCall` must already be confirmed a record by the caller. Reads `thoughtSignature` off `rawPart` (a sibling of `functionCall`, not a member of it) — see `GoogleFunctionCallPart.thoughtSignature`'s doc for why only a non-empty string is carried. */
194
+ export function handleGoogleFunctionCallPart(state, rawPart, onEvent) {
195
+ const fc = rawPart.functionCall;
196
+ const name = typeof fc.name === 'string' ? fc.name : null;
197
+ if (!name)
198
+ return;
199
+ const id = typeof fc.id === 'string' && fc.id.length > 0 ? fc.id : `call_${state.toolCalls.length}`;
200
+ const signature = typeof rawPart.thoughtSignature === 'string' && rawPart.thoughtSignature.length > 0 ? rawPart.thoughtSignature : undefined;
201
+ const call = { id, name, input: fc.args ?? {}, ...(signature ? { thoughtSignature: signature } : {}) };
202
+ state.toolCalls.push(call);
203
+ onEvent({ type: 'tool_use', id: call.id, name: call.name, input: call.input });
204
+ }
205
+ /** Dispatches one part between the text and function-call handlers above. Returns `'break'` once a text part contaminates the guard, else `'continue'`. */
206
+ export function processGoogleRawPart(state, rawPart, onEvent) {
207
+ if (!isRecord(rawPart))
208
+ return 'continue';
209
+ if (typeof rawPart.text === 'string' && rawPart.text.length > 0) {
210
+ return handleGoogleTextPart(state, rawPart.text, onEvent);
211
+ }
212
+ if (isRecord(rawPart.functionCall)) {
213
+ handleGoogleFunctionCallPart(state, rawPart, onEvent);
214
+ }
215
+ return 'continue';
216
+ }
217
+ /** Dispatches one candidate's `parts` array, one part at a time, via `processGoogleRawPart`. Returns `'break'` once a text part contaminates the guard. */
218
+ function processGoogleParts(state, parts, onEvent) {
219
+ for (const rawPart of parts) {
220
+ if (processGoogleRawPart(state, rawPart, onEvent) === 'break')
221
+ return 'break';
222
+ }
223
+ return 'continue';
224
+ }
225
+ /**
226
+ * Reduces one already-parsed SSE frame payload into `state`, reporting whether the caller's frame
227
+ * loop should stop (`'end'`, on either a blocked prompt or guard contamination) or keep going
228
+ * (`'continue'`). Pulling this out of the loop body turns what was five sequential,
229
+ * nesting-penalized top-level `if`s into one function call plus one outcome check — see
230
+ * `runSingleGoogleRequest`'s loop below.
231
+ */
232
+ export function processGoogleFrame(state, data, onEvent) {
233
+ applyGoogleUsage(state, data, onEvent);
234
+ const rawCandidate = firstGoogleCandidate(data);
235
+ if (!rawCandidate) {
236
+ return handleGoogleBlockedPrompt(data, onEvent) ? { action: 'end', reason: 'error' } : { action: 'continue' };
237
+ }
238
+ if (!isRecord(rawCandidate))
239
+ return { action: 'continue' };
240
+ if (typeof rawCandidate.finishReason === 'string') {
241
+ state.finishReason = rawCandidate.finishReason;
242
+ }
243
+ return processGoogleParts(state, googleCandidateParts(rawCandidate), onEvent) === 'break'
244
+ ? { action: 'end', reason: 'contaminated' }
245
+ : { action: 'continue' };
246
+ }
247
+ /**
248
+ * Validates `options.baseUrl` and opens the streaming POST, returning the response's readable body
249
+ * once every pre-stream failure mode (SSRF-guard rejection, network error, non-2xx status, missing
250
+ * body) has been ruled out. Calls `emitEnd('error')` and returns `null` itself on any of those —
251
+ * the caller only has to check for `null` — same split as
252
+ * `anthropic-messages.ts#openAnthropicResponseStream`.
253
+ */
254
+ async function openGoogleResponseStream(options, contents, emitEnd) {
110
255
  const { onEvent } = options;
111
- const baseUrlCheck = await validateBaseUrlResolved(options.baseUrl ?? DEFAULT_GOOGLE_BASE_URL, defaultDnsLookup);
256
+ const baseUrlCheck = await validateBaseUrlResolved(options.baseUrl ?? DEFAULT_GOOGLE_BASE_URL, options.dnsLookup ?? defaultDnsLookup);
112
257
  if (baseUrlCheck.error) {
113
258
  onEvent({ type: 'error', message: baseUrlCheck.error });
114
259
  emitEnd('error');
115
- return { finishReason: null, toolCalls: [], text: '' };
260
+ return null;
116
261
  }
117
262
  let response;
118
263
  try {
119
- response = (await fetch(googleRequestUrl(options.baseUrl, options.model), {
264
+ response = await (options.fetchImpl ?? pinnedFetch)(googleRequestUrl(options.baseUrl, options.model), {
120
265
  method: 'POST',
121
266
  headers: googleHeaders(options),
122
267
  body: JSON.stringify(googleRequestBody(options, contents)),
268
+ redirect: 'error',
123
269
  ...(options.signal ? { signal: options.signal } : {}),
124
- }));
270
+ }, baseUrlCheck.pinnedAddress);
125
271
  }
126
272
  catch (error) {
127
273
  const message = error instanceof Error ? error.message : String(error);
128
274
  onEvent({ type: 'error', message: redactSecrets(message, [options.apiKey]) });
129
275
  emitEnd('error');
130
- return { finishReason: null, toolCalls: [], text: '' };
276
+ return null;
131
277
  }
132
278
  if (!response.ok) {
133
279
  const rawText = await response.text();
@@ -137,23 +283,35 @@ async function runSingleGoogleRequest(options, contents, emitEnd) {
137
283
  code: String(response.status),
138
284
  });
139
285
  emitEnd('error');
140
- return { finishReason: null, toolCalls: [], text: '' };
286
+ return null;
141
287
  }
142
288
  if (!response.body) {
143
289
  onEvent({ type: 'error', message: 'Google response had no body' });
144
290
  emitEnd('error');
291
+ return null;
292
+ }
293
+ return response.body;
294
+ }
295
+ /** Runs exactly one Gemini `streamGenerateContent` request and reduces its SSE events into a single outcome. Mirrors `anthropic-messages.ts#runSingleAnthropicRequest`'s `emitEnd` contract — see that function's doc. */
296
+ async function runSingleGoogleRequest(options, contents, emitEnd) {
297
+ const { onEvent } = options;
298
+ const body = await openGoogleResponseStream(options, contents, emitEnd);
299
+ if (!body) {
145
300
  return { finishReason: null, toolCalls: [], text: '' };
146
301
  }
147
302
  onEvent({ type: 'status', label: 'requesting' });
148
- const guard = createRoleMarkerGuard('google-turn');
149
- const toolCalls = [];
150
- let fullText = '';
151
- let finishReason = null;
152
- let usage = null;
153
- frameLoop: for await (const frame of decodeSseStream(response.body)) {
154
- // No re-check of an "ended" flag at the top of this loop: every `emitEnd(...)` call site below
155
- // (the promptFeedback block-reason branch and the contamination branch) is immediately followed
156
- // by `break frameLoop` same reachability proof as `anthropic-messages.ts#runSingleAnthropicRequest`.
303
+ const state = {
304
+ guard: createRoleMarkerGuard('google-turn'),
305
+ toolCalls: [],
306
+ fullText: '',
307
+ finishReason: null,
308
+ usage: null,
309
+ };
310
+ frameLoop: for await (const frame of decodeSseStream(body)) {
311
+ // No re-check of an "ended" flag at the top of this loop: the only way this loop calls
312
+ // `emitEnd` is the `outcome.action === 'end'` branch below, immediately followed by
313
+ // `break frameLoop` — same reachability proof as
314
+ // `anthropic-messages.ts#runSingleAnthropicRequest`.
157
315
  let data;
158
316
  try {
159
317
  data = JSON.parse(frame.data);
@@ -163,74 +321,156 @@ async function runSingleGoogleRequest(options, contents, emitEnd) {
163
321
  }
164
322
  if (!isRecord(data))
165
323
  continue;
166
- if (isRecord(data.usageMetadata)) {
167
- usage = data.usageMetadata;
168
- onEvent({ type: 'usage', usage });
324
+ const outcome = processGoogleFrame(state, data, onEvent);
325
+ if (outcome.action === 'end') {
326
+ emitEnd(outcome.reason);
327
+ break frameLoop;
169
328
  }
170
- const candidates = Array.isArray(data.candidates) ? data.candidates : [];
171
- const candidate = candidates[0];
172
- if (!candidate) {
173
- if (isRecord(data.promptFeedback) && typeof data.promptFeedback.blockReason === 'string') {
174
- onEvent({ type: 'error', message: `prompt blocked: ${data.promptFeedback.blockReason}`, code: data.promptFeedback.blockReason });
175
- emitEnd('error');
176
- break frameLoop;
177
- }
178
- continue;
179
- }
180
- if (!isRecord(candidate))
181
- continue;
182
- if (typeof candidate.finishReason === 'string') {
183
- finishReason = candidate.finishReason;
184
- }
185
- const content = isRecord(candidate.content) ? candidate.content : null;
186
- const parts = content && Array.isArray(content.parts) ? content.parts : [];
187
- for (const rawPart of parts) {
188
- if (!isRecord(rawPart))
189
- continue;
190
- if (typeof rawPart.text === 'string' && rawPart.text.length > 0) {
191
- // No `guard.contaminated` pre-check here: the only way it becomes true is the
192
- // `emitEnd('contaminated'); break frameLoop;` a few lines below, which exits the outer
193
- // frame loop immediately see `anthropic-messages.ts#runSingleAnthropicRequest`'s
194
- // identical reachability proof.
195
- const safe = guard.feedText(rawPart.text);
196
- if (safe.length > 0) {
197
- fullText += safe;
198
- onEvent({ type: 'text_delta', delta: safe });
199
- }
200
- if (guard.contaminated) {
201
- const warn = guard.warningEvent();
202
- if (warn)
203
- onEvent(warn);
204
- emitEnd('contaminated');
205
- break frameLoop;
206
- }
207
- continue;
208
- }
209
- if (isRecord(rawPart.functionCall)) {
210
- const fc = rawPart.functionCall;
211
- const name = typeof fc.name === 'string' ? fc.name : null;
212
- if (name) {
213
- const id = typeof fc.id === 'string' && fc.id.length > 0 ? fc.id : `call_${toolCalls.length}`;
214
- const call = { id, name, input: fc.args ?? {} };
215
- toolCalls.push(call);
216
- onEvent({ type: 'tool_use', id: call.id, name: call.name, input: call.input });
217
- }
218
- }
329
+ }
330
+ return { finishReason: state.finishReason, toolCalls: state.toolCalls, text: state.fullText };
331
+ }
332
+ const GOOGLE_ALLOWED_IMAGE_MIME_TYPES = new Set([
333
+ 'image/png',
334
+ 'image/jpeg',
335
+ 'image/webp',
336
+ 'image/heic',
337
+ 'image/heif',
338
+ ]);
339
+ /**
340
+ * Gemini documents a 20 MB total-inline-request budget — text prompts, system instructions, and
341
+ * inline bytes combined (see module doc's "Image support" section) — not a per-image number. This
342
+ * module applies that 20 MB figure per image as a conservative simplification: a real request
343
+ * always also carries text, so a single inline image already at 20 MB leaves no room for anything
344
+ * else, making per-image enforcement at this bound strictly more permissive than the documented
345
+ * total ever allows in practice. No per-image count cap is enforced here (unlike
346
+ * `openai-chat.ts#MAX_IMAGES_PER_OPENAI_TOOL_RESULT`) because Google does not document one for this
347
+ * API. Approximated from the base64 *string* length, not decoded byte count — see
348
+ * `anthropic-messages.ts#MAX_IMAGE_BASE64_CHARS`'s doc for why that's the right thing to measure.
349
+ */
350
+ const MAX_INLINE_IMAGE_BASE64_CHARS = Math.ceil((20 * 1024 * 1024 * 4) / 3);
351
+ /**
352
+ * Validates one tool-result part against Gemini's real format/size constraints. Returns the
353
+ * violation reason, or `null` when the part is legal to send. Text parts are always legal — only
354
+ * `inlineData` is format/size-checked.
355
+ *
356
+ * @complexity O(1) — reads `data.length`, never decodes or parses the base64 payload.
357
+ */
358
+ function invalidGoogleToolResultPartReason(part) {
359
+ if ('text' in part)
360
+ return null;
361
+ const { mimeType, data } = part.inlineData;
362
+ if (!GOOGLE_ALLOWED_IMAGE_MIME_TYPES.has(mimeType.toLowerCase())) {
363
+ return `unsupported image mimeType ${JSON.stringify(mimeType)} (Gemini supports image/png, image/jpeg, image/webp, image/heic, image/heif)`;
364
+ }
365
+ if (data.length > MAX_INLINE_IMAGE_BASE64_CHARS) {
366
+ return `image exceeds this adapter's 20 MB inline-data base64 size guard (${data.length} base64 chars)`;
367
+ }
368
+ return null;
369
+ }
370
+ /**
371
+ * Runtime guard applied to every `GoogleToolExecutor` result before it is wired onto the outbound
372
+ * request or reported via `onEvent` same rationale and posture as
373
+ * `anthropic-messages.ts`'s/`openai-chat.ts`'s identical guards (`GoogleToolResult` is host-owned;
374
+ * the TS content-part union only constrains a well-behaved host at compile time, not a buggy one at
375
+ * runtime).
376
+ *
377
+ * @complexity O(n) in the number of content parts; O(1) per part (see `invalidGoogleToolResultPartReason`).
378
+ */
379
+ function sanitizeGoogleToolResult(result) {
380
+ const originalIsError = result.isError ?? false;
381
+ if (typeof result.content === 'string')
382
+ return { content: result.content, isError: originalIsError };
383
+ for (const part of result.content) {
384
+ const reason = invalidGoogleToolResultPartReason(part);
385
+ if (reason)
386
+ return { content: `tool result rejected: ${reason}`, isError: true };
387
+ }
388
+ return { content: result.content, isError: originalIsError };
389
+ }
390
+ /**
391
+ * Splits one (already-sanitized) tool result's content into the plain-string form
392
+ * `functionResponse.response.content` requires, plus any `inlineData` parts that travel alongside
393
+ * it in the same continuation `Content` — see `runGoogleToolTurn`'s call site.
394
+ *
395
+ * A string `content` is left untouched (`imageParts: []`) — this is the pre-existing, unchanged
396
+ * path every current caller already exercises. For an array, text parts are joined in order; if
397
+ * there is no text at all (an image-only result), a placeholder string is substituted so
398
+ * `functionResponse.response.content` is never empty.
399
+ *
400
+ * @complexity O(n) in the number of content parts.
401
+ */
402
+ function splitGoogleToolResultContent(content) {
403
+ if (typeof content === 'string')
404
+ return { responseContent: content, imageParts: [] };
405
+ const textParts = content.filter((part) => 'text' in part);
406
+ const imageParts = content.filter((part) => 'inlineData' in part);
407
+ const responseContent = textParts.length > 0 ? textParts.map((part) => part.text).join('\n') : '(tool result included only non-text content; see the accompanying image parts)';
408
+ return { responseContent, imageParts };
409
+ }
410
+ /**
411
+ * Decides why the tool loop should stop after one request, or returns `null` when it should
412
+ * instead proceed to execute the pending tool calls. Pure — no events, no I/O — mirrors
413
+ * `anthropic-messages.ts#anthropicLoopExitReason`'s decision/effect split. Deliberate structural
414
+ * difference from that sibling: the continuation predicate is `toolCalls.length > 0`, not a
415
+ * `finishReason` comparison (see module doc, point 2, for why Gemini's `finishReason` enum cannot
416
+ * be used here).
417
+ */
418
+ export function googleLoopExitReason(outcome, toolTurns, maxToolTurns) {
419
+ if (outcome.toolCalls.length === 0)
420
+ return 'stop';
421
+ if (toolTurns >= maxToolTurns)
422
+ return 'max_tool_turns';
423
+ return null;
424
+ }
425
+ /** Builds the `model`-role `Content`'s `parts` recording the pending tool calls — text (if any) followed by one `functionCall` part per call, each with its `thoughtSignature` spread back on as a sibling field, in the same shape the response delivered it and only when the response actually carried one (a `functionCall` part with no signature is legal; one with an empty-string signature is not). */
426
+ export function buildGoogleAssistantParts(text, toolCalls) {
427
+ return [
428
+ ...(text ? [{ text }] : []),
429
+ ...toolCalls.map((call) => ({
430
+ functionCall: { name: call.name, args: call.input, id: call.id },
431
+ ...(call.thoughtSignature ? { thoughtSignature: call.thoughtSignature } : {}),
432
+ })),
433
+ ];
434
+ }
435
+ /**
436
+ * Runs every pending tool call in order, reducing the results into the `functionResponse` parts
437
+ * for the batch plus any labeled `inlineData` image parts that ride alongside them in the same
438
+ * continuation `Content` — see module doc's "No documented way to attach an image to a
439
+ * functionResponse" section for why images travel this way instead of a separate follow-up
440
+ * message (unlike `openai-chat.ts`/`azure-chat.ts`).
441
+ */
442
+ export async function executeGoogleToolCalls(executeTool, calls, onEvent) {
443
+ const functionResponseParts = [];
444
+ const followUpParts = [];
445
+ for (const call of calls) {
446
+ const result = await executeTool(call);
447
+ const sanitized = sanitizeGoogleToolResult(result);
448
+ onEvent({ type: 'tool_result', toolUseId: call.id, content: sanitized.content, isError: sanitized.isError });
449
+ const split = splitGoogleToolResultContent(sanitized.content);
450
+ functionResponseParts.push({
451
+ functionResponse: {
452
+ name: call.name,
453
+ id: call.id,
454
+ response: { content: split.responseContent, isError: sanitized.isError },
455
+ },
456
+ });
457
+ if (split.imageParts.length > 0) {
458
+ // Attribution label — see module doc for why an unlabeled image is unsafe here.
459
+ followUpParts.push({ text: `Image output from tool \`${call.name}\` (tool_call_id: ${call.id}):` });
460
+ followUpParts.push(...split.imageParts);
219
461
  }
220
462
  }
221
- return { finishReason, toolCalls, text: fullText };
463
+ return { functionResponseParts, followUpParts };
222
464
  }
223
465
  /**
224
466
  * Runs a full Gemini `streamGenerateContent` turn, including the
225
467
  * tool-execution loop when `options.executeTool` is supplied and the model
226
468
  * requests a function call. See `anthropic-messages.ts#runAnthropicToolTurn`'s
227
- * doc for the shared event-stream/`ended`-flag contract this mirrors — with
228
- * one deliberate structural difference: the loop-continuation predicate is
229
- * `toolCalls.length > 0`, not a `finishReason` comparison (see module doc,
230
- * point 2, for why Gemini's `finishReason` enum cannot be used here).
469
+ * doc for the shared event-stream/`ended`-flag contract this mirrors.
231
470
  */
232
471
  export async function runGoogleToolTurn(options) {
233
472
  const maxToolTurns = options.maxToolTurns ?? DEFAULT_MAX_TOOL_TURNS;
473
+ const executeTool = options.executeTool;
234
474
  const endGuard = createTurnEndGuard(options.onEvent, (reason) => ({ type: 'end', reason }));
235
475
  const emitEnd = endGuard.emitEnd;
236
476
  let contents = options.contents.slice();
@@ -241,42 +481,28 @@ export async function runGoogleToolTurn(options) {
241
481
  lastFinishReason = outcome.finishReason;
242
482
  if (endGuard.hasEnded())
243
483
  break;
244
- if (outcome.toolCalls.length === 0) {
245
- emitEnd('stop');
484
+ const exitReason = googleLoopExitReason(outcome, toolTurns, maxToolTurns);
485
+ if (exitReason) {
486
+ emitEnd(exitReason);
246
487
  break;
247
488
  }
248
- if (!options.executeTool) {
489
+ if (!executeTool) {
249
490
  // Pending tool calls were already emitted as `tool_use` events above;
250
491
  // with no executor to run them, the turn ends here rather than
251
492
  // silently retrying forever.
252
493
  emitEnd('stop');
253
494
  break;
254
495
  }
255
- if (toolTurns >= maxToolTurns) {
256
- emitEnd('max_tool_turns');
257
- break;
258
- }
259
496
  toolTurns += 1;
260
- const modelParts = [
261
- ...(outcome.text ? [{ text: outcome.text }] : []),
262
- ...outcome.toolCalls.map((call) => ({ functionCall: { name: call.name, args: call.input, id: call.id } })),
263
- ];
264
- const functionResponseParts = [];
265
- for (const call of outcome.toolCalls) {
266
- const result = await options.executeTool(call);
267
- options.onEvent({ type: 'tool_result', toolUseId: call.id, content: result.content, isError: result.isError ?? false });
268
- functionResponseParts.push({
269
- functionResponse: {
270
- name: call.name,
271
- id: call.id,
272
- response: { content: result.content, isError: result.isError ?? false },
273
- },
274
- });
275
- }
497
+ const modelParts = buildGoogleAssistantParts(outcome.text, outcome.toolCalls);
498
+ const { functionResponseParts, followUpParts } = await executeGoogleToolCalls(executeTool, outcome.toolCalls, options.onEvent);
276
499
  contents = [
277
500
  ...contents,
278
501
  { role: 'model', parts: modelParts },
279
- { role: 'user', parts: functionResponseParts },
502
+ // `inlineData` parts ride in the same `Content` as the `functionResponse` parts they belong
503
+ // to — no separate follow-up message needed here, unlike `openai-chat.ts` (see module doc's
504
+ // "No documented way to attach an image to a functionResponse" section for why).
505
+ { role: 'user', parts: [...functionResponseParts, ...followUpParts] },
280
506
  ];
281
507
  }
282
508
  return { finishReason: lastFinishReason, toolTurns };
@@ -1 +1 @@
1
- {"version":3,"file":"google-messages.js","sourceRoot":"","sources":["../../src/providers/google-messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-messages.js","sourceRoot":"","sources":["../../src/providers/google-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,uBAAuB,EAAsC,MAAM,uBAAuB,CAAC;AAClJ,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAsB,MAAM,qBAAqB,CAAC;AAsI7E,MAAM,uBAAuB,GAAG,2CAA2C,CAAC;AAC5E,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,OAA2B,EAAE,KAAa;IAClE,OAAO,8BAA8B,CAAC,OAAO,IAAI,uBAAuB,EAAE,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,aAAa,CAAC,OAA0B;IAC/C,OAAO;QACL,cAAc,EAAE,kBAAkB;QAClC,gBAAgB,EAAE,OAAO,CAAC,MAAM;QAChC,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA0B,EAAE,QAAkC;IACvF,MAAM,gBAAgB,GAA4B;QAChD,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/F,CAAC;IACF,OAAO;QACL,QAAQ;QACR,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3F,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAiBD,MAAM,UAAU,gBAAgB,CAAC,KAAwB,EAAE,IAA6B,EAAE,OAAyC;IACjI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QAAE,OAAO;IAC1C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;IACjC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,sRAAsR;AACtR,SAAS,oBAAoB,CAAC,IAA6B;IACzD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,kNAAkN;AAClN,MAAM,UAAU,yBAAyB,CAAC,IAA6B,EAAE,OAAyC;IAChH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxG,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;IACjI,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAkC;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAwB,EAAE,IAAY,EAAE,OAAyC;IACpH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;QACvB,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;QAAE,OAAO,UAAU,CAAC;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IACxC,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0QAA0Q;AAC1Q,MAAM,UAAU,4BAA4B,CAAC,KAAwB,EAAE,OAAgC,EAAE,OAAyC;IAChJ,MAAM,EAAE,GAAG,OAAO,CAAC,YAAuC,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IACpG,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7I,MAAM,IAAI,GAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvH,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,2JAA2J;AAC3J,MAAM,UAAU,oBAAoB,CAAC,KAAwB,EAAE,OAAgB,EAAE,OAAyC;IACxH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,UAAU,CAAC;IAC1C,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,2JAA2J;AAC3J,SAAS,kBAAkB,CAAC,KAAwB,EAAE,KAAyB,EAAE,OAAyC;IACxH,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC;IAChF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAKD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAwB,EAAE,IAA6B,EAAE,OAAyC;IACnI,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChH,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAE3D,IAAI,OAAO,YAAY,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAClD,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;IACjD,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,KAAK,OAAO;QACvF,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE;QAC3C,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAA0B,EAC1B,QAAkC,EAClC,OAA8C;IAE9C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,OAAO,IAAI,uBAAuB,EAAE,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;IACtI,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAmH,CAAC;IACxH,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC,CACjD,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAChD;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC1D,QAAQ,EAAE,OAAO;YACjB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,EACD,YAAY,CAAC,aAAa,CAC3B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC;YACN,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,aAAa,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,0NAA0N;AAC1N,KAAK,UAAU,sBAAsB,CACnC,OAA0B,EAC1B,QAAkC,EAClC,OAA8C;IAE9C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAsB;QAC/B,KAAK,EAAE,qBAAqB,CAAC,aAAa,CAAC;QAC3C,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,IAAI;KACZ,CAAC;IAEF,SAAS,EAAE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,uFAAuF;QACvF,oFAAoF;QACpF,iDAAiD;QACjD,qDAAqD;QACrD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,8CAA8C;QAC1D,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QAE9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxB,MAAM,SAAS,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AAChG,CAAC;AAED,MAAM,+BAA+B,GAAwB,IAAI,GAAG,CAAC;IACnE,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;CACb,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,6BAA6B,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5E;;;;;;GAMG;AACH,SAAS,iCAAiC,CAAC,IAA0B;IACnE,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IAC3C,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACjE,OAAO,8BAA8B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IAC9I,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,6BAA6B,EAAE,CAAC;QAChD,OAAO,qEAAqE,IAAI,CAAC,MAAM,gBAAgB,CAAC;IAC1G,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD;;;;;;;;GAQG;AACH,SAAS,wBAAwB,CAAC,MAAwB;IACxD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;IAChD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACrG,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,MAAM;YAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AAC/D,CAAC;AAQD;;;;;;;;;;;GAWG;AACH,SAAS,4BAA4B,CAAC,OAAiD;IACrF,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACrF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IAChG,MAAM,eAAe,GACnB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gFAAgF,CAAC;IAC1J,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA6B,EAAE,SAAiB,EAAE,YAAoB;IACzG,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAClD,IAAI,SAAS,IAAI,YAAY;QAAE,OAAO,gBAAgB,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gZAAgZ;AAChZ,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,SAAoC;IAC1F,OAAO;QACL,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,GAAG,SAAS,CAAC,GAAG,CACd,CAAC,IAAI,EAAE,EAAE,CACP,CAAC;YACC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YAChE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E,CAAU,CACd;KACF,CAAC;AACJ,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAA+B,EAC/B,KAAgC,EAChC,OAAyC;IAEzC,MAAM,qBAAqB,GAAiB,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAiB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7G,MAAM,KAAK,GAAG,4BAA4B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9D,qBAAqB,CAAC,IAAI,CAAC;YACzB,gBAAgB,EAAE;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE;aACzE;SACF,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,gFAAgF;YAChF,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,IAAI,CAAC,IAAI,qBAAqB,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACpG,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA0B;IAChE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,sBAAsB,CAAC;IACpE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAExC,MAAM,QAAQ,GAAG,kBAAkB,CAAkB,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEjC,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAE3C,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;QAExC,IAAI,QAAQ,CAAC,QAAQ,EAAE;YAAE,MAAM;QAE/B,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1E,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM;QACR,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,sEAAsE;YACtE,+DAA+D;YAC/D,6BAA6B;YAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;YAChB,MAAM;QACR,CAAC;QACD,SAAS,IAAI,CAAC,CAAC;QAEf,MAAM,UAAU,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9E,MAAM,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE/H,QAAQ,GAAG;YACT,GAAG,QAAQ;YACX,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;YACpC,4FAA4F;YAC5F,4FAA4F;YAC5F,iFAAiF;YACjF,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,qBAAqB,EAAE,GAAG,aAAa,CAAC,EAAE;SACtE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC"}
@@ -24,6 +24,7 @@ export * from './google.js';
24
24
  export * from './aihubmix.js';
25
25
  export * from './connection-guard.js';
26
26
  export * from './model-catalog.js';
27
+ export * from './connection-test.js';
27
28
  export * from './sse-decode.js';
28
29
  export * from './anthropic-messages.js';
29
30
  export * from './openai-chat.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
@@ -24,6 +24,7 @@ export * from './google.js';
24
24
  export * from './aihubmix.js';
25
25
  export * from './connection-guard.js';
26
26
  export * from './model-catalog.js';
27
+ export * from './connection-test.js';
27
28
  export * from './sse-decode.js';
28
29
  export * from './anthropic-messages.js';
29
30
  export * from './openai-chat.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/providers/model-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD,OAAO,KAAK,EAIV,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IACxD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9C,mFAAmF;IACnF,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB,CAAC;AA+OF;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CA0JjC"}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/providers/model-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD,OAAO,KAAK,EAIV,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IACxD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9C,mFAAmF;IACnF,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB,CAAC;AAmQF;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CA6JjC"}