@copilotkit/aimock 1.34.0 → 1.35.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.
Files changed (151) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +22 -0
  4. package/README.md +2 -1
  5. package/dist/agui-types.d.cts.map +1 -1
  6. package/dist/bedrock-converse.cjs +110 -8
  7. package/dist/bedrock-converse.cjs.map +1 -1
  8. package/dist/bedrock-converse.d.cts.map +1 -1
  9. package/dist/bedrock-converse.d.ts.map +1 -1
  10. package/dist/bedrock-converse.js +111 -9
  11. package/dist/bedrock-converse.js.map +1 -1
  12. package/dist/bedrock.cjs +141 -4
  13. package/dist/bedrock.cjs.map +1 -1
  14. package/dist/bedrock.d.cts.map +1 -1
  15. package/dist/bedrock.d.ts.map +1 -1
  16. package/dist/bedrock.js +142 -5
  17. package/dist/bedrock.js.map +1 -1
  18. package/dist/cohere.cjs +89 -7
  19. package/dist/cohere.cjs.map +1 -1
  20. package/dist/cohere.d.cts.map +1 -1
  21. package/dist/cohere.d.ts.map +1 -1
  22. package/dist/cohere.js +90 -8
  23. package/dist/cohere.js.map +1 -1
  24. package/dist/config-loader.d.cts.map +1 -1
  25. package/dist/fixture-loader.cjs +121 -20
  26. package/dist/fixture-loader.cjs.map +1 -1
  27. package/dist/fixture-loader.d.cts.map +1 -1
  28. package/dist/fixture-loader.d.ts.map +1 -1
  29. package/dist/fixture-loader.js +121 -20
  30. package/dist/fixture-loader.js.map +1 -1
  31. package/dist/gemini-interactions.cjs +97 -60
  32. package/dist/gemini-interactions.cjs.map +1 -1
  33. package/dist/gemini-interactions.d.cts.map +1 -1
  34. package/dist/gemini-interactions.d.ts.map +1 -1
  35. package/dist/gemini-interactions.js +98 -61
  36. package/dist/gemini-interactions.js.map +1 -1
  37. package/dist/gemini.cjs +71 -6
  38. package/dist/gemini.cjs.map +1 -1
  39. package/dist/gemini.d.cts.map +1 -1
  40. package/dist/gemini.d.ts.map +1 -1
  41. package/dist/gemini.js +72 -7
  42. package/dist/gemini.js.map +1 -1
  43. package/dist/grok-video.cjs +834 -0
  44. package/dist/grok-video.cjs.map +1 -0
  45. package/dist/grok-video.d.cts +74 -0
  46. package/dist/grok-video.d.cts.map +1 -0
  47. package/dist/grok-video.d.ts +74 -0
  48. package/dist/grok-video.d.ts.map +1 -0
  49. package/dist/grok-video.js +829 -0
  50. package/dist/grok-video.js.map +1 -0
  51. package/dist/helpers.cjs +181 -2
  52. package/dist/helpers.cjs.map +1 -1
  53. package/dist/helpers.d.cts +33 -3
  54. package/dist/helpers.d.cts.map +1 -1
  55. package/dist/helpers.d.ts +33 -3
  56. package/dist/helpers.d.ts.map +1 -1
  57. package/dist/helpers.js +181 -3
  58. package/dist/helpers.js.map +1 -1
  59. package/dist/index.cjs +11 -0
  60. package/dist/index.d.cts +5 -3
  61. package/dist/index.d.ts +5 -3
  62. package/dist/index.js +4 -2
  63. package/dist/messages.cjs +99 -10
  64. package/dist/messages.cjs.map +1 -1
  65. package/dist/messages.d.cts.map +1 -1
  66. package/dist/messages.d.ts.map +1 -1
  67. package/dist/messages.js +100 -11
  68. package/dist/messages.js.map +1 -1
  69. package/dist/metrics.cjs +11 -1
  70. package/dist/metrics.cjs.map +1 -1
  71. package/dist/metrics.d.cts.map +1 -1
  72. package/dist/metrics.d.ts.map +1 -1
  73. package/dist/metrics.js +8 -1
  74. package/dist/metrics.js.map +1 -1
  75. package/dist/ollama.cjs +74 -4
  76. package/dist/ollama.cjs.map +1 -1
  77. package/dist/ollama.d.cts.map +1 -1
  78. package/dist/ollama.d.ts.map +1 -1
  79. package/dist/ollama.js +75 -5
  80. package/dist/ollama.js.map +1 -1
  81. package/dist/openrouter-video.cjs +19 -138
  82. package/dist/openrouter-video.cjs.map +1 -1
  83. package/dist/openrouter-video.d.cts.map +1 -1
  84. package/dist/openrouter-video.d.ts.map +1 -1
  85. package/dist/openrouter-video.js +1 -120
  86. package/dist/openrouter-video.js.map +1 -1
  87. package/dist/recorder.cjs +36 -20
  88. package/dist/recorder.cjs.map +1 -1
  89. package/dist/recorder.js +36 -20
  90. package/dist/recorder.js.map +1 -1
  91. package/dist/responses.cjs +136 -58
  92. package/dist/responses.cjs.map +1 -1
  93. package/dist/responses.d.cts +2 -2
  94. package/dist/responses.d.cts.map +1 -1
  95. package/dist/responses.d.ts +2 -2
  96. package/dist/responses.d.ts.map +1 -1
  97. package/dist/responses.js +137 -59
  98. package/dist/responses.js.map +1 -1
  99. package/dist/server.cjs +162 -20
  100. package/dist/server.cjs.map +1 -1
  101. package/dist/server.d.cts +4 -0
  102. package/dist/server.d.cts.map +1 -1
  103. package/dist/server.d.ts +4 -0
  104. package/dist/server.d.ts.map +1 -1
  105. package/dist/server.js +164 -22
  106. package/dist/server.js.map +1 -1
  107. package/dist/stream-collapse.cjs +300 -74
  108. package/dist/stream-collapse.cjs.map +1 -1
  109. package/dist/stream-collapse.d.cts +17 -1
  110. package/dist/stream-collapse.d.cts.map +1 -1
  111. package/dist/stream-collapse.d.ts +17 -1
  112. package/dist/stream-collapse.d.ts.map +1 -1
  113. package/dist/stream-collapse.js +300 -74
  114. package/dist/stream-collapse.js.map +1 -1
  115. package/dist/types.d.cts +104 -7
  116. package/dist/types.d.cts.map +1 -1
  117. package/dist/types.d.ts +104 -7
  118. package/dist/types.d.ts.map +1 -1
  119. package/dist/vector-types.d.cts.map +1 -1
  120. package/dist/vector-types.d.ts.map +1 -1
  121. package/dist/veo-video.cjs +794 -0
  122. package/dist/veo-video.cjs.map +1 -0
  123. package/dist/veo-video.d.cts +50 -0
  124. package/dist/veo-video.d.cts.map +1 -0
  125. package/dist/veo-video.d.ts +50 -0
  126. package/dist/veo-video.d.ts.map +1 -0
  127. package/dist/veo-video.js +789 -0
  128. package/dist/veo-video.js.map +1 -0
  129. package/dist/video-proxy-shared.cjs +145 -0
  130. package/dist/video-proxy-shared.cjs.map +1 -0
  131. package/dist/video-proxy-shared.js +140 -0
  132. package/dist/video-proxy-shared.js.map +1 -0
  133. package/dist/ws-gemini-live.cjs +96 -3
  134. package/dist/ws-gemini-live.cjs.map +1 -1
  135. package/dist/ws-gemini-live.d.cts.map +1 -1
  136. package/dist/ws-gemini-live.d.ts.map +1 -1
  137. package/dist/ws-gemini-live.js +97 -4
  138. package/dist/ws-gemini-live.js.map +1 -1
  139. package/dist/ws-realtime.cjs +281 -4
  140. package/dist/ws-realtime.cjs.map +1 -1
  141. package/dist/ws-realtime.d.cts.map +1 -1
  142. package/dist/ws-realtime.d.ts.map +1 -1
  143. package/dist/ws-realtime.js +282 -5
  144. package/dist/ws-realtime.js.map +1 -1
  145. package/dist/ws-responses.cjs +1 -1
  146. package/dist/ws-responses.cjs.map +1 -1
  147. package/dist/ws-responses.js +1 -1
  148. package/dist/ws-responses.js.map +1 -1
  149. package/fixtures/examples/llm/blocks-tool-first.json +13 -0
  150. package/package.json +1 -1
  151. package/skills/write-fixtures/SKILL.md +19 -1
package/dist/recorder.cjs CHANGED
@@ -237,6 +237,7 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
237
237
  let hardCeilingExceeded = false;
238
238
  let streamedToClient = false;
239
239
  let clientDisconnected = false;
240
+ let sawDone = false;
240
241
  let frameTimestamps = [];
241
242
  let streamStartTime = 0;
242
243
  const maxProxyBufferBytes = clampMaxBufferBytes(record.maxProxyBufferBytes);
@@ -252,6 +253,7 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
252
253
  rawBuffer = result.rawBuffer;
253
254
  streamedToClient = result.streamedToClient;
254
255
  clientDisconnected = result.clientDisconnected;
256
+ sawDone = result.sawDone;
255
257
  frameTimestamps = result.frameTimestamps;
256
258
  streamStartTime = result.streamStartTime;
257
259
  bufferTruncated = result.bufferTruncated;
@@ -353,15 +355,18 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
353
355
  name: tc.name ?? "",
354
356
  arguments: tc.arguments ?? "{}"
355
357
  }));
356
- if (collapsed.content) fixtureResponse = {
357
- content: collapsed.content,
358
- toolCalls: sanitizedToolCalls,
359
- ...reasoningSpread,
360
- ...reasoningSignatureSpread,
361
- ...redactedThinkingSpread,
362
- ...webSearchesSpread
363
- };
364
- else fixtureResponse = {
358
+ if (collapsed.content) {
359
+ const blocksSpread = collapsed.blocks?.length ? { blocks: collapsed.blocks } : {};
360
+ fixtureResponse = {
361
+ content: collapsed.content,
362
+ toolCalls: sanitizedToolCalls,
363
+ ...blocksSpread,
364
+ ...reasoningSpread,
365
+ ...reasoningSignatureSpread,
366
+ ...redactedThinkingSpread,
367
+ ...webSearchesSpread
368
+ };
369
+ } else fixtureResponse = {
365
370
  toolCalls: sanitizedToolCalls,
366
371
  ...reasoningSpread,
367
372
  ...reasoningSignatureSpread,
@@ -403,8 +408,11 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
403
408
  } else fixtureResponse = buildFixtureResponse(parsedResponse, upstreamStatus, defaults.logger);
404
409
  }
405
410
  if (clientDisconnected) {
406
- defaults.logger.warn("Client disconnected mid-stream — skipping fixture save to avoid truncated data");
407
- return "relayed";
411
+ if (!sawDone) {
412
+ defaults.logger.warn("Client disconnected mid-stream — skipping fixture save to avoid truncated data");
413
+ return "relayed";
414
+ }
415
+ defaults.logger.warn("Client closed connection before upstream end — upstream response completed, recording full fixture");
408
416
  }
409
417
  let recordedTimings;
410
418
  if (frameTimestamps.length > 1) {
@@ -551,6 +559,7 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
551
559
  let binaryFrameBuffer = Buffer.alloc(0);
552
560
  let streamedToClient = false;
553
561
  let clientDisconnected = false;
562
+ let sawDone = false;
554
563
  if (isProgressiveStream && clientRes && !clientRes.headersSent) {
555
564
  const relayHeaders = {
556
565
  "Cache-Control": "no-cache, no-transform",
@@ -566,13 +575,15 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
566
575
  clientRes.on("close", () => {
567
576
  if (!clientRes.writableFinished) {
568
577
  clientDisconnected = true;
569
- req.destroy();
570
- res.removeListener("data", onUpstreamData);
571
- chunks.length = 0;
572
- bufferedBytes = 0;
573
- frameTimestamps.length = 0;
574
- frameBuffer = "";
575
- binaryFrameBuffer = Buffer.alloc(0);
578
+ if (!sawDone) {
579
+ req.destroy();
580
+ res.removeListener("data", onUpstreamData);
581
+ chunks.length = 0;
582
+ bufferedBytes = 0;
583
+ frameTimestamps.length = 0;
584
+ frameBuffer = "";
585
+ binaryFrameBuffer = Buffer.alloc(0);
586
+ }
576
587
  }
577
588
  });
578
589
  }
@@ -624,7 +635,11 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
624
635
  tripTruncation("frame");
625
636
  break;
626
637
  }
627
- if (parts[fi].trim().length > 0) frameTimestamps.push(Date.now());
638
+ const frame = parts[fi].trim();
639
+ if (frame.length > 0) {
640
+ frameTimestamps.push(Date.now());
641
+ if (frame === "data: [DONE]") sawDone = true;
642
+ }
628
643
  }
629
644
  if (!bufferTruncated) frameBuffer = parts[parts.length - 1];
630
645
  }
@@ -676,7 +691,8 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
676
691
  bufferTruncated,
677
692
  truncationCap,
678
693
  totalBytes,
679
- hardCeilingExceeded
694
+ hardCeilingExceeded,
695
+ sawDone
680
696
  });
681
697
  });
682
698
  });