@copilotkit/aimock 1.16.3 → 1.17.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 (268) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +30 -0
  4. package/README.md +10 -10
  5. package/dist/a2a-mock.d.cts +2 -2
  6. package/dist/a2a-mock.d.cts.map +1 -1
  7. package/dist/a2a-mock.d.ts +2 -2
  8. package/dist/a2a-mock.d.ts.map +1 -1
  9. package/dist/a2a-mock.js +2 -2
  10. package/dist/a2a-mock.js.map +1 -1
  11. package/dist/agui-handler.cjs +120 -5
  12. package/dist/agui-handler.cjs.map +1 -1
  13. package/dist/agui-handler.d.cts +41 -5
  14. package/dist/agui-handler.d.cts.map +1 -1
  15. package/dist/agui-handler.d.ts +41 -5
  16. package/dist/agui-handler.d.ts.map +1 -1
  17. package/dist/agui-handler.js +114 -6
  18. package/dist/agui-handler.js.map +1 -1
  19. package/dist/agui-mock.cjs +18 -7
  20. package/dist/agui-mock.cjs.map +1 -1
  21. package/dist/agui-mock.d.cts +2 -2
  22. package/dist/agui-mock.d.cts.map +1 -1
  23. package/dist/agui-mock.d.ts +2 -2
  24. package/dist/agui-mock.d.ts.map +1 -1
  25. package/dist/agui-mock.js +20 -9
  26. package/dist/agui-mock.js.map +1 -1
  27. package/dist/agui-recorder.cjs +43 -22
  28. package/dist/agui-recorder.cjs.map +1 -1
  29. package/dist/agui-recorder.d.cts +4 -3
  30. package/dist/agui-recorder.d.cts.map +1 -1
  31. package/dist/agui-recorder.d.ts +4 -3
  32. package/dist/agui-recorder.d.ts.map +1 -1
  33. package/dist/agui-recorder.js +45 -24
  34. package/dist/agui-recorder.js.map +1 -1
  35. package/dist/agui-stub.cjs +28 -0
  36. package/dist/agui-stub.d.cts +5 -0
  37. package/dist/agui-stub.d.ts +5 -0
  38. package/dist/agui-stub.js +5 -0
  39. package/dist/agui-types.d.cts +33 -6
  40. package/dist/agui-types.d.cts.map +1 -1
  41. package/dist/agui-types.d.ts +33 -6
  42. package/dist/agui-types.d.ts.map +1 -1
  43. package/dist/aimock-cli.cjs +1 -1
  44. package/dist/aimock-cli.js +1 -1
  45. package/dist/aws-event-stream.d.cts +2 -2
  46. package/dist/aws-event-stream.d.cts.map +1 -1
  47. package/dist/aws-event-stream.d.ts +2 -2
  48. package/dist/aws-event-stream.d.ts.map +1 -1
  49. package/dist/bedrock-converse.d.cts +3 -3
  50. package/dist/bedrock-converse.d.cts.map +1 -1
  51. package/dist/bedrock-converse.d.ts +3 -3
  52. package/dist/bedrock-converse.d.ts.map +1 -1
  53. package/dist/bedrock.d.cts +3 -3
  54. package/dist/bedrock.d.cts.map +1 -1
  55. package/dist/bedrock.d.ts +3 -3
  56. package/dist/bedrock.d.ts.map +1 -1
  57. package/dist/chaos.d.cts +3 -3
  58. package/dist/chaos.d.cts.map +1 -1
  59. package/dist/chaos.d.ts +3 -3
  60. package/dist/chaos.d.ts.map +1 -1
  61. package/dist/cli.cjs +6 -5
  62. package/dist/cli.cjs.map +1 -1
  63. package/dist/cli.js +6 -5
  64. package/dist/cli.js.map +1 -1
  65. package/dist/cohere.d.cts +2 -2
  66. package/dist/cohere.d.cts.map +1 -1
  67. package/dist/cohere.d.ts +2 -2
  68. package/dist/cohere.d.ts.map +1 -1
  69. package/dist/config-loader.cjs +3 -3
  70. package/dist/config-loader.d.cts +1 -1
  71. package/dist/config-loader.d.cts.map +1 -1
  72. package/dist/config-loader.d.ts +1 -1
  73. package/dist/config-loader.js +2 -2
  74. package/dist/convert-vidaimock.cjs +1 -1
  75. package/dist/convert-vidaimock.js +1 -1
  76. package/dist/convert.cjs +1 -1
  77. package/dist/convert.js +1 -1
  78. package/dist/elevenlabs-audio.cjs +209 -0
  79. package/dist/elevenlabs-audio.cjs.map +1 -0
  80. package/dist/elevenlabs-audio.d.cts +11 -0
  81. package/dist/elevenlabs-audio.d.cts.map +1 -0
  82. package/dist/elevenlabs-audio.d.ts +11 -0
  83. package/dist/elevenlabs-audio.d.ts.map +1 -0
  84. package/dist/elevenlabs-audio.js +209 -0
  85. package/dist/elevenlabs-audio.js.map +1 -0
  86. package/dist/embeddings.d.cts +2 -2
  87. package/dist/embeddings.d.cts.map +1 -1
  88. package/dist/embeddings.d.ts +2 -2
  89. package/dist/embeddings.d.ts.map +1 -1
  90. package/dist/fal-audio.cjs +477 -0
  91. package/dist/fal-audio.cjs.map +1 -0
  92. package/dist/fal-audio.d.cts +10 -0
  93. package/dist/fal-audio.d.cts.map +1 -0
  94. package/dist/fal-audio.d.ts +10 -0
  95. package/dist/fal-audio.d.ts.map +1 -0
  96. package/dist/fal-audio.js +474 -0
  97. package/dist/fal-audio.js.map +1 -0
  98. package/dist/fixture-loader.cjs +14 -1
  99. package/dist/fixture-loader.cjs.map +1 -1
  100. package/dist/fixture-loader.js +14 -1
  101. package/dist/fixture-loader.js.map +1 -1
  102. package/dist/fixtures-remote.cjs +1 -1
  103. package/dist/fixtures-remote.js +1 -1
  104. package/dist/gemini-interactions.cjs +617 -0
  105. package/dist/gemini-interactions.cjs.map +1 -0
  106. package/dist/gemini-interactions.d.cts +46 -0
  107. package/dist/gemini-interactions.d.cts.map +1 -0
  108. package/dist/gemini-interactions.d.ts +46 -0
  109. package/dist/gemini-interactions.d.ts.map +1 -0
  110. package/dist/gemini-interactions.js +616 -0
  111. package/dist/gemini-interactions.js.map +1 -0
  112. package/dist/gemini.cjs +76 -0
  113. package/dist/gemini.cjs.map +1 -1
  114. package/dist/gemini.d.cts +2 -2
  115. package/dist/gemini.d.cts.map +1 -1
  116. package/dist/gemini.d.ts +2 -2
  117. package/dist/gemini.d.ts.map +1 -1
  118. package/dist/gemini.js +77 -1
  119. package/dist/gemini.js.map +1 -1
  120. package/dist/helpers.cjs +24 -1
  121. package/dist/helpers.cjs.map +1 -1
  122. package/dist/helpers.d.cts +13 -3
  123. package/dist/helpers.d.cts.map +1 -1
  124. package/dist/helpers.d.ts +13 -3
  125. package/dist/helpers.d.ts.map +1 -1
  126. package/dist/helpers.js +23 -2
  127. package/dist/helpers.js.map +1 -1
  128. package/dist/images.d.cts +2 -2
  129. package/dist/images.d.cts.map +1 -1
  130. package/dist/images.d.ts +2 -2
  131. package/dist/images.d.ts.map +1 -1
  132. package/dist/index.cjs +21 -4
  133. package/dist/index.d.cts +10 -7
  134. package/dist/index.d.ts +10 -7
  135. package/dist/index.js +10 -7
  136. package/dist/jest.cjs +1 -1
  137. package/dist/jest.js +1 -1
  138. package/dist/jsonrpc.d.cts +3 -3
  139. package/dist/jsonrpc.d.cts.map +1 -1
  140. package/dist/jsonrpc.d.ts +3 -3
  141. package/dist/jsonrpc.d.ts.map +1 -1
  142. package/dist/llmock.cjs +38 -2
  143. package/dist/llmock.cjs.map +1 -1
  144. package/dist/llmock.d.cts +4 -0
  145. package/dist/llmock.d.cts.map +1 -1
  146. package/dist/llmock.d.ts +4 -0
  147. package/dist/llmock.d.ts.map +1 -1
  148. package/dist/llmock.js +38 -2
  149. package/dist/llmock.js.map +1 -1
  150. package/dist/logger.cjs +5 -4
  151. package/dist/logger.cjs.map +1 -1
  152. package/dist/logger.d.cts +1 -1
  153. package/dist/logger.d.cts.map +1 -1
  154. package/dist/logger.d.ts +1 -1
  155. package/dist/logger.d.ts.map +1 -1
  156. package/dist/logger.js +5 -4
  157. package/dist/logger.js.map +1 -1
  158. package/dist/mcp-mock.d.cts +2 -2
  159. package/dist/mcp-mock.d.cts.map +1 -1
  160. package/dist/mcp-mock.d.ts +2 -2
  161. package/dist/mcp-mock.d.ts.map +1 -1
  162. package/dist/mcp-mock.js +2 -2
  163. package/dist/mcp-mock.js.map +1 -1
  164. package/dist/messages.d.cts +2 -2
  165. package/dist/messages.d.cts.map +1 -1
  166. package/dist/messages.d.ts +2 -2
  167. package/dist/messages.d.ts.map +1 -1
  168. package/dist/moderation.d.cts +3 -3
  169. package/dist/moderation.d.cts.map +1 -1
  170. package/dist/moderation.d.ts +3 -3
  171. package/dist/moderation.d.ts.map +1 -1
  172. package/dist/ndjson-writer.d.cts +2 -2
  173. package/dist/ndjson-writer.d.cts.map +1 -1
  174. package/dist/ndjson-writer.d.ts +2 -2
  175. package/dist/ndjson-writer.d.ts.map +1 -1
  176. package/dist/ollama.d.cts +3 -3
  177. package/dist/ollama.d.cts.map +1 -1
  178. package/dist/ollama.d.ts +3 -3
  179. package/dist/ollama.d.ts.map +1 -1
  180. package/dist/recorder.cjs +64 -21
  181. package/dist/recorder.cjs.map +1 -1
  182. package/dist/recorder.d.cts +2 -2
  183. package/dist/recorder.d.cts.map +1 -1
  184. package/dist/recorder.d.ts +2 -2
  185. package/dist/recorder.d.ts.map +1 -1
  186. package/dist/recorder.js +66 -23
  187. package/dist/recorder.js.map +1 -1
  188. package/dist/rerank.d.cts +3 -3
  189. package/dist/rerank.d.cts.map +1 -1
  190. package/dist/rerank.d.ts +3 -3
  191. package/dist/rerank.d.ts.map +1 -1
  192. package/dist/responses.d.cts +2 -2
  193. package/dist/responses.d.cts.map +1 -1
  194. package/dist/responses.d.ts +2 -2
  195. package/dist/responses.d.ts.map +1 -1
  196. package/dist/router.cjs +3 -3
  197. package/dist/router.cjs.map +1 -1
  198. package/dist/router.js +3 -3
  199. package/dist/router.js.map +1 -1
  200. package/dist/search.d.cts +3 -3
  201. package/dist/search.d.cts.map +1 -1
  202. package/dist/search.d.ts +3 -3
  203. package/dist/search.d.ts.map +1 -1
  204. package/dist/server.cjs +170 -1
  205. package/dist/server.cjs.map +1 -1
  206. package/dist/server.d.cts +2 -2
  207. package/dist/server.d.cts.map +1 -1
  208. package/dist/server.d.ts +2 -2
  209. package/dist/server.d.ts.map +1 -1
  210. package/dist/server.js +173 -4
  211. package/dist/server.js.map +1 -1
  212. package/dist/speech.cjs +18 -9
  213. package/dist/speech.cjs.map +1 -1
  214. package/dist/speech.d.cts +2 -2
  215. package/dist/speech.d.cts.map +1 -1
  216. package/dist/speech.d.ts +2 -2
  217. package/dist/speech.d.ts.map +1 -1
  218. package/dist/speech.js +18 -9
  219. package/dist/speech.js.map +1 -1
  220. package/dist/sse-writer.d.cts +3 -3
  221. package/dist/sse-writer.d.cts.map +1 -1
  222. package/dist/sse-writer.d.ts +3 -3
  223. package/dist/sse-writer.d.ts.map +1 -1
  224. package/dist/stream-collapse.cjs +80 -9
  225. package/dist/stream-collapse.cjs.map +1 -1
  226. package/dist/stream-collapse.d.cts +11 -1
  227. package/dist/stream-collapse.d.cts.map +1 -1
  228. package/dist/stream-collapse.d.ts +11 -1
  229. package/dist/stream-collapse.d.ts.map +1 -1
  230. package/dist/stream-collapse.js +80 -10
  231. package/dist/stream-collapse.js.map +1 -1
  232. package/dist/suite.cjs +1 -1
  233. package/dist/suite.d.cts +2 -2
  234. package/dist/suite.d.ts +2 -2
  235. package/dist/suite.js +1 -1
  236. package/dist/transcription.d.cts +2 -2
  237. package/dist/transcription.d.cts.map +1 -1
  238. package/dist/transcription.d.ts +2 -2
  239. package/dist/transcription.d.ts.map +1 -1
  240. package/dist/types.d.cts +10 -7
  241. package/dist/types.d.cts.map +1 -1
  242. package/dist/types.d.ts +10 -7
  243. package/dist/types.d.ts.map +1 -1
  244. package/dist/vector-mock.d.cts +2 -2
  245. package/dist/vector-mock.d.cts.map +1 -1
  246. package/dist/vector-mock.d.ts +2 -2
  247. package/dist/vector-mock.d.ts.map +1 -1
  248. package/dist/vector-mock.js +2 -2
  249. package/dist/vector-mock.js.map +1 -1
  250. package/dist/vector-types.d.ts.map +1 -1
  251. package/dist/video.d.cts +3 -3
  252. package/dist/video.d.cts.map +1 -1
  253. package/dist/video.d.ts +3 -3
  254. package/dist/video.d.ts.map +1 -1
  255. package/dist/vitest.cjs +1 -1
  256. package/dist/vitest.js +1 -1
  257. package/dist/ws-framing.d.cts +2 -2
  258. package/dist/ws-framing.d.cts.map +1 -1
  259. package/dist/ws-framing.d.ts +2 -2
  260. package/dist/ws-framing.d.ts.map +1 -1
  261. package/dist/ws-gemini-live.cjs +145 -2
  262. package/dist/ws-gemini-live.cjs.map +1 -1
  263. package/dist/ws-gemini-live.d.cts.map +1 -1
  264. package/dist/ws-gemini-live.d.ts.map +1 -1
  265. package/dist/ws-gemini-live.js +146 -3
  266. package/dist/ws-gemini-live.js.map +1 -1
  267. package/package.json +16 -2
  268. package/skills/write-fixtures/SKILL.md +10 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-audio.cjs","names":["getTestId","matchFixture","proxyAndRecord","isErrorResponse","isTextResponse","isAudioResponse","FORMAT_TO_CONTENT_TYPE"],"sources":["../src/elevenlabs-audio.ts"],"sourcesContent":["import type http from \"node:http\";\nimport type { ChatCompletionRequest, Fixture, HandlerDefaults } from \"./types.js\";\nimport {\n isAudioResponse,\n isTextResponse,\n isErrorResponse,\n FORMAT_TO_CONTENT_TYPE,\n getTestId,\n} from \"./helpers.js\";\nimport { matchFixture } from \"./router.js\";\nimport { writeErrorResponse } from \"./sse-writer.js\";\nimport { proxyAndRecord } from \"./recorder.js\";\nimport type { Journal } from \"./journal.js\";\n\nexport async function handleElevenLabsAudio(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n body: string,\n fixtures: Fixture[],\n defaults: HandlerDefaults,\n journal: Journal,\n subType: string, // \"sound-generation\" | \"music\" | \"stream\" | \"plan\"\n): Promise<void> {\n const path = req.url ?? \"/v1/sound-generation\";\n const method = req.method ?? \"POST\";\n\n // Parse JSON body\n let parsed: Record<string, unknown>;\n try {\n parsed = JSON.parse(body) as Record<string, unknown>;\n } catch {\n journal.add({\n method,\n path,\n headers: {},\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: { message: \"Malformed JSON\", type: \"invalid_request_error\", code: \"invalid_json\" },\n }),\n );\n return;\n }\n\n // Extract prompt text based on subType\n let promptText: string | undefined;\n if (subType === \"sound-generation\") {\n if (typeof parsed.text === \"string\" && parsed.text) {\n promptText = parsed.text;\n }\n } else {\n // music, music-stream, music-plan all use \"prompt\" (or composition_plan fallback)\n if (typeof parsed.prompt === \"string\" && parsed.prompt) {\n promptText = parsed.prompt;\n } else if (parsed.composition_plan != null) {\n promptText =\n typeof parsed.composition_plan === \"string\"\n ? parsed.composition_plan\n : JSON.stringify(parsed.composition_plan);\n }\n }\n\n // Build synthetic ChatCompletionRequest for fixture matching (needed for journal even on validation failure)\n const syntheticReq: ChatCompletionRequest = {\n model:\n (parsed.model_id as string) ??\n (subType === \"sound-generation\" ? \"eleven_text_to_sound_v2\" : \"music_v1\"),\n messages: [{ role: \"user\", content: promptText ?? \"\" }],\n _endpointType: \"audio-gen\",\n };\n\n // Validate required field\n if (!promptText) {\n const field = subType === \"sound-generation\" ? \"text\" : \"prompt\";\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: `Missing required parameter: '${field}'`,\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n // Match fixture\n const testId = getTestId(req);\n const matchCounts = journal.getFixtureMatchCountsForTest(testId);\n const fixture = matchFixture(fixtures, syntheticReq, matchCounts, defaults.requestTransform);\n\n if (fixture) {\n journal.incrementFixtureMatchCount(fixture, fixtures, testId);\n }\n\n // No fixture match\n if (!fixture) {\n if (defaults.record) {\n const proxied = await proxyAndRecord(\n req,\n res,\n syntheticReq,\n \"elevenlabs\",\n req.url ?? \"/v1/sound-generation\",\n fixtures,\n defaults,\n body,\n );\n if (proxied) {\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: res.statusCode ?? 200, fixture: null },\n });\n return;\n }\n }\n\n const strictStatus = defaults.strict ? 503 : 404;\n const strictMessage = defaults.strict\n ? \"Strict mode: no fixture matched\"\n : \"No fixture matched\";\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: strictStatus, fixture: null },\n });\n writeErrorResponse(\n res,\n strictStatus,\n JSON.stringify({\n error: { message: strictMessage, type: \"invalid_request_error\", code: \"no_fixture_match\" },\n }),\n );\n return;\n }\n\n const response = fixture.response;\n\n // Error fixture\n if (isErrorResponse(response)) {\n const status = response.status ?? 500;\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status, fixture },\n });\n writeErrorResponse(res, status, JSON.stringify(response));\n return;\n }\n\n // plan returns JSON text, not audio\n if (subType === \"plan\") {\n if (!isTextResponse(response)) {\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 500, fixture },\n });\n writeErrorResponse(\n res,\n 500,\n JSON.stringify({\n error: {\n message: \"Fixture response is not a text type for plan endpoint\",\n type: \"server_error\",\n },\n }),\n );\n return;\n }\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 200, fixture },\n });\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(response.content);\n return;\n }\n\n // All other subTypes expect audio\n if (!isAudioResponse(response)) {\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 500, fixture },\n });\n writeErrorResponse(\n res,\n 500,\n JSON.stringify({\n error: { message: \"Fixture response is not an audio type\", type: \"server_error\" },\n }),\n );\n return;\n }\n\n // Decode audio bytes and determine content type\n let audioBytes: Buffer;\n let contentType: string;\n\n if (typeof response.audio === \"string\") {\n audioBytes = Buffer.from(response.audio, \"base64\");\n const format = response.format ?? \"mp3\";\n contentType = FORMAT_TO_CONTENT_TYPE[format] ?? \"audio/mpeg\";\n } else {\n audioBytes = Buffer.from(response.audio.b64Json, \"base64\");\n contentType = response.audio.contentType ?? \"audio/mpeg\";\n }\n\n // Music endpoints get a song-id header\n if (subType === \"music\" || subType === \"stream\") {\n res.setHeader(\"song-id\", \"mock-song-\" + Date.now());\n }\n\n // Stream uses chunked transfer encoding\n if (subType === \"stream\") {\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 200, fixture },\n });\n res.writeHead(200, {\n \"Content-Type\": contentType,\n \"Transfer-Encoding\": \"chunked\",\n });\n res.end(audioBytes);\n return;\n }\n\n // Standard binary response for sound-generation and music\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 200, fixture },\n });\n res.writeHead(200, { \"Content-Type\": contentType });\n res.end(audioBytes);\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Journal } from "./journal.cjs";
2
+ import { Fixture, HandlerDefaults } from "./types.cjs";
3
+ import http from "node:http";
4
+
5
+ //#region src/elevenlabs-audio.d.ts
6
+ declare function handleElevenLabsAudio(req: http.IncomingMessage, res: http.ServerResponse, body: string, fixtures: Fixture[], defaults: HandlerDefaults, journal: Journal, subType: string): Promise<void>;
7
+ //# sourceMappingURL=elevenlabs-audio.d.ts.map
8
+
9
+ //#endregion
10
+ export { handleElevenLabsAudio };
11
+ //# sourceMappingURL=elevenlabs-audio.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-audio.d.cts","names":[],"sources":["../src/elevenlabs-audio.ts"],"sourcesContent":[],"mappings":";;;;;iBAcsB,qBAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wCAEA,qBACA,0BACD,2BAER"}
@@ -0,0 +1,11 @@
1
+ import { Journal } from "./journal.js";
2
+ import { Fixture, HandlerDefaults } from "./types.js";
3
+ import http from "node:http";
4
+
5
+ //#region src/elevenlabs-audio.d.ts
6
+ declare function handleElevenLabsAudio(req: http.IncomingMessage, res: http.ServerResponse, body: string, fixtures: Fixture[], defaults: HandlerDefaults, journal: Journal, subType: string): Promise<void>;
7
+ //# sourceMappingURL=elevenlabs-audio.d.ts.map
8
+
9
+ //#endregion
10
+ export { handleElevenLabsAudio };
11
+ //# sourceMappingURL=elevenlabs-audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-audio.d.ts","names":[],"sources":["../src/elevenlabs-audio.ts"],"sourcesContent":[],"mappings":";;;;;iBAcsB,qBAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wCAEA,qBACA,0BACD,2BAER"}
@@ -0,0 +1,209 @@
1
+ import { FORMAT_TO_CONTENT_TYPE, getTestId, isAudioResponse, isErrorResponse, isTextResponse } from "./helpers.js";
2
+ import { matchFixture } from "./router.js";
3
+ import { writeErrorResponse } from "./sse-writer.js";
4
+ import { proxyAndRecord } from "./recorder.js";
5
+
6
+ //#region src/elevenlabs-audio.ts
7
+ async function handleElevenLabsAudio(req, res, body, fixtures, defaults, journal, subType) {
8
+ const path = req.url ?? "/v1/sound-generation";
9
+ const method = req.method ?? "POST";
10
+ let parsed;
11
+ try {
12
+ parsed = JSON.parse(body);
13
+ } catch {
14
+ journal.add({
15
+ method,
16
+ path,
17
+ headers: {},
18
+ body: null,
19
+ response: {
20
+ status: 400,
21
+ fixture: null
22
+ }
23
+ });
24
+ writeErrorResponse(res, 400, JSON.stringify({ error: {
25
+ message: "Malformed JSON",
26
+ type: "invalid_request_error",
27
+ code: "invalid_json"
28
+ } }));
29
+ return;
30
+ }
31
+ let promptText;
32
+ if (subType === "sound-generation") {
33
+ if (typeof parsed.text === "string" && parsed.text) promptText = parsed.text;
34
+ } else if (typeof parsed.prompt === "string" && parsed.prompt) promptText = parsed.prompt;
35
+ else if (parsed.composition_plan != null) promptText = typeof parsed.composition_plan === "string" ? parsed.composition_plan : JSON.stringify(parsed.composition_plan);
36
+ const syntheticReq = {
37
+ model: parsed.model_id ?? (subType === "sound-generation" ? "eleven_text_to_sound_v2" : "music_v1"),
38
+ messages: [{
39
+ role: "user",
40
+ content: promptText ?? ""
41
+ }],
42
+ _endpointType: "audio-gen"
43
+ };
44
+ if (!promptText) {
45
+ const field = subType === "sound-generation" ? "text" : "prompt";
46
+ journal.add({
47
+ method,
48
+ path,
49
+ headers: {},
50
+ body: syntheticReq,
51
+ response: {
52
+ status: 400,
53
+ fixture: null
54
+ }
55
+ });
56
+ writeErrorResponse(res, 400, JSON.stringify({ error: {
57
+ message: `Missing required parameter: '${field}'`,
58
+ type: "invalid_request_error"
59
+ } }));
60
+ return;
61
+ }
62
+ const testId = getTestId(req);
63
+ const fixture = matchFixture(fixtures, syntheticReq, journal.getFixtureMatchCountsForTest(testId), defaults.requestTransform);
64
+ if (fixture) journal.incrementFixtureMatchCount(fixture, fixtures, testId);
65
+ if (!fixture) {
66
+ if (defaults.record) {
67
+ if (await proxyAndRecord(req, res, syntheticReq, "elevenlabs", req.url ?? "/v1/sound-generation", fixtures, defaults, body)) {
68
+ journal.add({
69
+ method,
70
+ path,
71
+ headers: {},
72
+ body: syntheticReq,
73
+ response: {
74
+ status: res.statusCode ?? 200,
75
+ fixture: null
76
+ }
77
+ });
78
+ return;
79
+ }
80
+ }
81
+ const strictStatus = defaults.strict ? 503 : 404;
82
+ const strictMessage = defaults.strict ? "Strict mode: no fixture matched" : "No fixture matched";
83
+ journal.add({
84
+ method,
85
+ path,
86
+ headers: {},
87
+ body: syntheticReq,
88
+ response: {
89
+ status: strictStatus,
90
+ fixture: null
91
+ }
92
+ });
93
+ writeErrorResponse(res, strictStatus, JSON.stringify({ error: {
94
+ message: strictMessage,
95
+ type: "invalid_request_error",
96
+ code: "no_fixture_match"
97
+ } }));
98
+ return;
99
+ }
100
+ const response = fixture.response;
101
+ if (isErrorResponse(response)) {
102
+ const status = response.status ?? 500;
103
+ journal.add({
104
+ method,
105
+ path,
106
+ headers: {},
107
+ body: syntheticReq,
108
+ response: {
109
+ status,
110
+ fixture
111
+ }
112
+ });
113
+ writeErrorResponse(res, status, JSON.stringify(response));
114
+ return;
115
+ }
116
+ if (subType === "plan") {
117
+ if (!isTextResponse(response)) {
118
+ journal.add({
119
+ method,
120
+ path,
121
+ headers: {},
122
+ body: syntheticReq,
123
+ response: {
124
+ status: 500,
125
+ fixture
126
+ }
127
+ });
128
+ writeErrorResponse(res, 500, JSON.stringify({ error: {
129
+ message: "Fixture response is not a text type for plan endpoint",
130
+ type: "server_error"
131
+ } }));
132
+ return;
133
+ }
134
+ journal.add({
135
+ method,
136
+ path,
137
+ headers: {},
138
+ body: syntheticReq,
139
+ response: {
140
+ status: 200,
141
+ fixture
142
+ }
143
+ });
144
+ res.writeHead(200, { "Content-Type": "application/json" });
145
+ res.end(response.content);
146
+ return;
147
+ }
148
+ if (!isAudioResponse(response)) {
149
+ journal.add({
150
+ method,
151
+ path,
152
+ headers: {},
153
+ body: syntheticReq,
154
+ response: {
155
+ status: 500,
156
+ fixture
157
+ }
158
+ });
159
+ writeErrorResponse(res, 500, JSON.stringify({ error: {
160
+ message: "Fixture response is not an audio type",
161
+ type: "server_error"
162
+ } }));
163
+ return;
164
+ }
165
+ let audioBytes;
166
+ let contentType;
167
+ if (typeof response.audio === "string") {
168
+ audioBytes = Buffer.from(response.audio, "base64");
169
+ contentType = FORMAT_TO_CONTENT_TYPE[response.format ?? "mp3"] ?? "audio/mpeg";
170
+ } else {
171
+ audioBytes = Buffer.from(response.audio.b64Json, "base64");
172
+ contentType = response.audio.contentType ?? "audio/mpeg";
173
+ }
174
+ if (subType === "music" || subType === "stream") res.setHeader("song-id", "mock-song-" + Date.now());
175
+ if (subType === "stream") {
176
+ journal.add({
177
+ method,
178
+ path,
179
+ headers: {},
180
+ body: syntheticReq,
181
+ response: {
182
+ status: 200,
183
+ fixture
184
+ }
185
+ });
186
+ res.writeHead(200, {
187
+ "Content-Type": contentType,
188
+ "Transfer-Encoding": "chunked"
189
+ });
190
+ res.end(audioBytes);
191
+ return;
192
+ }
193
+ journal.add({
194
+ method,
195
+ path,
196
+ headers: {},
197
+ body: syntheticReq,
198
+ response: {
199
+ status: 200,
200
+ fixture
201
+ }
202
+ });
203
+ res.writeHead(200, { "Content-Type": contentType });
204
+ res.end(audioBytes);
205
+ }
206
+
207
+ //#endregion
208
+ export { handleElevenLabsAudio };
209
+ //# sourceMappingURL=elevenlabs-audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs-audio.js","names":[],"sources":["../src/elevenlabs-audio.ts"],"sourcesContent":["import type http from \"node:http\";\nimport type { ChatCompletionRequest, Fixture, HandlerDefaults } from \"./types.js\";\nimport {\n isAudioResponse,\n isTextResponse,\n isErrorResponse,\n FORMAT_TO_CONTENT_TYPE,\n getTestId,\n} from \"./helpers.js\";\nimport { matchFixture } from \"./router.js\";\nimport { writeErrorResponse } from \"./sse-writer.js\";\nimport { proxyAndRecord } from \"./recorder.js\";\nimport type { Journal } from \"./journal.js\";\n\nexport async function handleElevenLabsAudio(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n body: string,\n fixtures: Fixture[],\n defaults: HandlerDefaults,\n journal: Journal,\n subType: string, // \"sound-generation\" | \"music\" | \"stream\" | \"plan\"\n): Promise<void> {\n const path = req.url ?? \"/v1/sound-generation\";\n const method = req.method ?? \"POST\";\n\n // Parse JSON body\n let parsed: Record<string, unknown>;\n try {\n parsed = JSON.parse(body) as Record<string, unknown>;\n } catch {\n journal.add({\n method,\n path,\n headers: {},\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: { message: \"Malformed JSON\", type: \"invalid_request_error\", code: \"invalid_json\" },\n }),\n );\n return;\n }\n\n // Extract prompt text based on subType\n let promptText: string | undefined;\n if (subType === \"sound-generation\") {\n if (typeof parsed.text === \"string\" && parsed.text) {\n promptText = parsed.text;\n }\n } else {\n // music, music-stream, music-plan all use \"prompt\" (or composition_plan fallback)\n if (typeof parsed.prompt === \"string\" && parsed.prompt) {\n promptText = parsed.prompt;\n } else if (parsed.composition_plan != null) {\n promptText =\n typeof parsed.composition_plan === \"string\"\n ? parsed.composition_plan\n : JSON.stringify(parsed.composition_plan);\n }\n }\n\n // Build synthetic ChatCompletionRequest for fixture matching (needed for journal even on validation failure)\n const syntheticReq: ChatCompletionRequest = {\n model:\n (parsed.model_id as string) ??\n (subType === \"sound-generation\" ? \"eleven_text_to_sound_v2\" : \"music_v1\"),\n messages: [{ role: \"user\", content: promptText ?? \"\" }],\n _endpointType: \"audio-gen\",\n };\n\n // Validate required field\n if (!promptText) {\n const field = subType === \"sound-generation\" ? \"text\" : \"prompt\";\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: `Missing required parameter: '${field}'`,\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n // Match fixture\n const testId = getTestId(req);\n const matchCounts = journal.getFixtureMatchCountsForTest(testId);\n const fixture = matchFixture(fixtures, syntheticReq, matchCounts, defaults.requestTransform);\n\n if (fixture) {\n journal.incrementFixtureMatchCount(fixture, fixtures, testId);\n }\n\n // No fixture match\n if (!fixture) {\n if (defaults.record) {\n const proxied = await proxyAndRecord(\n req,\n res,\n syntheticReq,\n \"elevenlabs\",\n req.url ?? \"/v1/sound-generation\",\n fixtures,\n defaults,\n body,\n );\n if (proxied) {\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: res.statusCode ?? 200, fixture: null },\n });\n return;\n }\n }\n\n const strictStatus = defaults.strict ? 503 : 404;\n const strictMessage = defaults.strict\n ? \"Strict mode: no fixture matched\"\n : \"No fixture matched\";\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: strictStatus, fixture: null },\n });\n writeErrorResponse(\n res,\n strictStatus,\n JSON.stringify({\n error: { message: strictMessage, type: \"invalid_request_error\", code: \"no_fixture_match\" },\n }),\n );\n return;\n }\n\n const response = fixture.response;\n\n // Error fixture\n if (isErrorResponse(response)) {\n const status = response.status ?? 500;\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status, fixture },\n });\n writeErrorResponse(res, status, JSON.stringify(response));\n return;\n }\n\n // plan returns JSON text, not audio\n if (subType === \"plan\") {\n if (!isTextResponse(response)) {\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 500, fixture },\n });\n writeErrorResponse(\n res,\n 500,\n JSON.stringify({\n error: {\n message: \"Fixture response is not a text type for plan endpoint\",\n type: \"server_error\",\n },\n }),\n );\n return;\n }\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 200, fixture },\n });\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(response.content);\n return;\n }\n\n // All other subTypes expect audio\n if (!isAudioResponse(response)) {\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 500, fixture },\n });\n writeErrorResponse(\n res,\n 500,\n JSON.stringify({\n error: { message: \"Fixture response is not an audio type\", type: \"server_error\" },\n }),\n );\n return;\n }\n\n // Decode audio bytes and determine content type\n let audioBytes: Buffer;\n let contentType: string;\n\n if (typeof response.audio === \"string\") {\n audioBytes = Buffer.from(response.audio, \"base64\");\n const format = response.format ?? \"mp3\";\n contentType = FORMAT_TO_CONTENT_TYPE[format] ?? \"audio/mpeg\";\n } else {\n audioBytes = Buffer.from(response.audio.b64Json, \"base64\");\n contentType = response.audio.contentType ?? \"audio/mpeg\";\n }\n\n // Music endpoints get a song-id header\n if (subType === \"music\" || subType === \"stream\") {\n res.setHeader(\"song-id\", \"mock-song-\" + Date.now());\n }\n\n // Stream uses chunked transfer encoding\n if (subType === \"stream\") {\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 200, fixture },\n });\n res.writeHead(200, {\n \"Content-Type\": contentType,\n \"Transfer-Encoding\": \"chunked\",\n });\n res.end(audioBytes);\n return;\n }\n\n // Standard binary response for sound-generation and music\n journal.add({\n method,\n path,\n headers: {},\n body: syntheticReq,\n response: { status: 200, fixture },\n });\n res.writeHead(200, { \"Content-Type\": contentType });\n res.end(audioBytes);\n}\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { Journal } from "./journal.cjs";
2
2
  import { Fixture, HandlerDefaults, RecordProviderKey } from "./types.cjs";
3
- import * as http from "node:http";
3
+ import * as http$1 from "node:http";
4
4
 
5
5
  //#region src/embeddings.d.ts
6
6
 
7
- declare function handleEmbeddings(req: http.IncomingMessage, res: http.ServerResponse, raw: string, fixtures: Fixture[], journal: Journal, defaults: HandlerDefaults, setCorsHeaders: (res: http.ServerResponse) => void, providerKey?: RecordProviderKey): Promise<void>;
7
+ declare function handleEmbeddings(req: http$1.IncomingMessage, res: http$1.ServerResponse, raw: string, fixtures: Fixture[], journal: Journal, defaults: HandlerDefaults, setCorsHeaders: (res: http$1.ServerResponse) => void, providerKey?: RecordProviderKey): Promise<void>;
8
8
  //# sourceMappingURL=embeddings.d.ts.map
9
9
 
10
10
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.d.cts","names":[],"sources":["../src/embeddings.ts"],"sourcesContent":[],"mappings":";;;;;;AA8CW,iBALW,gBAAA,CAKX,GAAA,EAJJ,IAAA,CAAK,eAID,EAAA,GAAA,EAHJ,IAAA,CAAK,cAGD,EAAA,GAAA,EAAA,MAAA,EAAA,QAAA,EADC,OACD,EAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EACC,eADD,EAAA,cAAA,EAAA,CAAA,GAAA,EAEa,IAAA,CAAK,cAFlB,EAAA,GAAA,IAAA,EAAA,WAAA,CAAA,EAGI,iBAHJ,CAAA,EAIR,OAJQ,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"embeddings.d.cts","names":[],"sources":["../src/embeddings.ts"],"sourcesContent":[],"mappings":";;;;;;AA8CW,iBALW,gBAAA,CAKX,GAAA,EAJJ,MAAA,CAAK,eAID,EAAA,GAAA,EAHJ,MAAA,CAAK,cAGD,EAAA,GAAA,EAAA,MAAA,EAAA,QAAA,EADC,OACD,EAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EACC,eADD,EAAA,cAAA,EAAA,CAAA,GAAA,EAEa,MAAA,CAAK,cAFlB,EAAA,GAAA,IAAA,EAAA,WAAA,CAAA,EAGI,iBAHJ,CAAA,EAIR,OAJQ,CAAA,IAAA,CAAA"}
@@ -1,10 +1,10 @@
1
1
  import { Journal } from "./journal.js";
2
2
  import { Fixture, HandlerDefaults, RecordProviderKey } from "./types.js";
3
- import * as http from "node:http";
3
+ import * as http$1 from "node:http";
4
4
 
5
5
  //#region src/embeddings.d.ts
6
6
 
7
- declare function handleEmbeddings(req: http.IncomingMessage, res: http.ServerResponse, raw: string, fixtures: Fixture[], journal: Journal, defaults: HandlerDefaults, setCorsHeaders: (res: http.ServerResponse) => void, providerKey?: RecordProviderKey): Promise<void>;
7
+ declare function handleEmbeddings(req: http$1.IncomingMessage, res: http$1.ServerResponse, raw: string, fixtures: Fixture[], journal: Journal, defaults: HandlerDefaults, setCorsHeaders: (res: http$1.ServerResponse) => void, providerKey?: RecordProviderKey): Promise<void>;
8
8
  //# sourceMappingURL=embeddings.d.ts.map
9
9
 
10
10
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.d.ts","names":[],"sources":["../src/embeddings.ts"],"sourcesContent":[],"mappings":";;;;;;AA8CW,iBALW,gBAAA,CAKX,GAAA,EAJJ,IAAA,CAAK,eAID,EAAA,GAAA,EAHJ,IAAA,CAAK,cAGD,EAAA,GAAA,EAAA,MAAA,EAAA,QAAA,EADC,OACD,EAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EACC,eADD,EAAA,cAAA,EAAA,CAAA,GAAA,EAEa,IAAA,CAAK,cAFlB,EAAA,GAAA,IAAA,EAAA,WAAA,CAAA,EAGI,iBAHJ,CAAA,EAIR,OAJQ,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"embeddings.d.ts","names":[],"sources":["../src/embeddings.ts"],"sourcesContent":[],"mappings":";;;;;;AA8CW,iBALW,gBAAA,CAKX,GAAA,EAJJ,MAAA,CAAK,eAID,EAAA,GAAA,EAHJ,MAAA,CAAK,cAGD,EAAA,GAAA,EAAA,MAAA,EAAA,QAAA,EADC,OACD,EAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EACC,eADD,EAAA,cAAA,EAAA,CAAA,GAAA,EAEa,MAAA,CAAK,cAFlB,EAAA,GAAA,IAAA,EAAA,WAAA,CAAA,EAGI,iBAHJ,CAAA,EAIR,OAJQ,CAAA,IAAA,CAAA"}