svamp-cli 0.2.292 → 0.2.294
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/{adminCommands-DZDRGNg5.mjs → adminCommands-BvOl1ogj.mjs} +1 -1
- package/dist/{agentCommands-C8fAJdhs.mjs → agentCommands-DBhq3poO.mjs} +5 -5
- package/dist/{auth-BcmQVP7H.mjs → auth-DxXc8GRK.mjs} +1 -1
- package/dist/{cli-DqZdmrNJ.mjs → cli-DUhQE4VR.mjs} +69 -69
- package/dist/cli.mjs +2 -2
- package/dist/{commands-BKN7en3Q.mjs → commands-BMtOcsFy.mjs} +2 -2
- package/dist/{commands-CnQoA3D_.mjs → commands-BRpljbVW.mjs} +7 -7
- package/dist/{commands-b2t_sFjj.mjs → commands-Bhu8c-T2.mjs} +2 -2
- package/dist/{commands-B3Acrzyp.mjs → commands-CXtt4gFZ.mjs} +1 -1
- package/dist/{commands-CHMIhR_z.mjs → commands-Cy-ELixA.mjs} +2 -2
- package/dist/{commands-BvOBPesf.mjs → commands-ek96UVe7.mjs} +1 -1
- package/dist/{commands-DDYqDSA9.mjs → commands-nuiHr-wE.mjs} +1 -1
- package/dist/{commands-BV6eWyZm.mjs → commands-y5Apw2Oo.mjs} +2 -2
- package/dist/{fleet-BEjbxK8s.mjs → fleet-B35KRNAo.mjs} +1 -1
- package/dist/{frpc-F3PT4R-9.mjs → frpc-CIZdMm4X.mjs} +1 -1
- package/dist/{headlessCli-Bkx9H3P2.mjs → headlessCli-DqdUxa2L.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{notifyCommands-D2pL7Uve.mjs → notifyCommands-DivbcrVV.mjs} +1 -1
- package/dist/{package-8OT2tFxF.mjs → package-JHXhKJZM.mjs} +2 -2
- package/dist/{rpc-DZaN--oa.mjs → rpc-BVJH_qz8.mjs} +1 -1
- package/dist/{rpc-DpWUJeq7.mjs → rpc-D72NCsko.mjs} +1 -1
- package/dist/{run-BXpQa5EA.mjs → run-BwbphkUr.mjs} +98 -11
- package/dist/{run-MIZ1GTno.mjs → run-DjqxRj5M.mjs} +1 -1
- package/dist/{scheduler-iPV9ceRR.mjs → scheduler-CxzG0qJ5.mjs} +1 -1
- package/dist/{serveCommands-Bzzb-Cg2.mjs → serveCommands-BUGF0d3j.mjs} +5 -5
- package/dist/{sideband-mqmkDL0V.mjs → sideband-CbnNp9Q6.mjs} +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as connectToHypha, O as computeCollectionConfigUpdate, P as SYSTEM_COLLECTION_CONFIG } from './run-
|
|
1
|
+
import { c as connectToHypha, O as computeCollectionConfigUpdate, P as SYSTEM_COLLECTION_CONFIG } from './run-BwbphkUr.mjs';
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
@@ -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-BwbphkUr.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-BwbphkUr.mjs').then(function (n) { return n.au; });
|
|
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-CXtt4gFZ.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-CXtt4gFZ.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-CXtt4gFZ.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 { a5 as clearStopMarker, a6 as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-
|
|
1
|
+
import { a5 as clearStopMarker, a6 as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-BwbphkUr.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-BwbphkUr.mjs').then(function (n) { return n.aq; });
|
|
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-BwbphkUr.mjs').then(function (n) { return n.aB; });
|
|
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-BRpljbVW.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-BUGF0d3j.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-Bhu8c-T2.mjs');
|
|
377
377
|
let machineId;
|
|
378
378
|
const processArgs = args.slice(1);
|
|
379
379
|
const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
|
|
@@ -387,26 +387,26 @@ async function main() {
|
|
|
387
387
|
}), machineId);
|
|
388
388
|
process.exit(0);
|
|
389
389
|
} else if (subcommand === "outpost") {
|
|
390
|
-
const { outpostCommand } = await import('./commands-
|
|
390
|
+
const { outpostCommand } = await import('./commands-BMtOcsFy.mjs');
|
|
391
391
|
await outpostCommand(args.slice(1));
|
|
392
392
|
process.exit(0);
|
|
393
393
|
} else if (subcommand === "issue" || subcommand === "issues") {
|
|
394
|
-
const { issueCommand } = await import('./commands-
|
|
394
|
+
const { issueCommand } = await import('./commands-y5Apw2Oo.mjs');
|
|
395
395
|
await issueCommand(args.slice(1));
|
|
396
396
|
await flushAndExit(0);
|
|
397
397
|
} else if (subcommand === "workflow" || subcommand === "workflows") {
|
|
398
|
-
const { workflowCommand } = await import('./commands-
|
|
398
|
+
const { workflowCommand } = await import('./commands-nuiHr-wE.mjs');
|
|
399
399
|
await workflowCommand(args.slice(1));
|
|
400
400
|
await flushAndExit(0);
|
|
401
401
|
} else if (subcommand === "wise-agent" || subcommand === "wise") {
|
|
402
402
|
await handleWiseAgentCommand(args.slice(1));
|
|
403
403
|
process.exit(0);
|
|
404
404
|
} else if (subcommand === "feature" || subcommand === "crew") {
|
|
405
|
-
const { crewCommand } = await import('./commands-
|
|
405
|
+
const { crewCommand } = await import('./commands-Cy-ELixA.mjs');
|
|
406
406
|
await crewCommand(args.slice(1));
|
|
407
407
|
process.exit(0);
|
|
408
408
|
} else if (subcommand === "notify") {
|
|
409
|
-
const { notifyUser } = await import('./notifyCommands-
|
|
409
|
+
const { notifyUser } = await import('./notifyCommands-DivbcrVV.mjs');
|
|
410
410
|
const rest = args.slice(1);
|
|
411
411
|
let email;
|
|
412
412
|
const o = {};
|
|
@@ -423,7 +423,7 @@ async function main() {
|
|
|
423
423
|
} else if (subcommand === "admin") {
|
|
424
424
|
const adminSub = args[1];
|
|
425
425
|
if (adminSub === "set-collection-config") {
|
|
426
|
-
const { setCollectionConfig } = await import('./adminCommands-
|
|
426
|
+
const { setCollectionConfig } = await import('./adminCommands-BvOl1ogj.mjs');
|
|
427
427
|
const rest = args.slice(2);
|
|
428
428
|
let alias;
|
|
429
429
|
let configJson;
|
|
@@ -433,10 +433,10 @@ async function main() {
|
|
|
433
433
|
}
|
|
434
434
|
await setCollectionConfig(alias, configJson);
|
|
435
435
|
} else if (adminSub === "create-system-collections") {
|
|
436
|
-
const { createSystemCollections } = await import('./adminCommands-
|
|
436
|
+
const { createSystemCollections } = await import('./adminCommands-BvOl1ogj.mjs');
|
|
437
437
|
await createSystemCollections();
|
|
438
438
|
} else if (adminSub === "migrate-collection-children") {
|
|
439
|
-
const { migrateCollectionChildren } = await import('./adminCommands-
|
|
439
|
+
const { migrateCollectionChildren } = await import('./adminCommands-BvOl1ogj.mjs');
|
|
440
440
|
const rest = args.slice(2).filter((a) => !a.startsWith("-"));
|
|
441
441
|
await migrateCollectionChildren(rest[0], rest[1]);
|
|
442
442
|
} else {
|
|
@@ -444,7 +444,7 @@ async function main() {
|
|
|
444
444
|
}
|
|
445
445
|
process.exit(0);
|
|
446
446
|
} else if (subcommand === "events") {
|
|
447
|
-
const { listEvents, ackEvent } = await import('./notifyCommands-
|
|
447
|
+
const { listEvents, ackEvent } = await import('./notifyCommands-DivbcrVV.mjs');
|
|
448
448
|
const sub = args[1];
|
|
449
449
|
const rest = args.slice(2);
|
|
450
450
|
let email;
|
|
@@ -465,7 +465,7 @@ async function main() {
|
|
|
465
465
|
} else if (!subcommand || subcommand === "start") {
|
|
466
466
|
await handleInteractiveCommand();
|
|
467
467
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
468
|
-
const pkg = await import('./package-
|
|
468
|
+
const pkg = await import('./package-JHXhKJZM.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
469
469
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
470
470
|
} else {
|
|
471
471
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -474,7 +474,7 @@ async function main() {
|
|
|
474
474
|
}
|
|
475
475
|
}
|
|
476
476
|
async function handleInteractiveCommand() {
|
|
477
|
-
const { runInteractive } = await import('./run-
|
|
477
|
+
const { runInteractive } = await import('./run-DjqxRj5M.mjs');
|
|
478
478
|
const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
|
|
479
479
|
let directory = process.cwd();
|
|
480
480
|
let resumeSessionId;
|
|
@@ -519,7 +519,7 @@ async function handleAgentCommand() {
|
|
|
519
519
|
return;
|
|
520
520
|
}
|
|
521
521
|
if (agentArgs[0] === "list") {
|
|
522
|
-
const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-
|
|
522
|
+
const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ax; });
|
|
523
523
|
console.log("Known agents:");
|
|
524
524
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
525
525
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
|
|
@@ -531,7 +531,7 @@ async function handleAgentCommand() {
|
|
|
531
531
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
532
532
|
return;
|
|
533
533
|
}
|
|
534
|
-
const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-
|
|
534
|
+
const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ax; });
|
|
535
535
|
let cwd = process.cwd();
|
|
536
536
|
const filteredArgs = [];
|
|
537
537
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -555,12 +555,12 @@ async function handleAgentCommand() {
|
|
|
555
555
|
console.log(`Starting ${config.agentName} agent in ${cwd}...`);
|
|
556
556
|
let backend;
|
|
557
557
|
if (KNOWN_CODEX_AGENTS[config.agentName]) {
|
|
558
|
-
const { CodexAppServerBackend } = await import('./run-
|
|
558
|
+
const { CodexAppServerBackend } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ay; });
|
|
559
559
|
backend = new CodexAppServerBackend({ cwd, log: logFn });
|
|
560
560
|
} else {
|
|
561
|
-
const { AcpBackend } = await import('./run-
|
|
562
|
-
const { GeminiTransport } = await import('./run-
|
|
563
|
-
const { DefaultTransport } = await import('./run-
|
|
561
|
+
const { AcpBackend } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.aw; });
|
|
562
|
+
const { GeminiTransport } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.az; });
|
|
563
|
+
const { DefaultTransport } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.av; });
|
|
564
564
|
const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
|
|
565
565
|
backend = new AcpBackend({
|
|
566
566
|
agentName: config.agentName,
|
|
@@ -687,7 +687,7 @@ async function handleSessionCommand() {
|
|
|
687
687
|
process.exit(1);
|
|
688
688
|
}
|
|
689
689
|
}
|
|
690
|
-
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-
|
|
690
|
+
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-CXtt4gFZ.mjs');
|
|
691
691
|
const parseFlagStr = (flag, shortFlag) => {
|
|
692
692
|
for (let i = 1; i < sessionArgs.length; i++) {
|
|
693
693
|
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
@@ -755,7 +755,7 @@ async function handleSessionCommand() {
|
|
|
755
755
|
allowDomain.push(sessionArgs[++i]);
|
|
756
756
|
}
|
|
757
757
|
}
|
|
758
|
-
const { parseShareArg } = await import('./commands-
|
|
758
|
+
const { parseShareArg } = await import('./commands-CXtt4gFZ.mjs');
|
|
759
759
|
const shareEntries = share.map((s) => parseShareArg(s));
|
|
760
760
|
await sessionSpawn(agent, dir, targetMachineId, {
|
|
761
761
|
message,
|
|
@@ -845,7 +845,7 @@ async function handleSessionCommand() {
|
|
|
845
845
|
console.error(" Rewinds history: rewrites the message + drops everything after it, then restarts Claude.");
|
|
846
846
|
process.exit(1);
|
|
847
847
|
}
|
|
848
|
-
const { sessionEditMessage } = await import('./commands-
|
|
848
|
+
const { sessionEditMessage } = await import('./commands-CXtt4gFZ.mjs');
|
|
849
849
|
await sessionEditMessage(sessionArgs[1], sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
850
850
|
} else if (sessionSubcommand === "refine") {
|
|
851
851
|
if (!sessionArgs[1] || !sessionArgs[2]) {
|
|
@@ -853,7 +853,7 @@ async function handleSessionCommand() {
|
|
|
853
853
|
console.error(" Asks the agent to revise its latest reply in place (no extra round).");
|
|
854
854
|
process.exit(1);
|
|
855
855
|
}
|
|
856
|
-
const { sessionRefineLastReply } = await import('./commands-
|
|
856
|
+
const { sessionRefineLastReply } = await import('./commands-CXtt4gFZ.mjs');
|
|
857
857
|
await sessionRefineLastReply(sessionArgs[1], sessionArgs[2], targetMachineId);
|
|
858
858
|
} else if (sessionSubcommand === "undo-edit" || sessionSubcommand === "undo") {
|
|
859
859
|
if (!sessionArgs[1]) {
|
|
@@ -861,7 +861,7 @@ async function handleSessionCommand() {
|
|
|
861
861
|
console.error(" Reverts the most recent edit/refine, restoring the pre-edit history.");
|
|
862
862
|
process.exit(1);
|
|
863
863
|
}
|
|
864
|
-
const { sessionUndoEdit } = await import('./commands-
|
|
864
|
+
const { sessionUndoEdit } = await import('./commands-CXtt4gFZ.mjs');
|
|
865
865
|
await sessionUndoEdit(sessionArgs[1], targetMachineId);
|
|
866
866
|
} else if (sessionSubcommand === "query") {
|
|
867
867
|
const dir = sessionArgs[1];
|
|
@@ -871,7 +871,7 @@ async function handleSessionCommand() {
|
|
|
871
871
|
console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
|
|
872
872
|
process.exit(1);
|
|
873
873
|
}
|
|
874
|
-
const { sessionQuery } = await import('./commands-
|
|
874
|
+
const { sessionQuery } = await import('./commands-CXtt4gFZ.mjs');
|
|
875
875
|
await sessionQuery(dir, prompt, targetMachineId, {
|
|
876
876
|
timeout: parseFlagInt("--timeout"),
|
|
877
877
|
json: hasFlag("--json"),
|
|
@@ -904,7 +904,7 @@ async function handleSessionCommand() {
|
|
|
904
904
|
console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
|
|
905
905
|
process.exit(1);
|
|
906
906
|
}
|
|
907
|
-
const { sessionApprove } = await import('./commands-
|
|
907
|
+
const { sessionApprove } = await import('./commands-CXtt4gFZ.mjs');
|
|
908
908
|
const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
909
909
|
await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
|
|
910
910
|
json: hasFlag("--json")
|
|
@@ -914,7 +914,7 @@ async function handleSessionCommand() {
|
|
|
914
914
|
console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
|
|
915
915
|
process.exit(1);
|
|
916
916
|
}
|
|
917
|
-
const { sessionDeny } = await import('./commands-
|
|
917
|
+
const { sessionDeny } = await import('./commands-CXtt4gFZ.mjs');
|
|
918
918
|
const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
919
919
|
await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
|
|
920
920
|
json: hasFlag("--json")
|
|
@@ -966,7 +966,7 @@ async function handleSessionCommand() {
|
|
|
966
966
|
console.error("Usage: svamp session set-title <title>");
|
|
967
967
|
process.exit(1);
|
|
968
968
|
}
|
|
969
|
-
const { sessionSetTitle } = await import('./agentCommands-
|
|
969
|
+
const { sessionSetTitle } = await import('./agentCommands-DBhq3poO.mjs');
|
|
970
970
|
await sessionSetTitle(title);
|
|
971
971
|
} else if (sessionSubcommand === "set-project-description" || sessionSubcommand === "set-project") {
|
|
972
972
|
const desc = sessionArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
|
|
@@ -974,7 +974,7 @@ async function handleSessionCommand() {
|
|
|
974
974
|
console.error("Usage: svamp session set-project-description <text>");
|
|
975
975
|
process.exit(1);
|
|
976
976
|
}
|
|
977
|
-
const { sessionSetProjectDescription } = await import('./agentCommands-
|
|
977
|
+
const { sessionSetProjectDescription } = await import('./agentCommands-DBhq3poO.mjs');
|
|
978
978
|
await sessionSetProjectDescription(desc);
|
|
979
979
|
} else if (sessionSubcommand === "set-link") {
|
|
980
980
|
const url = sessionArgs[1];
|
|
@@ -983,11 +983,11 @@ async function handleSessionCommand() {
|
|
|
983
983
|
process.exit(1);
|
|
984
984
|
}
|
|
985
985
|
const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
986
|
-
const { sessionSetLink } = await import('./agentCommands-
|
|
986
|
+
const { sessionSetLink } = await import('./agentCommands-DBhq3poO.mjs');
|
|
987
987
|
await sessionSetLink(url, label);
|
|
988
988
|
} else if (sessionSubcommand === "link") {
|
|
989
989
|
const op = sessionArgs[1];
|
|
990
|
-
const lm = await import('./agentCommands-
|
|
990
|
+
const lm = await import('./agentCommands-DBhq3poO.mjs');
|
|
991
991
|
if (op === "add") {
|
|
992
992
|
const url = sessionArgs[2];
|
|
993
993
|
if (!url || url.startsWith("--")) {
|
|
@@ -1022,7 +1022,7 @@ async function handleSessionCommand() {
|
|
|
1022
1022
|
process.exit(1);
|
|
1023
1023
|
}
|
|
1024
1024
|
const level = parseFlagStr("--level") || "info";
|
|
1025
|
-
const { sessionNotify } = await import('./agentCommands-
|
|
1025
|
+
const { sessionNotify } = await import('./agentCommands-DBhq3poO.mjs');
|
|
1026
1026
|
await sessionNotify(message, level);
|
|
1027
1027
|
} else if (sessionSubcommand === "broadcast") {
|
|
1028
1028
|
const action = sessionArgs[1];
|
|
@@ -1030,7 +1030,7 @@ async function handleSessionCommand() {
|
|
|
1030
1030
|
console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
|
|
1031
1031
|
process.exit(1);
|
|
1032
1032
|
}
|
|
1033
|
-
const { sessionBroadcast } = await import('./agentCommands-
|
|
1033
|
+
const { sessionBroadcast } = await import('./agentCommands-DBhq3poO.mjs');
|
|
1034
1034
|
await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
|
|
1035
1035
|
} else if (sessionSubcommand === "inbox") {
|
|
1036
1036
|
const inboxSubcmd = sessionArgs[1];
|
|
@@ -1041,7 +1041,7 @@ async function handleSessionCommand() {
|
|
|
1041
1041
|
process.exit(1);
|
|
1042
1042
|
}
|
|
1043
1043
|
if (agentSessionId) {
|
|
1044
|
-
const { inboxSend } = await import('./agentCommands-
|
|
1044
|
+
const { inboxSend } = await import('./agentCommands-DBhq3poO.mjs');
|
|
1045
1045
|
await inboxSend(sessionArgs[2], {
|
|
1046
1046
|
body: sessionArgs[3],
|
|
1047
1047
|
subject: parseFlagStr("--subject"),
|
|
@@ -1056,7 +1056,7 @@ async function handleSessionCommand() {
|
|
|
1056
1056
|
}
|
|
1057
1057
|
} else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
|
|
1058
1058
|
if (agentSessionId && !sessionArgs[2]) {
|
|
1059
|
-
const { inboxList } = await import('./agentCommands-
|
|
1059
|
+
const { inboxList } = await import('./agentCommands-DBhq3poO.mjs');
|
|
1060
1060
|
await inboxList({
|
|
1061
1061
|
unread: hasFlag("--unread"),
|
|
1062
1062
|
limit: parseFlagInt("--limit"),
|
|
@@ -1078,7 +1078,7 @@ async function handleSessionCommand() {
|
|
|
1078
1078
|
process.exit(1);
|
|
1079
1079
|
}
|
|
1080
1080
|
if (agentSessionId && !sessionArgs[3]) {
|
|
1081
|
-
const { inboxList } = await import('./agentCommands-
|
|
1081
|
+
const { inboxList } = await import('./agentCommands-DBhq3poO.mjs');
|
|
1082
1082
|
await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
|
|
1083
1083
|
} else if (sessionArgs[3]) {
|
|
1084
1084
|
await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
@@ -1088,7 +1088,7 @@ async function handleSessionCommand() {
|
|
|
1088
1088
|
}
|
|
1089
1089
|
} else if (inboxSubcmd === "reply") {
|
|
1090
1090
|
if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
|
|
1091
|
-
const { inboxReply } = await import('./agentCommands-
|
|
1091
|
+
const { inboxReply } = await import('./agentCommands-DBhq3poO.mjs');
|
|
1092
1092
|
await inboxReply(sessionArgs[2], sessionArgs[3]);
|
|
1093
1093
|
} else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
|
|
1094
1094
|
await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
|
|
@@ -1126,7 +1126,7 @@ async function handleMachineCommand() {
|
|
|
1126
1126
|
return;
|
|
1127
1127
|
}
|
|
1128
1128
|
if (machineSubcommand === "share") {
|
|
1129
|
-
const { machineShare } = await import('./commands-
|
|
1129
|
+
const { machineShare } = await import('./commands-CXtt4gFZ.mjs');
|
|
1130
1130
|
let machineId;
|
|
1131
1131
|
const shareArgs = [];
|
|
1132
1132
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
@@ -1177,14 +1177,14 @@ async function handleMachineCommand() {
|
|
|
1177
1177
|
process.exit(1);
|
|
1178
1178
|
}
|
|
1179
1179
|
if (all) {
|
|
1180
|
-
const { fleetExec } = await import('./fleet-
|
|
1180
|
+
const { fleetExec } = await import('./fleet-B35KRNAo.mjs');
|
|
1181
1181
|
await fleetExec(command, { cwd });
|
|
1182
1182
|
} else {
|
|
1183
|
-
const { machineExec } = await import('./commands-
|
|
1183
|
+
const { machineExec } = await import('./commands-CXtt4gFZ.mjs');
|
|
1184
1184
|
await machineExec(machineId, command, cwd);
|
|
1185
1185
|
}
|
|
1186
1186
|
} else if (machineSubcommand === "info") {
|
|
1187
|
-
const { machineInfo } = await import('./commands-
|
|
1187
|
+
const { machineInfo } = await import('./commands-CXtt4gFZ.mjs');
|
|
1188
1188
|
let machineId;
|
|
1189
1189
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
1190
1190
|
if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
|
|
@@ -1204,10 +1204,10 @@ async function handleMachineCommand() {
|
|
|
1204
1204
|
level = machineArgs[++i];
|
|
1205
1205
|
}
|
|
1206
1206
|
}
|
|
1207
|
-
const { machineNotify } = await import('./agentCommands-
|
|
1207
|
+
const { machineNotify } = await import('./agentCommands-DBhq3poO.mjs');
|
|
1208
1208
|
await machineNotify(message, level);
|
|
1209
1209
|
} else if (machineSubcommand === "ls") {
|
|
1210
|
-
const { machineLs } = await import('./commands-
|
|
1210
|
+
const { machineLs } = await import('./commands-CXtt4gFZ.mjs');
|
|
1211
1211
|
let machineId;
|
|
1212
1212
|
let showHidden = false;
|
|
1213
1213
|
let path;
|
|
@@ -1266,20 +1266,20 @@ Examples:
|
|
|
1266
1266
|
};
|
|
1267
1267
|
const hasFlag = (name) => fleetArgs.includes(`--${name}`);
|
|
1268
1268
|
if (sub === "status") {
|
|
1269
|
-
const { fleetStatus } = await import('./fleet-
|
|
1269
|
+
const { fleetStatus } = await import('./fleet-B35KRNAo.mjs');
|
|
1270
1270
|
await fleetStatus();
|
|
1271
1271
|
} else if (sub === "upgrade-claude") {
|
|
1272
|
-
const { fleetUpgradeClaude } = await import('./fleet-
|
|
1272
|
+
const { fleetUpgradeClaude } = await import('./fleet-B35KRNAo.mjs');
|
|
1273
1273
|
await fleetUpgradeClaude({ version: flag("version", "-v") });
|
|
1274
1274
|
} else if (sub === "upgrade-svamp") {
|
|
1275
|
-
const { fleetUpgradeSvamp } = await import('./fleet-
|
|
1275
|
+
const { fleetUpgradeSvamp } = await import('./fleet-B35KRNAo.mjs');
|
|
1276
1276
|
await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self"), force: hasFlag("force") });
|
|
1277
1277
|
} else if (sub === "daemon-restart") {
|
|
1278
|
-
const { fleetDaemonRestart } = await import('./fleet-
|
|
1278
|
+
const { fleetDaemonRestart } = await import('./fleet-B35KRNAo.mjs');
|
|
1279
1279
|
await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
|
|
1280
1280
|
} else if (sub === "push-skill") {
|
|
1281
1281
|
const name = fleetArgs[1];
|
|
1282
|
-
const { fleetPushSkill } = await import('./fleet-
|
|
1282
|
+
const { fleetPushSkill } = await import('./fleet-B35KRNAo.mjs');
|
|
1283
1283
|
await fleetPushSkill(name);
|
|
1284
1284
|
} else {
|
|
1285
1285
|
console.error(`Unknown fleet subcommand: ${sub}`);
|
|
@@ -1295,7 +1295,7 @@ async function handleSkillsCommand() {
|
|
|
1295
1295
|
await printSkillsHelp();
|
|
1296
1296
|
return;
|
|
1297
1297
|
}
|
|
1298
|
-
const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-
|
|
1298
|
+
const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-ek96UVe7.mjs');
|
|
1299
1299
|
if (skillsSubcommand === "find" || skillsSubcommand === "search") {
|
|
1300
1300
|
const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
|
|
1301
1301
|
if (!query) {
|
|
@@ -1342,7 +1342,7 @@ async function loginToHypha() {
|
|
|
1342
1342
|
process.exit(1);
|
|
1343
1343
|
}
|
|
1344
1344
|
const anchor = anchorArg.replace(/\/+$/, "");
|
|
1345
|
-
const { loadInstanceConfig } = await import('./run-
|
|
1345
|
+
const { loadInstanceConfig } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.aq; });
|
|
1346
1346
|
let cfg = null;
|
|
1347
1347
|
try {
|
|
1348
1348
|
cfg = await loadInstanceConfig({ anchor, force: true });
|
|
@@ -1453,7 +1453,7 @@ async function logoutFromHypha() {
|
|
|
1453
1453
|
} catch {
|
|
1454
1454
|
}
|
|
1455
1455
|
try {
|
|
1456
|
-
const { clearInstanceConfigCache } = await import('./run-
|
|
1456
|
+
const { clearInstanceConfigCache } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.aq; });
|
|
1457
1457
|
clearInstanceConfigCache();
|
|
1458
1458
|
} catch {
|
|
1459
1459
|
}
|
|
@@ -1795,7 +1795,7 @@ async function applyClaudeAuthFlags(argv) {
|
|
|
1795
1795
|
"--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
|
|
1796
1796
|
);
|
|
1797
1797
|
}
|
|
1798
|
-
const mod = await import('./run-
|
|
1798
|
+
const mod = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ar; });
|
|
1799
1799
|
if (hasHypha) {
|
|
1800
1800
|
let url;
|
|
1801
1801
|
const hyphaIdx = argv.indexOf("--use-hypha-proxy");
|
|
@@ -1849,7 +1849,7 @@ async function applyDaemonShareFlag(argv) {
|
|
|
1849
1849
|
}
|
|
1850
1850
|
}
|
|
1851
1851
|
if (collected.length === 0) return;
|
|
1852
|
-
const { updateEnvFile } = await import('./run-
|
|
1852
|
+
const { updateEnvFile } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ar; });
|
|
1853
1853
|
const seen = /* @__PURE__ */ new Set();
|
|
1854
1854
|
const deduped = collected.filter((e) => {
|
|
1855
1855
|
const k = e.toLowerCase();
|
|
@@ -1882,7 +1882,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1882
1882
|
}
|
|
1883
1883
|
});
|
|
1884
1884
|
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(" ");
|
|
1885
|
-
const { wiseAskCli } = await import('./commands-
|
|
1885
|
+
const { wiseAskCli } = await import('./commands-CXtt4gFZ.mjs');
|
|
1886
1886
|
await wiseAskCli(machineId, message, sessionId, { json });
|
|
1887
1887
|
return;
|
|
1888
1888
|
}
|
|
@@ -1894,7 +1894,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1894
1894
|
}
|
|
1895
1895
|
return void 0;
|
|
1896
1896
|
};
|
|
1897
|
-
const { runWiseVoiceCli } = await import('./headlessCli-
|
|
1897
|
+
const { runWiseVoiceCli } = await import('./headlessCli-DqdUxa2L.mjs');
|
|
1898
1898
|
await runWiseVoiceCli({ voice: valueOf(["--voice"]), wakeKeywordPath: valueOf(["--wake"]), model: valueOf(["--model"]) });
|
|
1899
1899
|
return;
|
|
1900
1900
|
}
|
|
@@ -1912,7 +1912,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1912
1912
|
const mode = valueOf(["--mode"]);
|
|
1913
1913
|
const mission = valueOf(["--mission"]);
|
|
1914
1914
|
const url = rest.slice(1).find((a) => /^https?:\/\//.test(a)) || "";
|
|
1915
|
-
const { wiseJoinMeetingCli } = await import('./commands-
|
|
1915
|
+
const { wiseJoinMeetingCli } = await import('./commands-CXtt4gFZ.mjs');
|
|
1916
1916
|
await wiseJoinMeetingCli(machineId, url, sessionId, { json, mode, mission });
|
|
1917
1917
|
return;
|
|
1918
1918
|
}
|
|
@@ -1924,7 +1924,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1924
1924
|
}
|
|
1925
1925
|
return void 0;
|
|
1926
1926
|
};
|
|
1927
|
-
const { wiseLeaveMeetingCli } = await import('./commands-
|
|
1927
|
+
const { wiseLeaveMeetingCli } = await import('./commands-CXtt4gFZ.mjs');
|
|
1928
1928
|
await wiseLeaveMeetingCli(valueOf(["--machine", "-m"]), valueOf(["--session", "-s"]), { json: rest.includes("--json") });
|
|
1929
1929
|
return;
|
|
1930
1930
|
}
|
|
@@ -1948,7 +1948,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1948
1948
|
}
|
|
1949
1949
|
});
|
|
1950
1950
|
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(" ");
|
|
1951
|
-
const { wiseAnnounceCli } = await import('./commands-
|
|
1951
|
+
const { wiseAnnounceCli } = await import('./commands-CXtt4gFZ.mjs');
|
|
1952
1952
|
await wiseAnnounceCli(machineId, text, sessionId, { json });
|
|
1953
1953
|
return;
|
|
1954
1954
|
}
|
|
@@ -1960,7 +1960,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1960
1960
|
}
|
|
1961
1961
|
return void 0;
|
|
1962
1962
|
};
|
|
1963
|
-
const { wiseMeetingsCli } = await import('./commands-
|
|
1963
|
+
const { wiseMeetingsCli } = await import('./commands-CXtt4gFZ.mjs');
|
|
1964
1964
|
await wiseMeetingsCli(valueOf(["--machine", "-m"]), { json: rest.includes("--json") });
|
|
1965
1965
|
return;
|
|
1966
1966
|
}
|
|
@@ -2010,7 +2010,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
2010
2010
|
return;
|
|
2011
2011
|
}
|
|
2012
2012
|
const authArgs = rest.slice(1);
|
|
2013
|
-
const mod = await import('./auth-
|
|
2013
|
+
const mod = await import('./auth-DxXc8GRK.mjs');
|
|
2014
2014
|
let action;
|
|
2015
2015
|
try {
|
|
2016
2016
|
action = mod.parseWiseAgentAuthArgs(authArgs);
|
|
@@ -2020,7 +2020,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
2020
2020
|
return;
|
|
2021
2021
|
}
|
|
2022
2022
|
if (action) {
|
|
2023
|
-
const { updateEnvFile } = await import('./run-
|
|
2023
|
+
const { updateEnvFile } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ar; });
|
|
2024
2024
|
const updates = mod.buildWiseAgentEnvUpdates(action);
|
|
2025
2025
|
updateEnvFile(updates);
|
|
2026
2026
|
for (const [k, v] of Object.entries(updates)) {
|
|
@@ -2034,7 +2034,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
2034
2034
|
}
|
|
2035
2035
|
async function handleDaemonAuthCommand(argv) {
|
|
2036
2036
|
const sub = (argv[0] || "status").toLowerCase();
|
|
2037
|
-
const mod = await import('./run-
|
|
2037
|
+
const mod = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ar; });
|
|
2038
2038
|
if (sub === "--help" || sub === "-h" || sub === "help") {
|
|
2039
2039
|
console.log(`
|
|
2040
2040
|
svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
|
|
@@ -2108,8 +2108,8 @@ one step: --use-hypha-proxy / --use-claude-login / --anthropic-base-url URL --an
|
|
|
2108
2108
|
}
|
|
2109
2109
|
async function handleDaemonCodexAuthCommand(argv) {
|
|
2110
2110
|
const sub = (argv[0] || "status").toLowerCase();
|
|
2111
|
-
const { updateEnvFile } = await import('./run-
|
|
2112
|
-
const { resolveCodexProvider } = await import('./run-
|
|
2111
|
+
const { updateEnvFile } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ar; });
|
|
2112
|
+
const { resolveCodexProvider } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.as; });
|
|
2113
2113
|
const redact = (k) => k && k.length > 10 ? `${k.slice(0, 6)}\u2026${k.slice(-4)}` : k ? "***" : "(unset)";
|
|
2114
2114
|
if (sub === "--help" || sub === "-h" || sub === "help") {
|
|
2115
2115
|
console.log(`
|
|
@@ -2441,7 +2441,7 @@ Examples:
|
|
|
2441
2441
|
async function printSkillsHelp() {
|
|
2442
2442
|
let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
|
|
2443
2443
|
try {
|
|
2444
|
-
const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-
|
|
2444
|
+
const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.aA; });
|
|
2445
2445
|
browseUrl = `${getArtifactBaseUrl()}/${getSkillsCollectionName()}`;
|
|
2446
2446
|
} catch {
|
|
2447
2447
|
}
|
package/dist/cli.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { execSync } from 'node:child_process';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import { H as buildOutpostInstall, I as ChannelStore, J as DEFAULT_OUTPOST_DOWNLOAD_BASE, K as setupOutpostChannel } from './run-
|
|
5
|
+
import { H as buildOutpostInstall, I as ChannelStore, J as DEFAULT_OUTPOST_DOWNLOAD_BASE, K as setupOutpostChannel } from './run-BwbphkUr.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -187,7 +187,7 @@ async function outpostCommand(args) {
|
|
|
187
187
|
console.error('usage: svamp outpost exec [--machine <id>] "<command>"');
|
|
188
188
|
process.exit(1);
|
|
189
189
|
}
|
|
190
|
-
const { ChannelOutbox } = await import('./run-
|
|
190
|
+
const { ChannelOutbox } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.at; });
|
|
191
191
|
const outbox = new ChannelOutbox(projectDir());
|
|
192
192
|
const id = "x" + Date.now().toString(36);
|
|
193
193
|
outbox.append(cfg.channel, { to: "outpost", body: JSON.stringify({ type: "exec", id, cmd, target: target || "" }) });
|
|
@@ -60,7 +60,7 @@ async function serviceExpose(args) {
|
|
|
60
60
|
process.exit(1);
|
|
61
61
|
}
|
|
62
62
|
if (foreground) {
|
|
63
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
63
|
+
const { runFrpcTunnel } = await import('./frpc-CIZdMm4X.mjs');
|
|
64
64
|
await runFrpcTunnel(name, ports, void 0, {
|
|
65
65
|
group,
|
|
66
66
|
groupKey,
|
|
@@ -70,7 +70,7 @@ async function serviceExpose(args) {
|
|
|
70
70
|
});
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
73
|
+
const { connectAndGetMachine } = await import('./commands-CXtt4gFZ.mjs');
|
|
74
74
|
const { server, machine } = await connectAndGetMachine();
|
|
75
75
|
try {
|
|
76
76
|
const status = await machine.tunnelStart({
|
|
@@ -92,7 +92,7 @@ async function serviceExpose(args) {
|
|
|
92
92
|
console.log(` port ${port}: ${url}`);
|
|
93
93
|
}
|
|
94
94
|
if (process.env.SVAMP_SESSION_ID) {
|
|
95
|
-
const { autoAddSessionLink } = await import('./agentCommands-
|
|
95
|
+
const { autoAddSessionLink } = await import('./agentCommands-DBhq3poO.mjs');
|
|
96
96
|
let added = 0;
|
|
97
97
|
for (const [port, url] of urlEntries) {
|
|
98
98
|
const label = urlEntries.length > 1 ? `${name}:${port}` : name;
|
|
@@ -129,7 +129,7 @@ async function serviceServe(args) {
|
|
|
129
129
|
console.log(`Serving ${resolvedDir}`);
|
|
130
130
|
const servePort = 18080;
|
|
131
131
|
const http = await import('http');
|
|
132
|
-
const { serveStaticMount } = await import('./run-
|
|
132
|
+
const { serveStaticMount } = await import('./run-BwbphkUr.mjs').then(function (n) { return n.ap; });
|
|
133
133
|
const server = http.createServer((req, res) => {
|
|
134
134
|
const u = new URL(req.url || "/", "http://127.0.0.1");
|
|
135
135
|
let rel = u.pathname;
|
|
@@ -140,7 +140,7 @@ async function serviceServe(args) {
|
|
|
140
140
|
server.once("error", reject);
|
|
141
141
|
server.listen(servePort, "127.0.0.1", () => resolve());
|
|
142
142
|
});
|
|
143
|
-
const { runFrpcTunnel } = await import('./frpc-
|
|
143
|
+
const { runFrpcTunnel } = await import('./frpc-CIZdMm4X.mjs');
|
|
144
144
|
void server;
|
|
145
145
|
await runFrpcTunnel(name, [servePort]);
|
|
146
146
|
} catch (err) {
|
|
@@ -150,7 +150,7 @@ async function serviceServe(args) {
|
|
|
150
150
|
}
|
|
151
151
|
async function serviceList(_args) {
|
|
152
152
|
try {
|
|
153
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
153
|
+
const { connectAndGetMachine } = await import('./commands-CXtt4gFZ.mjs');
|
|
154
154
|
const { server, machine } = await connectAndGetMachine();
|
|
155
155
|
try {
|
|
156
156
|
const tunnels = await machine.tunnelList({});
|
|
@@ -190,7 +190,7 @@ async function serviceDelete(args) {
|
|
|
190
190
|
process.exit(1);
|
|
191
191
|
}
|
|
192
192
|
try {
|
|
193
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
193
|
+
const { connectAndGetMachine } = await import('./commands-CXtt4gFZ.mjs');
|
|
194
194
|
const { server, machine } = await connectAndGetMachine();
|
|
195
195
|
try {
|
|
196
196
|
await machine.tunnelStop({ name });
|
|
@@ -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-CXtt4gFZ.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-BwbphkUr.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, execFileSync } from 'node:child_process';
|
|
3
3
|
import { basename, resolve, join, isAbsolute } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import { a7 as formatHandle, a8 as normalizeAllowedUser, a9 as loadSecurityContextConfig, aa as resolveSecurityContext, ab as buildSecurityContextFromFlags, ac as mergeSecurityContexts, c as connectToHypha, ad as buildSessionShareUrl, ae as computeOutboundHop, i as shortId, af as registerAwaitingReply, ag as buildMachineShareUrl, ah as parseHandle, ai as handleMatchesMetadata } from './run-
|
|
5
|
+
import { a7 as formatHandle, a8 as normalizeAllowedUser, a9 as loadSecurityContextConfig, aa as resolveSecurityContext, ab as buildSecurityContextFromFlags, ac as mergeSecurityContexts, c as connectToHypha, ad as buildSessionShareUrl, ae as computeOutboundHop, i as shortId, af as registerAwaitingReply, ag as buildMachineShareUrl, ah as parseHandle, ai as handleMatchesMetadata } from './run-BwbphkUr.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -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-CXtt4gFZ.mjs';
|
|
4
4
|
import { execFileSync } 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-BwbphkUr.mjs';
|
|
6
6
|
import 'node:os';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -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 { W as parseFrontmatter, X as getSkillsServer, Y as getSkillsWorkspaceName, Z as getSkillsCollectionName, _ as fetchWithTimeout, $ as searchSkills, a0 as SKILLS_DIR, a1 as getSkillInfo, a2 as downloadSkillFile, a3 as listSkillFiles } from './run-
|
|
4
|
+
import { W as parseFrontmatter, X as getSkillsServer, Y as getSkillsWorkspaceName, Z as getSkillsCollectionName, _ as fetchWithTimeout, $ as searchSkills, a0 as SKILLS_DIR, a1 as getSkillInfo, a2 as downloadSkillFile, a3 as listSkillFiles } from './run-BwbphkUr.mjs';
|
|
5
5
|
import 'fs/promises';
|
|
6
6
|
import 'url';
|
|
7
7
|
import 'child_process';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import { j as resolveProjectRoot, M 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, M 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-BwbphkUr.mjs';
|
|
3
3
|
import 'os';
|
|
4
4
|
import 'fs/promises';
|
|
5
5
|
import 'fs';
|
|
@@ -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, L as summarize, n as addIssue } from './run-
|
|
4
|
+
import { f as flushAndExit } from './cli-DUhQE4VR.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, L as summarize, n as addIssue } from './run-BwbphkUr.mjs';
|
|
6
6
|
import './serviceManager-hlOVxkhW.mjs';
|
|
7
7
|
import 'os';
|
|
8
8
|
import 'fs/promises';
|
|
@@ -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-BwbphkUr.mjs';
|
|
5
5
|
import { PINNED_CLAUDE_CODE_VERSION } from './pinnedClaudeCode-BaMR97BE.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-BwbphkUr.mjs';
|
|
8
8
|
import 'fs/promises';
|
|
9
9
|
import 'url';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a4 as resolveModel, aj as describeMisconfiguration, ak as buildMachineDeps } from './run-
|
|
2
|
-
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-
|
|
1
|
+
import { a4 as resolveModel, aj as describeMisconfiguration, ak as buildMachineDeps } from './run-BwbphkUr.mjs';
|
|
2
|
+
import { handleRealtimeEvent, initMachineVoiceSession } from './sideband-CbnNp9Q6.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-BwbphkUr.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as connectToHypha, S as SharingNotificationSync, N as parseJwtEmail } from './run-
|
|
1
|
+
import { c as connectToHypha, S as SharingNotificationSync, N as parseJwtEmail } from './run-BwbphkUr.mjs';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { existsSync, readFileSync } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "svamp-cli";
|
|
2
|
-
var version = "0.2.
|
|
2
|
+
var version = "0.2.294";
|
|
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-codex-force-model.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-user-events.mjs && npx tsx test/test-migrate-children.mjs && npx tsx test/test-outpost-install.mjs && npx tsx test/test-outpost-setup.mjs && npx tsx test/test-inbox-reconcile.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-isolation-disable.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-compact-detect.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-restore-decision.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-stateless-dispatch-limiter.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-artifact-sync-pagination.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-codex-force-model.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-user-events.mjs && npx tsx test/test-migrate-children.mjs && npx tsx test/test-outpost-install.mjs && npx tsx test/test-outpost-setup.mjs && npx tsx test/test-inbox-reconcile.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-isolation-disable.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-compact-detect.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-restore-decision.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-stateless-dispatch-limiter.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-artifact-sync-pagination.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs && npx tsx test/test-codex-skills.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-BwbphkUr.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-BwbphkUr.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -2973,7 +2973,7 @@ Connection: close\r
|
|
|
2973
2973
|
const mount = this.mounts.get(mountName);
|
|
2974
2974
|
const subdomainOverride = mount?.access === "link" && mount.linkToken ? /* @__PURE__ */ new Map([[this.port, buildLinkSubdomain(subdomainSafe, mount.linkToken)]]) : void 0;
|
|
2975
2975
|
try {
|
|
2976
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
2976
|
+
const { FrpcTunnel } = await import('./frpc-CIZdMm4X.mjs');
|
|
2977
2977
|
let tunnel;
|
|
2978
2978
|
tunnel = new FrpcTunnel({
|
|
2979
2979
|
name: tunnelName,
|
|
@@ -5869,7 +5869,7 @@ async function registerMachineService(server, machineId, metadata, daemonState,
|
|
|
5869
5869
|
const tunnels = handlers.tunnels;
|
|
5870
5870
|
if (!tunnels) throw new Error("Tunnel management not available");
|
|
5871
5871
|
if (tunnels.has(params.name)) throw new Error(`Tunnel '${params.name}' already running`);
|
|
5872
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
5872
|
+
const { FrpcTunnel } = await import('./frpc-CIZdMm4X.mjs');
|
|
5873
5873
|
const tunnel = new FrpcTunnel({
|
|
5874
5874
|
name: params.name,
|
|
5875
5875
|
ports: params.ports,
|
|
@@ -6345,7 +6345,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6345
6345
|
}
|
|
6346
6346
|
const deps = buildSessionDeps(rpc, { cwd, ownerEmail: owner });
|
|
6347
6347
|
const sender = { name: context?.user?.email || context?.user?.id || "user", kind: "user", verified: true };
|
|
6348
|
-
const { toolsForRole } = await import('./sideband-
|
|
6348
|
+
const { toolsForRole } = await import('./sideband-CbnNp9Q6.mjs');
|
|
6349
6349
|
const r2 = await runWiseAgent({ message: params.message, sender, config: { tools: toolsForRole(role2) }, deps, transport, model: resolved.model });
|
|
6350
6350
|
return fmt(r2);
|
|
6351
6351
|
}
|
|
@@ -6450,7 +6450,7 @@ QUESTION: ${params.question || "Summarize this concisely."}` }
|
|
|
6450
6450
|
return { ok: false, call_id: callId, status: "busy", error: "channel is busy (too many concurrent requests) \u2014 retry shortly" };
|
|
6451
6451
|
}
|
|
6452
6452
|
const rendered = renderMessage(c, { sender: r.sender, body: { message: kwargs.message }, callId });
|
|
6453
|
-
const { queryCore } = await import('./commands-
|
|
6453
|
+
const { queryCore } = await import('./commands-CXtt4gFZ.mjs');
|
|
6454
6454
|
const timeout = c.reply?.timeout_sec || 120;
|
|
6455
6455
|
let result;
|
|
6456
6456
|
try {
|
|
@@ -15189,6 +15189,84 @@ async function fetchMarketplaceSkillVersion(name) {
|
|
|
15189
15189
|
return null;
|
|
15190
15190
|
}
|
|
15191
15191
|
}
|
|
15192
|
+
const CODEX_SKILLS_BEGIN = "<!-- BEGIN svamp-managed-skills (auto-generated by the svamp daemon \u2014 do not edit inside this block) -->";
|
|
15193
|
+
const CODEX_SKILLS_END = "<!-- END svamp-managed-skills -->";
|
|
15194
|
+
function codexHome() {
|
|
15195
|
+
return process.env.CODEX_HOME || join(os$1.homedir(), ".codex");
|
|
15196
|
+
}
|
|
15197
|
+
function readSkillMeta(skillDir) {
|
|
15198
|
+
try {
|
|
15199
|
+
const md = readFileSync$1(join(skillDir, "SKILL.md"), "utf-8");
|
|
15200
|
+
const m = md.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
15201
|
+
if (!m) return null;
|
|
15202
|
+
const field = (key) => {
|
|
15203
|
+
const line = m[1].split("\n").find((l) => new RegExp(`^\\s*${key}\\s*:`).test(l));
|
|
15204
|
+
return line ? line.split(":").slice(1).join(":").trim().replace(/^["']|["']$/g, "") : "";
|
|
15205
|
+
};
|
|
15206
|
+
const name = field("name");
|
|
15207
|
+
if (!name) return null;
|
|
15208
|
+
return { name, description: field("description") };
|
|
15209
|
+
} catch {
|
|
15210
|
+
return null;
|
|
15211
|
+
}
|
|
15212
|
+
}
|
|
15213
|
+
function syncSkillsToCodex(skillNames, logger, sourceDir = CLAUDE_SKILLS_DIR) {
|
|
15214
|
+
try {
|
|
15215
|
+
const home = codexHome();
|
|
15216
|
+
const skillsRoot = join(home, "skills");
|
|
15217
|
+
const rows = [];
|
|
15218
|
+
for (const name of skillNames) {
|
|
15219
|
+
const srcDir = join(sourceDir, name);
|
|
15220
|
+
const meta = readSkillMeta(srcDir);
|
|
15221
|
+
if (!meta) continue;
|
|
15222
|
+
try {
|
|
15223
|
+
const dstDir = join(skillsRoot, name);
|
|
15224
|
+
mkdirSync(dstDir, { recursive: true });
|
|
15225
|
+
copyFileSync(join(srcDir, "SKILL.md"), join(dstDir, "SKILL.md"));
|
|
15226
|
+
} catch {
|
|
15227
|
+
}
|
|
15228
|
+
const desc = meta.description ? ` \u2014 ${meta.description}` : "";
|
|
15229
|
+
rows.push(`- **${meta.name}**${desc}
|
|
15230
|
+
Full usage: \`${join(skillsRoot, name, "SKILL.md")}\``);
|
|
15231
|
+
}
|
|
15232
|
+
if (rows.length === 0) return;
|
|
15233
|
+
const managed = [
|
|
15234
|
+
CODEX_SKILLS_BEGIN,
|
|
15235
|
+
"## Platform skills (Svamp / Hypha Cloud)",
|
|
15236
|
+
"",
|
|
15237
|
+
"You are running inside a **Svamp** session on **Hypha Cloud**. The `svamp` and `hypha` CLIs are",
|
|
15238
|
+
"available on PATH, plus these packaged skills. READ the referenced SKILL.md before using one \u2014",
|
|
15239
|
+
"each documents the exact commands and workflow:",
|
|
15240
|
+
"",
|
|
15241
|
+
...rows,
|
|
15242
|
+
"",
|
|
15243
|
+
CODEX_SKILLS_END
|
|
15244
|
+
].join("\n");
|
|
15245
|
+
const agentsPath = join(home, "AGENTS.md");
|
|
15246
|
+
let existing = "";
|
|
15247
|
+
try {
|
|
15248
|
+
existing = readFileSync$1(agentsPath, "utf-8");
|
|
15249
|
+
} catch {
|
|
15250
|
+
}
|
|
15251
|
+
let next;
|
|
15252
|
+
const b = existing.indexOf(CODEX_SKILLS_BEGIN);
|
|
15253
|
+
const e = existing.indexOf(CODEX_SKILLS_END);
|
|
15254
|
+
if (b !== -1 && e !== -1 && e > b) {
|
|
15255
|
+
next = existing.slice(0, b) + managed + existing.slice(e + CODEX_SKILLS_END.length);
|
|
15256
|
+
} else if (existing.trim()) {
|
|
15257
|
+
next = existing.replace(/\s*$/, "") + "\n\n" + managed + "\n";
|
|
15258
|
+
} else {
|
|
15259
|
+
next = managed + "\n";
|
|
15260
|
+
}
|
|
15261
|
+
if (next !== existing) {
|
|
15262
|
+
mkdirSync(home, { recursive: true });
|
|
15263
|
+
writeFileSync(agentsPath, next, "utf-8");
|
|
15264
|
+
logger.log(`[skills] Synced ${rows.length} platform skill(s) to Codex (${agentsPath})`);
|
|
15265
|
+
}
|
|
15266
|
+
} catch (err) {
|
|
15267
|
+
logger.log(`[skills] Codex skill sync failed (non-fatal): ${err?.message || err}`);
|
|
15268
|
+
}
|
|
15269
|
+
}
|
|
15192
15270
|
async function ensureAutoInstalledSkills(logger) {
|
|
15193
15271
|
const tasks = [
|
|
15194
15272
|
{
|
|
@@ -15256,6 +15334,7 @@ async function ensureAutoInstalledSkills(logger) {
|
|
|
15256
15334
|
} catch (err) {
|
|
15257
15335
|
}
|
|
15258
15336
|
}
|
|
15337
|
+
syncSkillsToCodex(tasks.map((t) => t.name), logger);
|
|
15259
15338
|
}
|
|
15260
15339
|
function loadEnvFile(path) {
|
|
15261
15340
|
if (!existsSync$1(path)) return false;
|
|
@@ -16359,7 +16438,7 @@ async function startDaemon(options) {
|
|
|
16359
16438
|
try {
|
|
16360
16439
|
const dir = loadSessionIndex()[sessionId]?.directory;
|
|
16361
16440
|
if (!dir) return;
|
|
16362
|
-
const { reconcileServiceLinks } = await import('./agentCommands-
|
|
16441
|
+
const { reconcileServiceLinks } = await import('./agentCommands-DBhq3poO.mjs');
|
|
16363
16442
|
const configPath = getSvampConfigPath(dir, sessionId);
|
|
16364
16443
|
const config = readSvampConfig(configPath);
|
|
16365
16444
|
const entries = Array.from(urls.entries());
|
|
@@ -16377,7 +16456,7 @@ async function startDaemon(options) {
|
|
|
16377
16456
|
}
|
|
16378
16457
|
}
|
|
16379
16458
|
async function createExposedTunnel(spec) {
|
|
16380
|
-
const { FrpcTunnel } = await import('./frpc-
|
|
16459
|
+
const { FrpcTunnel } = await import('./frpc-CIZdMm4X.mjs');
|
|
16381
16460
|
const tunnel = new FrpcTunnel({
|
|
16382
16461
|
name: spec.name,
|
|
16383
16462
|
ports: spec.ports,
|
|
@@ -18593,11 +18672,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
18593
18672
|
});
|
|
18594
18673
|
},
|
|
18595
18674
|
onIssue: async (params) => {
|
|
18596
|
-
const { issueRpc } = await import('./rpc-
|
|
18675
|
+
const { issueRpc } = await import('./rpc-D72NCsko.mjs');
|
|
18597
18676
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
18598
18677
|
},
|
|
18599
18678
|
onWorkflow: async (params) => {
|
|
18600
|
-
const { workflowRpc } = await import('./rpc-
|
|
18679
|
+
const { workflowRpc } = await import('./rpc-BVJH_qz8.mjs');
|
|
18601
18680
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
18602
18681
|
},
|
|
18603
18682
|
onRipgrep: async (args, cwd) => {
|
|
@@ -19210,11 +19289,11 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19210
19289
|
});
|
|
19211
19290
|
},
|
|
19212
19291
|
onIssue: async (params) => {
|
|
19213
|
-
const { issueRpc } = await import('./rpc-
|
|
19292
|
+
const { issueRpc } = await import('./rpc-D72NCsko.mjs');
|
|
19214
19293
|
return issueRpc(params?.cwd || directory, params || {}, { notifySession: notifyIssueOwner, rekickLoopOwner });
|
|
19215
19294
|
},
|
|
19216
19295
|
onWorkflow: async (params) => {
|
|
19217
|
-
const { workflowRpc } = await import('./rpc-
|
|
19296
|
+
const { workflowRpc } = await import('./rpc-BVJH_qz8.mjs');
|
|
19218
19297
|
return workflowRpc(params?.cwd || directory, params || {});
|
|
19219
19298
|
},
|
|
19220
19299
|
onRipgrep: async (args, cwd) => {
|
|
@@ -19391,6 +19470,13 @@ ${capturedError}${buildClaudeErrorHint(capturedError)}`;
|
|
|
19391
19470
|
}
|
|
19392
19471
|
}
|
|
19393
19472
|
const codexModel = codexForcedModel() || options2.model || agentConfig?.default_model || provider.model || void 0;
|
|
19473
|
+
if (codexModel && (provider.apiBase || codexForcedModel())) {
|
|
19474
|
+
sessionMetadata.models = [{ code: codexModel, value: codexModel, description: "Configured on this machine" }];
|
|
19475
|
+
try {
|
|
19476
|
+
sessionService.updateMetadata(sessionMetadata);
|
|
19477
|
+
} catch {
|
|
19478
|
+
}
|
|
19479
|
+
}
|
|
19394
19480
|
const codexPerm = codexPermissionSettings(currentPermissionMode);
|
|
19395
19481
|
logger.log(`[Agent Session ${sessionId}] Codex backend: app-server (model=${codexModel ?? "default"}${provider.apiBase ? `, provider=${provider.apiBase}` : ""}${accountDesc ? `, account=${accountDesc}` : ""}, mode=${currentPermissionMode} \u2192 approval=${codexPerm.approvalPolicy}/sandbox=${codexPerm.sandbox})`);
|
|
19396
19482
|
if (acpResumeThreadId) logger.log(`[Agent Session ${sessionId}] Resuming Codex thread ${acpResumeThreadId} (restart recovery)`);
|
|
@@ -20334,7 +20420,7 @@ ${oracle.output.trim().slice(0, 500)}`, "\u{1F501} Continuing loop");
|
|
|
20334
20420
|
const PING_TIMEOUT_MS = 15e3;
|
|
20335
20421
|
const POST_RECONNECT_GRACE_MS = 2e4;
|
|
20336
20422
|
const RECONNECT_JITTER_MS = 2500;
|
|
20337
|
-
const { WorkflowScheduler } = await import('./scheduler-
|
|
20423
|
+
const { WorkflowScheduler } = await import('./scheduler-CxzG0qJ5.mjs');
|
|
20338
20424
|
const workflowScheduler = new WorkflowScheduler({
|
|
20339
20425
|
projectRoots: () => {
|
|
20340
20426
|
const dirs = /* @__PURE__ */ new Set();
|
|
@@ -20953,6 +21039,7 @@ var run = /*#__PURE__*/Object.freeze({
|
|
|
20953
21039
|
startDaemon: startDaemon,
|
|
20954
21040
|
stopDaemon: stopDaemon,
|
|
20955
21041
|
stopMarkerExists: stopMarkerExists,
|
|
21042
|
+
syncSkillsToCodex: syncSkillsToCodex,
|
|
20956
21043
|
writePendingRestart: writePendingRestart,
|
|
20957
21044
|
writeStopMarker: writeStopMarker
|
|
20958
21045
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { al as applyClaudeProxyEnv, am as composeSessionId, an as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ao as generateHookSettings } from './run-
|
|
1
|
+
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import { al as applyClaudeProxyEnv, am as composeSessionId, an as generateFriendlyName, c as connectToHypha, a as createSessionStore, r as registerMachineService, ao as generateHookSettings } from './run-BwbphkUr.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';
|
|
@@ -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-BwbphkUr.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-CXtt4gFZ.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-CXtt4gFZ.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-CXtt4gFZ.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-CXtt4gFZ.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-CXtt4gFZ.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, Q as loadMachineContext, T as buildMachineInstructions, U as machineToolsForRole, V as buildMachineTools } from './run-
|
|
1
|
+
import { R as READ_ONLY_TOOLS, Q as loadMachineContext, T as buildMachineInstructions, U as machineToolsForRole, V as buildMachineTools } from './run-BwbphkUr.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.294",
|
|
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-codex-force-model.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-user-events.mjs && npx tsx test/test-migrate-children.mjs && npx tsx test/test-outpost-install.mjs && npx tsx test/test-outpost-setup.mjs && npx tsx test/test-inbox-reconcile.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-isolation-disable.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-compact-detect.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-restore-decision.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-stateless-dispatch-limiter.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-artifact-sync-pagination.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-codex-force-model.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-user-events.mjs && npx tsx test/test-migrate-children.mjs && npx tsx test/test-outpost-install.mjs && npx tsx test/test-outpost-setup.mjs && npx tsx test/test-inbox-reconcile.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-isolation-disable.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-compact-detect.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-restore-decision.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-stateless-dispatch-limiter.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-artifact-sync-pagination.mjs && npx tsx test/test-graceful-restart.mjs && npx tsx test/test-flush-exit.mjs && npx tsx test/test-codex-skills.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",
|