@copilotkit/aimock 1.37.4 → 1.39.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 (175) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +48 -0
  4. package/README.md +50 -11
  5. package/dist/agui-handler.cjs +20 -18
  6. package/dist/agui-handler.cjs.map +1 -1
  7. package/dist/agui-handler.d.cts +8 -1
  8. package/dist/agui-handler.d.cts.map +1 -1
  9. package/dist/agui-handler.d.ts +8 -1
  10. package/dist/agui-handler.d.ts.map +1 -1
  11. package/dist/agui-handler.js +20 -18
  12. package/dist/agui-handler.js.map +1 -1
  13. package/dist/agui-recorder.cjs +6 -0
  14. package/dist/agui-recorder.cjs.map +1 -1
  15. package/dist/agui-recorder.d.cts.map +1 -1
  16. package/dist/agui-recorder.d.ts.map +1 -1
  17. package/dist/agui-recorder.js +6 -0
  18. package/dist/agui-recorder.js.map +1 -1
  19. package/dist/agui-stub.d.cts +2 -2
  20. package/dist/agui-stub.d.ts +2 -2
  21. package/dist/agui-types.d.cts +19 -1
  22. package/dist/agui-types.d.cts.map +1 -1
  23. package/dist/agui-types.d.ts +19 -1
  24. package/dist/agui-types.d.ts.map +1 -1
  25. package/dist/aimock-cli.cjs +1 -1
  26. package/dist/aimock-cli.cjs.map +1 -1
  27. package/dist/aimock-cli.js +1 -1
  28. package/dist/aimock-cli.js.map +1 -1
  29. package/dist/api-key-auth.cjs +166 -0
  30. package/dist/api-key-auth.cjs.map +1 -0
  31. package/dist/api-key-auth.d.cts +17 -0
  32. package/dist/api-key-auth.d.cts.map +1 -0
  33. package/dist/api-key-auth.d.ts +17 -0
  34. package/dist/api-key-auth.d.ts.map +1 -0
  35. package/dist/api-key-auth.js +158 -0
  36. package/dist/api-key-auth.js.map +1 -0
  37. package/dist/cli.cjs +14 -11
  38. package/dist/cli.cjs.map +1 -1
  39. package/dist/cli.js +14 -11
  40. package/dist/cli.js.map +1 -1
  41. package/dist/config-loader.cjs +4 -2
  42. package/dist/config-loader.cjs.map +1 -1
  43. package/dist/config-loader.d.cts +2 -1
  44. package/dist/config-loader.d.cts.map +1 -1
  45. package/dist/config-loader.d.ts +2 -1
  46. package/dist/config-loader.d.ts.map +1 -1
  47. package/dist/config-loader.js +5 -3
  48. package/dist/config-loader.js.map +1 -1
  49. package/dist/fal-audio.cjs +2 -0
  50. package/dist/fal-audio.cjs.map +1 -1
  51. package/dist/fal-audio.d.cts.map +1 -1
  52. package/dist/fal-audio.d.ts.map +1 -1
  53. package/dist/fal-audio.js +2 -0
  54. package/dist/fal-audio.js.map +1 -1
  55. package/dist/fal.cjs +4 -1
  56. package/dist/fal.cjs.map +1 -1
  57. package/dist/fal.d.cts.map +1 -1
  58. package/dist/fal.d.ts.map +1 -1
  59. package/dist/fal.js +4 -1
  60. package/dist/fal.js.map +1 -1
  61. package/dist/fixture-loader.cjs +0 -0
  62. package/dist/fixture-loader.cjs.map +1 -1
  63. package/dist/fixture-loader.d.cts +3 -1
  64. package/dist/fixture-loader.d.cts.map +1 -1
  65. package/dist/fixture-loader.d.ts +3 -1
  66. package/dist/fixture-loader.d.ts.map +1 -1
  67. package/dist/fixture-loader.js +0 -0
  68. package/dist/fixture-loader.js.map +1 -1
  69. package/dist/grok-video.cjs +9 -2
  70. package/dist/grok-video.cjs.map +1 -1
  71. package/dist/grok-video.js +10 -3
  72. package/dist/grok-video.js.map +1 -1
  73. package/dist/helpers.cjs +16 -22
  74. package/dist/helpers.cjs.map +1 -1
  75. package/dist/helpers.d.cts.map +1 -1
  76. package/dist/helpers.d.ts.map +1 -1
  77. package/dist/helpers.js +16 -21
  78. package/dist/helpers.js.map +1 -1
  79. package/dist/index.d.cts +3 -3
  80. package/dist/index.d.ts +3 -3
  81. package/dist/llmock.cjs +37 -12
  82. package/dist/llmock.cjs.map +1 -1
  83. package/dist/llmock.d.cts +26 -2
  84. package/dist/llmock.d.cts.map +1 -1
  85. package/dist/llmock.d.ts +26 -2
  86. package/dist/llmock.d.ts.map +1 -1
  87. package/dist/llmock.js +39 -15
  88. package/dist/llmock.js.map +1 -1
  89. package/dist/openrouter-chat.cjs +333 -0
  90. package/dist/openrouter-chat.cjs.map +1 -0
  91. package/dist/openrouter-chat.js +325 -0
  92. package/dist/openrouter-chat.js.map +1 -0
  93. package/dist/openrouter-video.cjs +24 -7
  94. package/dist/openrouter-video.cjs.map +1 -1
  95. package/dist/openrouter-video.d.cts.map +1 -1
  96. package/dist/openrouter-video.d.ts.map +1 -1
  97. package/dist/openrouter-video.js +25 -8
  98. package/dist/openrouter-video.js.map +1 -1
  99. package/dist/provider-auth.cjs +20 -0
  100. package/dist/provider-auth.cjs.map +1 -1
  101. package/dist/provider-auth.js +20 -1
  102. package/dist/provider-auth.js.map +1 -1
  103. package/dist/recorder.cjs +50 -8
  104. package/dist/recorder.cjs.map +1 -1
  105. package/dist/recorder.d.cts.map +1 -1
  106. package/dist/recorder.d.ts.map +1 -1
  107. package/dist/recorder.js +50 -10
  108. package/dist/recorder.js.map +1 -1
  109. package/dist/responses.cjs +200 -89
  110. package/dist/responses.cjs.map +1 -1
  111. package/dist/responses.d.cts +18 -3
  112. package/dist/responses.d.cts.map +1 -1
  113. package/dist/responses.d.ts +18 -3
  114. package/dist/responses.d.ts.map +1 -1
  115. package/dist/responses.js +199 -90
  116. package/dist/responses.js.map +1 -1
  117. package/dist/server.cjs +190 -83
  118. package/dist/server.cjs.map +1 -1
  119. package/dist/server.d.cts +7 -2
  120. package/dist/server.d.cts.map +1 -1
  121. package/dist/server.d.ts +7 -2
  122. package/dist/server.d.ts.map +1 -1
  123. package/dist/server.js +190 -85
  124. package/dist/server.js.map +1 -1
  125. package/dist/sse-writer.cjs +3 -0
  126. package/dist/sse-writer.cjs.map +1 -1
  127. package/dist/sse-writer.d.cts +8 -0
  128. package/dist/sse-writer.d.cts.map +1 -1
  129. package/dist/sse-writer.d.ts +8 -0
  130. package/dist/sse-writer.d.ts.map +1 -1
  131. package/dist/sse-writer.js +3 -0
  132. package/dist/sse-writer.js.map +1 -1
  133. package/dist/stream-collapse.cjs +103 -0
  134. package/dist/stream-collapse.cjs.map +1 -1
  135. package/dist/stream-collapse.d.cts +7 -0
  136. package/dist/stream-collapse.d.cts.map +1 -1
  137. package/dist/stream-collapse.d.ts +7 -0
  138. package/dist/stream-collapse.d.ts.map +1 -1
  139. package/dist/stream-collapse.js +103 -0
  140. package/dist/stream-collapse.js.map +1 -1
  141. package/dist/transcription.cjs +49 -2
  142. package/dist/transcription.cjs.map +1 -1
  143. package/dist/transcription.d.cts.map +1 -1
  144. package/dist/transcription.d.ts.map +1 -1
  145. package/dist/transcription.js +50 -3
  146. package/dist/transcription.js.map +1 -1
  147. package/dist/types.d.cts +187 -5
  148. package/dist/types.d.cts.map +1 -1
  149. package/dist/types.d.ts +187 -5
  150. package/dist/types.d.ts.map +1 -1
  151. package/dist/vector-types.d.ts.map +1 -1
  152. package/dist/veo-video.cjs +9 -2
  153. package/dist/veo-video.cjs.map +1 -1
  154. package/dist/veo-video.js +10 -3
  155. package/dist/veo-video.js.map +1 -1
  156. package/dist/ws-gemini-live.cjs +41 -6
  157. package/dist/ws-gemini-live.cjs.map +1 -1
  158. package/dist/ws-gemini-live.js +41 -6
  159. package/dist/ws-gemini-live.js.map +1 -1
  160. package/dist/ws-realtime.cjs +306 -57
  161. package/dist/ws-realtime.cjs.map +1 -1
  162. package/dist/ws-realtime.d.cts +1 -0
  163. package/dist/ws-realtime.d.cts.map +1 -1
  164. package/dist/ws-realtime.d.ts +1 -0
  165. package/dist/ws-realtime.d.ts.map +1 -1
  166. package/dist/ws-realtime.js +307 -58
  167. package/dist/ws-realtime.js.map +1 -1
  168. package/dist/ws-responses.cjs +11 -6
  169. package/dist/ws-responses.cjs.map +1 -1
  170. package/dist/ws-responses.d.cts.map +1 -1
  171. package/dist/ws-responses.d.ts.map +1 -1
  172. package/dist/ws-responses.js +12 -7
  173. package/dist/ws-responses.js.map +1 -1
  174. package/package.json +3 -2
  175. package/skills/write-fixtures/SKILL.md +53 -19
@@ -238,6 +238,10 @@ function collapseOpenAISSE(rawBody) {
238
238
  const inputTruncated = isCollapseInputTruncated(rawBody);
239
239
  const lines = splitSSEEvents(guardCollapseBody(rawBody));
240
240
  let content = "";
241
+ let transcript = "";
242
+ let transcriptSeen = false;
243
+ let transcriptLanguages;
244
+ let transcriptUsage;
241
245
  let reasoning = "";
242
246
  const webSearchQueries = [];
243
247
  let droppedChunks = 0;
@@ -261,6 +265,18 @@ function collapseOpenAISSE(rawBody) {
261
265
  if (droppedChunks === 1) firstDroppedSample = `parse failed (${err instanceof Error ? err.message : "unknown"}): ${surrogateSafeSlice(payload, 200)}`;
262
266
  continue;
263
267
  }
268
+ if (parsed.type === "transcript.text.delta" && typeof parsed.delta === "string") {
269
+ transcript += parsed.delta;
270
+ transcriptSeen = true;
271
+ continue;
272
+ }
273
+ if (parsed.type === "transcript.text.done" && typeof parsed.text === "string") {
274
+ transcript = parsed.text;
275
+ transcriptSeen = true;
276
+ if (Array.isArray(parsed.languages)) transcriptLanguages = parsed.languages.filter((language) => typeof language === "object" && language !== null && typeof language.code === "string").map((language) => ({ code: language.code }));
277
+ if (parsed.usage && typeof parsed.usage === "object") transcriptUsage = parsed.usage;
278
+ continue;
279
+ }
264
280
  if (parsed.type === "response.reasoning_summary_text.delta" && typeof parsed.delta === "string") {
265
281
  reasoning += parsed.delta;
266
282
  continue;
@@ -274,9 +290,86 @@ function collapseOpenAISSE(rawBody) {
274
290
  continue;
275
291
  }
276
292
  }
293
+ if (item?.type === "function_call" && typeof parsed.output_index === "number") {
294
+ const entry = toolCallMap.get(parsed.output_index);
295
+ if (entry) {
296
+ if (!entry.id && typeof item.call_id === "string") entry.id = item.call_id;
297
+ if (!entry.name && typeof item.name === "string") entry.name = item.name;
298
+ if (entry.arguments === "" && typeof item.arguments === "string") entry.arguments = item.arguments;
299
+ } else {
300
+ const created = {
301
+ id: typeof item.call_id === "string" ? item.call_id : "",
302
+ name: typeof item.name === "string" ? item.name : "",
303
+ arguments: typeof item.arguments === "string" ? item.arguments : ""
304
+ };
305
+ toolCallMap.set(parsed.output_index, created);
306
+ orderAtoms.push({
307
+ kind: "toolCall",
308
+ ref: created
309
+ });
310
+ }
311
+ continue;
312
+ }
313
+ }
314
+ if (parsed.type === "response.output_item.added") {
315
+ const item = parsed.item;
316
+ if (item?.type === "function_call" && typeof parsed.output_index === "number") {
317
+ if (!toolCallMap.has(parsed.output_index)) {
318
+ const created = {
319
+ id: typeof item.call_id === "string" ? item.call_id : "",
320
+ name: typeof item.name === "string" ? item.name : "",
321
+ arguments: ""
322
+ };
323
+ toolCallMap.set(parsed.output_index, created);
324
+ orderAtoms.push({
325
+ kind: "toolCall",
326
+ ref: created
327
+ });
328
+ }
329
+ continue;
330
+ }
331
+ }
332
+ if (parsed.type === "response.function_call_arguments.delta" && typeof parsed.delta === "string" && typeof parsed.output_index === "number") {
333
+ let entry = toolCallMap.get(parsed.output_index);
334
+ if (!entry) {
335
+ entry = {
336
+ id: "",
337
+ name: "",
338
+ arguments: ""
339
+ };
340
+ toolCallMap.set(parsed.output_index, entry);
341
+ orderAtoms.push({
342
+ kind: "toolCall",
343
+ ref: entry
344
+ });
345
+ }
346
+ entry.arguments += parsed.delta;
347
+ continue;
348
+ }
349
+ if (parsed.type === "response.function_call_arguments.done" && typeof parsed.output_index === "number") {
350
+ const entry = toolCallMap.get(parsed.output_index);
351
+ if (entry) {
352
+ if (entry.arguments === "" && typeof parsed.arguments === "string") entry.arguments = parsed.arguments;
353
+ } else if (typeof parsed.arguments === "string") {
354
+ const created = {
355
+ id: "",
356
+ name: "",
357
+ arguments: parsed.arguments
358
+ };
359
+ toolCallMap.set(parsed.output_index, created);
360
+ orderAtoms.push({
361
+ kind: "toolCall",
362
+ ref: created
363
+ });
364
+ }
365
+ continue;
277
366
  }
278
367
  if (parsed.type === "response.output_text.delta" && typeof parsed.delta === "string") {
279
368
  content += parsed.delta;
369
+ if (parsed.delta.length > 0) orderAtoms.push({
370
+ kind: "text",
371
+ text: parsed.delta
372
+ });
280
373
  continue;
281
374
  }
282
375
  if (typeof parsed.type === "string" && parsed.type.startsWith("response.")) continue;
@@ -349,6 +442,11 @@ function collapseOpenAISSE(rawBody) {
349
442
  ...tc.id ? { id: tc.id } : {}
350
443
  }));
351
444
  return {
445
+ ...transcriptSeen ? { transcription: {
446
+ text: transcript,
447
+ ...transcriptLanguages ? { languages: transcriptLanguages } : {},
448
+ ...transcriptUsage ? { usage: transcriptUsage } : {}
449
+ } } : {},
352
450
  ...blocks ? { blocks } : {},
353
451
  ...content ? { content } : {},
354
452
  toolCalls: [...blocks ? orderedToolCalls : indexSortedToolCalls, ...harmonyToolCalls],
@@ -362,6 +460,11 @@ function collapseOpenAISSE(rawBody) {
362
460
  };
363
461
  }
364
462
  return {
463
+ ...transcriptSeen ? { transcription: {
464
+ text: transcript,
465
+ ...transcriptLanguages ? { languages: transcriptLanguages } : {},
466
+ ...transcriptUsage ? { usage: transcriptUsage } : {}
467
+ } } : {},
365
468
  content,
366
469
  ...reasoning ? { reasoning } : {},
367
470
  ...webSearchQueries.length > 0 ? { webSearches: webSearchQueries } : {},