svamp-cli 0.2.247 → 0.2.248

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/{agentCommands-DOzMhE_G.mjs → agentCommands-B_ozIVKT.mjs} +28 -11
  2. package/dist/{auth-B_ZnoKX0.mjs → auth-BLDmT7XN.mjs} +2 -1
  3. package/dist/cli.mjs +62 -61
  4. package/dist/{commands-vCeWXvYJ.mjs → commands-C3TQOYUo.mjs} +2 -1
  5. package/dist/{commands-Bm5q9G35.mjs → commands-CL8YI8k5.mjs} +2 -1
  6. package/dist/{commands-_rMwFmFH.mjs → commands-CRMQUQZG.mjs} +2 -1
  7. package/dist/{commands-F6j9TF4Q.mjs → commands-Cs2fNd-_.mjs} +7 -7
  8. package/dist/{commands-CxOPcoWa.mjs → commands-DS4i8ohA.mjs} +10 -6
  9. package/dist/{commands-BENx03Oz.mjs → commands-Djvi1cZ2.mjs} +3 -2
  10. package/dist/{commands-C2u9U3y6.mjs → commands-DwhA-iV3.mjs} +3 -2
  11. package/dist/{fleet-pMXCRilx.mjs → fleet-CJZOVjOY.mjs} +2 -1
  12. package/dist/{frpc-Di-y4cWK.mjs → frpc-CsjEXBuS.mjs} +2 -1
  13. package/dist/{headlessCli-D6k9Pnum.mjs → headlessCli-qBontdlf.mjs} +3 -2
  14. package/dist/index.mjs +2 -1
  15. package/dist/{package-BJYmQjS2.mjs → package-B7z6GsNX.mjs} +2 -2
  16. package/dist/{rpc-DbY7NUhj.mjs → rpc-BGFgegj5.mjs} +1 -3
  17. package/dist/{rpc-BncvIQMO.mjs → rpc-C1DI7HfZ.mjs} +2 -1
  18. package/dist/{run-CYx_Rhiu.mjs → run-C61rsl7r.mjs} +2 -1
  19. package/dist/{run-1BBi0_ol.mjs → run-CHIppB2r.mjs} +655 -35
  20. package/dist/{scheduler-BkXOKjHn.mjs → scheduler-Csp21zzg.mjs} +1 -3
  21. package/dist/{serveCommands-CESRU6-1.mjs → serveCommands-BYHk72ZO.mjs} +5 -5
  22. package/dist/{serveManager-BZtpClpC.mjs → serveManager-Di3xrvG2.mjs} +3 -2
  23. package/dist/{sideband-BqD4-WWR.mjs → sideband-Cs-kNLye.mjs} +2 -1
  24. package/package.json +2 -2
  25. package/dist/runStore-C5IyfbON.mjs +0 -239
  26. package/dist/store-BTs0H_y0.mjs +0 -148
@@ -1,7 +1,7 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { existsSync, readFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { m as resolveProjectRoot, w as searchIssues, v as listIssues, o as resumeIssue, p as pauseIssue, q as addComment, u as updateIssue, n as getIssue, x as isVisibleTo, z as summarize, t as addIssue } from './run-1BBi0_ol.mjs';
4
+ import { n as resolveProjectRoot, x as searchIssues, w as listIssues, p as resumeIssue, q as pauseIssue, t as addComment, u as updateIssue, o as getIssue, y as isVisibleTo, L as summarize, v as addIssue } from './run-CHIppB2r.mjs';
5
5
  import 'os';
6
6
  import 'fs/promises';
7
7
  import 'fs';
@@ -20,6 +20,7 @@ import '@modelcontextprotocol/sdk/types.js';
20
20
  import 'zod';
21
21
  import 'node:fs/promises';
22
22
  import 'node:util';
23
+ import 'yaml';
23
24
 
24
25
  const STATUS_GLYPH = {
25
26
  ready: "\u25C9",
@@ -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-Di-y4cWK.mjs');
61
+ const { runFrpcTunnel } = await import('./frpc-CsjEXBuS.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-vCeWXvYJ.mjs');
71
+ const { connectAndGetMachine } = await import('./commands-C3TQOYUo.mjs');
72
72
  const { server, machine } = await connectAndGetMachine();
73
73
  try {
74
74
  const status = await machine.tunnelStart({
@@ -90,11 +90,11 @@ 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-DOzMhE_G.mjs');
93
+ const { autoAddSessionLink } = await import('./agentCommands-B_ozIVKT.mjs');
94
94
  let added = 0;
95
95
  for (const [port, url] of urlEntries) {
96
96
  const label = urlEntries.length > 1 ? `${name}:${port}` : name;
97
- if (autoAddSessionLink(String(url), label)) added++;
97
+ if (autoAddSessionLink(String(url), label, void 0, { kind: "tunnel", name })) added++;
98
98
  }
99
99
  if (added) console.log(` \u21B3 added to this session's Launch Pad`);
100
100
  }
@@ -136,7 +136,7 @@ async function serviceServe(args) {
136
136
  };
137
137
  process.on("SIGINT", cleanup);
138
138
  process.on("SIGTERM", cleanup);
139
- const { runFrpcTunnel } = await import('./frpc-Di-y4cWK.mjs');
139
+ const { runFrpcTunnel } = await import('./frpc-CsjEXBuS.mjs');
140
140
  await runFrpcTunnel(name, [caddyPort]);
141
141
  } catch (err) {
142
142
  console.error(`Error serving directory: ${err.message}`);
@@ -145,7 +145,7 @@ async function serviceServe(args) {
145
145
  }
146
146
  async function serviceList(_args) {
147
147
  try {
148
- const { connectAndGetMachine } = await import('./commands-vCeWXvYJ.mjs');
148
+ const { connectAndGetMachine } = await import('./commands-C3TQOYUo.mjs');
149
149
  const { server, machine } = await connectAndGetMachine();
150
150
  try {
151
151
  const tunnels = await machine.tunnelList({});
@@ -185,7 +185,7 @@ async function serviceDelete(args) {
185
185
  process.exit(1);
186
186
  }
187
187
  try {
188
- const { connectAndGetMachine } = await import('./commands-vCeWXvYJ.mjs');
188
+ const { connectAndGetMachine } = await import('./commands-C3TQOYUo.mjs');
189
189
  const { server, machine } = await connectAndGetMachine();
190
190
  try {
191
191
  await machine.tunnelStop({ name });
@@ -1,6 +1,5 @@
1
1
  import { spawnSync } from 'node:child_process';
2
- import { m as resolveProjectRoot } from './run-1BBi0_ol.mjs';
3
- import { c as workflowSteps, s as setWorkflowEnabled, i as isWorkflowEnabled, r as removeWorkflow, g as getWorkflow, l as listWorkflows, a as saveWorkflow, b as rawWorkflow } from './store-BTs0H_y0.mjs';
2
+ import { n as resolveProjectRoot, M as workflowSteps, D as setWorkflowEnabled, I as isWorkflowEnabled, E as removeWorkflow, B as getWorkflow, H as listWorkflows, F as saveWorkflow, G as rawWorkflow } from './run-CHIppB2r.mjs';
4
3
  import 'os';
5
4
  import 'fs/promises';
6
5
  import 'fs';
@@ -49,6 +48,7 @@ function describeOn(on) {
49
48
  if (on.workflow_dispatch) parts.push("workflow_dispatch");
50
49
  if (on.channel) parts.push(`channel(${on.channel})`);
51
50
  if (on.issue?.length) parts.push(`issue(${on.issue.join("/")})`);
51
+ if (on.idle) parts.push("idle");
52
52
  return parts.length ? parts.join(" ") : "manual";
53
53
  }
54
54
  async function workflowCommand(args) {
@@ -61,7 +61,7 @@ async function workflowCommand(args) {
61
61
  const name = positional(rest)[0];
62
62
  const runs = allFlags(rest, "--run");
63
63
  if (!name || !runs.length) {
64
- console.error('usage: svamp workflow add <name> --run "<cmd>" [--run "<cmd2>"] [--on schedule|dispatch|channel|issue] [--cron "* * * * *"] [--channel <name>] [--issue ready,closed,labeled]');
64
+ console.error('usage: svamp workflow add <name> --run "<cmd>" [--run "<cmd2>"] [--on schedule|dispatch|channel|issue|idle] [--cron "* * * * *"] [--channel <name>] [--issue ready,closed,labeled]');
65
65
  process.exit(1);
66
66
  }
67
67
  const onKinds = allFlags(rest, "--on");
@@ -71,6 +71,7 @@ async function workflowCommand(args) {
71
71
  if (onKinds.includes("dispatch") || onKinds.includes("workflow_dispatch")) on.workflow_dispatch = true;
72
72
  if (onKinds.includes("channel") || flag(rest, "--channel")) on.channel = flag(rest, "--channel") || "default";
73
73
  if (onKinds.includes("issue") || flag(rest, "--issue")) on.issue = (flag(rest, "--issue") || "ready").split(",").map((s) => s.trim()).filter(Boolean);
74
+ if (onKinds.includes("idle")) on.idle = true;
74
75
  const owner = flag(rest, "--session") || process.env.SVAMP_SESSION_ID || null;
75
76
  const wf = { name, on: Object.keys(on).length ? on : void 0, jobs: { run: { steps: runs.map((r) => ({ run: r })) } }, session: owner };
76
77
  saveWorkflow(root, wf);
@@ -158,7 +159,7 @@ async function workflowCommand(args) {
158
159
  console.log([
159
160
  "CREATE an automation WORKFLOW from a request (GitHub-Actions-style, .svamp/workflows/<name>.yaml):",
160
161
  " svamp workflow add <kebab-name> \\",
161
- ' [--on schedule --cron "<expr>" | --on dispatch | --on channel <name> | --on issue <labels>] \\',
162
+ ' [--on schedule --cron "<expr>" | --on dispatch | --on channel <name> | --on issue <labels> | --on idle] \\',
162
163
  ' --run "<shell/svamp command>" [--run "<cmd2>"]...',
163
164
  " - A step is any shell or svamp command. To start a self-verifying loop on a schedule:",
164
165
  ` --run "svamp session loop <session-id> '<task>' --until '<done criteria>' [--max N]"`,
@@ -175,7 +176,7 @@ async function workflowCommand(args) {
175
176
  console.log([
176
177
  "svamp workflow \u2014 GitHub-Actions-style automation as .svamp/workflows/<name>.yaml",
177
178
  "",
178
- ' add <name> --run "<cmd>" [--run "<cmd2>"] [--on schedule|dispatch|channel|issue]',
179
+ ' add <name> --run "<cmd>" [--run "<cmd2>"] [--on schedule|dispatch|channel|issue|idle]',
179
180
  ' [--cron "0 9 * * 1-5"] [--channel <name>] [--issue ready,closed,labeled]',
180
181
  " list | show <name> | remove <name>",
181
182
  " enable <name> | disable <name> # toggle active/disabled (scheduler skips disabled)",
@@ -184,7 +185,10 @@ async function workflowCommand(args) {
184
185
  "",
185
186
  "Each step is a shell command \u2014 every verb is a `svamp` CLI call, e.g.",
186
187
  ' svamp workflow add nightly --on schedule --cron "0 2 * * *" \\',
187
- ' --run "svamp session send . \\"Run the nightly checks and fix failures\\""'
188
+ ' --run "svamp session send . \\"Run the nightly checks and fix failures\\""',
189
+ " # --on idle fires when a session goes active\u2192idle (edge-detected, per-session cooldown),",
190
+ " # e.g. a keep-busy loop:",
191
+ ` svamp workflow add keep-busy --on idle --run "svamp session send <id> 'continue'"`
188
192
  ].join("\n"));
189
193
  break;
190
194
  default:
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-vCeWXvYJ.mjs';
3
+ import { connectAndGetMachine } from './commands-C3TQOYUo.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-1BBi0_ol.mjs';
8
+ import './run-CHIppB2r.mjs';
9
9
  import 'os';
10
10
  import 'fs/promises';
11
11
  import 'url';
@@ -21,6 +21,7 @@ import '@modelcontextprotocol/sdk/types.js';
21
21
  import 'zod';
22
22
  import 'node:fs/promises';
23
23
  import 'node:util';
24
+ import 'yaml';
24
25
 
25
26
  function getFlag(args, flag) {
26
27
  const idx = args.indexOf(flag);
@@ -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-vCeWXvYJ.mjs';
3
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-C3TQOYUo.mjs';
4
4
  import { execSync } from 'node:child_process';
5
- import { u as updateIssue, q as addComment, t as addIssue, A as shortId } from './run-1BBi0_ol.mjs';
5
+ import { u as updateIssue, t as addComment, v as addIssue, k as shortId } from './run-CHIppB2r.mjs';
6
6
  import 'node:os';
7
7
  import 'os';
8
8
  import 'fs/promises';
@@ -21,6 +21,7 @@ import '@modelcontextprotocol/sdk/types.js';
21
21
  import 'zod';
22
22
  import 'node:fs/promises';
23
23
  import 'node:util';
24
+ import 'yaml';
24
25
 
25
26
  function git(cwd, args) {
26
27
  return execSync(`git ${args}`, { cwd, stdio: "pipe", encoding: "utf-8" }).toString();
@@ -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-1BBi0_ol.mjs';
4
+ import { c as connectToHypha } from './run-CHIppB2r.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-ivV7xAp3.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -21,6 +21,7 @@ import '@modelcontextprotocol/sdk/types.js';
21
21
  import 'zod';
22
22
  import 'node:fs/promises';
23
23
  import 'node:util';
24
+ import 'yaml';
24
25
 
25
26
  const SVAMP_HOME = process.env.SVAMP_HOME || join(os.homedir(), ".svamp");
26
27
  const DAEMON_STATE_FILE = join(SVAMP_HOME, "daemon.state.json");
@@ -4,7 +4,7 @@ import { mkdirSync, writeFileSync, unlinkSync, existsSync, chmodSync, 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-1BBi0_ol.mjs';
7
+ import { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-CHIppB2r.mjs';
8
8
  import 'fs/promises';
9
9
  import 'url';
10
10
  import 'node:crypto';
@@ -21,6 +21,7 @@ import '@modelcontextprotocol/sdk/types.js';
21
21
  import 'zod';
22
22
  import 'node:fs/promises';
23
23
  import 'node:util';
24
+ import 'yaml';
24
25
 
25
26
  function getMachineFingerprint() {
26
27
  const idFile = join(homedir(), ".svamp", "machine-id");
@@ -1,5 +1,5 @@
1
- import { P as resolveModel, a2 as describeMisconfiguration, a3 as buildMachineDeps } from './run-1BBi0_ol.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-BqD4-WWR.mjs';
1
+ import { a1 as resolveModel, ae as describeMisconfiguration, af as buildMachineDeps } from './run-CHIppB2r.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-Cs-kNLye.mjs';
3
3
  import { WebSocket } from 'ws';
4
4
  import { execSync, spawn } from 'child_process';
5
5
  import 'os';
@@ -22,6 +22,7 @@ import '@modelcontextprotocol/sdk/types.js';
22
22
  import 'zod';
23
23
  import 'node:fs/promises';
24
24
  import 'node:util';
25
+ import 'yaml';
25
26
 
26
27
  const PCM_RATE = 24e3;
27
28
  function buildHeadlessSessionUpdate(cfg) {
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-1BBi0_ol.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-CHIppB2r.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -20,3 +20,4 @@ import '@modelcontextprotocol/sdk/types.js';
20
20
  import 'zod';
21
21
  import 'node:fs/promises';
22
22
  import 'node:util';
23
+ import 'yaml';
@@ -1,5 +1,5 @@
1
1
  var name = "svamp-cli";
2
- var version = "0.2.247";
2
+ var version = "0.2.248";
3
3
  var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
4
4
  var author = "Amun AI AB";
5
5
  var license = "SEE LICENSE IN LICENSE";
@@ -19,7 +19,7 @@ var exports$1 = {
19
19
  var scripts = {
20
20
  build: "rm -rf dist bin/skills bin/commands && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/crew bin/skills/crew && cp -r ../../commands bin/commands && tsc --noEmit && pkgroll",
21
21
  typecheck: "tsc --noEmit",
22
- test: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-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-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs",
22
+ test: "npx tsx test/test-context-window.mjs && npx tsx test/test-ratelimit-retry.mjs && npx tsx test/test-instance-config.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-sharing-notify-sync.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-btw-proxy-env.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-inbox-guard.mjs && npx tsx test/test-auto-topic.mjs && npx tsx test/test-project-info.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-session-send-query.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-machine-list-directory.mjs && npx tsx test/test-service-commands.mjs && npx tsx test/test-supervisor.mjs && npx tsx test/test-supervisor-lock.mjs && node test/test-supervisor-restart.mjs && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox-store.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-loop-verify.mjs && npx tsx test/test-issue-rpc.mjs && npx tsx test/test-issue-pause.mjs && npx tsx test/test-workflow-store.mjs && npx tsx test/test-workflow-rpc.mjs && npx tsx test/test-workflow-scheduler.mjs && npx tsx test/test-cron.mjs && npx tsx test/test-workflow-runs.mjs && npx tsx test/test-workflow-idle.mjs && npx tsx test/test-serve-link-subdomain.mjs && npx tsx test/test-short-id.mjs && npx tsx test/test-transcript-edit.mjs && npx tsx test/test-edit-history.mjs && npx tsx test/test-friendly-name.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only && npx tsx test/test-frpc-status.mjs && node test/pinnedClaudeCode.test.mjs && node test/fleet.test.mjs && npx tsx test/test-session-file.mjs && npx tsx test/test-channel-rpc.mjs && npx tsx test/test-wise-agent.mjs && npx tsx test/test-channel-agent.mjs && npx tsx test/test-channels-service.mjs && npx tsx test/test-hotreload-seam.mjs && npx tsx test/test-hot-reload.mjs && npx tsx test/test-hot-reload-live.mjs && npx tsx test/test-session-core.mjs && npx tsx test/test-channel-async-reply.mjs && npx tsx test/test-channel-binding.mjs && npx tsx test/test-channel-identity.mjs && npx tsx test/test-shared-session-identity.mjs && npx tsx test/test-wise-agent-auth.mjs && npx tsx test/test-channel-http.mjs && npx tsx test/test-channel-upload.mjs && npx tsx test/test-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.mjs && npx tsx test/test-crew-verdict-routing.mjs && npx tsx test/test-crew-standalone.mjs && npx tsx test/test-session-links.mjs && npx tsx test/test-issue-loop-pause-guard.mjs && npx tsx test/test-artifact-guard.mjs && npx tsx test/test-graceful-restart.mjs",
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,6 +1,4 @@
1
- import { m as resolveProjectRoot } from './run-1BBi0_ol.mjs';
2
- import { g as getWorkflow, s as setWorkflowEnabled, r as removeWorkflow, a as saveWorkflow, b as rawWorkflow, l as listWorkflows } from './store-BTs0H_y0.mjs';
3
- import { g as getRun, l as listRuns, r as runWorkflow } from './runStore-C5IyfbON.mjs';
1
+ import { n as resolveProjectRoot, z as getRun, A as listRuns, B as getWorkflow, C as runWorkflow, D as setWorkflowEnabled, E as removeWorkflow, F as saveWorkflow, G as rawWorkflow, H as listWorkflows } from './run-CHIppB2r.mjs';
4
2
  import 'os';
5
3
  import 'fs/promises';
6
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { m as resolveProjectRoot, u as updateIssue, n as getIssue, o as resumeIssue, p as pauseIssue, q as addComment, t as addIssue, v as listIssues, w as searchIssues, x as isVisibleTo } from './run-1BBi0_ol.mjs';
1
+ import { n as resolveProjectRoot, u as updateIssue, o as getIssue, p as resumeIssue, q as pauseIssue, t as addComment, v as addIssue, w as listIssues, x as searchIssues, y as isVisibleTo } from './run-CHIppB2r.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -20,6 +20,7 @@ import '@modelcontextprotocol/sdk/types.js';
20
20
  import 'zod';
21
21
  import 'node:fs/promises';
22
22
  import 'node:util';
23
+ import 'yaml';
23
24
 
24
25
  function followUpCount(body) {
25
26
  if (!body) return 0;
@@ -1,4 +1,4 @@
1
- import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { a4 as applyClaudeProxyEnv, a5 as composeSessionId, a6 as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, a7 as generateHookSettings } from './run-1BBi0_ol.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-CHIppB2r.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';
@@ -22,6 +22,7 @@ import '@modelcontextprotocol/sdk/types.js';
22
22
  import 'zod';
23
23
  import 'node:fs/promises';
24
24
  import 'node:util';
25
+ import 'yaml';
25
26
 
26
27
  async function startHookServer(onSessionHook, log) {
27
28
  return new Promise((resolve, reject) => {