svamp-cli 0.2.269 → 0.2.271
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.
- package/dist/{agentCommands-Dzk4e5se.mjs → agentCommands-CcvH2Sic.mjs} +5 -5
- package/dist/{auth-Bsp6Mn7W.mjs → auth-BOmLOTb2.mjs} +1 -1
- package/dist/{cli-COQg5XhV.mjs → cli-Ct6iRiK8.mjs} +63 -63
- package/dist/cli.mjs +2 -2
- package/dist/{commands-BbsqugoB.mjs → commands-B6Gz-6n7.mjs} +2 -2
- package/dist/{commands-BS1nRSti.mjs → commands-BKs44mJ_.mjs} +2 -2
- package/dist/{commands-DqyqbI0p.mjs → commands-D3GMer4U.mjs} +1 -1
- package/dist/{commands-C-UQ3PbA.mjs → commands-DUIWBt-g.mjs} +1 -1
- package/dist/{commands-CJxlXlTy.mjs → commands-Dg7hxtOY.mjs} +7 -7
- package/dist/{commands-Y-Nna_A4.mjs → commands-DwQJ6hVG.mjs} +2 -2
- package/dist/{commands-v-bJG0B0.mjs → commands-xQ2Hb-E1.mjs} +1 -1
- package/dist/{fleet-BNJf0oiF.mjs → fleet-Cwy0Ylrr.mjs} +1 -1
- package/dist/{frpc-D0O_ho2a.mjs → frpc-BAPNDwFz.mjs} +1 -1
- package/dist/{headlessCli-CDajSqLP.mjs → headlessCli-BliMQ-Vv.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{package-C4LMqtdL.mjs → package-XyoKsbcd.mjs} +2 -2
- package/dist/{rpc-CiB0ZTCJ.mjs → rpc-6vMdF_Bi.mjs} +1 -1
- package/dist/{rpc-KQlBd_Kl.mjs → rpc-xVRkdJOj.mjs} +1 -1
- package/dist/{run-BwLjjDzE.mjs → run-DRTKhT5t.mjs} +1 -1
- package/dist/{run-ZZJd3r3N.mjs → run-fb578WlD.mjs} +35 -37
- package/dist/{scheduler-dJbWmJa6.mjs → scheduler-BnGmCzUW.mjs} +1 -1
- package/dist/{serveCommands-Wy_O_dIQ.mjs → serveCommands-BYR845ZH.mjs} +5 -5
- package/dist/{sideband-DgvSqT9x.mjs → sideband-DOKXLjFQ.mjs} +1 -1
- package/package.json +2 -2
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync, renameSync } from '
|
|
|
2
2
|
import { join, dirname } from 'node:path';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import { requireNotSandboxed } from './sandboxDetect-DNTcbgWD.mjs';
|
|
5
|
-
import { i as shortId } from './run-
|
|
5
|
+
import { i as shortId } from './run-fb578WlD.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -96,7 +96,7 @@ async function sessionSetTitle(title) {
|
|
|
96
96
|
}
|
|
97
97
|
async function sessionSetProjectDescription(description) {
|
|
98
98
|
const dir = process.cwd();
|
|
99
|
-
const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-
|
|
99
|
+
const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-fb578WlD.mjs').then(function (n) { return n.al; });
|
|
100
100
|
const desc = sanitizeDescription(description, 240);
|
|
101
101
|
if (!desc) {
|
|
102
102
|
console.error("Project description is empty.");
|
|
@@ -343,7 +343,7 @@ async function sessionBroadcast(action, args) {
|
|
|
343
343
|
console.log(`Broadcast sent: ${action}`);
|
|
344
344
|
}
|
|
345
345
|
async function connectToMachineService() {
|
|
346
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
346
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.mjs');
|
|
347
347
|
return connectAndGetMachine();
|
|
348
348
|
}
|
|
349
349
|
function buildInboxMessage(args) {
|
|
@@ -421,7 +421,7 @@ async function inboxSend(targetSessionId, opts) {
|
|
|
421
421
|
console.error("Message body is required.");
|
|
422
422
|
process.exit(1);
|
|
423
423
|
}
|
|
424
|
-
const { connectAndResolveSession } = await import('./commands-
|
|
424
|
+
const { connectAndResolveSession } = await import('./commands-D3GMer4U.mjs');
|
|
425
425
|
let server;
|
|
426
426
|
try {
|
|
427
427
|
const { targetId, messageId } = await inboxSendCore(
|
|
@@ -475,7 +475,7 @@ async function inboxReply(messageId, body) {
|
|
|
475
475
|
console.error("SVAMP_SESSION_ID not set. This command must be run inside a Svamp session.");
|
|
476
476
|
process.exit(1);
|
|
477
477
|
}
|
|
478
|
-
const { connectAndResolveSession } = await import('./commands-
|
|
478
|
+
const { connectAndResolveSession } = await import('./commands-D3GMer4U.mjs');
|
|
479
479
|
const { server: localServer, machine: localMachine } = await connectToMachineService();
|
|
480
480
|
let localDisconnected = false;
|
|
481
481
|
const disconnectLocal = async () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Z as clearStopMarker, _ as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-
|
|
1
|
+
import { Z as clearStopMarker, _ as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-fb578WlD.mjs';
|
|
2
2
|
import { ensureSupervisorViaServiceManager, LAUNCHD_LABEL } from './serviceManager-hlOVxkhW.mjs';
|
|
3
3
|
|
|
4
4
|
function flushAndExit(code) {
|
|
@@ -33,7 +33,7 @@ const subcommand = args[0];
|
|
|
33
33
|
let daemonSubcommand = args[1];
|
|
34
34
|
async function main() {
|
|
35
35
|
try {
|
|
36
|
-
const { getLoadedConfig } = await import('./run-
|
|
36
|
+
const { getLoadedConfig } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ai; });
|
|
37
37
|
getLoadedConfig();
|
|
38
38
|
} catch {
|
|
39
39
|
}
|
|
@@ -52,7 +52,7 @@ async function main() {
|
|
|
52
52
|
}
|
|
53
53
|
const whenIdle = args.includes("--when-idle");
|
|
54
54
|
const force = args.includes("--force");
|
|
55
|
-
const mod = await import('./run-
|
|
55
|
+
const mod = await import('./run-fb578WlD.mjs').then(function (n) { return n.as; });
|
|
56
56
|
if (whenIdle && !force) {
|
|
57
57
|
if (mod.isDaemonAlive()) {
|
|
58
58
|
mod.writePendingRestart({ reason: "svamp daemon restart --when-idle" });
|
|
@@ -356,7 +356,7 @@ async function main() {
|
|
|
356
356
|
console.error("svamp service: Service commands are not available in sandboxed sessions.");
|
|
357
357
|
process.exit(1);
|
|
358
358
|
}
|
|
359
|
-
const { handleServiceCommand } = await import('./commands-
|
|
359
|
+
const { handleServiceCommand } = await import('./commands-Dg7hxtOY.mjs');
|
|
360
360
|
await handleServiceCommand();
|
|
361
361
|
} else if (subcommand === "serve") {
|
|
362
362
|
const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
|
|
@@ -364,7 +364,7 @@ async function main() {
|
|
|
364
364
|
console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
|
|
365
365
|
process.exit(1);
|
|
366
366
|
}
|
|
367
|
-
const { handleServeCommand } = await import('./serveCommands-
|
|
367
|
+
const { handleServeCommand } = await import('./serveCommands-BYR845ZH.mjs');
|
|
368
368
|
await handleServeCommand();
|
|
369
369
|
process.exit(0);
|
|
370
370
|
} else if (subcommand === "process" || subcommand === "proc") {
|
|
@@ -373,7 +373,7 @@ async function main() {
|
|
|
373
373
|
console.error("svamp process: Process commands are not available in sandboxed sessions.");
|
|
374
374
|
process.exit(1);
|
|
375
375
|
}
|
|
376
|
-
const { processCommand } = await import('./commands-
|
|
376
|
+
const { processCommand } = await import('./commands-B6Gz-6n7.mjs');
|
|
377
377
|
let machineId;
|
|
378
378
|
const processArgs = args.slice(1);
|
|
379
379
|
const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
|
|
@@ -387,18 +387,18 @@ async function main() {
|
|
|
387
387
|
}), machineId);
|
|
388
388
|
process.exit(0);
|
|
389
389
|
} else if (subcommand === "issue" || subcommand === "issues") {
|
|
390
|
-
const { issueCommand } = await import('./commands-
|
|
390
|
+
const { issueCommand } = await import('./commands-BKs44mJ_.mjs');
|
|
391
391
|
await issueCommand(args.slice(1));
|
|
392
392
|
await flushAndExit(0);
|
|
393
393
|
} else if (subcommand === "workflow" || subcommand === "workflows") {
|
|
394
|
-
const { workflowCommand } = await import('./commands-
|
|
394
|
+
const { workflowCommand } = await import('./commands-xQ2Hb-E1.mjs');
|
|
395
395
|
await workflowCommand(args.slice(1));
|
|
396
396
|
await flushAndExit(0);
|
|
397
397
|
} else if (subcommand === "wise-agent" || subcommand === "wise") {
|
|
398
398
|
await handleWiseAgentCommand(args.slice(1));
|
|
399
399
|
process.exit(0);
|
|
400
400
|
} else if (subcommand === "feature" || subcommand === "crew") {
|
|
401
|
-
const { crewCommand } = await import('./commands-
|
|
401
|
+
const { crewCommand } = await import('./commands-DwQJ6hVG.mjs');
|
|
402
402
|
await crewCommand(args.slice(1));
|
|
403
403
|
process.exit(0);
|
|
404
404
|
} else if (subcommand === "--help" || subcommand === "-h") {
|
|
@@ -406,7 +406,7 @@ async function main() {
|
|
|
406
406
|
} else if (!subcommand || subcommand === "start") {
|
|
407
407
|
await handleInteractiveCommand();
|
|
408
408
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
409
|
-
const pkg = await import('./package-
|
|
409
|
+
const pkg = await import('./package-XyoKsbcd.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
410
410
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
411
411
|
} else {
|
|
412
412
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -415,7 +415,7 @@ async function main() {
|
|
|
415
415
|
}
|
|
416
416
|
}
|
|
417
417
|
async function handleInteractiveCommand() {
|
|
418
|
-
const { runInteractive } = await import('./run-
|
|
418
|
+
const { runInteractive } = await import('./run-DRTKhT5t.mjs');
|
|
419
419
|
const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
|
|
420
420
|
let directory = process.cwd();
|
|
421
421
|
let resumeSessionId;
|
|
@@ -460,7 +460,7 @@ async function handleAgentCommand() {
|
|
|
460
460
|
return;
|
|
461
461
|
}
|
|
462
462
|
if (agentArgs[0] === "list") {
|
|
463
|
-
const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-
|
|
463
|
+
const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ao; });
|
|
464
464
|
console.log("Known agents:");
|
|
465
465
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
466
466
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
|
|
@@ -472,7 +472,7 @@ async function handleAgentCommand() {
|
|
|
472
472
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
473
473
|
return;
|
|
474
474
|
}
|
|
475
|
-
const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-
|
|
475
|
+
const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ao; });
|
|
476
476
|
let cwd = process.cwd();
|
|
477
477
|
const filteredArgs = [];
|
|
478
478
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -496,12 +496,12 @@ async function handleAgentCommand() {
|
|
|
496
496
|
console.log(`Starting ${config.agentName} agent in ${cwd}...`);
|
|
497
497
|
let backend;
|
|
498
498
|
if (KNOWN_CODEX_AGENTS[config.agentName]) {
|
|
499
|
-
const { CodexAppServerBackend } = await import('./run-
|
|
499
|
+
const { CodexAppServerBackend } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ap; });
|
|
500
500
|
backend = new CodexAppServerBackend({ cwd, log: logFn });
|
|
501
501
|
} else {
|
|
502
|
-
const { AcpBackend } = await import('./run-
|
|
503
|
-
const { GeminiTransport } = await import('./run-
|
|
504
|
-
const { DefaultTransport } = await import('./run-
|
|
502
|
+
const { AcpBackend } = await import('./run-fb578WlD.mjs').then(function (n) { return n.an; });
|
|
503
|
+
const { GeminiTransport } = await import('./run-fb578WlD.mjs').then(function (n) { return n.aq; });
|
|
504
|
+
const { DefaultTransport } = await import('./run-fb578WlD.mjs').then(function (n) { return n.am; });
|
|
505
505
|
const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
|
|
506
506
|
backend = new AcpBackend({
|
|
507
507
|
agentName: config.agentName,
|
|
@@ -628,7 +628,7 @@ async function handleSessionCommand() {
|
|
|
628
628
|
process.exit(1);
|
|
629
629
|
}
|
|
630
630
|
}
|
|
631
|
-
const { sessionList, sessionWhoami, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionLoopStart, sessionLoopCancel, sessionLoopStatus, sessionLoopExtend, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-
|
|
631
|
+
const { sessionList, sessionWhoami, sessionSpawn, sessionArchive, sessionResume, sessionDelete, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionLoopStart, sessionLoopCancel, sessionLoopStatus, sessionLoopExtend, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-D3GMer4U.mjs');
|
|
632
632
|
const parseFlagStr = (flag, shortFlag) => {
|
|
633
633
|
for (let i = 1; i < sessionArgs.length; i++) {
|
|
634
634
|
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
@@ -696,7 +696,7 @@ async function handleSessionCommand() {
|
|
|
696
696
|
allowDomain.push(sessionArgs[++i]);
|
|
697
697
|
}
|
|
698
698
|
}
|
|
699
|
-
const { parseShareArg } = await import('./commands-
|
|
699
|
+
const { parseShareArg } = await import('./commands-D3GMer4U.mjs');
|
|
700
700
|
const shareEntries = share.map((s) => parseShareArg(s));
|
|
701
701
|
await sessionSpawn(agent, dir, targetMachineId, {
|
|
702
702
|
message,
|
|
@@ -786,7 +786,7 @@ async function handleSessionCommand() {
|
|
|
786
786
|
console.error(" Rewinds history: rewrites the message + drops everything after it, then restarts Claude.");
|
|
787
787
|
process.exit(1);
|
|
788
788
|
}
|
|
789
|
-
const { sessionEditMessage } = await import('./commands-
|
|
789
|
+
const { sessionEditMessage } = await import('./commands-D3GMer4U.mjs');
|
|
790
790
|
await sessionEditMessage(sessionArgs[1], sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
791
791
|
} else if (sessionSubcommand === "refine") {
|
|
792
792
|
if (!sessionArgs[1] || !sessionArgs[2]) {
|
|
@@ -794,7 +794,7 @@ async function handleSessionCommand() {
|
|
|
794
794
|
console.error(" Asks the agent to revise its latest reply in place (no extra round).");
|
|
795
795
|
process.exit(1);
|
|
796
796
|
}
|
|
797
|
-
const { sessionRefineLastReply } = await import('./commands-
|
|
797
|
+
const { sessionRefineLastReply } = await import('./commands-D3GMer4U.mjs');
|
|
798
798
|
await sessionRefineLastReply(sessionArgs[1], sessionArgs[2], targetMachineId);
|
|
799
799
|
} else if (sessionSubcommand === "undo-edit" || sessionSubcommand === "undo") {
|
|
800
800
|
if (!sessionArgs[1]) {
|
|
@@ -802,7 +802,7 @@ async function handleSessionCommand() {
|
|
|
802
802
|
console.error(" Reverts the most recent edit/refine, restoring the pre-edit history.");
|
|
803
803
|
process.exit(1);
|
|
804
804
|
}
|
|
805
|
-
const { sessionUndoEdit } = await import('./commands-
|
|
805
|
+
const { sessionUndoEdit } = await import('./commands-D3GMer4U.mjs');
|
|
806
806
|
await sessionUndoEdit(sessionArgs[1], targetMachineId);
|
|
807
807
|
} else if (sessionSubcommand === "query") {
|
|
808
808
|
const dir = sessionArgs[1];
|
|
@@ -812,7 +812,7 @@ async function handleSessionCommand() {
|
|
|
812
812
|
console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
|
|
813
813
|
process.exit(1);
|
|
814
814
|
}
|
|
815
|
-
const { sessionQuery } = await import('./commands-
|
|
815
|
+
const { sessionQuery } = await import('./commands-D3GMer4U.mjs');
|
|
816
816
|
await sessionQuery(dir, prompt, targetMachineId, {
|
|
817
817
|
timeout: parseFlagInt("--timeout"),
|
|
818
818
|
json: hasFlag("--json"),
|
|
@@ -845,7 +845,7 @@ async function handleSessionCommand() {
|
|
|
845
845
|
console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
|
|
846
846
|
process.exit(1);
|
|
847
847
|
}
|
|
848
|
-
const { sessionApprove } = await import('./commands-
|
|
848
|
+
const { sessionApprove } = await import('./commands-D3GMer4U.mjs');
|
|
849
849
|
const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
850
850
|
await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
|
|
851
851
|
json: hasFlag("--json")
|
|
@@ -855,7 +855,7 @@ async function handleSessionCommand() {
|
|
|
855
855
|
console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
|
|
856
856
|
process.exit(1);
|
|
857
857
|
}
|
|
858
|
-
const { sessionDeny } = await import('./commands-
|
|
858
|
+
const { sessionDeny } = await import('./commands-D3GMer4U.mjs');
|
|
859
859
|
const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
860
860
|
await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
|
|
861
861
|
json: hasFlag("--json")
|
|
@@ -907,7 +907,7 @@ async function handleSessionCommand() {
|
|
|
907
907
|
console.error("Usage: svamp session set-title <title>");
|
|
908
908
|
process.exit(1);
|
|
909
909
|
}
|
|
910
|
-
const { sessionSetTitle } = await import('./agentCommands-
|
|
910
|
+
const { sessionSetTitle } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
911
911
|
await sessionSetTitle(title);
|
|
912
912
|
} else if (sessionSubcommand === "set-project-description" || sessionSubcommand === "set-project") {
|
|
913
913
|
const desc = sessionArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
|
|
@@ -915,7 +915,7 @@ async function handleSessionCommand() {
|
|
|
915
915
|
console.error("Usage: svamp session set-project-description <text>");
|
|
916
916
|
process.exit(1);
|
|
917
917
|
}
|
|
918
|
-
const { sessionSetProjectDescription } = await import('./agentCommands-
|
|
918
|
+
const { sessionSetProjectDescription } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
919
919
|
await sessionSetProjectDescription(desc);
|
|
920
920
|
} else if (sessionSubcommand === "set-link") {
|
|
921
921
|
const url = sessionArgs[1];
|
|
@@ -924,11 +924,11 @@ async function handleSessionCommand() {
|
|
|
924
924
|
process.exit(1);
|
|
925
925
|
}
|
|
926
926
|
const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
927
|
-
const { sessionSetLink } = await import('./agentCommands-
|
|
927
|
+
const { sessionSetLink } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
928
928
|
await sessionSetLink(url, label);
|
|
929
929
|
} else if (sessionSubcommand === "link") {
|
|
930
930
|
const op = sessionArgs[1];
|
|
931
|
-
const lm = await import('./agentCommands-
|
|
931
|
+
const lm = await import('./agentCommands-CcvH2Sic.mjs');
|
|
932
932
|
if (op === "add") {
|
|
933
933
|
const url = sessionArgs[2];
|
|
934
934
|
if (!url || url.startsWith("--")) {
|
|
@@ -963,7 +963,7 @@ async function handleSessionCommand() {
|
|
|
963
963
|
process.exit(1);
|
|
964
964
|
}
|
|
965
965
|
const level = parseFlagStr("--level") || "info";
|
|
966
|
-
const { sessionNotify } = await import('./agentCommands-
|
|
966
|
+
const { sessionNotify } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
967
967
|
await sessionNotify(message, level);
|
|
968
968
|
} else if (sessionSubcommand === "broadcast") {
|
|
969
969
|
const action = sessionArgs[1];
|
|
@@ -971,7 +971,7 @@ async function handleSessionCommand() {
|
|
|
971
971
|
console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
|
|
972
972
|
process.exit(1);
|
|
973
973
|
}
|
|
974
|
-
const { sessionBroadcast } = await import('./agentCommands-
|
|
974
|
+
const { sessionBroadcast } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
975
975
|
await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
|
|
976
976
|
} else if (sessionSubcommand === "inbox") {
|
|
977
977
|
const inboxSubcmd = sessionArgs[1];
|
|
@@ -982,7 +982,7 @@ async function handleSessionCommand() {
|
|
|
982
982
|
process.exit(1);
|
|
983
983
|
}
|
|
984
984
|
if (agentSessionId) {
|
|
985
|
-
const { inboxSend } = await import('./agentCommands-
|
|
985
|
+
const { inboxSend } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
986
986
|
await inboxSend(sessionArgs[2], {
|
|
987
987
|
body: sessionArgs[3],
|
|
988
988
|
subject: parseFlagStr("--subject"),
|
|
@@ -997,7 +997,7 @@ async function handleSessionCommand() {
|
|
|
997
997
|
}
|
|
998
998
|
} else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
|
|
999
999
|
if (agentSessionId && !sessionArgs[2]) {
|
|
1000
|
-
const { inboxList } = await import('./agentCommands-
|
|
1000
|
+
const { inboxList } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
1001
1001
|
await inboxList({
|
|
1002
1002
|
unread: hasFlag("--unread"),
|
|
1003
1003
|
limit: parseFlagInt("--limit"),
|
|
@@ -1019,7 +1019,7 @@ async function handleSessionCommand() {
|
|
|
1019
1019
|
process.exit(1);
|
|
1020
1020
|
}
|
|
1021
1021
|
if (agentSessionId && !sessionArgs[3]) {
|
|
1022
|
-
const { inboxList } = await import('./agentCommands-
|
|
1022
|
+
const { inboxList } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
1023
1023
|
await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
|
|
1024
1024
|
} else if (sessionArgs[3]) {
|
|
1025
1025
|
await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
@@ -1029,7 +1029,7 @@ async function handleSessionCommand() {
|
|
|
1029
1029
|
}
|
|
1030
1030
|
} else if (inboxSubcmd === "reply") {
|
|
1031
1031
|
if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
|
|
1032
|
-
const { inboxReply } = await import('./agentCommands-
|
|
1032
|
+
const { inboxReply } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
1033
1033
|
await inboxReply(sessionArgs[2], sessionArgs[3]);
|
|
1034
1034
|
} else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
|
|
1035
1035
|
await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
|
|
@@ -1067,7 +1067,7 @@ async function handleMachineCommand() {
|
|
|
1067
1067
|
return;
|
|
1068
1068
|
}
|
|
1069
1069
|
if (machineSubcommand === "share") {
|
|
1070
|
-
const { machineShare } = await import('./commands-
|
|
1070
|
+
const { machineShare } = await import('./commands-D3GMer4U.mjs');
|
|
1071
1071
|
let machineId;
|
|
1072
1072
|
const shareArgs = [];
|
|
1073
1073
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
@@ -1118,14 +1118,14 @@ async function handleMachineCommand() {
|
|
|
1118
1118
|
process.exit(1);
|
|
1119
1119
|
}
|
|
1120
1120
|
if (all) {
|
|
1121
|
-
const { fleetExec } = await import('./fleet-
|
|
1121
|
+
const { fleetExec } = await import('./fleet-Cwy0Ylrr.mjs');
|
|
1122
1122
|
await fleetExec(command, { cwd });
|
|
1123
1123
|
} else {
|
|
1124
|
-
const { machineExec } = await import('./commands-
|
|
1124
|
+
const { machineExec } = await import('./commands-D3GMer4U.mjs');
|
|
1125
1125
|
await machineExec(machineId, command, cwd);
|
|
1126
1126
|
}
|
|
1127
1127
|
} else if (machineSubcommand === "info") {
|
|
1128
|
-
const { machineInfo } = await import('./commands-
|
|
1128
|
+
const { machineInfo } = await import('./commands-D3GMer4U.mjs');
|
|
1129
1129
|
let machineId;
|
|
1130
1130
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
1131
1131
|
if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
|
|
@@ -1145,10 +1145,10 @@ async function handleMachineCommand() {
|
|
|
1145
1145
|
level = machineArgs[++i];
|
|
1146
1146
|
}
|
|
1147
1147
|
}
|
|
1148
|
-
const { machineNotify } = await import('./agentCommands-
|
|
1148
|
+
const { machineNotify } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
1149
1149
|
await machineNotify(message, level);
|
|
1150
1150
|
} else if (machineSubcommand === "ls") {
|
|
1151
|
-
const { machineLs } = await import('./commands-
|
|
1151
|
+
const { machineLs } = await import('./commands-D3GMer4U.mjs');
|
|
1152
1152
|
let machineId;
|
|
1153
1153
|
let showHidden = false;
|
|
1154
1154
|
let path;
|
|
@@ -1207,20 +1207,20 @@ Examples:
|
|
|
1207
1207
|
};
|
|
1208
1208
|
const hasFlag = (name) => fleetArgs.includes(`--${name}`);
|
|
1209
1209
|
if (sub === "status") {
|
|
1210
|
-
const { fleetStatus } = await import('./fleet-
|
|
1210
|
+
const { fleetStatus } = await import('./fleet-Cwy0Ylrr.mjs');
|
|
1211
1211
|
await fleetStatus();
|
|
1212
1212
|
} else if (sub === "upgrade-claude") {
|
|
1213
|
-
const { fleetUpgradeClaude } = await import('./fleet-
|
|
1213
|
+
const { fleetUpgradeClaude } = await import('./fleet-Cwy0Ylrr.mjs');
|
|
1214
1214
|
await fleetUpgradeClaude({ version: flag("version", "-v") });
|
|
1215
1215
|
} else if (sub === "upgrade-svamp") {
|
|
1216
|
-
const { fleetUpgradeSvamp } = await import('./fleet-
|
|
1216
|
+
const { fleetUpgradeSvamp } = await import('./fleet-Cwy0Ylrr.mjs');
|
|
1217
1217
|
await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self"), force: hasFlag("force") });
|
|
1218
1218
|
} else if (sub === "daemon-restart") {
|
|
1219
|
-
const { fleetDaemonRestart } = await import('./fleet-
|
|
1219
|
+
const { fleetDaemonRestart } = await import('./fleet-Cwy0Ylrr.mjs');
|
|
1220
1220
|
await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
|
|
1221
1221
|
} else if (sub === "push-skill") {
|
|
1222
1222
|
const name = fleetArgs[1];
|
|
1223
|
-
const { fleetPushSkill } = await import('./fleet-
|
|
1223
|
+
const { fleetPushSkill } = await import('./fleet-Cwy0Ylrr.mjs');
|
|
1224
1224
|
await fleetPushSkill(name);
|
|
1225
1225
|
} else {
|
|
1226
1226
|
console.error(`Unknown fleet subcommand: ${sub}`);
|
|
@@ -1236,7 +1236,7 @@ async function handleSkillsCommand() {
|
|
|
1236
1236
|
await printSkillsHelp();
|
|
1237
1237
|
return;
|
|
1238
1238
|
}
|
|
1239
|
-
const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-
|
|
1239
|
+
const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-DUIWBt-g.mjs');
|
|
1240
1240
|
if (skillsSubcommand === "find" || skillsSubcommand === "search") {
|
|
1241
1241
|
const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
|
|
1242
1242
|
if (!query) {
|
|
@@ -1283,7 +1283,7 @@ async function loginToHypha() {
|
|
|
1283
1283
|
process.exit(1);
|
|
1284
1284
|
}
|
|
1285
1285
|
const anchor = anchorArg.replace(/\/+$/, "");
|
|
1286
|
-
const { loadInstanceConfig } = await import('./run-
|
|
1286
|
+
const { loadInstanceConfig } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ai; });
|
|
1287
1287
|
let cfg = null;
|
|
1288
1288
|
try {
|
|
1289
1289
|
cfg = await loadInstanceConfig({ anchor, force: true });
|
|
@@ -1394,7 +1394,7 @@ async function logoutFromHypha() {
|
|
|
1394
1394
|
} catch {
|
|
1395
1395
|
}
|
|
1396
1396
|
try {
|
|
1397
|
-
const { clearInstanceConfigCache } = await import('./run-
|
|
1397
|
+
const { clearInstanceConfigCache } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ai; });
|
|
1398
1398
|
clearInstanceConfigCache();
|
|
1399
1399
|
} catch {
|
|
1400
1400
|
}
|
|
@@ -1733,7 +1733,7 @@ async function applyClaudeAuthFlags(argv) {
|
|
|
1733
1733
|
"--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
|
|
1734
1734
|
);
|
|
1735
1735
|
}
|
|
1736
|
-
const mod = await import('./run-
|
|
1736
|
+
const mod = await import('./run-fb578WlD.mjs').then(function (n) { return n.aj; });
|
|
1737
1737
|
if (hasHypha) {
|
|
1738
1738
|
let url;
|
|
1739
1739
|
const hyphaIdx = argv.indexOf("--use-hypha-proxy");
|
|
@@ -1787,7 +1787,7 @@ async function applyDaemonShareFlag(argv) {
|
|
|
1787
1787
|
}
|
|
1788
1788
|
}
|
|
1789
1789
|
if (collected.length === 0) return;
|
|
1790
|
-
const { updateEnvFile } = await import('./run-
|
|
1790
|
+
const { updateEnvFile } = await import('./run-fb578WlD.mjs').then(function (n) { return n.aj; });
|
|
1791
1791
|
const seen = /* @__PURE__ */ new Set();
|
|
1792
1792
|
const deduped = collected.filter((e) => {
|
|
1793
1793
|
const k = e.toLowerCase();
|
|
@@ -1820,7 +1820,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1820
1820
|
}
|
|
1821
1821
|
});
|
|
1822
1822
|
const message = rest.slice(1).map((a, idx) => ({ a, idx: idx + 1 })).filter(({ a, idx }) => !a.startsWith("-") && !consumed.has(String(idx))).map(({ a }) => a).join(" ");
|
|
1823
|
-
const { wiseAskCli } = await import('./commands-
|
|
1823
|
+
const { wiseAskCli } = await import('./commands-D3GMer4U.mjs');
|
|
1824
1824
|
await wiseAskCli(machineId, message, sessionId, { json });
|
|
1825
1825
|
return;
|
|
1826
1826
|
}
|
|
@@ -1832,7 +1832,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1832
1832
|
}
|
|
1833
1833
|
return void 0;
|
|
1834
1834
|
};
|
|
1835
|
-
const { runWiseVoiceCli } = await import('./headlessCli-
|
|
1835
|
+
const { runWiseVoiceCli } = await import('./headlessCli-BliMQ-Vv.mjs');
|
|
1836
1836
|
await runWiseVoiceCli({ voice: valueOf(["--voice"]), wakeKeywordPath: valueOf(["--wake"]), model: valueOf(["--model"]) });
|
|
1837
1837
|
return;
|
|
1838
1838
|
}
|
|
@@ -1850,7 +1850,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1850
1850
|
const mode = valueOf(["--mode"]);
|
|
1851
1851
|
const mission = valueOf(["--mission"]);
|
|
1852
1852
|
const url = rest.slice(1).find((a) => /^https?:\/\//.test(a)) || "";
|
|
1853
|
-
const { wiseJoinMeetingCli } = await import('./commands-
|
|
1853
|
+
const { wiseJoinMeetingCli } = await import('./commands-D3GMer4U.mjs');
|
|
1854
1854
|
await wiseJoinMeetingCli(machineId, url, sessionId, { json, mode, mission });
|
|
1855
1855
|
return;
|
|
1856
1856
|
}
|
|
@@ -1862,7 +1862,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1862
1862
|
}
|
|
1863
1863
|
return void 0;
|
|
1864
1864
|
};
|
|
1865
|
-
const { wiseLeaveMeetingCli } = await import('./commands-
|
|
1865
|
+
const { wiseLeaveMeetingCli } = await import('./commands-D3GMer4U.mjs');
|
|
1866
1866
|
await wiseLeaveMeetingCli(valueOf(["--machine", "-m"]), valueOf(["--session", "-s"]), { json: rest.includes("--json") });
|
|
1867
1867
|
return;
|
|
1868
1868
|
}
|
|
@@ -1886,7 +1886,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1886
1886
|
}
|
|
1887
1887
|
});
|
|
1888
1888
|
const text = rest.slice(1).map((a, idx) => ({ a, idx: idx + 1 })).filter(({ a, idx }) => !a.startsWith("-") && !consumed.has(String(idx))).map(({ a }) => a).join(" ");
|
|
1889
|
-
const { wiseAnnounceCli } = await import('./commands-
|
|
1889
|
+
const { wiseAnnounceCli } = await import('./commands-D3GMer4U.mjs');
|
|
1890
1890
|
await wiseAnnounceCli(machineId, text, sessionId, { json });
|
|
1891
1891
|
return;
|
|
1892
1892
|
}
|
|
@@ -1898,7 +1898,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1898
1898
|
}
|
|
1899
1899
|
return void 0;
|
|
1900
1900
|
};
|
|
1901
|
-
const { wiseMeetingsCli } = await import('./commands-
|
|
1901
|
+
const { wiseMeetingsCli } = await import('./commands-D3GMer4U.mjs');
|
|
1902
1902
|
await wiseMeetingsCli(valueOf(["--machine", "-m"]), { json: rest.includes("--json") });
|
|
1903
1903
|
return;
|
|
1904
1904
|
}
|
|
@@ -1948,7 +1948,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
1948
1948
|
return;
|
|
1949
1949
|
}
|
|
1950
1950
|
const authArgs = rest.slice(1);
|
|
1951
|
-
const mod = await import('./auth-
|
|
1951
|
+
const mod = await import('./auth-BOmLOTb2.mjs');
|
|
1952
1952
|
let action;
|
|
1953
1953
|
try {
|
|
1954
1954
|
action = mod.parseWiseAgentAuthArgs(authArgs);
|
|
@@ -1958,7 +1958,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
1958
1958
|
return;
|
|
1959
1959
|
}
|
|
1960
1960
|
if (action) {
|
|
1961
|
-
const { updateEnvFile } = await import('./run-
|
|
1961
|
+
const { updateEnvFile } = await import('./run-fb578WlD.mjs').then(function (n) { return n.aj; });
|
|
1962
1962
|
const updates = mod.buildWiseAgentEnvUpdates(action);
|
|
1963
1963
|
updateEnvFile(updates);
|
|
1964
1964
|
for (const [k, v] of Object.entries(updates)) {
|
|
@@ -1972,7 +1972,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
1972
1972
|
}
|
|
1973
1973
|
async function handleDaemonAuthCommand(argv) {
|
|
1974
1974
|
const sub = (argv[0] || "status").toLowerCase();
|
|
1975
|
-
const mod = await import('./run-
|
|
1975
|
+
const mod = await import('./run-fb578WlD.mjs').then(function (n) { return n.aj; });
|
|
1976
1976
|
if (sub === "--help" || sub === "-h" || sub === "help") {
|
|
1977
1977
|
console.log(`
|
|
1978
1978
|
svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
|
|
@@ -2046,8 +2046,8 @@ one step: --use-hypha-proxy / --use-claude-login / --anthropic-base-url URL --an
|
|
|
2046
2046
|
}
|
|
2047
2047
|
async function handleDaemonCodexAuthCommand(argv) {
|
|
2048
2048
|
const sub = (argv[0] || "status").toLowerCase();
|
|
2049
|
-
const { updateEnvFile } = await import('./run-
|
|
2050
|
-
const { resolveCodexProvider } = await import('./run-
|
|
2049
|
+
const { updateEnvFile } = await import('./run-fb578WlD.mjs').then(function (n) { return n.aj; });
|
|
2050
|
+
const { resolveCodexProvider } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ak; });
|
|
2051
2051
|
const redact = (k) => k && k.length > 10 ? `${k.slice(0, 6)}\u2026${k.slice(-4)}` : k ? "***" : "(unset)";
|
|
2052
2052
|
if (sub === "--help" || sub === "-h" || sub === "help") {
|
|
2053
2053
|
console.log(`
|
|
@@ -2379,7 +2379,7 @@ Examples:
|
|
|
2379
2379
|
async function printSkillsHelp() {
|
|
2380
2380
|
let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
|
|
2381
2381
|
try {
|
|
2382
|
-
const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-
|
|
2382
|
+
const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ar; });
|
|
2383
2383
|
browseUrl = `${getArtifactBaseUrl()}/${getSkillsCollectionName()}`;
|
|
2384
2384
|
} catch {
|
|
2385
2385
|
}
|
package/dist/cli.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { writeFileSync, readFileSync } from 'fs';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
|
-
import { connectAndGetMachine } from './commands-
|
|
3
|
+
import { connectAndGetMachine } from './commands-D3GMer4U.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-
|
|
8
|
+
import './run-fb578WlD.mjs';
|
|
9
9
|
import 'os';
|
|
10
10
|
import 'fs/promises';
|
|
11
11
|
import 'url';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { f as flushAndExit } from './cli-
|
|
5
|
-
import { j as resolveProjectRoot, q as searchIssues, o as listIssues, l as resumeIssue, p as pauseIssue, m as addComment, u as updateIssue, k as getIssue, t as isVisibleTo, H as summarize, n as addIssue } from './run-
|
|
4
|
+
import { f as flushAndExit } from './cli-Ct6iRiK8.mjs';
|
|
5
|
+
import { j as resolveProjectRoot, q as searchIssues, o as listIssues, l as resumeIssue, p as pauseIssue, m as addComment, u as updateIssue, k as getIssue, t as isVisibleTo, H as summarize, n as addIssue } from './run-fb578WlD.mjs';
|
|
6
6
|
import './serviceManager-hlOVxkhW.mjs';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { execSync } from 'node:child_process';
|
|
3
3
|
import { basename, resolve, join, isAbsolute } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import { $ as formatHandle, a0 as normalizeAllowedUser, a1 as loadSecurityContextConfig, a2 as resolveSecurityContext, a3 as buildSecurityContextFromFlags, a4 as mergeSecurityContexts, c as connectToHypha, a5 as buildSessionShareUrl, a6 as computeOutboundHop, i as shortId, a7 as registerAwaitingReply, a8 as buildMachineShareUrl, a9 as parseHandle, aa as handleMatchesMetadata } from './run-
|
|
5
|
+
import { $ as formatHandle, a0 as normalizeAllowedUser, a1 as loadSecurityContextConfig, a2 as resolveSecurityContext, a3 as buildSecurityContextFromFlags, a4 as mergeSecurityContexts, c as connectToHypha, a5 as buildSessionShareUrl, a6 as computeOutboundHop, i as shortId, a7 as registerAwaitingReply, a8 as buildMachineShareUrl, a9 as parseHandle, aa as handleMatchesMetadata } from './run-fb578WlD.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -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 { N as parseFrontmatter, O as getSkillsServer, P as getSkillsWorkspaceName, Q as getSkillsCollectionName, S as fetchWithTimeout, T as searchSkills, U as SKILLS_DIR, V as getSkillInfo, W as downloadSkillFile, X as listSkillFiles } from './run-
|
|
4
|
+
import { N as parseFrontmatter, O as getSkillsServer, P as getSkillsWorkspaceName, Q as getSkillsCollectionName, S as fetchWithTimeout, T as searchSkills, U as SKILLS_DIR, V as getSkillInfo, W as downloadSkillFile, X as listSkillFiles } from './run-fb578WlD.mjs';
|
|
5
5
|
import 'fs/promises';
|
|
6
6
|
import 'url';
|
|
7
7
|
import 'child_process';
|
|
@@ -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-
|
|
61
|
+
const { runFrpcTunnel } = await import('./frpc-BAPNDwFz.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-
|
|
71
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.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-
|
|
93
|
+
const { autoAddSessionLink } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
94
94
|
let added = 0;
|
|
95
95
|
for (const [port, url] of urlEntries) {
|
|
96
96
|
const label = urlEntries.length > 1 ? `${name}:${port}` : name;
|
|
@@ -127,7 +127,7 @@ async function serviceServe(args) {
|
|
|
127
127
|
console.log(`Serving ${resolvedDir}`);
|
|
128
128
|
const servePort = 18080;
|
|
129
129
|
const http = await import('http');
|
|
130
|
-
const { serveStaticMount } = await import('./run-
|
|
130
|
+
const { serveStaticMount } = await import('./run-fb578WlD.mjs').then(function (n) { return n.ah; });
|
|
131
131
|
const server = http.createServer((req, res) => {
|
|
132
132
|
const u = new URL(req.url || "/", "http://127.0.0.1");
|
|
133
133
|
let rel = u.pathname;
|
|
@@ -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-
|
|
141
|
+
const { runFrpcTunnel } = await import('./frpc-BAPNDwFz.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-
|
|
151
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.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-
|
|
191
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.mjs');
|
|
192
192
|
const { server, machine } = await connectAndGetMachine();
|
|
193
193
|
try {
|
|
194
194
|
await machine.tunnelStop({ name });
|
|
@@ -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-
|
|
3
|
+
import { connectAndGetMachine, resolveSessionId, createWorktree, connectAndResolveSession } from './commands-D3GMer4U.mjs';
|
|
4
4
|
import { execSync } from 'node:child_process';
|
|
5
|
-
import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-
|
|
5
|
+
import { u as updateIssue, m as addComment, n as addIssue, i as shortId } from './run-fb578WlD.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { j as resolveProjectRoot, I as workflowSteps, z as setWorkflowEnabled, E as isWorkflowEnabled, A as removeWorkflow, x as getWorkflow, D as listWorkflows, B as saveWorkflow, C as rawWorkflow } from './run-
|
|
2
|
+
import { j as resolveProjectRoot, I as workflowSteps, z as setWorkflowEnabled, E as isWorkflowEnabled, A as removeWorkflow, x as getWorkflow, D as listWorkflows, B as saveWorkflow, C as rawWorkflow } from './run-fb578WlD.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-
|
|
4
|
+
import { c as connectToHypha } from './run-fb578WlD.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 { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-
|
|
7
|
+
import { e as getFrpsSubdomainHost, f as getFrpsServerPort, h as getFrpsServerAddr } from './run-fb578WlD.mjs';
|
|
8
8
|
import 'fs/promises';
|
|
9
9
|
import 'url';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Y as resolveModel, ab as describeMisconfiguration, ac as buildMachineDeps } from './run-
|
|
2
|
-
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-
|
|
1
|
+
import { Y as resolveModel, ab as describeMisconfiguration, ac as buildMachineDeps } from './run-fb578WlD.mjs';
|
|
2
|
+
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-DOKXLjFQ.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-
|
|
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-fb578WlD.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.
|
|
2
|
+
var version = "0.2.271";
|
|
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-backend-accounts.mjs && npx tsx test/test-backend-oauth.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",
|
|
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-backend-accounts.mjs && npx tsx test/test-backend-oauth.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-session-access-fallback.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 { j as resolveProjectRoot, v as getRun, w as listRuns, x as getWorkflow, y as runWorkflow, z as setWorkflowEnabled, A as removeWorkflow, B as saveWorkflow, C as rawWorkflow, D as listWorkflows } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, v as getRun, w as listRuns, x as getWorkflow, y as runWorkflow, z as setWorkflowEnabled, A as removeWorkflow, B as saveWorkflow, C as rawWorkflow, D as listWorkflows } from './run-fb578WlD.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, u as updateIssue, k as getIssue, l as resumeIssue, p as pauseIssue, m as addComment, n as addIssue, o as listIssues, q as searchIssues, t as isVisibleTo } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, u as updateIssue, k as getIssue, l as resumeIssue, p as pauseIssue, m as addComment, n as addIssue, o as listIssues, q as searchIssues, t as isVisibleTo } from './run-fb578WlD.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 { ad as applyClaudeProxyEnv, ae as composeSessionId, af as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ag as generateHookSettings } from './run-
|
|
1
|
+
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { ad as applyClaudeProxyEnv, ae as composeSessionId, af as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ag as generateHookSettings } from './run-fb578WlD.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';
|
|
@@ -148,7 +148,7 @@ function authorizeRequest(context, sharing, requiredRole = "view") {
|
|
|
148
148
|
if (!userEmail) {
|
|
149
149
|
throw new Error("Access denied: this session is not publicly shared");
|
|
150
150
|
}
|
|
151
|
-
throw new Error(
|
|
151
|
+
throw new Error(`Access denied: ${userEmail} is not in the allowed users list`);
|
|
152
152
|
}
|
|
153
153
|
if (effectiveLevel < ROLE_HIERARCHY[requiredRole]) {
|
|
154
154
|
const effectiveRole = levelToRole(effectiveLevel) || "unknown";
|
|
@@ -2896,7 +2896,7 @@ Connection: close\r
|
|
|
2896
2896
|
const mount = this.mounts.get(mountName);
|
|
2897
2897
|
const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
|
|
2898
2898
|
try {
|
|
2899
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
2899
|
+
const { FrpcTunnel } = await import('./frpc-BAPNDwFz.mjs');
|
|
2900
2900
|
let tunnel;
|
|
2901
2901
|
tunnel = new FrpcTunnel({
|
|
2902
2902
|
name: tunnelName,
|
|
@@ -4663,7 +4663,17 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
4663
4663
|
}
|
|
4664
4664
|
}
|
|
4665
4665
|
};
|
|
4666
|
-
const
|
|
4666
|
+
const hasExplicitSessionAccess = async (rpc, requiredRole, context) => {
|
|
4667
|
+
try {
|
|
4668
|
+
const meta = await rpc.getMetadata(context);
|
|
4669
|
+
const sharing = meta?.metadata?.sharing;
|
|
4670
|
+
if (!sharing || !sharing.enabled) return false;
|
|
4671
|
+
authorizeRequest(context, sharing, requiredRole);
|
|
4672
|
+
return true;
|
|
4673
|
+
} catch {
|
|
4674
|
+
return false;
|
|
4675
|
+
}
|
|
4676
|
+
};
|
|
4667
4677
|
const authorizeSessionAccess = async (sessionId, requiredRole, context) => {
|
|
4668
4678
|
try {
|
|
4669
4679
|
authorizeRequest(context, currentMetadata.sharing, requiredRole);
|
|
@@ -4672,10 +4682,8 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
4672
4682
|
}
|
|
4673
4683
|
const rpc = handlers.getSessionRPCHandlers?.(sessionId);
|
|
4674
4684
|
if (!rpc) throw new Error(`Session '${sessionId}' not found`);
|
|
4675
|
-
|
|
4676
|
-
|
|
4677
|
-
throw new Error(`Access denied: ${requiredRole} role required on session ${sessionId}`);
|
|
4678
|
-
}
|
|
4685
|
+
if (await hasExplicitSessionAccess(rpc, requiredRole, context)) return;
|
|
4686
|
+
throw new Error(`Access denied: ${requiredRole} role required on session ${sessionId}`);
|
|
4679
4687
|
};
|
|
4680
4688
|
const notifyListeners = (update) => {
|
|
4681
4689
|
const snapshot = [...listeners];
|
|
@@ -4775,11 +4783,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
4775
4783
|
for (const t of tracked) {
|
|
4776
4784
|
const rpc = handlers.getSessionRPCHandlers?.(t.sessionId);
|
|
4777
4785
|
if (!rpc) continue;
|
|
4778
|
-
|
|
4779
|
-
const meta = await rpc.getMetadata(context);
|
|
4780
|
-
result.push(t);
|
|
4781
|
-
} catch {
|
|
4782
|
-
}
|
|
4786
|
+
if (await hasExplicitSessionAccess(rpc, "view", context)) result.push(t);
|
|
4783
4787
|
}
|
|
4784
4788
|
return result;
|
|
4785
4789
|
},
|
|
@@ -4802,6 +4806,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
4802
4806
|
for (const sid of sessionIds) {
|
|
4803
4807
|
const rpc = handlers.getSessionRPCHandlers?.(sid);
|
|
4804
4808
|
if (!rpc) continue;
|
|
4809
|
+
if (!hasMachineAccess && !await hasExplicitSessionAccess(rpc, "view", context)) continue;
|
|
4805
4810
|
try {
|
|
4806
4811
|
const [metaResult, stateResult, activity] = await Promise.all([
|
|
4807
4812
|
rpc.getMetadata(context),
|
|
@@ -4844,13 +4849,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
4844
4849
|
try {
|
|
4845
4850
|
authorizeRequest(context, currentMetadata.sharing, "view");
|
|
4846
4851
|
} catch (machineErr) {
|
|
4847
|
-
|
|
4848
|
-
const meta = await rpc.getMetadata(context);
|
|
4849
|
-
const sessionSharing = meta?.metadata?.sharing;
|
|
4850
|
-
authorizeRequest(context, sessionSharing, "view");
|
|
4851
|
-
} catch {
|
|
4852
|
-
throw machineErr;
|
|
4853
|
-
}
|
|
4852
|
+
if (!await hasExplicitSessionAccess(rpc, "view", context)) throw machineErr;
|
|
4854
4853
|
}
|
|
4855
4854
|
const handler = rpc[method];
|
|
4856
4855
|
if (typeof handler !== "function") {
|
|
@@ -4875,11 +4874,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
4875
4874
|
try {
|
|
4876
4875
|
authorizeRequest(context, currentMetadata.sharing, "view");
|
|
4877
4876
|
} catch (machineErr) {
|
|
4878
|
-
|
|
4879
|
-
const meta = await rpc.getMetadata(context);
|
|
4880
|
-
const sessionSharing = meta?.metadata?.sharing;
|
|
4881
|
-
authorizeRequest(context, sessionSharing, "view");
|
|
4882
|
-
} catch {
|
|
4877
|
+
if (!await hasExplicitSessionAccess(rpc, "view", context)) {
|
|
4883
4878
|
throw machineErr;
|
|
4884
4879
|
}
|
|
4885
4880
|
}
|
|
@@ -5703,7 +5698,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
5703
5698
|
const tunnels = handlers.tunnels;
|
|
5704
5699
|
if (!tunnels) throw new Error("Tunnel management not available");
|
|
5705
5700
|
if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
|
|
5706
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
5701
|
+
const { FrpcTunnel } = await import('./frpc-BAPNDwFz.mjs');
|
|
5707
5702
|
const tunnel = new FrpcTunnel({
|
|
5708
5703
|
name: params.name,
|
|
5709
5704
|
ports: params.ports,
|
|
@@ -6177,7 +6172,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6177
6172
|
}
|
|
6178
6173
|
const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
|
|
6179
6174
|
const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
|
|
6180
|
-
const { toolsForRole } = await import('./sideband-
|
|
6175
|
+
const { toolsForRole } = await import('./sideband-DOKXLjFQ.mjs');
|
|
6181
6176
|
const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
|
|
6182
6177
|
return fmt(r2);
|
|
6183
6178
|
}
|
|
@@ -6276,7 +6271,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6276
6271
|
if (r.error || !r.sender) return { error: r.error || "unauthorized" };
|
|
6277
6272
|
const callId = "call_" + Math.random().toString(16).slice(2, 12);
|
|
6278
6273
|
const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
|
|
6279
|
-
const { queryCore } = await import('./commands-
|
|
6274
|
+
const { queryCore } = await import('./commands-D3GMer4U.mjs');
|
|
6280
6275
|
const timeout = c.reply?.timeout_sec || 120;
|
|
6281
6276
|
let result;
|
|
6282
6277
|
try {
|
|
@@ -15902,7 +15897,7 @@ async function startDaemon(options) {
|
|
|
15902
15897
|
try {
|
|
15903
15898
|
const dir = loadSessionIndex()[sessionId]?.directory;
|
|
15904
15899
|
if (!dir) return;
|
|
15905
|
-
const { reconcileServiceLinks } = await import('./agentCommands-
|
|
15900
|
+
const { reconcileServiceLinks } = await import('./agentCommands-CcvH2Sic.mjs');
|
|
15906
15901
|
const configPath = getSvampConfigPath(dir, sessionId);
|
|
15907
15902
|
const config = readSvampConfig(configPath);
|
|
15908
15903
|
const entries = Array.from(urls.entries());
|
|
@@ -15920,7 +15915,7 @@ async function startDaemon(options) {
|
|
|
15920
15915
|
}
|
|
15921
15916
|
}
|
|
15922
15917
|
async function createExposedTunnel(spec) {
|
|
15923
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
15918
|
+
const { FrpcTunnel } = await import('./frpc-BAPNDwFz.mjs');
|
|
15924
15919
|
const tunnel = new FrpcTunnel({
|
|
15925
15920
|
name: spec.name,
|
|
15926
15921
|
ports: spec.ports,
|
|
@@ -16383,9 +16378,12 @@ ${v.guidance ? v.guidance + "\n" : ""}Criteria: ${v.criteria || "(none)"}
|
|
|
16383
16378
|
// persisted metadata; the daemon resolves it to concrete auth at each Claude spawn.
|
|
16384
16379
|
accountId: options2.accountId ?? persisted?.metadata?.accountId ?? void 0
|
|
16385
16380
|
};
|
|
16386
|
-
let currentPermissionMode = options2.permissionMode || persisted?.permissionMode || "bypassPermissions";
|
|
16381
|
+
let currentPermissionMode = options2.permissionMode || persisted?.permissionMode || agentConfig.default_permission_mode || "bypassPermissions";
|
|
16387
16382
|
const sessionCreatedAt = persisted?.createdAt || Date.now();
|
|
16388
|
-
let lastSpawnMeta = persisted?.spawnMeta ||
|
|
16383
|
+
let lastSpawnMeta = persisted?.spawnMeta || {
|
|
16384
|
+
...options2.model ? { model: options2.model } : {},
|
|
16385
|
+
...options2.permissionMode ? { permissionMode: options2.permissionMode } : {}
|
|
16386
|
+
};
|
|
16389
16387
|
let sessionWasProcessing = !!options2.wasProcessing;
|
|
16390
16388
|
let lastMainModel;
|
|
16391
16389
|
const AUTO_TOPIC_DISABLED = process.env.SVAMP_AUTO_TOPIC === "0";
|
|
@@ -18088,11 +18086,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
18088
18086
|
});
|
|
18089
18087
|
},
|
|
18090
18088
|
onIssue: async (params) => {
|
|
18091
|
-
const { issueRpc } = await import('./rpc-
|
|
18089
|
+
const { issueRpc } = await import('./rpc-xVRkdJOj.mjs');
|
|
18092
18090
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
18093
18091
|
},
|
|
18094
18092
|
onWorkflow: async (params) => {
|
|
18095
|
-
const { workflowRpc } = await import('./rpc-
|
|
18093
|
+
const { workflowRpc } = await import('./rpc-6vMdF_Bi.mjs');
|
|
18096
18094
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
18097
18095
|
},
|
|
18098
18096
|
onRipgrep: async (args, cwd) => {
|
|
@@ -18387,7 +18385,7 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
18387
18385
|
// Selected backend account — sticky across restart via persisted metadata.
|
|
18388
18386
|
accountId: options2.accountId ?? acpPersisted?.metadata?.accountId ?? void 0
|
|
18389
18387
|
};
|
|
18390
|
-
let currentPermissionMode = options2.permissionMode || "bypassPermissions";
|
|
18388
|
+
let currentPermissionMode = options2.permissionMode || agentConfig?.default_permission_mode || "bypassPermissions";
|
|
18391
18389
|
const allowedTools = /* @__PURE__ */ new Set();
|
|
18392
18390
|
const allowedBashLiterals = /* @__PURE__ */ new Set();
|
|
18393
18391
|
const allowedBashPrefixes = /* @__PURE__ */ new Set();
|
|
@@ -18662,11 +18660,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
18662
18660
|
});
|
|
18663
18661
|
},
|
|
18664
18662
|
onIssue: async (params) => {
|
|
18665
|
-
const { issueRpc } = await import('./rpc-
|
|
18663
|
+
const { issueRpc } = await import('./rpc-xVRkdJOj.mjs');
|
|
18666
18664
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
18667
18665
|
},
|
|
18668
18666
|
onWorkflow: async (params) => {
|
|
18669
|
-
const { workflowRpc } = await import('./rpc-
|
|
18667
|
+
const { workflowRpc } = await import('./rpc-6vMdF_Bi.mjs');
|
|
18670
18668
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
18671
18669
|
},
|
|
18672
18670
|
onRipgrep: async (args, cwd) => {
|
|
@@ -19702,7 +19700,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
19702
19700
|
const PING_TIMEOUT_MS = 15e3;
|
|
19703
19701
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
19704
19702
|
const RECONNECT_JITTER_MS = 2500;
|
|
19705
|
-
const { WorkflowScheduler } = await import('./scheduler-
|
|
19703
|
+
const { WorkflowScheduler } = await import('./scheduler-BnGmCzUW.mjs');
|
|
19706
19704
|
const workflowScheduler = new WorkflowScheduler({
|
|
19707
19705
|
projectRoots: () => {
|
|
19708
19706
|
const dirs = /* @__PURE__ */ new Set();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-
|
|
1
|
+
import { j as resolveProjectRoot, D as listWorkflows, E as isWorkflowEnabled, F as workflowCrons, y as runWorkflow, G as cronMatches } from './run-fb578WlD.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-
|
|
57
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.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-
|
|
96
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.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-
|
|
185
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.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-
|
|
205
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.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-
|
|
238
|
+
const { connectAndGetMachine } = await import('./commands-D3GMer4U.mjs');
|
|
239
239
|
const { machine, server } = await connectAndGetMachine(machineId);
|
|
240
240
|
try {
|
|
241
241
|
const info = await machine.serveInfo();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as READ_ONLY_TOOLS, J as loadMachineContext, K as buildMachineInstructions, L as machineToolsForRole, M as buildMachineTools } from './run-
|
|
1
|
+
import { R as READ_ONLY_TOOLS, J as loadMachineContext, K as buildMachineInstructions, L as machineToolsForRole, M as buildMachineTools } from './run-fb578WlD.mjs';
|
|
2
2
|
import 'node:child_process';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svamp-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.271",
|
|
4
4
|
"description": "Svamp CLI — AI workspace daemon on Hypha Cloud",
|
|
5
5
|
"author": "Amun AI AB",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"scripts": {
|
|
21
21
|
"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",
|
|
22
22
|
"typecheck": "tsc --noEmit",
|
|
23
|
-
"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-backend-accounts.mjs && npx tsx test/test-backend-oauth.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
|
+
"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-backend-accounts.mjs && npx tsx test/test-backend-oauth.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-session-access-fallback.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",
|
|
24
24
|
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
25
25
|
"dev": "tsx src/cli.ts",
|
|
26
26
|
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|