svamp-cli 0.2.263 → 0.2.264

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 (25) hide show
  1. package/dist/{agentCommands-DWshkZ3Z.mjs → agentCommands-BZPDL-1B.mjs} +5 -5
  2. package/dist/{auth-rJ0N4qyZ.mjs → auth-Dv8z9Dg0.mjs} +1 -1
  3. package/dist/cli-CNorTj26.mjs +2460 -0
  4. package/dist/cli.mjs +3 -2438
  5. package/dist/{commands-f9G9DwC4.mjs → commands-BmpHRl5s.mjs} +1 -1
  6. package/dist/{commands-aGQUafx6.mjs → commands-CSNOKRVn.mjs} +2 -2
  7. package/dist/{commands-B_N0vONs.mjs → commands-DNyzbWPw.mjs} +6 -6
  8. package/dist/{commands-DfQA4ZX7.mjs → commands-D_YqjDY4.mjs} +4 -2
  9. package/dist/{commands-BrjfwC7G.mjs → commands-Dg_nTA2I.mjs} +2 -2
  10. package/dist/{commands-Dni5WrqV.mjs → commands-DuPRCS2G.mjs} +1 -1
  11. package/dist/{commands-BsQqZG9I.mjs → commands-Kk7AH5dR.mjs} +1 -1
  12. package/dist/{fleet-Bjg6QRMP.mjs → fleet-DkFOlkxS.mjs} +1 -1
  13. package/dist/{frpc-YKxUZoMA.mjs → frpc-DmaWRu0M.mjs} +1 -1
  14. package/dist/{headlessCli-DfKlYX0C.mjs → headlessCli-DFsJaJ2p.mjs} +2 -2
  15. package/dist/index.mjs +1 -1
  16. package/dist/{package-Cl0NCpCL.mjs → package-Cz5Z0buw.mjs} +2 -2
  17. package/dist/{rpc-B4zSdme1.mjs → rpc-Db3BR76v.mjs} +1 -1
  18. package/dist/{rpc-DrA4F31T.mjs → rpc-DswYjrCh.mjs} +1 -1
  19. package/dist/{run-btCn5o6B.mjs → run-C3qTQEDV.mjs} +1 -1
  20. package/dist/{run-DAOLRpvC.mjs → run-kkeXP2d_.mjs} +101 -23
  21. package/dist/{scheduler-DfbBMHWm.mjs → scheduler-DhKDP3hC.mjs} +1 -1
  22. package/dist/{serveCommands-YmniTKX9.mjs → serveCommands-BVJR3K9P.mjs} +5 -5
  23. package/dist/{serveManager-DVDWrx2q.mjs → serveManager-a_dIQuK4.mjs} +2 -2
  24. package/dist/{sideband-DPLjT788.mjs → sideband-CIJUNKUA.mjs} +1 -1
  25. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import os from 'os';
2
2
  import fs__default from 'fs';
3
3
  import { resolve, join, relative } from 'path';
4
- import { T as parseFrontmatter, U as getSkillsServer, V as getSkillsWorkspaceName, W as getSkillsCollectionName, X as fetchWithTimeout, Y as searchSkills, Z as SKILLS_DIR, _ as getSkillInfo, $ as downloadSkillFile, a0 as listSkillFiles } from './run-DAOLRpvC.mjs';
4
+ import { P as parseFrontmatter, Q as getSkillsServer, T as getSkillsWorkspaceName, U as getSkillsCollectionName, V as fetchWithTimeout, W as searchSkills, X as SKILLS_DIR, Y as getSkillInfo, Z as downloadSkillFile, _ as listSkillFiles } from './run-kkeXP2d_.mjs';
5
5
  import 'fs/promises';
6
6
  import 'url';
7
7
  import 'child_process';
@@ -1,8 +1,8 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
- import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-Dni5WrqV.mjs';
3
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-DuPRCS2G.mjs';
4
4
  import { execSync } from 'node:child_process';
5
- import { u as updateIssue, t as addComment, v as addIssue, k as shortId } from './run-DAOLRpvC.mjs';
5
+ import { u as updateIssue, o as addComment, q as addIssue, i as shortId } from './run-kkeXP2d_.mjs';
6
6
  import 'node:os';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -58,7 +58,7 @@ async function serviceExpose(args) {
58
58
  process.exit(1);
59
59
  }
60
60
  if (foreground) {
61
- const { runFrpcTunnel } = await import('./frpc-YKxUZoMA.mjs');
61
+ const { runFrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
62
62
  await runFrpcTunnel(name, ports, void 0, {
63
63
  group,
64
64
  groupKey,
@@ -68,7 +68,7 @@ async function serviceExpose(args) {
68
68
  });
69
69
  return;
70
70
  }
71
- const { connectAndGetMachine } = await import('./commands-Dni5WrqV.mjs');
71
+ const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
72
72
  const { server, machine } = await connectAndGetMachine();
73
73
  try {
74
74
  const status = await machine.tunnelStart({
@@ -90,7 +90,7 @@ async function serviceExpose(args) {
90
90
  console.log(` port ${port}: ${url}`);
91
91
  }
92
92
  if (process.env.SVAMP_SESSION_ID) {
93
- const { autoAddSessionLink } = await import('./agentCommands-DWshkZ3Z.mjs');
93
+ const { autoAddSessionLink } = await import('./agentCommands-BZPDL-1B.mjs');
94
94
  let added = 0;
95
95
  for (const [port, url] of urlEntries) {
96
96
  const label = urlEntries.length > 1 ? `${name}:${port}` : name;
@@ -138,7 +138,7 @@ async function serviceServe(args) {
138
138
  server.once("error", reject);
139
139
  server.listen(servePort, "127.0.0.1", () => resolve());
140
140
  });
141
- const { runFrpcTunnel } = await import('./frpc-YKxUZoMA.mjs');
141
+ const { runFrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
142
142
  void server;
143
143
  await runFrpcTunnel(name, [servePort]);
144
144
  } catch (err) {
@@ -148,7 +148,7 @@ async function serviceServe(args) {
148
148
  }
149
149
  async function serviceList(_args) {
150
150
  try {
151
- const { connectAndGetMachine } = await import('./commands-Dni5WrqV.mjs');
151
+ const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
152
152
  const { server, machine } = await connectAndGetMachine();
153
153
  try {
154
154
  const tunnels = await machine.tunnelList({});
@@ -188,7 +188,7 @@ async function serviceDelete(args) {
188
188
  process.exit(1);
189
189
  }
190
190
  try {
191
- const { connectAndGetMachine } = await import('./commands-Dni5WrqV.mjs');
191
+ const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
192
192
  const { server, machine } = await connectAndGetMachine();
193
193
  try {
194
194
  await machine.tunnelStop({ name });
@@ -1,7 +1,9 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { existsSync, readFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { n as resolveProjectRoot, x as searchIssues, w as listIssues, p as resumeIssue, q as pauseIssue, t as addComment, u as updateIssue, o as getIssue, y as isVisibleTo, L as summarize, v as addIssue } from './run-DAOLRpvC.mjs';
4
+ import { f as flushAndExit } from './cli-CNorTj26.mjs';
5
+ import { l as resolveProjectRoot, v as searchIssues, t as listIssues, n as resumeIssue, p as pauseIssue, o as addComment, u as updateIssue, m as getIssue, w as isVisibleTo, J as summarize, q as addIssue } from './run-kkeXP2d_.mjs';
6
+ import './serviceManager-hlOVxkhW.mjs';
5
7
  import 'os';
6
8
  import 'fs/promises';
7
9
  import 'fs';
@@ -366,7 +368,7 @@ the user explicitly reserved): re-run with \`--blocked "<the specific blocker>"\
366
368
  const pending = listIssues(root).filter(inScope).filter((i) => i.status === "ready" || i.status === "in_progress");
367
369
  if (json) console.log(JSON.stringify(pending));
368
370
  else out(pending.length ? `${pending.length} pending: ${pending.map((i) => "#" + i.id).join(" ")}` : "No pending issues.");
369
- process.exit(pending.length ? 1 : 0);
371
+ await flushAndExit(pending.length ? 1 : 0);
370
372
  break;
371
373
  }
372
374
  case "search": {
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-Dni5WrqV.mjs';
3
+ import { connectAndGetMachine } from './commands-DuPRCS2G.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:child_process';
6
6
  import 'node:path';
7
7
  import 'node:os';
8
- import './run-DAOLRpvC.mjs';
8
+ import './run-kkeXP2d_.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { execSync } from 'node:child_process';
3
3
  import { basename, resolve, join, isAbsolute } from 'node:path';
4
4
  import os from 'node:os';
5
- import { a2 as formatHandle, a3 as normalizeAllowedUser, a4 as loadSecurityContextConfig, a5 as resolveSecurityContext, a6 as buildSecurityContextFromFlags, a7 as mergeSecurityContexts, c as connectToHypha, a8 as buildSessionShareUrl, a9 as computeOutboundHop, k as shortId, aa as registerAwaitingReply, ab as buildMachineShareUrl, ac as parseHandle, ad as handleMatchesMetadata } from './run-DAOLRpvC.mjs';
5
+ import { a2 as formatHandle, a3 as normalizeAllowedUser, a4 as loadSecurityContextConfig, a5 as resolveSecurityContext, a6 as buildSecurityContextFromFlags, a7 as mergeSecurityContexts, c as connectToHypha, a8 as buildSessionShareUrl, a9 as computeOutboundHop, i as shortId, aa as registerAwaitingReply, ab as buildMachineShareUrl, ac as parseHandle, ad as handleMatchesMetadata } from './run-kkeXP2d_.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -1,5 +1,5 @@
1
1
  import { spawnSync } from 'node:child_process';
2
- import { n as resolveProjectRoot, M as workflowSteps, D as setWorkflowEnabled, I as isWorkflowEnabled, E as removeWorkflow, B as getWorkflow, H as listWorkflows, F as saveWorkflow, G as rawWorkflow } from './run-DAOLRpvC.mjs';
2
+ import { l as resolveProjectRoot, K as workflowSteps, B as setWorkflowEnabled, G as isWorkflowEnabled, C as removeWorkflow, z as getWorkflow, F as listWorkflows, D as saveWorkflow, E as rawWorkflow } from './run-kkeXP2d_.mjs';
3
3
  import 'os';
4
4
  import 'fs/promises';
5
5
  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 { c as connectToHypha } from './run-DAOLRpvC.mjs';
4
+ import { c as connectToHypha } from './run-kkeXP2d_.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-B9O-hKxm.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -4,7 +4,7 @@ import { mkdirSync, chmodSync, writeFileSync, unlinkSync, existsSync, readFileSy
4
4
  import { join } from 'path';
5
5
  import { homedir, platform, arch } from 'os';
6
6
  import { randomUUID, createHash } from 'crypto';
7
- import { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-DAOLRpvC.mjs';
7
+ import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-kkeXP2d_.mjs';
8
8
  import 'fs/promises';
9
9
  import 'url';
10
10
  import 'node:crypto';
@@ -1,5 +1,5 @@
1
- import { a1 as resolveModel, ae as describeMisconfiguration, af as buildMachineDeps } from './run-DAOLRpvC.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-DPLjT788.mjs';
1
+ import { $ as resolveModel, ae as describeMisconfiguration, af as buildMachineDeps } from './run-kkeXP2d_.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-CIJUNKUA.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-DAOLRpvC.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-kkeXP2d_.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,5 +1,5 @@
1
1
  var name = "svamp-cli";
2
- var version = "0.2.263";
2
+ var version = "0.2.264";
3
3
  var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
4
4
  var author = "Amun AI AB";
5
5
  var license = "SEE LICENSE IN LICENSE";
@@ -19,7 +19,7 @@ var exports$1 = {
19
19
  var scripts = {
20
20
  build: "rm -rf dist bin/skills bin/commands && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/crew bin/skills/crew && cp -r ../../commands bin/commands && tsc --noEmit && pkgroll",
21
21
  typecheck: "tsc --noEmit",
22
- test: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs",
22
+ test: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-app-server.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-ws-upgrade.mjs && npx tsx test/test-serve-auth.mjs && npx tsx test/test-static-file-server.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-outbox-reload.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.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 { n as resolveProjectRoot, z as getRun, A as listRuns, B as getWorkflow, C as runWorkflow, D as setWorkflowEnabled, E as removeWorkflow, F as saveWorkflow, G as rawWorkflow, H as listWorkflows } from './run-DAOLRpvC.mjs';
1
+ import { l as resolveProjectRoot, x as getRun, y as listRuns, z as getWorkflow, A as runWorkflow, B as setWorkflowEnabled, C as removeWorkflow, D as saveWorkflow, E as rawWorkflow, F as listWorkflows } from './run-kkeXP2d_.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { n as resolveProjectRoot, u as updateIssue, o as getIssue, p as resumeIssue, q as pauseIssue, t as addComment, v as addIssue, w as listIssues, x as searchIssues, y as isVisibleTo } from './run-DAOLRpvC.mjs';
1
+ import { l as resolveProjectRoot, u as updateIssue, m as getIssue, n as resumeIssue, p as pauseIssue, o as addComment, q as addIssue, t as listIssues, v as searchIssues, w as isVisibleTo } from './run-kkeXP2d_.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 { ag as applyClaudeProxyEnv, ah as composeSessionId, ai as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aj as generateHookSettings } from './run-DAOLRpvC.mjs';
1
+ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ag as applyClaudeProxyEnv, ah as composeSessionId, ai as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, aj as generateHookSettings } from './run-kkeXP2d_.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';
@@ -253,6 +253,34 @@ function mergeSecurityContexts(base, override) {
253
253
  merged.allowedDirectories = mergeArrays(base.allowedDirectories, override.allowedDirectories);
254
254
  return merged;
255
255
  }
256
+ function clampSecurityContextToCeiling(ceiling, requested) {
257
+ if (!ceiling) return void 0;
258
+ if (!requested) return ceiling;
259
+ const merged = {};
260
+ merged.role = ceiling.role;
261
+ merged.denyAllNetwork = (ceiling.denyAllNetwork ?? false) || (requested.denyAllNetwork ?? false);
262
+ const cf = ceiling.filesystem;
263
+ const rf = requested.filesystem;
264
+ if (cf || rf) {
265
+ merged.filesystem = {
266
+ // Grants: ceiling only (caller cannot widen writable paths).
267
+ allowWrite: cf?.allowWrite ? dedup(cf.allowWrite) : void 0,
268
+ // Denials: union (caller may add more).
269
+ denyRead: mergeArrays(cf?.denyRead, rf?.denyRead),
270
+ denyWrite: mergeArrays(cf?.denyWrite, rf?.denyWrite)
271
+ };
272
+ }
273
+ const cn = ceiling.network;
274
+ const rn = requested.network;
275
+ if (cn || rn) {
276
+ merged.network = {
277
+ allowedDomains: cn?.allowedDomains ? dedup(cn.allowedDomains) : void 0,
278
+ deniedDomains: mergeArrays(cn?.deniedDomains, rn?.deniedDomains)
279
+ };
280
+ }
281
+ merged.allowedDirectories = ceiling.allowedDirectories ? dedup(ceiling.allowedDirectories) : void 0;
282
+ return merged;
283
+ }
256
284
  function resolveSecurityContext(config, userEmail) {
257
285
  if (!config) return void 0;
258
286
  const defaultCtx = config.default;
@@ -2356,7 +2384,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
2356
2384
  if (machineCtx) {
2357
2385
  options = {
2358
2386
  ...options,
2359
- securityContext: mergeSecurityContexts(machineCtx, options.securityContext)
2387
+ securityContext: isSharedUser ? clampSecurityContextToCeiling(machineCtx, options.securityContext) : mergeSecurityContexts(machineCtx, options.securityContext)
2360
2388
  };
2361
2389
  }
2362
2390
  }
@@ -3013,7 +3041,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
3013
3041
  const tunnels = handlers.tunnels;
3014
3042
  if (!tunnels) throw new Error("Tunnel management not available");
3015
3043
  if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
3016
- const { FrpcTunnel } = await import('./frpc-YKxUZoMA.mjs');
3044
+ const { FrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
3017
3045
  const tunnel = new FrpcTunnel({
3018
3046
  name: params.name,
3019
3047
  ports: params.ports,
@@ -3480,7 +3508,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
3480
3508
  }
3481
3509
  const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
3482
3510
  const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
3483
- const { toolsForRole } = await import('./sideband-DPLjT788.mjs');
3511
+ const { toolsForRole } = await import('./sideband-CIJUNKUA.mjs');
3484
3512
  const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
3485
3513
  return fmt(r2);
3486
3514
  }
@@ -3579,7 +3607,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
3579
3607
  if (r.error || !r.sender) return { error: r.error || "unauthorized" };
3580
3608
  const callId = "call_" + Math.random().toString(16).slice(2, 12);
3581
3609
  const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
3582
- const { queryCore } = await import('./commands-Dni5WrqV.mjs');
3610
+ const { queryCore } = await import('./commands-DuPRCS2G.mjs');
3583
3611
  const timeout = c.reply?.timeout_sec || 120;
3584
3612
  let result;
3585
3613
  try {
@@ -8692,6 +8720,23 @@ function mapDecisionToWire(d) {
8692
8720
  }
8693
8721
  }
8694
8722
 
8723
+ function codexPermissionSettings(mode) {
8724
+ switch (mode) {
8725
+ case "yolo":
8726
+ case "bypassPermissions":
8727
+ case "danger-full-access":
8728
+ return { approvalPolicy: "never", sandbox: "danger-full-access" };
8729
+ case "safe-yolo":
8730
+ case "acceptEdits":
8731
+ return { approvalPolicy: "on-failure", sandbox: "workspace-write" };
8732
+ case "read-only":
8733
+ case "plan":
8734
+ return { approvalPolicy: "on-request", sandbox: "read-only" };
8735
+ case "default":
8736
+ default:
8737
+ return { approvalPolicy: "on-request", sandbox: "workspace-write" };
8738
+ }
8739
+ }
8695
8740
  const CODEX_PROVIDER_KEY_ENV = "SVAMP_CODEX_API_KEY";
8696
8741
  const PROVIDER_NAME = "svamp";
8697
8742
  function resolveCodexProvider(env = process.env) {
@@ -8728,6 +8773,7 @@ var codexProvider = /*#__PURE__*/Object.freeze({
8728
8773
  __proto__: null,
8729
8774
  CODEX_PROVIDER_KEY_ENV: CODEX_PROVIDER_KEY_ENV,
8730
8775
  buildCodexProviderArgs: buildCodexProviderArgs,
8776
+ codexPermissionSettings: codexPermissionSettings,
8731
8777
  hasCustomProvider: hasCustomProvider,
8732
8778
  resolveCodexProvider: resolveCodexProvider
8733
8779
  });
@@ -8740,6 +8786,8 @@ class CodexAppServerBackend {
8740
8786
  const provider = opts.provider ?? resolveCodexProvider();
8741
8787
  const { configArgs, env: providerEnv, model: providerModel } = buildCodexProviderArgs(provider);
8742
8788
  this.model = opts.model ?? providerModel;
8789
+ this.approvalPolicy = opts.approvalPolicy;
8790
+ this.sandbox = opts.sandbox;
8743
8791
  this.client = new CodexAppServerClient({
8744
8792
  cwd: opts.cwd,
8745
8793
  env: { ...opts.env ?? {}, ...providerEnv },
@@ -8756,6 +8804,11 @@ class CodexAppServerBackend {
8756
8804
  sessionId = randomUUID();
8757
8805
  log;
8758
8806
  model;
8807
+ // #0438: codex's own approval policy + sandbox, derived from the svamp permission mode. Mutable
8808
+ // so a mid-session switchMode takes effect on the next turn. yolo → 'never' + 'danger-full-access'
8809
+ // so codex NEVER prompts for writes (and never times out waiting on a prompt).
8810
+ approvalPolicy;
8811
+ sandbox;
8759
8812
  started = false;
8760
8813
  // Approval promises keyed by callId, resolved by respondToPermission().
8761
8814
  pendingApprovals = /* @__PURE__ */ new Map();
@@ -8779,9 +8832,9 @@ class CodexAppServerBackend {
8779
8832
  if (avail === false) throw new Error("Installed Codex is too old for app-server \u2014 upgrade to >= 0.100 (`npm i -g @openai/codex@latest`).");
8780
8833
  await this.client.start();
8781
8834
  if (this.opts.resumeThreadId) {
8782
- await this.client.resumeThread({ threadId: this.opts.resumeThreadId, model: this.model, approvalPolicy: this.opts.approvalPolicy, sandbox: this.opts.sandbox });
8835
+ await this.client.resumeThread({ threadId: this.opts.resumeThreadId, model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
8783
8836
  } else {
8784
- const r = await this.client.startThread({ model: this.model, approvalPolicy: this.opts.approvalPolicy, sandbox: this.opts.sandbox });
8837
+ const r = await this.client.startThread({ model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
8785
8838
  this.model = this.model ?? r.model;
8786
8839
  }
8787
8840
  this.started = true;
@@ -8798,7 +8851,7 @@ class CodexAppServerBackend {
8798
8851
  resolveTurn = res;
8799
8852
  });
8800
8853
  try {
8801
- await this.client.sendTurnAndWait(prompt, { model: this.model, approvalPolicy: this.opts.approvalPolicy, sandbox: this.opts.sandbox });
8854
+ await this.client.sendTurnAndWait(prompt, { model: this.model, approvalPolicy: this.approvalPolicy, sandbox: this.sandbox });
8802
8855
  } catch (err) {
8803
8856
  this.emit({ type: "status", status: "error", detail: err instanceof Error ? err.message : String(err) });
8804
8857
  } finally {
@@ -8849,6 +8902,12 @@ class CodexAppServerBackend {
8849
8902
  setModel(model) {
8850
8903
  this.model = model;
8851
8904
  }
8905
+ /** #0438: update codex's approval policy + sandbox (from a svamp permission-mode switch). Takes
8906
+ * effect on the next turn (and next thread start). yolo → 'never' + 'danger-full-access'. */
8907
+ setPermission(approvalPolicy, sandbox) {
8908
+ this.approvalPolicy = approvalPolicy;
8909
+ this.sandbox = sandbox;
8910
+ }
8852
8911
  /** The model label for assistant-message parity with Claude (frontend schema requires a non-empty `model`). */
8853
8912
  getModel() {
8854
8913
  return this.model || "codex";
@@ -11985,17 +12044,31 @@ function resolveEvaluatorModel(envValue) {
11985
12044
  function parseEvaluatorVerdict(text) {
11986
12045
  if (!text) return null;
11987
12046
  const candidates = [];
11988
- let depth = 0, start = -1;
12047
+ let depth = 0, start = -1, inStr = false, esc = false;
11989
12048
  for (let i = 0; i < text.length; i++) {
11990
12049
  const c = text[i];
11991
- if (c === "{") {
12050
+ if (inStr) {
12051
+ if (esc) {
12052
+ esc = false;
12053
+ } else if (c === "\\") {
12054
+ esc = true;
12055
+ } else if (c === '"') {
12056
+ inStr = false;
12057
+ }
12058
+ continue;
12059
+ }
12060
+ if (c === '"') {
12061
+ inStr = true;
12062
+ } else if (c === "{") {
11992
12063
  if (depth === 0) start = i;
11993
12064
  depth++;
11994
12065
  } else if (c === "}") {
11995
- depth--;
11996
- if (depth === 0 && start >= 0) {
11997
- candidates.push(text.slice(start, i + 1));
11998
- start = -1;
12066
+ if (depth > 0) {
12067
+ depth--;
12068
+ if (depth === 0 && start >= 0) {
12069
+ candidates.push(text.slice(start, i + 1));
12070
+ start = -1;
12071
+ }
11999
12072
  }
12000
12073
  }
12001
12074
  }
@@ -13867,7 +13940,7 @@ async function startDaemon(options) {
13867
13940
  try {
13868
13941
  const dir = loadSessionIndex()[sessionId]?.directory;
13869
13942
  if (!dir) return;
13870
- const { reconcileServiceLinks } = await import('./agentCommands-DWshkZ3Z.mjs');
13943
+ const { reconcileServiceLinks } = await import('./agentCommands-BZPDL-1B.mjs');
13871
13944
  const configPath = getSvampConfigPath(dir, sessionId);
13872
13945
  const config = readSvampConfig(configPath);
13873
13946
  const entries = Array.from(urls.entries());
@@ -13885,7 +13958,7 @@ async function startDaemon(options) {
13885
13958
  }
13886
13959
  }
13887
13960
  async function createExposedTunnel(spec) {
13888
- const { FrpcTunnel } = await import('./frpc-YKxUZoMA.mjs');
13961
+ const { FrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
13889
13962
  const tunnel = new FrpcTunnel({
13890
13963
  name: spec.name,
13891
13964
  ports: spec.ports,
@@ -13906,7 +13979,7 @@ async function startDaemon(options) {
13906
13979
  }
13907
13980
  const tunnelRecreateState = /* @__PURE__ */ new Map();
13908
13981
  const tunnelRecreateInFlight = /* @__PURE__ */ new Set();
13909
- const { ServeManager } = await import('./serveManager-DVDWrx2q.mjs');
13982
+ const { ServeManager } = await import('./serveManager-a_dIQuK4.mjs');
13910
13983
  const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
13911
13984
  ensureAutoInstalledSkills(logger).catch(() => {
13912
13985
  });
@@ -16028,11 +16101,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
16028
16101
  });
16029
16102
  },
16030
16103
  onIssue: async (params) => {
16031
- const { issueRpc } = await import('./rpc-DrA4F31T.mjs');
16104
+ const { issueRpc } = await import('./rpc-DswYjrCh.mjs');
16032
16105
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
16033
16106
  },
16034
16107
  onWorkflow: async (params) => {
16035
- const { workflowRpc } = await import('./rpc-B4zSdme1.mjs');
16108
+ const { workflowRpc } = await import('./rpc-Db3BR76v.mjs');
16036
16109
  return workflowRpc(params?.cwd || directory, params || {});
16037
16110
  },
16038
16111
  onRipgrep: async (args, cwd) => {
@@ -16426,6 +16499,8 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
16426
16499
  if (currentPermissionMode === mode) return;
16427
16500
  logger.log(`[${agentName} Session ${sessionId}] Switch mode: ${mode}`);
16428
16501
  currentPermissionMode = mode;
16502
+ const cp = codexPermissionSettings(mode);
16503
+ agentBackend.setPermission?.(cp.approvalPolicy, cp.sandbox);
16429
16504
  },
16430
16505
  onRestartClaude: async () => {
16431
16506
  logger.log(`[${agentName} Session ${sessionId}] Restart agent requested`);
@@ -16588,11 +16663,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
16588
16663
  });
16589
16664
  },
16590
16665
  onIssue: async (params) => {
16591
- const { issueRpc } = await import('./rpc-DrA4F31T.mjs');
16666
+ const { issueRpc } = await import('./rpc-DswYjrCh.mjs');
16592
16667
  return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
16593
16668
  },
16594
16669
  onWorkflow: async (params) => {
16595
- const { workflowRpc } = await import('./rpc-B4zSdme1.mjs');
16670
+ const { workflowRpc } = await import('./rpc-Db3BR76v.mjs');
16596
16671
  return workflowRpc(params?.cwd || directory, params || {});
16597
16672
  },
16598
16673
  onRipgrep: async (args, cwd) => {
@@ -16745,7 +16820,8 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
16745
16820
  if (avail === false) throw new Error("Installed Codex is too old for app-server \u2014 upgrade to >= 0.100 (`npm i -g @openai/codex@latest`).");
16746
16821
  const provider = resolveCodexProvider();
16747
16822
  const codexModel = options2.model || agentConfig?.default_model || provider.model || void 0;
16748
- logger.log(`[Agent Session ${sessionId}] Codex backend: app-server (model=${codexModel ?? "default"}${provider.apiBase ? `, provider=${provider.apiBase}` : ""})`);
16823
+ const codexPerm = codexPermissionSettings(currentPermissionMode);
16824
+ logger.log(`[Agent Session ${sessionId}] Codex backend: app-server (model=${codexModel ?? "default"}${provider.apiBase ? `, provider=${provider.apiBase}` : ""}, mode=${currentPermissionMode} \u2192 approval=${codexPerm.approvalPolicy}/sandbox=${codexPerm.sandbox})`);
16749
16825
  if (acpResumeThreadId) logger.log(`[Agent Session ${sessionId}] Resuming Codex thread ${acpResumeThreadId} (restart recovery)`);
16750
16826
  agentBackend = new CodexAppServerBackend({
16751
16827
  cwd: directory,
@@ -16754,6 +16830,8 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
16754
16830
  env: options2.environmentVariables,
16755
16831
  log: logger.log,
16756
16832
  isolationConfig: agentIsoConfig,
16833
+ approvalPolicy: codexPerm.approvalPolicy,
16834
+ sandbox: codexPerm.sandbox,
16757
16835
  // #0412 P2: resume the persisted thread across a daemon restart (context intact).
16758
16836
  resumeThreadId: acpResumeThreadId
16759
16837
  });
@@ -17600,7 +17678,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
17600
17678
  const PING_TIMEOUT_MS = 15e3;
17601
17679
  const POST_RECONNECT_GRACE_MS = 2e4;
17602
17680
  const RECONNECT_JITTER_MS = 2500;
17603
- const { WorkflowScheduler } = await import('./scheduler-DfbBMHWm.mjs');
17681
+ const { WorkflowScheduler } = await import('./scheduler-DhKDP3hC.mjs');
17604
17682
  const workflowScheduler = new WorkflowScheduler({
17605
17683
  projectRoots: () => {
17606
17684
  const dirs = /* @__PURE__ */ new Set();
@@ -18211,4 +18289,4 @@ var run = /*#__PURE__*/Object.freeze({
18211
18289
  writeStopMarker: writeStopMarker
18212
18290
  });
18213
18291
 
18214
- export { downloadSkillFile as $, listRuns as A, getWorkflow as B, runWorkflow as C, setWorkflowEnabled as D, removeWorkflow as E, saveWorkflow as F, rawWorkflow as G, listWorkflows as H, isWorkflowEnabled as I, workflowCrons as J, cronMatches as K, summarize as L, workflowSteps as M, loadMachineContext as N, buildMachineInstructions as O, machineToolsForRole as P, buildMachineTools as Q, READ_ONLY_TOOLS as R, ServeAuth as S, parseFrontmatter as T, getSkillsServer as U, getSkillsWorkspaceName as V, getSkillsCollectionName as W, fetchWithTimeout as X, searchSkills as Y, SKILLS_DIR as Z, getSkillInfo as _, createSessionStore as a, listSkillFiles as a0, resolveModel as a1, formatHandle as a2, normalizeAllowedUser as a3, loadSecurityContextConfig as a4, resolveSecurityContext as a5, buildSecurityContextFromFlags as a6, mergeSecurityContexts as a7, buildSessionShareUrl as a8, computeOutboundHop as a9, registerAwaitingReply as aa, buildMachineShareUrl as ab, parseHandle as ac, handleMatchesMetadata as ad, describeMisconfiguration as ae, buildMachineDeps as af, applyClaudeProxyEnv as ag, composeSessionId as ah, generateFriendlyName as ai, generateHookSettings as aj, claudeAuth as ak, projectInfo as al, DefaultTransport$1 as am, acpBackend as an, acpAgentConfig as ao, codexProvider as ap, codexAppServerBackend as aq, GeminiTransport$1 as ar, instanceConfig as as, api as at, run as au, stopDaemon as b, connectToHypha as c, daemonStatus as d, clearStopMarker as e, stopMarkerExists as f, getHyphaServerUrl$1 as g, getFrpsSubdomainHost as h, getFrpsServerPort as i, getFrpsServerAddr as j, shortId as k, getHyphaServerUrl as l, hasCookieToken as m, resolveProjectRoot as n, getIssue as o, resumeIssue as p, pauseIssue as q, registerMachineService as r, startDaemon as s, addComment as t, updateIssue as u, addIssue as v, listIssues as w, searchIssues as x, isVisibleTo as y, getRun as z };
18292
+ export { resolveModel as $, runWorkflow as A, setWorkflowEnabled as B, removeWorkflow as C, saveWorkflow as D, rawWorkflow as E, listWorkflows as F, isWorkflowEnabled as G, workflowCrons as H, cronMatches as I, summarize as J, workflowSteps as K, loadMachineContext as L, buildMachineInstructions as M, machineToolsForRole as N, buildMachineTools as O, parseFrontmatter as P, getSkillsServer as Q, READ_ONLY_TOOLS as R, ServeAuth as S, getSkillsWorkspaceName as T, getSkillsCollectionName as U, fetchWithTimeout as V, searchSkills as W, SKILLS_DIR as X, getSkillInfo as Y, downloadSkillFile as Z, listSkillFiles as _, createSessionStore as a, clearStopMarker as a0, stopMarkerExists as a1, formatHandle as a2, normalizeAllowedUser as a3, loadSecurityContextConfig as a4, resolveSecurityContext as a5, buildSecurityContextFromFlags as a6, mergeSecurityContexts as a7, buildSessionShareUrl as a8, computeOutboundHop as a9, registerAwaitingReply as aa, buildMachineShareUrl as ab, parseHandle as ac, handleMatchesMetadata as ad, describeMisconfiguration as ae, buildMachineDeps as af, applyClaudeProxyEnv as ag, composeSessionId as ah, generateFriendlyName as ai, generateHookSettings as aj, claudeAuth as ak, projectInfo as al, DefaultTransport$1 as am, acpBackend as an, acpAgentConfig as ao, codexProvider as ap, codexAppServerBackend as aq, GeminiTransport$1 as ar, instanceConfig as as, api as at, run as au, stopDaemon as b, connectToHypha as c, daemonStatus as d, getFrpsSubdomainHost as e, getFrpsServerPort as f, getHyphaServerUrl$1 as g, getFrpsServerAddr as h, shortId as i, getHyphaServerUrl as j, hasCookieToken as k, resolveProjectRoot as l, getIssue as m, resumeIssue as n, addComment as o, pauseIssue as p, addIssue as q, registerMachineService as r, startDaemon as s, listIssues as t, updateIssue as u, searchIssues as v, isVisibleTo as w, getRun as x, listRuns as y, getWorkflow as z };
@@ -1,4 +1,4 @@
1
- import { n as resolveProjectRoot, H as listWorkflows, I as isWorkflowEnabled, J as workflowCrons, C as runWorkflow, K as cronMatches } from './run-DAOLRpvC.mjs';
1
+ import { l as resolveProjectRoot, F as listWorkflows, G as isWorkflowEnabled, H as workflowCrons, A as runWorkflow, I as cronMatches } from './run-kkeXP2d_.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -54,7 +54,7 @@ async function handleServeCommand() {
54
54
  }
55
55
  }
56
56
  async function serveAdd(args, machineId) {
57
- const { connectAndGetMachine } = await import('./commands-Dni5WrqV.mjs');
57
+ const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
58
58
  const pos = positionalArgs(args);
59
59
  const name = pos[0];
60
60
  if (!name) {
@@ -93,7 +93,7 @@ async function serveAdd(args, machineId) {
93
93
  }
94
94
  }
95
95
  async function serveApply(args, machineId) {
96
- const { connectAndGetMachine } = await import('./commands-Dni5WrqV.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
97
97
  const fs = await import('fs');
98
98
  const yaml = await import('yaml');
99
99
  const file = positionalArgs(args)[0];
@@ -182,7 +182,7 @@ async function serveApply(args, machineId) {
182
182
  }
183
183
  }
184
184
  async function serveRemove(args, machineId) {
185
- const { connectAndGetMachine } = await import('./commands-Dni5WrqV.mjs');
185
+ const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
186
186
  const pos = positionalArgs(args);
187
187
  const name = pos[0];
188
188
  if (!name) {
@@ -202,7 +202,7 @@ async function serveRemove(args, machineId) {
202
202
  }
203
203
  }
204
204
  async function serveList(args, machineId) {
205
- const { connectAndGetMachine } = await import('./commands-Dni5WrqV.mjs');
205
+ const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
206
206
  const all = hasFlag(args, "--all", "-a");
207
207
  const json = hasFlag(args, "--json");
208
208
  const sessionId = getFlag(args, "--session");
@@ -235,7 +235,7 @@ async function serveList(args, machineId) {
235
235
  }
236
236
  }
237
237
  async function serveInfo(machineId) {
238
- const { connectAndGetMachine } = await import('./commands-Dni5WrqV.mjs');
238
+ const { connectAndGetMachine } = await import('./commands-DuPRCS2G.mjs');
239
239
  const { machine, server } = await connectAndGetMachine(machineId);
240
240
  try {
241
241
  const info = await machine.serveInfo();
@@ -5,7 +5,7 @@ import * as http from 'http';
5
5
  import * as net from 'net';
6
6
  import * as path from 'path';
7
7
  import { serveStaticMount } from './staticFileServer-CbYnj2bH.mjs';
8
- import { l as getHyphaServerUrl, S as ServeAuth, m as hasCookieToken } from './run-DAOLRpvC.mjs';
8
+ import { j as getHyphaServerUrl, S as ServeAuth, k as hasCookieToken } from './run-kkeXP2d_.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -854,7 +854,7 @@ Connection: close\r
854
854
  const mount = this.mounts.get(mountName);
855
855
  const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
856
856
  try {
857
- const { FrpcTunnel } = await import('./frpc-YKxUZoMA.mjs');
857
+ const { FrpcTunnel } = await import('./frpc-DmaWRu0M.mjs');
858
858
  let tunnel;
859
859
  tunnel = new FrpcTunnel({
860
860
  name: tunnelName,
@@ -1,4 +1,4 @@
1
- import { R as READ_ONLY_TOOLS, N as loadMachineContext, O as buildMachineInstructions, P as machineToolsForRole, Q as buildMachineTools } from './run-DAOLRpvC.mjs';
1
+ import { R as READ_ONLY_TOOLS, L as loadMachineContext, M as buildMachineInstructions, N as machineToolsForRole, O as buildMachineTools } from './run-kkeXP2d_.mjs';
2
2
  import 'node:child_process';
3
3
  import 'os';
4
4
  import 'fs/promises';