svamp-cli 0.2.341 → 0.2.342

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/{adminCommands-Btl3is3z.mjs → adminCommands-CRTBDZan.mjs} +1 -1
  2. package/dist/{agentCommands-B7JaByb0.mjs → agentCommands-BuO988tJ.mjs} +5 -5
  3. package/dist/{auth-pTUm-zt4.mjs → auth--WS0wezs.mjs} +1 -1
  4. package/dist/{cli-pFCLXDrP.mjs → cli-B24CmIli.mjs} +110 -79
  5. package/dist/cli.mjs +2 -2
  6. package/dist/{commands-CMCSUI4A.mjs → commands-BKb1g8Gq.mjs} +2 -2
  7. package/dist/{commands-CfP6gPZF.mjs → commands-BsKgZ5sQ.mjs} +1 -1
  8. package/dist/{commands-C1L_R1H6.mjs → commands-C0HQiu-S.mjs} +3 -3
  9. package/dist/{commands-znQSQbTX.mjs → commands-Cwxy-C5N.mjs} +11 -11
  10. package/dist/{commands-C4whLEwv.mjs → commands-DDuGBSsz.mjs} +1 -1
  11. package/dist/{commands-BUkV04q6.mjs → commands-DU4B-4Gh.mjs} +3 -3
  12. package/dist/{commands-EcIOSJHF.mjs → commands-DXLOKJOj.mjs} +2 -2
  13. package/dist/{commands-BaxjRuxM.mjs → commands-DXM17M6n.mjs} +3 -3
  14. package/dist/{fleet-U-WXVbW_.mjs → fleet-BHzlAvnu.mjs} +1 -1
  15. package/dist/{headlessCli-CptF7_lZ.mjs → headlessCli-C2gvOpOt.mjs} +2 -2
  16. package/dist/index.mjs +1 -1
  17. package/dist/{notifyCommands-DitnhzYz.mjs → notifyCommands-0aZUwKQK.mjs} +1 -1
  18. package/dist/{package-CigJ8nhu.mjs → package-CTbGYaJG.mjs} +2 -2
  19. package/dist/{rpc-BPT9DJXL.mjs → rpc-B2Lc2BAB.mjs} +1 -1
  20. package/dist/{rpc-zndUgvJ7.mjs → rpc-rAQQ1q8t.mjs} +1 -1
  21. package/dist/{run-CrUTBmi4.mjs → run-C7QVfyw4.mjs} +1 -1
  22. package/dist/{run-LHJh7jLy.mjs → run-CF4kAVPW.mjs} +147 -23
  23. package/dist/{scheduler-B0h2sfGn.mjs → scheduler-CzF4lOe_.mjs} +1 -1
  24. package/dist/{serveCommands-DpF0xKvz.mjs → serveCommands-EIEqdaVu.mjs} +10 -10
  25. package/dist/{sideband-B5n9fNxM.mjs → sideband-BoutiRJi.mjs} +1 -1
  26. package/package.json +2 -2
@@ -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-C4whLEwv.mjs';
3
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-DDuGBSsz.mjs';
4
4
  import { execFileSync } from 'node:child_process';
5
- import { ak as withFileLock, u as updateIssue, k as addComment, l as addIssue, e as shortId } from './run-LHJh7jLy.mjs';
6
- import { w as wantsHelp } from './cli-pFCLXDrP.mjs';
5
+ import { ak as withFileLock, u as updateIssue, k as addComment, l as addIssue, e as shortId } from './run-CF4kAVPW.mjs';
6
+ import { w as wantsHelp } from './cli-B24CmIli.mjs';
7
7
  import 'node:os';
8
8
  import 'os';
9
9
  import 'fs/promises';
@@ -1,6 +1,6 @@
1
1
  import * as path from 'path';
2
- import { w as wantsHelp } from './cli-pFCLXDrP.mjs';
3
- import './run-LHJh7jLy.mjs';
2
+ import { w as wantsHelp } from './cli-B24CmIli.mjs';
3
+ import './run-CF4kAVPW.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-LHJh7jLy.mjs').then(function (n) { return n.as; });
86
+ const { runFrpcTunnel } = await import('./run-CF4kAVPW.mjs').then(function (n) { return n.as; });
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-C4whLEwv.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-DDuGBSsz.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-B7JaByb0.mjs');
118
+ const { autoAddSessionLink } = await import('./agentCommands-BuO988tJ.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-LHJh7jLy.mjs').then(function (n) { return n.at; });
155
- const { getFreePort } = await import('./run-LHJh7jLy.mjs').then(function (n) { return n.as; });
154
+ const { serveStaticMount } = await import('./run-CF4kAVPW.mjs').then(function (n) { return n.at; });
155
+ const { getFreePort } = await import('./run-CF4kAVPW.mjs').then(function (n) { return n.as; });
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-LHJh7jLy.mjs').then(function (n) { return n.as; });
178
+ const { runFrpcTunnel } = await import('./run-CF4kAVPW.mjs').then(function (n) { return n.as; });
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-C4whLEwv.mjs');
188
+ const { connectAndGetMachine } = await import('./commands-DDuGBSsz.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-C4whLEwv.mjs');
228
+ const { connectAndGetMachine } = await import('./commands-DDuGBSsz.mjs');
229
229
  const { server, machine } = await connectAndGetMachine();
230
230
  try {
231
231
  await machine.tunnelStop({ name });
232
- const { removeSessionLinkByService } = await import('./agentCommands-B7JaByb0.mjs');
232
+ const { removeSessionLinkByService } = await import('./agentCommands-BuO988tJ.mjs');
233
233
  removeSessionLinkByService("tunnel", name);
234
234
  console.log(`Stopped tunnel '${name}'.`);
235
235
  } catch (err) {
@@ -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 { a5 as formatHandle, a6 as normalizeAllowedUser, a7 as loadSecurityContextConfig, a8 as resolveSecurityContext, a9 as buildSecurityContextFromFlags, aa as mergeSecurityContexts, c as connectToHypha, ab as buildSessionShareUrl, ac as computeOutboundHop, e as shortId, ad as registerAwaitingReply, ae as buildMachineShareUrl, af as parseHandle, ag as handleMatchesMetadata } from './run-LHJh7jLy.mjs';
5
+ import { a5 as formatHandle, a6 as normalizeAllowedUser, a7 as loadSecurityContextConfig, a8 as resolveSecurityContext, a9 as buildSecurityContextFromFlags, aa as mergeSecurityContexts, c as connectToHypha, ab as buildSessionShareUrl, ac as computeOutboundHop, e as shortId, ad as registerAwaitingReply, ae as buildMachineShareUrl, af as parseHandle, ag as handleMatchesMetadata } from './run-CF4kAVPW.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -1,12 +1,12 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-C4whLEwv.mjs';
4
- import { w as wantsHelp } from './cli-pFCLXDrP.mjs';
3
+ import { connectAndGetMachine } from './commands-DDuGBSsz.mjs';
4
+ import { w as wantsHelp } from './cli-B24CmIli.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-LHJh7jLy.mjs';
9
+ import './run-CF4kAVPW.mjs';
10
10
  import 'os';
11
11
  import 'fs/promises';
12
12
  import 'url';
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { f as flushAndExit } from './cli-pFCLXDrP.mjs';
4
- import { f as resolveProjectRoot, o as searchIssues, m as listIssues, n as isPendingIssue, j as resumeIssue, p as pauseIssue, k as addComment, u as updateIssue, h as getIssue, J as checkVerifyCommand, q as isVisibleTo, K as summarize, l as addIssue } from './run-LHJh7jLy.mjs';
3
+ import { f as flushAndExit } from './cli-B24CmIli.mjs';
4
+ import { f as resolveProjectRoot, o as searchIssues, m as listIssues, n as isPendingIssue, j as resumeIssue, p as pauseIssue, k as addComment, u as updateIssue, h as getIssue, J as checkVerifyCommand, q as isVisibleTo, K as summarize, l as addIssue } from './run-CF4kAVPW.mjs';
5
5
  import './serviceManager-hlOVxkhW.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -1,10 +1,10 @@
1
- import { connectAndResolveSession } from './commands-C4whLEwv.mjs';
2
- import { w as wantsHelp } from './cli-pFCLXDrP.mjs';
1
+ import { connectAndResolveSession } from './commands-DDuGBSsz.mjs';
2
+ import { w as wantsHelp } from './cli-B24CmIli.mjs';
3
3
  import 'node:fs';
4
4
  import 'node:child_process';
5
5
  import 'node:path';
6
6
  import 'node:os';
7
- import './run-LHJh7jLy.mjs';
7
+ import './run-CF4kAVPW.mjs';
8
8
  import 'os';
9
9
  import 'fs/promises';
10
10
  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 { ah as PINNED_CODEX_VERSION, c as connectToHypha } from './run-LHJh7jLy.mjs';
4
+ import { ah as PINNED_CODEX_VERSION, c as connectToHypha } from './run-CF4kAVPW.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-LCVY4Otm.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -1,5 +1,5 @@
1
- import { a4 as resolveModel, al as describeMisconfiguration, am as buildMachineDeps } from './run-LHJh7jLy.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-B5n9fNxM.mjs';
1
+ import { a4 as resolveModel, al as describeMisconfiguration, am as buildMachineDeps } from './run-CF4kAVPW.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-BoutiRJi.mjs';
3
3
  import { WebSocket } from 'ws';
4
4
  import { execSync, spawn } from 'child_process';
5
5
  import 'os';
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-LHJh7jLy.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-CF4kAVPW.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, N as parseJwtEmail } from './run-LHJh7jLy.mjs';
1
+ import { c as connectToHypha, S as SharingNotificationSync, N as parseJwtEmail } from './run-CF4kAVPW.mjs';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { existsSync, readFileSync } from 'node:fs';
4
4
  import { join } from 'node:path';
@@ -1,5 +1,5 @@
1
1
  var name = "svamp-cli";
2
- var version = "0.2.341";
2
+ var version = "0.2.342";
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: "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-fleet-version-parse.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-pinned-hypha-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-pinned-kimi.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-receive-cap.mjs && node test/with-timeout.mjs 420 npx tsx test/test-dns-shadowing.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 && npx tsx test/test-verify-gate-async.mjs && npx tsx test/test-process-env-redaction.mjs && npx tsx test/test-provisioner-pin-published.mjs && npx tsx test/test-pinned-nono.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-frpc-footprint.mjs && npx tsx test/test-serve-regenerate-url.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 npx tsx test/test-claude-version-recheck.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 && npx tsx test/test-channel-lost-update.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 && node test/with-timeout.mjs 420 npx tsx test/test-compaction-backstop.mjs && tsx test/test-launchpad-reconcile.mjs && tsx test/test-file-lock-failopen.mjs && node test/with-timeout.mjs 420 npx tsx test/test-log-format.mjs && npx tsx test/test-deploy-manifests.mjs && npx tsx test/test-kimi-default-model-1169.mjs && npx tsx test/test-loop-dormant-runtime-1170.mjs && npx tsx test/test-skill-install-atomic.mjs && node test/test-version-unpublished.mjs && node test/test-pin-holds.mjs && node test/test-hypha-token-renewal.mjs",
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-fleet-version-parse.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-pinned-hypha-rpc.mjs && node test/with-timeout.mjs 420 npx tsx test/test-pinned-kimi.mjs && node test/with-timeout.mjs 420 npx tsx test/test-channel-receive-cap.mjs && node test/with-timeout.mjs 420 npx tsx test/test-dns-shadowing.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 && npx tsx test/test-verify-gate-async.mjs && npx tsx test/test-process-env-redaction.mjs && npx tsx test/test-provisioner-pin-published.mjs && npx tsx test/test-pinned-nono.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-frpc-footprint.mjs && npx tsx test/test-serve-regenerate-url.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 npx tsx test/test-claude-version-recheck.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 && npx tsx test/test-channel-lost-update.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 && node test/with-timeout.mjs 420 npx tsx test/test-compaction-backstop.mjs && tsx test/test-launchpad-reconcile.mjs && tsx test/test-file-lock-failopen.mjs && node test/with-timeout.mjs 420 npx tsx test/test-log-format.mjs && npx tsx test/test-deploy-manifests.mjs && npx tsx test/test-kimi-default-model-1169.mjs && npx tsx test/test-loop-dormant-runtime-1170.mjs && npx tsx test/test-skill-install-atomic.mjs && node test/test-version-unpublished.mjs && node test/test-pin-holds.mjs && node test/test-hypha-token-renewal.mjs && node test/with-timeout.mjs 420 npx tsx test/test-boot-status.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,4 +1,4 @@
1
- import { f as resolveProjectRoot, u as updateIssue, h as getIssue, i as checkVerifyCommandAsync, j as resumeIssue, p as pauseIssue, k as addComment, l as addIssue, m as listIssues, n as isPendingIssue, o as searchIssues, q as isVisibleTo } from './run-LHJh7jLy.mjs';
1
+ import { f as resolveProjectRoot, u as updateIssue, h as getIssue, i as checkVerifyCommandAsync, j as resumeIssue, p as pauseIssue, k as addComment, l as addIssue, m as listIssues, n as isPendingIssue, o as searchIssues, q as isVisibleTo } from './run-CF4kAVPW.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { f as resolveProjectRoot, t as getRun, v as listRuns, w as getWorkflow, x as runWorkflow, y as setWorkflowEnabled, z as removeWorkflow, A as validateCronExpr, B as validateWorkflowName, C as saveWorkflow, D as rawWorkflow, E as listWorkflows } from './run-LHJh7jLy.mjs';
1
+ import { f as resolveProjectRoot, t as getRun, v as listRuns, w as getWorkflow, x as runWorkflow, y as setWorkflowEnabled, z as removeWorkflow, A as validateCronExpr, B as validateWorkflowName, C as saveWorkflow, D as rawWorkflow, E as listWorkflows } from './run-CF4kAVPW.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 { an as applyClaudeProxyEnv, ao as composeSessionId, ap as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aq as generateHookSettings } from './run-LHJh7jLy.mjs';
1
+ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { an as applyClaudeProxyEnv, ao as composeSessionId, ap as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aq as generateHookSettings } from './run-CF4kAVPW.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';
@@ -9251,7 +9251,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
9251
9251
  }
9252
9252
  const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
9253
9253
  const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
9254
- const { toolsForRole } = await import('./sideband-B5n9fNxM.mjs');
9254
+ const { toolsForRole } = await import('./sideband-BoutiRJi.mjs');
9255
9255
  const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
9256
9256
  return fmt(r2);
9257
9257
  }
@@ -9383,7 +9383,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
9383
9383
  return { ok: false, call_id: callId, status: "busy", error: "channel is busy (too many concurrent requests) \u2014 retry shortly" };
9384
9384
  }
9385
9385
  const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
9386
- const { queryCore } = await import('./commands-C4whLEwv.mjs');
9386
+ const { queryCore } = await import('./commands-DDuGBSsz.mjs');
9387
9387
  const timeout = c.reply?.timeout_sec || 120;
9388
9388
  let result;
9389
9389
  let thrownSessionId;
@@ -17043,6 +17043,104 @@ function isAuthExpiryError(err) {
17043
17043
  return /token has expired|invalid or expired|token is expired|expired token|authentication error/i.test(text);
17044
17044
  }
17045
17045
 
17046
+ const BOOT_STATUS_FILENAME = "daemon-boot-status.json";
17047
+ const AUTH_FIX_HINT = "Fix: svamp login <frontend-url> then: svamp daemon restart";
17048
+ function bootStatusPath(svampHome) {
17049
+ return join(svampHome, BOOT_STATUS_FILENAME);
17050
+ }
17051
+ function writeBootStatus(svampHome, status) {
17052
+ try {
17053
+ const p = bootStatusPath(svampHome);
17054
+ const tmp = `${p}.tmp.${process.pid}`;
17055
+ writeFileSync(tmp, JSON.stringify(status), "utf-8");
17056
+ renameSync$1(tmp, p);
17057
+ } catch {
17058
+ }
17059
+ }
17060
+ function readBootStatus(svampHome) {
17061
+ try {
17062
+ const raw = readFileSync$1(bootStatusPath(svampHome), "utf-8");
17063
+ const parsed = JSON.parse(raw);
17064
+ if (parsed && typeof parsed === "object" && typeof parsed.ok === "boolean" && typeof parsed.at === "number") {
17065
+ return parsed;
17066
+ }
17067
+ return null;
17068
+ } catch {
17069
+ return null;
17070
+ }
17071
+ }
17072
+ function clearBootStatus(svampHome) {
17073
+ try {
17074
+ unlinkSync(bootStatusPath(svampHome));
17075
+ } catch {
17076
+ }
17077
+ }
17078
+ function classifyBootFailure(err, opts) {
17079
+ const agoMs = opts?.preflightExpiredAgoMs;
17080
+ if (typeof agoMs === "number" && agoMs >= 0) {
17081
+ const h = Math.floor(agoMs / 36e5);
17082
+ const when = h >= 1 ? `${h}h ago` : "less than an hour ago";
17083
+ return {
17084
+ code: "auth-expired",
17085
+ message: `HYPHA_TOKEN expired ${when} \u2014 the daemon cannot connect to Hypha.`,
17086
+ hint: AUTH_FIX_HINT
17087
+ };
17088
+ }
17089
+ if (isAuthExpiryError(err)) {
17090
+ return {
17091
+ code: "auth-expired",
17092
+ message: "Hypha rejected the HYPHA_TOKEN (expired or invalid) \u2014 the daemon cannot connect.",
17093
+ hint: AUTH_FIX_HINT
17094
+ };
17095
+ }
17096
+ const text = err instanceof Error ? err.message : String(err);
17097
+ if (/timeout connecting to hypha/i.test(text)) {
17098
+ return {
17099
+ code: "connect-timeout",
17100
+ message: `Timed out connecting to the Hypha server. ${text.replace(/\s+/g, " ").slice(0, 160)}`.trim(),
17101
+ hint: "Check network reachability to HYPHA_SERVER_URL, then: svamp daemon restart"
17102
+ };
17103
+ }
17104
+ return {
17105
+ code: "connect-failed",
17106
+ message: `Failed to connect to Hypha: ${text.replace(/\s+/g, " ").slice(0, 200)}`.trim(),
17107
+ hint: "Check the boot log for details, then: svamp daemon restart"
17108
+ };
17109
+ }
17110
+ function describeSupervisorState(args) {
17111
+ const { bootStatus, daemonState, now, bootStatusMaxAgeMs = 15 * 60 * 1e3 } = args;
17112
+ if (bootStatus && bootStatus.ok === false && now - bootStatus.at <= bootStatusMaxAgeMs) {
17113
+ return {
17114
+ kind: "wedged",
17115
+ code: bootStatus.code || "connect-failed",
17116
+ message: bootStatus.message || "The daemon failed to connect to Hypha.",
17117
+ hint: bootStatus.hint || AUTH_FIX_HINT
17118
+ };
17119
+ }
17120
+ if (daemonState && daemonState.hyphaConnected === false) {
17121
+ const reason = daemonState.hyphaDisconnectReason || "";
17122
+ const isAuth = /auth:|expired|invalid/i.test(reason);
17123
+ return {
17124
+ kind: "wedged",
17125
+ code: isAuth ? "auth-expired" : "disconnected",
17126
+ message: `The supervisor is running but the daemon is DISCONNECTED from Hypha${reason ? ` (${reason})` : ""} \u2014 it is offline in the frontend.`,
17127
+ hint: isAuth ? AUTH_FIX_HINT : "Reconnect with: svamp daemon restart"
17128
+ };
17129
+ }
17130
+ return { kind: "healthy" };
17131
+ }
17132
+
17133
+ var bootStatus = /*#__PURE__*/Object.freeze({
17134
+ __proto__: null,
17135
+ AUTH_FIX_HINT: AUTH_FIX_HINT,
17136
+ BOOT_STATUS_FILENAME: BOOT_STATUS_FILENAME,
17137
+ classifyBootFailure: classifyBootFailure,
17138
+ clearBootStatus: clearBootStatus,
17139
+ describeSupervisorState: describeSupervisorState,
17140
+ readBootStatus: readBootStatus,
17141
+ writeBootStatus: writeBootStatus
17142
+ });
17143
+
17046
17144
  function getShareBaseUrl() {
17047
17145
  return getSvampWebBaseUrl();
17048
17146
  }
@@ -20995,7 +21093,7 @@ async function startDaemon(options) {
20995
21093
  try {
20996
21094
  const dir = loadSessionIndex()[sessionId]?.directory;
20997
21095
  if (!dir) return;
20998
- const { reconcileServiceLinks } = await import('./agentCommands-B7JaByb0.mjs');
21096
+ const { reconcileServiceLinks } = await import('./agentCommands-BuO988tJ.mjs');
20999
21097
  const configPath = getSvampConfigPath(dir, sessionId);
21000
21098
  const config = readSvampConfig(configPath);
21001
21099
  const entries = Array.from(urls.entries());
@@ -21017,7 +21115,7 @@ async function startDaemon(options) {
21017
21115
  try {
21018
21116
  const dir = loadSessionIndex()[sessionId]?.directory;
21019
21117
  if (!dir) return;
21020
- const { reconcileServiceLinks } = await import('./agentCommands-B7JaByb0.mjs');
21118
+ const { reconcileServiceLinks } = await import('./agentCommands-BuO988tJ.mjs');
21021
21119
  const configPath = getSvampConfigPath(dir, sessionId);
21022
21120
  const config = readSvampConfig(configPath);
21023
21121
  const incoming = [{
@@ -21038,7 +21136,7 @@ async function startDaemon(options) {
21038
21136
  try {
21039
21137
  const dir = loadSessionIndex()[sessionId]?.directory;
21040
21138
  if (!dir) return;
21041
- const { dropServiceLinks } = await import('./agentCommands-B7JaByb0.mjs');
21139
+ const { dropServiceLinks } = await import('./agentCommands-BuO988tJ.mjs');
21042
21140
  const configPath = getSvampConfigPath(dir, sessionId);
21043
21141
  const config = readSvampConfig(configPath);
21044
21142
  if (dropServiceLinks(config, "serve", mountName)) {
@@ -21054,7 +21152,7 @@ async function startDaemon(options) {
21054
21152
  try {
21055
21153
  const dir = loadSessionIndex()[sessionId]?.directory;
21056
21154
  if (!dir) return;
21057
- const { dropServiceLinks } = await import('./agentCommands-B7JaByb0.mjs');
21155
+ const { dropServiceLinks } = await import('./agentCommands-BuO988tJ.mjs');
21058
21156
  const configPath = getSvampConfigPath(dir, sessionId);
21059
21157
  const config = readSvampConfig(configPath);
21060
21158
  if (dropServiceLinks(config, "tunnel", tunnelName)) {
@@ -21071,7 +21169,7 @@ async function startDaemon(options) {
21071
21169
  let managedLinkSessionsSeeded = false;
21072
21170
  async function reconcileAllServiceLinks() {
21073
21171
  try {
21074
- const { reconcileServiceLinksExact, hasManagedServiceLink } = await import('./agentCommands-B7JaByb0.mjs');
21172
+ const { reconcileServiceLinksExact, hasManagedServiceLink } = await import('./agentCommands-BuO988tJ.mjs');
21075
21173
  const desiredBySession = /* @__PURE__ */ new Map();
21076
21174
  const push = (sessionId, entry) => {
21077
21175
  if (!sessionId || !entry.url) return;
@@ -21194,17 +21292,43 @@ async function startDaemon(options) {
21194
21292
  })();
21195
21293
  preventMachineSleep(logger);
21196
21294
  try {
21295
+ const tokenExpiresAt = decodeTokenExpiry(hyphaToken);
21296
+ const bootNow = Date.now();
21297
+ if (isTokenExpired(tokenExpiresAt, bootNow)) {
21298
+ const failure = classifyBootFailure(void 0, {
21299
+ preflightExpiredAgoMs: bootNow - tokenExpiresAt
21300
+ });
21301
+ writeBootStatus(SVAMP_HOME, { ok: false, ...failure, at: bootNow });
21302
+ logger.log("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550");
21303
+ logger.log(failure.message);
21304
+ logger.log("This is NOT a network fault \u2014 the daemon cannot connect until a new token");
21305
+ logger.log("is issued, so it will not start.");
21306
+ logger.log(` ${failure.hint}`);
21307
+ logger.log("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550");
21308
+ throw new Error(failure.message);
21309
+ }
21197
21310
  logger.log("Connecting to Hypha server...");
21198
- server = await connectToHypha({
21199
- serverUrl: hyphaServerUrl,
21200
- token: hyphaToken,
21201
- name: `svamp-machine-${machineId}`,
21202
- transport: "http",
21203
- // Use HYPHA_CLIENT_ID if set (server-apps integration), otherwise use machineId.
21204
- // Using machineId gives a STABLE client_id across reconnections, so the service ID
21205
- // (workspace/clientId:default) is predictable and can be stored in share bookmarks.
21206
- clientId: hyphaClientId || machineId
21207
- });
21311
+ try {
21312
+ server = await connectToHypha({
21313
+ serverUrl: hyphaServerUrl,
21314
+ token: hyphaToken,
21315
+ name: `svamp-machine-${machineId}`,
21316
+ transport: "http",
21317
+ // Use HYPHA_CLIENT_ID if set (server-apps integration), otherwise use machineId.
21318
+ // Using machineId gives a STABLE client_id across reconnections, so the service ID
21319
+ // (workspace/clientId:default) is predictable and can be stored in share bookmarks.
21320
+ clientId: hyphaClientId || machineId
21321
+ });
21322
+ } catch (connectErr) {
21323
+ const failure = classifyBootFailure(connectErr);
21324
+ writeBootStatus(SVAMP_HOME, { ok: false, ...failure, at: Date.now() });
21325
+ logger.log("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550");
21326
+ logger.log(`Daemon could not connect to Hypha: ${failure.message}`);
21327
+ logger.log(` ${failure.hint}`);
21328
+ logger.log("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550");
21329
+ throw connectErr;
21330
+ }
21331
+ clearBootStatus(SVAMP_HOME);
21208
21332
  logger.log(`Connected to Hypha (workspace: ${server.config.workspace})`);
21209
21333
  writeDaemonStateFile({
21210
21334
  pid: process.pid,
@@ -23597,11 +23721,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
23597
23721
  });
23598
23722
  },
23599
23723
  onIssue: async (params) => {
23600
- const { issueRpc } = await import('./rpc-BPT9DJXL.mjs');
23724
+ const { issueRpc } = await import('./rpc-B2Lc2BAB.mjs');
23601
23725
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
23602
23726
  },
23603
23727
  onWorkflow: async (params) => {
23604
- const { workflowRpc } = await import('./rpc-zndUgvJ7.mjs');
23728
+ const { workflowRpc } = await import('./rpc-rAQQ1q8t.mjs');
23605
23729
  return workflowRpc(params?.cwd || directory, params || {});
23606
23730
  },
23607
23731
  onRipgrep: async (args, cwd) => {
@@ -24324,11 +24448,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
24324
24448
  });
24325
24449
  },
24326
24450
  onIssue: async (params) => {
24327
- const { issueRpc } = await import('./rpc-BPT9DJXL.mjs');
24451
+ const { issueRpc } = await import('./rpc-B2Lc2BAB.mjs');
24328
24452
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
24329
24453
  },
24330
24454
  onWorkflow: async (params) => {
24331
- const { workflowRpc } = await import('./rpc-zndUgvJ7.mjs');
24455
+ const { workflowRpc } = await import('./rpc-rAQQ1q8t.mjs');
24332
24456
  return workflowRpc(params?.cwd || directory, params || {});
24333
24457
  },
24334
24458
  onRipgrep: async (args, cwd) => {
@@ -25683,7 +25807,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
25683
25807
  const PING_TIMEOUT_MS = 15e3;
25684
25808
  const POST_RECONNECT_GRACE_MS = 2e4;
25685
25809
  const RECONNECT_JITTER_MS = 2500;
25686
- const { WorkflowScheduler } = await import('./scheduler-B0h2sfGn.mjs');
25810
+ const { WorkflowScheduler } = await import('./scheduler-CzF4lOe_.mjs');
25687
25811
  const workflowProjectRoots = () => {
25688
25812
  const dirs = /* @__PURE__ */ new Set();
25689
25813
  for (const s of pidToTrackedSession.values()) {
@@ -26381,4 +26505,4 @@ var run = /*#__PURE__*/Object.freeze({
26381
26505
  writeStopMarker: writeStopMarker
26382
26506
  });
26383
26507
 
26384
- export { searchSkills as $, validateCronExpr as A, validateWorkflowName as B, saveWorkflow as C, rawWorkflow as D, listWorkflows as E, isWorkflowEnabled as F, workflowSchedules as G, inZone as H, cronMatches as I, checkVerifyCommand as J, summarize as K, workflowSteps as L, describeNextFire as M, parseJwtEmail as N, computeCollectionConfigUpdate as O, SYSTEM_COLLECTION_CONFIG as P, loadMachineContext as Q, READ_ONLY_TOOLS as R, SharingNotificationSync as S, buildMachineInstructions as T, machineToolsForRole as U, buildMachineTools as V, parseFrontmatter as W, getSkillsServer as X, getSkillsWorkspaceName as Y, getSkillsCollectionName as Z, fetchWithTimeout as _, createSessionStore as a, SKILLS_DIR as a0, getSkillInfo as a1, downloadSkillFile as a2, listSkillFiles as a3, resolveModel as a4, formatHandle as a5, normalizeAllowedUser as a6, loadSecurityContextConfig as a7, resolveSecurityContext as a8, buildSecurityContextFromFlags as a9, codexAppServerBackend as aA, GeminiTransport$1 as aB, KimiTransport$1 as aC, kimiProvider as aD, kimiSetup as aE, api as aF, supervisorLock as aG, run as aH, mergeSecurityContexts as aa, buildSessionShareUrl as ab, computeOutboundHop as ac, registerAwaitingReply as ad, buildMachineShareUrl as ae, parseHandle as af, handleMatchesMetadata as ag, PINNED_CODEX_VERSION as ah, clearStopMarker as ai, stopMarkerExists as aj, withFileLock as ak, describeMisconfiguration as al, buildMachineDeps as am, applyClaudeProxyEnv as an, composeSessionId as ao, generateFriendlyName as ap, generateHookSettings as aq, instanceConfig as ar, frpc as as, staticFileServer as at, claudeAuth as au, codexProvider as av, projectInfo as aw, DefaultTransport$1 as ax, acpBackend as ay, acpAgentConfig as az, stopDaemon as b, connectToHypha as c, daemonStatus as d, shortId as e, resolveProjectRoot as f, getHyphaServerUrl$1 as g, getIssue as h, checkVerifyCommandAsync as i, resumeIssue as j, addComment as k, addIssue as l, listIssues as m, isPendingIssue as n, searchIssues as o, pauseIssue as p, isVisibleTo as q, registerMachineService as r, startDaemon as s, getRun as t, updateIssue as u, listRuns as v, getWorkflow as w, runWorkflow as x, setWorkflowEnabled as y, removeWorkflow as z };
26508
+ export { searchSkills as $, validateCronExpr as A, validateWorkflowName as B, saveWorkflow as C, rawWorkflow as D, listWorkflows as E, isWorkflowEnabled as F, workflowSchedules as G, inZone as H, cronMatches as I, checkVerifyCommand as J, summarize as K, workflowSteps as L, describeNextFire as M, parseJwtEmail as N, computeCollectionConfigUpdate as O, SYSTEM_COLLECTION_CONFIG as P, loadMachineContext as Q, READ_ONLY_TOOLS as R, SharingNotificationSync as S, buildMachineInstructions as T, machineToolsForRole as U, buildMachineTools as V, parseFrontmatter as W, getSkillsServer as X, getSkillsWorkspaceName as Y, getSkillsCollectionName as Z, fetchWithTimeout as _, createSessionStore as a, SKILLS_DIR as a0, getSkillInfo as a1, downloadSkillFile as a2, listSkillFiles as a3, resolveModel as a4, formatHandle as a5, normalizeAllowedUser as a6, loadSecurityContextConfig as a7, resolveSecurityContext as a8, buildSecurityContextFromFlags as a9, codexAppServerBackend as aA, GeminiTransport$1 as aB, KimiTransport$1 as aC, kimiProvider as aD, kimiSetup as aE, bootStatus as aF, api as aG, supervisorLock as aH, run as aI, mergeSecurityContexts as aa, buildSessionShareUrl as ab, computeOutboundHop as ac, registerAwaitingReply as ad, buildMachineShareUrl as ae, parseHandle as af, handleMatchesMetadata as ag, PINNED_CODEX_VERSION as ah, clearStopMarker as ai, stopMarkerExists as aj, withFileLock as ak, describeMisconfiguration as al, buildMachineDeps as am, applyClaudeProxyEnv as an, composeSessionId as ao, generateFriendlyName as ap, generateHookSettings as aq, instanceConfig as ar, frpc as as, staticFileServer as at, claudeAuth as au, codexProvider as av, projectInfo as aw, DefaultTransport$1 as ax, acpBackend as ay, acpAgentConfig as az, stopDaemon as b, connectToHypha as c, daemonStatus as d, shortId as e, resolveProjectRoot as f, getHyphaServerUrl$1 as g, getIssue as h, checkVerifyCommandAsync as i, resumeIssue as j, addComment as k, addIssue as l, listIssues as m, isPendingIssue as n, searchIssues as o, pauseIssue as p, isVisibleTo as q, registerMachineService as r, startDaemon as s, getRun as t, updateIssue as u, listRuns as v, getWorkflow as w, runWorkflow as x, setWorkflowEnabled as y, removeWorkflow as z };
@@ -1,4 +1,4 @@
1
- import { f as resolveProjectRoot, E as listWorkflows, F as isWorkflowEnabled, G as workflowSchedules, H as inZone, x as runWorkflow, I as cronMatches } from './run-LHJh7jLy.mjs';
1
+ import { f as resolveProjectRoot, E as listWorkflows, F as isWorkflowEnabled, G as workflowSchedules, H as inZone, x as runWorkflow, I as cronMatches } from './run-CF4kAVPW.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';