svamp-cli 0.2.258 → 0.2.259

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 (26) hide show
  1. package/dist/{agentCommands-CQ89BZon.mjs → agentCommands-w72BRYhk.mjs} +6 -9
  2. package/dist/{auth-CaFsKYbx.mjs → auth-CLFNmaXL.mjs} +2 -5
  3. package/dist/cli.mjs +156 -69
  4. package/dist/{commands-DrfYv705.mjs → commands-BPxSEwAc.mjs} +3 -6
  5. package/dist/{commands-DutfM3U7.mjs → commands-BpcWHrQ7.mjs} +8 -9
  6. package/dist/{commands-D8l74hsL.mjs → commands-BtXxn3tI.mjs} +2 -5
  7. package/dist/{commands-B6eGMF5H.mjs → commands-CXiGBP6w.mjs} +2 -5
  8. package/dist/{commands--X8f4eSr.mjs → commands-D3jsQ9Sj.mjs} +8 -16
  9. package/dist/{commands-BgX0W0uK.mjs → commands-DVEsNZUB.mjs} +2 -5
  10. package/dist/{commands-Dd8xEIf0.mjs → commands-bQxTpr-M.mjs} +2 -5
  11. package/dist/{fleet-UvQnIWT1.mjs → fleet-BC9JHEWF.mjs} +3 -6
  12. package/dist/{frpc-IXxyfgPn.mjs → frpc-BCOnJSAM.mjs} +11 -10
  13. package/dist/{headlessCli-BK7WSS3D.mjs → headlessCli-fagwmUja.mjs} +3 -6
  14. package/dist/index.mjs +2 -5
  15. package/dist/{package-BdZX5mDv.mjs → package-Dn7kNPhz.mjs} +2 -2
  16. package/dist/{pinnedClaudeCode-DuLXaoGP.mjs → pinnedClaudeCode-B9O-hKxm.mjs} +1 -1
  17. package/dist/{rpc-CyACkgY1.mjs → rpc-D-1o_gWF.mjs} +2 -5
  18. package/dist/{rpc-D7DB3XCH.mjs → rpc-Dko-Fkk6.mjs} +2 -5
  19. package/dist/{run-C1ufZjIW.mjs → run-BWBtm0gY.mjs} +1 -5
  20. package/dist/{run-C1Unk4Zx.mjs → run-CT8Leg3-.mjs} +729 -425
  21. package/dist/{scheduler-7wve0Fy3.mjs → scheduler-CN8jChyQ.mjs} +2 -5
  22. package/dist/{serveCommands-iQJJLsMJ.mjs → serveCommands-sWtLnJRW.mjs} +5 -5
  23. package/dist/{serveManager-BszV0oIl.mjs → serveManager-BuXk1_SH.mjs} +122 -7
  24. package/dist/{sideband-DMPZ-ZoR.mjs → sideband-ByYvGtj3.mjs} +2 -5
  25. package/dist/{staticFileServer-FCEOLIYH.mjs → staticFileServer-CbYnj2bH.mjs} +21 -5
  26. package/package.json +2 -2
@@ -1,8 +1,8 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
- import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-D8l74hsL.mjs';
3
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-BtXxn3tI.mjs';
4
4
  import { execSync } from 'node:child_process';
5
- import { u as updateIssue, t as addComment, v as addIssue, k as shortId } from './run-C1Unk4Zx.mjs';
5
+ import { u as updateIssue, t as addComment, v as addIssue, k as shortId } from './run-CT8Leg3-.mjs';
6
6
  import 'node:os';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -15,10 +15,7 @@ import 'node:crypto';
15
15
  import 'util';
16
16
  import 'node:events';
17
17
  import '@agentclientprotocol/sdk';
18
- import '@modelcontextprotocol/sdk/client/index.js';
19
- import '@modelcontextprotocol/sdk/client/stdio.js';
20
- import '@modelcontextprotocol/sdk/types.js';
21
- import 'zod';
18
+ import 'node:readline';
22
19
  import 'node:fs/promises';
23
20
  import 'node:util';
24
21
  import 'yaml';
@@ -106,6 +103,7 @@ ${childStatus}`
106
103
  return { ok: false, stage: "merge", rework: true, detail: `merge conflict \u2014 aborted:
107
104
  ${detail.trim()}` };
108
105
  }
106
+ let cleanupWarning;
109
107
  if (!isMainWorkingTree(projectRoot, worktreePath)) try {
110
108
  git(projectRoot, `worktree remove --force ${worktreePath}`);
111
109
  } catch (e) {
@@ -120,7 +118,7 @@ ${detail.trim()}` };
120
118
  }
121
119
  if (stillRegistered) {
122
120
  const detail = e.stderr?.toString() || "" || e.message;
123
- return { ok: false, stage: "remove-worktree", detail: `merged OK but worktree removal failed: ${detail.trim()}` };
121
+ cleanupWarning = `worktree removal failed (left on disk): ${detail.trim()}. Remove manually: git worktree remove --force ${worktreePath}`;
124
122
  }
125
123
  }
126
124
  if (input.deleteBranch !== false && branch !== baseBranch) {
@@ -129,7 +127,7 @@ ${detail.trim()}` };
129
127
  } catch {
130
128
  }
131
129
  }
132
- return { ok: true, stage: "done", detail: `merged ${branch} into ${baseBranch}` };
130
+ return { ok: true, stage: "done", detail: `merged ${branch} into ${baseBranch}`, ...cleanupWarning ? { cleanupWarning } : {} };
133
131
  }
134
132
  function isMainWorkingTree(projectRoot, worktreePath) {
135
133
  if (resolve(worktreePath) === resolve(projectRoot)) return true;
@@ -612,7 +610,8 @@ Stop editing and hold \u2014 do not keep working. Once the blocker is resolved,
612
610
  console.warn(`Merged, but could not archive child: ${e.message}`);
613
611
  }
614
612
  }
615
- const cleanup = isMainWorkingTree(projectRoot, worktreePath) ? "ran in the lead tree (no worktree to remove)" : "worktree removed";
613
+ const cleanup = r.cleanupWarning ? "worktree NOT removed (see warning)" : isMainWorkingTree(projectRoot, worktreePath) ? "ran in the lead tree (no worktree to remove)" : "worktree removed";
614
+ if (r.cleanupWarning) console.warn(`\u26A0\uFE0F ${r.cleanupWarning}`);
616
615
  console.log(`\u2705 Merged ${branch} \u2192 ${base}; ${cleanup}; child ${childId.slice(0, 8)} ${opts.keepChild ? "kept" : "archived"}.`);
617
616
  } finally {
618
617
  await server.disconnect();
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { execSync } from 'node:child_process';
3
3
  import { basename, resolve, join, isAbsolute } from 'node:path';
4
4
  import os from 'node:os';
5
- import { a2 as formatHandle, a3 as normalizeAllowedUser, a4 as loadSecurityContextConfig, a5 as resolveSecurityContext, a6 as buildSecurityContextFromFlags, a7 as mergeSecurityContexts, c as connectToHypha, a8 as buildSessionShareUrl, a9 as computeOutboundHop, k as shortId, aa as registerAwaitingReply, ab as buildMachineShareUrl, ac as parseHandle, ad as handleMatchesMetadata } from './run-C1Unk4Zx.mjs';
5
+ import { a2 as formatHandle, a3 as normalizeAllowedUser, a4 as loadSecurityContextConfig, a5 as resolveSecurityContext, a6 as buildSecurityContextFromFlags, a7 as mergeSecurityContexts, c as connectToHypha, a8 as buildSessionShareUrl, a9 as computeOutboundHop, k as shortId, aa as registerAwaitingReply, ab as buildMachineShareUrl, ac as parseHandle, ad as handleMatchesMetadata } from './run-CT8Leg3-.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -14,10 +14,7 @@ import 'node:crypto';
14
14
  import 'util';
15
15
  import 'node:events';
16
16
  import '@agentclientprotocol/sdk';
17
- import '@modelcontextprotocol/sdk/client/index.js';
18
- import '@modelcontextprotocol/sdk/client/stdio.js';
19
- import '@modelcontextprotocol/sdk/types.js';
20
- import 'zod';
17
+ import 'node:readline';
21
18
  import 'node:fs/promises';
22
19
  import 'node:util';
23
20
  import 'yaml';
@@ -1,5 +1,5 @@
1
1
  import { spawnSync } from 'node:child_process';
2
- import { n as resolveProjectRoot, M as workflowSteps, D as setWorkflowEnabled, I as isWorkflowEnabled, E as removeWorkflow, B as getWorkflow, H as listWorkflows, F as saveWorkflow, G as rawWorkflow } from './run-C1Unk4Zx.mjs';
2
+ import { n as resolveProjectRoot, M as workflowSteps, D as setWorkflowEnabled, I as isWorkflowEnabled, E as removeWorkflow, B as getWorkflow, H as listWorkflows, F as saveWorkflow, G as rawWorkflow } from './run-CT8Leg3-.mjs';
3
3
  import 'os';
4
4
  import 'fs/promises';
5
5
  import 'fs';
@@ -14,10 +14,7 @@ import 'node:path';
14
14
  import 'node:events';
15
15
  import 'node:os';
16
16
  import '@agentclientprotocol/sdk';
17
- import '@modelcontextprotocol/sdk/client/index.js';
18
- import '@modelcontextprotocol/sdk/client/stdio.js';
19
- import '@modelcontextprotocol/sdk/types.js';
20
- import 'zod';
17
+ import 'node:readline';
21
18
  import 'node:fs/promises';
22
19
  import 'node:util';
23
20
  import 'yaml';
@@ -58,7 +58,7 @@ async function serviceExpose(args) {
58
58
  process.exit(1);
59
59
  }
60
60
  if (foreground) {
61
- const { runFrpcTunnel } = await import('./frpc-IXxyfgPn.mjs');
61
+ const { runFrpcTunnel } = await import('./frpc-BCOnJSAM.mjs');
62
62
  await runFrpcTunnel(name, ports, void 0, {
63
63
  group,
64
64
  groupKey,
@@ -68,7 +68,7 @@ async function serviceExpose(args) {
68
68
  });
69
69
  return;
70
70
  }
71
- const { connectAndGetMachine } = await import('./commands-D8l74hsL.mjs');
71
+ const { connectAndGetMachine } = await import('./commands-BtXxn3tI.mjs');
72
72
  const { server, machine } = await connectAndGetMachine();
73
73
  try {
74
74
  const status = await machine.tunnelStart({
@@ -90,7 +90,7 @@ async function serviceExpose(args) {
90
90
  console.log(` port ${port}: ${url}`);
91
91
  }
92
92
  if (process.env.SVAMP_SESSION_ID) {
93
- const { autoAddSessionLink } = await import('./agentCommands-CQ89BZon.mjs');
93
+ const { autoAddSessionLink } = await import('./agentCommands-w72BRYhk.mjs');
94
94
  let added = 0;
95
95
  for (const [port, url] of urlEntries) {
96
96
  const label = urlEntries.length > 1 ? `${name}:${port}` : name;
@@ -127,7 +127,7 @@ async function serviceServe(args) {
127
127
  console.log(`Serving ${resolvedDir}`);
128
128
  const servePort = 18080;
129
129
  const http = await import('http');
130
- const { serveStaticMount } = await import('./staticFileServer-FCEOLIYH.mjs');
130
+ const { serveStaticMount } = await import('./staticFileServer-CbYnj2bH.mjs');
131
131
  const server = http.createServer((req, res) => {
132
132
  const u = new URL(req.url || "/", "http://127.0.0.1");
133
133
  let rel = u.pathname;
@@ -138,16 +138,8 @@ async function serviceServe(args) {
138
138
  server.once("error", reject);
139
139
  server.listen(servePort, "127.0.0.1", () => resolve());
140
140
  });
141
- const cleanup = () => {
142
- try {
143
- server.close();
144
- } catch {
145
- }
146
- process.exit(0);
147
- };
148
- process.on("SIGINT", cleanup);
149
- process.on("SIGTERM", cleanup);
150
- const { runFrpcTunnel } = await import('./frpc-IXxyfgPn.mjs');
141
+ const { runFrpcTunnel } = await import('./frpc-BCOnJSAM.mjs');
142
+ void server;
151
143
  await runFrpcTunnel(name, [servePort]);
152
144
  } catch (err) {
153
145
  console.error(`Error serving directory: ${err.message}`);
@@ -156,7 +148,7 @@ async function serviceServe(args) {
156
148
  }
157
149
  async function serviceList(_args) {
158
150
  try {
159
- const { connectAndGetMachine } = await import('./commands-D8l74hsL.mjs');
151
+ const { connectAndGetMachine } = await import('./commands-BtXxn3tI.mjs');
160
152
  const { server, machine } = await connectAndGetMachine();
161
153
  try {
162
154
  const tunnels = await machine.tunnelList({});
@@ -196,7 +188,7 @@ async function serviceDelete(args) {
196
188
  process.exit(1);
197
189
  }
198
190
  try {
199
- const { connectAndGetMachine } = await import('./commands-D8l74hsL.mjs');
191
+ const { connectAndGetMachine } = await import('./commands-BtXxn3tI.mjs');
200
192
  const { server, machine } = await connectAndGetMachine();
201
193
  try {
202
194
  await machine.tunnelStop({ name });
@@ -1,7 +1,7 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { existsSync, readFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { n as resolveProjectRoot, x as searchIssues, w as listIssues, p as resumeIssue, q as pauseIssue, t as addComment, u as updateIssue, o as getIssue, y as isVisibleTo, L as summarize, v as addIssue } from './run-C1Unk4Zx.mjs';
4
+ import { n as resolveProjectRoot, x as searchIssues, w as listIssues, p as resumeIssue, q as pauseIssue, t as addComment, u as updateIssue, o as getIssue, y as isVisibleTo, L as summarize, v as addIssue } from './run-CT8Leg3-.mjs';
5
5
  import 'os';
6
6
  import 'fs/promises';
7
7
  import 'fs';
@@ -14,10 +14,7 @@ import 'util';
14
14
  import 'node:events';
15
15
  import 'node:os';
16
16
  import '@agentclientprotocol/sdk';
17
- import '@modelcontextprotocol/sdk/client/index.js';
18
- import '@modelcontextprotocol/sdk/client/stdio.js';
19
- import '@modelcontextprotocol/sdk/types.js';
20
- import 'zod';
17
+ import 'node:readline';
21
18
  import 'node:fs/promises';
22
19
  import 'node:util';
23
20
  import 'yaml';
@@ -1,7 +1,7 @@
1
1
  import os from 'os';
2
2
  import fs__default from 'fs';
3
3
  import { resolve, join, relative } from 'path';
4
- import { T as parseFrontmatter, U as getSkillsServer, V as getSkillsWorkspaceName, W as getSkillsCollectionName, X as fetchWithTimeout, Y as searchSkills, Z as SKILLS_DIR, _ as getSkillInfo, $ as downloadSkillFile, a0 as listSkillFiles } from './run-C1Unk4Zx.mjs';
4
+ import { T as parseFrontmatter, U as getSkillsServer, V as getSkillsWorkspaceName, W as getSkillsCollectionName, X as fetchWithTimeout, Y as searchSkills, Z as SKILLS_DIR, _ as getSkillInfo, $ as downloadSkillFile, a0 as listSkillFiles } from './run-CT8Leg3-.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
@@ -14,10 +14,7 @@ import 'node:path';
14
14
  import 'node:events';
15
15
  import 'node:os';
16
16
  import '@agentclientprotocol/sdk';
17
- import '@modelcontextprotocol/sdk/client/index.js';
18
- import '@modelcontextprotocol/sdk/client/stdio.js';
19
- import '@modelcontextprotocol/sdk/types.js';
20
- import 'zod';
17
+ import 'node:readline';
21
18
  import 'node:fs/promises';
22
19
  import 'node:util';
23
20
  import 'yaml';
@@ -1,8 +1,8 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import os from 'node:os';
4
- import { c as connectToHypha } from './run-C1Unk4Zx.mjs';
5
- import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-DuLXaoGP.mjs';
4
+ import { c as connectToHypha } from './run-CT8Leg3-.mjs';
5
+ import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-B9O-hKxm.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -15,10 +15,7 @@ import 'node:child_process';
15
15
  import 'util';
16
16
  import 'node:events';
17
17
  import '@agentclientprotocol/sdk';
18
- import '@modelcontextprotocol/sdk/client/index.js';
19
- import '@modelcontextprotocol/sdk/client/stdio.js';
20
- import '@modelcontextprotocol/sdk/types.js';
21
- import 'zod';
18
+ import 'node:readline';
22
19
  import 'node:fs/promises';
23
20
  import 'node:util';
24
21
  import 'yaml';
@@ -1,10 +1,10 @@
1
1
  import { spawn, execSync } from 'child_process';
2
2
  import { createServer } from 'net';
3
- import { mkdirSync, writeFileSync, unlinkSync, existsSync, chmodSync, readFileSync } from 'fs';
3
+ import { mkdirSync, chmodSync, writeFileSync, unlinkSync, existsSync, readFileSync } from 'fs';
4
4
  import { join } from 'path';
5
5
  import { homedir, platform, arch } from 'os';
6
6
  import { randomUUID, createHash } from 'crypto';
7
- import { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-C1Unk4Zx.mjs';
7
+ import { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-CT8Leg3-.mjs';
8
8
  import 'fs/promises';
9
9
  import 'url';
10
10
  import 'node:crypto';
@@ -15,10 +15,7 @@ import 'node:path';
15
15
  import 'node:events';
16
16
  import 'node:os';
17
17
  import '@agentclientprotocol/sdk';
18
- import '@modelcontextprotocol/sdk/client/index.js';
19
- import '@modelcontextprotocol/sdk/client/stdio.js';
20
- import '@modelcontextprotocol/sdk/types.js';
21
- import 'zod';
18
+ import 'node:readline';
22
19
  import 'node:fs/promises';
23
20
  import 'node:util';
24
21
  import 'yaml';
@@ -298,7 +295,11 @@ class FrpcTunnel {
298
295
  };
299
296
  });
300
297
  const configDir = join(homedir(), ".svamp", "frpc");
301
- mkdirSync(configDir, { recursive: true });
298
+ mkdirSync(configDir, { recursive: true, mode: 448 });
299
+ try {
300
+ chmodSync(configDir, 448);
301
+ } catch {
302
+ }
302
303
  this.configPath = join(configDir, `${options.name}.toml`);
303
304
  }
304
305
  /** Connect to frps by starting the frpc process. */
@@ -318,7 +319,7 @@ class FrpcTunnel {
318
319
  if (this._adminPort) admin = { port: this._adminPort, user: this._adminUser, password: this._adminPassword };
319
320
  }
320
321
  const configContent = generateFrpcConfig(this.serverConfig, this.proxies, admin);
321
- writeFileSync(this.configPath, configContent);
322
+ writeFileSync(this.configPath, configContent, { mode: 384 });
322
323
  this.log(`Config written to ${this.configPath}`);
323
324
  return new Promise((resolve, reject) => {
324
325
  const child = spawn(frpcPath, ["-c", this.configPath], {
@@ -374,7 +375,7 @@ class FrpcTunnel {
374
375
  resolved = true;
375
376
  reject(new Error(`frpc exited with code ${code}`));
376
377
  }
377
- if (!this._destroyed && code !== 0) {
378
+ if (!this._destroyed) {
378
379
  const STABILITY_WINDOW_MS = 3e4;
379
380
  if (this._lastConnectedAt > 0 && Date.now() - this._lastConnectedAt >= STABILITY_WINDOW_MS) {
380
381
  this._restartAttempts = 0;
@@ -629,7 +630,7 @@ class FrpcTunnel {
629
630
  this.serverConfig.hyphaToken = newToken;
630
631
  const admin = this.options.adminStatus && this._adminPort ? { port: this._adminPort, user: this._adminUser, password: this._adminPassword } : void 0;
631
632
  const configContent = generateFrpcConfig(this.serverConfig, this.proxies, admin);
632
- writeFileSync(this.configPath, configContent);
633
+ writeFileSync(this.configPath, configContent, { mode: 384 });
633
634
  this.log("Config updated with fresh token");
634
635
  }
635
636
  /** Get the public URLs for each port. */
@@ -1,5 +1,5 @@
1
- import { a1 as resolveModel, ae as describeMisconfiguration, af as buildMachineDeps } from './run-C1Unk4Zx.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-DMPZ-ZoR.mjs';
1
+ import { a1 as resolveModel, ae as describeMisconfiguration, af as buildMachineDeps } from './run-CT8Leg3-.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-ByYvGtj3.mjs';
3
3
  import { WebSocket } from 'ws';
4
4
  import { execSync, spawn } from 'child_process';
5
5
  import 'os';
@@ -16,10 +16,7 @@ import 'node:path';
16
16
  import 'node:events';
17
17
  import 'node:os';
18
18
  import '@agentclientprotocol/sdk';
19
- import '@modelcontextprotocol/sdk/client/index.js';
20
- import '@modelcontextprotocol/sdk/client/stdio.js';
21
- import '@modelcontextprotocol/sdk/types.js';
22
- import 'zod';
19
+ import 'node:readline';
23
20
  import 'node:fs/promises';
24
21
  import 'node:util';
25
22
  import 'yaml';
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { c as connectToHypha, a as createSessionStore, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, s as startDaemon, b as stopDaemon } from './run-C1Unk4Zx.mjs';
1
+ export { c as connectToHypha, a as createSessionStore, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, s as startDaemon, b as stopDaemon } from './run-CT8Leg3-.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -14,10 +14,7 @@ import 'node:path';
14
14
  import 'node:events';
15
15
  import 'node:os';
16
16
  import '@agentclientprotocol/sdk';
17
- import '@modelcontextprotocol/sdk/client/index.js';
18
- import '@modelcontextprotocol/sdk/client/stdio.js';
19
- import '@modelcontextprotocol/sdk/types.js';
20
- import 'zod';
17
+ import 'node:readline';
21
18
  import 'node:fs/promises';
22
19
  import 'node:util';
23
20
  import 'yaml';
@@ -1,5 +1,5 @@
1
1
  var name = "svamp-cli";
2
- var version = "0.2.258";
2
+ var version = "0.2.259";
3
3
  var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
4
4
  var author = "Amun AI AB";
5
5
  var license = "SEE LICENSE IN LICENSE";
@@ -19,7 +19,7 @@ var exports$1 = {
19
19
  var scripts = {
20
20
  build: "rm -rf dist bin/skills bin/commands && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/crew bin/skills/crew && cp -r ../../commands bin/commands && tsc --noEmit && pkgroll",
21
21
  typecheck: "tsc --noEmit",
22
- test: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs",
22
+ test: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs",
23
23
  "test:hypha": "node --no-warnings test/test-hypha-service.mjs",
24
24
  dev: "tsx src/cli.ts",
25
25
  "dev:daemon": "tsx src/cli.ts daemon start-sync",
@@ -1,7 +1,7 @@
1
1
  import { spawn, exec as exec$1 } from 'node:child_process';
2
2
  import { promisify } from 'node:util';
3
3
 
4
- const PINNED_CLAUDE_CODE_VERSION = "2.1.206";
4
+ const PINNED_CLAUDE_CODE_VERSION = "2.1.210";
5
5
  const exec = promisify(exec$1);
6
6
  let _reconcile = null;
7
7
  function beginClaudeVersionReconcile(log) {
@@ -1,4 +1,4 @@
1
- import { n as resolveProjectRoot, z as getRun, A as listRuns, B as getWorkflow, C as runWorkflow, D as setWorkflowEnabled, E as removeWorkflow, F as saveWorkflow, G as rawWorkflow, H as listWorkflows } from './run-C1Unk4Zx.mjs';
1
+ import { n as resolveProjectRoot, z as getRun, A as listRuns, B as getWorkflow, C as runWorkflow, D as setWorkflowEnabled, E as removeWorkflow, F as saveWorkflow, G as rawWorkflow, H as listWorkflows } from './run-CT8Leg3-.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -14,10 +14,7 @@ import 'node:path';
14
14
  import 'node:events';
15
15
  import 'node:os';
16
16
  import '@agentclientprotocol/sdk';
17
- import '@modelcontextprotocol/sdk/client/index.js';
18
- import '@modelcontextprotocol/sdk/client/stdio.js';
19
- import '@modelcontextprotocol/sdk/types.js';
20
- import 'zod';
17
+ import 'node:readline';
21
18
  import 'node:fs/promises';
22
19
  import 'node:util';
23
20
  import 'yaml';
@@ -1,4 +1,4 @@
1
- import { n as resolveProjectRoot, u as updateIssue, o as getIssue, p as resumeIssue, q as pauseIssue, t as addComment, v as addIssue, w as listIssues, x as searchIssues, y as isVisibleTo } from './run-C1Unk4Zx.mjs';
1
+ import { n as resolveProjectRoot, u as updateIssue, o as getIssue, p as resumeIssue, q as pauseIssue, t as addComment, v as addIssue, w as listIssues, x as searchIssues, y as isVisibleTo } from './run-CT8Leg3-.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -14,10 +14,7 @@ import 'node:path';
14
14
  import 'node:events';
15
15
  import 'node:os';
16
16
  import '@agentclientprotocol/sdk';
17
- import '@modelcontextprotocol/sdk/client/index.js';
18
- import '@modelcontextprotocol/sdk/client/stdio.js';
19
- import '@modelcontextprotocol/sdk/types.js';
20
- import 'zod';
17
+ import 'node:readline';
21
18
  import 'node:fs/promises';
22
19
  import 'node:util';
23
20
  import 'yaml';
@@ -1,4 +1,4 @@
1
- import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ag as applyClaudeProxyEnv, ah as composeSessionId, ai as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aj as generateHookSettings } from './run-C1Unk4Zx.mjs';
1
+ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ag as applyClaudeProxyEnv, ah as composeSessionId, ai as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aj as generateHookSettings } from './run-CT8Leg3-.mjs';
2
2
  import os from 'node:os';
3
3
  import { resolve, join } from 'node:path';
4
4
  import { existsSync, readFileSync, watch } from 'node:fs';
@@ -16,10 +16,6 @@ import 'node:crypto';
16
16
  import 'util';
17
17
  import 'node:events';
18
18
  import '@agentclientprotocol/sdk';
19
- import '@modelcontextprotocol/sdk/client/index.js';
20
- import '@modelcontextprotocol/sdk/client/stdio.js';
21
- import '@modelcontextprotocol/sdk/types.js';
22
- import 'zod';
23
19
  import 'node:fs/promises';
24
20
  import 'node:util';
25
21
  import 'yaml';