@copilotkit/aimock 1.45.1 → 1.47.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 (492) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +25 -1
  4. package/README.md +11 -2
  5. package/dist/agui-mock.cjs +25 -25
  6. package/dist/agui-mock.cjs.map +1 -1
  7. package/dist/agui-mock.d.cts.map +1 -1
  8. package/dist/agui-mock.d.ts.map +1 -1
  9. package/dist/agui-mock.js +25 -25
  10. package/dist/agui-mock.js.map +1 -1
  11. package/dist/agui-types.d.cts.map +1 -1
  12. package/dist/aimock-cli.cjs +15 -1
  13. package/dist/aimock-cli.cjs.map +1 -1
  14. package/dist/aimock-cli.d.cts.map +1 -1
  15. package/dist/aimock-cli.d.ts.map +1 -1
  16. package/dist/aimock-cli.js +16 -2
  17. package/dist/aimock-cli.js.map +1 -1
  18. package/dist/api-key-auth.cjs +10 -9
  19. package/dist/api-key-auth.cjs.map +1 -1
  20. package/dist/api-key-auth.d.cts.map +1 -1
  21. package/dist/api-key-auth.d.ts.map +1 -1
  22. package/dist/api-key-auth.js +11 -10
  23. package/dist/api-key-auth.js.map +1 -1
  24. package/dist/aws-event-stream.cjs +20 -23
  25. package/dist/aws-event-stream.cjs.map +1 -1
  26. package/dist/aws-event-stream.d.cts +0 -1
  27. package/dist/aws-event-stream.d.ts +0 -1
  28. package/dist/aws-event-stream.js +20 -24
  29. package/dist/aws-event-stream.js.map +1 -1
  30. package/dist/batches.cjs +2 -4
  31. package/dist/batches.cjs.map +1 -1
  32. package/dist/batches.d.cts.map +1 -1
  33. package/dist/batches.d.ts.map +1 -1
  34. package/dist/batches.js +2 -4
  35. package/dist/batches.js.map +1 -1
  36. package/dist/bedrock-converse.cjs +139 -161
  37. package/dist/bedrock-converse.cjs.map +1 -1
  38. package/dist/bedrock-converse.d.cts.map +1 -1
  39. package/dist/bedrock-converse.d.ts.map +1 -1
  40. package/dist/bedrock-converse.js +137 -159
  41. package/dist/bedrock-converse.js.map +1 -1
  42. package/dist/bedrock.cjs +175 -216
  43. package/dist/bedrock.cjs.map +1 -1
  44. package/dist/bedrock.d.cts.map +1 -1
  45. package/dist/bedrock.d.ts.map +1 -1
  46. package/dist/bedrock.js +172 -213
  47. package/dist/bedrock.js.map +1 -1
  48. package/dist/byteplus-video.cjs +11 -10
  49. package/dist/byteplus-video.cjs.map +1 -1
  50. package/dist/byteplus-video.d.cts.map +1 -1
  51. package/dist/byteplus-video.d.ts.map +1 -1
  52. package/dist/byteplus-video.js +5 -4
  53. package/dist/byteplus-video.js.map +1 -1
  54. package/dist/chaos.cjs +5 -4
  55. package/dist/chaos.cjs.map +1 -1
  56. package/dist/chaos.d.cts.map +1 -1
  57. package/dist/chaos.d.ts.map +1 -1
  58. package/dist/chaos.js +5 -4
  59. package/dist/chaos.js.map +1 -1
  60. package/dist/cli.cjs +15 -0
  61. package/dist/cli.cjs.map +1 -1
  62. package/dist/cli.js +15 -0
  63. package/dist/cli.js.map +1 -1
  64. package/dist/cohere.cjs +107 -180
  65. package/dist/cohere.cjs.map +1 -1
  66. package/dist/cohere.d.cts.map +1 -1
  67. package/dist/cohere.d.ts.map +1 -1
  68. package/dist/cohere.js +106 -179
  69. package/dist/cohere.js.map +1 -1
  70. package/dist/config-loader.cjs +29 -1
  71. package/dist/config-loader.cjs.map +1 -1
  72. package/dist/config-loader.d.cts +7 -1
  73. package/dist/config-loader.d.cts.map +1 -1
  74. package/dist/config-loader.d.ts +7 -1
  75. package/dist/config-loader.d.ts.map +1 -1
  76. package/dist/config-loader.js +29 -2
  77. package/dist/config-loader.js.map +1 -1
  78. package/dist/count-tokens.cjs +146 -0
  79. package/dist/count-tokens.cjs.map +1 -0
  80. package/dist/count-tokens.js +146 -0
  81. package/dist/count-tokens.js.map +1 -0
  82. package/dist/elevenlabs-audio.cjs +36 -34
  83. package/dist/elevenlabs-audio.cjs.map +1 -1
  84. package/dist/elevenlabs-audio.d.cts.map +1 -1
  85. package/dist/elevenlabs-audio.d.ts.map +1 -1
  86. package/dist/elevenlabs-audio.js +33 -31
  87. package/dist/elevenlabs-audio.js.map +1 -1
  88. package/dist/elevenlabs-voice.cjs +38 -37
  89. package/dist/elevenlabs-voice.cjs.map +1 -1
  90. package/dist/elevenlabs-voice.d.cts.map +1 -1
  91. package/dist/elevenlabs-voice.d.ts.map +1 -1
  92. package/dist/elevenlabs-voice.js +33 -32
  93. package/dist/elevenlabs-voice.js.map +1 -1
  94. package/dist/embedding-request.cjs +16 -0
  95. package/dist/embedding-request.cjs.map +1 -0
  96. package/dist/embedding-request.js +14 -0
  97. package/dist/embedding-request.js.map +1 -0
  98. package/dist/embeddings.cjs +30 -20
  99. package/dist/embeddings.cjs.map +1 -1
  100. package/dist/embeddings.d.cts.map +1 -1
  101. package/dist/embeddings.d.ts.map +1 -1
  102. package/dist/embeddings.js +30 -20
  103. package/dist/embeddings.js.map +1 -1
  104. package/dist/fal-audio.cjs +45 -43
  105. package/dist/fal-audio.cjs.map +1 -1
  106. package/dist/fal-audio.d.cts.map +1 -1
  107. package/dist/fal-audio.d.ts.map +1 -1
  108. package/dist/fal-audio.js +42 -40
  109. package/dist/fal-audio.js.map +1 -1
  110. package/dist/fal.cjs +17 -15
  111. package/dist/fal.cjs.map +1 -1
  112. package/dist/fal.js +16 -14
  113. package/dist/fal.js.map +1 -1
  114. package/dist/files.cjs +2 -4
  115. package/dist/files.cjs.map +1 -1
  116. package/dist/files.d.cts.map +1 -1
  117. package/dist/files.d.ts.map +1 -1
  118. package/dist/files.js +2 -4
  119. package/dist/files.js.map +1 -1
  120. package/dist/fine-tuning.cjs +2 -4
  121. package/dist/fine-tuning.cjs.map +1 -1
  122. package/dist/fine-tuning.d.cts.map +1 -1
  123. package/dist/fine-tuning.d.ts.map +1 -1
  124. package/dist/fine-tuning.js +2 -4
  125. package/dist/fine-tuning.js.map +1 -1
  126. package/dist/fixture-loader.cjs +140 -44
  127. package/dist/fixture-loader.cjs.map +1 -1
  128. package/dist/fixture-loader.d.cts.map +1 -1
  129. package/dist/fixture-loader.d.ts.map +1 -1
  130. package/dist/fixture-loader.js +141 -46
  131. package/dist/fixture-loader.js.map +1 -1
  132. package/dist/gemini-embeddings.cjs +26 -24
  133. package/dist/gemini-embeddings.cjs.map +1 -1
  134. package/dist/gemini-embeddings.js +26 -24
  135. package/dist/gemini-embeddings.js.map +1 -1
  136. package/dist/gemini-interactions.cjs +113 -156
  137. package/dist/gemini-interactions.cjs.map +1 -1
  138. package/dist/gemini-interactions.d.cts +0 -1
  139. package/dist/gemini-interactions.d.cts.map +1 -1
  140. package/dist/gemini-interactions.d.ts +0 -1
  141. package/dist/gemini-interactions.d.ts.map +1 -1
  142. package/dist/gemini-interactions.js +113 -156
  143. package/dist/gemini-interactions.js.map +1 -1
  144. package/dist/gemini.cjs +295 -218
  145. package/dist/gemini.cjs.map +1 -1
  146. package/dist/gemini.d.cts.map +1 -1
  147. package/dist/gemini.d.ts.map +1 -1
  148. package/dist/gemini.js +295 -219
  149. package/dist/gemini.js.map +1 -1
  150. package/dist/grok-video.cjs +14 -12
  151. package/dist/grok-video.cjs.map +1 -1
  152. package/dist/grok-video.d.cts.map +1 -1
  153. package/dist/grok-video.d.ts.map +1 -1
  154. package/dist/grok-video.js +8 -6
  155. package/dist/grok-video.js.map +1 -1
  156. package/dist/helpers.cjs +411 -75
  157. package/dist/helpers.cjs.map +1 -1
  158. package/dist/helpers.d.cts +51 -1
  159. package/dist/helpers.d.cts.map +1 -1
  160. package/dist/helpers.d.ts +51 -1
  161. package/dist/helpers.d.ts.map +1 -1
  162. package/dist/helpers.js +402 -74
  163. package/dist/helpers.js.map +1 -1
  164. package/dist/images.cjs +30 -28
  165. package/dist/images.cjs.map +1 -1
  166. package/dist/images.d.cts.map +1 -1
  167. package/dist/images.d.ts.map +1 -1
  168. package/dist/images.js +27 -25
  169. package/dist/images.js.map +1 -1
  170. package/dist/index.cjs +4 -2
  171. package/dist/index.d.cts +4 -4
  172. package/dist/index.d.ts +4 -4
  173. package/dist/index.js +4 -4
  174. package/dist/journal.cjs +3 -1
  175. package/dist/journal.cjs.map +1 -1
  176. package/dist/journal.d.cts.map +1 -1
  177. package/dist/journal.d.ts.map +1 -1
  178. package/dist/journal.js +2 -1
  179. package/dist/journal.js.map +1 -1
  180. package/dist/llmock.cjs +3 -0
  181. package/dist/llmock.cjs.map +1 -1
  182. package/dist/llmock.d.cts.map +1 -1
  183. package/dist/llmock.d.ts.map +1 -1
  184. package/dist/llmock.js +3 -0
  185. package/dist/llmock.js.map +1 -1
  186. package/dist/mcp-fakes.d.cts.map +1 -1
  187. package/dist/mcp-handler.cjs +7 -3
  188. package/dist/mcp-handler.cjs.map +1 -1
  189. package/dist/mcp-handler.js +7 -3
  190. package/dist/mcp-handler.js.map +1 -1
  191. package/dist/mcp-recorder.cjs +2 -1
  192. package/dist/mcp-recorder.cjs.map +1 -1
  193. package/dist/mcp-recorder.js +3 -2
  194. package/dist/mcp-recorder.js.map +1 -1
  195. package/dist/messages.cjs +235 -202
  196. package/dist/messages.cjs.map +1 -1
  197. package/dist/messages.d.cts.map +1 -1
  198. package/dist/messages.d.ts.map +1 -1
  199. package/dist/messages.js +234 -202
  200. package/dist/messages.js.map +1 -1
  201. package/dist/metrics.cjs +5 -2
  202. package/dist/metrics.cjs.map +1 -1
  203. package/dist/metrics.d.cts.map +1 -1
  204. package/dist/metrics.d.ts.map +1 -1
  205. package/dist/metrics.js +6 -3
  206. package/dist/metrics.js.map +1 -1
  207. package/dist/misbehavior.cjs +62 -3
  208. package/dist/misbehavior.cjs.map +1 -1
  209. package/dist/misbehavior.d.cts.map +1 -1
  210. package/dist/misbehavior.d.ts.map +1 -1
  211. package/dist/misbehavior.js +63 -4
  212. package/dist/misbehavior.js.map +1 -1
  213. package/dist/model-utils.cjs +1 -0
  214. package/dist/model-utils.cjs.map +1 -1
  215. package/dist/model-utils.js +1 -1
  216. package/dist/model-utils.js.map +1 -1
  217. package/dist/moderation.cjs +15 -12
  218. package/dist/moderation.cjs.map +1 -1
  219. package/dist/moderation.js +14 -11
  220. package/dist/moderation.js.map +1 -1
  221. package/dist/ndjson-writer.cjs +21 -23
  222. package/dist/ndjson-writer.cjs.map +1 -1
  223. package/dist/ndjson-writer.d.cts +0 -1
  224. package/dist/ndjson-writer.d.cts.map +1 -1
  225. package/dist/ndjson-writer.d.ts +0 -1
  226. package/dist/ndjson-writer.d.ts.map +1 -1
  227. package/dist/ndjson-writer.js +21 -24
  228. package/dist/ndjson-writer.js.map +1 -1
  229. package/dist/ollama.cjs +276 -210
  230. package/dist/ollama.cjs.map +1 -1
  231. package/dist/ollama.d.cts.map +1 -1
  232. package/dist/ollama.d.ts.map +1 -1
  233. package/dist/ollama.js +273 -207
  234. package/dist/ollama.js.map +1 -1
  235. package/dist/openapi.cjs +323 -3
  236. package/dist/openapi.cjs.map +1 -1
  237. package/dist/openapi.d.cts.map +1 -1
  238. package/dist/openapi.d.ts.map +1 -1
  239. package/dist/openapi.js +324 -4
  240. package/dist/openapi.js.map +1 -1
  241. package/dist/openrouter-chat.cjs +11 -155
  242. package/dist/openrouter-chat.cjs.map +1 -1
  243. package/dist/openrouter-chat.js +11 -155
  244. package/dist/openrouter-chat.js.map +1 -1
  245. package/dist/openrouter-video.cjs +51 -74
  246. package/dist/openrouter-video.cjs.map +1 -1
  247. package/dist/openrouter-video.d.cts.map +1 -1
  248. package/dist/openrouter-video.d.ts.map +1 -1
  249. package/dist/openrouter-video.js +37 -60
  250. package/dist/openrouter-video.js.map +1 -1
  251. package/dist/raw-validation.cjs +177 -0
  252. package/dist/raw-validation.cjs.map +1 -0
  253. package/dist/raw-validation.js +176 -0
  254. package/dist/raw-validation.js.map +1 -0
  255. package/dist/recorder.cjs +176 -95
  256. package/dist/recorder.cjs.map +1 -1
  257. package/dist/recorder.d.cts.map +1 -1
  258. package/dist/recorder.d.ts.map +1 -1
  259. package/dist/recorder.js +176 -95
  260. package/dist/recorder.js.map +1 -1
  261. package/dist/rerank.cjs +13 -11
  262. package/dist/rerank.cjs.map +1 -1
  263. package/dist/rerank.js +12 -10
  264. package/dist/rerank.js.map +1 -1
  265. package/dist/response/catalog/anthropic-page.cjs +39 -0
  266. package/dist/response/catalog/anthropic-page.cjs.map +1 -0
  267. package/dist/response/catalog/anthropic-page.js +38 -0
  268. package/dist/response/catalog/anthropic-page.js.map +1 -0
  269. package/dist/response/catalog/collect.cjs +61 -0
  270. package/dist/response/catalog/collect.cjs.map +1 -0
  271. package/dist/response/catalog/collect.js +59 -0
  272. package/dist/response/catalog/collect.js.map +1 -0
  273. package/dist/response/catalog/gemini-page.cjs +25 -0
  274. package/dist/response/catalog/gemini-page.cjs.map +1 -0
  275. package/dist/response/catalog/gemini-page.js +24 -0
  276. package/dist/response/catalog/gemini-page.js.map +1 -0
  277. package/dist/response/catalog/render.cjs +182 -0
  278. package/dist/response/catalog/render.cjs.map +1 -0
  279. package/dist/response/catalog/render.js +171 -0
  280. package/dist/response/catalog/render.js.map +1 -0
  281. package/dist/response/deliver.cjs +144 -0
  282. package/dist/response/deliver.cjs.map +1 -0
  283. package/dist/response/deliver.js +143 -0
  284. package/dist/response/deliver.js.map +1 -0
  285. package/dist/response/errors.cjs +225 -0
  286. package/dist/response/errors.cjs.map +1 -0
  287. package/dist/response/errors.js +224 -0
  288. package/dist/response/errors.js.map +1 -0
  289. package/dist/response/finish.cjs +39 -0
  290. package/dist/response/finish.cjs.map +1 -0
  291. package/dist/response/finish.js +35 -0
  292. package/dist/response/finish.js.map +1 -0
  293. package/dist/response/frame-loop.cjs +102 -0
  294. package/dist/response/frame-loop.cjs.map +1 -0
  295. package/dist/response/frame-loop.js +100 -0
  296. package/dist/response/frame-loop.js.map +1 -0
  297. package/dist/response/lifecycle.cjs +223 -0
  298. package/dist/response/lifecycle.cjs.map +1 -0
  299. package/dist/response/lifecycle.js +211 -0
  300. package/dist/response/lifecycle.js.map +1 -0
  301. package/dist/response/policy.cjs +126 -0
  302. package/dist/response/policy.cjs.map +1 -0
  303. package/dist/response/policy.js +120 -0
  304. package/dist/response/policy.js.map +1 -0
  305. package/dist/response/profiles.cjs +69 -0
  306. package/dist/response/profiles.cjs.map +1 -0
  307. package/dist/response/profiles.js +65 -0
  308. package/dist/response/profiles.js.map +1 -0
  309. package/dist/response/proxy.cjs +71 -0
  310. package/dist/response/proxy.cjs.map +1 -0
  311. package/dist/response/proxy.js +70 -0
  312. package/dist/response/proxy.js.map +1 -0
  313. package/dist/response/raw.cjs +228 -0
  314. package/dist/response/raw.cjs.map +1 -0
  315. package/dist/response/raw.js +227 -0
  316. package/dist/response/raw.js.map +1 -0
  317. package/dist/response/timing.cjs +157 -0
  318. package/dist/response/timing.cjs.map +1 -0
  319. package/dist/response/timing.js +150 -0
  320. package/dist/response/timing.js.map +1 -0
  321. package/dist/response/usage/codecs/anthropic.cjs +52 -0
  322. package/dist/response/usage/codecs/anthropic.cjs.map +1 -0
  323. package/dist/response/usage/codecs/anthropic.js +50 -0
  324. package/dist/response/usage/codecs/anthropic.js.map +1 -0
  325. package/dist/response/usage/codecs/cohere.cjs +36 -0
  326. package/dist/response/usage/codecs/cohere.cjs.map +1 -0
  327. package/dist/response/usage/codecs/cohere.js +35 -0
  328. package/dist/response/usage/codecs/cohere.js.map +1 -0
  329. package/dist/response/usage/codecs/converse.cjs +16 -0
  330. package/dist/response/usage/codecs/converse.cjs.map +1 -0
  331. package/dist/response/usage/codecs/converse.js +15 -0
  332. package/dist/response/usage/codecs/converse.js.map +1 -0
  333. package/dist/response/usage/codecs/gemini.cjs +31 -0
  334. package/dist/response/usage/codecs/gemini.cjs.map +1 -0
  335. package/dist/response/usage/codecs/gemini.js +31 -0
  336. package/dist/response/usage/codecs/gemini.js.map +1 -0
  337. package/dist/response/usage/codecs/interactions.cjs +22 -0
  338. package/dist/response/usage/codecs/interactions.cjs.map +1 -0
  339. package/dist/response/usage/codecs/interactions.js +21 -0
  340. package/dist/response/usage/codecs/interactions.js.map +1 -0
  341. package/dist/response/usage/codecs/ollama.cjs +17 -0
  342. package/dist/response/usage/codecs/ollama.cjs.map +1 -0
  343. package/dist/response/usage/codecs/ollama.js +17 -0
  344. package/dist/response/usage/codecs/ollama.js.map +1 -0
  345. package/dist/response/usage/codecs/openai.cjs +52 -0
  346. package/dist/response/usage/codecs/openai.cjs.map +1 -0
  347. package/dist/response/usage/codecs/openai.js +50 -0
  348. package/dist/response/usage/codecs/openai.js.map +1 -0
  349. package/dist/response/usage/codecs/openrouter.cjs +68 -0
  350. package/dist/response/usage/codecs/openrouter.cjs.map +1 -0
  351. package/dist/response/usage/codecs/openrouter.js +67 -0
  352. package/dist/response/usage/codecs/openrouter.js.map +1 -0
  353. package/dist/response/usage/codecs/realtime.cjs +19 -0
  354. package/dist/response/usage/codecs/realtime.cjs.map +1 -0
  355. package/dist/response/usage/codecs/realtime.js +18 -0
  356. package/dist/response/usage/codecs/realtime.js.map +1 -0
  357. package/dist/response/usage/codecs/responses.cjs +21 -0
  358. package/dist/response/usage/codecs/responses.cjs.map +1 -0
  359. package/dist/response/usage/codecs/responses.js +20 -0
  360. package/dist/response/usage/codecs/responses.js.map +1 -0
  361. package/dist/response/usage/estimate.cjs +23 -0
  362. package/dist/response/usage/estimate.cjs.map +1 -0
  363. package/dist/response/usage/estimate.js +21 -0
  364. package/dist/response/usage/estimate.js.map +1 -0
  365. package/dist/response/usage/fields.cjs +72 -0
  366. package/dist/response/usage/fields.cjs.map +1 -0
  367. package/dist/response/usage/fields.js +70 -0
  368. package/dist/response/usage/fields.js.map +1 -0
  369. package/dist/response/usage/recording.cjs +52 -0
  370. package/dist/response/usage/recording.cjs.map +1 -0
  371. package/dist/response/usage/recording.js +52 -0
  372. package/dist/response/usage/recording.js.map +1 -0
  373. package/dist/responses.cjs +304 -196
  374. package/dist/responses.cjs.map +1 -1
  375. package/dist/responses.d.cts.map +1 -1
  376. package/dist/responses.d.ts.map +1 -1
  377. package/dist/responses.js +303 -195
  378. package/dist/responses.js.map +1 -1
  379. package/dist/route-registry.cjs +45 -0
  380. package/dist/route-registry.cjs.map +1 -1
  381. package/dist/route-registry.d.cts.map +1 -1
  382. package/dist/route-registry.d.ts.map +1 -1
  383. package/dist/route-registry.js +41 -1
  384. package/dist/route-registry.js.map +1 -1
  385. package/dist/router.cjs +24 -4
  386. package/dist/router.cjs.map +1 -1
  387. package/dist/router.d.cts +7 -1
  388. package/dist/router.d.cts.map +1 -1
  389. package/dist/router.d.ts +7 -1
  390. package/dist/router.d.ts.map +1 -1
  391. package/dist/router.js +24 -5
  392. package/dist/router.js.map +1 -1
  393. package/dist/search.cjs +13 -11
  394. package/dist/search.cjs.map +1 -1
  395. package/dist/search.js +12 -10
  396. package/dist/search.js.map +1 -1
  397. package/dist/server.cjs +293 -248
  398. package/dist/server.cjs.map +1 -1
  399. package/dist/server.d.cts.map +1 -1
  400. package/dist/server.d.ts.map +1 -1
  401. package/dist/server.js +294 -249
  402. package/dist/server.js.map +1 -1
  403. package/dist/speech.cjs +20 -18
  404. package/dist/speech.cjs.map +1 -1
  405. package/dist/speech.d.cts.map +1 -1
  406. package/dist/speech.d.ts.map +1 -1
  407. package/dist/speech.js +19 -17
  408. package/dist/speech.js.map +1 -1
  409. package/dist/sse-writer.cjs +56 -30
  410. package/dist/sse-writer.cjs.map +1 -1
  411. package/dist/sse-writer.d.cts +0 -1
  412. package/dist/sse-writer.d.cts.map +1 -1
  413. package/dist/sse-writer.d.ts +0 -1
  414. package/dist/sse-writer.d.ts.map +1 -1
  415. package/dist/sse-writer.js +55 -31
  416. package/dist/sse-writer.js.map +1 -1
  417. package/dist/stream-collapse.cjs +118 -11
  418. package/dist/stream-collapse.cjs.map +1 -1
  419. package/dist/stream-collapse.d.cts +10 -9
  420. package/dist/stream-collapse.d.cts.map +1 -1
  421. package/dist/stream-collapse.d.ts +10 -9
  422. package/dist/stream-collapse.d.ts.map +1 -1
  423. package/dist/stream-collapse.js +118 -11
  424. package/dist/stream-collapse.js.map +1 -1
  425. package/dist/transcription.cjs +31 -43
  426. package/dist/transcription.cjs.map +1 -1
  427. package/dist/transcription.d.cts.map +1 -1
  428. package/dist/transcription.d.ts.map +1 -1
  429. package/dist/transcription.js +31 -43
  430. package/dist/transcription.js.map +1 -1
  431. package/dist/types.cjs.map +1 -1
  432. package/dist/types.d.cts +231 -9
  433. package/dist/types.d.cts.map +1 -1
  434. package/dist/types.d.ts +231 -9
  435. package/dist/types.d.ts.map +1 -1
  436. package/dist/types.js.map +1 -1
  437. package/dist/vector-mock.cjs +3 -8
  438. package/dist/vector-mock.cjs.map +1 -1
  439. package/dist/vector-mock.d.cts.map +1 -1
  440. package/dist/vector-mock.d.ts.map +1 -1
  441. package/dist/vector-mock.js +3 -8
  442. package/dist/vector-mock.js.map +1 -1
  443. package/dist/vector-stores.cjs +2 -4
  444. package/dist/vector-stores.cjs.map +1 -1
  445. package/dist/vector-stores.d.cts.map +1 -1
  446. package/dist/vector-stores.d.ts.map +1 -1
  447. package/dist/vector-stores.js +2 -4
  448. package/dist/vector-stores.js.map +1 -1
  449. package/dist/veo-video.cjs +16 -14
  450. package/dist/veo-video.cjs.map +1 -1
  451. package/dist/veo-video.js +10 -8
  452. package/dist/veo-video.js.map +1 -1
  453. package/dist/video.cjs +21 -19
  454. package/dist/video.cjs.map +1 -1
  455. package/dist/video.d.cts.map +1 -1
  456. package/dist/video.d.ts.map +1 -1
  457. package/dist/video.js +20 -18
  458. package/dist/video.js.map +1 -1
  459. package/dist/ws-framing.cjs +12 -6
  460. package/dist/ws-framing.cjs.map +1 -1
  461. package/dist/ws-framing.d.cts +2 -0
  462. package/dist/ws-framing.d.cts.map +1 -1
  463. package/dist/ws-framing.d.ts +2 -0
  464. package/dist/ws-framing.d.ts.map +1 -1
  465. package/dist/ws-framing.js +12 -6
  466. package/dist/ws-framing.js.map +1 -1
  467. package/dist/ws-gemini-live.cjs +131 -96
  468. package/dist/ws-gemini-live.cjs.map +1 -1
  469. package/dist/ws-gemini-live.d.cts +0 -1
  470. package/dist/ws-gemini-live.d.cts.map +1 -1
  471. package/dist/ws-gemini-live.d.ts +0 -1
  472. package/dist/ws-gemini-live.d.ts.map +1 -1
  473. package/dist/ws-gemini-live.js +130 -95
  474. package/dist/ws-gemini-live.js.map +1 -1
  475. package/dist/ws-live.cjs +6 -5
  476. package/dist/ws-live.cjs.map +1 -1
  477. package/dist/ws-live.js +5 -4
  478. package/dist/ws-live.js.map +1 -1
  479. package/dist/ws-realtime.cjs +108 -124
  480. package/dist/ws-realtime.cjs.map +1 -1
  481. package/dist/ws-realtime.d.cts.map +1 -1
  482. package/dist/ws-realtime.d.ts.map +1 -1
  483. package/dist/ws-realtime.js +105 -121
  484. package/dist/ws-realtime.js.map +1 -1
  485. package/dist/ws-responses.cjs +80 -59
  486. package/dist/ws-responses.cjs.map +1 -1
  487. package/dist/ws-responses.d.cts.map +1 -1
  488. package/dist/ws-responses.d.ts.map +1 -1
  489. package/dist/ws-responses.js +79 -58
  490. package/dist/ws-responses.js.map +1 -1
  491. package/package.json +4 -1
  492. package/skills/write-fixtures/SKILL.md +57 -16
@@ -3,7 +3,9 @@ const require_constants = require('./constants.cjs');
3
3
  const require_message_text = require('./message-text.cjs');
4
4
  const require_helpers = require('./helpers.cjs');
5
5
  const require_live_fixture = require('./live-fixture.cjs');
6
+ const require_raw_validation = require('./raw-validation.cjs');
6
7
  const require_chaos = require('./chaos.cjs');
8
+ const require_fields = require('./response/usage/fields.cjs');
7
9
  const require_misbehavior = require('./misbehavior.cjs');
8
10
  let node_fs = require("node:fs");
9
11
  let node_path = require("node:path");
@@ -70,6 +72,7 @@ function entryToFixture(entry, logger, liveOptions, source) {
70
72
  userMessage: entry.match.userMessage,
71
73
  systemMessage: entry.match.systemMessage,
72
74
  inputText: entry.match.inputText,
75
+ ...entry.match.embeddingRequest !== void 0 && { embeddingRequest: entry.match.embeddingRequest },
73
76
  toolCallId: entry.match.toolCallId,
74
77
  toolResultContains: entry.match.toolResultContains,
75
78
  toolName: entry.match.toolName,
@@ -91,6 +94,8 @@ function entryToFixture(entry, logger, liveOptions, source) {
91
94
  ...entry.replaySpeed != null && { replaySpeed: entry.replaySpeed },
92
95
  ...entry.chaos !== void 0 && { chaos: entry.chaos },
93
96
  ...entry.openRouterProcessing !== void 0 && { openRouterProcessing: entry.openRouterProcessing },
97
+ ...entry.nonStreamingTiming !== void 0 && { nonStreamingTiming: entry.nonStreamingTiming },
98
+ ...entry.nonStreamingTimingAllProviders !== void 0 && { nonStreamingTimingAllProviders: entry.nonStreamingTimingAllProviders },
94
99
  ...entry.metadata !== void 0 && { metadata: entry.metadata }
95
100
  };
96
101
  if (source) require_misbehavior.setFixtureMisbehaviorPosition(fixture, `${source.file}#${source.index}`);
@@ -298,6 +303,52 @@ function validateReasoning(response, fixtureIndex, results) {
298
303
  });
299
304
  }
300
305
  }
306
+ /** The wires that read `files` and `citations`; every other wire ignores them. */
307
+ const CITATIONS_FILES_WIRES = "Chat Completions, Anthropic Messages, Gemini or the OpenAI Responses API";
308
+ /**
309
+ * Generated `files` and source `citations`. A malformed value is not a load
310
+ * error (registration never throws for it, as in the release that added the
311
+ * keys); each request the fixture serves on Chat Completions, Anthropic,
312
+ * Gemini or the Responses API answers a coded 500 instead, so warn here with
313
+ * the same message. Citations are checked against the text they cite when
314
+ * served ({@link citedText}). A turn with no text (tool calls only, blocks
315
+ * with no text block, or empty content) has nothing to cite, so any
316
+ * non-empty `citations` there is reported exactly as the wires report it.
317
+ */
318
+ function validateCitationsAndFiles(response, fixtureIndex, results) {
319
+ const filesProblem = require_helpers.fixtureFilesProblem(response.files);
320
+ if (filesProblem !== void 0) results.push({
321
+ severity: "warning",
322
+ fixtureIndex,
323
+ message: `${filesProblem} — requests it serves on ${CITATIONS_FILES_WIRES} answer a 500 (aimock_invalid_fixture_file)`
324
+ });
325
+ const text = citedText(response);
326
+ if (text === void 0) return;
327
+ const citationsProblem = require_helpers.fixtureCitationsProblem(response.citations, text);
328
+ if (citationsProblem !== void 0) results.push({
329
+ severity: "warning",
330
+ fixtureIndex,
331
+ message: `${citationsProblem} — requests it serves on ${CITATIONS_FILES_WIRES} answer a 500 (aimock_invalid_fixture_citation)`
332
+ });
333
+ }
334
+ /**
335
+ * The text a fixture's citations index when served: the joined text of every
336
+ * text block when `responsesBlocks` or `blocks` is non-empty (through the
337
+ * same {@link resolveServedBlockOutcome} the providers use; empty when no
338
+ * block is text), else a string `content`, else empty for a tool-only turn.
339
+ * Empty text means a turn with nothing to cite. Undefined for a response
340
+ * that is neither (validated elsewhere) and for a malformed blocks array,
341
+ * which `validateBlocks` reports as an error.
342
+ */
343
+ function citedText(response) {
344
+ if (Array.isArray(response.blocks) && response.blocks.length > 0 || Array.isArray(response.responsesBlocks) && response.responsesBlocks.length > 0) try {
345
+ return require_helpers.resolveServedBlockOutcome(response)?.content;
346
+ } catch {
347
+ return;
348
+ }
349
+ if (typeof response.content === "string") return response.content;
350
+ if (Array.isArray(response.toolCalls) || Array.isArray(response.customToolCalls)) return "";
351
+ }
301
352
  function validateWebSearches(response, fixtureIndex, results) {
302
353
  if (response.webSearches !== void 0) if (!Array.isArray(response.webSearches)) results.push({
303
354
  severity: "error",
@@ -680,11 +731,29 @@ function validateFixtures(fixtures, liveOptions) {
680
731
  });
681
732
  }
682
733
  if (typeof response === "function") {} else {
683
- if (!require_helpers.isCombinedFixtureResponse(response) && !require_helpers.isTextResponse(response) && !require_helpers.isToolCallResponse(response) && !require_helpers.isErrorResponse(response) && !require_helpers.isEmbeddingResponse(response) && !require_helpers.isImageResponse(response) && !require_helpers.isAudioResponse(response) && !require_helpers.isTranscriptionResponse(response) && !require_helpers.isVideoResponse(response) && !require_helpers.isJSONResponse(response) && !require_helpers.isLiveResponse(response)) results.push({
734
+ if (!require_helpers.isCombinedFixtureResponse(response) && !require_helpers.isTextResponse(response) && !require_helpers.isToolCallResponse(response) && !require_helpers.isErrorResponse(response) && !require_helpers.isEmbeddingResponse(response) && !require_helpers.isImageResponse(response) && !require_helpers.isAudioResponse(response) && !require_helpers.isTranscriptionResponse(response) && !require_helpers.isVideoResponse(response) && !require_helpers.isJSONResponse(response) && !require_helpers.isLiveResponse(response) && !require_helpers.isRawResponse(response)) results.push({
684
735
  severity: "error",
685
736
  fixtureIndex: i,
686
- message: "response is not a recognized type (must have content, toolCalls, error, embedding, image, audio, transcription, video, json, or live)"
737
+ message: "response is not a recognized type (must have content, toolCalls, error, embedding, image, audio, transcription, video, json, live, or raw)"
687
738
  });
739
+ if (require_helpers.isRawResponse(response)) {
740
+ const context = rawFixtureContext(original, response);
741
+ for (const finding of require_raw_validation.checkRawResponse(response.raw, context)) results.push({
742
+ severity: finding.severity,
743
+ fixtureIndex: i,
744
+ message: finding.message
745
+ });
746
+ if (f.chunkSize !== void 0) results.push({
747
+ severity: "warning",
748
+ fixtureIndex: i,
749
+ message: "chunkSize is ignored for raw fixtures: each event is one frame"
750
+ });
751
+ if (f.openRouterProcessing !== void 0) results.push({
752
+ severity: "warning",
753
+ fixtureIndex: i,
754
+ message: "openRouterProcessing is ignored for raw fixtures"
755
+ });
756
+ }
688
757
  const hasNonEmptyBlocks = Array.isArray(response.blocks) && response.blocks.length > 0 || Array.isArray(response.responsesBlocks) && response.responsesBlocks.length > 0;
689
758
  const hasCustomToolCalls = Array.isArray(response.customToolCalls) && response.customToolCalls.length > 0;
690
759
  if (require_helpers.isTextResponse(response)) {
@@ -733,6 +802,7 @@ function validateFixtures(fixtures, liveOptions) {
733
802
  }
734
803
  validateBlocks(response, i, results);
735
804
  validateResponsesToolKeys(response, i, results);
805
+ validateCitationsAndFiles(response, i, results);
736
806
  if (require_helpers.isToolCallResponse(response)) {
737
807
  if (response.toolCalls.length === 0 && !hasCustomToolCalls) results.push({
738
808
  severity: "warning",
@@ -830,6 +900,11 @@ function validateFixtures(fixtures, liveOptions) {
830
900
  fixtureIndex: i,
831
901
  message: `override "role" must be a string, got ${typeof r.role}`
832
902
  });
903
+ if (r.phase !== void 0 && r.phase !== "commentary" && r.phase !== "final_answer") results.push({
904
+ severity: "error",
905
+ fixtureIndex: i,
906
+ message: "override \"phase\" must be \"commentary\" or \"final_answer\""
907
+ });
833
908
  if (r.systemFingerprint !== void 0 && typeof r.systemFingerprint !== "string") results.push({
834
909
  severity: "error",
835
910
  fixtureIndex: i,
@@ -840,52 +915,38 @@ function validateFixtures(fixtures, liveOptions) {
840
915
  fixtureIndex: i,
841
916
  message: `override "usage" must be an object`
842
917
  });
843
- else {
844
- const numericInnerFields = {
845
- cost_details: [
846
- "upstream_inference_cost",
847
- "upstream_inference_prompt_cost",
848
- "upstream_inference_completions_cost"
849
- ],
850
- prompt_tokens_details: [
851
- "cached_tokens",
852
- "cache_write_tokens",
853
- "audio_tokens"
854
- ],
855
- completion_tokens_details: ["reasoning_tokens"]
856
- };
857
- const objectUsageFields = new Set(Object.keys(numericInnerFields));
858
- for (const key of Object.keys(r.usage)) {
859
- const val = r.usage[key];
860
- if (val === void 0) continue;
861
- if (objectUsageFields.has(key)) if (typeof val !== "object" || val === null || Array.isArray(val)) results.push({
862
- severity: "error",
863
- fixtureIndex: i,
864
- message: `override "usage.${key}" must be an object, got ${Array.isArray(val) ? "array" : typeof val}`
865
- });
866
- else {
867
- const inner = val;
868
- for (const innerKey of numericInnerFields[key]) {
869
- const innerVal = inner[innerKey];
870
- if (innerVal !== void 0 && typeof innerVal !== "number") results.push({
871
- severity: "error",
872
- fixtureIndex: i,
873
- message: `override "usage.${key}.${innerKey}" must be a number, got ${typeof innerVal}`
874
- });
875
- }
876
- }
877
- else if (key === "is_byok") {
878
- if (typeof val !== "boolean") results.push({
918
+ else for (const key of Object.keys(r.usage)) {
919
+ const val = r.usage[key];
920
+ if (val === void 0) continue;
921
+ const definition = require_fields.getUsageFieldDefinition(key);
922
+ if (definition.kind === "number-or-object" && typeof val === "number") continue;
923
+ if (definition.kind === "object" || definition.kind === "number-or-object") if (typeof val !== "object" || val === null || Array.isArray(val)) results.push({
924
+ severity: "error",
925
+ fixtureIndex: i,
926
+ message: `override "usage.${key}" must be ${definition.kind === "number-or-object" ? "a number or object" : "an object"}, got ${Array.isArray(val) ? "array" : typeof val}`
927
+ });
928
+ else {
929
+ const inner = val;
930
+ for (const innerKey of definition.numericMembers) {
931
+ const innerVal = inner[innerKey];
932
+ if (innerVal !== void 0 && typeof innerVal !== "number") results.push({
879
933
  severity: "error",
880
934
  fixtureIndex: i,
881
- message: `override "usage.is_byok" must be a boolean, got ${typeof val}`
935
+ message: `override "usage.${key}.${innerKey}" must be a number, got ${typeof innerVal}`
882
936
  });
883
- } else if (typeof val !== "number") results.push({
937
+ }
938
+ }
939
+ else if (definition.kind === "boolean") {
940
+ if (typeof val !== "boolean") results.push({
884
941
  severity: "error",
885
942
  fixtureIndex: i,
886
- message: `override "usage.${key}" must be a number, got ${typeof val}`
943
+ message: `override "usage.is_byok" must be a boolean, got ${typeof val}`
887
944
  });
888
- }
945
+ } else if (typeof val !== "number") results.push({
946
+ severity: "error",
947
+ fixtureIndex: i,
948
+ message: `override "usage.${key}" must be a number, got ${typeof val}`
949
+ });
889
950
  }
890
951
  }
891
952
  }
@@ -909,6 +970,14 @@ function validateFixtures(fixtures, liveOptions) {
909
970
  fixtureIndex: i,
910
971
  message: "disconnectAfterMs must be >= 0"
911
972
  });
973
+ for (const flag of ["nonStreamingTiming", "nonStreamingTimingAllProviders"]) {
974
+ const value = f[flag];
975
+ if (value !== void 0 && typeof value !== "boolean") results.push({
976
+ severity: "warning",
977
+ fixtureIndex: i,
978
+ message: `${flag} must be a boolean, got ${typeof value} — the opt-in is ignored`
979
+ });
980
+ }
912
981
  if (f.streamingProfile !== void 0) {
913
982
  const sp = f.streamingProfile;
914
983
  if (sp.ttft !== void 0 && sp.ttft < 0) results.push({
@@ -1037,7 +1106,8 @@ function validateFixtures(fixtures, liveOptions) {
1037
1106
  m.sequenceIndex,
1038
1107
  m.turnIndex,
1039
1108
  m.hasToolResult,
1040
- ...m.toolNamespace !== void 0 ? [`toolNamespace=${m.toolNamespace}`] : []
1109
+ ...m.toolNamespace !== void 0 ? [`toolNamespace=${m.toolNamespace}`] : [],
1110
+ ...m.embeddingRequest !== void 0 ? [JSON.stringify(m.embeddingRequest)] : []
1041
1111
  ].map((v) => v === void 0 ? "" : String(v)).join("|");
1042
1112
  const prev = seenUserMessages.get(dedupKey);
1043
1113
  if (prev !== void 0) {
@@ -1055,7 +1125,7 @@ function validateFixtures(fixtures, liveOptions) {
1055
1125
  } else seenUserMessages.set(dedupKey, i);
1056
1126
  }
1057
1127
  const match = f.match;
1058
- if (!(match.endpoint !== void 0 || match.context !== void 0 || match.userMessage !== void 0 || match.systemMessage !== void 0 || match.inputText !== void 0 || match.responseFormat !== void 0 || match.toolCallId !== void 0 || match.toolResultContains !== void 0 || match.toolName !== void 0 || match.toolNamespace !== void 0 || match.model !== void 0 || match.predicate !== void 0 || match.turnIndex !== void 0 || match.sequenceIndex !== void 0 || match.hasToolResult !== void 0) && i < fixtures.length - 1) {
1128
+ if (!(match.endpoint !== void 0 || match.context !== void 0 || match.userMessage !== void 0 || match.systemMessage !== void 0 || match.inputText !== void 0 || match.embeddingRequest !== void 0 || match.responseFormat !== void 0 || match.toolCallId !== void 0 || match.toolResultContains !== void 0 || match.toolName !== void 0 || match.toolNamespace !== void 0 || match.model !== void 0 || match.predicate !== void 0 || match.turnIndex !== void 0 || match.sequenceIndex !== void 0 || match.hasToolResult !== void 0) && i < fixtures.length - 1) {
1059
1129
  const ref = {
1060
1130
  rule: "catch-all-not-last",
1061
1131
  shadowsFrom: i + 1,
@@ -1299,6 +1369,11 @@ const misbehaviorEnabledFixtures = /* @__PURE__ */ new WeakSet();
1299
1369
  function enableHeldFixtureMisbehavior(fixture) {
1300
1370
  const held = heldFixtureMisbehavior.get(fixture);
1301
1371
  if (held === void 0) return;
1372
+ if (typeof fixture.response !== "function" && require_helpers.isRawResponse(fixture.response)) throw new MisbehaviorConfigError({
1373
+ rule: "misbehavior/not-applicable",
1374
+ file: held.file,
1375
+ detail: `${held.path}: misbehavior does not apply to raw fixtures`
1376
+ });
1302
1377
  const parsed = require_misbehavior.parseMisbehavior(held.value, held.path);
1303
1378
  if (parsed.ok) fixture.misbehavior = parsed.config;
1304
1379
  const issue = parsed.ok ? require_misbehavior.validateFixtureMisbehavior(fixture, held.path) : parsed.issue;
@@ -1311,6 +1386,26 @@ function enableHeldFixtureMisbehavior(fixture) {
1311
1386
  misbehaviorEnabledFixtures.add(fixture);
1312
1387
  }
1313
1388
  /**
1389
+ * @internal The facts about a raw fixture that {@link checkRawResponse} checks
1390
+ * beyond `raw` itself, for `served`, the response as this server reads it.
1391
+ * Load validation and serve time both use it, so they agree:
1392
+ *
1393
+ * - `otherResponseKeys`: top-level keys of the fixture's response as written
1394
+ * that `served` lacks. Only `customToolCalls` / `responsesBlocks` are ever
1395
+ * dropped (on a legacy server), and a fixture that writes either next to
1396
+ * `raw` is not a raw fixture to the router.
1397
+ * - `fixtureMisbehavior`: the fixture sets its own `misbehavior`, recognized
1398
+ * or still held.
1399
+ */
1400
+ function rawFixtureContext(fixture, served) {
1401
+ const source = responsesToolsViewSource(fixture);
1402
+ const written = fixture.response;
1403
+ return {
1404
+ otherResponseKeys: typeof written === "function" ? [] : Object.keys(written).filter((key) => !(key in served)),
1405
+ fixtureMisbehavior: fixture.misbehavior !== void 0 || heldFixtureMisbehavior.has(source)
1406
+ };
1407
+ }
1408
+ /**
1314
1409
  * @internal Mark a fixture whose `misbehavior` a server with misbehavior
1315
1410
  * enabled has recognized, so `validateFixtures` checks it.
1316
1411
  */
@@ -1338,6 +1433,7 @@ exports.markFixtureResponsesToolsExtended = markFixtureResponsesToolsExtended;
1338
1433
  exports.normalizeResponse = normalizeResponse;
1339
1434
  exports.normalizeResponsesToolsKeys = normalizeResponsesToolsKeys;
1340
1435
  exports.queueOneShotError = queueOneShotError;
1436
+ exports.rawFixtureContext = rawFixtureContext;
1341
1437
  exports.readFixtureJson = readFixtureJson;
1342
1438
  exports.releaseOneShotError = releaseOneShotError;
1343
1439
  exports.renderValidationRef = renderValidationRef;