@copilotkit/aimock 1.7.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 (368) hide show
  1. package/.claude-plugin/marketplace.json +17 -0
  2. package/.claude-plugin/plugin.json +12 -0
  3. package/LICENSE +21 -0
  4. package/README.md +82 -0
  5. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  6. package/dist/a2a-handler.cjs +203 -0
  7. package/dist/a2a-handler.cjs.map +1 -0
  8. package/dist/a2a-handler.js +199 -0
  9. package/dist/a2a-handler.js.map +1 -0
  10. package/dist/a2a-mock.cjs +292 -0
  11. package/dist/a2a-mock.cjs.map +1 -0
  12. package/dist/a2a-mock.d.cts +41 -0
  13. package/dist/a2a-mock.d.cts.map +1 -0
  14. package/dist/a2a-mock.d.ts +41 -0
  15. package/dist/a2a-mock.d.ts.map +1 -0
  16. package/dist/a2a-mock.js +290 -0
  17. package/dist/a2a-mock.js.map +1 -0
  18. package/dist/a2a-stub.cjs +4 -0
  19. package/dist/a2a-stub.d.cts +3 -0
  20. package/dist/a2a-stub.d.ts +3 -0
  21. package/dist/a2a-stub.js +3 -0
  22. package/dist/a2a-types.d.cts +68 -0
  23. package/dist/a2a-types.d.cts.map +1 -0
  24. package/dist/a2a-types.d.ts +68 -0
  25. package/dist/a2a-types.d.ts.map +1 -0
  26. package/dist/aimock-cli.cjs +112 -0
  27. package/dist/aimock-cli.cjs.map +1 -0
  28. package/dist/aimock-cli.d.cts +19 -0
  29. package/dist/aimock-cli.d.cts.map +1 -0
  30. package/dist/aimock-cli.d.ts +19 -0
  31. package/dist/aimock-cli.d.ts.map +1 -0
  32. package/dist/aimock-cli.js +110 -0
  33. package/dist/aimock-cli.js.map +1 -0
  34. package/dist/aws-event-stream.cjs +117 -0
  35. package/dist/aws-event-stream.cjs.map +1 -0
  36. package/dist/aws-event-stream.d.cts +38 -0
  37. package/dist/aws-event-stream.d.cts.map +1 -0
  38. package/dist/aws-event-stream.d.ts +38 -0
  39. package/dist/aws-event-stream.d.ts.map +1 -0
  40. package/dist/aws-event-stream.js +114 -0
  41. package/dist/aws-event-stream.js.map +1 -0
  42. package/dist/bedrock-converse.cjs +445 -0
  43. package/dist/bedrock-converse.cjs.map +1 -0
  44. package/dist/bedrock-converse.d.cts +50 -0
  45. package/dist/bedrock-converse.d.cts.map +1 -0
  46. package/dist/bedrock-converse.d.ts +50 -0
  47. package/dist/bedrock-converse.d.ts.map +1 -0
  48. package/dist/bedrock-converse.js +443 -0
  49. package/dist/bedrock-converse.js.map +1 -0
  50. package/dist/bedrock.cjs +557 -0
  51. package/dist/bedrock.cjs.map +1 -0
  52. package/dist/bedrock.d.cts +41 -0
  53. package/dist/bedrock.d.cts.map +1 -0
  54. package/dist/bedrock.d.ts +41 -0
  55. package/dist/bedrock.d.ts.map +1 -0
  56. package/dist/bedrock.js +553 -0
  57. package/dist/bedrock.js.map +1 -0
  58. package/dist/chaos.cjs +114 -0
  59. package/dist/chaos.cjs.map +1 -0
  60. package/dist/chaos.d.cts +27 -0
  61. package/dist/chaos.d.cts.map +1 -0
  62. package/dist/chaos.d.ts +27 -0
  63. package/dist/chaos.d.ts.map +1 -0
  64. package/dist/chaos.js +113 -0
  65. package/dist/chaos.js.map +1 -0
  66. package/dist/cli.cjs +268 -0
  67. package/dist/cli.cjs.map +1 -0
  68. package/dist/cli.d.cts +1 -0
  69. package/dist/cli.d.ts +1 -0
  70. package/dist/cli.js +268 -0
  71. package/dist/cli.js.map +1 -0
  72. package/dist/cohere.cjs +434 -0
  73. package/dist/cohere.cjs.map +1 -0
  74. package/dist/cohere.d.cts +34 -0
  75. package/dist/cohere.d.cts.map +1 -0
  76. package/dist/cohere.d.ts +34 -0
  77. package/dist/cohere.d.ts.map +1 -0
  78. package/dist/cohere.js +433 -0
  79. package/dist/cohere.js.map +1 -0
  80. package/dist/config-loader.cjs +111 -0
  81. package/dist/config-loader.cjs.map +1 -0
  82. package/dist/config-loader.d.cts +100 -0
  83. package/dist/config-loader.d.cts.map +1 -0
  84. package/dist/config-loader.d.ts +100 -0
  85. package/dist/config-loader.d.ts.map +1 -0
  86. package/dist/config-loader.js +107 -0
  87. package/dist/config-loader.js.map +1 -0
  88. package/dist/embeddings.cjs +150 -0
  89. package/dist/embeddings.cjs.map +1 -0
  90. package/dist/embeddings.d.cts +12 -0
  91. package/dist/embeddings.d.cts.map +1 -0
  92. package/dist/embeddings.d.ts +12 -0
  93. package/dist/embeddings.d.ts.map +1 -0
  94. package/dist/embeddings.js +150 -0
  95. package/dist/embeddings.js.map +1 -0
  96. package/dist/fixture-loader.cjs +269 -0
  97. package/dist/fixture-loader.cjs.map +1 -0
  98. package/dist/fixture-loader.d.cts +17 -0
  99. package/dist/fixture-loader.d.cts.map +1 -0
  100. package/dist/fixture-loader.d.ts +17 -0
  101. package/dist/fixture-loader.d.ts.map +1 -0
  102. package/dist/fixture-loader.js +265 -0
  103. package/dist/fixture-loader.js.map +1 -0
  104. package/dist/gemini.cjs +403 -0
  105. package/dist/gemini.cjs.map +1 -0
  106. package/dist/gemini.d.cts +10 -0
  107. package/dist/gemini.d.cts.map +1 -0
  108. package/dist/gemini.d.ts +10 -0
  109. package/dist/gemini.d.ts.map +1 -0
  110. package/dist/gemini.js +403 -0
  111. package/dist/gemini.js.map +1 -0
  112. package/dist/helpers.cjs +276 -0
  113. package/dist/helpers.cjs.map +1 -0
  114. package/dist/helpers.d.cts +39 -0
  115. package/dist/helpers.d.cts.map +1 -0
  116. package/dist/helpers.d.ts +39 -0
  117. package/dist/helpers.d.ts.map +1 -0
  118. package/dist/helpers.js +259 -0
  119. package/dist/helpers.js.map +1 -0
  120. package/dist/index.cjs +113 -0
  121. package/dist/index.d.cts +42 -0
  122. package/dist/index.d.ts +42 -0
  123. package/dist/index.js +39 -0
  124. package/dist/interruption.cjs +40 -0
  125. package/dist/interruption.cjs.map +1 -0
  126. package/dist/interruption.d.cts +15 -0
  127. package/dist/interruption.d.cts.map +1 -0
  128. package/dist/interruption.d.ts +15 -0
  129. package/dist/interruption.d.ts.map +1 -0
  130. package/dist/interruption.js +39 -0
  131. package/dist/interruption.js.map +1 -0
  132. package/dist/journal.cjs +65 -0
  133. package/dist/journal.cjs.map +1 -0
  134. package/dist/journal.d.cts +23 -0
  135. package/dist/journal.d.cts.map +1 -0
  136. package/dist/journal.d.ts +23 -0
  137. package/dist/journal.d.ts.map +1 -0
  138. package/dist/journal.js +65 -0
  139. package/dist/journal.js.map +1 -0
  140. package/dist/jsonrpc.cjs +91 -0
  141. package/dist/jsonrpc.cjs.map +1 -0
  142. package/dist/jsonrpc.d.cts +24 -0
  143. package/dist/jsonrpc.d.cts.map +1 -0
  144. package/dist/jsonrpc.d.ts +24 -0
  145. package/dist/jsonrpc.d.ts.map +1 -0
  146. package/dist/jsonrpc.js +90 -0
  147. package/dist/jsonrpc.js.map +1 -0
  148. package/dist/llmock.cjs +223 -0
  149. package/dist/llmock.cjs.map +1 -0
  150. package/dist/llmock.d.cts +70 -0
  151. package/dist/llmock.d.cts.map +1 -0
  152. package/dist/llmock.d.ts +70 -0
  153. package/dist/llmock.d.ts.map +1 -0
  154. package/dist/llmock.js +223 -0
  155. package/dist/llmock.js.map +1 -0
  156. package/dist/logger.cjs +29 -0
  157. package/dist/logger.cjs.map +1 -0
  158. package/dist/logger.d.cts +14 -0
  159. package/dist/logger.d.cts.map +1 -0
  160. package/dist/logger.d.ts +14 -0
  161. package/dist/logger.d.ts.map +1 -0
  162. package/dist/logger.js +28 -0
  163. package/dist/logger.js.map +1 -0
  164. package/dist/mcp-handler.cjs +189 -0
  165. package/dist/mcp-handler.cjs.map +1 -0
  166. package/dist/mcp-handler.js +188 -0
  167. package/dist/mcp-handler.js.map +1 -0
  168. package/dist/mcp-mock.cjs +169 -0
  169. package/dist/mcp-mock.cjs.map +1 -0
  170. package/dist/mcp-mock.d.cts +40 -0
  171. package/dist/mcp-mock.d.cts.map +1 -0
  172. package/dist/mcp-mock.d.ts +40 -0
  173. package/dist/mcp-mock.d.ts.map +1 -0
  174. package/dist/mcp-mock.js +167 -0
  175. package/dist/mcp-mock.js.map +1 -0
  176. package/dist/mcp-stub.cjs +4 -0
  177. package/dist/mcp-stub.d.cts +3 -0
  178. package/dist/mcp-stub.d.ts +3 -0
  179. package/dist/mcp-stub.js +3 -0
  180. package/dist/mcp-types.d.cts +65 -0
  181. package/dist/mcp-types.d.cts.map +1 -0
  182. package/dist/mcp-types.d.ts +65 -0
  183. package/dist/mcp-types.d.ts.map +1 -0
  184. package/dist/messages.cjs +489 -0
  185. package/dist/messages.cjs.map +1 -0
  186. package/dist/messages.d.cts +10 -0
  187. package/dist/messages.d.cts.map +1 -0
  188. package/dist/messages.d.ts +10 -0
  189. package/dist/messages.d.ts.map +1 -0
  190. package/dist/messages.js +489 -0
  191. package/dist/messages.js.map +1 -0
  192. package/dist/metrics.cjs +160 -0
  193. package/dist/metrics.cjs.map +1 -0
  194. package/dist/metrics.d.cts +24 -0
  195. package/dist/metrics.d.cts.map +1 -0
  196. package/dist/metrics.d.ts +24 -0
  197. package/dist/metrics.d.ts.map +1 -0
  198. package/dist/metrics.js +158 -0
  199. package/dist/metrics.js.map +1 -0
  200. package/dist/moderation.cjs +91 -0
  201. package/dist/moderation.cjs.map +1 -0
  202. package/dist/moderation.d.cts +23 -0
  203. package/dist/moderation.d.cts.map +1 -0
  204. package/dist/moderation.d.ts +23 -0
  205. package/dist/moderation.d.ts.map +1 -0
  206. package/dist/moderation.js +91 -0
  207. package/dist/moderation.js.map +1 -0
  208. package/dist/ndjson-writer.cjs +31 -0
  209. package/dist/ndjson-writer.cjs.map +1 -0
  210. package/dist/ndjson-writer.d.cts +17 -0
  211. package/dist/ndjson-writer.d.cts.map +1 -0
  212. package/dist/ndjson-writer.d.ts +17 -0
  213. package/dist/ndjson-writer.d.ts.map +1 -0
  214. package/dist/ndjson-writer.js +31 -0
  215. package/dist/ndjson-writer.js.map +1 -0
  216. package/dist/ollama.cjs +519 -0
  217. package/dist/ollama.cjs.map +1 -0
  218. package/dist/ollama.d.cts +34 -0
  219. package/dist/ollama.d.cts.map +1 -0
  220. package/dist/ollama.d.ts +34 -0
  221. package/dist/ollama.d.ts.map +1 -0
  222. package/dist/ollama.js +517 -0
  223. package/dist/ollama.js.map +1 -0
  224. package/dist/recorder.cjs +311 -0
  225. package/dist/recorder.cjs.map +1 -0
  226. package/dist/recorder.d.cts +23 -0
  227. package/dist/recorder.d.cts.map +1 -0
  228. package/dist/recorder.d.ts +23 -0
  229. package/dist/recorder.d.ts.map +1 -0
  230. package/dist/recorder.js +305 -0
  231. package/dist/recorder.js.map +1 -0
  232. package/dist/rerank.cjs +71 -0
  233. package/dist/rerank.cjs.map +1 -0
  234. package/dist/rerank.d.cts +22 -0
  235. package/dist/rerank.d.cts.map +1 -0
  236. package/dist/rerank.d.ts +22 -0
  237. package/dist/rerank.d.ts.map +1 -0
  238. package/dist/rerank.js +71 -0
  239. package/dist/rerank.js.map +1 -0
  240. package/dist/responses.cjs +637 -0
  241. package/dist/responses.cjs.map +1 -0
  242. package/dist/responses.d.cts +16 -0
  243. package/dist/responses.d.cts.map +1 -0
  244. package/dist/responses.d.ts +16 -0
  245. package/dist/responses.d.ts.map +1 -0
  246. package/dist/responses.js +634 -0
  247. package/dist/responses.js.map +1 -0
  248. package/dist/router.cjs +68 -0
  249. package/dist/router.cjs.map +1 -0
  250. package/dist/router.d.cts +16 -0
  251. package/dist/router.d.cts.map +1 -0
  252. package/dist/router.d.ts +16 -0
  253. package/dist/router.d.ts.map +1 -0
  254. package/dist/router.js +65 -0
  255. package/dist/router.js.map +1 -0
  256. package/dist/search.cjs +59 -0
  257. package/dist/search.cjs.map +1 -0
  258. package/dist/search.d.cts +23 -0
  259. package/dist/search.d.cts.map +1 -0
  260. package/dist/search.d.ts +23 -0
  261. package/dist/search.d.ts.map +1 -0
  262. package/dist/search.js +59 -0
  263. package/dist/search.js.map +1 -0
  264. package/dist/server.cjs +935 -0
  265. package/dist/server.cjs.map +1 -0
  266. package/dist/server.d.cts +28 -0
  267. package/dist/server.d.cts.map +1 -0
  268. package/dist/server.d.ts +28 -0
  269. package/dist/server.d.ts.map +1 -0
  270. package/dist/server.js +933 -0
  271. package/dist/server.js.map +1 -0
  272. package/dist/sse-writer.cjs +59 -0
  273. package/dist/sse-writer.cjs.map +1 -0
  274. package/dist/sse-writer.d.cts +19 -0
  275. package/dist/sse-writer.d.cts.map +1 -0
  276. package/dist/sse-writer.d.ts +19 -0
  277. package/dist/sse-writer.d.ts.map +1 -0
  278. package/dist/sse-writer.js +55 -0
  279. package/dist/sse-writer.js.map +1 -0
  280. package/dist/stream-collapse.cjs +496 -0
  281. package/dist/stream-collapse.cjs.map +1 -0
  282. package/dist/stream-collapse.d.cts +70 -0
  283. package/dist/stream-collapse.d.cts.map +1 -0
  284. package/dist/stream-collapse.d.ts +70 -0
  285. package/dist/stream-collapse.d.ts.map +1 -0
  286. package/dist/stream-collapse.js +489 -0
  287. package/dist/stream-collapse.js.map +1 -0
  288. package/dist/suite.cjs +46 -0
  289. package/dist/suite.cjs.map +1 -0
  290. package/dist/suite.d.cts +31 -0
  291. package/dist/suite.d.cts.map +1 -0
  292. package/dist/suite.d.ts +31 -0
  293. package/dist/suite.d.ts.map +1 -0
  294. package/dist/suite.js +46 -0
  295. package/dist/suite.js.map +1 -0
  296. package/dist/types.d.cts +243 -0
  297. package/dist/types.d.cts.map +1 -0
  298. package/dist/types.d.ts +243 -0
  299. package/dist/types.d.ts.map +1 -0
  300. package/dist/url.cjs +21 -0
  301. package/dist/url.cjs.map +1 -0
  302. package/dist/url.d.cts +16 -0
  303. package/dist/url.d.cts.map +1 -0
  304. package/dist/url.d.ts +16 -0
  305. package/dist/url.d.ts.map +1 -0
  306. package/dist/url.js +20 -0
  307. package/dist/url.js.map +1 -0
  308. package/dist/vector-handler.cjs +239 -0
  309. package/dist/vector-handler.cjs.map +1 -0
  310. package/dist/vector-handler.js +238 -0
  311. package/dist/vector-handler.js.map +1 -0
  312. package/dist/vector-mock.cjs +229 -0
  313. package/dist/vector-mock.cjs.map +1 -0
  314. package/dist/vector-mock.d.cts +39 -0
  315. package/dist/vector-mock.d.cts.map +1 -0
  316. package/dist/vector-mock.d.ts +39 -0
  317. package/dist/vector-mock.d.ts.map +1 -0
  318. package/dist/vector-mock.js +227 -0
  319. package/dist/vector-mock.js.map +1 -0
  320. package/dist/vector-stub.cjs +4 -0
  321. package/dist/vector-stub.d.cts +3 -0
  322. package/dist/vector-stub.d.ts +3 -0
  323. package/dist/vector-stub.js +3 -0
  324. package/dist/vector-types.d.cts +32 -0
  325. package/dist/vector-types.d.cts.map +1 -0
  326. package/dist/vector-types.d.ts +32 -0
  327. package/dist/vector-types.d.ts.map +1 -0
  328. package/dist/watcher.cjs +59 -0
  329. package/dist/watcher.cjs.map +1 -0
  330. package/dist/watcher.js +58 -0
  331. package/dist/watcher.js.map +1 -0
  332. package/dist/ws-framing.cjs +187 -0
  333. package/dist/ws-framing.cjs.map +1 -0
  334. package/dist/ws-framing.d.cts +26 -0
  335. package/dist/ws-framing.d.cts.map +1 -0
  336. package/dist/ws-framing.d.ts +26 -0
  337. package/dist/ws-framing.d.ts.map +1 -0
  338. package/dist/ws-framing.js +184 -0
  339. package/dist/ws-framing.js.map +1 -0
  340. package/dist/ws-gemini-live.cjs +364 -0
  341. package/dist/ws-gemini-live.cjs.map +1 -0
  342. package/dist/ws-gemini-live.d.cts +18 -0
  343. package/dist/ws-gemini-live.d.cts.map +1 -0
  344. package/dist/ws-gemini-live.d.ts +18 -0
  345. package/dist/ws-gemini-live.d.ts.map +1 -0
  346. package/dist/ws-gemini-live.js +364 -0
  347. package/dist/ws-gemini-live.js.map +1 -0
  348. package/dist/ws-realtime.cjs +435 -0
  349. package/dist/ws-realtime.cjs.map +1 -0
  350. package/dist/ws-realtime.d.cts +17 -0
  351. package/dist/ws-realtime.d.cts.map +1 -0
  352. package/dist/ws-realtime.d.ts +17 -0
  353. package/dist/ws-realtime.d.ts.map +1 -0
  354. package/dist/ws-realtime.js +435 -0
  355. package/dist/ws-realtime.js.map +1 -0
  356. package/dist/ws-responses.cjs +164 -0
  357. package/dist/ws-responses.cjs.map +1 -0
  358. package/dist/ws-responses.d.cts +18 -0
  359. package/dist/ws-responses.d.cts.map +1 -0
  360. package/dist/ws-responses.d.ts +18 -0
  361. package/dist/ws-responses.d.ts.map +1 -0
  362. package/dist/ws-responses.js +164 -0
  363. package/dist/ws-responses.js.map +1 -0
  364. package/fixtures/example-greeting.json +12 -0
  365. package/fixtures/example-multi-turn.json +14 -0
  366. package/fixtures/example-tool-call.json +15 -0
  367. package/package.json +118 -0
  368. package/skills/write-fixtures/SKILL.md +625 -0
package/dist/index.cjs ADDED
@@ -0,0 +1,113 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_helpers = require('./helpers.cjs');
3
+ const require_jsonrpc = require('./jsonrpc.cjs');
4
+ const require_a2a_mock = require('./a2a-mock.cjs');
5
+ const require_journal = require('./journal.cjs');
6
+ const require_router = require('./router.cjs');
7
+ const require_fixture_loader = require('./fixture-loader.cjs');
8
+ const require_sse_writer = require('./sse-writer.cjs');
9
+ const require_interruption = require('./interruption.cjs');
10
+ const require_chaos = require('./chaos.cjs');
11
+ const require_stream_collapse = require('./stream-collapse.cjs');
12
+ const require_url = require('./url.cjs');
13
+ const require_recorder = require('./recorder.cjs');
14
+ const require_responses = require('./responses.cjs');
15
+ const require_messages = require('./messages.cjs');
16
+ const require_gemini = require('./gemini.cjs');
17
+ const require_aws_event_stream = require('./aws-event-stream.cjs');
18
+ const require_bedrock = require('./bedrock.cjs');
19
+ const require_bedrock_converse = require('./bedrock-converse.cjs');
20
+ const require_embeddings = require('./embeddings.cjs');
21
+ const require_ndjson_writer = require('./ndjson-writer.cjs');
22
+ const require_ollama = require('./ollama.cjs');
23
+ const require_cohere = require('./cohere.cjs');
24
+ const require_search = require('./search.cjs');
25
+ const require_rerank = require('./rerank.cjs');
26
+ const require_moderation = require('./moderation.cjs');
27
+ const require_ws_framing = require('./ws-framing.cjs');
28
+ const require_ws_responses = require('./ws-responses.cjs');
29
+ const require_ws_realtime = require('./ws-realtime.cjs');
30
+ const require_ws_gemini_live = require('./ws-gemini-live.cjs');
31
+ const require_logger = require('./logger.cjs');
32
+ const require_metrics = require('./metrics.cjs');
33
+ const require_server = require('./server.cjs');
34
+ const require_llmock = require('./llmock.cjs');
35
+ const require_mcp_mock = require('./mcp-mock.cjs');
36
+ const require_vector_mock = require('./vector-mock.cjs');
37
+ const require_config_loader = require('./config-loader.cjs');
38
+ const require_suite = require('./suite.cjs');
39
+
40
+ exports.A2AMock = require_a2a_mock.A2AMock;
41
+ exports.Journal = require_journal.Journal;
42
+ exports.LLMock = require_llmock.LLMock;
43
+ exports.Logger = require_logger.Logger;
44
+ exports.MCPMock = require_mcp_mock.MCPMock;
45
+ exports.VectorMock = require_vector_mock.VectorMock;
46
+ exports.WebSocketConnection = require_ws_framing.WebSocketConnection;
47
+ exports.applyChaos = require_chaos.applyChaos;
48
+ exports.bedrockToCompletionRequest = require_bedrock.bedrockToCompletionRequest;
49
+ exports.buildEmbeddingResponse = require_helpers.buildEmbeddingResponse;
50
+ exports.buildTextChunks = require_helpers.buildTextChunks;
51
+ exports.buildTextStreamEvents = require_responses.buildTextStreamEvents;
52
+ exports.buildToolCallChunks = require_helpers.buildToolCallChunks;
53
+ exports.buildToolCallStreamEvents = require_responses.buildToolCallStreamEvents;
54
+ exports.calculateDelay = require_sse_writer.calculateDelay;
55
+ exports.cohereToCompletionRequest = require_cohere.cohereToCompletionRequest;
56
+ exports.collapseAnthropicSSE = require_stream_collapse.collapseAnthropicSSE;
57
+ exports.collapseBedrockEventStream = require_stream_collapse.collapseBedrockEventStream;
58
+ exports.collapseCohereSSE = require_stream_collapse.collapseCohereSSE;
59
+ exports.collapseGeminiSSE = require_stream_collapse.collapseGeminiSSE;
60
+ exports.collapseOllamaNDJSON = require_stream_collapse.collapseOllamaNDJSON;
61
+ exports.collapseOpenAISSE = require_stream_collapse.collapseOpenAISSE;
62
+ exports.collapseStreamingResponse = require_stream_collapse.collapseStreamingResponse;
63
+ exports.computeAcceptKey = require_ws_framing.computeAcceptKey;
64
+ exports.converseToCompletionRequest = require_bedrock_converse.converseToCompletionRequest;
65
+ exports.createInterruptionSignal = require_interruption.createInterruptionSignal;
66
+ exports.createJsonRpcDispatcher = require_jsonrpc.createJsonRpcDispatcher;
67
+ exports.createMetricsRegistry = require_metrics.createMetricsRegistry;
68
+ exports.createMockSuite = require_suite.createMockSuite;
69
+ exports.createServer = require_server.createServer;
70
+ exports.delay = require_sse_writer.delay;
71
+ exports.encodeEventStreamFrame = require_aws_event_stream.encodeEventStreamFrame;
72
+ exports.encodeEventStreamMessage = require_aws_event_stream.encodeEventStreamMessage;
73
+ exports.evaluateChaos = require_chaos.evaluateChaos;
74
+ exports.flattenHeaders = require_helpers.flattenHeaders;
75
+ exports.generateDeterministicEmbedding = require_helpers.generateDeterministicEmbedding;
76
+ exports.generateId = require_helpers.generateId;
77
+ exports.generateMessageId = require_helpers.generateMessageId;
78
+ exports.generateToolCallId = require_helpers.generateToolCallId;
79
+ exports.generateToolUseId = require_helpers.generateToolUseId;
80
+ exports.getTextContent = require_router.getTextContent;
81
+ exports.handleBedrock = require_bedrock.handleBedrock;
82
+ exports.handleBedrockStream = require_bedrock.handleBedrockStream;
83
+ exports.handleCohere = require_cohere.handleCohere;
84
+ exports.handleConverse = require_bedrock_converse.handleConverse;
85
+ exports.handleConverseStream = require_bedrock_converse.handleConverseStream;
86
+ exports.handleEmbeddings = require_embeddings.handleEmbeddings;
87
+ exports.handleGemini = require_gemini.handleGemini;
88
+ exports.handleMessages = require_messages.handleMessages;
89
+ exports.handleModeration = require_moderation.handleModeration;
90
+ exports.handleOllama = require_ollama.handleOllama;
91
+ exports.handleOllamaGenerate = require_ollama.handleOllamaGenerate;
92
+ exports.handleRerank = require_rerank.handleRerank;
93
+ exports.handleResponses = require_responses.handleResponses;
94
+ exports.handleSearch = require_search.handleSearch;
95
+ exports.handleWebSocketGeminiLive = require_ws_gemini_live.handleWebSocketGeminiLive;
96
+ exports.handleWebSocketRealtime = require_ws_realtime.handleWebSocketRealtime;
97
+ exports.handleWebSocketResponses = require_ws_responses.handleWebSocketResponses;
98
+ exports.isEmbeddingResponse = require_helpers.isEmbeddingResponse;
99
+ exports.loadConfig = require_config_loader.loadConfig;
100
+ exports.loadFixtureFile = require_fixture_loader.loadFixtureFile;
101
+ exports.loadFixturesFromDir = require_fixture_loader.loadFixturesFromDir;
102
+ exports.matchFixture = require_router.matchFixture;
103
+ exports.normalizePathLabel = require_metrics.normalizePathLabel;
104
+ exports.ollamaToCompletionRequest = require_ollama.ollamaToCompletionRequest;
105
+ exports.proxyAndRecord = require_recorder.proxyAndRecord;
106
+ exports.resolveUpstreamUrl = require_url.resolveUpstreamUrl;
107
+ exports.startFromConfig = require_config_loader.startFromConfig;
108
+ exports.upgradeToWebSocket = require_ws_framing.upgradeToWebSocket;
109
+ exports.validateFixtures = require_fixture_loader.validateFixtures;
110
+ exports.writeErrorResponse = require_sse_writer.writeErrorResponse;
111
+ exports.writeEventStream = require_aws_event_stream.writeEventStream;
112
+ exports.writeNDJSONStream = require_ndjson_writer.writeNDJSONStream;
113
+ exports.writeSSEStream = require_sse_writer.writeSSEStream;
@@ -0,0 +1,42 @@
1
+ import { Journal } from "./journal.cjs";
2
+ import { LogLevel, Logger } from "./logger.cjs";
3
+ import { MetricsRegistry, createMetricsRegistry, normalizePathLabel } from "./metrics.cjs";
4
+ import { ChaosAction, ChaosConfig, ChatCompletion, ChatCompletionChoice, ChatCompletionMessage, ChatCompletionRequest, ChatMessage, ContentPart, EmbeddingFixtureOpts, EmbeddingResponse, ErrorResponse, Fixture, FixtureFile, FixtureFileEntry, FixtureMatch, FixtureOpts, FixtureResponse, JournalEntry, MockServerOptions, Mountable, RecordConfig, RecordProviderKey, SSEChoice, SSEChunk, SSEDelta, SSEToolCallDelta, StreamingProfile, TextResponse, ToolCall, ToolCallMessage, ToolCallResponse, ToolDefinition } from "./types.cjs";
5
+ import { A2AAgentDefinition, A2AArtifact, A2AMessage, A2AMockOptions, A2APart, A2ARole, A2AStreamEvent, A2ATask, A2ATaskResponse, A2ATaskState } from "./a2a-types.cjs";
6
+ import { A2AMock } from "./a2a-mock.cjs";
7
+ import { SearchFixture, SearchResult, handleSearch } from "./search.cjs";
8
+ import { RerankFixture, RerankResult, handleRerank } from "./rerank.cjs";
9
+ import { ModerationFixture, ModerationResult, handleModeration } from "./moderation.cjs";
10
+ import { LLMock } from "./llmock.cjs";
11
+ import { MCPContent, MCPMockOptions, MCPPromptDefinition, MCPPromptResult, MCPResourceContent, MCPResourceDefinition, MCPSession, MCPToolDefinition } from "./mcp-types.cjs";
12
+ import { QueryHandler, QueryResult, VectorCollection, VectorEntry, VectorMockOptions, VectorQuery } from "./vector-types.cjs";
13
+ import { AimockConfig, loadConfig, startFromConfig } from "./config-loader.cjs";
14
+ import { ServerInstance, ServiceFixtures, createServer } from "./server.cjs";
15
+ import { ValidationResult, loadFixtureFile, loadFixturesFromDir, validateFixtures } from "./fixture-loader.cjs";
16
+ import { getTextContent, matchFixture } from "./router.cjs";
17
+ import { ResponsesSSEEvent, buildTextStreamEvents, buildToolCallStreamEvents, handleResponses } from "./responses.cjs";
18
+ import { handleMessages } from "./messages.cjs";
19
+ import { handleGemini } from "./gemini.cjs";
20
+ import { handleEmbeddings } from "./embeddings.cjs";
21
+ import { bedrockToCompletionRequest, handleBedrock, handleBedrockStream } from "./bedrock.cjs";
22
+ import { converseToCompletionRequest, handleConverse, handleConverseStream } from "./bedrock-converse.cjs";
23
+ import { encodeEventStreamFrame, encodeEventStreamMessage, writeEventStream } from "./aws-event-stream.cjs";
24
+ import { NDJSONStreamOptions, writeNDJSONStream } from "./ndjson-writer.cjs";
25
+ import { handleOllama, handleOllamaGenerate, ollamaToCompletionRequest } from "./ollama.cjs";
26
+ import { cohereToCompletionRequest, handleCohere } from "./cohere.cjs";
27
+ import { WebSocketConnection, computeAcceptKey, upgradeToWebSocket } from "./ws-framing.cjs";
28
+ import { handleWebSocketResponses } from "./ws-responses.cjs";
29
+ import { handleWebSocketRealtime } from "./ws-realtime.cjs";
30
+ import { handleWebSocketGeminiLive } from "./ws-gemini-live.cjs";
31
+ import { EmbeddingAPIResponse, buildEmbeddingResponse, buildTextChunks, buildToolCallChunks, flattenHeaders, generateDeterministicEmbedding, generateId, generateMessageId, generateToolCallId, generateToolUseId, isEmbeddingResponse } from "./helpers.cjs";
32
+ import { InterruptionControl, createInterruptionSignal } from "./interruption.cjs";
33
+ import { StreamOptions, calculateDelay, delay, writeErrorResponse, writeSSEStream } from "./sse-writer.cjs";
34
+ import { applyChaos, evaluateChaos } from "./chaos.cjs";
35
+ import { proxyAndRecord } from "./recorder.cjs";
36
+ import { resolveUpstreamUrl } from "./url.cjs";
37
+ import { CollapseResult, collapseAnthropicSSE, collapseBedrockEventStream, collapseCohereSSE, collapseGeminiSSE, collapseOllamaNDJSON, collapseOpenAISSE, collapseStreamingResponse } from "./stream-collapse.cjs";
38
+ import { MCPMock } from "./mcp-mock.cjs";
39
+ import { VectorMock } from "./vector-mock.cjs";
40
+ import { JsonRpcDispatcherOptions, JsonRpcResponse, MethodHandler, createJsonRpcDispatcher } from "./jsonrpc.cjs";
41
+ import { MockSuite, MockSuiteOptions, createMockSuite } from "./suite.cjs";
42
+ export { type A2AAgentDefinition, type A2AArtifact, type A2AMessage, A2AMock, type A2AMockOptions, type A2APart, type A2ARole, type A2AStreamEvent, type A2ATask, type A2ATaskResponse, type A2ATaskState, type AimockConfig, type ChaosAction, type ChaosConfig, type ChatCompletion, type ChatCompletionChoice, type ChatCompletionMessage, type ChatCompletionRequest, type ChatMessage, type CollapseResult, type ContentPart, type EmbeddingAPIResponse, type EmbeddingFixtureOpts, type EmbeddingResponse, type ErrorResponse, type Fixture, type FixtureFile, type FixtureFileEntry, type FixtureMatch, type FixtureOpts, type FixtureResponse, type InterruptionControl, Journal, type JournalEntry, type JsonRpcDispatcherOptions, type JsonRpcResponse, LLMock, type LogLevel, Logger, type MCPContent, MCPMock, type MCPMockOptions, type MCPPromptDefinition, type MCPPromptResult, type MCPResourceContent, type MCPResourceDefinition, type MCPSession, type MCPToolDefinition, type MethodHandler, type MetricsRegistry, type MockServerOptions, type MockSuite, type MockSuiteOptions, type ModerationFixture, type ModerationResult, type Mountable, type NDJSONStreamOptions, type QueryHandler, type QueryResult, type RecordConfig, type RecordProviderKey, type RerankFixture, type RerankResult, type ResponsesSSEEvent, type SSEChoice, type SSEChunk, type SSEDelta, type SSEToolCallDelta, type SearchFixture, type SearchResult, type ServerInstance, type ServiceFixtures, type StreamOptions, type StreamingProfile, type TextResponse, type ToolCall, type ToolCallMessage, type ToolCallResponse, type ToolDefinition, type ValidationResult, type VectorCollection, type VectorEntry, VectorMock, type VectorMockOptions, type VectorQuery, WebSocketConnection, applyChaos, bedrockToCompletionRequest, buildEmbeddingResponse, buildTextChunks, buildTextStreamEvents, buildToolCallChunks, buildToolCallStreamEvents, calculateDelay, cohereToCompletionRequest, collapseAnthropicSSE, collapseBedrockEventStream, collapseCohereSSE, collapseGeminiSSE, collapseOllamaNDJSON, collapseOpenAISSE, collapseStreamingResponse, computeAcceptKey, converseToCompletionRequest, createInterruptionSignal, createJsonRpcDispatcher, createMetricsRegistry, createMockSuite, createServer, delay, encodeEventStreamFrame, encodeEventStreamMessage, evaluateChaos, flattenHeaders, generateDeterministicEmbedding, generateId, generateMessageId, generateToolCallId, generateToolUseId, getTextContent, handleBedrock, handleBedrockStream, handleCohere, handleConverse, handleConverseStream, handleEmbeddings, handleGemini, handleMessages, handleModeration, handleOllama, handleOllamaGenerate, handleRerank, handleResponses, handleSearch, handleWebSocketGeminiLive, handleWebSocketRealtime, handleWebSocketResponses, isEmbeddingResponse, loadConfig, loadFixtureFile, loadFixturesFromDir, matchFixture, normalizePathLabel, ollamaToCompletionRequest, proxyAndRecord, resolveUpstreamUrl, startFromConfig, upgradeToWebSocket, validateFixtures, writeErrorResponse, writeEventStream, writeNDJSONStream, writeSSEStream };
@@ -0,0 +1,42 @@
1
+ import { Journal } from "./journal.js";
2
+ import { LogLevel, Logger } from "./logger.js";
3
+ import { MetricsRegistry, createMetricsRegistry, normalizePathLabel } from "./metrics.js";
4
+ import { ChaosAction, ChaosConfig, ChatCompletion, ChatCompletionChoice, ChatCompletionMessage, ChatCompletionRequest, ChatMessage, ContentPart, EmbeddingFixtureOpts, EmbeddingResponse, ErrorResponse, Fixture, FixtureFile, FixtureFileEntry, FixtureMatch, FixtureOpts, FixtureResponse, JournalEntry, MockServerOptions, Mountable, RecordConfig, RecordProviderKey, SSEChoice, SSEChunk, SSEDelta, SSEToolCallDelta, StreamingProfile, TextResponse, ToolCall, ToolCallMessage, ToolCallResponse, ToolDefinition } from "./types.js";
5
+ import { A2AAgentDefinition, A2AArtifact, A2AMessage, A2AMockOptions, A2APart, A2ARole, A2AStreamEvent, A2ATask, A2ATaskResponse, A2ATaskState } from "./a2a-types.js";
6
+ import { A2AMock } from "./a2a-mock.js";
7
+ import { SearchFixture, SearchResult, handleSearch } from "./search.js";
8
+ import { RerankFixture, RerankResult, handleRerank } from "./rerank.js";
9
+ import { ModerationFixture, ModerationResult, handleModeration } from "./moderation.js";
10
+ import { LLMock } from "./llmock.js";
11
+ import { MCPContent, MCPMockOptions, MCPPromptDefinition, MCPPromptResult, MCPResourceContent, MCPResourceDefinition, MCPSession, MCPToolDefinition } from "./mcp-types.js";
12
+ import { QueryHandler, QueryResult, VectorCollection, VectorEntry, VectorMockOptions, VectorQuery } from "./vector-types.js";
13
+ import { AimockConfig, loadConfig, startFromConfig } from "./config-loader.js";
14
+ import { ServerInstance, ServiceFixtures, createServer } from "./server.js";
15
+ import { ValidationResult, loadFixtureFile, loadFixturesFromDir, validateFixtures } from "./fixture-loader.js";
16
+ import { getTextContent, matchFixture } from "./router.js";
17
+ import { ResponsesSSEEvent, buildTextStreamEvents, buildToolCallStreamEvents, handleResponses } from "./responses.js";
18
+ import { handleMessages } from "./messages.js";
19
+ import { handleGemini } from "./gemini.js";
20
+ import { handleEmbeddings } from "./embeddings.js";
21
+ import { bedrockToCompletionRequest, handleBedrock, handleBedrockStream } from "./bedrock.js";
22
+ import { converseToCompletionRequest, handleConverse, handleConverseStream } from "./bedrock-converse.js";
23
+ import { encodeEventStreamFrame, encodeEventStreamMessage, writeEventStream } from "./aws-event-stream.js";
24
+ import { NDJSONStreamOptions, writeNDJSONStream } from "./ndjson-writer.js";
25
+ import { handleOllama, handleOllamaGenerate, ollamaToCompletionRequest } from "./ollama.js";
26
+ import { cohereToCompletionRequest, handleCohere } from "./cohere.js";
27
+ import { WebSocketConnection, computeAcceptKey, upgradeToWebSocket } from "./ws-framing.js";
28
+ import { handleWebSocketResponses } from "./ws-responses.js";
29
+ import { handleWebSocketRealtime } from "./ws-realtime.js";
30
+ import { handleWebSocketGeminiLive } from "./ws-gemini-live.js";
31
+ import { EmbeddingAPIResponse, buildEmbeddingResponse, buildTextChunks, buildToolCallChunks, flattenHeaders, generateDeterministicEmbedding, generateId, generateMessageId, generateToolCallId, generateToolUseId, isEmbeddingResponse } from "./helpers.js";
32
+ import { InterruptionControl, createInterruptionSignal } from "./interruption.js";
33
+ import { StreamOptions, calculateDelay, delay, writeErrorResponse, writeSSEStream } from "./sse-writer.js";
34
+ import { applyChaos, evaluateChaos } from "./chaos.js";
35
+ import { proxyAndRecord } from "./recorder.js";
36
+ import { resolveUpstreamUrl } from "./url.js";
37
+ import { CollapseResult, collapseAnthropicSSE, collapseBedrockEventStream, collapseCohereSSE, collapseGeminiSSE, collapseOllamaNDJSON, collapseOpenAISSE, collapseStreamingResponse } from "./stream-collapse.js";
38
+ import { MCPMock } from "./mcp-mock.js";
39
+ import { VectorMock } from "./vector-mock.js";
40
+ import { JsonRpcDispatcherOptions, JsonRpcResponse, MethodHandler, createJsonRpcDispatcher } from "./jsonrpc.js";
41
+ import { MockSuite, MockSuiteOptions, createMockSuite } from "./suite.js";
42
+ export { type A2AAgentDefinition, type A2AArtifact, type A2AMessage, A2AMock, type A2AMockOptions, type A2APart, type A2ARole, type A2AStreamEvent, type A2ATask, type A2ATaskResponse, type A2ATaskState, type AimockConfig, type ChaosAction, type ChaosConfig, type ChatCompletion, type ChatCompletionChoice, type ChatCompletionMessage, type ChatCompletionRequest, type ChatMessage, type CollapseResult, type ContentPart, type EmbeddingAPIResponse, type EmbeddingFixtureOpts, type EmbeddingResponse, type ErrorResponse, type Fixture, type FixtureFile, type FixtureFileEntry, type FixtureMatch, type FixtureOpts, type FixtureResponse, type InterruptionControl, Journal, type JournalEntry, type JsonRpcDispatcherOptions, type JsonRpcResponse, LLMock, type LogLevel, Logger, type MCPContent, MCPMock, type MCPMockOptions, type MCPPromptDefinition, type MCPPromptResult, type MCPResourceContent, type MCPResourceDefinition, type MCPSession, type MCPToolDefinition, type MethodHandler, type MetricsRegistry, type MockServerOptions, type MockSuite, type MockSuiteOptions, type ModerationFixture, type ModerationResult, type Mountable, type NDJSONStreamOptions, type QueryHandler, type QueryResult, type RecordConfig, type RecordProviderKey, type RerankFixture, type RerankResult, type ResponsesSSEEvent, type SSEChoice, type SSEChunk, type SSEDelta, type SSEToolCallDelta, type SearchFixture, type SearchResult, type ServerInstance, type ServiceFixtures, type StreamOptions, type StreamingProfile, type TextResponse, type ToolCall, type ToolCallMessage, type ToolCallResponse, type ToolDefinition, type ValidationResult, type VectorCollection, type VectorEntry, VectorMock, type VectorMockOptions, type VectorQuery, WebSocketConnection, applyChaos, bedrockToCompletionRequest, buildEmbeddingResponse, buildTextChunks, buildTextStreamEvents, buildToolCallChunks, buildToolCallStreamEvents, calculateDelay, cohereToCompletionRequest, collapseAnthropicSSE, collapseBedrockEventStream, collapseCohereSSE, collapseGeminiSSE, collapseOllamaNDJSON, collapseOpenAISSE, collapseStreamingResponse, computeAcceptKey, converseToCompletionRequest, createInterruptionSignal, createJsonRpcDispatcher, createMetricsRegistry, createMockSuite, createServer, delay, encodeEventStreamFrame, encodeEventStreamMessage, evaluateChaos, flattenHeaders, generateDeterministicEmbedding, generateId, generateMessageId, generateToolCallId, generateToolUseId, getTextContent, handleBedrock, handleBedrockStream, handleCohere, handleConverse, handleConverseStream, handleEmbeddings, handleGemini, handleMessages, handleModeration, handleOllama, handleOllamaGenerate, handleRerank, handleResponses, handleSearch, handleWebSocketGeminiLive, handleWebSocketRealtime, handleWebSocketResponses, isEmbeddingResponse, loadConfig, loadFixtureFile, loadFixturesFromDir, matchFixture, normalizePathLabel, ollamaToCompletionRequest, proxyAndRecord, resolveUpstreamUrl, startFromConfig, upgradeToWebSocket, validateFixtures, writeErrorResponse, writeEventStream, writeNDJSONStream, writeSSEStream };
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ import { buildEmbeddingResponse, buildTextChunks, buildToolCallChunks, flattenHeaders, generateDeterministicEmbedding, generateId, generateMessageId, generateToolCallId, generateToolUseId, isEmbeddingResponse } from "./helpers.js";
2
+ import { createJsonRpcDispatcher } from "./jsonrpc.js";
3
+ import { A2AMock } from "./a2a-mock.js";
4
+ import { Journal } from "./journal.js";
5
+ import { getTextContent, matchFixture } from "./router.js";
6
+ import { loadFixtureFile, loadFixturesFromDir, validateFixtures } from "./fixture-loader.js";
7
+ import { calculateDelay, delay, writeErrorResponse, writeSSEStream } from "./sse-writer.js";
8
+ import { createInterruptionSignal } from "./interruption.js";
9
+ import { applyChaos, evaluateChaos } from "./chaos.js";
10
+ import { collapseAnthropicSSE, collapseBedrockEventStream, collapseCohereSSE, collapseGeminiSSE, collapseOllamaNDJSON, collapseOpenAISSE, collapseStreamingResponse } from "./stream-collapse.js";
11
+ import { resolveUpstreamUrl } from "./url.js";
12
+ import { proxyAndRecord } from "./recorder.js";
13
+ import { buildTextStreamEvents, buildToolCallStreamEvents, handleResponses } from "./responses.js";
14
+ import { handleMessages } from "./messages.js";
15
+ import { handleGemini } from "./gemini.js";
16
+ import { encodeEventStreamFrame, encodeEventStreamMessage, writeEventStream } from "./aws-event-stream.js";
17
+ import { bedrockToCompletionRequest, handleBedrock, handleBedrockStream } from "./bedrock.js";
18
+ import { converseToCompletionRequest, handleConverse, handleConverseStream } from "./bedrock-converse.js";
19
+ import { handleEmbeddings } from "./embeddings.js";
20
+ import { writeNDJSONStream } from "./ndjson-writer.js";
21
+ import { handleOllama, handleOllamaGenerate, ollamaToCompletionRequest } from "./ollama.js";
22
+ import { cohereToCompletionRequest, handleCohere } from "./cohere.js";
23
+ import { handleSearch } from "./search.js";
24
+ import { handleRerank } from "./rerank.js";
25
+ import { handleModeration } from "./moderation.js";
26
+ import { WebSocketConnection, computeAcceptKey, upgradeToWebSocket } from "./ws-framing.js";
27
+ import { handleWebSocketResponses } from "./ws-responses.js";
28
+ import { handleWebSocketRealtime } from "./ws-realtime.js";
29
+ import { handleWebSocketGeminiLive } from "./ws-gemini-live.js";
30
+ import { Logger } from "./logger.js";
31
+ import { createMetricsRegistry, normalizePathLabel } from "./metrics.js";
32
+ import { createServer } from "./server.js";
33
+ import { LLMock } from "./llmock.js";
34
+ import { MCPMock } from "./mcp-mock.js";
35
+ import { VectorMock } from "./vector-mock.js";
36
+ import { loadConfig, startFromConfig } from "./config-loader.js";
37
+ import { createMockSuite } from "./suite.js";
38
+
39
+ export { A2AMock, Journal, LLMock, Logger, MCPMock, VectorMock, WebSocketConnection, applyChaos, bedrockToCompletionRequest, buildEmbeddingResponse, buildTextChunks, buildTextStreamEvents, buildToolCallChunks, buildToolCallStreamEvents, calculateDelay, cohereToCompletionRequest, collapseAnthropicSSE, collapseBedrockEventStream, collapseCohereSSE, collapseGeminiSSE, collapseOllamaNDJSON, collapseOpenAISSE, collapseStreamingResponse, computeAcceptKey, converseToCompletionRequest, createInterruptionSignal, createJsonRpcDispatcher, createMetricsRegistry, createMockSuite, createServer, delay, encodeEventStreamFrame, encodeEventStreamMessage, evaluateChaos, flattenHeaders, generateDeterministicEmbedding, generateId, generateMessageId, generateToolCallId, generateToolUseId, getTextContent, handleBedrock, handleBedrockStream, handleCohere, handleConverse, handleConverseStream, handleEmbeddings, handleGemini, handleMessages, handleModeration, handleOllama, handleOllamaGenerate, handleRerank, handleResponses, handleSearch, handleWebSocketGeminiLive, handleWebSocketRealtime, handleWebSocketResponses, isEmbeddingResponse, loadConfig, loadFixtureFile, loadFixturesFromDir, matchFixture, normalizePathLabel, ollamaToCompletionRequest, proxyAndRecord, resolveUpstreamUrl, startFromConfig, upgradeToWebSocket, validateFixtures, writeErrorResponse, writeEventStream, writeNDJSONStream, writeSSEStream };
@@ -0,0 +1,40 @@
1
+
2
+ //#region src/interruption.ts
3
+ function createInterruptionSignal(fixture) {
4
+ const { truncateAfterChunks, disconnectAfterMs } = fixture;
5
+ if (truncateAfterChunks === void 0 && disconnectAfterMs === void 0) return null;
6
+ const controller = new AbortController();
7
+ let abortReason;
8
+ let chunkCount = 0;
9
+ let timer;
10
+ if (disconnectAfterMs !== void 0) timer = setTimeout(() => {
11
+ if (!controller.signal.aborted) {
12
+ abortReason = "disconnectAfterMs";
13
+ controller.abort();
14
+ }
15
+ }, disconnectAfterMs);
16
+ return {
17
+ signal: controller.signal,
18
+ tick() {
19
+ if (controller.signal.aborted) return;
20
+ chunkCount++;
21
+ if (truncateAfterChunks !== void 0 && chunkCount >= truncateAfterChunks) {
22
+ abortReason = "truncateAfterChunks";
23
+ controller.abort();
24
+ }
25
+ },
26
+ cleanup() {
27
+ if (timer !== void 0) {
28
+ clearTimeout(timer);
29
+ timer = void 0;
30
+ }
31
+ },
32
+ reason() {
33
+ return abortReason;
34
+ }
35
+ };
36
+ }
37
+
38
+ //#endregion
39
+ exports.createInterruptionSignal = createInterruptionSignal;
40
+ //# sourceMappingURL=interruption.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruption.cjs","names":[],"sources":["../src/interruption.ts"],"sourcesContent":["import type { Fixture } from \"./types.js\";\n\nexport interface InterruptionControl {\n signal: AbortSignal;\n tick(): void;\n cleanup(): void;\n reason(): string | undefined;\n}\n\nexport function createInterruptionSignal(fixture: Fixture): InterruptionControl | null {\n const { truncateAfterChunks, disconnectAfterMs } = fixture;\n\n if (truncateAfterChunks === undefined && disconnectAfterMs === undefined) {\n return null;\n }\n\n const controller = new AbortController();\n let abortReason: string | undefined;\n let chunkCount = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n if (disconnectAfterMs !== undefined) {\n timer = setTimeout(() => {\n if (!controller.signal.aborted) {\n abortReason = \"disconnectAfterMs\";\n controller.abort();\n }\n }, disconnectAfterMs);\n }\n\n return {\n signal: controller.signal,\n\n tick() {\n if (controller.signal.aborted) return;\n chunkCount++;\n if (truncateAfterChunks !== undefined && chunkCount >= truncateAfterChunks) {\n abortReason = \"truncateAfterChunks\";\n controller.abort();\n }\n },\n\n cleanup() {\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n },\n\n reason() {\n return abortReason;\n },\n };\n}\n"],"mappings":";;AASA,SAAgB,yBAAyB,SAA8C;CACrF,MAAM,EAAE,qBAAqB,sBAAsB;AAEnD,KAAI,wBAAwB,UAAa,sBAAsB,OAC7D,QAAO;CAGT,MAAM,aAAa,IAAI,iBAAiB;CACxC,IAAI;CACJ,IAAI,aAAa;CACjB,IAAI;AAEJ,KAAI,sBAAsB,OACxB,SAAQ,iBAAiB;AACvB,MAAI,CAAC,WAAW,OAAO,SAAS;AAC9B,iBAAc;AACd,cAAW,OAAO;;IAEnB,kBAAkB;AAGvB,QAAO;EACL,QAAQ,WAAW;EAEnB,OAAO;AACL,OAAI,WAAW,OAAO,QAAS;AAC/B;AACA,OAAI,wBAAwB,UAAa,cAAc,qBAAqB;AAC1E,kBAAc;AACd,eAAW,OAAO;;;EAItB,UAAU;AACR,OAAI,UAAU,QAAW;AACvB,iBAAa,MAAM;AACnB,YAAQ;;;EAIZ,SAAS;AACP,UAAO;;EAEV"}
@@ -0,0 +1,15 @@
1
+ import { Fixture } from "./types.cjs";
2
+
3
+ //#region src/interruption.d.ts
4
+ interface InterruptionControl {
5
+ signal: AbortSignal;
6
+ tick(): void;
7
+ cleanup(): void;
8
+ reason(): string | undefined;
9
+ }
10
+ declare function createInterruptionSignal(fixture: Fixture): InterruptionControl | null;
11
+ //# sourceMappingURL=interruption.d.ts.map
12
+
13
+ //#endregion
14
+ export { InterruptionControl, createInterruptionSignal };
15
+ //# sourceMappingURL=interruption.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruption.d.cts","names":[],"sources":["../src/interruption.ts"],"sourcesContent":[],"mappings":";;;UAEiB,mBAAA;UACP;EADO,IAAA,EAAA,EAAA,IAAA;EAOD,OAAA,EAAA,EAAA,IAAA;EAAwB,MAAA,EAAA,EAAA,MAAA,GAAA,SAAA;;AAAoB,iBAA5C,wBAAA,CAA4C,OAAA,EAAV,OAAU,CAAA,EAAA,mBAAA,GAAA,IAAA"}
@@ -0,0 +1,15 @@
1
+ import { Fixture } from "./types.js";
2
+
3
+ //#region src/interruption.d.ts
4
+ interface InterruptionControl {
5
+ signal: AbortSignal;
6
+ tick(): void;
7
+ cleanup(): void;
8
+ reason(): string | undefined;
9
+ }
10
+ declare function createInterruptionSignal(fixture: Fixture): InterruptionControl | null;
11
+ //# sourceMappingURL=interruption.d.ts.map
12
+
13
+ //#endregion
14
+ export { InterruptionControl, createInterruptionSignal };
15
+ //# sourceMappingURL=interruption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruption.d.ts","names":[],"sources":["../src/interruption.ts"],"sourcesContent":[],"mappings":";;;UAEiB,mBAAA;UACP;EADO,IAAA,EAAA,EAAA,IAAA;EAOD,OAAA,EAAA,EAAA,IAAA;EAAwB,MAAA,EAAA,EAAA,MAAA,GAAA,SAAA;;AAAoB,iBAA5C,wBAAA,CAA4C,OAAA,EAAV,OAAU,CAAA,EAAA,mBAAA,GAAA,IAAA"}
@@ -0,0 +1,39 @@
1
+ //#region src/interruption.ts
2
+ function createInterruptionSignal(fixture) {
3
+ const { truncateAfterChunks, disconnectAfterMs } = fixture;
4
+ if (truncateAfterChunks === void 0 && disconnectAfterMs === void 0) return null;
5
+ const controller = new AbortController();
6
+ let abortReason;
7
+ let chunkCount = 0;
8
+ let timer;
9
+ if (disconnectAfterMs !== void 0) timer = setTimeout(() => {
10
+ if (!controller.signal.aborted) {
11
+ abortReason = "disconnectAfterMs";
12
+ controller.abort();
13
+ }
14
+ }, disconnectAfterMs);
15
+ return {
16
+ signal: controller.signal,
17
+ tick() {
18
+ if (controller.signal.aborted) return;
19
+ chunkCount++;
20
+ if (truncateAfterChunks !== void 0 && chunkCount >= truncateAfterChunks) {
21
+ abortReason = "truncateAfterChunks";
22
+ controller.abort();
23
+ }
24
+ },
25
+ cleanup() {
26
+ if (timer !== void 0) {
27
+ clearTimeout(timer);
28
+ timer = void 0;
29
+ }
30
+ },
31
+ reason() {
32
+ return abortReason;
33
+ }
34
+ };
35
+ }
36
+
37
+ //#endregion
38
+ export { createInterruptionSignal };
39
+ //# sourceMappingURL=interruption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruption.js","names":[],"sources":["../src/interruption.ts"],"sourcesContent":["import type { Fixture } from \"./types.js\";\n\nexport interface InterruptionControl {\n signal: AbortSignal;\n tick(): void;\n cleanup(): void;\n reason(): string | undefined;\n}\n\nexport function createInterruptionSignal(fixture: Fixture): InterruptionControl | null {\n const { truncateAfterChunks, disconnectAfterMs } = fixture;\n\n if (truncateAfterChunks === undefined && disconnectAfterMs === undefined) {\n return null;\n }\n\n const controller = new AbortController();\n let abortReason: string | undefined;\n let chunkCount = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n if (disconnectAfterMs !== undefined) {\n timer = setTimeout(() => {\n if (!controller.signal.aborted) {\n abortReason = \"disconnectAfterMs\";\n controller.abort();\n }\n }, disconnectAfterMs);\n }\n\n return {\n signal: controller.signal,\n\n tick() {\n if (controller.signal.aborted) return;\n chunkCount++;\n if (truncateAfterChunks !== undefined && chunkCount >= truncateAfterChunks) {\n abortReason = \"truncateAfterChunks\";\n controller.abort();\n }\n },\n\n cleanup() {\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n },\n\n reason() {\n return abortReason;\n },\n };\n}\n"],"mappings":";AASA,SAAgB,yBAAyB,SAA8C;CACrF,MAAM,EAAE,qBAAqB,sBAAsB;AAEnD,KAAI,wBAAwB,UAAa,sBAAsB,OAC7D,QAAO;CAGT,MAAM,aAAa,IAAI,iBAAiB;CACxC,IAAI;CACJ,IAAI,aAAa;CACjB,IAAI;AAEJ,KAAI,sBAAsB,OACxB,SAAQ,iBAAiB;AACvB,MAAI,CAAC,WAAW,OAAO,SAAS;AAC9B,iBAAc;AACd,cAAW,OAAO;;IAEnB,kBAAkB;AAGvB,QAAO;EACL,QAAQ,WAAW;EAEnB,OAAO;AACL,OAAI,WAAW,OAAO,QAAS;AAC/B;AACA,OAAI,wBAAwB,UAAa,cAAc,qBAAqB;AAC1E,kBAAc;AACd,eAAW,OAAO;;;EAItB,UAAU;AACR,OAAI,UAAU,QAAW;AACvB,iBAAa,MAAM;AACnB,YAAQ;;;EAIZ,SAAS;AACP,UAAO;;EAEV"}
@@ -0,0 +1,65 @@
1
+ const require_helpers = require('./helpers.cjs');
2
+
3
+ //#region src/journal.ts
4
+ /**
5
+ * Compare two field values, handling RegExp by source+flags rather than reference.
6
+ */
7
+ function fieldEqual(a, b) {
8
+ if (a instanceof RegExp && b instanceof RegExp) return a.source === b.source && a.flags === b.flags;
9
+ return a === b;
10
+ }
11
+ /**
12
+ * Check whether two fixture match objects have the same criteria
13
+ * (ignoring sequenceIndex). Used to group sequenced fixtures.
14
+ */
15
+ function matchCriteriaEqual(a, b) {
16
+ return fieldEqual(a.userMessage, b.userMessage) && fieldEqual(a.inputText, b.inputText) && fieldEqual(a.toolCallId, b.toolCallId) && fieldEqual(a.toolName, b.toolName) && fieldEqual(a.model, b.model) && fieldEqual(a.responseFormat, b.responseFormat) && fieldEqual(a.predicate, b.predicate);
17
+ }
18
+ var Journal = class {
19
+ entries = [];
20
+ fixtureMatchCounts = /* @__PURE__ */ new Map();
21
+ add(entry) {
22
+ const full = {
23
+ id: require_helpers.generateId("req"),
24
+ timestamp: Date.now(),
25
+ ...entry
26
+ };
27
+ this.entries.push(full);
28
+ return full;
29
+ }
30
+ getAll(opts) {
31
+ if (opts?.limit !== void 0) return this.entries.slice(-opts.limit);
32
+ return this.entries.slice();
33
+ }
34
+ getLast() {
35
+ return this.entries.length > 0 ? this.entries[this.entries.length - 1] : null;
36
+ }
37
+ findByFixture(fixture) {
38
+ return this.entries.filter((e) => e.response.fixture === fixture);
39
+ }
40
+ getFixtureMatchCount(fixture) {
41
+ return this.fixtureMatchCounts.get(fixture) ?? 0;
42
+ }
43
+ incrementFixtureMatchCount(fixture, allFixtures) {
44
+ this.fixtureMatchCounts.set(fixture, this.getFixtureMatchCount(fixture) + 1);
45
+ if (fixture.match.sequenceIndex !== void 0 && allFixtures) for (const sibling of allFixtures) {
46
+ if (sibling === fixture) continue;
47
+ if (sibling.match.sequenceIndex === void 0) continue;
48
+ if (matchCriteriaEqual(fixture.match, sibling.match)) this.fixtureMatchCounts.set(sibling, this.getFixtureMatchCount(sibling) + 1);
49
+ }
50
+ }
51
+ clearMatchCounts() {
52
+ this.fixtureMatchCounts.clear();
53
+ }
54
+ clear() {
55
+ this.entries = [];
56
+ this.fixtureMatchCounts.clear();
57
+ }
58
+ get size() {
59
+ return this.entries.length;
60
+ }
61
+ };
62
+
63
+ //#endregion
64
+ exports.Journal = Journal;
65
+ //# sourceMappingURL=journal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.cjs","names":["generateId"],"sources":["../src/journal.ts"],"sourcesContent":["import { generateId } from \"./helpers.js\";\nimport type { Fixture, FixtureMatch, JournalEntry } from \"./types.js\";\n\n/**\n * Compare two field values, handling RegExp by source+flags rather than reference.\n */\nfunction fieldEqual(a: unknown, b: unknown): boolean {\n if (a instanceof RegExp && b instanceof RegExp)\n return a.source === b.source && a.flags === b.flags;\n return a === b;\n}\n\n/**\n * Check whether two fixture match objects have the same criteria\n * (ignoring sequenceIndex). Used to group sequenced fixtures.\n */\nfunction matchCriteriaEqual(a: FixtureMatch, b: FixtureMatch): boolean {\n return (\n fieldEqual(a.userMessage, b.userMessage) &&\n fieldEqual(a.inputText, b.inputText) &&\n fieldEqual(a.toolCallId, b.toolCallId) &&\n fieldEqual(a.toolName, b.toolName) &&\n fieldEqual(a.model, b.model) &&\n fieldEqual(a.responseFormat, b.responseFormat) &&\n fieldEqual(a.predicate, b.predicate)\n );\n}\n\nexport class Journal {\n private entries: JournalEntry[] = [];\n readonly fixtureMatchCounts: Map<Fixture, number> = new Map();\n\n add(entry: Omit<JournalEntry, \"id\" | \"timestamp\">): JournalEntry {\n const full: JournalEntry = {\n id: generateId(\"req\"),\n timestamp: Date.now(),\n ...entry,\n };\n this.entries.push(full);\n return full;\n }\n\n getAll(opts?: { limit?: number }): JournalEntry[] {\n if (opts?.limit !== undefined) {\n return this.entries.slice(-opts.limit);\n }\n return this.entries.slice();\n }\n\n getLast(): JournalEntry | null {\n return this.entries.length > 0 ? this.entries[this.entries.length - 1] : null;\n }\n\n findByFixture(fixture: Fixture): JournalEntry[] {\n return this.entries.filter((e) => e.response.fixture === fixture);\n }\n\n getFixtureMatchCount(fixture: Fixture): number {\n return this.fixtureMatchCounts.get(fixture) ?? 0;\n }\n\n incrementFixtureMatchCount(fixture: Fixture, allFixtures?: readonly Fixture[]): void {\n this.fixtureMatchCounts.set(fixture, this.getFixtureMatchCount(fixture) + 1);\n // When a sequenced fixture matches, also increment all siblings with matching criteria\n if (fixture.match.sequenceIndex !== undefined && allFixtures) {\n for (const sibling of allFixtures) {\n if (sibling === fixture) continue;\n if (sibling.match.sequenceIndex === undefined) continue;\n if (matchCriteriaEqual(fixture.match, sibling.match)) {\n this.fixtureMatchCounts.set(sibling, this.getFixtureMatchCount(sibling) + 1);\n }\n }\n }\n }\n\n clearMatchCounts(): void {\n this.fixtureMatchCounts.clear();\n }\n\n clear(): void {\n this.entries = [];\n this.fixtureMatchCounts.clear();\n }\n\n get size(): number {\n return this.entries.length;\n }\n}\n"],"mappings":";;;;;;AAMA,SAAS,WAAW,GAAY,GAAqB;AACnD,KAAI,aAAa,UAAU,aAAa,OACtC,QAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE;AAChD,QAAO,MAAM;;;;;;AAOf,SAAS,mBAAmB,GAAiB,GAA0B;AACrE,QACE,WAAW,EAAE,aAAa,EAAE,YAAY,IACxC,WAAW,EAAE,WAAW,EAAE,UAAU,IACpC,WAAW,EAAE,YAAY,EAAE,WAAW,IACtC,WAAW,EAAE,UAAU,EAAE,SAAS,IAClC,WAAW,EAAE,OAAO,EAAE,MAAM,IAC5B,WAAW,EAAE,gBAAgB,EAAE,eAAe,IAC9C,WAAW,EAAE,WAAW,EAAE,UAAU;;AAIxC,IAAa,UAAb,MAAqB;CACnB,AAAQ,UAA0B,EAAE;CACpC,AAAS,qCAA2C,IAAI,KAAK;CAE7D,IAAI,OAA6D;EAC/D,MAAM,OAAqB;GACzB,IAAIA,2BAAW,MAAM;GACrB,WAAW,KAAK,KAAK;GACrB,GAAG;GACJ;AACD,OAAK,QAAQ,KAAK,KAAK;AACvB,SAAO;;CAGT,OAAO,MAA2C;AAChD,MAAI,MAAM,UAAU,OAClB,QAAO,KAAK,QAAQ,MAAM,CAAC,KAAK,MAAM;AAExC,SAAO,KAAK,QAAQ,OAAO;;CAG7B,UAA+B;AAC7B,SAAO,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,KAAK,QAAQ,SAAS,KAAK;;CAG3E,cAAc,SAAkC;AAC9C,SAAO,KAAK,QAAQ,QAAQ,MAAM,EAAE,SAAS,YAAY,QAAQ;;CAGnE,qBAAqB,SAA0B;AAC7C,SAAO,KAAK,mBAAmB,IAAI,QAAQ,IAAI;;CAGjD,2BAA2B,SAAkB,aAAwC;AACnF,OAAK,mBAAmB,IAAI,SAAS,KAAK,qBAAqB,QAAQ,GAAG,EAAE;AAE5E,MAAI,QAAQ,MAAM,kBAAkB,UAAa,YAC/C,MAAK,MAAM,WAAW,aAAa;AACjC,OAAI,YAAY,QAAS;AACzB,OAAI,QAAQ,MAAM,kBAAkB,OAAW;AAC/C,OAAI,mBAAmB,QAAQ,OAAO,QAAQ,MAAM,CAClD,MAAK,mBAAmB,IAAI,SAAS,KAAK,qBAAqB,QAAQ,GAAG,EAAE;;;CAMpF,mBAAyB;AACvB,OAAK,mBAAmB,OAAO;;CAGjC,QAAc;AACZ,OAAK,UAAU,EAAE;AACjB,OAAK,mBAAmB,OAAO;;CAGjC,IAAI,OAAe;AACjB,SAAO,KAAK,QAAQ"}
@@ -0,0 +1,23 @@
1
+ import { Fixture, JournalEntry } from "./types.cjs";
2
+
3
+ //#region src/journal.d.ts
4
+ declare class Journal {
5
+ private entries;
6
+ readonly fixtureMatchCounts: Map<Fixture, number>;
7
+ add(entry: Omit<JournalEntry, "id" | "timestamp">): JournalEntry;
8
+ getAll(opts?: {
9
+ limit?: number;
10
+ }): JournalEntry[];
11
+ getLast(): JournalEntry | null;
12
+ findByFixture(fixture: Fixture): JournalEntry[];
13
+ getFixtureMatchCount(fixture: Fixture): number;
14
+ incrementFixtureMatchCount(fixture: Fixture, allFixtures?: readonly Fixture[]): void;
15
+ clearMatchCounts(): void;
16
+ clear(): void;
17
+ get size(): number;
18
+ }
19
+ //# sourceMappingURL=journal.d.ts.map
20
+
21
+ //#endregion
22
+ export { Journal };
23
+ //# sourceMappingURL=journal.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.d.cts","names":[],"sources":["../src/journal.ts"],"sourcesContent":[],"mappings":";;;cA4Ba,OAAA;;EAAA,SAAA,kBAAO,EAEW,GAFX,CAEe,OAFf,EAAA,MAAA,CAAA;EAAA,GAAA,CAAA,KAAA,EAIP,IAJO,CAIF,YAJE,EAAA,IAAA,GAAA,WAAA,CAAA,CAAA,EAIkC,YAJlC;QAEe,CAAA,KAAA,EAAA;IAAJ,KAAA,CAAA,EAAA,MAAA;MAYM,YAVnB,EAAA;SAAL,CAAA,CAAA,EAiBA,YAjBA,GAAA,IAAA;eAAyC,CAAA,OAAA,EAqB7B,OArB6B,CAAA,EAqBnB,YArBmB,EAAA;sBAUjB,CAAA,OAAA,EAeL,OAfK,CAAA,EAAA,MAAA;4BAOxB,CAAA,OAAA,EAYyB,OAZzB,EAAA,WAAA,CAAA,EAAA,SAYyD,OAZzD,EAAA,CAAA,EAAA,IAAA;kBAIY,CAAA,CAAA,EAAA,IAAA;OAAU,CAAA,CAAA,EAAA,IAAA;MAIH,IAAA,CAAA,CAAA,EAAA,MAAA"}
@@ -0,0 +1,23 @@
1
+ import { Fixture, JournalEntry } from "./types.js";
2
+
3
+ //#region src/journal.d.ts
4
+ declare class Journal {
5
+ private entries;
6
+ readonly fixtureMatchCounts: Map<Fixture, number>;
7
+ add(entry: Omit<JournalEntry, "id" | "timestamp">): JournalEntry;
8
+ getAll(opts?: {
9
+ limit?: number;
10
+ }): JournalEntry[];
11
+ getLast(): JournalEntry | null;
12
+ findByFixture(fixture: Fixture): JournalEntry[];
13
+ getFixtureMatchCount(fixture: Fixture): number;
14
+ incrementFixtureMatchCount(fixture: Fixture, allFixtures?: readonly Fixture[]): void;
15
+ clearMatchCounts(): void;
16
+ clear(): void;
17
+ get size(): number;
18
+ }
19
+ //# sourceMappingURL=journal.d.ts.map
20
+
21
+ //#endregion
22
+ export { Journal };
23
+ //# sourceMappingURL=journal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.d.ts","names":[],"sources":["../src/journal.ts"],"sourcesContent":[],"mappings":";;;cA4Ba,OAAA;;EAAA,SAAA,kBAAO,EAEW,GAFX,CAEe,OAFf,EAAA,MAAA,CAAA;EAAA,GAAA,CAAA,KAAA,EAIP,IAJO,CAIF,YAJE,EAAA,IAAA,GAAA,WAAA,CAAA,CAAA,EAIkC,YAJlC;QAEe,CAAA,KAAA,EAAA;IAAJ,KAAA,CAAA,EAAA,MAAA;MAYM,YAVnB,EAAA;SAAL,CAAA,CAAA,EAiBA,YAjBA,GAAA,IAAA;eAAyC,CAAA,OAAA,EAqB7B,OArB6B,CAAA,EAqBnB,YArBmB,EAAA;sBAUjB,CAAA,OAAA,EAeL,OAfK,CAAA,EAAA,MAAA;4BAOxB,CAAA,OAAA,EAYyB,OAZzB,EAAA,WAAA,CAAA,EAAA,SAYyD,OAZzD,EAAA,CAAA,EAAA,IAAA;kBAIY,CAAA,CAAA,EAAA,IAAA;OAAU,CAAA,CAAA,EAAA,IAAA;MAIH,IAAA,CAAA,CAAA,EAAA,MAAA"}
@@ -0,0 +1,65 @@
1
+ import { generateId } from "./helpers.js";
2
+
3
+ //#region src/journal.ts
4
+ /**
5
+ * Compare two field values, handling RegExp by source+flags rather than reference.
6
+ */
7
+ function fieldEqual(a, b) {
8
+ if (a instanceof RegExp && b instanceof RegExp) return a.source === b.source && a.flags === b.flags;
9
+ return a === b;
10
+ }
11
+ /**
12
+ * Check whether two fixture match objects have the same criteria
13
+ * (ignoring sequenceIndex). Used to group sequenced fixtures.
14
+ */
15
+ function matchCriteriaEqual(a, b) {
16
+ return fieldEqual(a.userMessage, b.userMessage) && fieldEqual(a.inputText, b.inputText) && fieldEqual(a.toolCallId, b.toolCallId) && fieldEqual(a.toolName, b.toolName) && fieldEqual(a.model, b.model) && fieldEqual(a.responseFormat, b.responseFormat) && fieldEqual(a.predicate, b.predicate);
17
+ }
18
+ var Journal = class {
19
+ entries = [];
20
+ fixtureMatchCounts = /* @__PURE__ */ new Map();
21
+ add(entry) {
22
+ const full = {
23
+ id: generateId("req"),
24
+ timestamp: Date.now(),
25
+ ...entry
26
+ };
27
+ this.entries.push(full);
28
+ return full;
29
+ }
30
+ getAll(opts) {
31
+ if (opts?.limit !== void 0) return this.entries.slice(-opts.limit);
32
+ return this.entries.slice();
33
+ }
34
+ getLast() {
35
+ return this.entries.length > 0 ? this.entries[this.entries.length - 1] : null;
36
+ }
37
+ findByFixture(fixture) {
38
+ return this.entries.filter((e) => e.response.fixture === fixture);
39
+ }
40
+ getFixtureMatchCount(fixture) {
41
+ return this.fixtureMatchCounts.get(fixture) ?? 0;
42
+ }
43
+ incrementFixtureMatchCount(fixture, allFixtures) {
44
+ this.fixtureMatchCounts.set(fixture, this.getFixtureMatchCount(fixture) + 1);
45
+ if (fixture.match.sequenceIndex !== void 0 && allFixtures) for (const sibling of allFixtures) {
46
+ if (sibling === fixture) continue;
47
+ if (sibling.match.sequenceIndex === void 0) continue;
48
+ if (matchCriteriaEqual(fixture.match, sibling.match)) this.fixtureMatchCounts.set(sibling, this.getFixtureMatchCount(sibling) + 1);
49
+ }
50
+ }
51
+ clearMatchCounts() {
52
+ this.fixtureMatchCounts.clear();
53
+ }
54
+ clear() {
55
+ this.entries = [];
56
+ this.fixtureMatchCounts.clear();
57
+ }
58
+ get size() {
59
+ return this.entries.length;
60
+ }
61
+ };
62
+
63
+ //#endregion
64
+ export { Journal };
65
+ //# sourceMappingURL=journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.js","names":[],"sources":["../src/journal.ts"],"sourcesContent":["import { generateId } from \"./helpers.js\";\nimport type { Fixture, FixtureMatch, JournalEntry } from \"./types.js\";\n\n/**\n * Compare two field values, handling RegExp by source+flags rather than reference.\n */\nfunction fieldEqual(a: unknown, b: unknown): boolean {\n if (a instanceof RegExp && b instanceof RegExp)\n return a.source === b.source && a.flags === b.flags;\n return a === b;\n}\n\n/**\n * Check whether two fixture match objects have the same criteria\n * (ignoring sequenceIndex). Used to group sequenced fixtures.\n */\nfunction matchCriteriaEqual(a: FixtureMatch, b: FixtureMatch): boolean {\n return (\n fieldEqual(a.userMessage, b.userMessage) &&\n fieldEqual(a.inputText, b.inputText) &&\n fieldEqual(a.toolCallId, b.toolCallId) &&\n fieldEqual(a.toolName, b.toolName) &&\n fieldEqual(a.model, b.model) &&\n fieldEqual(a.responseFormat, b.responseFormat) &&\n fieldEqual(a.predicate, b.predicate)\n );\n}\n\nexport class Journal {\n private entries: JournalEntry[] = [];\n readonly fixtureMatchCounts: Map<Fixture, number> = new Map();\n\n add(entry: Omit<JournalEntry, \"id\" | \"timestamp\">): JournalEntry {\n const full: JournalEntry = {\n id: generateId(\"req\"),\n timestamp: Date.now(),\n ...entry,\n };\n this.entries.push(full);\n return full;\n }\n\n getAll(opts?: { limit?: number }): JournalEntry[] {\n if (opts?.limit !== undefined) {\n return this.entries.slice(-opts.limit);\n }\n return this.entries.slice();\n }\n\n getLast(): JournalEntry | null {\n return this.entries.length > 0 ? this.entries[this.entries.length - 1] : null;\n }\n\n findByFixture(fixture: Fixture): JournalEntry[] {\n return this.entries.filter((e) => e.response.fixture === fixture);\n }\n\n getFixtureMatchCount(fixture: Fixture): number {\n return this.fixtureMatchCounts.get(fixture) ?? 0;\n }\n\n incrementFixtureMatchCount(fixture: Fixture, allFixtures?: readonly Fixture[]): void {\n this.fixtureMatchCounts.set(fixture, this.getFixtureMatchCount(fixture) + 1);\n // When a sequenced fixture matches, also increment all siblings with matching criteria\n if (fixture.match.sequenceIndex !== undefined && allFixtures) {\n for (const sibling of allFixtures) {\n if (sibling === fixture) continue;\n if (sibling.match.sequenceIndex === undefined) continue;\n if (matchCriteriaEqual(fixture.match, sibling.match)) {\n this.fixtureMatchCounts.set(sibling, this.getFixtureMatchCount(sibling) + 1);\n }\n }\n }\n }\n\n clearMatchCounts(): void {\n this.fixtureMatchCounts.clear();\n }\n\n clear(): void {\n this.entries = [];\n this.fixtureMatchCounts.clear();\n }\n\n get size(): number {\n return this.entries.length;\n }\n}\n"],"mappings":";;;;;;AAMA,SAAS,WAAW,GAAY,GAAqB;AACnD,KAAI,aAAa,UAAU,aAAa,OACtC,QAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE;AAChD,QAAO,MAAM;;;;;;AAOf,SAAS,mBAAmB,GAAiB,GAA0B;AACrE,QACE,WAAW,EAAE,aAAa,EAAE,YAAY,IACxC,WAAW,EAAE,WAAW,EAAE,UAAU,IACpC,WAAW,EAAE,YAAY,EAAE,WAAW,IACtC,WAAW,EAAE,UAAU,EAAE,SAAS,IAClC,WAAW,EAAE,OAAO,EAAE,MAAM,IAC5B,WAAW,EAAE,gBAAgB,EAAE,eAAe,IAC9C,WAAW,EAAE,WAAW,EAAE,UAAU;;AAIxC,IAAa,UAAb,MAAqB;CACnB,AAAQ,UAA0B,EAAE;CACpC,AAAS,qCAA2C,IAAI,KAAK;CAE7D,IAAI,OAA6D;EAC/D,MAAM,OAAqB;GACzB,IAAI,WAAW,MAAM;GACrB,WAAW,KAAK,KAAK;GACrB,GAAG;GACJ;AACD,OAAK,QAAQ,KAAK,KAAK;AACvB,SAAO;;CAGT,OAAO,MAA2C;AAChD,MAAI,MAAM,UAAU,OAClB,QAAO,KAAK,QAAQ,MAAM,CAAC,KAAK,MAAM;AAExC,SAAO,KAAK,QAAQ,OAAO;;CAG7B,UAA+B;AAC7B,SAAO,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,KAAK,QAAQ,SAAS,KAAK;;CAG3E,cAAc,SAAkC;AAC9C,SAAO,KAAK,QAAQ,QAAQ,MAAM,EAAE,SAAS,YAAY,QAAQ;;CAGnE,qBAAqB,SAA0B;AAC7C,SAAO,KAAK,mBAAmB,IAAI,QAAQ,IAAI;;CAGjD,2BAA2B,SAAkB,aAAwC;AACnF,OAAK,mBAAmB,IAAI,SAAS,KAAK,qBAAqB,QAAQ,GAAG,EAAE;AAE5E,MAAI,QAAQ,MAAM,kBAAkB,UAAa,YAC/C,MAAK,MAAM,WAAW,aAAa;AACjC,OAAI,YAAY,QAAS;AACzB,OAAI,QAAQ,MAAM,kBAAkB,OAAW;AAC/C,OAAI,mBAAmB,QAAQ,OAAO,QAAQ,MAAM,CAClD,MAAK,mBAAmB,IAAI,SAAS,KAAK,qBAAqB,QAAQ,GAAG,EAAE;;;CAMpF,mBAAyB;AACvB,OAAK,mBAAmB,OAAO;;CAGjC,QAAc;AACZ,OAAK,UAAU,EAAE;AACjB,OAAK,mBAAmB,OAAO;;CAGjC,IAAI,OAAe;AACjB,SAAO,KAAK,QAAQ"}