@copilotkit/aimock 1.38.0 → 1.39.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 (58) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +26 -0
  3. package/README.md +23 -2
  4. package/dist/agui-handler.cjs +20 -18
  5. package/dist/agui-handler.cjs.map +1 -1
  6. package/dist/agui-handler.d.cts +8 -1
  7. package/dist/agui-handler.d.cts.map +1 -1
  8. package/dist/agui-handler.d.ts +8 -1
  9. package/dist/agui-handler.d.ts.map +1 -1
  10. package/dist/agui-handler.js +20 -18
  11. package/dist/agui-handler.js.map +1 -1
  12. package/dist/agui-stub.d.cts +2 -2
  13. package/dist/agui-stub.d.ts +2 -2
  14. package/dist/agui-types.d.cts +19 -1
  15. package/dist/agui-types.d.cts.map +1 -1
  16. package/dist/agui-types.d.ts +19 -1
  17. package/dist/agui-types.d.ts.map +1 -1
  18. package/dist/aimock-cli.cjs +1 -1
  19. package/dist/aimock-cli.cjs.map +1 -1
  20. package/dist/aimock-cli.js +1 -1
  21. package/dist/aimock-cli.js.map +1 -1
  22. package/dist/cli.cjs +10 -10
  23. package/dist/cli.cjs.map +1 -1
  24. package/dist/cli.js +10 -10
  25. package/dist/cli.js.map +1 -1
  26. package/dist/config-loader.d.ts.map +1 -1
  27. package/dist/index.d.cts +2 -2
  28. package/dist/index.d.ts +2 -2
  29. package/dist/llmock.cjs +23 -9
  30. package/dist/llmock.cjs.map +1 -1
  31. package/dist/llmock.d.cts +22 -0
  32. package/dist/llmock.d.cts.map +1 -1
  33. package/dist/llmock.d.ts +22 -0
  34. package/dist/llmock.d.ts.map +1 -1
  35. package/dist/llmock.js +25 -11
  36. package/dist/llmock.js.map +1 -1
  37. package/dist/openrouter-video.cjs.map +1 -1
  38. package/dist/openrouter-video.js.map +1 -1
  39. package/dist/server.cjs +34 -17
  40. package/dist/server.cjs.map +1 -1
  41. package/dist/server.d.cts +6 -1
  42. package/dist/server.d.cts.map +1 -1
  43. package/dist/server.d.ts +6 -1
  44. package/dist/server.d.ts.map +1 -1
  45. package/dist/server.js +34 -18
  46. package/dist/server.js.map +1 -1
  47. package/dist/stream-collapse.cjs +77 -0
  48. package/dist/stream-collapse.cjs.map +1 -1
  49. package/dist/stream-collapse.d.cts.map +1 -1
  50. package/dist/stream-collapse.d.ts.map +1 -1
  51. package/dist/stream-collapse.js +77 -0
  52. package/dist/stream-collapse.js.map +1 -1
  53. package/dist/vector-types.d.ts.map +1 -1
  54. package/dist/ws-gemini-live.cjs +41 -6
  55. package/dist/ws-gemini-live.cjs.map +1 -1
  56. package/dist/ws-gemini-live.js +41 -6
  57. package/dist/ws-gemini-live.js.map +1 -1
  58. package/package.json +3 -2
package/dist/server.d.cts CHANGED
@@ -20,6 +20,12 @@ interface ServerInstance {
20
20
  veoVideoJobs: VeoVideoJobMap;
21
21
  grokVideoJobs: GrokVideoJobMap;
22
22
  }
23
+ /**
24
+ * The per-server state a full reset clears. `ServerInstance` structurally
25
+ * satisfies this, so `LLMock.reset()` and the control-API full-reset route
26
+ * share a single definition of "everything" instead of two lists that drift.
27
+ */
28
+
23
29
  interface ServiceFixtures {
24
30
  search: SearchFixture[];
25
31
  rerank: RerankFixture[];
@@ -30,7 +36,6 @@ declare function createServer(fixtures: Fixture[], options?: MockServerOptions,
30
36
  handler: Mountable;
31
37
  }>, serviceFixtures?: ServiceFixtures): Promise<ServerInstance>;
32
38
  /** @internal Config startup uses this to avoid parsing a selected auth source twice. */
33
-
34
39
  //#endregion
35
40
  export { ServerInstance, ServiceFixtures, createServer };
36
41
  //# sourceMappingURL=server.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.cts","names":[],"sources":["../src/server.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;UAyHiB,cAAA;EAAA,MAAA,EACP,MAAA,CAAK,MADgB;EAAA,OAAA,EAEpB,OAFoB;KACrB,EAAA,MAAK;UACJ,EAEC,eAFD;aAEC,EACG,aADH;qBACG,EACQ,qBADR;cACQ,EACP,cADO;eACP,EACC,eADD;;AACgB,UAyqCf,eAAA,CAzqCe;EAyqCf,MAAA,EACP,aADsB,EAAA;EAAA,MAAA,EAEtB,aAFsB,EAAA;YACtB,EAEI,iBAFJ,EAAA;;AAEI,iBAMQ,YAAA,CANR,QAAA,EAOF,OAPE,EAAA,EAAA,OAAA,CAAA,EAQF,iBARE,EAAA,MAMoB,CANpB,EASH,KATG,CAAA;EAAiB,IAAA,EAAA,MAAA;EAMT,OAAA,EAGoB,SAHR;CAAA,CAAA,EAAA,eAAA,CAAA,EAId,eAJc,CAAA,EAK/B,OAL+B,CAKvB,cALuB,CAAA"}
1
+ {"version":3,"file":"server.d.cts","names":[],"sources":["../src/server.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;UAyHiB,cAAA;EAAA,MAAA,EACP,MAAA,CAAK,MADgB;EAAA,OAAA,EAEpB,OAFoB;KACrB,EAAA,MAAK;UACJ,EAEC,eAFD;aAEC,EACG,aADH;qBACG,EACQ,qBADR;cACQ,EACP,cADO;eACP,EACC,eADD;;;AAorChB;;;;;UAAiB,eAAA;UACP;UACA;cACI;;iBAMQ,YAAA,WACV,qBACA,4BACD;;WAA+B;sBACtB,kBACjB,QAAQ"}
package/dist/server.d.ts CHANGED
@@ -20,6 +20,12 @@ interface ServerInstance {
20
20
  veoVideoJobs: VeoVideoJobMap;
21
21
  grokVideoJobs: GrokVideoJobMap;
22
22
  }
23
+ /**
24
+ * The per-server state a full reset clears. `ServerInstance` structurally
25
+ * satisfies this, so `LLMock.reset()` and the control-API full-reset route
26
+ * share a single definition of "everything" instead of two lists that drift.
27
+ */
28
+
23
29
  interface ServiceFixtures {
24
30
  search: SearchFixture[];
25
31
  rerank: RerankFixture[];
@@ -30,7 +36,6 @@ declare function createServer(fixtures: Fixture[], options?: MockServerOptions,
30
36
  handler: Mountable;
31
37
  }>, serviceFixtures?: ServiceFixtures): Promise<ServerInstance>;
32
38
  /** @internal Config startup uses this to avoid parsing a selected auth source twice. */
33
-
34
39
  //#endregion
35
40
  export { ServerInstance, ServiceFixtures, createServer };
36
41
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","names":[],"sources":["../src/server.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;UAyHiB,cAAA;EAAA,MAAA,EACP,MAAA,CAAK,MADgB;EAAA,OAAA,EAEpB,OAFoB;KACrB,EAAA,MAAK;UACJ,EAEC,eAFD;aAEC,EACG,aADH;qBACG,EACQ,qBADR;cACQ,EACP,cADO;eACP,EACC,eADD;;AACgB,UAyqCf,eAAA,CAzqCe;EAyqCf,MAAA,EACP,aADsB,EAAA;EAAA,MAAA,EAEtB,aAFsB,EAAA;YACtB,EAEI,iBAFJ,EAAA;;AAEI,iBAMQ,YAAA,CANR,QAAA,EAOF,OAPE,EAAA,EAAA,OAAA,CAAA,EAQF,iBARE,EAAA,MAMoB,CANpB,EASH,KATG,CAAA;EAAiB,IAAA,EAAA,MAAA;EAMT,OAAA,EAGoB,SAHR;CAAA,CAAA,EAAA,eAAA,CAAA,EAId,eAJc,CAAA,EAK/B,OAL+B,CAKvB,cALuB,CAAA"}
1
+ {"version":3,"file":"server.d.ts","names":[],"sources":["../src/server.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;UAyHiB,cAAA;EAAA,MAAA,EACP,MAAA,CAAK,MADgB;EAAA,OAAA,EAEpB,OAFoB;KACrB,EAAA,MAAK;UACJ,EAEC,eAFD;aAEC,EACG,aADH;qBACG,EACQ,qBADR;cACQ,EACP,cADO;eACP,EACC,eADD;;;AAorChB;;;;;UAAiB,eAAA;UACP;UACA;cACI;;iBAMQ,YAAA,WACV,qBACA,4BACD;;WAA+B;sBACtB,kBACjB,QAAQ"}
package/dist/server.js CHANGED
@@ -143,23 +143,31 @@ function handleNotFound(res, message) {
143
143
  }
144
144
  const CONTROL_PREFIX = "/__aimock";
145
145
  /**
146
- * Perform a full fixtures reset: clear the fixtures array, journal, video/fal
147
- * generation state, and the interaction/event-id counters, then zero the
148
- * `aimock_fixtures_loaded` gauge. Shared by `/reset/fixtures` and the
149
- * deprecated `/reset` alias.
146
+ * Perform a full reset: clear the fixtures array, the journal (entries *and*
147
+ * per-test fixture match-counts, i.e. sequence position), the video and fal.ai
148
+ * job/queue state, and the Gemini interaction/event-id counters, then re-zero
149
+ * the `aimock_fixtures_loaded` gauge.
150
+ *
151
+ * `targets` is `null` when no server is running (an in-process `reset()` before
152
+ * `start()`). The process-global generation state is reset either way, since it
153
+ * is not owned by any one server instance.
154
+ *
155
+ * Shared by `POST /__aimock/reset` (canonical), its deprecated
156
+ * `POST /__aimock/reset/fixtures` alias, and `LLMock.reset()`.
150
157
  */
151
- function performFixturesReset(fixtures, journal, videoStates, openRouterVideoJobs, veoVideoJobs, grokVideoJobs, defaults) {
158
+ function performFullReset(fixtures, targets) {
152
159
  fixtures.length = 0;
153
- journal.clear();
154
- videoStates.clear();
155
- openRouterVideoJobs.clear();
156
- veoVideoJobs.clear();
157
- grokVideoJobs.clear();
158
160
  falJobs.clear();
159
161
  falQueueStates.clear();
160
162
  resetInteractionCounter();
161
163
  resetEventIdCounter();
162
- if (defaults.registry) defaults.registry.setGauge("aimock_fixtures_loaded", {}, fixtures.length);
164
+ if (!targets) return;
165
+ targets.journal.clear();
166
+ targets.videoStates.clear();
167
+ targets.openRouterVideoJobs.clear();
168
+ targets.veoVideoJobs.clear();
169
+ targets.grokVideoJobs.clear();
170
+ if (targets.defaults.registry) targets.defaults.registry.setGauge("aimock_fixtures_loaded", {}, fixtures.length);
163
171
  }
164
172
  /**
165
173
  * Handle requests under `/__aimock/`. Returns `true` if the request was
@@ -228,8 +236,16 @@ async function handleControlAPI(req, res, pathname, fixtures, journal, videoStat
228
236
  res.end(JSON.stringify({ cleared: true }));
229
237
  return true;
230
238
  }
231
- if (subPath === "/reset/fixtures" && req.method === "POST") {
232
- performFixturesReset(fixtures, journal, videoStates, openRouterVideoJobs, veoVideoJobs, grokVideoJobs, defaults);
239
+ const resetTargets = () => ({
240
+ journal,
241
+ videoStates,
242
+ openRouterVideoJobs,
243
+ veoVideoJobs,
244
+ grokVideoJobs,
245
+ defaults
246
+ });
247
+ if (subPath === "/reset" && req.method === "POST") {
248
+ performFullReset(fixtures, resetTargets());
233
249
  res.writeHead(200, { "Content-Type": "application/json" });
234
250
  res.end(JSON.stringify({ reset: true }));
235
251
  return true;
@@ -240,10 +256,10 @@ async function handleControlAPI(req, res, pathname, fixtures, journal, videoStat
240
256
  res.end(JSON.stringify({ reset: true }));
241
257
  return true;
242
258
  }
243
- if (subPath === "/reset" && req.method === "POST") {
244
- performFixturesReset(fixtures, journal, videoStates, openRouterVideoJobs, veoVideoJobs, grokVideoJobs, defaults);
245
- const deprecation = "POST /__aimock/reset is deprecated; use POST /__aimock/reset/fixtures (full reset) or POST /__aimock/reset/journal (journal only)";
246
- defaults.logger.warn("POST /__aimock/reset is deprecated; use /__aimock/reset/fixtures or /__aimock/reset/journal");
259
+ if (subPath === "/reset/fixtures" && req.method === "POST") {
260
+ performFullReset(fixtures, resetTargets());
261
+ const deprecation = "POST /__aimock/reset/fixtures is deprecated; use POST /__aimock/reset (full reset) or POST /__aimock/reset/journal (journal only)";
262
+ defaults.logger.warn("POST /__aimock/reset/fixtures is deprecated; use /__aimock/reset or /__aimock/reset/journal");
247
263
  res.writeHead(200, {
248
264
  "Content-Type": "application/json",
249
265
  Deprecation: "true"
@@ -1936,5 +1952,5 @@ async function createServerWithResolvedAuth(fixtures, options, resolvedAuth, mou
1936
1952
  }
1937
1953
 
1938
1954
  //#endregion
1939
- export { createServer, createServerWithResolvedAuth };
1955
+ export { createServer, createServerWithResolvedAuth, performFullReset };
1940
1956
  //# sourceMappingURL=server.js.map