@copilotkit/aimock 1.45.0 → 1.46.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 (426) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +24 -0
  4. package/README.md +7 -1
  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.ts.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/batches.cjs +2 -4
  25. package/dist/batches.cjs.map +1 -1
  26. package/dist/batches.d.cts.map +1 -1
  27. package/dist/batches.d.ts.map +1 -1
  28. package/dist/batches.js +2 -4
  29. package/dist/batches.js.map +1 -1
  30. package/dist/bedrock-converse.cjs +61 -80
  31. package/dist/bedrock-converse.cjs.map +1 -1
  32. package/dist/bedrock-converse.d.cts.map +1 -1
  33. package/dist/bedrock-converse.d.ts.map +1 -1
  34. package/dist/bedrock-converse.js +58 -77
  35. package/dist/bedrock-converse.js.map +1 -1
  36. package/dist/bedrock.cjs +65 -97
  37. package/dist/bedrock.cjs.map +1 -1
  38. package/dist/bedrock.d.cts.map +1 -1
  39. package/dist/bedrock.d.ts.map +1 -1
  40. package/dist/bedrock.js +62 -94
  41. package/dist/bedrock.js.map +1 -1
  42. package/dist/byteplus-video.cjs +11 -10
  43. package/dist/byteplus-video.cjs.map +1 -1
  44. package/dist/byteplus-video.d.cts.map +1 -1
  45. package/dist/byteplus-video.d.ts.map +1 -1
  46. package/dist/byteplus-video.js +5 -4
  47. package/dist/byteplus-video.js.map +1 -1
  48. package/dist/chaos.cjs +5 -4
  49. package/dist/chaos.cjs.map +1 -1
  50. package/dist/chaos.d.cts.map +1 -1
  51. package/dist/chaos.d.ts.map +1 -1
  52. package/dist/chaos.js +5 -4
  53. package/dist/chaos.js.map +1 -1
  54. package/dist/cli.cjs +15 -0
  55. package/dist/cli.cjs.map +1 -1
  56. package/dist/cli.js +15 -0
  57. package/dist/cli.js.map +1 -1
  58. package/dist/cohere.cjs +49 -74
  59. package/dist/cohere.cjs.map +1 -1
  60. package/dist/cohere.d.cts.map +1 -1
  61. package/dist/cohere.d.ts.map +1 -1
  62. package/dist/cohere.js +47 -72
  63. package/dist/cohere.js.map +1 -1
  64. package/dist/config-loader.cjs +29 -1
  65. package/dist/config-loader.cjs.map +1 -1
  66. package/dist/config-loader.d.cts +7 -1
  67. package/dist/config-loader.d.cts.map +1 -1
  68. package/dist/config-loader.d.ts +7 -1
  69. package/dist/config-loader.d.ts.map +1 -1
  70. package/dist/config-loader.js +29 -2
  71. package/dist/config-loader.js.map +1 -1
  72. package/dist/count-tokens.cjs +146 -0
  73. package/dist/count-tokens.cjs.map +1 -0
  74. package/dist/count-tokens.js +146 -0
  75. package/dist/count-tokens.js.map +1 -0
  76. package/dist/elevenlabs-audio.cjs +36 -34
  77. package/dist/elevenlabs-audio.cjs.map +1 -1
  78. package/dist/elevenlabs-audio.d.cts.map +1 -1
  79. package/dist/elevenlabs-audio.d.ts.map +1 -1
  80. package/dist/elevenlabs-audio.js +33 -31
  81. package/dist/elevenlabs-audio.js.map +1 -1
  82. package/dist/elevenlabs-voice.cjs +38 -37
  83. package/dist/elevenlabs-voice.cjs.map +1 -1
  84. package/dist/elevenlabs-voice.d.cts.map +1 -1
  85. package/dist/elevenlabs-voice.d.ts.map +1 -1
  86. package/dist/elevenlabs-voice.js +33 -32
  87. package/dist/elevenlabs-voice.js.map +1 -1
  88. package/dist/embedding-request.cjs +16 -0
  89. package/dist/embedding-request.cjs.map +1 -0
  90. package/dist/embedding-request.js +14 -0
  91. package/dist/embedding-request.js.map +1 -0
  92. package/dist/embeddings.cjs +30 -20
  93. package/dist/embeddings.cjs.map +1 -1
  94. package/dist/embeddings.d.cts.map +1 -1
  95. package/dist/embeddings.d.ts.map +1 -1
  96. package/dist/embeddings.js +30 -20
  97. package/dist/embeddings.js.map +1 -1
  98. package/dist/fal-audio.cjs +45 -43
  99. package/dist/fal-audio.cjs.map +1 -1
  100. package/dist/fal-audio.d.cts.map +1 -1
  101. package/dist/fal-audio.d.ts.map +1 -1
  102. package/dist/fal-audio.js +42 -40
  103. package/dist/fal-audio.js.map +1 -1
  104. package/dist/fal.cjs +17 -15
  105. package/dist/fal.cjs.map +1 -1
  106. package/dist/fal.js +16 -14
  107. package/dist/fal.js.map +1 -1
  108. package/dist/files.cjs +2 -4
  109. package/dist/files.cjs.map +1 -1
  110. package/dist/files.d.cts.map +1 -1
  111. package/dist/files.d.ts.map +1 -1
  112. package/dist/files.js +2 -4
  113. package/dist/files.js.map +1 -1
  114. package/dist/fine-tuning.cjs +2 -4
  115. package/dist/fine-tuning.cjs.map +1 -1
  116. package/dist/fine-tuning.d.cts.map +1 -1
  117. package/dist/fine-tuning.d.ts.map +1 -1
  118. package/dist/fine-tuning.js +2 -4
  119. package/dist/fine-tuning.js.map +1 -1
  120. package/dist/fixture-loader.cjs +37 -42
  121. package/dist/fixture-loader.cjs.map +1 -1
  122. package/dist/fixture-loader.d.cts.map +1 -1
  123. package/dist/fixture-loader.d.ts.map +1 -1
  124. package/dist/fixture-loader.js +37 -42
  125. package/dist/fixture-loader.js.map +1 -1
  126. package/dist/gemini-embeddings.cjs +26 -24
  127. package/dist/gemini-embeddings.cjs.map +1 -1
  128. package/dist/gemini-embeddings.js +26 -24
  129. package/dist/gemini-embeddings.js.map +1 -1
  130. package/dist/gemini-interactions.cjs +50 -35
  131. package/dist/gemini-interactions.cjs.map +1 -1
  132. package/dist/gemini-interactions.d.cts +0 -1
  133. package/dist/gemini-interactions.d.cts.map +1 -1
  134. package/dist/gemini-interactions.d.ts +0 -1
  135. package/dist/gemini-interactions.d.ts.map +1 -1
  136. package/dist/gemini-interactions.js +49 -34
  137. package/dist/gemini-interactions.js.map +1 -1
  138. package/dist/gemini.cjs +57 -67
  139. package/dist/gemini.cjs.map +1 -1
  140. package/dist/gemini.d.cts.map +1 -1
  141. package/dist/gemini.d.ts.map +1 -1
  142. package/dist/gemini.js +56 -67
  143. package/dist/gemini.js.map +1 -1
  144. package/dist/grok-video.cjs +14 -12
  145. package/dist/grok-video.cjs.map +1 -1
  146. package/dist/grok-video.d.cts.map +1 -1
  147. package/dist/grok-video.d.ts.map +1 -1
  148. package/dist/grok-video.js +8 -6
  149. package/dist/grok-video.js.map +1 -1
  150. package/dist/helpers.cjs +11 -68
  151. package/dist/helpers.cjs.map +1 -1
  152. package/dist/helpers.d.cts.map +1 -1
  153. package/dist/helpers.d.ts.map +1 -1
  154. package/dist/helpers.js +12 -67
  155. package/dist/helpers.js.map +1 -1
  156. package/dist/images.cjs +30 -28
  157. package/dist/images.cjs.map +1 -1
  158. package/dist/images.d.cts.map +1 -1
  159. package/dist/images.d.ts.map +1 -1
  160. package/dist/images.js +27 -25
  161. package/dist/images.js.map +1 -1
  162. package/dist/index.d.cts +2 -2
  163. package/dist/index.d.ts +2 -2
  164. package/dist/journal.cjs +3 -1
  165. package/dist/journal.cjs.map +1 -1
  166. package/dist/journal.d.cts.map +1 -1
  167. package/dist/journal.d.ts.map +1 -1
  168. package/dist/journal.js +2 -1
  169. package/dist/journal.js.map +1 -1
  170. package/dist/llmock.cjs +3 -0
  171. package/dist/llmock.cjs.map +1 -1
  172. package/dist/llmock.d.cts.map +1 -1
  173. package/dist/llmock.d.ts.map +1 -1
  174. package/dist/llmock.js +3 -0
  175. package/dist/llmock.js.map +1 -1
  176. package/dist/mcp-fakes.d.cts.map +1 -1
  177. package/dist/mcp-handler.cjs +14 -4
  178. package/dist/mcp-handler.cjs.map +1 -1
  179. package/dist/mcp-handler.js +14 -4
  180. package/dist/mcp-handler.js.map +1 -1
  181. package/dist/mcp-recorder.cjs +2 -1
  182. package/dist/mcp-recorder.cjs.map +1 -1
  183. package/dist/mcp-recorder.js +3 -2
  184. package/dist/mcp-recorder.js.map +1 -1
  185. package/dist/messages.cjs +111 -96
  186. package/dist/messages.cjs.map +1 -1
  187. package/dist/messages.d.cts.map +1 -1
  188. package/dist/messages.d.ts.map +1 -1
  189. package/dist/messages.js +109 -95
  190. package/dist/messages.js.map +1 -1
  191. package/dist/metrics.cjs +5 -2
  192. package/dist/metrics.cjs.map +1 -1
  193. package/dist/metrics.d.cts.map +1 -1
  194. package/dist/metrics.d.ts.map +1 -1
  195. package/dist/metrics.js +6 -3
  196. package/dist/metrics.js.map +1 -1
  197. package/dist/model-utils.cjs +1 -0
  198. package/dist/model-utils.cjs.map +1 -1
  199. package/dist/model-utils.js +1 -1
  200. package/dist/model-utils.js.map +1 -1
  201. package/dist/moderation.cjs +15 -12
  202. package/dist/moderation.cjs.map +1 -1
  203. package/dist/moderation.js +14 -11
  204. package/dist/moderation.js.map +1 -1
  205. package/dist/ollama.cjs +128 -68
  206. package/dist/ollama.cjs.map +1 -1
  207. package/dist/ollama.d.cts.map +1 -1
  208. package/dist/ollama.d.ts.map +1 -1
  209. package/dist/ollama.js +124 -64
  210. package/dist/ollama.js.map +1 -1
  211. package/dist/openapi.cjs +323 -3
  212. package/dist/openapi.cjs.map +1 -1
  213. package/dist/openapi.d.cts.map +1 -1
  214. package/dist/openapi.d.ts.map +1 -1
  215. package/dist/openapi.js +324 -4
  216. package/dist/openapi.js.map +1 -1
  217. package/dist/openrouter-chat.cjs +11 -155
  218. package/dist/openrouter-chat.cjs.map +1 -1
  219. package/dist/openrouter-chat.js +11 -155
  220. package/dist/openrouter-chat.js.map +1 -1
  221. package/dist/openrouter-video.cjs +76 -71
  222. package/dist/openrouter-video.cjs.map +1 -1
  223. package/dist/openrouter-video.d.cts.map +1 -1
  224. package/dist/openrouter-video.d.ts.map +1 -1
  225. package/dist/openrouter-video.js +63 -58
  226. package/dist/openrouter-video.js.map +1 -1
  227. package/dist/recorder.cjs +176 -95
  228. package/dist/recorder.cjs.map +1 -1
  229. package/dist/recorder.d.cts.map +1 -1
  230. package/dist/recorder.d.ts.map +1 -1
  231. package/dist/recorder.js +176 -95
  232. package/dist/recorder.js.map +1 -1
  233. package/dist/rerank.cjs +13 -11
  234. package/dist/rerank.cjs.map +1 -1
  235. package/dist/rerank.js +12 -10
  236. package/dist/rerank.js.map +1 -1
  237. package/dist/response/catalog/anthropic-page.cjs +39 -0
  238. package/dist/response/catalog/anthropic-page.cjs.map +1 -0
  239. package/dist/response/catalog/anthropic-page.js +38 -0
  240. package/dist/response/catalog/anthropic-page.js.map +1 -0
  241. package/dist/response/catalog/collect.cjs +61 -0
  242. package/dist/response/catalog/collect.cjs.map +1 -0
  243. package/dist/response/catalog/collect.js +59 -0
  244. package/dist/response/catalog/collect.js.map +1 -0
  245. package/dist/response/catalog/gemini-page.cjs +25 -0
  246. package/dist/response/catalog/gemini-page.cjs.map +1 -0
  247. package/dist/response/catalog/gemini-page.js +24 -0
  248. package/dist/response/catalog/gemini-page.js.map +1 -0
  249. package/dist/response/catalog/render.cjs +182 -0
  250. package/dist/response/catalog/render.cjs.map +1 -0
  251. package/dist/response/catalog/render.js +171 -0
  252. package/dist/response/catalog/render.js.map +1 -0
  253. package/dist/response/errors.cjs +225 -0
  254. package/dist/response/errors.cjs.map +1 -0
  255. package/dist/response/errors.js +224 -0
  256. package/dist/response/errors.js.map +1 -0
  257. package/dist/response/finish.cjs +39 -0
  258. package/dist/response/finish.cjs.map +1 -0
  259. package/dist/response/finish.js +35 -0
  260. package/dist/response/finish.js.map +1 -0
  261. package/dist/response/policy.cjs +126 -0
  262. package/dist/response/policy.cjs.map +1 -0
  263. package/dist/response/policy.js +120 -0
  264. package/dist/response/policy.js.map +1 -0
  265. package/dist/response/profiles.cjs +69 -0
  266. package/dist/response/profiles.cjs.map +1 -0
  267. package/dist/response/profiles.js +65 -0
  268. package/dist/response/profiles.js.map +1 -0
  269. package/dist/response/usage/codecs/anthropic.cjs +52 -0
  270. package/dist/response/usage/codecs/anthropic.cjs.map +1 -0
  271. package/dist/response/usage/codecs/anthropic.js +50 -0
  272. package/dist/response/usage/codecs/anthropic.js.map +1 -0
  273. package/dist/response/usage/codecs/cohere.cjs +36 -0
  274. package/dist/response/usage/codecs/cohere.cjs.map +1 -0
  275. package/dist/response/usage/codecs/cohere.js +35 -0
  276. package/dist/response/usage/codecs/cohere.js.map +1 -0
  277. package/dist/response/usage/codecs/converse.cjs +16 -0
  278. package/dist/response/usage/codecs/converse.cjs.map +1 -0
  279. package/dist/response/usage/codecs/converse.js +15 -0
  280. package/dist/response/usage/codecs/converse.js.map +1 -0
  281. package/dist/response/usage/codecs/gemini.cjs +31 -0
  282. package/dist/response/usage/codecs/gemini.cjs.map +1 -0
  283. package/dist/response/usage/codecs/gemini.js +31 -0
  284. package/dist/response/usage/codecs/gemini.js.map +1 -0
  285. package/dist/response/usage/codecs/interactions.cjs +22 -0
  286. package/dist/response/usage/codecs/interactions.cjs.map +1 -0
  287. package/dist/response/usage/codecs/interactions.js +21 -0
  288. package/dist/response/usage/codecs/interactions.js.map +1 -0
  289. package/dist/response/usage/codecs/ollama.cjs +17 -0
  290. package/dist/response/usage/codecs/ollama.cjs.map +1 -0
  291. package/dist/response/usage/codecs/ollama.js +17 -0
  292. package/dist/response/usage/codecs/ollama.js.map +1 -0
  293. package/dist/response/usage/codecs/openai.cjs +52 -0
  294. package/dist/response/usage/codecs/openai.cjs.map +1 -0
  295. package/dist/response/usage/codecs/openai.js +50 -0
  296. package/dist/response/usage/codecs/openai.js.map +1 -0
  297. package/dist/response/usage/codecs/openrouter.cjs +68 -0
  298. package/dist/response/usage/codecs/openrouter.cjs.map +1 -0
  299. package/dist/response/usage/codecs/openrouter.js +67 -0
  300. package/dist/response/usage/codecs/openrouter.js.map +1 -0
  301. package/dist/response/usage/codecs/realtime.cjs +19 -0
  302. package/dist/response/usage/codecs/realtime.cjs.map +1 -0
  303. package/dist/response/usage/codecs/realtime.js +18 -0
  304. package/dist/response/usage/codecs/realtime.js.map +1 -0
  305. package/dist/response/usage/codecs/responses.cjs +21 -0
  306. package/dist/response/usage/codecs/responses.cjs.map +1 -0
  307. package/dist/response/usage/codecs/responses.js +20 -0
  308. package/dist/response/usage/codecs/responses.js.map +1 -0
  309. package/dist/response/usage/estimate.cjs +23 -0
  310. package/dist/response/usage/estimate.cjs.map +1 -0
  311. package/dist/response/usage/estimate.js +21 -0
  312. package/dist/response/usage/estimate.js.map +1 -0
  313. package/dist/response/usage/fields.cjs +72 -0
  314. package/dist/response/usage/fields.cjs.map +1 -0
  315. package/dist/response/usage/fields.js +70 -0
  316. package/dist/response/usage/fields.js.map +1 -0
  317. package/dist/response/usage/recording.cjs +52 -0
  318. package/dist/response/usage/recording.cjs.map +1 -0
  319. package/dist/response/usage/recording.js +52 -0
  320. package/dist/response/usage/recording.js.map +1 -0
  321. package/dist/responses.cjs +45 -58
  322. package/dist/responses.cjs.map +1 -1
  323. package/dist/responses.d.cts.map +1 -1
  324. package/dist/responses.d.ts.map +1 -1
  325. package/dist/responses.js +44 -57
  326. package/dist/responses.js.map +1 -1
  327. package/dist/route-registry.cjs +45 -0
  328. package/dist/route-registry.cjs.map +1 -1
  329. package/dist/route-registry.d.cts.map +1 -1
  330. package/dist/route-registry.d.ts.map +1 -1
  331. package/dist/route-registry.js +41 -1
  332. package/dist/route-registry.js.map +1 -1
  333. package/dist/router.cjs +4 -0
  334. package/dist/router.cjs.map +1 -1
  335. package/dist/router.d.cts.map +1 -1
  336. package/dist/router.d.ts.map +1 -1
  337. package/dist/router.js +3 -0
  338. package/dist/router.js.map +1 -1
  339. package/dist/search.cjs +13 -11
  340. package/dist/search.cjs.map +1 -1
  341. package/dist/search.js +12 -10
  342. package/dist/search.js.map +1 -1
  343. package/dist/server.cjs +222 -146
  344. package/dist/server.cjs.map +1 -1
  345. package/dist/server.d.cts.map +1 -1
  346. package/dist/server.d.ts.map +1 -1
  347. package/dist/server.js +223 -147
  348. package/dist/server.js.map +1 -1
  349. package/dist/speech.cjs +20 -18
  350. package/dist/speech.cjs.map +1 -1
  351. package/dist/speech.d.cts.map +1 -1
  352. package/dist/speech.d.ts.map +1 -1
  353. package/dist/speech.js +19 -17
  354. package/dist/speech.js.map +1 -1
  355. package/dist/sse-writer.cjs +7 -0
  356. package/dist/sse-writer.cjs.map +1 -1
  357. package/dist/sse-writer.d.cts.map +1 -1
  358. package/dist/sse-writer.d.ts.map +1 -1
  359. package/dist/sse-writer.js +7 -1
  360. package/dist/sse-writer.js.map +1 -1
  361. package/dist/stream-collapse.cjs +118 -11
  362. package/dist/stream-collapse.cjs.map +1 -1
  363. package/dist/stream-collapse.d.cts +10 -9
  364. package/dist/stream-collapse.d.cts.map +1 -1
  365. package/dist/stream-collapse.d.ts +10 -9
  366. package/dist/stream-collapse.d.ts.map +1 -1
  367. package/dist/stream-collapse.js +118 -11
  368. package/dist/stream-collapse.js.map +1 -1
  369. package/dist/transcription.cjs +12 -10
  370. package/dist/transcription.cjs.map +1 -1
  371. package/dist/transcription.d.cts.map +1 -1
  372. package/dist/transcription.d.ts.map +1 -1
  373. package/dist/transcription.js +11 -9
  374. package/dist/transcription.js.map +1 -1
  375. package/dist/types.cjs.map +1 -1
  376. package/dist/types.d.cts +62 -3
  377. package/dist/types.d.cts.map +1 -1
  378. package/dist/types.d.ts +62 -3
  379. package/dist/types.d.ts.map +1 -1
  380. package/dist/types.js.map +1 -1
  381. package/dist/vector-mock.cjs +3 -8
  382. package/dist/vector-mock.cjs.map +1 -1
  383. package/dist/vector-mock.d.cts.map +1 -1
  384. package/dist/vector-mock.d.ts.map +1 -1
  385. package/dist/vector-mock.js +3 -8
  386. package/dist/vector-mock.js.map +1 -1
  387. package/dist/vector-stores.cjs +2 -4
  388. package/dist/vector-stores.cjs.map +1 -1
  389. package/dist/vector-stores.d.cts.map +1 -1
  390. package/dist/vector-stores.d.ts.map +1 -1
  391. package/dist/vector-stores.js +2 -4
  392. package/dist/vector-stores.js.map +1 -1
  393. package/dist/veo-video.cjs +16 -14
  394. package/dist/veo-video.cjs.map +1 -1
  395. package/dist/veo-video.js +10 -8
  396. package/dist/veo-video.js.map +1 -1
  397. package/dist/video.cjs +21 -19
  398. package/dist/video.cjs.map +1 -1
  399. package/dist/video.d.cts.map +1 -1
  400. package/dist/video.d.ts.map +1 -1
  401. package/dist/video.js +20 -18
  402. package/dist/video.js.map +1 -1
  403. package/dist/ws-gemini-live.cjs +11 -3
  404. package/dist/ws-gemini-live.cjs.map +1 -1
  405. package/dist/ws-gemini-live.d.cts +0 -1
  406. package/dist/ws-gemini-live.d.cts.map +1 -1
  407. package/dist/ws-gemini-live.d.ts +0 -1
  408. package/dist/ws-gemini-live.d.ts.map +1 -1
  409. package/dist/ws-gemini-live.js +10 -2
  410. package/dist/ws-gemini-live.js.map +1 -1
  411. package/dist/ws-live.cjs +6 -5
  412. package/dist/ws-live.cjs.map +1 -1
  413. package/dist/ws-live.js +5 -4
  414. package/dist/ws-live.js.map +1 -1
  415. package/dist/ws-realtime.cjs +28 -54
  416. package/dist/ws-realtime.cjs.map +1 -1
  417. package/dist/ws-realtime.d.cts.map +1 -1
  418. package/dist/ws-realtime.d.ts.map +1 -1
  419. package/dist/ws-realtime.js +25 -51
  420. package/dist/ws-realtime.js.map +1 -1
  421. package/dist/ws-responses.cjs +8 -6
  422. package/dist/ws-responses.cjs.map +1 -1
  423. package/dist/ws-responses.js +7 -5
  424. package/dist/ws-responses.js.map +1 -1
  425. package/package.json +4 -1
  426. package/skills/write-fixtures/SKILL.md +25 -16
@@ -1,4 +1,5 @@
1
1
  const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
+ const require_recording = require('./response/usage/recording.cjs');
2
3
  const require_harmony = require('./harmony.cjs');
3
4
  let node_zlib = require("node:zlib");
4
5
 
@@ -361,7 +362,15 @@ function collapseOpenAISSEWithResponsesTools(rawBody) {
361
362
  transcript = parsed.text;
362
363
  transcriptSeen = true;
363
364
  if (Array.isArray(parsed.languages)) transcriptLanguages = parsed.languages.filter((language) => typeof language === "object" && language !== null && typeof language.code === "string").map((language) => ({ code: language.code }));
364
- if (parsed.usage && typeof parsed.usage === "object" && !Array.isArray(parsed.usage) && Object.keys(parsed.usage).length > 0) transcriptUsage = parsed.usage;
365
+ transcriptUsage = require_recording.captureUsage({
366
+ provider: "openai",
367
+ contentType: "text/event-stream",
368
+ operation: "transcription",
369
+ family: "transcription",
370
+ stage: "stream",
371
+ previous: transcriptUsage,
372
+ observation: parsed
373
+ });
365
374
  continue;
366
375
  }
367
376
  if (parsed.type === "response.reasoning_summary_text.delta" && typeof parsed.delta === "string") {
@@ -548,7 +557,15 @@ function collapseOpenAISSEWithResponsesTools(rawBody) {
548
557
  continue;
549
558
  }
550
559
  if (typeof parsed.type === "string" && parsed.type.startsWith("response.")) continue;
551
- if (parsed.usage && typeof parsed.usage === "object" && !Array.isArray(parsed.usage) && Object.keys(parsed.usage).length > 0) usage = parsed.usage;
560
+ usage = require_recording.captureUsage({
561
+ provider: "openai",
562
+ contentType: "text/event-stream",
563
+ operation: "chat",
564
+ family: "openai",
565
+ stage: "stream",
566
+ previous: usage,
567
+ observation: parsed
568
+ });
552
569
  const choices = parsed.choices;
553
570
  if (!choices || choices.length === 0) continue;
554
571
  const delta = choices[0].delta;
@@ -664,6 +681,8 @@ function collapseOpenAISSEWithResponsesTools(rawBody) {
664
681
  }
665
682
  /**
666
683
  * Collapse Anthropic Claude Messages SSE stream into a single response.
684
+ * Captures start usage and numeric delta updates; null keeps the start value.
685
+ * Cache TTL objects are captured from message_start, alongside flat counts.
667
686
  *
668
687
  * Format:
669
688
  * event: message_start\ndata: {...}\n\n
@@ -672,6 +691,7 @@ function collapseOpenAISSEWithResponsesTools(rawBody) {
672
691
  function collapseAnthropicSSE(rawBody) {
673
692
  const inputTruncated = isCollapseInputTruncated(rawBody);
674
693
  const blocks = splitSSEEvents(guardCollapseBody(rawBody));
694
+ let usage;
675
695
  let content = "";
676
696
  let reasoning = "";
677
697
  let reasoningSignature;
@@ -697,6 +717,15 @@ function collapseAnthropicSSE(rawBody) {
697
717
  if (droppedChunks === 1) firstDroppedSample = `parse failed (${err instanceof Error ? err.message : "unknown"}): ${surrogateSafeSlice(payload, 200)}`;
698
718
  continue;
699
719
  }
720
+ usage = require_recording.captureUsage({
721
+ provider: "anthropic",
722
+ contentType: "text/event-stream",
723
+ operation: "chat",
724
+ family: "anthropic",
725
+ stage: "stream",
726
+ previous: usage,
727
+ observation: parsed
728
+ });
700
729
  if (eventType === "content_block_start") {
701
730
  const contentBlock = parsed.content_block;
702
731
  const redactedData = capturedRedactedData(contentBlock);
@@ -754,6 +783,7 @@ function collapseAnthropicSSE(rawBody) {
754
783
  ...tc.id ? { id: tc.id } : {}
755
784
  }));
756
785
  return {
786
+ ...usage ? { usage } : {},
757
787
  ...orderedBlocks ? { blocks: orderedBlocks } : {},
758
788
  ...content ? { content } : {},
759
789
  toolCalls: orderedBlocks ? orderedToolCalls : indexSortedToolCalls,
@@ -766,6 +796,7 @@ function collapseAnthropicSSE(rawBody) {
766
796
  };
767
797
  }
768
798
  return {
799
+ ...usage ? { usage } : {},
769
800
  content,
770
801
  ...reasoning ? { reasoning } : {},
771
802
  ...reasoningSignature ? { reasoningSignature } : {},
@@ -784,6 +815,7 @@ function collapseAnthropicSSE(rawBody) {
784
815
  function collapseGeminiSSE(rawBody) {
785
816
  const inputTruncated = isCollapseInputTruncated(rawBody);
786
817
  const lines = splitSSEEvents(guardCollapseBody(rawBody));
818
+ let usage;
787
819
  let content = "";
788
820
  let reasoning = "";
789
821
  let droppedChunks = 0;
@@ -804,6 +836,15 @@ function collapseGeminiSSE(rawBody) {
804
836
  if (droppedChunks === 1) firstDroppedSample = `parse failed (${err instanceof Error ? err.message : "unknown"}): ${surrogateSafeSlice(payload, 200)}`;
805
837
  continue;
806
838
  }
839
+ usage = require_recording.captureUsage({
840
+ provider: "gemini",
841
+ contentType: "text/event-stream",
842
+ operation: "chat",
843
+ family: "gemini",
844
+ stage: "stream",
845
+ previous: usage,
846
+ observation: parsed
847
+ });
807
848
  const candidates = parsed.candidates;
808
849
  if (!candidates || candidates.length === 0) continue;
809
850
  const candidateContent = candidates[0].content;
@@ -839,6 +880,7 @@ function collapseGeminiSSE(rawBody) {
839
880
  arguments: normalizeToolArguments(tc.arguments)
840
881
  }));
841
882
  if (audioB64) return {
883
+ ...usage ? { usage } : {},
842
884
  audioB64,
843
885
  audioMimeType,
844
886
  ...content ? { content } : {},
@@ -851,6 +893,7 @@ function collapseGeminiSSE(rawBody) {
851
893
  if (toolCalls.length > 0) {
852
894
  const blocks = buildOrderedBlocks(orderAtoms);
853
895
  return {
896
+ ...usage ? { usage } : {},
854
897
  ...blocks ? { blocks } : {},
855
898
  ...content ? { content } : {},
856
899
  toolCalls: normalizedToolCalls,
@@ -861,6 +904,7 @@ function collapseGeminiSSE(rawBody) {
861
904
  };
862
905
  }
863
906
  return {
907
+ ...usage ? { usage } : {},
864
908
  content,
865
909
  ...reasoning ? { reasoning } : {},
866
910
  ...droppedChunks > 0 ? { droppedChunks } : {},
@@ -885,6 +929,7 @@ function collapseGeminiSSE(rawBody) {
885
929
  function collapseOllamaNDJSON(rawBody) {
886
930
  const inputTruncated = isCollapseInputTruncated(rawBody);
887
931
  const lines = guardCollapseBody(rawBody).split("\n").filter((l) => l.trim().length > 0);
932
+ let usage;
888
933
  let content = "";
889
934
  let reasoning = "";
890
935
  let droppedChunks = 0;
@@ -902,6 +947,15 @@ function collapseOllamaNDJSON(rawBody) {
902
947
  if (droppedChunks === 1) firstDroppedSample = `parse failed (${err instanceof Error ? err.message : "unknown"}): ${surrogateSafeSlice(line.trim(), 200)}`;
903
948
  continue;
904
949
  }
950
+ usage = require_recording.captureUsage({
951
+ provider: "ollama",
952
+ contentType: "application/x-ndjson",
953
+ operation: "chat",
954
+ family: "ollama",
955
+ stage: "stream",
956
+ previous: usage,
957
+ observation: parsed
958
+ });
905
959
  const message = parsed.message;
906
960
  if (message) {
907
961
  if (typeof message.content === "string") {
@@ -951,6 +1005,7 @@ function collapseOllamaNDJSON(rawBody) {
951
1005
  arguments: normalizeToolArguments(tc.arguments)
952
1006
  }));
953
1007
  return {
1008
+ ...usage ? { usage } : {},
954
1009
  ...blocks ? { blocks } : {},
955
1010
  ...content ? { content } : {},
956
1011
  toolCalls: normalizedToolCalls,
@@ -963,6 +1018,7 @@ function collapseOllamaNDJSON(rawBody) {
963
1018
  };
964
1019
  }
965
1020
  return {
1021
+ ...usage ? { usage } : {},
966
1022
  content,
967
1023
  ...reasoning ? { reasoning } : {},
968
1024
  ...droppedChunks > 0 ? { droppedChunks } : {},
@@ -981,6 +1037,7 @@ function collapseOllamaNDJSON(rawBody) {
981
1037
  function collapseCohereSSE(rawBody) {
982
1038
  const inputTruncated = isCollapseInputTruncated(rawBody);
983
1039
  const blocks = splitSSEEvents(guardCollapseBody(rawBody));
1040
+ let usage;
984
1041
  let content = "";
985
1042
  let reasoning = "";
986
1043
  let droppedChunks = 0;
@@ -1004,6 +1061,15 @@ function collapseCohereSSE(rawBody) {
1004
1061
  if (droppedChunks === 1) firstDroppedSample = `parse failed (${err instanceof Error ? err.message : "unknown"}): ${surrogateSafeSlice(payload, 200)}`;
1005
1062
  continue;
1006
1063
  }
1064
+ usage = require_recording.captureUsage({
1065
+ provider: "cohere",
1066
+ contentType: "text/event-stream",
1067
+ operation: "chat",
1068
+ family: "cohere",
1069
+ stage: "stream",
1070
+ previous: usage,
1071
+ observation: parsed
1072
+ });
1007
1073
  if (eventType === "content-delta") {
1008
1074
  const contentObj = (parsed.delta?.message)?.content;
1009
1075
  if (contentObj && contentObj.type === "thinking" && typeof contentObj.thinking === "string") reasoning += contentObj.thinking;
@@ -1064,6 +1130,7 @@ function collapseCohereSSE(rawBody) {
1064
1130
  ...tc.id ? { id: tc.id } : {}
1065
1131
  }));
1066
1132
  return {
1133
+ ...usage ? { usage } : {},
1067
1134
  ...orderedBlocks ? { blocks: orderedBlocks } : {},
1068
1135
  ...content ? { content } : {},
1069
1136
  toolCalls: orderedBlocks ? orderedToolCalls : indexSortedToolCalls,
@@ -1074,6 +1141,7 @@ function collapseCohereSSE(rawBody) {
1074
1141
  };
1075
1142
  }
1076
1143
  return {
1144
+ ...usage ? { usage } : {},
1077
1145
  content,
1078
1146
  ...reasoning ? { reasoning } : {},
1079
1147
  ...droppedChunks > 0 ? { droppedChunks } : {},
@@ -1168,6 +1236,8 @@ function decodeEventStreamFrames(buf) {
1168
1236
  }
1169
1237
  /**
1170
1238
  * Collapse Bedrock binary Event Stream into a single response.
1239
+ * Claude invoke events preserve usage with the Anthropic start/delta rules;
1240
+ * Converse usage remains omitted.
1171
1241
  *
1172
1242
  * Each frame contains a JSON payload with event types like:
1173
1243
  * contentBlockDelta, contentBlockStart, etc.
@@ -1177,6 +1247,7 @@ function collapseBedrockEventStream(rawBody) {
1177
1247
  const inputTruncated = rawBody.byteLength > limit;
1178
1248
  const { frames, truncated: frameTruncated } = decodeEventStreamFrames(inputTruncated ? rawBody.subarray(0, limit) : rawBody);
1179
1249
  const truncated = frameTruncated || inputTruncated;
1250
+ let usage;
1180
1251
  let content = "";
1181
1252
  let reasoning = "";
1182
1253
  let reasoningSignature;
@@ -1205,6 +1276,15 @@ function collapseBedrockEventStream(rawBody) {
1205
1276
  if (droppedChunks === 1) firstDroppedSample = `parse failed (${err instanceof Error ? err.message : "unknown"}): ${surrogateSafeSlice(frameStr, 200)}`;
1206
1277
  continue;
1207
1278
  }
1279
+ usage = require_recording.captureUsage({
1280
+ provider: "bedrock",
1281
+ contentType: "application/vnd.amazon.eventstream",
1282
+ operation: "chat",
1283
+ family: typeof parsed.type === "string" ? "bedrock-invoke" : "bedrock-converse",
1284
+ stage: "stream",
1285
+ previous: usage,
1286
+ observation: parsed
1287
+ });
1208
1288
  if (parsed.type === "content_block_delta") {
1209
1289
  const delta = parsed.delta;
1210
1290
  if (delta?.type === "text_delta" && typeof delta.text === "string") {
@@ -1312,6 +1392,7 @@ function collapseBedrockEventStream(rawBody) {
1312
1392
  ...tc.id ? { id: tc.id } : {}
1313
1393
  }));
1314
1394
  return {
1395
+ ...usage ? { usage } : {},
1315
1396
  ...orderedBlocks ? { blocks: orderedBlocks } : {},
1316
1397
  ...content ? { content } : {},
1317
1398
  toolCalls: orderedBlocks ? orderedToolCalls : indexSortedToolCalls,
@@ -1324,6 +1405,7 @@ function collapseBedrockEventStream(rawBody) {
1324
1405
  };
1325
1406
  }
1326
1407
  return {
1408
+ ...usage ? { usage } : {},
1327
1409
  content,
1328
1410
  ...reasoning ? { reasoning } : {},
1329
1411
  ...reasoningSignature ? { reasoningSignature } : {},
@@ -1350,6 +1432,7 @@ function collapseBedrockEventStream(rawBody) {
1350
1432
  function collapseGeminiInteractionsSSE(rawBody) {
1351
1433
  const inputTruncated = isCollapseInputTruncated(rawBody);
1352
1434
  const lines = splitSSEEvents(guardCollapseBody(rawBody));
1435
+ let usage;
1353
1436
  let content = "";
1354
1437
  let reasoning = "";
1355
1438
  let droppedChunks = 0;
@@ -1369,6 +1452,15 @@ function collapseGeminiInteractionsSSE(rawBody) {
1369
1452
  if (droppedChunks === 1) firstDroppedSample = `parse failed (${err instanceof Error ? err.message : "unknown"}): ${surrogateSafeSlice(payload, 200)}`;
1370
1453
  continue;
1371
1454
  }
1455
+ usage = require_recording.captureUsage({
1456
+ provider: "gemini-interactions",
1457
+ contentType: "text/event-stream",
1458
+ operation: "chat",
1459
+ family: "interactions",
1460
+ stage: "stream",
1461
+ previous: usage,
1462
+ observation: parsed
1463
+ });
1372
1464
  const eventType = parsed.event_type;
1373
1465
  if (!eventType) continue;
1374
1466
  const index = typeof parsed.index === "number" ? parsed.index : void 0;
@@ -1426,6 +1518,7 @@ function collapseGeminiInteractionsSSE(rawBody) {
1426
1518
  });
1427
1519
  }
1428
1520
  if (toolCalls.length > 0) return {
1521
+ ...usage ? { usage } : {},
1429
1522
  ...content ? { content } : {},
1430
1523
  toolCalls,
1431
1524
  ...reasoning ? { reasoning } : {},
@@ -1434,6 +1527,7 @@ function collapseGeminiInteractionsSSE(rawBody) {
1434
1527
  ...inputTruncated ? { truncated: true } : {}
1435
1528
  };
1436
1529
  return {
1530
+ ...usage ? { usage } : {},
1437
1531
  content,
1438
1532
  ...reasoning ? { reasoning } : {},
1439
1533
  ...droppedChunks > 0 ? { droppedChunks } : {},
@@ -1459,24 +1553,37 @@ function collapseStreamingResponse(contentType, providerKey, body, logger) {
1459
1553
  */
1460
1554
  function collapseStreamingResponseWithResponsesTools(contentType, providerKey, body, logger) {
1461
1555
  const ct = contentType.toLowerCase();
1462
- if (ct.includes("application/vnd.amazon.eventstream")) return collapseBedrockEventStream(typeof body === "string" ? Buffer.from(body, "binary") : body);
1463
- if (ct.includes("application/x-ndjson")) return collapseOllamaNDJSON(typeof body === "string" ? body : body.toString("utf8"));
1556
+ const complete = (result) => {
1557
+ const usage = require_recording.captureUsage({
1558
+ provider: providerKey,
1559
+ contentType,
1560
+ family: "stream-dispatch",
1561
+ stage: "collapsed",
1562
+ observation: result
1563
+ });
1564
+ return usage ? {
1565
+ ...result,
1566
+ usage
1567
+ } : result;
1568
+ };
1569
+ if (ct.includes("application/vnd.amazon.eventstream")) return complete(collapseBedrockEventStream(typeof body === "string" ? Buffer.from(body, "binary") : body));
1570
+ if (ct.includes("application/x-ndjson")) return complete(collapseOllamaNDJSON(typeof body === "string" ? body : body.toString("utf8")));
1464
1571
  if (ct.includes("text/event-stream")) {
1465
1572
  const str = typeof body === "string" ? body : body.toString("utf8");
1466
1573
  switch (providerKey) {
1467
1574
  case "openai":
1468
1575
  case "azure":
1469
1576
  case "openrouter":
1470
- case "byteplus": return collapseOpenAISSEWithResponsesTools(str);
1471
- case "anthropic": return collapseAnthropicSSE(str);
1577
+ case "byteplus": return complete(collapseOpenAISSEWithResponsesTools(str));
1578
+ case "anthropic": return complete(collapseAnthropicSSE(str));
1472
1579
  case "gemini":
1473
- case "vertexai": return collapseGeminiSSE(str);
1474
- case "gemini-interactions": return collapseGeminiInteractionsSSE(str);
1475
- case "cohere": return collapseCohereSSE(str);
1476
- case "bedrock": return collapseAnthropicSSE(str);
1580
+ case "vertexai": return complete(collapseGeminiSSE(str));
1581
+ case "gemini-interactions": return complete(collapseGeminiInteractionsSSE(str));
1582
+ case "cohere": return complete(collapseCohereSSE(str));
1583
+ case "bedrock": return complete(collapseAnthropicSSE(str));
1477
1584
  default:
1478
1585
  logger?.warn(`[stream-collapse] unknown SSE provider "${providerKey}", falling back to OpenAI SSE format`);
1479
- return collapseOpenAISSEWithResponsesTools(str);
1586
+ return complete(collapseOpenAISSEWithResponsesTools(str));
1480
1587
  }
1481
1588
  }
1482
1589
  return null;