svamp-cli 0.2.165 → 0.2.167

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 (24) hide show
  1. package/dist/{agentCommands-BQUIj0L3.mjs → agentCommands-juw5_q8v.mjs} +5 -5
  2. package/dist/{auth-Nb44v13A.mjs → auth-DFU6j82G.mjs} +1 -1
  3. package/dist/cli.mjs +61 -61
  4. package/dist/{commands-PsObXuzm.mjs → commands-B9-jAYZy.mjs} +2 -2
  5. package/dist/{commands-fyFKlqCv.mjs → commands-BYEL5DqA.mjs} +1 -1
  6. package/dist/{commands-BQC2kAm0.mjs → commands-Bb4Sr_iq.mjs} +19 -1
  7. package/dist/{commands-Cc-98Ot6.mjs → commands-C2gVT2LM.mjs} +5 -5
  8. package/dist/{commands-mAHn_FPb.mjs → commands-CevXJKdi.mjs} +19 -1
  9. package/dist/{commands-DVA2p60j.mjs → commands-D_Hlxfog.mjs} +34 -3
  10. package/dist/{commands-BCr6iO_n.mjs → commands-Jm-BUsrf.mjs} +2 -2
  11. package/dist/{commands-D2Zpi3G8.mjs → commands-yYLA6w6t.mjs} +1 -1
  12. package/dist/{fleet-BgpaxJ3S.mjs → fleet-DGWqm1_M.mjs} +1 -1
  13. package/dist/{frpc-BbpARLqP.mjs → frpc-Cd9N3gGU.mjs} +1 -1
  14. package/dist/{headlessCli-BQKqriom.mjs → headlessCli-BlKUictN.mjs} +2 -2
  15. package/dist/{httpServer-B8C1P8IL.mjs → httpServer-COU4szUc.mjs} +11 -0
  16. package/dist/index.mjs +1 -1
  17. package/dist/{package-1hBv_QRg.mjs → package-CrzrTOTn.mjs} +2 -2
  18. package/dist/{run-Dfj1qf30.mjs → run-BOdCp1Ru.mjs} +1 -1
  19. package/dist/{run-KCqpMQJZ.mjs → run-BeIP-YpD.mjs} +250 -37
  20. package/dist/{serveCommands-DMfzU2xe.mjs → serveCommands-BoV_jArl.mjs} +5 -5
  21. package/dist/{serveManager-fwaBwmlm.mjs → serveManager-Do0sF4Rz.mjs} +2 -2
  22. package/dist/{sideband-XblR5fr5.mjs → sideband-6iHsRWJX.mjs} +1 -1
  23. package/package.json +2 -2
  24. package/dist/store-BQxdRyuI.mjs +0 -188
@@ -1,7 +1,7 @@
1
1
  import { existsSync } from 'node:fs';
2
- import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-D2Zpi3G8.mjs';
2
+ import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-yYLA6w6t.mjs';
3
3
  import { execSync } from 'node:child_process';
4
- import { m as shortId } from './run-KCqpMQJZ.mjs';
4
+ import { u as updateIssue, p as addComment, v as addIssue, w as shortId } from './run-BeIP-YpD.mjs';
5
5
  import 'node:path';
6
6
  import 'node:os';
7
7
  import 'os';
@@ -191,6 +191,36 @@ async function featureStart(brief, opts = {}) {
191
191
  process.exit(1);
192
192
  }
193
193
  const childId = result.sessionId;
194
+ try {
195
+ let linkedId = opts.issueId;
196
+ if (linkedId) {
197
+ const u = updateIssue(projectRoot, linkedId, { disposition: "crew", session: childId, branch: wt.branch, status: "in_progress" });
198
+ if (!u) {
199
+ console.warn(`Note: issue ${linkedId} not found \u2014 creating a new crew issue instead.`);
200
+ linkedId = void 0;
201
+ } else {
202
+ addComment(projectRoot, u.id, `Delegated to crew child ${childId.slice(0, 8)} on \`${wt.branch}\` (base \`${base}\`).`);
203
+ linkedId = u.id;
204
+ }
205
+ }
206
+ if (!linkedId) {
207
+ const created = addIssue(projectRoot, {
208
+ title: brief.trim().split("\n")[0].slice(0, 80),
209
+ status: "in_progress",
210
+ disposition: "crew",
211
+ triaged: true,
212
+ session: childId,
213
+ scope: "project",
214
+ ...opts.oracle?.trim() ? { verify: { type: "command", text: opts.oracle.trim() } } : {},
215
+ body: brief.trim()
216
+ });
217
+ updateIssue(projectRoot, created.id, { branch: wt.branch });
218
+ linkedId = created.id;
219
+ }
220
+ console.log(` issue: #${linkedId} (crew, child ${childId.slice(0, 8)})`);
221
+ } catch (e) {
222
+ console.warn(`Note: could not link a crew issue (${e.message}).`);
223
+ }
194
224
  if (!lead.metadata?.crew) {
195
225
  try {
196
226
  await rpc(machine, lead.sessionId, "updateConfig", { patch: { crew: { role: "lead" } } });
@@ -470,7 +500,7 @@ async function crewCommand(args) {
470
500
  return;
471
501
  }
472
502
  if (sub === "start") {
473
- const valueFlags = ["--oracle", "--base", "--action", "--max", "--dir", "-d", "--lead", "-m", "--machine"];
503
+ const valueFlags = ["--oracle", "--base", "--action", "--max", "--dir", "-d", "--lead", "-m", "--machine", "--issue"];
474
504
  const brief = positionals(rest, valueFlags).join(" ");
475
505
  const maxStr = flag(rest, "--max");
476
506
  const action = flag(rest, "--action");
@@ -480,6 +510,7 @@ async function crewCommand(args) {
480
510
  directory: flag(rest, "--dir", "-d"),
481
511
  oracle: flag(rest, "--oracle"),
482
512
  baseBranch: flag(rest, "--base"),
513
+ issueId: flag(rest, "--issue"),
483
514
  action: action === "block" ? "block" : action === "nudge" ? "nudge" : void 0,
484
515
  maxRounds: maxStr ? parseInt(maxStr, 10) : void 0
485
516
  });
@@ -1,11 +1,11 @@
1
1
  import { writeFileSync, readFileSync } from 'fs';
2
2
  import { resolve } from 'path';
3
- import { connectAndGetMachine } from './commands-D2Zpi3G8.mjs';
3
+ import { connectAndGetMachine } from './commands-yYLA6w6t.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-KCqpMQJZ.mjs';
8
+ import './run-BeIP-YpD.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 { I as formatHandle, J as normalizeAllowedUser, K as loadSecurityContextConfig, L as resolveSecurityContext, M as buildSecurityContextFromFlags, N as mergeSecurityContexts, c as connectToHypha, O as buildSessionShareUrl, P as validateChecklist, Q as computeOutboundHop, m as shortId, T as buildMachineShareUrl, U as summarize, V as newItem, W as parseHandle, X as handleMatchesMetadata } from './run-KCqpMQJZ.mjs';
5
+ import { Q as formatHandle, T as normalizeAllowedUser, U as loadSecurityContextConfig, V as resolveSecurityContext, W as buildSecurityContextFromFlags, X as mergeSecurityContexts, c as connectToHypha, Y as buildSessionShareUrl, Z as validateChecklist, _ as computeOutboundHop, w as shortId, $ as buildMachineShareUrl, a0 as summarize, a1 as newItem, a2 as parseHandle, a3 as handleMatchesMetadata } from './run-BeIP-YpD.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import os from 'node:os';
4
- import { c as connectToHypha } from './run-KCqpMQJZ.mjs';
4
+ import { c as connectToHypha } from './run-BeIP-YpD.mjs';
5
5
  import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-HydRNEt7.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
@@ -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-KCqpMQJZ.mjs';
7
+ import { h as getFrpsSubdomainHost, i as getFrpsServerPort, j as getFrpsServerAddr } from './run-BeIP-YpD.mjs';
8
8
  import 'fs/promises';
9
9
  import 'url';
10
10
  import 'node:crypto';
@@ -1,5 +1,5 @@
1
- import { D as resolveModel, Y as describeMisconfiguration, Z as buildMachineDeps } from './run-KCqpMQJZ.mjs';
2
- import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-XblR5fr5.mjs';
1
+ import { L as resolveModel, a4 as describeMisconfiguration, a5 as buildMachineDeps } from './run-BeIP-YpD.mjs';
2
+ import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-6iHsRWJX.mjs';
3
3
  import { WebSocket } from 'ws';
4
4
  import { execSync, spawn } from 'child_process';
5
5
  import 'os';
@@ -121,6 +121,17 @@ data: ${JSON.stringify({ error: out.error })}
121
121
  }
122
122
  return;
123
123
  }
124
+ m = u.pathname.match(/^\/channel\/([\w.-]+)\/profile$/);
125
+ if (m) {
126
+ const rpc2 = await findOwner(deps, m[1]);
127
+ if (!rpc2?.channelGetProfile) {
128
+ json(404, { error: "channel not found" });
129
+ return;
130
+ }
131
+ const out = await rpc2.channelGetProfile({ channel: m[1], key: keyOf(), from: u.searchParams.get("from") || void 0 });
132
+ json(out?.error ? out.error === "channel not found" ? 404 : 401 : 200, out);
133
+ return;
134
+ }
124
135
  m = u.pathname.match(/^\/channel\/([\w.-]+)\/tool$/);
125
136
  if (m) {
126
137
  const cid = m[1];
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-KCqpMQJZ.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-BeIP-YpD.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.165";
2
+ var version = "0.2.167";
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 && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && cp -r ../../skills/loop bin/skills/loop && cp -r ../../skills/crew bin/skills/crew && 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-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-loop-activation.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-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.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-checklist.mjs && npx tsx test/test-checklist-cli.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-workflow-store.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-routine.mjs && npx tsx test/test-routine-rpc.mjs && npx tsx test/test-checklist-watchdog.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-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-wise-voice.mjs && npx tsx test/test-wise-headless.mjs && npx tsx test/test-wise-machine.mjs && npx tsx test/test-crew-merge.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-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-loop-activation.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-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.mjs && npx tsx test/test-inbox-cross-machine.mjs && npx tsx test/test-checklist.mjs && npx tsx test/test-checklist-cli.mjs && npx tsx test/test-issue-store.mjs && npx tsx test/test-issue-close-gate.mjs && npx tsx test/test-workflow-store.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-routine.mjs && npx tsx test/test-routine-rpc.mjs && npx tsx test/test-checklist-watchdog.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-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-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",
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{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { _ as composeSessionId, $ as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, a0 as generateHookSettings } from './run-KCqpMQJZ.mjs';
1
+ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { a6 as composeSessionId, a7 as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, a8 as generateHookSettings } from './run-BeIP-YpD.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';
@@ -972,6 +972,21 @@ function makeHttpTransport(resolved, fetchImpl = fetch) {
972
972
  };
973
973
  }
974
974
 
975
+ function toSchema(t) {
976
+ return { name: t.name, description: t.description, parameters: t.parameters || { type: "object", properties: {} } };
977
+ }
978
+ async function buildWiseProfile(deps, config, opts) {
979
+ const ctx = opts?.ctx ?? await loadWiseAgentContext(deps, config);
980
+ const instructions = buildWiseAgentInstructions(ctx, config);
981
+ const gated = gateTools(buildTools(deps, ctx.skills), config, opts?.sender || "caller");
982
+ return {
983
+ instructions,
984
+ skills: ctx.skills.map((s) => ({ name: s.name, description: s.description })),
985
+ tools: gated.map(toSchema),
986
+ projectInstructions: ctx.projectInstructions
987
+ };
988
+ }
989
+
975
990
  let _testTransport;
976
991
  function resolveWiseTransport(config, env) {
977
992
  const resolved = resolveModel(config, env);
@@ -2772,7 +2787,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
2772
2787
  const tunnels = handlers.tunnels;
2773
2788
  if (!tunnels) throw new Error("Tunnel management not available");
2774
2789
  if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
2775
- const { FrpcTunnel } = await import('./frpc-BbpARLqP.mjs');
2790
+ const { FrpcTunnel } = await import('./frpc-Cd9N3gGU.mjs');
2776
2791
  const tunnel = new FrpcTunnel({
2777
2792
  name: params.name,
2778
2793
  ports: params.ports,
@@ -3213,7 +3228,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
3213
3228
  }
3214
3229
  const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
3215
3230
  const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
3216
- const { toolsForRole } = await import('./sideband-XblR5fr5.mjs');
3231
+ const { toolsForRole } = await import('./sideband-6iHsRWJX.mjs');
3217
3232
  const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
3218
3233
  return fmt(r2);
3219
3234
  }
@@ -3312,7 +3327,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
3312
3327
  if (r.error || !r.sender) return { error: r.error || "unauthorized" };
3313
3328
  const callId = "call_" + Math.random().toString(16).slice(2, 12);
3314
3329
  const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
3315
- const { queryCore } = await import('./commands-D2Zpi3G8.mjs');
3330
+ const { queryCore } = await import('./commands-yYLA6w6t.mjs');
3316
3331
  const timeout = c.reply?.timeout_sec || 120;
3317
3332
  let result;
3318
3333
  try {
@@ -4391,6 +4406,31 @@ function createSessionStore(server, sessionId, initialMetadata, initialAgentStat
4391
4406
  return { error: e?.message || String(e) };
4392
4407
  }
4393
4408
  },
4409
+ channelGetProfile: async (params, context) => {
4410
+ const c = channelStore.get(params.channel);
4411
+ if (!c || c.enabled === false) return { error: "channel not found" };
4412
+ const u = context?.user;
4413
+ const r = resolveSender(c, {
4414
+ key: params.key,
4415
+ from: params.from,
4416
+ hyphaUser: u && u.is_anonymous !== true ? u.email || u.id : void 0,
4417
+ hyphaAnonymous: u?.is_anonymous === true,
4418
+ hyphaWorkspace: u?.scope?.current_workspace
4419
+ });
4420
+ if (r.error || !r.sender) return { error: r.error || "unauthorized" };
4421
+ try {
4422
+ const agentConfig = c.action?.kind === "agent" ? c.action.agent || {} : {};
4423
+ const deps = buildSessionDeps(rpcHandlers, {
4424
+ cwd: metadata.path,
4425
+ ownerEmail: metadata.sharing?.owner,
4426
+ status: () => ({ thinking: lastActivity.thinking, sessionId })
4427
+ });
4428
+ const profile = await buildWiseProfile(deps, agentConfig, { sender: r.sender.name });
4429
+ return { ok: true, instructions: profile.instructions, projectInstructions: profile.projectInstructions, skills: profile.skills, tools: profile.tools };
4430
+ } catch (e) {
4431
+ return { error: e?.message || String(e) };
4432
+ }
4433
+ },
4394
4434
  channelDescribe: async (id) => {
4395
4435
  const c = channelStore.get(id);
4396
4436
  if (!c || c.enabled === false || c.system) return { error: "not found" };
@@ -5415,7 +5455,7 @@ function classifyInbound(message, now = Date.now()) {
5415
5455
  return { action: "wake", reason: "urgent", breakerTripped: tripped };
5416
5456
  }
5417
5457
 
5418
- function resolveProjectRoot(directory) {
5458
+ function resolveProjectRoot$1(directory) {
5419
5459
  try {
5420
5460
  const top = execSync("git rev-parse --show-toplevel", {
5421
5461
  cwd: directory,
@@ -5427,10 +5467,10 @@ function resolveProjectRoot(directory) {
5427
5467
  return directory.replace(/[/\\]+$/, "") || directory;
5428
5468
  }
5429
5469
  function projectInfoPath(directory) {
5430
- return join(resolveProjectRoot(directory), ".svamp", "project.json");
5470
+ return join(resolveProjectRoot$1(directory), ".svamp", "project.json");
5431
5471
  }
5432
5472
  function projectName(directory) {
5433
- return basename(resolveProjectRoot(directory).replace(/[/\\]+$/, "")) || "project";
5473
+ return basename(resolveProjectRoot$1(directory).replace(/[/\\]+$/, "")) || "project";
5434
5474
  }
5435
5475
  function readProjectInfo(directory) {
5436
5476
  try {
@@ -5457,7 +5497,7 @@ function sanitizeDescription(raw, maxLen = 240) {
5457
5497
  return t || null;
5458
5498
  }
5459
5499
  function extractDescriptionFromDocs(directory) {
5460
- const root = resolveProjectRoot(directory);
5500
+ const root = resolveProjectRoot$1(directory);
5461
5501
  const candidates = [
5462
5502
  [join(root, "CLAUDE.md"), "claude.md"],
5463
5503
  [join(root, "README.md"), "readme"],
@@ -5501,7 +5541,7 @@ var projectInfo = /*#__PURE__*/Object.freeze({
5501
5541
  projectInfoPath: projectInfoPath,
5502
5542
  projectName: projectName,
5503
5543
  readProjectInfo: readProjectInfo,
5504
- resolveProjectRoot: resolveProjectRoot,
5544
+ resolveProjectRoot: resolveProjectRoot$1,
5505
5545
  sanitizeDescription: sanitizeDescription,
5506
5546
  writeProjectInfo: writeProjectInfo
5507
5547
  });
@@ -10127,7 +10167,7 @@ function renderCriteria(items) {
10127
10167
  }
10128
10168
  return `- [${STATUS_TO_MARKER[it.status] ?? " "}] ${it.text}${tag}${how}`;
10129
10169
  });
10130
- const { done, total } = summarize(items);
10170
+ const { done, total } = summarize$1(items);
10131
10171
  return `Success criteria \u2014 drive this checklist to all-done (${done}/${total}):
10132
10172
  ${lines.join("\n")}`;
10133
10173
  }
@@ -10137,22 +10177,6 @@ function compileChecklist(items) {
10137
10177
  const oracle = oracleItem && oracleItem.eval?.type === "oracle" ? oracleItem.eval.cmd : void 0;
10138
10178
  return { criteria, ...oracle ? { oracle } : {} };
10139
10179
  }
10140
- function routeVerdictToChecklist(items, v) {
10141
- let matched = false;
10142
- const next = items.map((it) => {
10143
- if (it.child?.sessionId && it.child.sessionId === v.sessionId) {
10144
- matched = true;
10145
- return applyVerdict(it, v);
10146
- }
10147
- return it;
10148
- });
10149
- return { items: next, matched };
10150
- }
10151
- function applyVerdict(item, v) {
10152
- const lastVerdict = { verdict: v.verdict, ...v.guidance ? { guidance: v.guidance } : {}, round: v.round, ts: v.ts };
10153
- if (v.verdict === "approved") return { ...item, status: "done", doneAt: Date.parse(v.ts) || item.createdAt, lastVerdict };
10154
- return { ...item, status: "rework", lastVerdict };
10155
- }
10156
10180
  const VALID_STATUS = /* @__PURE__ */ new Set(["todo", "active", "verifying", "awaiting_review", "rework", "blocked", "done"]);
10157
10181
  function validateChecklist(items) {
10158
10182
  const errs = [];
@@ -10168,7 +10192,7 @@ function validateChecklist(items) {
10168
10192
  }
10169
10193
  return errs;
10170
10194
  }
10171
- function summarize(items) {
10195
+ function summarize$1(items) {
10172
10196
  const by = (s) => items.filter((i) => i.status === s).length;
10173
10197
  const done = by("done");
10174
10198
  return {
@@ -10229,11 +10253,196 @@ function clearChecklist(projectRoot, sessionId) {
10229
10253
  } catch {
10230
10254
  }
10231
10255
  }
10232
- function mutateChecklist(projectRoot, sessionId, fn) {
10233
- const next = fn(readChecklist(projectRoot, sessionId));
10234
- writeChecklist(projectRoot, sessionId, next);
10256
+
10257
+ const FIELD_ORDER = ["id", "title", "status", "scope", "labels", "verify", "disposition", "triaged", "branch", "session", "original", "created", "closed"];
10258
+ function resolveProjectRoot(start = process.cwd()) {
10259
+ let dir = start;
10260
+ for (let i = 0; i < 40; i++) {
10261
+ if (existsSync(join(dir, ".git")) || existsSync(join(dir, ".svamp"))) return dir;
10262
+ const parent = dirname(dir);
10263
+ if (parent === dir) break;
10264
+ dir = parent;
10265
+ }
10266
+ return start;
10267
+ }
10268
+ function issuesDir(projectRoot) {
10269
+ return join(projectRoot, ".svamp", "issues");
10270
+ }
10271
+ function archiveDir(projectRoot) {
10272
+ return join(issuesDir(projectRoot), "archive");
10273
+ }
10274
+ function issuePath(projectRoot, id, archived = false) {
10275
+ return join(archived ? archiveDir(projectRoot) : issuesDir(projectRoot), `${id}.md`);
10276
+ }
10277
+ function serializeIssue(issue) {
10278
+ const lines = ["---"];
10279
+ for (const k of FIELD_ORDER) {
10280
+ const v = issue[k];
10281
+ if (v === void 0) continue;
10282
+ lines.push(`${k}: ${JSON.stringify(v)}`);
10283
+ }
10284
+ lines.push("---", "");
10285
+ return lines.join("\n") + (issue.body ? issue.body.replace(/\s+$/, "") + "\n" : "");
10286
+ }
10287
+ function parseIssue(content) {
10288
+ const m = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
10289
+ if (!m) return null;
10290
+ const fm = {};
10291
+ for (const line of m[1].split("\n")) {
10292
+ const idx = line.indexOf(": ");
10293
+ if (idx === -1) continue;
10294
+ const key = line.slice(0, idx).trim();
10295
+ const raw = line.slice(idx + 2).trim();
10296
+ try {
10297
+ fm[key] = JSON.parse(raw);
10298
+ } catch {
10299
+ fm[key] = raw;
10300
+ }
10301
+ }
10302
+ if (!fm.id) return null;
10303
+ return {
10304
+ id: String(fm.id),
10305
+ title: String(fm.title ?? ""),
10306
+ status: fm.status ?? "backlog",
10307
+ scope: fm.scope ?? "session",
10308
+ labels: Array.isArray(fm.labels) ? fm.labels.map(String) : [],
10309
+ verify: fm.verify ?? null,
10310
+ disposition: fm.disposition === "crew" ? "crew" : "inline",
10311
+ triaged: fm.triaged === true,
10312
+ branch: fm.branch ?? null,
10313
+ session: fm.session ?? null,
10314
+ original: fm.original ?? null,
10315
+ created: String(fm.created ?? (/* @__PURE__ */ new Date()).toISOString()),
10316
+ closed: fm.closed ?? null,
10317
+ body: (m[2] || "").trim() || void 0
10318
+ };
10319
+ }
10320
+ function readDir(dir) {
10321
+ if (!existsSync(dir)) return [];
10322
+ const out = [];
10323
+ for (const name of readdirSync(dir)) {
10324
+ if (!name.endsWith(".md")) continue;
10325
+ try {
10326
+ const issue = parseIssue(readFileSync(join(dir, name), "utf-8"));
10327
+ if (issue) out.push(issue);
10328
+ } catch {
10329
+ }
10330
+ }
10331
+ return out;
10332
+ }
10333
+ function listIssues(projectRoot, opts = {}) {
10334
+ let items = readDir(issuesDir(projectRoot));
10335
+ if (opts.includeArchived) items = items.concat(readDir(archiveDir(projectRoot)));
10336
+ if (opts.status) items = items.filter((i) => i.status === opts.status);
10337
+ if (opts.label) items = items.filter((i) => i.labels.includes(opts.label));
10338
+ if (opts.scope) items = items.filter((i) => i.scope === opts.scope);
10339
+ return items.sort((a, b) => Number(a.id) - Number(b.id));
10340
+ }
10341
+ function getIssue(projectRoot, id) {
10342
+ const padded = /^\d+$/.test(id) ? id.padStart(4, "0") : id;
10343
+ for (const p of [issuePath(projectRoot, padded), issuePath(projectRoot, padded, true)]) {
10344
+ if (existsSync(p)) {
10345
+ try {
10346
+ return parseIssue(readFileSync(p, "utf-8"));
10347
+ } catch {
10348
+ return null;
10349
+ }
10350
+ }
10351
+ }
10352
+ return null;
10353
+ }
10354
+ function atomicWrite(path, content) {
10355
+ mkdirSync(dirname(path), { recursive: true });
10356
+ const tmp = `${path}.tmp-${process.pid}`;
10357
+ writeFileSync(tmp, content);
10358
+ renameSync(tmp, path);
10359
+ }
10360
+ function nextId(projectRoot) {
10361
+ const all = listIssues(projectRoot, { includeArchived: true });
10362
+ const max = all.reduce((acc, i) => Math.max(acc, Number(i.id) || 0), 0);
10363
+ return String(max + 1).padStart(4, "0");
10364
+ }
10365
+ function addIssue(projectRoot, fields) {
10366
+ const issue = {
10367
+ id: nextId(projectRoot),
10368
+ title: fields.title.trim(),
10369
+ status: fields.status ?? "backlog",
10370
+ scope: fields.scope ?? "session",
10371
+ labels: fields.labels ?? [],
10372
+ verify: fields.verify ?? null,
10373
+ disposition: fields.disposition ?? "inline",
10374
+ triaged: fields.triaged ?? false,
10375
+ branch: null,
10376
+ session: fields.session ?? null,
10377
+ original: fields.original ?? null,
10378
+ created: (/* @__PURE__ */ new Date()).toISOString(),
10379
+ closed: null,
10380
+ body: fields.body
10381
+ };
10382
+ atomicWrite(issuePath(projectRoot, issue.id), serializeIssue(issue));
10383
+ return issue;
10384
+ }
10385
+ function updateIssue(projectRoot, id, patch) {
10386
+ const cur = getIssue(projectRoot, id);
10387
+ if (!cur) return null;
10388
+ const wasArchived = cur.status === "archived";
10389
+ const next = { ...cur, ...patch, id: cur.id };
10390
+ const nowArchived = next.status === "archived";
10391
+ if ((next.status === "done" || nowArchived) && !next.closed) next.closed = (/* @__PURE__ */ new Date()).toISOString();
10392
+ if (next.status !== "done" && !nowArchived) next.closed = null;
10393
+ atomicWrite(issuePath(projectRoot, next.id, nowArchived), serializeIssue(next));
10394
+ if (wasArchived !== nowArchived) {
10395
+ const oldPath = issuePath(projectRoot, cur.id, wasArchived);
10396
+ try {
10397
+ if (existsSync(oldPath)) unlinkSync(oldPath);
10398
+ } catch {
10399
+ }
10400
+ }
10235
10401
  return next;
10236
10402
  }
10403
+ function addComment(projectRoot, id, text) {
10404
+ const cur = getIssue(projectRoot, id);
10405
+ if (!cur || !text.trim()) return cur;
10406
+ const entry = `
10407
+
10408
+ ---
10409
+ **Follow-up \xB7 ${(/* @__PURE__ */ new Date()).toISOString()}**
10410
+
10411
+ ${text.trim()}`;
10412
+ const body = (cur.body ? cur.body.replace(/\s+$/, "") : "") + entry;
10413
+ return updateIssue(projectRoot, id, { body });
10414
+ }
10415
+ function routeCrewVerdict(projectRoot, childSessionId, v) {
10416
+ const linked = listIssues(projectRoot, { includeArchived: true }).find((i) => i.disposition === "crew" && i.session === childSessionId);
10417
+ if (!linked) return null;
10418
+ const meta = [v.round != null ? `round ${v.round}` : "", v.judge ? `judge:${v.judge}` : ""].filter(Boolean).join(", ");
10419
+ addComment(projectRoot, linked.id, `Crew child ${childSessionId.slice(0, 8)} \u2192 ${v.verdict}${meta ? ` (${meta})` : ""}.${v.guidance ? " " + v.guidance : ""}`);
10420
+ return v.verdict === "approved" ? updateIssue(projectRoot, linked.id, { status: "done" }) ?? null : getIssue(projectRoot, linked.id);
10421
+ }
10422
+ function searchIssues(projectRoot, query) {
10423
+ const q = query.trim();
10424
+ if (!q) return [];
10425
+ try {
10426
+ const out = execFileSync("rg", ["-l", "-i", "--no-messages", q, issuesDir(projectRoot)], { encoding: "utf-8" });
10427
+ const files = out.split("\n").filter(Boolean);
10428
+ const issues = [];
10429
+ for (const f of files) {
10430
+ try {
10431
+ const i = parseIssue(readFileSync(f, "utf-8"));
10432
+ if (i) issues.push(i);
10433
+ } catch {
10434
+ }
10435
+ }
10436
+ return issues.sort((a, b) => Number(a.id) - Number(b.id));
10437
+ } catch {
10438
+ const ql = q.toLowerCase();
10439
+ return listIssues(projectRoot, { includeArchived: true }).filter((i) => i.title.toLowerCase().includes(ql) || (i.body || "").toLowerCase().includes(ql) || i.labels.some((l) => l.toLowerCase().includes(ql)));
10440
+ }
10441
+ }
10442
+ function summarize(issues) {
10443
+ const by = (s) => issues.filter((i) => i.status === s).length;
10444
+ return { total: issues.length, backlog: by("backlog"), ready: by("ready"), in_progress: by("in_progress"), done: by("done"), archived: by("archived") };
10445
+ }
10237
10446
 
10238
10447
  const OAUTH_TOKEN_ENDPOINT = "https://platform.claude.com/v1/oauth/token";
10239
10448
  const OAUTH_CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
@@ -11366,7 +11575,7 @@ Or verify and finish \u2014 an independent Stop gate re-checks before you can st
11366
11575
  const evaluator = ccfg.evaluator !== false;
11367
11576
  const budget = parseLoopBudget(ccfg.budget);
11368
11577
  const ok = initLoop(directory, { task, criteria, oracle, maxIterations, evaluator, budget, sessionId });
11369
- const s = summarize(items);
11578
+ const s = summarize$1(items);
11370
11579
  if (ok) {
11371
11580
  const idle = getMetadata().lifecycleState === "idle";
11372
11581
  if (idle) {
@@ -11816,7 +12025,7 @@ async function startDaemon(options) {
11816
12025
  saveExposedTunnels(list);
11817
12026
  }
11818
12027
  async function createExposedTunnel(spec) {
11819
- const { FrpcTunnel } = await import('./frpc-BbpARLqP.mjs');
12028
+ const { FrpcTunnel } = await import('./frpc-Cd9N3gGU.mjs');
11820
12029
  const tunnel = new FrpcTunnel({
11821
12030
  name: spec.name,
11822
12031
  ports: spec.ports,
@@ -11836,7 +12045,7 @@ async function startDaemon(options) {
11836
12045
  return tunnel;
11837
12046
  }
11838
12047
  const tunnelRecreateState = /* @__PURE__ */ new Map();
11839
- const { ServeManager } = await import('./serveManager-fwaBwmlm.mjs');
12048
+ const { ServeManager } = await import('./serveManager-Do0sF4Rz.mjs');
11840
12049
  const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
11841
12050
  ensureAutoInstalledSkills(logger).catch(() => {
11842
12051
  });
@@ -11898,9 +12107,13 @@ ${v.guidance ? v.guidance + "\n" : ""}Criteria: ${v.criteria || "(none)"}
11898
12107
  })).catch(() => {
11899
12108
  });
11900
12109
  try {
11901
- if (parent?.directory) {
11902
- const res = mutateChecklist(parent.directory, parentId, (items) => routeVerdictToChecklist(items, { sessionId: v.sessionId, verdict: v.verdict, guidance: v.guidance, round: v.round, ts: v.ts }).items);
11903
- if (res.some((i) => i.child?.sessionId === v.sessionId)) logger.log(`[supervision] reflected '${v.verdict}' onto parent ${parentId.slice(0, 8)} checklist`);
12110
+ if (parent?.directory && (v.verdict === "approved" || v.verdict === "rework")) {
12111
+ const linked = routeCrewVerdict(
12112
+ parent.directory,
12113
+ v.sessionId,
12114
+ { verdict: v.verdict, guidance: v.guidance, round: v.round, judge: v.judge }
12115
+ );
12116
+ if (linked) logger.log(`[supervision] routed '${v.verdict}' onto parent ${parentId.slice(0, 8)} issue #${linked.id}`);
11904
12117
  }
11905
12118
  } catch {
11906
12119
  }
@@ -14615,7 +14828,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
14615
14828
  const channelHttpPort = Number(process.env.SVAMP_CHANNEL_HTTP_PORT) || 0;
14616
14829
  if (channelHttpPort > 0) {
14617
14830
  try {
14618
- const { createChannelHttpServer } = await import('./httpServer-B8C1P8IL.mjs');
14831
+ const { createChannelHttpServer } = await import('./httpServer-COU4szUc.mjs');
14619
14832
  const channelHttpServer = createChannelHttpServer({
14620
14833
  getSessionIds: () => {
14621
14834
  const ids = [];
@@ -15440,4 +15653,4 @@ var run = /*#__PURE__*/Object.freeze({
15440
15653
  writeStopMarker: writeStopMarker
15441
15654
  });
15442
15655
 
15443
- export { generateFriendlyName as $, buildMachineInstructions as A, machineToolsForRole as B, buildMachineTools as C, resolveModel as D, readChecklist as E, compileChecklist as F, RoutineStore as G, RoutineRunner as H, formatHandle as I, normalizeAllowedUser as J, loadSecurityContextConfig as K, resolveSecurityContext as L, buildSecurityContextFromFlags as M, mergeSecurityContexts as N, buildSessionShareUrl as O, validateChecklist as P, computeOutboundHop as Q, READ_ONLY_TOOLS as R, ServeAuth as S, buildMachineShareUrl as T, summarize as U, newItem as V, parseHandle as W, handleMatchesMetadata as X, describeMisconfiguration as Y, buildMachineDeps as Z, composeSessionId as _, createSessionStore as a, generateHookSettings as a0, projectInfo as a1, DefaultTransport$1 as a2, acpBackend as a3, acpAgentConfig as a4, codexMcpBackend as a5, GeminiTransport$1 as a6, claudeAuth as a7, instanceConfig as a8, api as a9, run as aa, 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, getHyphaServerUrl as k, hasCookieToken as l, shortId as m, getSkillsServer as n, getSkillsWorkspaceName as o, parseFrontmatter as p, getSkillsCollectionName as q, registerMachineService as r, startDaemon as s, fetchWithTimeout as t, searchSkills as u, SKILLS_DIR as v, getSkillInfo as w, downloadSkillFile as x, listSkillFiles as y, loadMachineContext as z };
15656
+ export { buildMachineShareUrl as $, getSkillsCollectionName as A, fetchWithTimeout as B, searchSkills as C, SKILLS_DIR as D, getSkillInfo as E, downloadSkillFile as F, listSkillFiles as G, loadMachineContext as H, buildMachineInstructions as I, machineToolsForRole as J, buildMachineTools as K, resolveModel as L, readChecklist as M, compileChecklist as N, RoutineStore as O, RoutineRunner as P, formatHandle as Q, READ_ONLY_TOOLS as R, ServeAuth as S, normalizeAllowedUser as T, loadSecurityContextConfig as U, resolveSecurityContext as V, buildSecurityContextFromFlags as W, mergeSecurityContexts as X, buildSessionShareUrl as Y, validateChecklist as Z, computeOutboundHop as _, createSessionStore as a, summarize$1 as a0, newItem as a1, parseHandle as a2, handleMatchesMetadata as a3, describeMisconfiguration as a4, buildMachineDeps as a5, composeSessionId as a6, generateFriendlyName as a7, generateHookSettings as a8, projectInfo as a9, DefaultTransport$1 as aa, acpBackend as ab, acpAgentConfig as ac, codexMcpBackend as ad, GeminiTransport$1 as ae, claudeAuth as af, instanceConfig as ag, api as ah, run as ai, 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, getHyphaServerUrl as k, hasCookieToken as l, resolveProjectRoot as m, searchIssues as n, listIssues as o, addComment as p, getIssue as q, registerMachineService as r, startDaemon as s, summarize as t, updateIssue as u, addIssue as v, shortId as w, parseFrontmatter as x, getSkillsServer as y, getSkillsWorkspaceName as z };
@@ -54,7 +54,7 @@ async function handleServeCommand() {
54
54
  }
55
55
  }
56
56
  async function serveAdd(args, machineId) {
57
- const { connectAndGetMachine } = await import('./commands-D2Zpi3G8.mjs');
57
+ const { connectAndGetMachine } = await import('./commands-yYLA6w6t.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-D2Zpi3G8.mjs');
96
+ const { connectAndGetMachine } = await import('./commands-yYLA6w6t.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-D2Zpi3G8.mjs');
185
+ const { connectAndGetMachine } = await import('./commands-yYLA6w6t.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-D2Zpi3G8.mjs');
205
+ const { connectAndGetMachine } = await import('./commands-yYLA6w6t.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-D2Zpi3G8.mjs');
238
+ const { connectAndGetMachine } = await import('./commands-yYLA6w6t.mjs');
239
239
  const { machine, server } = await connectAndGetMachine(machineId);
240
240
  try {
241
241
  const info = await machine.serveInfo();