@copilotkit/aimock 1.39.0 → 1.40.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 (50) 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 +1 -0
  5. package/dist/agui-handler.d.cts.map +1 -1
  6. package/dist/agui-stub.d.cts +2 -2
  7. package/dist/agui-stub.d.ts +2 -2
  8. package/dist/agui-types.d.cts +66 -3
  9. package/dist/agui-types.d.cts.map +1 -1
  10. package/dist/agui-types.d.ts +66 -3
  11. package/dist/agui-types.d.ts.map +1 -1
  12. package/dist/config-loader.d.cts.map +1 -1
  13. package/dist/config-loader.d.ts.map +1 -1
  14. package/dist/helpers.cjs +8 -4
  15. package/dist/helpers.cjs.map +1 -1
  16. package/dist/helpers.d.cts.map +1 -1
  17. package/dist/helpers.d.ts.map +1 -1
  18. package/dist/helpers.js +8 -4
  19. package/dist/helpers.js.map +1 -1
  20. package/dist/index.d.cts +2 -2
  21. package/dist/index.d.ts +2 -2
  22. package/dist/openrouter-chat.cjs +41 -0
  23. package/dist/openrouter-chat.cjs.map +1 -1
  24. package/dist/openrouter-chat.js +41 -0
  25. package/dist/openrouter-chat.js.map +1 -1
  26. package/dist/recorder.cjs +77 -8
  27. package/dist/recorder.cjs.map +1 -1
  28. package/dist/recorder.d.cts.map +1 -1
  29. package/dist/recorder.d.ts.map +1 -1
  30. package/dist/recorder.js +77 -8
  31. package/dist/recorder.js.map +1 -1
  32. package/dist/server.cjs +46 -0
  33. package/dist/server.cjs.map +1 -1
  34. package/dist/server.d.cts.map +1 -1
  35. package/dist/server.d.ts.map +1 -1
  36. package/dist/server.js +46 -0
  37. package/dist/server.js.map +1 -1
  38. package/dist/stream-collapse.cjs +20 -6
  39. package/dist/stream-collapse.cjs.map +1 -1
  40. package/dist/stream-collapse.d.cts +16 -0
  41. package/dist/stream-collapse.d.cts.map +1 -1
  42. package/dist/stream-collapse.d.ts +16 -0
  43. package/dist/stream-collapse.d.ts.map +1 -1
  44. package/dist/stream-collapse.js +20 -6
  45. package/dist/stream-collapse.js.map +1 -1
  46. package/dist/types.d.cts +22 -3
  47. package/dist/types.d.cts.map +1 -1
  48. package/dist/types.d.ts +22 -3
  49. package/dist/types.d.ts.map +1 -1
  50. package/package.json +3 -2
package/dist/server.cjs CHANGED
@@ -189,6 +189,11 @@ async function handleControlAPI(req, res, pathname, fixtures, journal, videoStat
189
189
  res.end(JSON.stringify(journal.getAll()));
190
190
  return true;
191
191
  }
192
+ if (subPath === "/fixtures" && req.method === "GET") {
193
+ res.writeHead(200, { "Content-Type": "application/json" });
194
+ res.end(JSON.stringify({ count: fixtures.length }));
195
+ return true;
196
+ }
192
197
  if (subPath === "/fixtures" && req.method === "POST") {
193
198
  let raw;
194
199
  try {
@@ -1855,7 +1860,48 @@ async function createServerWithResolvedAuth(fixtures, options, resolvedAuth, mou
1855
1860
  if (!socket.destroyed) socket.destroy();
1856
1861
  });
1857
1862
  });
1863
+ /**
1864
+ * Body bytes the platform already parsed onto `req` for an upgrade request.
1865
+ *
1866
+ * Node >= 26 delivers an upgrade request's body here and leaves `head`
1867
+ * empty; Node <= 24 leaves the body in `head` and ends `req` with nothing.
1868
+ * The stream has already ended in both cases, so this resolves on the next
1869
+ * tick either way — it never waits on the network.
1870
+ */
1871
+ function drainParsedRequestBody(req) {
1872
+ return new Promise((resolve) => {
1873
+ const chunks = [];
1874
+ let settled = false;
1875
+ const done = () => {
1876
+ if (settled) return;
1877
+ settled = true;
1878
+ resolve(Buffer.concat(chunks));
1879
+ };
1880
+ req.on("data", (c) => chunks.push(c));
1881
+ req.on("end", done);
1882
+ req.on("error", done);
1883
+ req.on("close", done);
1884
+ req.resume();
1885
+ });
1886
+ }
1858
1887
  async function handleUpgradeRequest(req, socket, head) {
1888
+ if ((req.headers.upgrade ?? "").toLowerCase() !== "websocket") {
1889
+ const parsedBody = await drainParsedRequestBody(req);
1890
+ const requestLine = `${req.method} ${req.url} HTTP/${req.httpVersion}\r\n`;
1891
+ const headerLines = [];
1892
+ for (let i = 0; i < req.rawHeaders.length; i += 2) {
1893
+ if (/^(?:upgrade|connection)$/i.test(req.rawHeaders[i])) continue;
1894
+ headerLines.push(`${req.rawHeaders[i]}: ${req.rawHeaders[i + 1]}`);
1895
+ }
1896
+ const rebuilt = Buffer.from(requestLine + headerLines.join("\r\n") + "\r\n\r\n");
1897
+ socket.unshift(Buffer.concat([
1898
+ rebuilt,
1899
+ parsedBody,
1900
+ head
1901
+ ]));
1902
+ server.emit("connection", socket);
1903
+ return;
1904
+ }
1859
1905
  const parsedUrl = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
1860
1906
  let pathname = parsedUrl.pathname;
1861
1907
  if (!require_api_key_auth.validateRequestApiKey(req, resolvedAuth.policy).ok) {