svamp-cli 0.2.326 → 0.2.327

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 (28) hide show
  1. package/dist/{adminCommands-D1NzA4Hb.mjs → adminCommands-BVXEj5XN.mjs} +1 -1
  2. package/dist/{agentCommands-DUHUBzrj.mjs → agentCommands-BiSVzb5D.mjs} +5 -5
  3. package/dist/{auth-DogM3PPm.mjs → auth-D0ji0kh3.mjs} +1 -1
  4. package/dist/{cli-PWoHWBkF.mjs → cli-CQlIsRxF.mjs} +77 -77
  5. package/dist/cli.mjs +2 -2
  6. package/dist/{commands-Dm9KNB-p.mjs → commands-BkzYDwHO.mjs} +3 -3
  7. package/dist/{commands-D-4ry2I6.mjs → commands-C4z-QQdO.mjs} +11 -11
  8. package/dist/{commands-CBk4dLUP.mjs → commands-CPZdcLvm.mjs} +3 -3
  9. package/dist/{commands-Dt_MecCB.mjs → commands-CXJmXwQo.mjs} +1 -1
  10. package/dist/{commands-Ck4pP86Q.mjs → commands-Cegv66fj.mjs} +2 -2
  11. package/dist/{commands-B5bC9eXz.mjs → commands-D5R0AmXt.mjs} +3 -3
  12. package/dist/{commands-CqqQYRzg.mjs → commands-D61SEgo0.mjs} +2 -2
  13. package/dist/{commands-CxfUr2Qr.mjs → commands-DexO3t-N.mjs} +1 -1
  14. package/dist/{fleet-Bzg3YxM4.mjs → fleet-CCVC-NiE.mjs} +2 -2
  15. package/dist/{headlessCli-DvJI9DRh.mjs → headlessCli-CFgDFTPd.mjs} +2 -2
  16. package/dist/{httpServer-1XjB2h3K.mjs → httpServer-Be1Hcddr.mjs} +59 -38
  17. package/dist/index.mjs +1 -1
  18. package/dist/{notifyCommands-BpMErHcv.mjs → notifyCommands-BfLeyHId.mjs} +1 -1
  19. package/dist/package-TcR2vlFS.mjs +64 -0
  20. package/dist/{rpc-Qcj4M_LQ.mjs → rpc-DXY3KqiA.mjs} +1 -1
  21. package/dist/{rpc-27xBajCe.mjs → rpc-hdw0ZlCj.mjs} +1 -1
  22. package/dist/{run-CocRShOR.mjs → run-CewXMfIf.mjs} +1 -1
  23. package/dist/{run-BBBr4jkI.mjs → run-DdTcDN3e.mjs} +190 -42
  24. package/dist/{scheduler-DjAVEyn3.mjs → scheduler-3LUL1jFD.mjs} +1 -1
  25. package/dist/{serveCommands-BK-wWc_i.mjs → serveCommands-DUJ4eojk.mjs} +10 -10
  26. package/dist/{sideband-5ck3CDWM.mjs → sideband-BRHu4M46.mjs} +1 -1
  27. package/package.json +3 -3
  28. package/dist/package-D_BgajkI.mjs +0 -64
@@ -1,6 +1,6 @@
1
1
  import * as path from 'path';
2
- import { w as wantsHelp } from './cli-PWoHWBkF.mjs';
3
- import './run-BBBr4jkI.mjs';
2
+ import { w as wantsHelp } from './cli-CQlIsRxF.mjs';
3
+ import './run-DdTcDN3e.mjs';
4
4
  import 'os';
5
5
  import 'fs/promises';
6
6
  import 'fs';
@@ -83,7 +83,7 @@ async function serviceExpose(args) {
83
83
  process.exit(1);
84
84
  }
85
85
  if (foreground) {
86
- const { runFrpcTunnel } = await import('./run-BBBr4jkI.mjs').then(function (n) { return n.ao; });
86
+ const { runFrpcTunnel } = await import('./run-DdTcDN3e.mjs').then(function (n) { return n.ao; });
87
87
  await runFrpcTunnel(name, ports, void 0, {
88
88
  group,
89
89
  groupKey,
@@ -93,7 +93,7 @@ async function serviceExpose(args) {
93
93
  });
94
94
  return;
95
95
  }
96
- const { connectAndGetMachine } = await import('./commands-CxfUr2Qr.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-DexO3t-N.mjs');
97
97
  const { server, machine } = await connectAndGetMachine();
98
98
  try {
99
99
  const status = await machine.tunnelStart({
@@ -115,7 +115,7 @@ async function serviceExpose(args) {
115
115
  console.log(` port ${port}: ${url}`);
116
116
  }
117
117
  if (process.env.SVAMP_SESSION_ID) {
118
- const { autoAddSessionLink } = await import('./agentCommands-DUHUBzrj.mjs');
118
+ const { autoAddSessionLink } = await import('./agentCommands-BiSVzb5D.mjs');
119
119
  let added = 0;
120
120
  for (const [port, url] of urlEntries) {
121
121
  const label = urlEntries.length > 1 ? `${name}:${port}` : name;
@@ -151,8 +151,8 @@ async function serviceServe(args) {
151
151
  const resolvedDir = path.resolve(directory);
152
152
  console.log(`Serving ${resolvedDir}`);
153
153
  const http = await import('http');
154
- const { serveStaticMount } = await import('./run-BBBr4jkI.mjs').then(function (n) { return n.ap; });
155
- const { getFreePort } = await import('./run-BBBr4jkI.mjs').then(function (n) { return n.ao; });
154
+ const { serveStaticMount } = await import('./run-DdTcDN3e.mjs').then(function (n) { return n.ap; });
155
+ const { getFreePort } = await import('./run-DdTcDN3e.mjs').then(function (n) { return n.ao; });
156
156
  const server = http.createServer((req, res) => {
157
157
  const u = new URL(req.url || "/", "http://127.0.0.1");
158
158
  let rel = u.pathname;
@@ -175,7 +175,7 @@ async function serviceServe(args) {
175
175
  resolve(18080);
176
176
  });
177
177
  });
178
- const { runFrpcTunnel } = await import('./run-BBBr4jkI.mjs').then(function (n) { return n.ao; });
178
+ const { runFrpcTunnel } = await import('./run-DdTcDN3e.mjs').then(function (n) { return n.ao; });
179
179
  void server;
180
180
  await runFrpcTunnel(name, [servePort]);
181
181
  } catch (err) {
@@ -185,7 +185,7 @@ async function serviceServe(args) {
185
185
  }
186
186
  async function serviceList(_args) {
187
187
  try {
188
- const { connectAndGetMachine } = await import('./commands-CxfUr2Qr.mjs');
188
+ const { connectAndGetMachine } = await import('./commands-DexO3t-N.mjs');
189
189
  const { server, machine } = await connectAndGetMachine();
190
190
  try {
191
191
  const tunnels = await machine.tunnelList({});
@@ -225,11 +225,11 @@ async function serviceDelete(args) {
225
225
  process.exit(1);
226
226
  }
227
227
  try {
228
- const { connectAndGetMachine } = await import('./commands-CxfUr2Qr.mjs');
228
+ const { connectAndGetMachine } = await import('./commands-DexO3t-N.mjs');
229
229
  const { server, machine } = await connectAndGetMachine();
230
230
  try {
231
231
  await machine.tunnelStop({ name });
232
- const { removeSessionLinkByService } = await import('./agentCommands-DUHUBzrj.mjs');
232
+ const { removeSessionLinkByService } = await import('./agentCommands-BiSVzb5D.mjs');
233
233
  removeSessionLinkByService("tunnel", name);
234
234
  console.log(`Stopped tunnel '${name}'.`);
235
235
  } catch (err) {
@@ -1,9 +1,9 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { join, resolve } from 'node:path';
3
- import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-CxfUr2Qr.mjs';
3
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-DexO3t-N.mjs';
4
4
  import { execFileSync } from 'node:child_process';
5
- import { ag as withFileLock, u as updateIssue, j as addComment, k as addIssue, e as shortId } from './run-BBBr4jkI.mjs';
6
- import { w as wantsHelp } from './cli-PWoHWBkF.mjs';
5
+ import { ag as withFileLock, u as updateIssue, j as addComment, k as addIssue, e as shortId } from './run-DdTcDN3e.mjs';
6
+ import { w as wantsHelp } from './cli-CQlIsRxF.mjs';
7
7
  import 'node:os';
8
8
  import 'os';
9
9
  import 'fs/promises';
@@ -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 { Q as parseFrontmatter, T as getSkillsServer, U as getSkillsWorkspaceName, V as getSkillsCollectionName, W as fetchWithTimeout, X as searchSkills, Y as SKILLS_DIR, Z as getSkillInfo, _ as downloadSkillFile, $ as listSkillFiles } from './run-BBBr4jkI.mjs';
4
+ import { Q as parseFrontmatter, T as getSkillsServer, U as getSkillsWorkspaceName, V as getSkillsCollectionName, W as fetchWithTimeout, X as searchSkills, Y as SKILLS_DIR, Z as getSkillInfo, _ as downloadSkillFile, $ as listSkillFiles } from './run-DdTcDN3e.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
@@ -1,6 +1,6 @@
1
1
  import { spawnSync } from 'node:child_process';
2
- import { f as resolveProjectRoot, I as workflowSteps, x as setWorkflowEnabled, D as isWorkflowEnabled, y as removeWorkflow, v as getWorkflow, C as listWorkflows, A as saveWorkflow, B as rawWorkflow } from './run-BBBr4jkI.mjs';
3
- import { w as wantsHelp } from './cli-PWoHWBkF.mjs';
2
+ import { f as resolveProjectRoot, I as workflowSteps, x as setWorkflowEnabled, D as isWorkflowEnabled, y as removeWorkflow, v as getWorkflow, C as listWorkflows, A as saveWorkflow, B as rawWorkflow } from './run-DdTcDN3e.mjs';
3
+ import { w as wantsHelp } from './cli-CQlIsRxF.mjs';
4
4
  import 'os';
5
5
  import 'fs/promises';
6
6
  import 'fs';
@@ -1,12 +1,12 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-CxfUr2Qr.mjs';
4
- import { w as wantsHelp } from './cli-PWoHWBkF.mjs';
3
+ import { connectAndGetMachine } from './commands-DexO3t-N.mjs';
4
+ import { w as wantsHelp } from './cli-CQlIsRxF.mjs';
5
5
  import 'node:fs';
6
6
  import 'node:child_process';
7
7
  import 'node:path';
8
8
  import 'node:os';
9
- import './run-BBBr4jkI.mjs';
9
+ import './run-DdTcDN3e.mjs';
10
10
  import 'os';
11
11
  import 'fs/promises';
12
12
  import 'url';
@@ -1,8 +1,8 @@
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 { f as flushAndExit } from './cli-PWoHWBkF.mjs';
5
- import { f as resolveProjectRoot, n as searchIssues, l as listIssues, m as isPendingIssue, i as resumeIssue, p as pauseIssue, j as addComment, u as updateIssue, h as getIssue, o as isVisibleTo, H as summarize, k as addIssue } from './run-BBBr4jkI.mjs';
4
+ import { f as flushAndExit } from './cli-CQlIsRxF.mjs';
5
+ import { f as resolveProjectRoot, n as searchIssues, l as listIssues, m as isPendingIssue, i as resumeIssue, p as pauseIssue, j as addComment, u as updateIssue, h as getIssue, o as isVisibleTo, H as summarize, k as addIssue } from './run-DdTcDN3e.mjs';
6
6
  import './serviceManager-hlOVxkhW.mjs';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { execSync, execFileSync } from 'node:child_process';
3
3
  import { basename, resolve, join, isAbsolute } from 'node:path';
4
4
  import os from 'node:os';
5
- import { a1 as formatHandle, a2 as normalizeAllowedUser, a3 as loadSecurityContextConfig, a4 as resolveSecurityContext, a5 as buildSecurityContextFromFlags, a6 as mergeSecurityContexts, c as connectToHypha, a7 as buildSessionShareUrl, a8 as computeOutboundHop, e as shortId, a9 as registerAwaitingReply, aa as buildMachineShareUrl, ab as parseHandle, ac as handleMatchesMetadata } from './run-BBBr4jkI.mjs';
5
+ import { a1 as formatHandle, a2 as normalizeAllowedUser, a3 as loadSecurityContextConfig, a4 as resolveSecurityContext, a5 as buildSecurityContextFromFlags, a6 as mergeSecurityContexts, c as connectToHypha, a7 as buildSessionShareUrl, a8 as computeOutboundHop, e as shortId, a9 as registerAwaitingReply, aa as buildMachineShareUrl, ab as parseHandle, ac as handleMatchesMetadata } from './run-DdTcDN3e.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import os from 'node:os';
4
- import { ad as PINNED_CODEX_VERSION, c as connectToHypha } from './run-BBBr4jkI.mjs';
4
+ import { ad as PINNED_CODEX_VERSION, c as connectToHypha } from './run-DdTcDN3e.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-BO0Qs_kE.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -23,7 +23,7 @@ import 'node:fs/promises';
23
23
  import 'yaml';
24
24
 
25
25
  const KIMI_NPM_PACKAGE = "@moonshot-ai/kimi-code";
26
- const PINNED_KIMI_VERSION = "0.36.0";
26
+ const PINNED_KIMI_VERSION = "0.36.1";
27
27
 
28
28
  const SVAMP_HOME = process.env.SVAMP_HOME || join(os.homedir(), ".svamp");
29
29
  const DAEMON_STATE_FILE = join(SVAMP_HOME, "daemon.state.json");
@@ -1,5 +1,5 @@
1
- import { a0 as resolveModel, ah as describeMisconfiguration, ai as buildMachineDeps } from './run-BBBr4jkI.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-5ck3CDWM.mjs';
1
+ import { a0 as resolveModel, ah as describeMisconfiguration, ai as buildMachineDeps } from './run-DdTcDN3e.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-BRHu4M46.mjs';
3
3
  import { WebSocket } from 'ws';
4
4
  import { execSync, spawn } from 'child_process';
5
5
  import 'os';
@@ -1,5 +1,7 @@
1
1
  import { createServer } from 'node:http';
2
2
 
3
+ const MAX_SSE_STREAMS_PER_CHANNEL = 16;
4
+ const _sseStreams = /* @__PURE__ */ new Map();
3
5
  async function findOwner(deps, channelId) {
4
6
  let fallback;
5
7
  for (const sid of deps.getSessionIds()) {
@@ -92,6 +94,12 @@ function createChannelHttpServer(deps) {
92
94
  res.writeHead(404).end("not found");
93
95
  return;
94
96
  }
97
+ const live = _sseStreams.get(cid) || 0;
98
+ if (live >= MAX_SSE_STREAMS_PER_CHANNEL) {
99
+ res.writeHead(429, { "content-type": "application/json", "retry-after": "5" }).end(JSON.stringify({ error: `too many concurrent event streams for this channel (max ${MAX_SSE_STREAMS_PER_CHANNEL})` }));
100
+ return;
101
+ }
102
+ _sseStreams.set(cid, live + 1);
95
103
  const key = keyOf();
96
104
  const from = u.searchParams.get("from") || void 0;
97
105
  let cursor = Number(u.searchParams.get("cursor") || 0);
@@ -101,54 +109,67 @@ function createChannelHttpServer(deps) {
101
109
  req.on("close", () => {
102
110
  closed = true;
103
111
  });
104
- const MIN_LOOP_MS = 1e3;
105
- while (!closed) {
106
- const started = Date.now();
107
- let out;
108
- try {
109
- out = await rpc2.channelReceive({ channel: cid, key, from, cursor, wait: 25 });
110
- } catch (e) {
111
- const re = await findOwner(deps, cid).catch(() => null);
112
- if (re?.channelReceive && !closed) {
113
- rpc2 = re;
114
- await new Promise((r) => setTimeout(r, MIN_LOOP_MS));
115
- continue;
116
- }
117
- res.write(`event: error
112
+ let released = false;
113
+ const releaseSlot = () => {
114
+ if (released) return;
115
+ released = true;
116
+ const n = (_sseStreams.get(cid) || 1) - 1;
117
+ if (n > 0) _sseStreams.set(cid, n);
118
+ else _sseStreams.delete(cid);
119
+ };
120
+ req.on("close", releaseSlot);
121
+ try {
122
+ const MIN_LOOP_MS = 1e3;
123
+ while (!closed) {
124
+ const started = Date.now();
125
+ let out;
126
+ try {
127
+ out = await rpc2.channelReceive({ channel: cid, key, from, cursor, wait: 25 });
128
+ } catch (e) {
129
+ const re = await findOwner(deps, cid).catch(() => null);
130
+ if (re?.channelReceive && !closed) {
131
+ rpc2 = re;
132
+ await new Promise((r) => setTimeout(r, MIN_LOOP_MS));
133
+ continue;
134
+ }
135
+ res.write(`event: error
118
136
  data: ${JSON.stringify({ error: e?.message || String(e) })}
119
137
 
120
138
  `);
121
- break;
122
- }
123
- if (out?.error) {
124
- res.write(`event: error
139
+ break;
140
+ }
141
+ if (out?.error) {
142
+ res.write(`event: error
125
143
  data: ${JSON.stringify({ error: out.error })}
126
144
 
127
145
  `);
128
- break;
129
- }
130
- for (const reply of out.replies || []) {
131
- if (!res.write(`data: ${JSON.stringify(reply)}
146
+ break;
147
+ }
148
+ for (const reply of out.replies || []) {
149
+ if (!res.write(`data: ${JSON.stringify(reply)}
132
150
 
133
151
  `) && !closed) {
134
- await new Promise((resolve) => {
135
- const done = () => {
136
- res.off("drain", done);
137
- res.off("close", done);
138
- resolve();
139
- };
140
- res.once("drain", done);
141
- res.once("close", done);
142
- });
152
+ await new Promise((resolve) => {
153
+ const done = () => {
154
+ res.off("drain", done);
155
+ res.off("close", done);
156
+ resolve();
157
+ };
158
+ res.once("drain", done);
159
+ res.once("close", done);
160
+ });
161
+ }
162
+ if (closed) break;
163
+ }
164
+ cursor = out.cursor ?? cursor;
165
+ if (!(out.replies || []).length) {
166
+ res.write(": keepalive\n\n");
167
+ const elapsed = Date.now() - started;
168
+ if (elapsed < MIN_LOOP_MS) await new Promise((r) => setTimeout(r, MIN_LOOP_MS - elapsed));
143
169
  }
144
- if (closed) break;
145
- }
146
- cursor = out.cursor ?? cursor;
147
- if (!(out.replies || []).length) {
148
- res.write(": keepalive\n\n");
149
- const elapsed = Date.now() - started;
150
- if (elapsed < MIN_LOOP_MS) await new Promise((r) => setTimeout(r, MIN_LOOP_MS - elapsed));
151
170
  }
171
+ } finally {
172
+ releaseSlot();
152
173
  }
153
174
  try {
154
175
  res.end();
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-BBBr4jkI.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-DdTcDN3e.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { c as connectToHypha, S as SharingNotificationSync, J as parseJwtEmail } from './run-BBBr4jkI.mjs';
1
+ import { c as connectToHypha, S as SharingNotificationSync, J as parseJwtEmail } from './run-DdTcDN3e.mjs';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { existsSync, readFileSync } from 'node:fs';
4
4
  import { join } from 'node:path';
@@ -0,0 +1,64 @@
1
+ var name = "svamp-cli";
2
+ var version = "0.2.327";
3
+ var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
4
+ var author = "Amun AI AB";
5
+ var license = "SEE LICENSE IN LICENSE";
6
+ var type = "module";
7
+ var bin = {
8
+ svamp: "./bin/svamp.mjs"
9
+ };
10
+ var files = [
11
+ "dist",
12
+ "bin"
13
+ ];
14
+ var main = "./dist/index.mjs";
15
+ var exports$1 = {
16
+ ".": "./dist/index.mjs",
17
+ "./cli": "./dist/cli.mjs"
18
+ };
19
+ var scripts = {
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
+ typecheck: "tsc --noEmit",
22
+ test: "node test/with-timeout.mjs 420 npx tsx test/test-context-window.mjs && node test/with-timeout.mjs 420 npx tsx test/test-ratelimit-retry.mjs && node test/with-timeout.mjs 420 npx tsx test/test-completed-requests.mjs && node test/with-timeout.mjs 420 npx tsx test/test-reconnect-health.mjs &&node test/with-timeout.mjs 420 npx tsx test/test-instance-config.mjs && node test/with-timeout.mjs 420 npx tsx test/test-authorize.mjs && node test/with-timeout.mjs 420 npx tsx test/test-normalize-allowed-user.mjs && node test/with-timeout.mjs 420 npx tsx test/test-share-url.mjs && node test/with-timeout.mjs 420 npx tsx test/test-update-sharing-normalization.mjs && node test/with-timeout.mjs 420 npx tsx test/test-sharing-notify-sync.mjs && node test/with-timeout.mjs 420 npx tsx test/test-sharing-notify-resolve.mjs && node test/with-timeout.mjs 420 npx tsx test/test-staged-homes-sweep.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-helpers.mjs && node test/with-timeout.mjs 420 npx tsx test/test-cli-routing.mjs && node test/with-timeout.mjs 420 npx tsx test/test-security-context.mjs && node test/with-timeout.mjs 420 npx tsx test/test-isolation-decision.mjs && node test/with-timeout.mjs 420 npx tsx test/test-message-helpers.mjs && node test/with-timeout.mjs 420 npx tsx test/test-stdin-delivery.mjs && node test/with-timeout.mjs 420 npx tsx test/test-agent-config.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wrap-command.mjs && node test/with-timeout.mjs 420 npx tsx test/test-credential-staging.mjs && node test/with-timeout.mjs 420 npx tsx test/test-claude-auth.mjs && node test/with-timeout.mjs 420 npx tsx test/test-backend-accounts.mjs && node test/with-timeout.mjs 420 npx tsx test/test-codex-force-model.mjs && node test/with-timeout.mjs 420 npx tsx test/test-backend-oauth.mjs && node test/with-timeout.mjs 420 npx tsx test/test-btw-proxy-env.mjs && node test/with-timeout.mjs 420 npx tsx test/test-output-formatters.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox-guard.mjs && node test/with-timeout.mjs 420 npx tsx test/test-user-events.mjs && node test/with-timeout.mjs 420 npx tsx test/test-migrate-children.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outpost-install.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outpost-setup.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outpost-pairing.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outpost-coordinator.mjs && node test/with-timeout.mjs 420 npx tsx test/e2e-outpost-transport.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox-reconcile.mjs && node test/with-timeout.mjs 420 npx tsx test/test-auto-topic.mjs && node test/with-timeout.mjs 420 npx tsx test/test-project-info.mjs && node test/with-timeout.mjs 420 npx tsx test/test-agent-types.mjs && node test/with-timeout.mjs 420 npx tsx test/test-transport.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-update-handlers.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-scanner.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hypha-client.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hook-settings.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-service-logic.mjs && node test/with-timeout.mjs 420 npx tsx test/test-daemon-persistence.mjs && node test/with-timeout.mjs 420 npx tsx test/test-detect-isolation.mjs && node test/with-timeout.mjs 420 npx tsx test/test-isolation-disable.mjs && node test/with-timeout.mjs 420 npx tsx test/test-machine-service-logic.mjs && node test/with-timeout.mjs 420 npx tsx test/test-machine-session-visibility.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-access-fallback.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-rpc-role-map.mjs && node test/with-timeout.mjs 420 npx tsx test/test-interactive-helpers.mjs && node test/with-timeout.mjs 420 npx tsx test/test-pinned-codex.mjs && node test/with-timeout.mjs 420 npx tsx test/test-codex-request-timeout.mjs && node test/with-timeout.mjs 420 npx tsx test/test-codex-app-server.mjs && node test/with-timeout.mjs 420 npx tsx test/test-kimi-provider.mjs && node test/with-timeout.mjs 420 npx tsx test/test-acp-backend.mjs && node test/with-timeout.mjs 420 npx tsx test/test-acp-bridge.mjs && node test/with-timeout.mjs 420 npx tsx test/test-listener-backoff.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-identity-env.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hook-server.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-commands.mjs && node test/with-timeout.mjs 420 npx tsx test/test-interactive-console.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-messages.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-send-query.mjs && node test/with-timeout.mjs 420 npx tsx test/test-skills.mjs && node test/with-timeout.mjs 420 npx tsx test/test-agent-grouping.mjs && node test/with-timeout.mjs 420 npx tsx test/test-machine-list-directory.mjs && node test/with-timeout.mjs 420 npx tsx test/test-service-commands.mjs && node test/with-timeout.mjs 420 npx tsx test/test-supervisor.mjs && node test/with-timeout.mjs 420 npx tsx test/test-supervisor-lock.mjs && node test/with-timeout.mjs 420 node test/test-supervisor-restart.mjs && node test/with-timeout.mjs 420 npx tsx test/test-clear-detection.mjs && node test/with-timeout.mjs 420 npx tsx test/test-compact-detect.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-consolidation.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox-store.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox.mjs && node test/with-timeout.mjs 420 npx tsx test/test-inbox-cross-machine.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-store.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-store-lock.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-close-gate.mjs && node test/with-timeout.mjs 420 npx tsx test/test-loop-verify.mjs && node test/with-timeout.mjs 420 npx tsx test/test-restore-decision.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-pause.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-store.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-scheduler.mjs && node test/with-timeout.mjs 420 npx tsx test/test-cron.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-runs.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-runs-lock.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-idle.mjs && node test/with-timeout.mjs 420 npx tsx test/test-workflow-reconcile.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-link-subdomain.mjs && node test/with-timeout.mjs 420 npx tsx test/test-short-id.mjs && node test/with-timeout.mjs 420 npx tsx test/test-transcript-edit.mjs && node test/with-timeout.mjs 420 npx tsx test/test-edit-history.mjs && node test/with-timeout.mjs 420 npx tsx test/test-friendly-name.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-rpc-dispatch.mjs && node test/with-timeout.mjs 420 npx tsx test/test-sandbox-cli.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-manager.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-files-gateway.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-ws-upgrade.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-auth.mjs && node test/with-timeout.mjs 420 npx tsx test/test-static-file-server.mjs && node test/with-timeout.mjs 420 npx tsx test/test-serve-stability.mjs && node test/with-timeout.mjs 420 npx tsx test/test-frpc-e2e.mjs --unit-only && node test/with-timeout.mjs 420 npx tsx test/test-frpc-status.mjs && node test/with-timeout.mjs 420 npx tsx test/test-frpc-orphan-reap.mjs && node test/with-timeout.mjs 420 node test/pinnedClaudeCode.test.mjs && node test/with-timeout.mjs 420 node test/fleet.test.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-file.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-agent.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-agent.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channels-service.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hotreload-seam.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hot-reload.mjs && node test/with-timeout.mjs 420 npx tsx test/test-hot-reload-live.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-core.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-async-reply.mjs && node test/with-timeout.mjs 420 npx tsx test/test-outbox-reload.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-binding.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-store-lock.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-identity.mjs && node test/with-timeout.mjs 420 npx tsx test/test-stateless-dispatch-limiter.mjs && node test/with-timeout.mjs 420 npx tsx test/test-shared-session-identity.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-agent-auth.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-http.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-upload.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-file-access.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-voice.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-headless.mjs && node test/with-timeout.mjs 420 npx tsx test/test-wise-machine.mjs && node test/with-timeout.mjs 420 npx tsx test/test-crew-merge.mjs && node test/with-timeout.mjs 420 npx tsx test/test-crew-verdict-routing.mjs && node test/with-timeout.mjs 420 npx tsx test/test-crew-standalone.mjs && node test/with-timeout.mjs 420 npx tsx test/test-session-links.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-loop-pause-guard.mjs && node test/with-timeout.mjs 420 npx tsx test/test-artifact-guard.mjs && node test/with-timeout.mjs 420 npx tsx test/test-artifact-sync-pagination.mjs && node test/with-timeout.mjs 420 npx tsx test/test-graceful-restart.mjs && node test/with-timeout.mjs 420 npx tsx test/test-flush-exit.mjs && node test/with-timeout.mjs 420 npx tsx test/test-codex-skills.mjs && node test/with-timeout.mjs 420 npx tsx test/test-nightly-0807-fixes.mjs && node test/with-timeout.mjs 420 npx tsx test/test-nightly-0814-fixes.mjs && node test/with-timeout.mjs 420 npx tsx test/test-log-prune.mjs && node test/with-timeout.mjs 420 node test/test-message-count-cache.mjs && node test/with-timeout.mjs 420 node test/test-serve-link-gate.mjs && node test/with-timeout.mjs 420 node test/test-security-context-unenforceable.mjs && node test/with-timeout.mjs 420 npx tsx test/test-issue-id-resolution.mjs && node test/with-timeout.mjs 420 npx tsx test/test-help-flag-never-acts.mjs && node test/with-timeout.mjs 420 npx tsx test/test-with-timeout.mjs && node test/with-timeout.mjs 420 npx tsx test/test-message-queue-cap.mjs",
23
+ "test:hypha": "node --no-warnings test/test-hypha-service.mjs",
24
+ dev: "tsx src/cli.ts",
25
+ "dev:daemon": "tsx src/cli.ts daemon start-sync",
26
+ "test:e2e": "node --no-warnings test/e2e-session-tests.mjs && npx tsx test/e2e-codex-midturn-steer.mjs && npx tsx test/e2e-serve-iframe-login.mjs && npx tsx test/test-archive-preserves-claude-file.mjs && npx tsx test/test-daemon-e2e.mjs && npx tsx test/test-hypha-service.mjs && npx tsx test/test-permission-e2e.mjs && npx tsx test/test-serve-e2e.mjs && npx tsx test/test-session-archive-resume.mjs && npx tsx test/test-session-rpc-e2e.mjs && npx tsx test/test-skills-integration.mjs && npx tsx test/test-wm-refresh.mjs && npx tsx test/e2e-session-files-gateway.mjs && npx tsx test/e2e-dns-production-hosts.mjs",
27
+ "test:frpc": "npx tsx test/test-frpc-e2e.mjs",
28
+ prepublishOnly: "node ../../scripts/bump-cli-version.mjs --check && yarn build"
29
+ };
30
+ var dependencies = {
31
+ "@agentclientprotocol/sdk": "^0.14.1",
32
+ "@modelcontextprotocol/sdk": "^1.25.3",
33
+ "hypha-rpc": "0.21.42",
34
+ "node-pty": "1.2.0-beta.11",
35
+ ws: "^8.18.0",
36
+ yaml: "^2.8.2",
37
+ zod: "^3.24.4"
38
+ };
39
+ var devDependencies = {
40
+ "@types/node": ">=20",
41
+ "@types/ws": "^8.5.14",
42
+ pkgroll: "^2.14.2",
43
+ tsx: "^4.20.6",
44
+ typescript: "5.9.3"
45
+ };
46
+ var packageManager = "yarn@1.22.22";
47
+ var _package = {
48
+ name: name,
49
+ version: version,
50
+ description: description,
51
+ author: author,
52
+ license: license,
53
+ type: type,
54
+ bin: bin,
55
+ files: files,
56
+ main: main,
57
+ exports: exports$1,
58
+ scripts: scripts,
59
+ dependencies: dependencies,
60
+ devDependencies: devDependencies,
61
+ packageManager: packageManager
62
+ };
63
+
64
+ export { author, bin, _package as default, dependencies, description, devDependencies, exports$1 as exports, files, license, main, name, packageManager, scripts, type, version };
@@ -1,4 +1,4 @@
1
- import { f as resolveProjectRoot, u as updateIssue, h as getIssue, i as resumeIssue, p as pauseIssue, j as addComment, k as addIssue, l as listIssues, m as isPendingIssue, n as searchIssues, o as isVisibleTo } from './run-BBBr4jkI.mjs';
1
+ import { f as resolveProjectRoot, u as updateIssue, h as getIssue, i as resumeIssue, p as pauseIssue, j as addComment, k as addIssue, l as listIssues, m as isPendingIssue, n as searchIssues, o as isVisibleTo } from './run-DdTcDN3e.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { f as resolveProjectRoot, q as getRun, t as listRuns, v as getWorkflow, w as runWorkflow, x as setWorkflowEnabled, y as removeWorkflow, z as validateWorkflowName, A as saveWorkflow, B as rawWorkflow, C as listWorkflows } from './run-BBBr4jkI.mjs';
1
+ import { f as resolveProjectRoot, q as getRun, t as listRuns, v as getWorkflow, w as runWorkflow, x as setWorkflowEnabled, y as removeWorkflow, z as validateWorkflowName, A as saveWorkflow, B as rawWorkflow, C as listWorkflows } from './run-DdTcDN3e.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { aj as applyClaudeProxyEnv, ak as composeSessionId, al as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, am as generateHookSettings } from './run-BBBr4jkI.mjs';
1
+ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { aj as applyClaudeProxyEnv, ak as composeSessionId, al as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, am as generateHookSettings } from './run-DdTcDN3e.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';