svamp-cli 0.2.63 → 0.2.65
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-BH6CIqc7.mjs → agentCommands-CcvaE6am.mjs} +2 -2
- package/dist/cli.mjs +33 -33
- package/dist/{commands-CY-HbTVN.mjs → commands-CY0X_cdt.mjs} +3 -3
- package/dist/{commands-CEazgqvj.mjs → commands-CgirOjun.mjs} +1 -1
- package/dist/{commands-BFeHwsR-.mjs → commands-CjKzQm8Q.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/package-DHBXuNi1.mjs +63 -0
- package/dist/{run-DypcS01S.mjs → run-EPzdDXeY.mjs} +86 -11
- package/dist/{run-DB2WIjmZ.mjs → run-cSiQAr8c.mjs} +1 -1
- package/dist/{serveCommands-CtAX-CMI.mjs → serveCommands-sRps4L_A.mjs} +5 -5
- package/dist/{serveManager-G9PiLNKm.mjs → serveManager-pDviHaH8.mjs} +1 -1
- package/package.json +2 -2
- package/dist/package-QQovcM_B.mjs +0 -63
|
@@ -148,7 +148,7 @@ async function sessionBroadcast(action, args) {
|
|
|
148
148
|
console.log(`Broadcast sent: ${action}`);
|
|
149
149
|
}
|
|
150
150
|
async function connectToMachineService() {
|
|
151
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
151
|
+
const { connectAndGetMachine } = await import('./commands-CgirOjun.mjs');
|
|
152
152
|
return connectAndGetMachine();
|
|
153
153
|
}
|
|
154
154
|
async function inboxSend(targetSessionId, opts) {
|
|
@@ -165,7 +165,7 @@ async function inboxSend(targetSessionId, opts) {
|
|
|
165
165
|
}
|
|
166
166
|
const { server, machine } = await connectToMachineService();
|
|
167
167
|
try {
|
|
168
|
-
const { resolveSessionId } = await import('./commands-
|
|
168
|
+
const { resolveSessionId } = await import('./commands-CgirOjun.mjs');
|
|
169
169
|
const sessions = await machine.listSessions();
|
|
170
170
|
const match = resolveSessionId(sessions, targetSessionId);
|
|
171
171
|
const fullTargetId = match.sessionId;
|
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-
|
|
1
|
+
import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-EPzdDXeY.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -44,7 +44,7 @@ async function main() {
|
|
|
44
44
|
console.error(`svamp daemon restart: ${err.message || err}`);
|
|
45
45
|
process.exit(1);
|
|
46
46
|
}
|
|
47
|
-
const { restartDaemon } = await import('./run-
|
|
47
|
+
const { restartDaemon } = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.u; });
|
|
48
48
|
await restartDaemon();
|
|
49
49
|
process.exit(0);
|
|
50
50
|
}
|
|
@@ -280,7 +280,7 @@ async function main() {
|
|
|
280
280
|
console.error("svamp service: Service commands are not available in sandboxed sessions.");
|
|
281
281
|
process.exit(1);
|
|
282
282
|
}
|
|
283
|
-
const { handleServiceCommand } = await import('./commands-
|
|
283
|
+
const { handleServiceCommand } = await import('./commands-CY0X_cdt.mjs');
|
|
284
284
|
await handleServiceCommand();
|
|
285
285
|
} else if (subcommand === "serve") {
|
|
286
286
|
const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
|
|
@@ -288,7 +288,7 @@ async function main() {
|
|
|
288
288
|
console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
|
|
289
289
|
process.exit(1);
|
|
290
290
|
}
|
|
291
|
-
const { handleServeCommand } = await import('./serveCommands-
|
|
291
|
+
const { handleServeCommand } = await import('./serveCommands-sRps4L_A.mjs');
|
|
292
292
|
await handleServeCommand();
|
|
293
293
|
process.exit(0);
|
|
294
294
|
} else if (subcommand === "process" || subcommand === "proc") {
|
|
@@ -297,7 +297,7 @@ async function main() {
|
|
|
297
297
|
console.error("svamp process: Process commands are not available in sandboxed sessions.");
|
|
298
298
|
process.exit(1);
|
|
299
299
|
}
|
|
300
|
-
const { processCommand } = await import('./commands-
|
|
300
|
+
const { processCommand } = await import('./commands-CjKzQm8Q.mjs');
|
|
301
301
|
let machineId;
|
|
302
302
|
const processArgs = args.slice(1);
|
|
303
303
|
const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
|
|
@@ -315,7 +315,7 @@ async function main() {
|
|
|
315
315
|
} else if (!subcommand || subcommand === "start") {
|
|
316
316
|
await handleInteractiveCommand();
|
|
317
317
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
318
|
-
const pkg = await import('./package-
|
|
318
|
+
const pkg = await import('./package-DHBXuNi1.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
319
319
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
320
320
|
} else {
|
|
321
321
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -324,7 +324,7 @@ async function main() {
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
async function handleInteractiveCommand() {
|
|
327
|
-
const { runInteractive } = await import('./run-
|
|
327
|
+
const { runInteractive } = await import('./run-cSiQAr8c.mjs');
|
|
328
328
|
const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
|
|
329
329
|
let directory = process.cwd();
|
|
330
330
|
let resumeSessionId;
|
|
@@ -369,7 +369,7 @@ async function handleAgentCommand() {
|
|
|
369
369
|
return;
|
|
370
370
|
}
|
|
371
371
|
if (agentArgs[0] === "list") {
|
|
372
|
-
const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-
|
|
372
|
+
const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.p; });
|
|
373
373
|
console.log("Known agents:");
|
|
374
374
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
375
375
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
|
|
@@ -381,7 +381,7 @@ async function handleAgentCommand() {
|
|
|
381
381
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
382
382
|
return;
|
|
383
383
|
}
|
|
384
|
-
const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-
|
|
384
|
+
const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.p; });
|
|
385
385
|
let cwd = process.cwd();
|
|
386
386
|
const filteredArgs = [];
|
|
387
387
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -405,12 +405,12 @@ async function handleAgentCommand() {
|
|
|
405
405
|
console.log(`Starting ${config.agentName} agent in ${cwd}...`);
|
|
406
406
|
let backend;
|
|
407
407
|
if (KNOWN_MCP_AGENTS[config.agentName]) {
|
|
408
|
-
const { CodexMcpBackend } = await import('./run-
|
|
408
|
+
const { CodexMcpBackend } = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.q; });
|
|
409
409
|
backend = new CodexMcpBackend({ cwd, log: logFn });
|
|
410
410
|
} else {
|
|
411
|
-
const { AcpBackend } = await import('./run-
|
|
412
|
-
const { GeminiTransport } = await import('./run-
|
|
413
|
-
const { DefaultTransport } = await import('./run-
|
|
411
|
+
const { AcpBackend } = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.o; });
|
|
412
|
+
const { GeminiTransport } = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.G; });
|
|
413
|
+
const { DefaultTransport } = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.D; });
|
|
414
414
|
const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
|
|
415
415
|
backend = new AcpBackend({
|
|
416
416
|
agentName: config.agentName,
|
|
@@ -537,7 +537,7 @@ async function handleSessionCommand() {
|
|
|
537
537
|
process.exit(1);
|
|
538
538
|
}
|
|
539
539
|
}
|
|
540
|
-
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-
|
|
540
|
+
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-CgirOjun.mjs');
|
|
541
541
|
const parseFlagStr = (flag, shortFlag) => {
|
|
542
542
|
for (let i = 1; i < sessionArgs.length; i++) {
|
|
543
543
|
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
@@ -597,7 +597,7 @@ async function handleSessionCommand() {
|
|
|
597
597
|
allowDomain.push(sessionArgs[++i]);
|
|
598
598
|
}
|
|
599
599
|
}
|
|
600
|
-
const { parseShareArg } = await import('./commands-
|
|
600
|
+
const { parseShareArg } = await import('./commands-CgirOjun.mjs');
|
|
601
601
|
const shareEntries = share.map((s) => parseShareArg(s));
|
|
602
602
|
await sessionSpawn(agent, dir, targetMachineId, {
|
|
603
603
|
message,
|
|
@@ -683,7 +683,7 @@ async function handleSessionCommand() {
|
|
|
683
683
|
console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
|
|
684
684
|
process.exit(1);
|
|
685
685
|
}
|
|
686
|
-
const { sessionApprove } = await import('./commands-
|
|
686
|
+
const { sessionApprove } = await import('./commands-CgirOjun.mjs');
|
|
687
687
|
const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
688
688
|
await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
|
|
689
689
|
json: hasFlag("--json")
|
|
@@ -693,7 +693,7 @@ async function handleSessionCommand() {
|
|
|
693
693
|
console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
|
|
694
694
|
process.exit(1);
|
|
695
695
|
}
|
|
696
|
-
const { sessionDeny } = await import('./commands-
|
|
696
|
+
const { sessionDeny } = await import('./commands-CgirOjun.mjs');
|
|
697
697
|
const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
698
698
|
await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
|
|
699
699
|
json: hasFlag("--json")
|
|
@@ -729,7 +729,7 @@ async function handleSessionCommand() {
|
|
|
729
729
|
console.error("Usage: svamp session set-title <title>");
|
|
730
730
|
process.exit(1);
|
|
731
731
|
}
|
|
732
|
-
const { sessionSetTitle } = await import('./agentCommands-
|
|
732
|
+
const { sessionSetTitle } = await import('./agentCommands-CcvaE6am.mjs');
|
|
733
733
|
await sessionSetTitle(title);
|
|
734
734
|
} else if (sessionSubcommand === "set-link") {
|
|
735
735
|
const url = sessionArgs[1];
|
|
@@ -738,7 +738,7 @@ async function handleSessionCommand() {
|
|
|
738
738
|
process.exit(1);
|
|
739
739
|
}
|
|
740
740
|
const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
741
|
-
const { sessionSetLink } = await import('./agentCommands-
|
|
741
|
+
const { sessionSetLink } = await import('./agentCommands-CcvaE6am.mjs');
|
|
742
742
|
await sessionSetLink(url, label);
|
|
743
743
|
} else if (sessionSubcommand === "notify") {
|
|
744
744
|
const message = sessionArgs[1];
|
|
@@ -747,7 +747,7 @@ async function handleSessionCommand() {
|
|
|
747
747
|
process.exit(1);
|
|
748
748
|
}
|
|
749
749
|
const level = parseFlagStr("--level") || "info";
|
|
750
|
-
const { sessionNotify } = await import('./agentCommands-
|
|
750
|
+
const { sessionNotify } = await import('./agentCommands-CcvaE6am.mjs');
|
|
751
751
|
await sessionNotify(message, level);
|
|
752
752
|
} else if (sessionSubcommand === "broadcast") {
|
|
753
753
|
const action = sessionArgs[1];
|
|
@@ -755,7 +755,7 @@ async function handleSessionCommand() {
|
|
|
755
755
|
console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
|
|
756
756
|
process.exit(1);
|
|
757
757
|
}
|
|
758
|
-
const { sessionBroadcast } = await import('./agentCommands-
|
|
758
|
+
const { sessionBroadcast } = await import('./agentCommands-CcvaE6am.mjs');
|
|
759
759
|
await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
|
|
760
760
|
} else if (sessionSubcommand === "inbox") {
|
|
761
761
|
const inboxSubcmd = sessionArgs[1];
|
|
@@ -766,7 +766,7 @@ async function handleSessionCommand() {
|
|
|
766
766
|
process.exit(1);
|
|
767
767
|
}
|
|
768
768
|
if (agentSessionId) {
|
|
769
|
-
const { inboxSend } = await import('./agentCommands-
|
|
769
|
+
const { inboxSend } = await import('./agentCommands-CcvaE6am.mjs');
|
|
770
770
|
await inboxSend(sessionArgs[2], {
|
|
771
771
|
body: sessionArgs[3],
|
|
772
772
|
subject: parseFlagStr("--subject"),
|
|
@@ -781,7 +781,7 @@ async function handleSessionCommand() {
|
|
|
781
781
|
}
|
|
782
782
|
} else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
|
|
783
783
|
if (agentSessionId && !sessionArgs[2]) {
|
|
784
|
-
const { inboxList } = await import('./agentCommands-
|
|
784
|
+
const { inboxList } = await import('./agentCommands-CcvaE6am.mjs');
|
|
785
785
|
await inboxList({
|
|
786
786
|
unread: hasFlag("--unread"),
|
|
787
787
|
limit: parseFlagInt("--limit"),
|
|
@@ -803,7 +803,7 @@ async function handleSessionCommand() {
|
|
|
803
803
|
process.exit(1);
|
|
804
804
|
}
|
|
805
805
|
if (agentSessionId && !sessionArgs[3]) {
|
|
806
|
-
const { inboxList } = await import('./agentCommands-
|
|
806
|
+
const { inboxList } = await import('./agentCommands-CcvaE6am.mjs');
|
|
807
807
|
await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
|
|
808
808
|
} else if (sessionArgs[3]) {
|
|
809
809
|
await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
@@ -813,7 +813,7 @@ async function handleSessionCommand() {
|
|
|
813
813
|
}
|
|
814
814
|
} else if (inboxSubcmd === "reply") {
|
|
815
815
|
if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
|
|
816
|
-
const { inboxReply } = await import('./agentCommands-
|
|
816
|
+
const { inboxReply } = await import('./agentCommands-CcvaE6am.mjs');
|
|
817
817
|
await inboxReply(sessionArgs[2], sessionArgs[3]);
|
|
818
818
|
} else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
|
|
819
819
|
await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
|
|
@@ -849,7 +849,7 @@ async function handleMachineCommand() {
|
|
|
849
849
|
return;
|
|
850
850
|
}
|
|
851
851
|
if (machineSubcommand === "share") {
|
|
852
|
-
const { machineShare } = await import('./commands-
|
|
852
|
+
const { machineShare } = await import('./commands-CgirOjun.mjs');
|
|
853
853
|
let machineId;
|
|
854
854
|
const shareArgs = [];
|
|
855
855
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
@@ -879,7 +879,7 @@ async function handleMachineCommand() {
|
|
|
879
879
|
}
|
|
880
880
|
await machineShare(machineId, { add, remove, list, configPath, showConfig });
|
|
881
881
|
} else if (machineSubcommand === "exec") {
|
|
882
|
-
const { machineExec } = await import('./commands-
|
|
882
|
+
const { machineExec } = await import('./commands-CgirOjun.mjs');
|
|
883
883
|
let machineId;
|
|
884
884
|
let cwd;
|
|
885
885
|
const cmdParts = [];
|
|
@@ -899,7 +899,7 @@ async function handleMachineCommand() {
|
|
|
899
899
|
}
|
|
900
900
|
await machineExec(machineId, command, cwd);
|
|
901
901
|
} else if (machineSubcommand === "info") {
|
|
902
|
-
const { machineInfo } = await import('./commands-
|
|
902
|
+
const { machineInfo } = await import('./commands-CgirOjun.mjs');
|
|
903
903
|
let machineId;
|
|
904
904
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
905
905
|
if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
|
|
@@ -919,10 +919,10 @@ async function handleMachineCommand() {
|
|
|
919
919
|
level = machineArgs[++i];
|
|
920
920
|
}
|
|
921
921
|
}
|
|
922
|
-
const { machineNotify } = await import('./agentCommands-
|
|
922
|
+
const { machineNotify } = await import('./agentCommands-CcvaE6am.mjs');
|
|
923
923
|
await machineNotify(message, level);
|
|
924
924
|
} else if (machineSubcommand === "ls") {
|
|
925
|
-
const { machineLs } = await import('./commands-
|
|
925
|
+
const { machineLs } = await import('./commands-CgirOjun.mjs');
|
|
926
926
|
let machineId;
|
|
927
927
|
let showHidden = false;
|
|
928
928
|
let path;
|
|
@@ -1389,7 +1389,7 @@ async function applyClaudeAuthFlags(argv) {
|
|
|
1389
1389
|
"--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
|
|
1390
1390
|
);
|
|
1391
1391
|
}
|
|
1392
|
-
const mod = await import('./run-
|
|
1392
|
+
const mod = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.t; });
|
|
1393
1393
|
if (hasHypha) {
|
|
1394
1394
|
mod.setClaudeAuthHyphaProxy();
|
|
1395
1395
|
console.log("Claude auth configured: hypha-proxy (uses HYPHA_TOKEN live at each spawn).");
|
|
@@ -1427,7 +1427,7 @@ async function applyDaemonShareFlag(argv) {
|
|
|
1427
1427
|
}
|
|
1428
1428
|
}
|
|
1429
1429
|
if (collected.length === 0) return;
|
|
1430
|
-
const { updateEnvFile } = await import('./run-
|
|
1430
|
+
const { updateEnvFile } = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.t; });
|
|
1431
1431
|
const seen = /* @__PURE__ */ new Set();
|
|
1432
1432
|
const deduped = collected.filter((e) => {
|
|
1433
1433
|
const k = e.toLowerCase();
|
|
@@ -1440,7 +1440,7 @@ async function applyDaemonShareFlag(argv) {
|
|
|
1440
1440
|
}
|
|
1441
1441
|
async function handleDaemonAuthCommand(argv) {
|
|
1442
1442
|
const sub = (argv[0] || "status").toLowerCase();
|
|
1443
|
-
const mod = await import('./run-
|
|
1443
|
+
const mod = await import('./run-EPzdDXeY.mjs').then(function (n) { return n.t; });
|
|
1444
1444
|
if (sub === "--help" || sub === "-h" || sub === "help") {
|
|
1445
1445
|
console.log(`
|
|
1446
1446
|
svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
|
|
@@ -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-CgirOjun.mjs');
|
|
72
72
|
const { server, machine } = await connectAndGetMachine();
|
|
73
73
|
try {
|
|
74
74
|
const status = await machine.tunnelStart({
|
|
@@ -132,7 +132,7 @@ async function serviceServe(args) {
|
|
|
132
132
|
}
|
|
133
133
|
async function serviceList(_args) {
|
|
134
134
|
try {
|
|
135
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
135
|
+
const { connectAndGetMachine } = await import('./commands-CgirOjun.mjs');
|
|
136
136
|
const { server, machine } = await connectAndGetMachine();
|
|
137
137
|
try {
|
|
138
138
|
const tunnels = await machine.tunnelList({});
|
|
@@ -161,7 +161,7 @@ async function serviceDelete(args) {
|
|
|
161
161
|
process.exit(1);
|
|
162
162
|
}
|
|
163
163
|
try {
|
|
164
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
164
|
+
const { connectAndGetMachine } = await import('./commands-CgirOjun.mjs');
|
|
165
165
|
const { server, machine } = await connectAndGetMachine();
|
|
166
166
|
try {
|
|
167
167
|
await machine.tunnelStop({ name });
|
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
2
2
|
import { execSync } from 'node:child_process';
|
|
3
3
|
import { resolve, join } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import { n as normalizeAllowedUser, l as loadSecurityContextConfig, e as resolveSecurityContext, f as buildSecurityContextFromFlags, m as mergeSecurityContexts, c as connectToHypha, i as buildSessionShareUrl, j as buildMachineShareUrl } from './run-
|
|
5
|
+
import { n as normalizeAllowedUser, l as loadSecurityContextConfig, e as resolveSecurityContext, f as buildSecurityContextFromFlags, m as mergeSecurityContexts, c as connectToHypha, i as buildSessionShareUrl, j as buildMachineShareUrl } from './run-EPzdDXeY.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
|
@@ -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-CgirOjun.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-EPzdDXeY.mjs';
|
|
9
9
|
import 'os';
|
|
10
10
|
import 'fs/promises';
|
|
11
11
|
import 'url';
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as connectToHypha, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, a as registerSessionService, s as startDaemon, b as stopDaemon } from './run-
|
|
1
|
+
export { c as connectToHypha, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, a as registerSessionService, s as startDaemon, b as stopDaemon } from './run-EPzdDXeY.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
var name = "svamp-cli";
|
|
2
|
+
var version = "0.2.65";
|
|
3
|
+
var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
|
|
4
|
+
var author = "Amun AI AB";
|
|
5
|
+
var license = "SEE LICENSE IN LICENSE";
|
|
6
|
+
var type = "module";
|
|
7
|
+
var bin = {
|
|
8
|
+
svamp: "./bin/svamp.mjs"
|
|
9
|
+
};
|
|
10
|
+
var files = [
|
|
11
|
+
"dist",
|
|
12
|
+
"bin"
|
|
13
|
+
];
|
|
14
|
+
var main = "./dist/index.mjs";
|
|
15
|
+
var exports$1 = {
|
|
16
|
+
".": "./dist/index.mjs",
|
|
17
|
+
"./cli": "./dist/cli.mjs"
|
|
18
|
+
};
|
|
19
|
+
var scripts = {
|
|
20
|
+
build: "rm -rf dist bin/skills && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && tsc --noEmit && pkgroll",
|
|
21
|
+
typecheck: "tsc --noEmit",
|
|
22
|
+
test: "npx tsx test/test-context-window.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-ralph-loop.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-ralph-loop-integration.mjs && npx tsx test/test-ralph-loop-modes.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 && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only",
|
|
23
|
+
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
24
|
+
dev: "tsx src/cli.ts",
|
|
25
|
+
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|
|
26
|
+
"test:e2e": "node --no-warnings test/e2e-session-tests.mjs",
|
|
27
|
+
"test:frpc": "npx tsx test/test-frpc-e2e.mjs"
|
|
28
|
+
};
|
|
29
|
+
var dependencies = {
|
|
30
|
+
"@agentclientprotocol/sdk": "^0.14.1",
|
|
31
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
32
|
+
"hypha-rpc": "0.21.40",
|
|
33
|
+
"node-pty": "1.2.0-beta.11",
|
|
34
|
+
ws: "^8.18.0",
|
|
35
|
+
yaml: "^2.8.2",
|
|
36
|
+
zod: "^3.24.4"
|
|
37
|
+
};
|
|
38
|
+
var devDependencies = {
|
|
39
|
+
"@types/node": ">=20",
|
|
40
|
+
"@types/ws": "^8.5.14",
|
|
41
|
+
pkgroll: "^2.14.2",
|
|
42
|
+
tsx: "^4.20.6",
|
|
43
|
+
typescript: "5.9.3"
|
|
44
|
+
};
|
|
45
|
+
var packageManager = "yarn@1.22.22";
|
|
46
|
+
var _package = {
|
|
47
|
+
name: name,
|
|
48
|
+
version: version,
|
|
49
|
+
description: description,
|
|
50
|
+
author: author,
|
|
51
|
+
license: license,
|
|
52
|
+
type: type,
|
|
53
|
+
bin: bin,
|
|
54
|
+
files: files,
|
|
55
|
+
main: main,
|
|
56
|
+
exports: exports$1,
|
|
57
|
+
scripts: scripts,
|
|
58
|
+
dependencies: dependencies,
|
|
59
|
+
devDependencies: devDependencies,
|
|
60
|
+
packageManager: packageManager
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export { author, bin, _package as default, dependencies, description, devDependencies, exports$1 as exports, files, license, main, name, packageManager, scripts, type, version };
|
|
@@ -6405,6 +6405,71 @@ You may be running in parallel with other agents \u2014 possibly sharing the sam
|
|
|
6405
6405
|
`;
|
|
6406
6406
|
}
|
|
6407
6407
|
|
|
6408
|
+
const STANDARD_WINDOWS = [2e5, 1e6];
|
|
6409
|
+
function readWindow(entry) {
|
|
6410
|
+
if (!entry) return 0;
|
|
6411
|
+
const cw = entry.contextWindow ?? entry.context_window;
|
|
6412
|
+
return typeof cw === "number" && cw > 0 && Number.isFinite(cw) ? cw : 0;
|
|
6413
|
+
}
|
|
6414
|
+
function computeObservedContext(usage) {
|
|
6415
|
+
if (!usage) return 0;
|
|
6416
|
+
return (usage.input_tokens || 0) + (usage.cache_creation_input_tokens || 0) + (usage.cache_read_input_tokens || 0);
|
|
6417
|
+
}
|
|
6418
|
+
function inferWindowFromModelName(model) {
|
|
6419
|
+
if (!model) return 0;
|
|
6420
|
+
if (/\[1m\]/i.test(model)) return 1e6;
|
|
6421
|
+
if (/opus-?4-?[7-9]/i.test(model)) return 1e6;
|
|
6422
|
+
if (/opus-?[5-9]/i.test(model)) return 1e6;
|
|
6423
|
+
if (/sonnet-?4-?[5-9]/i.test(model)) return 1e6;
|
|
6424
|
+
if (/sonnet-?[5-9]/i.test(model)) return 1e6;
|
|
6425
|
+
if (/opus|sonnet/i.test(model)) return 2e5;
|
|
6426
|
+
if (/haiku/i.test(model)) return 2e5;
|
|
6427
|
+
return 0;
|
|
6428
|
+
}
|
|
6429
|
+
function matchedMainModel(modelUsage, mainModel) {
|
|
6430
|
+
if (!modelUsage || !mainModel) return { window: 0, matched: false };
|
|
6431
|
+
const variants = [
|
|
6432
|
+
mainModel,
|
|
6433
|
+
`${mainModel}[1m]`,
|
|
6434
|
+
mainModel.replace(/\[1m\]$/i, "")
|
|
6435
|
+
];
|
|
6436
|
+
for (const k of variants) {
|
|
6437
|
+
const cw = readWindow(modelUsage[k]);
|
|
6438
|
+
if (cw > 0) return { window: cw, matched: true };
|
|
6439
|
+
}
|
|
6440
|
+
return { window: 0, matched: false };
|
|
6441
|
+
}
|
|
6442
|
+
function maxAcrossModelUsage(modelUsage) {
|
|
6443
|
+
if (!modelUsage) return 0;
|
|
6444
|
+
let best = 0;
|
|
6445
|
+
for (const v of Object.values(modelUsage)) {
|
|
6446
|
+
const cw = readWindow(v);
|
|
6447
|
+
if (cw > best) best = cw;
|
|
6448
|
+
}
|
|
6449
|
+
return best;
|
|
6450
|
+
}
|
|
6451
|
+
function selfHealForObserved(candidate, observed) {
|
|
6452
|
+
if (observed <= candidate) return candidate;
|
|
6453
|
+
const next = STANDARD_WINDOWS.find((w) => w >= observed);
|
|
6454
|
+
if (next) return Math.max(candidate, next);
|
|
6455
|
+
return Math.max(candidate, Math.ceil(observed * 1.25));
|
|
6456
|
+
}
|
|
6457
|
+
function resolveContextWindow(opts) {
|
|
6458
|
+
const { modelUsage, usage, mainModel, currentWindow } = opts;
|
|
6459
|
+
const observed = computeObservedContext(usage);
|
|
6460
|
+
const main = matchedMainModel(modelUsage, mainModel);
|
|
6461
|
+
let candidate = main.window;
|
|
6462
|
+
const definitiveMatch = main.matched;
|
|
6463
|
+
if (!candidate) candidate = maxAcrossModelUsage(modelUsage);
|
|
6464
|
+
if (!candidate) candidate = inferWindowFromModelName(mainModel);
|
|
6465
|
+
candidate = selfHealForObserved(candidate, observed);
|
|
6466
|
+
const current = typeof currentWindow === "number" && currentWindow > 0 ? currentWindow : 0;
|
|
6467
|
+
if (current > 0 && candidate > 0 && candidate < current && !definitiveMatch) {
|
|
6468
|
+
candidate = current;
|
|
6469
|
+
}
|
|
6470
|
+
return candidate;
|
|
6471
|
+
}
|
|
6472
|
+
|
|
6408
6473
|
const SVAMP_HOME$1 = process.env.SVAMP_HOME || join$1(os.homedir(), ".svamp");
|
|
6409
6474
|
function generateHookSettings(portOrOptions = {}) {
|
|
6410
6475
|
const opts = typeof portOrOptions === "number" ? { sessionStartPort: portOrOptions } : portOrOptions;
|
|
@@ -7690,7 +7755,7 @@ async function startDaemon(options) {
|
|
|
7690
7755
|
const list = loadExposedTunnels().filter((t) => t.name !== name);
|
|
7691
7756
|
saveExposedTunnels(list);
|
|
7692
7757
|
}
|
|
7693
|
-
const { ServeManager } = await import('./serveManager-
|
|
7758
|
+
const { ServeManager } = await import('./serveManager-pDviHaH8.mjs');
|
|
7694
7759
|
const serveManager = new ServeManager(SVAMP_HOME, (msg) => logger.log(`[SERVE] ${msg}`), hyphaServerUrl);
|
|
7695
7760
|
ensureAutoInstalledSkills(logger).catch(() => {
|
|
7696
7761
|
});
|
|
@@ -7894,6 +7959,7 @@ async function startDaemon(options) {
|
|
|
7894
7959
|
let lastSpawnMeta = persisted?.spawnMeta || {};
|
|
7895
7960
|
let sessionWasProcessing = !!options2.wasProcessing;
|
|
7896
7961
|
let lastAssistantText = "";
|
|
7962
|
+
let lastMainModel;
|
|
7897
7963
|
let consecutiveRalphErrors = 0;
|
|
7898
7964
|
const MAX_RALPH_ERRORS = 3;
|
|
7899
7965
|
let spawnHasReceivedInit = false;
|
|
@@ -8221,6 +8287,12 @@ async function startDaemon(options) {
|
|
|
8221
8287
|
"event"
|
|
8222
8288
|
);
|
|
8223
8289
|
}
|
|
8290
|
+
if (msg.type === "assistant") {
|
|
8291
|
+
const assistantModel = msg.message?.model;
|
|
8292
|
+
if (typeof assistantModel === "string" && assistantModel.length > 0) {
|
|
8293
|
+
lastMainModel = assistantModel;
|
|
8294
|
+
}
|
|
8295
|
+
}
|
|
8224
8296
|
const assistantContent = msg.type === "assistant" ? msg.message?.content ?? msg.content : void 0;
|
|
8225
8297
|
if (Array.isArray(assistantContent)) {
|
|
8226
8298
|
for (const block of assistantContent) {
|
|
@@ -8324,15 +8396,15 @@ async function startDaemon(options) {
|
|
|
8324
8396
|
}
|
|
8325
8397
|
signalProcessing(false);
|
|
8326
8398
|
sessionWasProcessing = false;
|
|
8327
|
-
|
|
8328
|
-
|
|
8329
|
-
|
|
8330
|
-
|
|
8331
|
-
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
|
|
8335
|
-
|
|
8399
|
+
const resolvedWindow = resolveContextWindow({
|
|
8400
|
+
modelUsage: msg.modelUsage,
|
|
8401
|
+
usage: msg.usage,
|
|
8402
|
+
mainModel: lastMainModel,
|
|
8403
|
+
currentWindow: sessionMetadata.contextWindow
|
|
8404
|
+
});
|
|
8405
|
+
if (resolvedWindow > 0 && resolvedWindow !== sessionMetadata.contextWindow) {
|
|
8406
|
+
sessionMetadata = { ...sessionMetadata, contextWindow: resolvedWindow };
|
|
8407
|
+
sessionService.updateMetadata(sessionMetadata);
|
|
8336
8408
|
}
|
|
8337
8409
|
if (claudeResumeId && !trackedSession.stopped) {
|
|
8338
8410
|
saveSession({
|
|
@@ -8557,6 +8629,9 @@ The automated loop has finished. Review the progress above and let me know if yo
|
|
|
8557
8629
|
if (msg.slash_commands && Array.isArray(msg.slash_commands)) {
|
|
8558
8630
|
sessionMetadata = { ...sessionMetadata, slashCommands: msg.slash_commands };
|
|
8559
8631
|
}
|
|
8632
|
+
if (typeof msg.model === "string" && msg.model.length > 0) {
|
|
8633
|
+
lastMainModel = msg.model;
|
|
8634
|
+
}
|
|
8560
8635
|
if (msg.session_id) {
|
|
8561
8636
|
const isResumeFailure = !spawnHasReceivedInit && claudeResumeId && msg.session_id !== claudeResumeId;
|
|
8562
8637
|
const isConversationClear = spawnHasReceivedInit && claudeResumeId && msg.session_id !== claudeResumeId;
|
|
@@ -10113,7 +10188,7 @@ The automated loop has finished. Review the progress above and let me know if yo
|
|
|
10113
10188
|
getSessionPid: (sessionId) => {
|
|
10114
10189
|
for (const [, session] of pidToTrackedSession) {
|
|
10115
10190
|
if (session.svampSessionId === sessionId && !session.stopped) {
|
|
10116
|
-
return session.
|
|
10191
|
+
return session.pid;
|
|
10117
10192
|
}
|
|
10118
10193
|
}
|
|
10119
10194
|
return void 0;
|
|
@@ -2,7 +2,7 @@ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(im
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import { resolve, join } from 'node:path';
|
|
4
4
|
import { existsSync, readFileSync, watch } from 'node:fs';
|
|
5
|
-
import { c as connectToHypha, a as registerSessionService, k as generateHookSettings } from './run-
|
|
5
|
+
import { c as connectToHypha, a as registerSessionService, k as generateHookSettings } from './run-EPzdDXeY.mjs';
|
|
6
6
|
import { createServer } from 'node:http';
|
|
7
7
|
import { spawn } from 'node:child_process';
|
|
8
8
|
import { createInterface } from 'node:readline';
|
|
@@ -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-CgirOjun.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-CgirOjun.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-CgirOjun.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-CgirOjun.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-CgirOjun.mjs');
|
|
239
239
|
const { machine, server } = await connectAndGetMachine(machineId);
|
|
240
240
|
try {
|
|
241
241
|
const info = await machine.serveInfo();
|
|
@@ -4,7 +4,7 @@ import * as fs from 'fs';
|
|
|
4
4
|
import * as http from 'http';
|
|
5
5
|
import * as net from 'net';
|
|
6
6
|
import * as path from 'path';
|
|
7
|
-
import { S as ServeAuth, h as hasCookieToken } from './run-
|
|
7
|
+
import { S as ServeAuth, h as hasCookieToken } from './run-EPzdDXeY.mjs';
|
|
8
8
|
import 'os';
|
|
9
9
|
import 'fs/promises';
|
|
10
10
|
import 'url';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svamp-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.65",
|
|
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 && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && tsc --noEmit && pkgroll",
|
|
22
22
|
"typecheck": "tsc --noEmit",
|
|
23
|
-
"test": "npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-ralph-loop.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-ralph-loop-integration.mjs && npx tsx test/test-ralph-loop-modes.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 && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only",
|
|
23
|
+
"test": "npx tsx test/test-context-window.mjs && npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-ralph-loop.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-ralph-loop-integration.mjs && npx tsx test/test-ralph-loop-modes.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 && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only",
|
|
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",
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
var name = "svamp-cli";
|
|
2
|
-
var version = "0.2.63";
|
|
3
|
-
var description = "Svamp CLI — AI workspace daemon on Hypha Cloud";
|
|
4
|
-
var author = "Amun AI AB";
|
|
5
|
-
var license = "SEE LICENSE IN LICENSE";
|
|
6
|
-
var type = "module";
|
|
7
|
-
var bin = {
|
|
8
|
-
svamp: "./bin/svamp.mjs"
|
|
9
|
-
};
|
|
10
|
-
var files = [
|
|
11
|
-
"dist",
|
|
12
|
-
"bin"
|
|
13
|
-
];
|
|
14
|
-
var main = "./dist/index.mjs";
|
|
15
|
-
var exports$1 = {
|
|
16
|
-
".": "./dist/index.mjs",
|
|
17
|
-
"./cli": "./dist/cli.mjs"
|
|
18
|
-
};
|
|
19
|
-
var scripts = {
|
|
20
|
-
build: "rm -rf dist bin/skills && mkdir -p bin/skills && cp -r ../../skills/artifact bin/skills/artifact && tsc --noEmit && pkgroll",
|
|
21
|
-
typecheck: "tsc --noEmit",
|
|
22
|
-
test: "npx tsx test/test-authorize.mjs && npx tsx test/test-normalize-allowed-user.mjs && npx tsx test/test-share-url.mjs && npx tsx test/test-update-sharing-normalization.mjs && npx tsx test/test-staged-homes-sweep.mjs && npx tsx test/test-session-helpers.mjs && npx tsx test/test-cli-routing.mjs && npx tsx test/test-security-context.mjs && npx tsx test/test-isolation-decision.mjs && npx tsx test/test-ralph-loop.mjs && npx tsx test/test-message-helpers.mjs && npx tsx test/test-agent-config.mjs && npx tsx test/test-wrap-command.mjs && npx tsx test/test-credential-staging.mjs && npx tsx test/test-claude-auth.mjs && npx tsx test/test-output-formatters.mjs && npx tsx test/test-agent-types.mjs && npx tsx test/test-transport.mjs && npx tsx test/test-session-update-handlers.mjs && npx tsx test/test-session-scanner.mjs && npx tsx test/test-hypha-client.mjs && npx tsx test/test-hook-settings.mjs && npx tsx test/test-session-service-logic.mjs && npx tsx test/test-daemon-persistence.mjs && npx tsx test/test-detect-isolation.mjs && npx tsx test/test-machine-service-logic.mjs && npx tsx test/test-interactive-helpers.mjs && npx tsx test/test-codex-backend.mjs && npx tsx test/test-acp-backend.mjs && npx tsx test/test-acp-bridge.mjs && npx tsx test/test-hook-server.mjs && npx tsx test/test-session-commands.mjs && npx tsx test/test-interactive-console.mjs && npx tsx test/test-session-messages.mjs && npx tsx test/test-skills.mjs && npx tsx test/test-agent-grouping.mjs && npx tsx test/test-ralph-loop-integration.mjs && npx tsx test/test-ralph-loop-modes.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 && npx tsx test/test-clear-detection.mjs && npx tsx test/test-session-consolidation.mjs && npx tsx test/test-inbox.mjs && npx tsx test/test-session-rpc-dispatch.mjs && npx tsx test/test-sandbox-cli.mjs && npx tsx test/test-serve-manager.mjs && npx tsx test/test-serve-stability.mjs && npx tsx test/test-frpc-e2e.mjs --unit-only",
|
|
23
|
-
"test:hypha": "node --no-warnings test/test-hypha-service.mjs",
|
|
24
|
-
dev: "tsx src/cli.ts",
|
|
25
|
-
"dev:daemon": "tsx src/cli.ts daemon start-sync",
|
|
26
|
-
"test:e2e": "node --no-warnings test/e2e-session-tests.mjs",
|
|
27
|
-
"test:frpc": "npx tsx test/test-frpc-e2e.mjs"
|
|
28
|
-
};
|
|
29
|
-
var dependencies = {
|
|
30
|
-
"@agentclientprotocol/sdk": "^0.14.1",
|
|
31
|
-
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
32
|
-
"hypha-rpc": "0.21.40",
|
|
33
|
-
"node-pty": "1.2.0-beta.11",
|
|
34
|
-
ws: "^8.18.0",
|
|
35
|
-
yaml: "^2.8.2",
|
|
36
|
-
zod: "^3.24.4"
|
|
37
|
-
};
|
|
38
|
-
var devDependencies = {
|
|
39
|
-
"@types/node": ">=20",
|
|
40
|
-
"@types/ws": "^8.5.14",
|
|
41
|
-
pkgroll: "^2.14.2",
|
|
42
|
-
tsx: "^4.20.6",
|
|
43
|
-
typescript: "5.9.3"
|
|
44
|
-
};
|
|
45
|
-
var packageManager = "yarn@1.22.22";
|
|
46
|
-
var _package = {
|
|
47
|
-
name: name,
|
|
48
|
-
version: version,
|
|
49
|
-
description: description,
|
|
50
|
-
author: author,
|
|
51
|
-
license: license,
|
|
52
|
-
type: type,
|
|
53
|
-
bin: bin,
|
|
54
|
-
files: files,
|
|
55
|
-
main: main,
|
|
56
|
-
exports: exports$1,
|
|
57
|
-
scripts: scripts,
|
|
58
|
-
dependencies: dependencies,
|
|
59
|
-
devDependencies: devDependencies,
|
|
60
|
-
packageManager: packageManager
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export { author, bin, _package as default, dependencies, description, devDependencies, exports$1 as exports, files, license, main, name, packageManager, scripts, type, version };
|