@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.js CHANGED
@@ -231,6 +231,7 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
231
231
  let hardCeilingExceeded = false;
232
232
  let streamedToClient = false;
233
233
  let clientDisconnected = false;
234
+ let sawDone = false;
234
235
  let frameTimestamps = [];
235
236
  let streamStartTime = 0;
236
237
  const maxProxyBufferBytes = clampMaxBufferBytes(record.maxProxyBufferBytes);
@@ -246,6 +247,7 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
246
247
  rawBuffer = result.rawBuffer;
247
248
  streamedToClient = result.streamedToClient;
248
249
  clientDisconnected = result.clientDisconnected;
250
+ sawDone = result.sawDone;
249
251
  frameTimestamps = result.frameTimestamps;
250
252
  streamStartTime = result.streamStartTime;
251
253
  bufferTruncated = result.bufferTruncated;
@@ -347,15 +349,18 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
347
349
  name: tc.name ?? "",
348
350
  arguments: tc.arguments ?? "{}"
349
351
  }));
350
- if (collapsed.content) fixtureResponse = {
351
- content: collapsed.content,
352
- toolCalls: sanitizedToolCalls,
353
- ...reasoningSpread,
354
- ...reasoningSignatureSpread,
355
- ...redactedThinkingSpread,
356
- ...webSearchesSpread
357
- };
358
- else fixtureResponse = {
352
+ if (collapsed.content) {
353
+ const blocksSpread = collapsed.blocks?.length ? { blocks: collapsed.blocks } : {};
354
+ fixtureResponse = {
355
+ content: collapsed.content,
356
+ toolCalls: sanitizedToolCalls,
357
+ ...blocksSpread,
358
+ ...reasoningSpread,
359
+ ...reasoningSignatureSpread,
360
+ ...redactedThinkingSpread,
361
+ ...webSearchesSpread
362
+ };
363
+ } else fixtureResponse = {
359
364
  toolCalls: sanitizedToolCalls,
360
365
  ...reasoningSpread,
361
366
  ...reasoningSignatureSpread,
@@ -397,8 +402,11 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
397
402
  } else fixtureResponse = buildFixtureResponse(parsedResponse, upstreamStatus, defaults.logger);
398
403
  }
399
404
  if (clientDisconnected) {
400
- defaults.logger.warn("Client disconnected mid-stream — skipping fixture save to avoid truncated data");
401
- return "relayed";
405
+ if (!sawDone) {
406
+ defaults.logger.warn("Client disconnected mid-stream — skipping fixture save to avoid truncated data");
407
+ return "relayed";
408
+ }
409
+ defaults.logger.warn("Client closed connection before upstream end — upstream response completed, recording full fixture");
402
410
  }
403
411
  let recordedTimings;
404
412
  if (frameTimestamps.length > 1) {
@@ -545,6 +553,7 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
545
553
  let binaryFrameBuffer = Buffer.alloc(0);
546
554
  let streamedToClient = false;
547
555
  let clientDisconnected = false;
556
+ let sawDone = false;
548
557
  if (isProgressiveStream && clientRes && !clientRes.headersSent) {
549
558
  const relayHeaders = {
550
559
  "Cache-Control": "no-cache, no-transform",
@@ -560,13 +569,15 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
560
569
  clientRes.on("close", () => {
561
570
  if (!clientRes.writableFinished) {
562
571
  clientDisconnected = true;
563
- req.destroy();
564
- res.removeListener("data", onUpstreamData);
565
- chunks.length = 0;
566
- bufferedBytes = 0;
567
- frameTimestamps.length = 0;
568
- frameBuffer = "";
569
- binaryFrameBuffer = Buffer.alloc(0);
572
+ if (!sawDone) {
573
+ req.destroy();
574
+ res.removeListener("data", onUpstreamData);
575
+ chunks.length = 0;
576
+ bufferedBytes = 0;
577
+ frameTimestamps.length = 0;
578
+ frameBuffer = "";
579
+ binaryFrameBuffer = Buffer.alloc(0);
580
+ }
570
581
  }
571
582
  });
572
583
  }
@@ -618,7 +629,11 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
618
629
  tripTruncation("frame");
619
630
  break;
620
631
  }
621
- if (parts[fi].trim().length > 0) frameTimestamps.push(Date.now());
632
+ const frame = parts[fi].trim();
633
+ if (frame.length > 0) {
634
+ frameTimestamps.push(Date.now());
635
+ if (frame === "data: [DONE]") sawDone = true;
636
+ }
622
637
  }
623
638
  if (!bufferTruncated) frameBuffer = parts[parts.length - 1];
624
639
  }
@@ -670,7 +685,8 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
670
685
  bufferTruncated,
671
686
  truncationCap,
672
687
  totalBytes,
673
- hardCeilingExceeded
688
+ hardCeilingExceeded,
689
+ sawDone
674
690
  });
675
691
  });
676
692
  });