@sesamespace/hivemind 0.8.3 → 0.8.5

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 (37) hide show
  1. package/.pnpmrc.json +1 -0
  2. package/DASHBOARD-PLAN.md +206 -0
  3. package/TOOL-USE-DESIGN.md +173 -0
  4. package/config/default.toml +3 -1
  5. package/dist/{chunk-ZR23DEZ6.js → chunk-ELRUZHT5.js} +2 -2
  6. package/dist/{chunk-DODOQGIL.js → chunk-ESY7ZS46.js} +29 -11
  7. package/dist/chunk-ESY7ZS46.js.map +1 -0
  8. package/dist/{chunk-X54OQAJA.js → chunk-FQ2HFJDZ.js} +2 -2
  9. package/dist/{chunk-VCITLDMK.js → chunk-Q5ZO5WXM.js} +242 -28
  10. package/dist/chunk-Q5ZO5WXM.js.map +1 -0
  11. package/dist/{chunk-YWQZZS43.js → chunk-TRRT2WFH.js} +2 -2
  12. package/dist/{chunk-HSNWMYVC.js → chunk-TTL73U2P.js} +3 -3
  13. package/dist/commands/fleet.js +3 -3
  14. package/dist/commands/init.js +1 -1
  15. package/dist/commands/start.js +3 -3
  16. package/dist/commands/watchdog.js +3 -3
  17. package/dist/index.js +2 -2
  18. package/dist/main.js +6 -6
  19. package/dist/start.js +1 -1
  20. package/docs/TOOL-PARITY-PLAN.md +191 -0
  21. package/package.json +22 -25
  22. package/dist/chunk-DODOQGIL.js.map +0 -1
  23. package/dist/chunk-VCITLDMK.js.map +0 -1
  24. package/install.sh +0 -131
  25. package/packages/memory/Cargo.lock +0 -6480
  26. package/packages/memory/Cargo.toml +0 -21
  27. package/packages/memory/src/src/context.rs +0 -179
  28. package/packages/memory/src/src/embeddings.rs +0 -51
  29. package/packages/memory/src/src/main.rs +0 -626
  30. package/packages/memory/src/src/promotion.rs +0 -637
  31. package/packages/memory/src/src/scoring.rs +0 -131
  32. package/packages/memory/src/src/store.rs +0 -460
  33. package/packages/memory/src/src/tasks.rs +0 -321
  34. /package/dist/{chunk-ZR23DEZ6.js.map → chunk-ELRUZHT5.js.map} +0 -0
  35. /package/dist/{chunk-X54OQAJA.js.map → chunk-FQ2HFJDZ.js.map} +0 -0
  36. /package/dist/{chunk-YWQZZS43.js.map → chunk-TRRT2WFH.js.map} +0 -0
  37. /package/dist/{chunk-HSNWMYVC.js.map → chunk-TTL73U2P.js.map} +0 -0
@@ -3,18 +3,92 @@ import {
3
3
  } from "./chunk-GPI4RU7N.js";
4
4
 
5
5
  // packages/runtime/src/llm-client.ts
6
+ function convertMessagesForAnthropic(messages) {
7
+ let system = "";
8
+ const converted = [];
9
+ for (const msg of messages) {
10
+ if (msg.role === "system") {
11
+ system = msg.content ?? "";
12
+ continue;
13
+ }
14
+ if (msg.role === "tool") {
15
+ converted.push({
16
+ role: "user",
17
+ content: [{
18
+ type: "tool_result",
19
+ tool_use_id: msg.tool_call_id,
20
+ content: msg.content ?? ""
21
+ }]
22
+ });
23
+ continue;
24
+ }
25
+ if (msg.role === "assistant" && msg.tool_calls) {
26
+ const content = [];
27
+ if (msg.content) content.push({ type: "text", text: msg.content });
28
+ for (const tc of msg.tool_calls) {
29
+ content.push({
30
+ type: "tool_use",
31
+ id: tc.id,
32
+ name: tc.function.name,
33
+ input: JSON.parse(tc.function.arguments)
34
+ });
35
+ }
36
+ converted.push({ role: "assistant", content });
37
+ continue;
38
+ }
39
+ converted.push({ role: msg.role, content: msg.content ?? "" });
40
+ }
41
+ return { system, messages: converted };
42
+ }
43
+ function convertToolsForAnthropic(tools) {
44
+ return tools.map((t) => ({
45
+ name: t.function.name,
46
+ description: t.function.description,
47
+ input_schema: t.function.parameters
48
+ }));
49
+ }
50
+ function parseAnthropicResponse(data) {
51
+ let textContent = "";
52
+ const toolCalls = [];
53
+ for (const block of data.content) {
54
+ if (block.type === "text") textContent += block.text;
55
+ if (block.type === "tool_use") {
56
+ toolCalls.push({
57
+ id: block.id,
58
+ type: "function",
59
+ function: {
60
+ name: block.name,
61
+ arguments: JSON.stringify(block.input)
62
+ }
63
+ });
64
+ }
65
+ }
66
+ return {
67
+ content: textContent,
68
+ model: data.model,
69
+ tool_calls: toolCalls.length > 0 ? toolCalls : void 0,
70
+ finish_reason: data.stop_reason === "tool_use" ? "tool_calls" : "stop",
71
+ usage: data.usage ? {
72
+ prompt_tokens: data.usage.input_tokens,
73
+ completion_tokens: data.usage.output_tokens,
74
+ total_tokens: data.usage.input_tokens + data.usage.output_tokens
75
+ } : void 0
76
+ };
77
+ }
6
78
  var LLMClient = class {
7
79
  baseUrl;
8
80
  model;
9
81
  maxTokens;
10
82
  temperature;
11
83
  apiKey;
84
+ provider;
12
85
  constructor(config) {
13
86
  this.baseUrl = config.base_url;
14
87
  this.model = config.model;
15
88
  this.maxTokens = config.max_tokens;
16
89
  this.temperature = config.temperature;
17
90
  this.apiKey = config.api_key ?? "";
91
+ this.provider = config.provider ?? "openai";
18
92
  }
19
93
  /**
20
94
  * Simple chat completion (no tools). Backwards compatible.
@@ -27,6 +101,13 @@ var LLMClient = class {
27
101
  * Returns tool_calls if the model wants to use tools.
28
102
  */
29
103
  async chatWithTools(messages, tools) {
104
+ if (this.provider === "anthropic") {
105
+ return this.chatAnthropic(messages, tools);
106
+ }
107
+ return this.chatOpenAI(messages, tools);
108
+ }
109
+ // --- OpenAI-compatible path (OpenRouter, etc.) ---
110
+ async chatOpenAI(messages, tools) {
30
111
  const body = {
31
112
  model: this.model,
32
113
  messages,
@@ -75,6 +156,54 @@ var LLMClient = class {
75
156
  }
76
157
  throw lastError ?? new Error("LLM request failed after retries");
77
158
  }
159
+ // --- Anthropic Messages API path ---
160
+ async chatAnthropic(messages, tools) {
161
+ const { system, messages: convertedMessages } = convertMessagesForAnthropic(messages);
162
+ const body = {
163
+ model: this.model,
164
+ max_tokens: this.maxTokens,
165
+ temperature: this.temperature,
166
+ messages: convertedMessages
167
+ };
168
+ if (system) {
169
+ body.system = system;
170
+ }
171
+ if (tools && tools.length > 0) {
172
+ body.tools = convertToolsForAnthropic(tools);
173
+ body.tool_choice = { type: "auto" };
174
+ }
175
+ const RETRYABLE_CODES = [429, 500, 502, 503, 529];
176
+ const MAX_RETRIES = 3;
177
+ let lastError = null;
178
+ for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
179
+ if (attempt > 0) {
180
+ const delayMs = Math.pow(2, attempt) * 1e3;
181
+ console.log(`[llm] Retry ${attempt}/${MAX_RETRIES} after ${delayMs}ms...`);
182
+ await new Promise((r) => setTimeout(r, delayMs));
183
+ }
184
+ const resp = await fetch(`${this.baseUrl}/v1/messages`, {
185
+ method: "POST",
186
+ headers: {
187
+ "Content-Type": "application/json",
188
+ "x-api-key": this.apiKey,
189
+ "anthropic-version": "2023-06-01"
190
+ },
191
+ body: JSON.stringify(body)
192
+ });
193
+ if (!resp.ok) {
194
+ const text = await resp.text();
195
+ lastError = new Error(`Anthropic request failed: ${resp.status} ${text}`);
196
+ if (RETRYABLE_CODES.includes(resp.status) && attempt < MAX_RETRIES) {
197
+ console.warn(`[llm] Retryable error ${resp.status}: ${text.slice(0, 200)}`);
198
+ continue;
199
+ }
200
+ throw lastError;
201
+ }
202
+ const data = await resp.json();
203
+ return parseAnthropicResponse(data);
204
+ }
205
+ throw lastError ?? new Error("Anthropic request failed after retries");
206
+ }
78
207
  };
79
208
 
80
209
  // packages/runtime/src/memory-client.ts
@@ -2336,6 +2465,16 @@ function loadConfig(path) {
2336
2465
  if (process.env.LLM_API_KEY) {
2337
2466
  parsed.llm.api_key = process.env.LLM_API_KEY;
2338
2467
  }
2468
+ if (process.env.ANTHROPIC_API_KEY && !parsed.llm.api_key) {
2469
+ parsed.llm.api_key = process.env.ANTHROPIC_API_KEY;
2470
+ if (!parsed.llm.provider) parsed.llm.provider = "anthropic";
2471
+ if (!process.env.LLM_BASE_URL && parsed.llm.base_url.includes("openrouter")) {
2472
+ parsed.llm.base_url = "https://api.anthropic.com";
2473
+ }
2474
+ }
2475
+ if (process.env.LLM_PROVIDER) {
2476
+ parsed.llm.provider = process.env.LLM_PROVIDER;
2477
+ }
2339
2478
  if (process.env.LLM_BASE_URL) {
2340
2479
  parsed.llm.base_url = process.env.LLM_BASE_URL;
2341
2480
  }
@@ -5465,15 +5604,83 @@ function truncate2(text) {
5465
5604
  return text;
5466
5605
  }
5467
5606
 
5468
- // packages/runtime/src/tools/register.ts
5607
+ // packages/runtime/src/tools/coding-agent.ts
5608
+ import { execSync as execSync7 } from "child_process";
5469
5609
  import { resolve as resolve16 } from "path";
5610
+ var MAX_OUTPUT6 = 5e4;
5611
+ function registerCodingAgentTools(registry, workspaceDir) {
5612
+ registry.register(
5613
+ "coding_agent",
5614
+ "Spawn Claude Code CLI to perform a coding task. Use for writing code, debugging, refactoring, or any task that benefits from an AI coding assistant with full filesystem access. Requires the 'claude' CLI to be installed.",
5615
+ {
5616
+ type: "object",
5617
+ properties: {
5618
+ task: {
5619
+ type: "string",
5620
+ description: "The coding task or prompt to send to Claude Code"
5621
+ },
5622
+ workdir: {
5623
+ type: "string",
5624
+ description: "Working directory (relative to workspace). Defaults to workspace root."
5625
+ },
5626
+ timeout: {
5627
+ type: "number",
5628
+ description: "Timeout in seconds. Default: 300"
5629
+ }
5630
+ },
5631
+ required: ["task"]
5632
+ },
5633
+ async (params) => {
5634
+ const task = params.task;
5635
+ const timeoutSeconds = params.timeout || 300;
5636
+ const cwd = params.workdir ? resolve16(workspaceDir, params.workdir) : workspaceDir;
5637
+ try {
5638
+ execSync7("which claude", { stdio: "ignore" });
5639
+ } catch {
5640
+ return "Error: 'claude' CLI not found. Install Claude Code first: https://docs.anthropic.com/en/docs/claude-code";
5641
+ }
5642
+ const escapedTask = task.replace(/'/g, "'\\''");
5643
+ const command = `claude --dangerously-skip-permissions -p '${escapedTask}'`;
5644
+ try {
5645
+ const output = execSync7(command, {
5646
+ cwd,
5647
+ timeout: timeoutSeconds * 1e3,
5648
+ encoding: "utf-8",
5649
+ maxBuffer: 10 * 1024 * 1024,
5650
+ // 10MB
5651
+ shell: "/bin/sh",
5652
+ env: {
5653
+ ...process.env,
5654
+ PATH: `/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:${process.env.PATH}`
5655
+ }
5656
+ });
5657
+ const trimmed = output.length > MAX_OUTPUT6 ? output.slice(0, MAX_OUTPUT6) + `
5658
+ ... (truncated, ${output.length} total chars)` : output;
5659
+ return trimmed || "(no output)";
5660
+ } catch (err) {
5661
+ if (err.killed) {
5662
+ return `Error: Claude Code timed out after ${timeoutSeconds}s`;
5663
+ }
5664
+ const stderr = err.stderr?.toString() || "";
5665
+ const stdout = err.stdout?.toString() || "";
5666
+ const output = (stdout + "\n" + stderr).trim();
5667
+ const code = err.status ?? "unknown";
5668
+ return `Claude Code failed (exit code ${code}):
5669
+ ${output || err.message}`;
5670
+ }
5671
+ }
5672
+ );
5673
+ }
5674
+
5675
+ // packages/runtime/src/tools/register.ts
5676
+ import { resolve as resolve17 } from "path";
5470
5677
  import { mkdirSync as mkdirSync12, existsSync as existsSync15 } from "fs";
5471
5678
  function registerAllTools(hivemindHome, config) {
5472
5679
  const registry = new ToolRegistry();
5473
5680
  if (config?.enabled === false) {
5474
5681
  return registry;
5475
5682
  }
5476
- const workspaceDir = resolve16(hivemindHome, config?.workspace || "workspace");
5683
+ const workspaceDir = resolve17(hivemindHome, config?.workspace || "workspace");
5477
5684
  if (!existsSync15(workspaceDir)) {
5478
5685
  mkdirSync12(workspaceDir, { recursive: true });
5479
5686
  }
@@ -5481,7 +5688,7 @@ function registerAllTools(hivemindHome, config) {
5481
5688
  registerFileTools(registry, workspaceDir);
5482
5689
  registerWebTools(registry, { braveApiKey: config?.braveApiKey });
5483
5690
  registerMemoryTools(registry, config?.memoryDaemonUrl || "http://localhost:3434");
5484
- const dataDir = resolve16(hivemindHome, "data");
5691
+ const dataDir = resolve17(hivemindHome, "data");
5485
5692
  registerEventTools(registry, dataDir);
5486
5693
  if (config?.configPath && !process.env.SPAWN_TASK) {
5487
5694
  registerSpawnTools(registry, hivemindHome, dataDir, config.configPath);
@@ -5494,6 +5701,7 @@ function registerAllTools(hivemindHome, config) {
5494
5701
  registerWatchTools(registry, workspaceDir, dataDir);
5495
5702
  registerMacOSTools(registry, workspaceDir);
5496
5703
  registerDataTools(registry, workspaceDir);
5704
+ registerCodingAgentTools(registry, workspaceDir);
5497
5705
  return registry;
5498
5706
  }
5499
5707
 
@@ -5531,9 +5739,9 @@ function registerMessagingTools(registry, sesame) {
5531
5739
 
5532
5740
  // packages/runtime/src/tools/skills-tools.ts
5533
5741
  import { existsSync as existsSync16, mkdirSync as mkdirSync13, writeFileSync as writeFileSync6, rmSync } from "fs";
5534
- import { resolve as resolve17 } from "path";
5742
+ import { resolve as resolve18 } from "path";
5535
5743
  function registerSkillsTools(registry, skillsEngine, workspaceDir) {
5536
- const skillsDir = resolve17(workspaceDir, "skills");
5744
+ const skillsDir = resolve18(workspaceDir, "skills");
5537
5745
  registry.register(
5538
5746
  "skill_list",
5539
5747
  "List all loaded skills with their registered tools and status.",
@@ -5600,7 +5808,7 @@ ${lines.join("\n\n")}`;
5600
5808
  const name = params.name;
5601
5809
  const description = params.description;
5602
5810
  const tools = params.tools;
5603
- const skillDir = resolve17(skillsDir, name);
5811
+ const skillDir = resolve18(skillsDir, name);
5604
5812
  if (existsSync16(skillDir)) {
5605
5813
  return `Error: Skill directory "${name}" already exists. Use skill_reload to update it.`;
5606
5814
  }
@@ -5614,7 +5822,7 @@ description: "${description}"
5614
5822
 
5615
5823
  ${description}
5616
5824
  `;
5617
- writeFileSync6(resolve17(skillDir, "SKILL.md"), skillMd);
5825
+ writeFileSync6(resolve18(skillDir, "SKILL.md"), skillMd);
5618
5826
  if (tools && tools.length > 0) {
5619
5827
  const toolsDef = {
5620
5828
  tools: tools.map((t) => ({
@@ -5624,7 +5832,7 @@ ${description}
5624
5832
  command: t.command
5625
5833
  }))
5626
5834
  };
5627
- writeFileSync6(resolve17(skillDir, "tools.json"), JSON.stringify(toolsDef, null, 2) + "\n");
5835
+ writeFileSync6(resolve18(skillDir, "tools.json"), JSON.stringify(toolsDef, null, 2) + "\n");
5628
5836
  }
5629
5837
  try {
5630
5838
  await skillsEngine.loadSkill(name);
@@ -5677,7 +5885,7 @@ Path: ${skillDir}`;
5677
5885
  },
5678
5886
  async (params) => {
5679
5887
  const name = params.name;
5680
- const skillDir = resolve17(skillsDir, name);
5888
+ const skillDir = resolve18(skillsDir, name);
5681
5889
  if (!existsSync16(skillDir)) {
5682
5890
  return `Error: Skill directory "${name}" does not exist.`;
5683
5891
  }
@@ -5698,12 +5906,12 @@ Path: ${skillDir}`;
5698
5906
 
5699
5907
  // packages/runtime/src/pipeline.ts
5700
5908
  import { readFileSync as readFileSync12, writeFileSync as writeFileSync7, unlinkSync as unlinkSync3 } from "fs";
5701
- import { resolve as resolve18, dirname as dirname7 } from "path";
5909
+ import { resolve as resolve19, dirname as dirname7 } from "path";
5702
5910
  import { fileURLToPath as fileURLToPath3 } from "url";
5703
5911
  var PACKAGE_VERSION = "unknown";
5704
5912
  try {
5705
5913
  const __dirname2 = dirname7(fileURLToPath3(import.meta.url));
5706
- const pkg = JSON.parse(readFileSync12(resolve18(__dirname2, "../package.json"), "utf-8"));
5914
+ const pkg = JSON.parse(readFileSync12(resolve19(__dirname2, "../package.json"), "utf-8"));
5707
5915
  PACKAGE_VERSION = pkg.version ?? "unknown";
5708
5916
  } catch {
5709
5917
  }
@@ -5768,12 +5976,18 @@ async function startPipeline(configPath) {
5768
5976
  } else {
5769
5977
  memoryConnected = true;
5770
5978
  console.log("[hivemind] Memory daemon connected");
5979
+ try {
5980
+ await memory.createContext("global", "Global context \u2014 identity, preferences, cross-cutting knowledge");
5981
+ console.log("[hivemind] Global context registered with memory daemon");
5982
+ } catch {
5983
+ console.log("[hivemind] Global context already exists in memory daemon");
5984
+ }
5771
5985
  }
5772
- const requestLogger = new RequestLogger(resolve18(dirname7(configPath), "data", "dashboard.db"));
5986
+ const requestLogger = new RequestLogger(resolve19(dirname7(configPath), "data", "dashboard.db"));
5773
5987
  startDashboardServer(requestLogger, config.memory);
5774
5988
  const agent = new Agent(config);
5775
5989
  agent.setRequestLogger(requestLogger);
5776
- const hivemindHome = process.env.HIVEMIND_HOME || resolve18(process.env.HOME || "/root", "hivemind");
5990
+ const hivemindHome = process.env.HIVEMIND_HOME || resolve19(process.env.HOME || "/root", "hivemind");
5777
5991
  const toolRegistry = registerAllTools(hivemindHome, {
5778
5992
  enabled: true,
5779
5993
  workspace: config.agent.workspace || "workspace",
@@ -5781,7 +5995,7 @@ async function startPipeline(configPath) {
5781
5995
  memoryDaemonUrl: config.memory.daemon_url,
5782
5996
  configPath
5783
5997
  });
5784
- const workspaceDir = resolve18(hivemindHome, config.agent.workspace || "workspace");
5998
+ const workspaceDir = resolve19(hivemindHome, config.agent.workspace || "workspace");
5785
5999
  const skillsEngine = new SkillsEngine(workspaceDir, toolRegistry);
5786
6000
  await skillsEngine.loadAll();
5787
6001
  registerSkillsTools(toolRegistry, skillsEngine, workspaceDir);
@@ -5789,7 +6003,7 @@ async function startPipeline(configPath) {
5789
6003
  process.on("exit", () => skillsEngine.stopWatching());
5790
6004
  agent.setToolRegistry(toolRegistry);
5791
6005
  console.log(`[hivemind] Context manager initialized (active: ${agent.getActiveContext()})`);
5792
- const dataDir = resolve18(hivemindHome, "data");
6006
+ const dataDir = resolve19(hivemindHome, "data");
5793
6007
  if (config.sesame.api_key) {
5794
6008
  await startSesameLoop(config, agent, toolRegistry, dataDir);
5795
6009
  } else {
@@ -5963,8 +6177,8 @@ ${response.content}
5963
6177
  console.error("Error:", err.message);
5964
6178
  }
5965
6179
  });
5966
- return new Promise((resolve19) => {
5967
- rl.on("close", resolve19);
6180
+ return new Promise((resolve20) => {
6181
+ rl.on("close", resolve20);
5968
6182
  });
5969
6183
  }
5970
6184
  async function runSpawnTask(config, configPath) {
@@ -5975,7 +6189,7 @@ async function runSpawnTask(config, configPath) {
5975
6189
  const spawnDir = process.env.SPAWN_DIR;
5976
6190
  console.log(`[spawn] Sub-agent starting (id: ${spawnId}, context: ${context})`);
5977
6191
  const agent = new Agent(config, context);
5978
- const hivemindHome = process.env.HIVEMIND_HOME || resolve18(process.env.HOME || "/root", "hivemind");
6192
+ const hivemindHome = process.env.HIVEMIND_HOME || resolve19(process.env.HOME || "/root", "hivemind");
5979
6193
  const toolRegistry = registerAllTools(hivemindHome, {
5980
6194
  enabled: true,
5981
6195
  workspace: config.agent.workspace || "workspace",
@@ -5988,7 +6202,7 @@ async function runSpawnTask(config, configPath) {
5988
6202
  const result = response.content;
5989
6203
  console.log(`[spawn] Task completed (context: ${response.context})`);
5990
6204
  if (spawnDir) {
5991
- writeFileSync7(resolve18(spawnDir, "result.txt"), result);
6205
+ writeFileSync7(resolve19(spawnDir, "result.txt"), result);
5992
6206
  }
5993
6207
  if (channelId && config.sesame.api_key) {
5994
6208
  try {
@@ -6005,7 +6219,7 @@ async function runSpawnTask(config, configPath) {
6005
6219
  const errorMsg = `[SPAWN ERROR] ${err.message}`;
6006
6220
  console.error(`[spawn] ${errorMsg}`);
6007
6221
  if (spawnDir) {
6008
- writeFileSync7(resolve18(spawnDir, "result.txt"), errorMsg);
6222
+ writeFileSync7(resolve19(spawnDir, "result.txt"), errorMsg);
6009
6223
  }
6010
6224
  process.exitCode = 1;
6011
6225
  }
@@ -6036,20 +6250,20 @@ var WorkerServer = class {
6036
6250
  }
6037
6251
  /** Start listening. */
6038
6252
  async start() {
6039
- return new Promise((resolve19, reject) => {
6253
+ return new Promise((resolve20, reject) => {
6040
6254
  this.server = createServer4((req, res) => this.handleRequest(req, res));
6041
6255
  this.server.on("error", reject);
6042
- this.server.listen(this.port, () => resolve19());
6256
+ this.server.listen(this.port, () => resolve20());
6043
6257
  });
6044
6258
  }
6045
6259
  /** Stop the server. */
6046
6260
  async stop() {
6047
- return new Promise((resolve19) => {
6261
+ return new Promise((resolve20) => {
6048
6262
  if (!this.server) {
6049
- resolve19();
6263
+ resolve20();
6050
6264
  return;
6051
6265
  }
6052
- this.server.close(() => resolve19());
6266
+ this.server.close(() => resolve20());
6053
6267
  });
6054
6268
  }
6055
6269
  getPort() {
@@ -6172,10 +6386,10 @@ var WorkerServer = class {
6172
6386
  }
6173
6387
  };
6174
6388
  function readBody(req) {
6175
- return new Promise((resolve19, reject) => {
6389
+ return new Promise((resolve20, reject) => {
6176
6390
  const chunks = [];
6177
6391
  req.on("data", (chunk) => chunks.push(chunk));
6178
- req.on("end", () => resolve19(Buffer.concat(chunks).toString("utf-8")));
6392
+ req.on("end", () => resolve20(Buffer.concat(chunks).toString("utf-8")));
6179
6393
  req.on("error", reject);
6180
6394
  });
6181
6395
  }
@@ -6509,4 +6723,4 @@ smol-toml/dist/index.js:
6509
6723
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
6510
6724
  *)
6511
6725
  */
6512
- //# sourceMappingURL=chunk-VCITLDMK.js.map
6726
+ //# sourceMappingURL=chunk-Q5ZO5WXM.js.map