@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
@@ -1,8 +1,10 @@
1
1
  import { MCP_FAKES_ECHO_LIMIT } from "./constants.js";
2
2
  import { build, fixed, jsonText, msg, quote, within } from "./message-text.js";
3
- import { fixtureListTarget, isAudioResponse, isCombinedFixtureResponse, isEmbeddingResponse, isErrorResponse, isImageResponse, isJSONResponse, isLiveResponse, isTextResponse, isToolCallResponse, isTranscriptionResponse, isVideoResponse } from "./helpers.js";
3
+ import { fixtureCitationsProblem, fixtureFilesProblem, fixtureListTarget, isAudioResponse, isCombinedFixtureResponse, isEmbeddingResponse, isErrorResponse, isImageResponse, isJSONResponse, isLiveResponse, isRawResponse, isTextResponse, isToolCallResponse, isTranscriptionResponse, isVideoResponse, resolveServedBlockOutcome } from "./helpers.js";
4
4
  import { normalizeLiveFixture } from "./live-fixture.js";
5
+ import { checkRawResponse } from "./raw-validation.js";
5
6
  import { CHAOS_FIELDS, CHAOS_FIELD_NAMES, parseChaosField } from "./chaos.js";
7
+ import { getUsageFieldDefinition } from "./response/usage/fields.js";
6
8
  import { copyFixtureMisbehaviorPosition, parseMisbehavior, setFixtureMisbehaviorPosition, validateFixtureMisbehavior } from "./misbehavior.js";
7
9
  import { readFileSync, readdirSync, statSync } from "node:fs";
8
10
  import { join } from "node:path";
@@ -69,6 +71,7 @@ function entryToFixture(entry, logger, liveOptions, source) {
69
71
  userMessage: entry.match.userMessage,
70
72
  systemMessage: entry.match.systemMessage,
71
73
  inputText: entry.match.inputText,
74
+ ...entry.match.embeddingRequest !== void 0 && { embeddingRequest: entry.match.embeddingRequest },
72
75
  toolCallId: entry.match.toolCallId,
73
76
  toolResultContains: entry.match.toolResultContains,
74
77
  toolName: entry.match.toolName,
@@ -90,6 +93,8 @@ function entryToFixture(entry, logger, liveOptions, source) {
90
93
  ...entry.replaySpeed != null && { replaySpeed: entry.replaySpeed },
91
94
  ...entry.chaos !== void 0 && { chaos: entry.chaos },
92
95
  ...entry.openRouterProcessing !== void 0 && { openRouterProcessing: entry.openRouterProcessing },
96
+ ...entry.nonStreamingTiming !== void 0 && { nonStreamingTiming: entry.nonStreamingTiming },
97
+ ...entry.nonStreamingTimingAllProviders !== void 0 && { nonStreamingTimingAllProviders: entry.nonStreamingTimingAllProviders },
93
98
  ...entry.metadata !== void 0 && { metadata: entry.metadata }
94
99
  };
95
100
  if (source) setFixtureMisbehaviorPosition(fixture, `${source.file}#${source.index}`);
@@ -297,6 +302,52 @@ function validateReasoning(response, fixtureIndex, results) {
297
302
  });
298
303
  }
299
304
  }
305
+ /** The wires that read `files` and `citations`; every other wire ignores them. */
306
+ const CITATIONS_FILES_WIRES = "Chat Completions, Anthropic Messages, Gemini or the OpenAI Responses API";
307
+ /**
308
+ * Generated `files` and source `citations`. A malformed value is not a load
309
+ * error (registration never throws for it, as in the release that added the
310
+ * keys); each request the fixture serves on Chat Completions, Anthropic,
311
+ * Gemini or the Responses API answers a coded 500 instead, so warn here with
312
+ * the same message. Citations are checked against the text they cite when
313
+ * served ({@link citedText}). A turn with no text (tool calls only, blocks
314
+ * with no text block, or empty content) has nothing to cite, so any
315
+ * non-empty `citations` there is reported exactly as the wires report it.
316
+ */
317
+ function validateCitationsAndFiles(response, fixtureIndex, results) {
318
+ const filesProblem = fixtureFilesProblem(response.files);
319
+ if (filesProblem !== void 0) results.push({
320
+ severity: "warning",
321
+ fixtureIndex,
322
+ message: `${filesProblem} — requests it serves on ${CITATIONS_FILES_WIRES} answer a 500 (aimock_invalid_fixture_file)`
323
+ });
324
+ const text = citedText(response);
325
+ if (text === void 0) return;
326
+ const citationsProblem = fixtureCitationsProblem(response.citations, text);
327
+ if (citationsProblem !== void 0) results.push({
328
+ severity: "warning",
329
+ fixtureIndex,
330
+ message: `${citationsProblem} — requests it serves on ${CITATIONS_FILES_WIRES} answer a 500 (aimock_invalid_fixture_citation)`
331
+ });
332
+ }
333
+ /**
334
+ * The text a fixture's citations index when served: the joined text of every
335
+ * text block when `responsesBlocks` or `blocks` is non-empty (through the
336
+ * same {@link resolveServedBlockOutcome} the providers use; empty when no
337
+ * block is text), else a string `content`, else empty for a tool-only turn.
338
+ * Empty text means a turn with nothing to cite. Undefined for a response
339
+ * that is neither (validated elsewhere) and for a malformed blocks array,
340
+ * which `validateBlocks` reports as an error.
341
+ */
342
+ function citedText(response) {
343
+ if (Array.isArray(response.blocks) && response.blocks.length > 0 || Array.isArray(response.responsesBlocks) && response.responsesBlocks.length > 0) try {
344
+ return resolveServedBlockOutcome(response)?.content;
345
+ } catch {
346
+ return;
347
+ }
348
+ if (typeof response.content === "string") return response.content;
349
+ if (Array.isArray(response.toolCalls) || Array.isArray(response.customToolCalls)) return "";
350
+ }
300
351
  function validateWebSearches(response, fixtureIndex, results) {
301
352
  if (response.webSearches !== void 0) if (!Array.isArray(response.webSearches)) results.push({
302
353
  severity: "error",
@@ -679,11 +730,29 @@ function validateFixtures(fixtures, liveOptions) {
679
730
  });
680
731
  }
681
732
  if (typeof response === "function") {} else {
682
- if (!isCombinedFixtureResponse(response) && !isTextResponse(response) && !isToolCallResponse(response) && !isErrorResponse(response) && !isEmbeddingResponse(response) && !isImageResponse(response) && !isAudioResponse(response) && !isTranscriptionResponse(response) && !isVideoResponse(response) && !isJSONResponse(response) && !isLiveResponse(response)) results.push({
733
+ if (!isCombinedFixtureResponse(response) && !isTextResponse(response) && !isToolCallResponse(response) && !isErrorResponse(response) && !isEmbeddingResponse(response) && !isImageResponse(response) && !isAudioResponse(response) && !isTranscriptionResponse(response) && !isVideoResponse(response) && !isJSONResponse(response) && !isLiveResponse(response) && !isRawResponse(response)) results.push({
683
734
  severity: "error",
684
735
  fixtureIndex: i,
685
- message: "response is not a recognized type (must have content, toolCalls, error, embedding, image, audio, transcription, video, json, or live)"
736
+ message: "response is not a recognized type (must have content, toolCalls, error, embedding, image, audio, transcription, video, json, live, or raw)"
686
737
  });
738
+ if (isRawResponse(response)) {
739
+ const context = rawFixtureContext(original, response);
740
+ for (const finding of checkRawResponse(response.raw, context)) results.push({
741
+ severity: finding.severity,
742
+ fixtureIndex: i,
743
+ message: finding.message
744
+ });
745
+ if (f.chunkSize !== void 0) results.push({
746
+ severity: "warning",
747
+ fixtureIndex: i,
748
+ message: "chunkSize is ignored for raw fixtures: each event is one frame"
749
+ });
750
+ if (f.openRouterProcessing !== void 0) results.push({
751
+ severity: "warning",
752
+ fixtureIndex: i,
753
+ message: "openRouterProcessing is ignored for raw fixtures"
754
+ });
755
+ }
687
756
  const hasNonEmptyBlocks = Array.isArray(response.blocks) && response.blocks.length > 0 || Array.isArray(response.responsesBlocks) && response.responsesBlocks.length > 0;
688
757
  const hasCustomToolCalls = Array.isArray(response.customToolCalls) && response.customToolCalls.length > 0;
689
758
  if (isTextResponse(response)) {
@@ -732,6 +801,7 @@ function validateFixtures(fixtures, liveOptions) {
732
801
  }
733
802
  validateBlocks(response, i, results);
734
803
  validateResponsesToolKeys(response, i, results);
804
+ validateCitationsAndFiles(response, i, results);
735
805
  if (isToolCallResponse(response)) {
736
806
  if (response.toolCalls.length === 0 && !hasCustomToolCalls) results.push({
737
807
  severity: "warning",
@@ -829,6 +899,11 @@ function validateFixtures(fixtures, liveOptions) {
829
899
  fixtureIndex: i,
830
900
  message: `override "role" must be a string, got ${typeof r.role}`
831
901
  });
902
+ if (r.phase !== void 0 && r.phase !== "commentary" && r.phase !== "final_answer") results.push({
903
+ severity: "error",
904
+ fixtureIndex: i,
905
+ message: "override \"phase\" must be \"commentary\" or \"final_answer\""
906
+ });
832
907
  if (r.systemFingerprint !== void 0 && typeof r.systemFingerprint !== "string") results.push({
833
908
  severity: "error",
834
909
  fixtureIndex: i,
@@ -839,52 +914,38 @@ function validateFixtures(fixtures, liveOptions) {
839
914
  fixtureIndex: i,
840
915
  message: `override "usage" must be an object`
841
916
  });
842
- else {
843
- const numericInnerFields = {
844
- cost_details: [
845
- "upstream_inference_cost",
846
- "upstream_inference_prompt_cost",
847
- "upstream_inference_completions_cost"
848
- ],
849
- prompt_tokens_details: [
850
- "cached_tokens",
851
- "cache_write_tokens",
852
- "audio_tokens"
853
- ],
854
- completion_tokens_details: ["reasoning_tokens"]
855
- };
856
- const objectUsageFields = new Set(Object.keys(numericInnerFields));
857
- for (const key of Object.keys(r.usage)) {
858
- const val = r.usage[key];
859
- if (val === void 0) continue;
860
- if (objectUsageFields.has(key)) if (typeof val !== "object" || val === null || Array.isArray(val)) results.push({
861
- severity: "error",
862
- fixtureIndex: i,
863
- message: `override "usage.${key}" must be an object, got ${Array.isArray(val) ? "array" : typeof val}`
864
- });
865
- else {
866
- const inner = val;
867
- for (const innerKey of numericInnerFields[key]) {
868
- const innerVal = inner[innerKey];
869
- if (innerVal !== void 0 && typeof innerVal !== "number") results.push({
870
- severity: "error",
871
- fixtureIndex: i,
872
- message: `override "usage.${key}.${innerKey}" must be a number, got ${typeof innerVal}`
873
- });
874
- }
875
- }
876
- else if (key === "is_byok") {
877
- if (typeof val !== "boolean") results.push({
917
+ else for (const key of Object.keys(r.usage)) {
918
+ const val = r.usage[key];
919
+ if (val === void 0) continue;
920
+ const definition = getUsageFieldDefinition(key);
921
+ if (definition.kind === "number-or-object" && typeof val === "number") continue;
922
+ if (definition.kind === "object" || definition.kind === "number-or-object") if (typeof val !== "object" || val === null || Array.isArray(val)) results.push({
923
+ severity: "error",
924
+ fixtureIndex: i,
925
+ message: `override "usage.${key}" must be ${definition.kind === "number-or-object" ? "a number or object" : "an object"}, got ${Array.isArray(val) ? "array" : typeof val}`
926
+ });
927
+ else {
928
+ const inner = val;
929
+ for (const innerKey of definition.numericMembers) {
930
+ const innerVal = inner[innerKey];
931
+ if (innerVal !== void 0 && typeof innerVal !== "number") results.push({
878
932
  severity: "error",
879
933
  fixtureIndex: i,
880
- message: `override "usage.is_byok" must be a boolean, got ${typeof val}`
934
+ message: `override "usage.${key}.${innerKey}" must be a number, got ${typeof innerVal}`
881
935
  });
882
- } else if (typeof val !== "number") results.push({
936
+ }
937
+ }
938
+ else if (definition.kind === "boolean") {
939
+ if (typeof val !== "boolean") results.push({
883
940
  severity: "error",
884
941
  fixtureIndex: i,
885
- message: `override "usage.${key}" must be a number, got ${typeof val}`
942
+ message: `override "usage.is_byok" must be a boolean, got ${typeof val}`
886
943
  });
887
- }
944
+ } else if (typeof val !== "number") results.push({
945
+ severity: "error",
946
+ fixtureIndex: i,
947
+ message: `override "usage.${key}" must be a number, got ${typeof val}`
948
+ });
888
949
  }
889
950
  }
890
951
  }
@@ -908,6 +969,14 @@ function validateFixtures(fixtures, liveOptions) {
908
969
  fixtureIndex: i,
909
970
  message: "disconnectAfterMs must be >= 0"
910
971
  });
972
+ for (const flag of ["nonStreamingTiming", "nonStreamingTimingAllProviders"]) {
973
+ const value = f[flag];
974
+ if (value !== void 0 && typeof value !== "boolean") results.push({
975
+ severity: "warning",
976
+ fixtureIndex: i,
977
+ message: `${flag} must be a boolean, got ${typeof value} — the opt-in is ignored`
978
+ });
979
+ }
911
980
  if (f.streamingProfile !== void 0) {
912
981
  const sp = f.streamingProfile;
913
982
  if (sp.ttft !== void 0 && sp.ttft < 0) results.push({
@@ -1036,7 +1105,8 @@ function validateFixtures(fixtures, liveOptions) {
1036
1105
  m.sequenceIndex,
1037
1106
  m.turnIndex,
1038
1107
  m.hasToolResult,
1039
- ...m.toolNamespace !== void 0 ? [`toolNamespace=${m.toolNamespace}`] : []
1108
+ ...m.toolNamespace !== void 0 ? [`toolNamespace=${m.toolNamespace}`] : [],
1109
+ ...m.embeddingRequest !== void 0 ? [JSON.stringify(m.embeddingRequest)] : []
1040
1110
  ].map((v) => v === void 0 ? "" : String(v)).join("|");
1041
1111
  const prev = seenUserMessages.get(dedupKey);
1042
1112
  if (prev !== void 0) {
@@ -1054,7 +1124,7 @@ function validateFixtures(fixtures, liveOptions) {
1054
1124
  } else seenUserMessages.set(dedupKey, i);
1055
1125
  }
1056
1126
  const match = f.match;
1057
- 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) {
1127
+ 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) {
1058
1128
  const ref = {
1059
1129
  rule: "catch-all-not-last",
1060
1130
  shadowsFrom: i + 1,
@@ -1298,6 +1368,11 @@ const misbehaviorEnabledFixtures = /* @__PURE__ */ new WeakSet();
1298
1368
  function enableHeldFixtureMisbehavior(fixture) {
1299
1369
  const held = heldFixtureMisbehavior.get(fixture);
1300
1370
  if (held === void 0) return;
1371
+ if (typeof fixture.response !== "function" && isRawResponse(fixture.response)) throw new MisbehaviorConfigError({
1372
+ rule: "misbehavior/not-applicable",
1373
+ file: held.file,
1374
+ detail: `${held.path}: misbehavior does not apply to raw fixtures`
1375
+ });
1301
1376
  const parsed = parseMisbehavior(held.value, held.path);
1302
1377
  if (parsed.ok) fixture.misbehavior = parsed.config;
1303
1378
  const issue = parsed.ok ? validateFixtureMisbehavior(fixture, held.path) : parsed.issue;
@@ -1310,6 +1385,26 @@ function enableHeldFixtureMisbehavior(fixture) {
1310
1385
  misbehaviorEnabledFixtures.add(fixture);
1311
1386
  }
1312
1387
  /**
1388
+ * @internal The facts about a raw fixture that {@link checkRawResponse} checks
1389
+ * beyond `raw` itself, for `served`, the response as this server reads it.
1390
+ * Load validation and serve time both use it, so they agree:
1391
+ *
1392
+ * - `otherResponseKeys`: top-level keys of the fixture's response as written
1393
+ * that `served` lacks. Only `customToolCalls` / `responsesBlocks` are ever
1394
+ * dropped (on a legacy server), and a fixture that writes either next to
1395
+ * `raw` is not a raw fixture to the router.
1396
+ * - `fixtureMisbehavior`: the fixture sets its own `misbehavior`, recognized
1397
+ * or still held.
1398
+ */
1399
+ function rawFixtureContext(fixture, served) {
1400
+ const source = responsesToolsViewSource(fixture);
1401
+ const written = fixture.response;
1402
+ return {
1403
+ otherResponseKeys: typeof written === "function" ? [] : Object.keys(written).filter((key) => !(key in served)),
1404
+ fixtureMisbehavior: fixture.misbehavior !== void 0 || heldFixtureMisbehavior.has(source)
1405
+ };
1406
+ }
1407
+ /**
1313
1408
  * @internal Mark a fixture whose `misbehavior` a server with misbehavior
1314
1409
  * enabled has recognized, so `validateFixtures` checks it.
1315
1410
  */
@@ -1318,5 +1413,5 @@ function markFixtureMisbehaviorEnabled(fixture) {
1318
1413
  }
1319
1414
 
1320
1415
  //#endregion
1321
- export { FixtureLoadError, INJECTED_STATUS_RANGE, MisbehaviorConfigError, claimOneShotError, clearFixtureQueue, enableHeldFixtureMisbehavior, entryToFixture, fixturesOf, hasMcpFakesKey, isInjectableStatus, isOneShotError, listFixtureDir, loadFixtureFile, loadFixturesFromDir, markFixtureMisbehaviorEnabled, markFixtureResponsesToolsExtended, normalizeResponse, normalizeResponsesToolsKeys, queueOneShotError, readFixtureJson, releaseOneShotError, renderValidationRef, responsesToolsExtendedView, responsesToolsViewSource, validateFixtures };
1416
+ export { FixtureLoadError, INJECTED_STATUS_RANGE, MisbehaviorConfigError, claimOneShotError, clearFixtureQueue, enableHeldFixtureMisbehavior, entryToFixture, fixturesOf, hasMcpFakesKey, isInjectableStatus, isOneShotError, listFixtureDir, loadFixtureFile, loadFixturesFromDir, markFixtureMisbehaviorEnabled, markFixtureResponsesToolsExtended, normalizeResponse, normalizeResponsesToolsKeys, queueOneShotError, rawFixtureContext, readFixtureJson, releaseOneShotError, renderValidationRef, responsesToolsExtendedView, responsesToolsViewSource, validateFixtures };
1322
1417
  //# sourceMappingURL=fixture-loader.js.map