@copilotkit/aimock 1.29.0 → 1.30.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 (172) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/agui-types.d.ts.map +1 -1
  3. package/dist/bedrock-converse.cjs +63 -31
  4. package/dist/bedrock-converse.cjs.map +1 -1
  5. package/dist/bedrock-converse.d.cts.map +1 -1
  6. package/dist/bedrock-converse.d.ts.map +1 -1
  7. package/dist/bedrock-converse.js +65 -33
  8. package/dist/bedrock-converse.js.map +1 -1
  9. package/dist/bedrock.cjs +95 -33
  10. package/dist/bedrock.cjs.map +1 -1
  11. package/dist/bedrock.d.cts.map +1 -1
  12. package/dist/bedrock.d.ts.map +1 -1
  13. package/dist/bedrock.js +97 -35
  14. package/dist/bedrock.js.map +1 -1
  15. package/dist/cohere.cjs +49 -15
  16. package/dist/cohere.cjs.map +1 -1
  17. package/dist/cohere.d.cts.map +1 -1
  18. package/dist/cohere.d.ts.map +1 -1
  19. package/dist/cohere.js +51 -17
  20. package/dist/cohere.js.map +1 -1
  21. package/dist/config-loader.d.ts.map +1 -1
  22. package/dist/elevenlabs-audio.cjs +8 -4
  23. package/dist/elevenlabs-audio.cjs.map +1 -1
  24. package/dist/elevenlabs-audio.d.cts.map +1 -1
  25. package/dist/elevenlabs-audio.d.ts.map +1 -1
  26. package/dist/elevenlabs-audio.js +10 -6
  27. package/dist/elevenlabs-audio.js.map +1 -1
  28. package/dist/embeddings.cjs +4 -3
  29. package/dist/embeddings.cjs.map +1 -1
  30. package/dist/embeddings.d.cts.map +1 -1
  31. package/dist/embeddings.d.ts.map +1 -1
  32. package/dist/embeddings.js +6 -5
  33. package/dist/embeddings.js.map +1 -1
  34. package/dist/fal-audio.cjs +8 -4
  35. package/dist/fal-audio.cjs.map +1 -1
  36. package/dist/fal-audio.d.cts.map +1 -1
  37. package/dist/fal-audio.d.ts.map +1 -1
  38. package/dist/fal-audio.js +10 -6
  39. package/dist/fal-audio.js.map +1 -1
  40. package/dist/fal.cjs +4 -2
  41. package/dist/fal.cjs.map +1 -1
  42. package/dist/fal.d.cts.map +1 -1
  43. package/dist/fal.d.ts.map +1 -1
  44. package/dist/fal.js +6 -4
  45. package/dist/fal.js.map +1 -1
  46. package/dist/gemini-embeddings.cjs +4 -3
  47. package/dist/gemini-embeddings.cjs.map +1 -1
  48. package/dist/gemini-embeddings.js +6 -5
  49. package/dist/gemini-embeddings.js.map +1 -1
  50. package/dist/gemini-interactions.cjs +3 -3
  51. package/dist/gemini-interactions.cjs.map +1 -1
  52. package/dist/gemini-interactions.d.cts.map +1 -1
  53. package/dist/gemini-interactions.d.ts.map +1 -1
  54. package/dist/gemini-interactions.js +5 -5
  55. package/dist/gemini-interactions.js.map +1 -1
  56. package/dist/gemini.cjs +55 -24
  57. package/dist/gemini.cjs.map +1 -1
  58. package/dist/gemini.d.cts.map +1 -1
  59. package/dist/gemini.d.ts.map +1 -1
  60. package/dist/gemini.js +57 -26
  61. package/dist/gemini.js.map +1 -1
  62. package/dist/helpers.cjs +120 -2
  63. package/dist/helpers.cjs.map +1 -1
  64. package/dist/helpers.d.cts +43 -3
  65. package/dist/helpers.d.cts.map +1 -1
  66. package/dist/helpers.d.ts +43 -3
  67. package/dist/helpers.d.ts.map +1 -1
  68. package/dist/helpers.js +117 -3
  69. package/dist/helpers.js.map +1 -1
  70. package/dist/images.cjs +12 -6
  71. package/dist/images.cjs.map +1 -1
  72. package/dist/images.d.cts.map +1 -1
  73. package/dist/images.d.ts.map +1 -1
  74. package/dist/images.js +14 -8
  75. package/dist/images.js.map +1 -1
  76. package/dist/index.cjs +3 -0
  77. package/dist/index.d.cts +3 -3
  78. package/dist/index.d.ts +3 -3
  79. package/dist/index.js +3 -3
  80. package/dist/messages.cjs +325 -85
  81. package/dist/messages.cjs.map +1 -1
  82. package/dist/messages.d.cts.map +1 -1
  83. package/dist/messages.d.ts.map +1 -1
  84. package/dist/messages.js +327 -87
  85. package/dist/messages.js.map +1 -1
  86. package/dist/model-utils.cjs +68 -0
  87. package/dist/model-utils.cjs.map +1 -1
  88. package/dist/model-utils.js +68 -1
  89. package/dist/model-utils.js.map +1 -1
  90. package/dist/ollama.cjs +58 -21
  91. package/dist/ollama.cjs.map +1 -1
  92. package/dist/ollama.d.cts.map +1 -1
  93. package/dist/ollama.d.ts.map +1 -1
  94. package/dist/ollama.js +60 -23
  95. package/dist/ollama.js.map +1 -1
  96. package/dist/recorder.cjs +49 -8
  97. package/dist/recorder.cjs.map +1 -1
  98. package/dist/recorder.js +50 -9
  99. package/dist/recorder.js.map +1 -1
  100. package/dist/responses.cjs +26 -12
  101. package/dist/responses.cjs.map +1 -1
  102. package/dist/responses.d.cts +1 -1
  103. package/dist/responses.d.cts.map +1 -1
  104. package/dist/responses.d.ts +1 -1
  105. package/dist/responses.d.ts.map +1 -1
  106. package/dist/responses.js +28 -14
  107. package/dist/responses.js.map +1 -1
  108. package/dist/router.cjs +37 -8
  109. package/dist/router.cjs.map +1 -1
  110. package/dist/router.d.cts +30 -1
  111. package/dist/router.d.cts.map +1 -1
  112. package/dist/router.d.ts +30 -1
  113. package/dist/router.d.ts.map +1 -1
  114. package/dist/router.js +37 -9
  115. package/dist/router.js.map +1 -1
  116. package/dist/server.cjs +15 -9
  117. package/dist/server.cjs.map +1 -1
  118. package/dist/server.d.cts.map +1 -1
  119. package/dist/server.d.ts.map +1 -1
  120. package/dist/server.js +17 -11
  121. package/dist/server.js.map +1 -1
  122. package/dist/speech.cjs +4 -2
  123. package/dist/speech.cjs.map +1 -1
  124. package/dist/speech.d.cts.map +1 -1
  125. package/dist/speech.d.ts.map +1 -1
  126. package/dist/speech.js +6 -4
  127. package/dist/speech.js.map +1 -1
  128. package/dist/stream-collapse.cjs +44 -1
  129. package/dist/stream-collapse.cjs.map +1 -1
  130. package/dist/stream-collapse.d.cts +28 -0
  131. package/dist/stream-collapse.d.cts.map +1 -1
  132. package/dist/stream-collapse.d.ts +28 -0
  133. package/dist/stream-collapse.d.ts.map +1 -1
  134. package/dist/stream-collapse.js +44 -2
  135. package/dist/stream-collapse.js.map +1 -1
  136. package/dist/transcription.cjs +4 -2
  137. package/dist/transcription.cjs.map +1 -1
  138. package/dist/transcription.d.cts.map +1 -1
  139. package/dist/transcription.d.ts.map +1 -1
  140. package/dist/transcription.js +6 -4
  141. package/dist/transcription.js.map +1 -1
  142. package/dist/types.d.cts +42 -0
  143. package/dist/types.d.cts.map +1 -1
  144. package/dist/types.d.ts +42 -0
  145. package/dist/types.d.ts.map +1 -1
  146. package/dist/vector-types.d.cts.map +1 -1
  147. package/dist/vector-types.d.ts.map +1 -1
  148. package/dist/video.cjs +4 -2
  149. package/dist/video.cjs.map +1 -1
  150. package/dist/video.d.cts.map +1 -1
  151. package/dist/video.d.ts.map +1 -1
  152. package/dist/video.js +6 -4
  153. package/dist/video.js.map +1 -1
  154. package/dist/ws-gemini-live.cjs +4 -3
  155. package/dist/ws-gemini-live.cjs.map +1 -1
  156. package/dist/ws-gemini-live.d.cts.map +1 -1
  157. package/dist/ws-gemini-live.d.ts.map +1 -1
  158. package/dist/ws-gemini-live.js +6 -5
  159. package/dist/ws-gemini-live.js.map +1 -1
  160. package/dist/ws-realtime.cjs +4 -3
  161. package/dist/ws-realtime.cjs.map +1 -1
  162. package/dist/ws-realtime.d.cts.map +1 -1
  163. package/dist/ws-realtime.d.ts.map +1 -1
  164. package/dist/ws-realtime.js +6 -5
  165. package/dist/ws-realtime.js.map +1 -1
  166. package/dist/ws-responses.cjs +8 -6
  167. package/dist/ws-responses.cjs.map +1 -1
  168. package/dist/ws-responses.d.cts.map +1 -1
  169. package/dist/ws-responses.d.ts.map +1 -1
  170. package/dist/ws-responses.js +10 -8
  171. package/dist/ws-responses.js.map +1 -1
  172. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.cts","names":[],"sources":["../src/server.ts"],"sourcesContent":[],"mappings":";;;;;;;;;UAyEiB,cAAA;UACP,MAAA,CAAK;EADE,OAAA,EAEN,OAFM;EAAc,GAAA,EAAA,MAAA;UACrB,EAGE,eAHG;aACJ,EAGI,aAHJ;;AAGI,UA85BE,eAAA,CA95BF;EAAa,MAAA,EA+5BlB,aA/5BkB,EAAA;EA85BX,MAAA,EAEP,aAFsB,EAAA;EAAA,UAAA,EAGlB,iBAHkB,EAAA;;AAEtB,iBAOY,YAAA,CAPZ,QAAA,EAQE,OARF,EAAA,EAAA,OAAA,CAAA,EASE,iBATF,EAAA,MAOV,CAPU,EAUC,KAVD,CAAA;MACI,EAAA,MAAA;EAAiB,OAAA,EASW,SATX;AAM/B,CAAA,CAAA,EAAsB,eAAY,CAAA,EAId,eAJc,CAAA,EAK/B,OAL+B,CAKvB,cALuB,CAAA"}
1
+ {"version":3,"file":"server.d.cts","names":[],"sources":["../src/server.ts"],"sourcesContent":[],"mappings":";;;;;;;;;UA4EiB,cAAA;UACP,MAAA,CAAK;EADE,OAAA,EAEN,OAFM;EAAc,GAAA,EAAA,MAAA;UACrB,EAGE,eAHG;aACJ,EAGI,aAHJ;;AAGI,UA87BE,eAAA,CA97BF;EAAa,MAAA,EA+7BlB,aA/7BkB,EAAA;EA87BX,MAAA,EAEP,aAFsB,EAAA;EAAA,UAAA,EAGlB,iBAHkB,EAAA;;AAEtB,iBAOY,YAAA,CAPZ,QAAA,EAQE,OARF,EAAA,EAAA,OAAA,CAAA,EASE,iBATF,EAAA,MAOV,CAPU,EAUC,KAVD,CAAA;MACI,EAAA,MAAA;EAAiB,OAAA,EASW,SATX;AAM/B,CAAA,CAAA,EAAsB,eAAY,CAAA,EAId,eAJc,CAAA,EAK/B,OAL+B,CAKvB,cALuB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","names":[],"sources":["../src/server.ts"],"sourcesContent":[],"mappings":";;;;;;;;;UAyEiB,cAAA;UACP,MAAA,CAAK;EADE,OAAA,EAEN,OAFM;EAAc,GAAA,EAAA,MAAA;UACrB,EAGE,eAHG;aACJ,EAGI,aAHJ;;AAGI,UA85BE,eAAA,CA95BF;EAAa,MAAA,EA+5BlB,aA/5BkB,EAAA;EA85BX,MAAA,EAEP,aAFsB,EAAA;EAAA,UAAA,EAGlB,iBAHkB,EAAA;;AAEtB,iBAOY,YAAA,CAPZ,QAAA,EAQE,OARF,EAAA,EAAA,OAAA,CAAA,EASE,iBATF,EAAA,MAOV,CAPU,EAUC,KAVD,CAAA;MACI,EAAA,MAAA;EAAiB,OAAA,EASW,SATX;AAM/B,CAAA,CAAA,EAAsB,eAAY,CAAA,EAId,eAJc,CAAA,EAK/B,OAL+B,CAKvB,cALuB,CAAA"}
1
+ {"version":3,"file":"server.d.ts","names":[],"sources":["../src/server.ts"],"sourcesContent":[],"mappings":";;;;;;;;;UA4EiB,cAAA;UACP,MAAA,CAAK;EADE,OAAA,EAEN,OAFM;EAAc,GAAA,EAAA,MAAA;UACrB,EAGE,eAHG;aACJ,EAGI,aAHJ;;AAGI,UA87BE,eAAA,CA97BF;EAAa,MAAA,EA+7BlB,aA/7BkB,EAAA;EA87BX,MAAA,EAEP,aAFsB,EAAA;EAAA,UAAA,EAGlB,iBAHkB,EAAA;;AAEtB,iBAOY,YAAA,CAPZ,QAAA,EAQE,OARF,EAAA,EAAA,OAAA,CAAA,EASE,iBATF,EAAA,MAOV,CAPU,EAUC,KAVD,CAAA;MACI,EAAA,MAAA;EAAiB,OAAA,EASW,SATX;AAM/B,CAAA,CAAA,EAAsB,eAAY,CAAA,EAId,eAJc,CAAA,EAK/B,OAL+B,CAKvB,cALuB,CAAA"}
package/dist/server.js CHANGED
@@ -1,7 +1,7 @@
1
- import { buildContentWithToolCallsChunks, buildContentWithToolCallsCompletion, buildTextChunks, buildTextCompletion, buildToolCallChunks, buildToolCallCompletion, buildUsageChunk, estimatePromptTokens, estimateTokens, extractOverrides, flattenHeaders, getContext, getTestId, isAudioResponse, isContentWithToolCallsResponse, isErrorResponse, isTextResponse, isToolCallResponse, readBody, resolveResponse, resolveStrictMode, serializeErrorResponse, strictOverrideField } from "./helpers.js";
1
+ import { buildContentWithToolCallsChunks, buildContentWithToolCallsCompletion, buildTextChunks, buildTextCompletion, buildToolCallChunks, buildToolCallCompletion, buildUsageChunk, estimatePromptTokens, estimateTokens, extractOverrides, flattenHeaders, getContext, getTestId, isAudioResponse, isContentWithToolCallsResponse, isErrorResponse, isTextResponse, isToolCallResponse, readBody, resolveReasoningForModel, resolveResponse, resolveStrictMode, serializeErrorResponse, strictNoMatchLogLine, strictNoMatchMessage, strictOverrideField } from "./helpers.js";
2
2
  import { Logger } from "./logger.js";
3
3
  import { Journal } from "./journal.js";
4
- import { matchFixture } from "./router.js";
4
+ import { matchFixtureDiagnostic } from "./router.js";
5
5
  import { entryToFixture, validateFixtures } from "./fixture-loader.js";
6
6
  import { writeErrorResponse, writeSSEStream } from "./sse-writer.js";
7
7
  import { createInterruptionSignal } from "./interruption.js";
@@ -374,7 +374,7 @@ async function handleCompletions(req, res, fixtures, journal, defaults, modelFal
374
374
  body._endpointType = "chat";
375
375
  body._context = getContext(req);
376
376
  const testId = getTestId(req);
377
- const fixture = matchFixture(fixtures, body, journal.getFixtureMatchCountsForTest(testId), defaults.requestTransform);
377
+ const { fixture, skippedBySequenceOrTurn } = matchFixtureDiagnostic(fixtures, body, journal.getFixtureMatchCountsForTest(testId), defaults.requestTransform);
378
378
  if (fixture) {
379
379
  journal.incrementFixtureMatchCount(fixture, fixtures, testId);
380
380
  defaults.logger.debug(`Fixture matched: ${JSON.stringify(fixture.match).slice(0, 120)}`);
@@ -401,8 +401,8 @@ async function handleCompletions(req, res, fixtures, journal, defaults, modelFal
401
401
  if (!fixture) {
402
402
  if (resolveStrictMode(defaults.strict, req.headers)) {
403
403
  const strictStatus = 503;
404
- const strictMessage = "Strict mode: no fixture matched";
405
- defaults.logger.error(`STRICT: No fixture matched for ${req.method ?? "POST"} ${req.url ?? COMPLETIONS_PATH}`);
404
+ const strictMessage = strictNoMatchMessage(skippedBySequenceOrTurn);
405
+ defaults.logger.error(strictNoMatchLogLine(req.method ?? "POST", req.url ?? COMPLETIONS_PATH, skippedBySequenceOrTurn));
406
406
  journal.add({
407
407
  method: req.method ?? "POST",
408
408
  path: req.url ?? COMPLETIONS_PATH,
@@ -512,6 +512,8 @@ async function handleCompletions(req, res, fixtures, journal, defaults, modelFal
512
512
  if (isContentWithToolCallsResponse(response)) {
513
513
  if (response.webSearches?.length) defaults.logger.warn("webSearches in fixture response are not supported for Chat Completions API — ignoring");
514
514
  const overrides = extractOverrides(response);
515
+ const effectiveStrict = resolveStrictMode(defaults.strict, req.headers);
516
+ const effReasoning = resolveReasoningForModel(response.reasoning, body.model, effectiveStrict, defaults.logger);
515
517
  const journalEntry = journal.add({
516
518
  method: req.method ?? "POST",
517
519
  path: req.url ?? COMPLETIONS_PATH,
@@ -523,11 +525,11 @@ async function handleCompletions(req, res, fixtures, journal, defaults, modelFal
523
525
  }
524
526
  });
525
527
  if (body.stream !== true) {
526
- const completion = buildContentWithToolCallsCompletion(response.content, response.toolCalls, body.model, response.reasoning, overrides, body.messages);
528
+ const completion = buildContentWithToolCallsCompletion(response.content, response.toolCalls, body.model, effReasoning, overrides, body.messages);
527
529
  res.writeHead(200, { "Content-Type": "application/json" });
528
530
  res.end(JSON.stringify(completion));
529
531
  } else {
530
- const chunks = buildContentWithToolCallsChunks(response.content, response.toolCalls, body.model, chunkSize, response.reasoning, overrides);
532
+ const chunks = buildContentWithToolCallsChunks(response.content, response.toolCalls, body.model, chunkSize, effReasoning, overrides);
531
533
  const completionText = response.content + response.toolCalls.map((tc) => tc.name + tc.arguments).join("");
532
534
  const usageChunk = includeUsage ? buildUsageChunk(chunks[0]?.id ?? "chatcmpl-unknown", overrides?.model ?? body.model, chunks[0]?.created ?? Math.floor(Date.now() / 1e3), overrides?.usage ? {
533
535
  prompt_tokens: overrides.usage.prompt_tokens ?? 0,
@@ -559,6 +561,8 @@ async function handleCompletions(req, res, fixtures, journal, defaults, modelFal
559
561
  if (isTextResponse(response)) {
560
562
  if (response.webSearches?.length) defaults.logger.warn("webSearches in fixture response are not supported for Chat Completions API — ignoring");
561
563
  const overrides = extractOverrides(response);
564
+ const effectiveStrict = resolveStrictMode(defaults.strict, req.headers);
565
+ const effReasoning = resolveReasoningForModel(response.reasoning, body.model, effectiveStrict, defaults.logger);
562
566
  const journalEntry = journal.add({
563
567
  method: req.method ?? "POST",
564
568
  path: req.url ?? COMPLETIONS_PATH,
@@ -570,11 +574,11 @@ async function handleCompletions(req, res, fixtures, journal, defaults, modelFal
570
574
  }
571
575
  });
572
576
  if (body.stream !== true) {
573
- const completion = buildTextCompletion(response.content, body.model, response.reasoning, overrides, body.messages);
577
+ const completion = buildTextCompletion(response.content, body.model, effReasoning, overrides, body.messages);
574
578
  res.writeHead(200, { "Content-Type": "application/json" });
575
579
  res.end(JSON.stringify(completion));
576
580
  } else {
577
- const chunks = buildTextChunks(response.content, body.model, chunkSize, response.reasoning, overrides);
581
+ const chunks = buildTextChunks(response.content, body.model, chunkSize, effReasoning, overrides);
578
582
  const usageChunk = includeUsage ? buildUsageChunk(chunks[0]?.id ?? "chatcmpl-unknown", overrides?.model ?? body.model, chunks[0]?.created ?? Math.floor(Date.now() / 1e3), overrides?.usage ? {
579
583
  prompt_tokens: overrides.usage.prompt_tokens ?? 0,
580
584
  completion_tokens: overrides.usage.completion_tokens ?? 0,
@@ -605,6 +609,8 @@ async function handleCompletions(req, res, fixtures, journal, defaults, modelFal
605
609
  if (isToolCallResponse(response)) {
606
610
  if (response.webSearches?.length) defaults.logger.warn("webSearches in fixture response are not supported for Chat Completions API — ignoring");
607
611
  const overrides = extractOverrides(response);
612
+ const effectiveStrict = resolveStrictMode(defaults.strict, req.headers);
613
+ const effReasoning = resolveReasoningForModel(response.reasoning, body.model, effectiveStrict, defaults.logger);
608
614
  const journalEntry = journal.add({
609
615
  method: req.method ?? "POST",
610
616
  path: req.url ?? COMPLETIONS_PATH,
@@ -616,11 +622,11 @@ async function handleCompletions(req, res, fixtures, journal, defaults, modelFal
616
622
  }
617
623
  });
618
624
  if (body.stream !== true) {
619
- const completion = buildToolCallCompletion(response.toolCalls, body.model, overrides, body.messages);
625
+ const completion = buildToolCallCompletion(response.toolCalls, body.model, effReasoning, overrides, body.messages);
620
626
  res.writeHead(200, { "Content-Type": "application/json" });
621
627
  res.end(JSON.stringify(completion));
622
628
  } else {
623
- const chunks = buildToolCallChunks(response.toolCalls, body.model, chunkSize, overrides);
629
+ const chunks = buildToolCallChunks(response.toolCalls, body.model, chunkSize, effReasoning, overrides);
624
630
  const completionText = response.toolCalls.map((tc) => tc.name + tc.arguments).join("");
625
631
  const usageChunk = includeUsage ? buildUsageChunk(chunks[0]?.id ?? "chatcmpl-unknown", overrides?.model ?? body.model, chunks[0]?.created ?? Math.floor(Date.now() / 1e3), overrides?.usage ? {
626
632
  prompt_tokens: overrides.usage.prompt_tokens ?? 0,