svamp-cli 0.2.313 → 0.2.314
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-DINkkchF.mjs → adminCommands-DCttALYO.mjs} +1 -1
- package/dist/{agentCommands-CqHUKyRM.mjs → agentCommands-BUsSOz5M.mjs} +5 -5
- package/dist/{auth-fmYi12gU.mjs → auth-D5yTcsy2.mjs} +1 -1
- package/dist/{cli-C0K7bTFQ.mjs → cli-ahWO_ULm.mjs} +207 -73
- package/dist/cli.mjs +2 -2
- package/dist/{commands-BlSsMfW6.mjs → commands-BSHZGcCC.mjs} +8 -8
- package/dist/{commands-DxwqcKtb.mjs → commands-CJmKY6Qo.mjs} +2 -2
- package/dist/{commands-c57jjMV-.mjs → commands-Ce7MP6Ut.mjs} +2 -2
- package/dist/{commands-B2KHp8-n.mjs → commands-Cl-TIip1.mjs} +2 -2
- package/dist/{commands-DMG7VDBo.mjs → commands-CuinsdU0.mjs} +1 -1
- package/dist/{commands-CE9x3OVJ.mjs → commands-ZML4FIzg.mjs} +1 -1
- package/dist/{commands-lt3_KA5S.mjs → commands-bS4ErsEr.mjs} +2 -2
- package/dist/{commands-BspIWEyi.mjs → commands-r4QVEq12.mjs} +1 -1
- package/dist/{fleet-DX-cpu52.mjs → fleet-CSwFR8B0.mjs} +41 -2
- package/dist/{frpc-B5LHRKTD.mjs → frpc-CpuE7d3Y.mjs} +1 -1
- package/dist/{headlessCli-BE4CanO7.mjs → headlessCli-Dg-awx4h.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{notifyCommands-Deh2F41t.mjs → notifyCommands-Dlm4RafU.mjs} +1 -1
- package/dist/{package-C9HRV5XP.mjs → package-DO2e6EnU.mjs} +2 -2
- package/dist/{rpc-BxOm5nyE.mjs → rpc-BN7kFhGk.mjs} +1 -1
- package/dist/{rpc-DOl276lO.mjs → rpc-CLTPF1K6.mjs} +1 -1
- package/dist/{run-CDZ1g-Fa.mjs → run-B6-6GYde.mjs} +1 -1
- package/dist/{run-DI8N2DhV.mjs → run-Y3YLx8x7.mjs} +265 -18
- package/dist/{scheduler-C0WXBdL_.mjs → scheduler-CWlkmpMz.mjs} +1 -1
- package/dist/{serveCommands-DChM4ubY.mjs → serveCommands-mnocpHcO.mjs} +5 -5
- package/dist/{sideband-BdHdwflN.mjs → sideband-c4lkIKWJ.mjs} +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a3 as clearStopMarker, a4 as stopMarkerExists, s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-Y3YLx8x7.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-Y3YLx8x7.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-Y3YLx8x7.mjs').then(function (n) { return n.aD; });
|
|
56
56
|
if (whenIdle && !force) {
|
|
57
57
|
if (mod.isDaemonAlive()) {
|
|
58
58
|
mod.writePendingRestart({ reason: "svamp daemon restart --when-idle" });
|
|
@@ -322,6 +322,9 @@ async function main() {
|
|
|
322
322
|
} else if (daemonSubcommand === "codex-auth") {
|
|
323
323
|
await handleDaemonCodexAuthCommand(args.slice(2));
|
|
324
324
|
process.exit(0);
|
|
325
|
+
} else if (daemonSubcommand === "kimi-auth") {
|
|
326
|
+
await handleDaemonKimiAuthCommand(args.slice(2));
|
|
327
|
+
process.exit(0);
|
|
325
328
|
} else {
|
|
326
329
|
printDaemonHelp();
|
|
327
330
|
}
|
|
@@ -356,7 +359,7 @@ async function main() {
|
|
|
356
359
|
console.error("svamp service: Service commands are not available in sandboxed sessions.");
|
|
357
360
|
process.exit(1);
|
|
358
361
|
}
|
|
359
|
-
const { handleServiceCommand } = await import('./commands-
|
|
362
|
+
const { handleServiceCommand } = await import('./commands-BSHZGcCC.mjs');
|
|
360
363
|
await handleServiceCommand();
|
|
361
364
|
} else if (subcommand === "serve") {
|
|
362
365
|
const { isSandboxed: isSandboxedServe } = await import('./sandboxDetect-DNTcbgWD.mjs');
|
|
@@ -364,7 +367,7 @@ async function main() {
|
|
|
364
367
|
console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
|
|
365
368
|
process.exit(1);
|
|
366
369
|
}
|
|
367
|
-
const { handleServeCommand } = await import('./serveCommands-
|
|
370
|
+
const { handleServeCommand } = await import('./serveCommands-mnocpHcO.mjs');
|
|
368
371
|
await handleServeCommand();
|
|
369
372
|
process.exit(0);
|
|
370
373
|
} else if (subcommand === "process" || subcommand === "proc") {
|
|
@@ -373,7 +376,7 @@ async function main() {
|
|
|
373
376
|
console.error("svamp process: Process commands are not available in sandboxed sessions.");
|
|
374
377
|
process.exit(1);
|
|
375
378
|
}
|
|
376
|
-
const { processCommand } = await import('./commands-
|
|
379
|
+
const { processCommand } = await import('./commands-Cl-TIip1.mjs');
|
|
377
380
|
let machineId;
|
|
378
381
|
const processArgs = args.slice(1);
|
|
379
382
|
const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
|
|
@@ -387,26 +390,26 @@ async function main() {
|
|
|
387
390
|
}), machineId);
|
|
388
391
|
process.exit(0);
|
|
389
392
|
} else if (subcommand === "outpost") {
|
|
390
|
-
const { outpostCommand } = await import('./commands-
|
|
393
|
+
const { outpostCommand } = await import('./commands-CJmKY6Qo.mjs');
|
|
391
394
|
await outpostCommand(args.slice(1));
|
|
392
395
|
process.exit(0);
|
|
393
396
|
} else if (subcommand === "issue" || subcommand === "issues") {
|
|
394
|
-
const { issueCommand } = await import('./commands-
|
|
397
|
+
const { issueCommand } = await import('./commands-Ce7MP6Ut.mjs');
|
|
395
398
|
await issueCommand(args.slice(1));
|
|
396
399
|
await flushAndExit(0);
|
|
397
400
|
} else if (subcommand === "workflow" || subcommand === "workflows") {
|
|
398
|
-
const { workflowCommand } = await import('./commands-
|
|
401
|
+
const { workflowCommand } = await import('./commands-CuinsdU0.mjs');
|
|
399
402
|
await workflowCommand(args.slice(1));
|
|
400
403
|
await flushAndExit(0);
|
|
401
404
|
} else if (subcommand === "wise-agent" || subcommand === "wise") {
|
|
402
405
|
await handleWiseAgentCommand(args.slice(1));
|
|
403
406
|
process.exit(0);
|
|
404
407
|
} else if (subcommand === "feature" || subcommand === "crew") {
|
|
405
|
-
const { crewCommand } = await import('./commands-
|
|
408
|
+
const { crewCommand } = await import('./commands-bS4ErsEr.mjs');
|
|
406
409
|
await crewCommand(args.slice(1));
|
|
407
410
|
process.exit(0);
|
|
408
411
|
} else if (subcommand === "notify") {
|
|
409
|
-
const { notifyUser } = await import('./notifyCommands-
|
|
412
|
+
const { notifyUser } = await import('./notifyCommands-Dlm4RafU.mjs');
|
|
410
413
|
const rest = args.slice(1);
|
|
411
414
|
let email;
|
|
412
415
|
const o = {};
|
|
@@ -423,7 +426,7 @@ async function main() {
|
|
|
423
426
|
} else if (subcommand === "admin") {
|
|
424
427
|
const adminSub = args[1];
|
|
425
428
|
if (adminSub === "set-collection-config") {
|
|
426
|
-
const { setCollectionConfig } = await import('./adminCommands-
|
|
429
|
+
const { setCollectionConfig } = await import('./adminCommands-DCttALYO.mjs');
|
|
427
430
|
const rest = args.slice(2);
|
|
428
431
|
let alias;
|
|
429
432
|
let configJson;
|
|
@@ -433,10 +436,10 @@ async function main() {
|
|
|
433
436
|
}
|
|
434
437
|
await setCollectionConfig(alias, configJson);
|
|
435
438
|
} else if (adminSub === "create-system-collections") {
|
|
436
|
-
const { createSystemCollections } = await import('./adminCommands-
|
|
439
|
+
const { createSystemCollections } = await import('./adminCommands-DCttALYO.mjs');
|
|
437
440
|
await createSystemCollections();
|
|
438
441
|
} else if (adminSub === "migrate-collection-children") {
|
|
439
|
-
const { migrateCollectionChildren } = await import('./adminCommands-
|
|
442
|
+
const { migrateCollectionChildren } = await import('./adminCommands-DCttALYO.mjs');
|
|
440
443
|
const rest = args.slice(2).filter((a) => !a.startsWith("-"));
|
|
441
444
|
await migrateCollectionChildren(rest[0], rest[1]);
|
|
442
445
|
} else {
|
|
@@ -444,7 +447,7 @@ async function main() {
|
|
|
444
447
|
}
|
|
445
448
|
process.exit(0);
|
|
446
449
|
} else if (subcommand === "events") {
|
|
447
|
-
const { listEvents, ackEvent } = await import('./notifyCommands-
|
|
450
|
+
const { listEvents, ackEvent } = await import('./notifyCommands-Dlm4RafU.mjs');
|
|
448
451
|
const sub = args[1];
|
|
449
452
|
const rest = args.slice(2);
|
|
450
453
|
let email;
|
|
@@ -465,7 +468,7 @@ async function main() {
|
|
|
465
468
|
} else if (!subcommand || subcommand === "start") {
|
|
466
469
|
await handleInteractiveCommand();
|
|
467
470
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
468
|
-
const pkg = await import('./package-
|
|
471
|
+
const pkg = await import('./package-DO2e6EnU.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
469
472
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
470
473
|
} else {
|
|
471
474
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -474,7 +477,7 @@ async function main() {
|
|
|
474
477
|
}
|
|
475
478
|
}
|
|
476
479
|
async function handleInteractiveCommand() {
|
|
477
|
-
const { runInteractive } = await import('./run-
|
|
480
|
+
const { runInteractive } = await import('./run-B6-6GYde.mjs');
|
|
478
481
|
const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
|
|
479
482
|
let directory = process.cwd();
|
|
480
483
|
let resumeSessionId;
|
|
@@ -519,7 +522,7 @@ async function handleAgentCommand() {
|
|
|
519
522
|
return;
|
|
520
523
|
}
|
|
521
524
|
if (agentArgs[0] === "list") {
|
|
522
|
-
const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-
|
|
525
|
+
const { KNOWN_ACP_AGENTS, KNOWN_CODEX_AGENTS: KNOWN_CODEX_AGENTS2 } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.aw; });
|
|
523
526
|
console.log("Known agents:");
|
|
524
527
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
525
528
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
|
|
@@ -531,7 +534,7 @@ async function handleAgentCommand() {
|
|
|
531
534
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
532
535
|
return;
|
|
533
536
|
}
|
|
534
|
-
const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-
|
|
537
|
+
const { resolveAcpAgentConfig, KNOWN_CODEX_AGENTS } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.aw; });
|
|
535
538
|
let cwd = process.cwd();
|
|
536
539
|
const filteredArgs = [];
|
|
537
540
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -555,19 +558,28 @@ async function handleAgentCommand() {
|
|
|
555
558
|
console.log(`Starting ${config.agentName} agent in ${cwd}...`);
|
|
556
559
|
let backend;
|
|
557
560
|
if (KNOWN_CODEX_AGENTS[config.agentName]) {
|
|
558
|
-
const { CodexAppServerBackend } = await import('./run-
|
|
561
|
+
const { CodexAppServerBackend } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.ax; });
|
|
559
562
|
backend = new CodexAppServerBackend({ cwd, log: logFn });
|
|
560
563
|
} else {
|
|
561
|
-
const { AcpBackend } = await import('./run-
|
|
562
|
-
const { GeminiTransport } = await import('./run-
|
|
563
|
-
const {
|
|
564
|
-
const
|
|
564
|
+
const { AcpBackend } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.av; });
|
|
565
|
+
const { GeminiTransport } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.ay; });
|
|
566
|
+
const { KimiTransport } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.az; });
|
|
567
|
+
const { DefaultTransport } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.au; });
|
|
568
|
+
const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : config.agentName === "kimi" ? new KimiTransport() : new DefaultTransport(config.agentName);
|
|
569
|
+
let acpEnv;
|
|
570
|
+
if (config.agentName === "kimi") {
|
|
571
|
+
const { ensureKimiProviderConfigured } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.aB; });
|
|
572
|
+
const { kimiSpawnEnv } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.aA; });
|
|
573
|
+
ensureKimiProviderConfigured(process.env, config.command, logFn);
|
|
574
|
+
acpEnv = kimiSpawnEnv(process.env);
|
|
575
|
+
}
|
|
565
576
|
backend = new AcpBackend({
|
|
566
577
|
agentName: config.agentName,
|
|
567
578
|
cwd,
|
|
568
579
|
command: config.command,
|
|
569
580
|
args: config.args,
|
|
570
581
|
transportHandler,
|
|
582
|
+
env: acpEnv,
|
|
571
583
|
log: logFn
|
|
572
584
|
});
|
|
573
585
|
}
|
|
@@ -687,7 +699,7 @@ async function handleSessionCommand() {
|
|
|
687
699
|
process.exit(1);
|
|
688
700
|
}
|
|
689
701
|
}
|
|
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-
|
|
702
|
+
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-r4QVEq12.mjs');
|
|
691
703
|
const parseFlagStr = (flag, shortFlag) => {
|
|
692
704
|
for (let i = 1; i < sessionArgs.length; i++) {
|
|
693
705
|
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
@@ -755,7 +767,7 @@ async function handleSessionCommand() {
|
|
|
755
767
|
allowDomain.push(sessionArgs[++i]);
|
|
756
768
|
}
|
|
757
769
|
}
|
|
758
|
-
const { parseShareArg } = await import('./commands-
|
|
770
|
+
const { parseShareArg } = await import('./commands-r4QVEq12.mjs');
|
|
759
771
|
const shareEntries = share.map((s) => parseShareArg(s));
|
|
760
772
|
await sessionSpawn(agent, dir, targetMachineId, {
|
|
761
773
|
message,
|
|
@@ -846,7 +858,7 @@ async function handleSessionCommand() {
|
|
|
846
858
|
console.error(" Rewinds history: rewrites the message + drops everything after it, then restarts Claude.");
|
|
847
859
|
process.exit(1);
|
|
848
860
|
}
|
|
849
|
-
const { sessionEditMessage } = await import('./commands-
|
|
861
|
+
const { sessionEditMessage } = await import('./commands-r4QVEq12.mjs');
|
|
850
862
|
await sessionEditMessage(sessionArgs[1], sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
851
863
|
} else if (sessionSubcommand === "refine") {
|
|
852
864
|
if (!sessionArgs[1] || !sessionArgs[2]) {
|
|
@@ -854,7 +866,7 @@ async function handleSessionCommand() {
|
|
|
854
866
|
console.error(" Asks the agent to revise its latest reply in place (no extra round).");
|
|
855
867
|
process.exit(1);
|
|
856
868
|
}
|
|
857
|
-
const { sessionRefineLastReply } = await import('./commands-
|
|
869
|
+
const { sessionRefineLastReply } = await import('./commands-r4QVEq12.mjs');
|
|
858
870
|
await sessionRefineLastReply(sessionArgs[1], sessionArgs[2], targetMachineId);
|
|
859
871
|
} else if (sessionSubcommand === "undo-edit" || sessionSubcommand === "undo") {
|
|
860
872
|
if (!sessionArgs[1]) {
|
|
@@ -862,7 +874,7 @@ async function handleSessionCommand() {
|
|
|
862
874
|
console.error(" Reverts the most recent edit/refine, restoring the pre-edit history.");
|
|
863
875
|
process.exit(1);
|
|
864
876
|
}
|
|
865
|
-
const { sessionUndoEdit } = await import('./commands-
|
|
877
|
+
const { sessionUndoEdit } = await import('./commands-r4QVEq12.mjs');
|
|
866
878
|
await sessionUndoEdit(sessionArgs[1], targetMachineId);
|
|
867
879
|
} else if (sessionSubcommand === "query") {
|
|
868
880
|
const dir = sessionArgs[1];
|
|
@@ -872,7 +884,7 @@ async function handleSessionCommand() {
|
|
|
872
884
|
console.error(" Spawns a stateless Claude session in <directory>, sends <prompt>, prints the answer, then deletes the session.");
|
|
873
885
|
process.exit(1);
|
|
874
886
|
}
|
|
875
|
-
const { sessionQuery } = await import('./commands-
|
|
887
|
+
const { sessionQuery } = await import('./commands-r4QVEq12.mjs');
|
|
876
888
|
await sessionQuery(dir, prompt, targetMachineId, {
|
|
877
889
|
timeout: parseFlagInt("--timeout"),
|
|
878
890
|
json: hasFlag("--json"),
|
|
@@ -905,7 +917,7 @@ async function handleSessionCommand() {
|
|
|
905
917
|
console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
|
|
906
918
|
process.exit(1);
|
|
907
919
|
}
|
|
908
|
-
const { sessionApprove } = await import('./commands-
|
|
920
|
+
const { sessionApprove } = await import('./commands-r4QVEq12.mjs');
|
|
909
921
|
const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
910
922
|
await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
|
|
911
923
|
json: hasFlag("--json")
|
|
@@ -915,7 +927,7 @@ async function handleSessionCommand() {
|
|
|
915
927
|
console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
|
|
916
928
|
process.exit(1);
|
|
917
929
|
}
|
|
918
|
-
const { sessionDeny } = await import('./commands-
|
|
930
|
+
const { sessionDeny } = await import('./commands-r4QVEq12.mjs');
|
|
919
931
|
const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
920
932
|
await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
|
|
921
933
|
json: hasFlag("--json")
|
|
@@ -967,7 +979,7 @@ async function handleSessionCommand() {
|
|
|
967
979
|
console.error("Usage: svamp session set-title <title>");
|
|
968
980
|
process.exit(1);
|
|
969
981
|
}
|
|
970
|
-
const { sessionSetTitle } = await import('./agentCommands-
|
|
982
|
+
const { sessionSetTitle } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
971
983
|
await sessionSetTitle(title);
|
|
972
984
|
} else if (sessionSubcommand === "set-project-description" || sessionSubcommand === "set-project") {
|
|
973
985
|
const desc = sessionArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
|
|
@@ -975,7 +987,7 @@ async function handleSessionCommand() {
|
|
|
975
987
|
console.error("Usage: svamp session set-project-description <text>");
|
|
976
988
|
process.exit(1);
|
|
977
989
|
}
|
|
978
|
-
const { sessionSetProjectDescription } = await import('./agentCommands-
|
|
990
|
+
const { sessionSetProjectDescription } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
979
991
|
await sessionSetProjectDescription(desc);
|
|
980
992
|
} else if (sessionSubcommand === "set-link") {
|
|
981
993
|
const url = sessionArgs[1];
|
|
@@ -984,11 +996,11 @@ async function handleSessionCommand() {
|
|
|
984
996
|
process.exit(1);
|
|
985
997
|
}
|
|
986
998
|
const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
987
|
-
const { sessionSetLink } = await import('./agentCommands-
|
|
999
|
+
const { sessionSetLink } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
988
1000
|
await sessionSetLink(url, label);
|
|
989
1001
|
} else if (sessionSubcommand === "link") {
|
|
990
1002
|
const op = sessionArgs[1];
|
|
991
|
-
const lm = await import('./agentCommands-
|
|
1003
|
+
const lm = await import('./agentCommands-BUsSOz5M.mjs');
|
|
992
1004
|
if (op === "add") {
|
|
993
1005
|
const url = sessionArgs[2];
|
|
994
1006
|
if (!url || url.startsWith("--")) {
|
|
@@ -1023,7 +1035,7 @@ async function handleSessionCommand() {
|
|
|
1023
1035
|
process.exit(1);
|
|
1024
1036
|
}
|
|
1025
1037
|
const level = parseFlagStr("--level") || "info";
|
|
1026
|
-
const { sessionNotify } = await import('./agentCommands-
|
|
1038
|
+
const { sessionNotify } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
1027
1039
|
await sessionNotify(message, level);
|
|
1028
1040
|
} else if (sessionSubcommand === "broadcast") {
|
|
1029
1041
|
const action = sessionArgs[1];
|
|
@@ -1031,7 +1043,7 @@ async function handleSessionCommand() {
|
|
|
1031
1043
|
console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
|
|
1032
1044
|
process.exit(1);
|
|
1033
1045
|
}
|
|
1034
|
-
const { sessionBroadcast } = await import('./agentCommands-
|
|
1046
|
+
const { sessionBroadcast } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
1035
1047
|
await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
|
|
1036
1048
|
} else if (sessionSubcommand === "inbox") {
|
|
1037
1049
|
const inboxSubcmd = sessionArgs[1];
|
|
@@ -1042,7 +1054,7 @@ async function handleSessionCommand() {
|
|
|
1042
1054
|
process.exit(1);
|
|
1043
1055
|
}
|
|
1044
1056
|
if (agentSessionId) {
|
|
1045
|
-
const { inboxSend } = await import('./agentCommands-
|
|
1057
|
+
const { inboxSend } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
1046
1058
|
await inboxSend(sessionArgs[2], {
|
|
1047
1059
|
body: sessionArgs[3],
|
|
1048
1060
|
subject: parseFlagStr("--subject"),
|
|
@@ -1059,7 +1071,7 @@ async function handleSessionCommand() {
|
|
|
1059
1071
|
}
|
|
1060
1072
|
} else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
|
|
1061
1073
|
if (agentSessionId && !sessionArgs[2]) {
|
|
1062
|
-
const { inboxList } = await import('./agentCommands-
|
|
1074
|
+
const { inboxList } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
1063
1075
|
await inboxList({
|
|
1064
1076
|
unread: hasFlag("--unread"),
|
|
1065
1077
|
limit: parseFlagInt("--limit"),
|
|
@@ -1081,7 +1093,7 @@ async function handleSessionCommand() {
|
|
|
1081
1093
|
process.exit(1);
|
|
1082
1094
|
}
|
|
1083
1095
|
if (agentSessionId && !sessionArgs[3]) {
|
|
1084
|
-
const { inboxList } = await import('./agentCommands-
|
|
1096
|
+
const { inboxList } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
1085
1097
|
await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
|
|
1086
1098
|
} else if (sessionArgs[3]) {
|
|
1087
1099
|
await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
@@ -1091,7 +1103,7 @@ async function handleSessionCommand() {
|
|
|
1091
1103
|
}
|
|
1092
1104
|
} else if (inboxSubcmd === "reply") {
|
|
1093
1105
|
if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
|
|
1094
|
-
const { inboxReply } = await import('./agentCommands-
|
|
1106
|
+
const { inboxReply } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
1095
1107
|
await inboxReply(sessionArgs[2], sessionArgs[3]);
|
|
1096
1108
|
} else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
|
|
1097
1109
|
await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
|
|
@@ -1129,7 +1141,7 @@ async function handleMachineCommand() {
|
|
|
1129
1141
|
return;
|
|
1130
1142
|
}
|
|
1131
1143
|
if (machineSubcommand === "share") {
|
|
1132
|
-
const { machineShare } = await import('./commands-
|
|
1144
|
+
const { machineShare } = await import('./commands-r4QVEq12.mjs');
|
|
1133
1145
|
let machineId;
|
|
1134
1146
|
const shareArgs = [];
|
|
1135
1147
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
@@ -1180,14 +1192,14 @@ async function handleMachineCommand() {
|
|
|
1180
1192
|
process.exit(1);
|
|
1181
1193
|
}
|
|
1182
1194
|
if (all) {
|
|
1183
|
-
const { fleetExec } = await import('./fleet-
|
|
1195
|
+
const { fleetExec } = await import('./fleet-CSwFR8B0.mjs');
|
|
1184
1196
|
await fleetExec(command, { cwd });
|
|
1185
1197
|
} else {
|
|
1186
|
-
const { machineExec } = await import('./commands-
|
|
1198
|
+
const { machineExec } = await import('./commands-r4QVEq12.mjs');
|
|
1187
1199
|
await machineExec(machineId, command, cwd);
|
|
1188
1200
|
}
|
|
1189
1201
|
} else if (machineSubcommand === "info") {
|
|
1190
|
-
const { machineInfo } = await import('./commands-
|
|
1202
|
+
const { machineInfo } = await import('./commands-r4QVEq12.mjs');
|
|
1191
1203
|
let machineId;
|
|
1192
1204
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
1193
1205
|
if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
|
|
@@ -1207,10 +1219,10 @@ async function handleMachineCommand() {
|
|
|
1207
1219
|
level = machineArgs[++i];
|
|
1208
1220
|
}
|
|
1209
1221
|
}
|
|
1210
|
-
const { machineNotify } = await import('./agentCommands-
|
|
1222
|
+
const { machineNotify } = await import('./agentCommands-BUsSOz5M.mjs');
|
|
1211
1223
|
await machineNotify(message, level);
|
|
1212
1224
|
} else if (machineSubcommand === "ls") {
|
|
1213
|
-
const { machineLs } = await import('./commands-
|
|
1225
|
+
const { machineLs } = await import('./commands-r4QVEq12.mjs');
|
|
1214
1226
|
let machineId;
|
|
1215
1227
|
let showHidden = false;
|
|
1216
1228
|
let path;
|
|
@@ -1242,6 +1254,9 @@ Subcommands (fan out across every machine in your workspace):
|
|
|
1242
1254
|
upgrade-claude [-v X] Install Claude Code (defaults to svamp-cli's pinned version)
|
|
1243
1255
|
upgrade-codex [-v X] Install Codex (defaults to svamp-cli's pinned version;
|
|
1244
1256
|
the build tested for mid-turn steering, turn/steer >= 0.129)
|
|
1257
|
+
upgrade-kimi [-v X] Install Kimi Code (@moonshot-ai/kimi-code; defaults to
|
|
1258
|
+
svamp-cli's pinned version \u2014 the build tested for kimi acp).
|
|
1259
|
+
Opt-in per machine: not auto-installed, reconciles on demand.
|
|
1245
1260
|
upgrade-svamp [-v X] [--exclude-self] [--force]
|
|
1246
1261
|
npm install -g svamp-cli@X, then restart each daemon.
|
|
1247
1262
|
DEFAULT is graceful: each daemon restarts itself only
|
|
@@ -1259,6 +1274,7 @@ Examples:
|
|
|
1259
1274
|
svamp fleet status
|
|
1260
1275
|
svamp fleet upgrade-claude
|
|
1261
1276
|
svamp fleet upgrade-codex
|
|
1277
|
+
svamp fleet upgrade-kimi
|
|
1262
1278
|
svamp fleet upgrade-svamp -v 0.2.73
|
|
1263
1279
|
svamp fleet upgrade-svamp --exclude-self
|
|
1264
1280
|
svamp fleet push-skill hypha`);
|
|
@@ -1272,23 +1288,26 @@ Examples:
|
|
|
1272
1288
|
};
|
|
1273
1289
|
const hasFlag = (name) => fleetArgs.includes(`--${name}`);
|
|
1274
1290
|
if (sub === "status") {
|
|
1275
|
-
const { fleetStatus } = await import('./fleet-
|
|
1291
|
+
const { fleetStatus } = await import('./fleet-CSwFR8B0.mjs');
|
|
1276
1292
|
await fleetStatus();
|
|
1277
1293
|
} else if (sub === "upgrade-claude") {
|
|
1278
|
-
const { fleetUpgradeClaude } = await import('./fleet-
|
|
1294
|
+
const { fleetUpgradeClaude } = await import('./fleet-CSwFR8B0.mjs');
|
|
1279
1295
|
await fleetUpgradeClaude({ version: flag("version", "-v") });
|
|
1280
1296
|
} else if (sub === "upgrade-codex") {
|
|
1281
|
-
const { fleetUpgradeCodex } = await import('./fleet-
|
|
1297
|
+
const { fleetUpgradeCodex } = await import('./fleet-CSwFR8B0.mjs');
|
|
1282
1298
|
await fleetUpgradeCodex({ version: flag("version", "-v") });
|
|
1299
|
+
} else if (sub === "upgrade-kimi") {
|
|
1300
|
+
const { fleetUpgradeKimi } = await import('./fleet-CSwFR8B0.mjs');
|
|
1301
|
+
await fleetUpgradeKimi({ version: flag("version", "-v") });
|
|
1283
1302
|
} else if (sub === "upgrade-svamp") {
|
|
1284
|
-
const { fleetUpgradeSvamp } = await import('./fleet-
|
|
1303
|
+
const { fleetUpgradeSvamp } = await import('./fleet-CSwFR8B0.mjs');
|
|
1285
1304
|
await fleetUpgradeSvamp({ version: flag("version", "-v"), excludeSelf: hasFlag("exclude-self"), force: hasFlag("force") });
|
|
1286
1305
|
} else if (sub === "daemon-restart") {
|
|
1287
|
-
const { fleetDaemonRestart } = await import('./fleet-
|
|
1306
|
+
const { fleetDaemonRestart } = await import('./fleet-CSwFR8B0.mjs');
|
|
1288
1307
|
await fleetDaemonRestart({ graceful: !hasFlag("cleanup") });
|
|
1289
1308
|
} else if (sub === "push-skill") {
|
|
1290
1309
|
const name = fleetArgs[1];
|
|
1291
|
-
const { fleetPushSkill } = await import('./fleet-
|
|
1310
|
+
const { fleetPushSkill } = await import('./fleet-CSwFR8B0.mjs');
|
|
1292
1311
|
await fleetPushSkill(name);
|
|
1293
1312
|
} else {
|
|
1294
1313
|
console.error(`Unknown fleet subcommand: ${sub}`);
|
|
@@ -1304,7 +1323,7 @@ async function handleSkillsCommand() {
|
|
|
1304
1323
|
await printSkillsHelp();
|
|
1305
1324
|
return;
|
|
1306
1325
|
}
|
|
1307
|
-
const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-
|
|
1326
|
+
const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-ZML4FIzg.mjs');
|
|
1308
1327
|
if (skillsSubcommand === "find" || skillsSubcommand === "search") {
|
|
1309
1328
|
const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
|
|
1310
1329
|
if (!query) {
|
|
@@ -1351,7 +1370,7 @@ async function loginToHypha() {
|
|
|
1351
1370
|
process.exit(1);
|
|
1352
1371
|
}
|
|
1353
1372
|
const anchor = anchorArg.replace(/\/+$/, "");
|
|
1354
|
-
const { loadInstanceConfig } = await import('./run-
|
|
1373
|
+
const { loadInstanceConfig } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.aq; });
|
|
1355
1374
|
let cfg = null;
|
|
1356
1375
|
try {
|
|
1357
1376
|
cfg = await loadInstanceConfig({ anchor, force: true });
|
|
@@ -1462,7 +1481,7 @@ async function logoutFromHypha() {
|
|
|
1462
1481
|
} catch {
|
|
1463
1482
|
}
|
|
1464
1483
|
try {
|
|
1465
|
-
const { clearInstanceConfigCache } = await import('./run-
|
|
1484
|
+
const { clearInstanceConfigCache } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.aq; });
|
|
1466
1485
|
clearInstanceConfigCache();
|
|
1467
1486
|
} catch {
|
|
1468
1487
|
}
|
|
@@ -1741,7 +1760,7 @@ Commands:
|
|
|
1741
1760
|
svamp workflow --help Automation workflows (schedule / event / idle triggers)
|
|
1742
1761
|
svamp process --help Process supervisor (apply, list, start, stop, logs)
|
|
1743
1762
|
svamp machine --help Machine sharing & security contexts
|
|
1744
|
-
svamp fleet --help Fan-out commands across all your machines (status, upgrade-claude, upgrade-codex, upgrade-svamp, daemon-restart, push-skill)
|
|
1763
|
+
svamp fleet --help Fan-out commands across all your machines (status, upgrade-claude, upgrade-codex, upgrade-kimi, upgrade-svamp, daemon-restart, push-skill)
|
|
1745
1764
|
svamp skills --help Skills marketplace (find, install, publish)
|
|
1746
1765
|
svamp service --help Service exposure (HTTP services from sandboxes)
|
|
1747
1766
|
svamp outpost --help Connect a remote machine (FDE outpost): up, exec, list, install
|
|
@@ -1808,7 +1827,7 @@ async function applyClaudeAuthFlags(argv) {
|
|
|
1808
1827
|
"--use-hypha-proxy, --use-claude-login, and --anthropic-base-url/--anthropic-api-key are mutually exclusive"
|
|
1809
1828
|
);
|
|
1810
1829
|
}
|
|
1811
|
-
const mod = await import('./run-
|
|
1830
|
+
const mod = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.ar; });
|
|
1812
1831
|
if (hasHypha) {
|
|
1813
1832
|
let url;
|
|
1814
1833
|
const hyphaIdx = argv.indexOf("--use-hypha-proxy");
|
|
@@ -1862,7 +1881,7 @@ async function applyDaemonShareFlag(argv) {
|
|
|
1862
1881
|
}
|
|
1863
1882
|
}
|
|
1864
1883
|
if (collected.length === 0) return;
|
|
1865
|
-
const { updateEnvFile } = await import('./run-
|
|
1884
|
+
const { updateEnvFile } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.ar; });
|
|
1866
1885
|
const seen = /* @__PURE__ */ new Set();
|
|
1867
1886
|
const deduped = collected.filter((e) => {
|
|
1868
1887
|
const k = e.toLowerCase();
|
|
@@ -1895,7 +1914,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1895
1914
|
}
|
|
1896
1915
|
});
|
|
1897
1916
|
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(" ");
|
|
1898
|
-
const { wiseAskCli } = await import('./commands-
|
|
1917
|
+
const { wiseAskCli } = await import('./commands-r4QVEq12.mjs');
|
|
1899
1918
|
await wiseAskCli(machineId, message, sessionId, { json });
|
|
1900
1919
|
return;
|
|
1901
1920
|
}
|
|
@@ -1907,7 +1926,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1907
1926
|
}
|
|
1908
1927
|
return void 0;
|
|
1909
1928
|
};
|
|
1910
|
-
const { runWiseVoiceCli } = await import('./headlessCli-
|
|
1929
|
+
const { runWiseVoiceCli } = await import('./headlessCli-Dg-awx4h.mjs');
|
|
1911
1930
|
await runWiseVoiceCli({ voice: valueOf(["--voice"]), wakeKeywordPath: valueOf(["--wake"]), model: valueOf(["--model"]) });
|
|
1912
1931
|
return;
|
|
1913
1932
|
}
|
|
@@ -1925,7 +1944,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1925
1944
|
const mode = valueOf(["--mode"]);
|
|
1926
1945
|
const mission = valueOf(["--mission"]);
|
|
1927
1946
|
const url = rest.slice(1).find((a) => /^https?:\/\//.test(a)) || "";
|
|
1928
|
-
const { wiseJoinMeetingCli } = await import('./commands-
|
|
1947
|
+
const { wiseJoinMeetingCli } = await import('./commands-r4QVEq12.mjs');
|
|
1929
1948
|
await wiseJoinMeetingCli(machineId, url, sessionId, { json, mode, mission });
|
|
1930
1949
|
return;
|
|
1931
1950
|
}
|
|
@@ -1937,7 +1956,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1937
1956
|
}
|
|
1938
1957
|
return void 0;
|
|
1939
1958
|
};
|
|
1940
|
-
const { wiseLeaveMeetingCli } = await import('./commands-
|
|
1959
|
+
const { wiseLeaveMeetingCli } = await import('./commands-r4QVEq12.mjs');
|
|
1941
1960
|
await wiseLeaveMeetingCli(valueOf(["--machine", "-m"]), valueOf(["--session", "-s"]), { json: rest.includes("--json") });
|
|
1942
1961
|
return;
|
|
1943
1962
|
}
|
|
@@ -1961,7 +1980,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1961
1980
|
}
|
|
1962
1981
|
});
|
|
1963
1982
|
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(" ");
|
|
1964
|
-
const { wiseAnnounceCli } = await import('./commands-
|
|
1983
|
+
const { wiseAnnounceCli } = await import('./commands-r4QVEq12.mjs');
|
|
1965
1984
|
await wiseAnnounceCli(machineId, text, sessionId, { json });
|
|
1966
1985
|
return;
|
|
1967
1986
|
}
|
|
@@ -1973,7 +1992,7 @@ async function handleWiseAgentCommand(rest) {
|
|
|
1973
1992
|
}
|
|
1974
1993
|
return void 0;
|
|
1975
1994
|
};
|
|
1976
|
-
const { wiseMeetingsCli } = await import('./commands-
|
|
1995
|
+
const { wiseMeetingsCli } = await import('./commands-r4QVEq12.mjs');
|
|
1977
1996
|
await wiseMeetingsCli(valueOf(["--machine", "-m"]), { json: rest.includes("--json") });
|
|
1978
1997
|
return;
|
|
1979
1998
|
}
|
|
@@ -2023,7 +2042,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
2023
2042
|
return;
|
|
2024
2043
|
}
|
|
2025
2044
|
const authArgs = rest.slice(1);
|
|
2026
|
-
const mod = await import('./auth-
|
|
2045
|
+
const mod = await import('./auth-D5yTcsy2.mjs');
|
|
2027
2046
|
let action;
|
|
2028
2047
|
try {
|
|
2029
2048
|
action = mod.parseWiseAgentAuthArgs(authArgs);
|
|
@@ -2033,7 +2052,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
2033
2052
|
return;
|
|
2034
2053
|
}
|
|
2035
2054
|
if (action) {
|
|
2036
|
-
const { updateEnvFile } = await import('./run-
|
|
2055
|
+
const { updateEnvFile } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.ar; });
|
|
2037
2056
|
const updates = mod.buildWiseAgentEnvUpdates(action);
|
|
2038
2057
|
updateEnvFile(updates);
|
|
2039
2058
|
for (const [k, v] of Object.entries(updates)) {
|
|
@@ -2047,7 +2066,7 @@ If none is set, hitting a WISE Agent channel returns a clear "not configured" er
|
|
|
2047
2066
|
}
|
|
2048
2067
|
async function handleDaemonAuthCommand(argv) {
|
|
2049
2068
|
const sub = (argv[0] || "status").toLowerCase();
|
|
2050
|
-
const mod = await import('./run-
|
|
2069
|
+
const mod = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.ar; });
|
|
2051
2070
|
if (sub === "--help" || sub === "-h" || sub === "help") {
|
|
2052
2071
|
console.log(`
|
|
2053
2072
|
svamp daemon auth \u2014 Configure how Claude subprocesses authenticate
|
|
@@ -2121,8 +2140,8 @@ one step: --use-hypha-proxy / --use-claude-login / --anthropic-base-url URL --an
|
|
|
2121
2140
|
}
|
|
2122
2141
|
async function handleDaemonCodexAuthCommand(argv) {
|
|
2123
2142
|
const sub = (argv[0] || "status").toLowerCase();
|
|
2124
|
-
const { updateEnvFile } = await import('./run-
|
|
2125
|
-
const { resolveCodexProvider } = await import('./run-
|
|
2143
|
+
const { updateEnvFile } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.ar; });
|
|
2144
|
+
const { resolveCodexProvider } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.as; });
|
|
2126
2145
|
const redact = (k) => k && k.length > 10 ? `${k.slice(0, 6)}\u2026${k.slice(-4)}` : k ? "***" : "(unset)";
|
|
2127
2146
|
if (sub === "--help" || sub === "-h" || sub === "help") {
|
|
2128
2147
|
console.log(`
|
|
@@ -2206,6 +2225,120 @@ The generic LLM_API_BASE / LLM_API_KEY / LLM_MODEL env vars are also honored if
|
|
|
2206
2225
|
console.error("Available: status, set <URL> <KEY> [MODEL], use-openai [KEY], use-chatgpt, clear");
|
|
2207
2226
|
process.exit(1);
|
|
2208
2227
|
}
|
|
2228
|
+
async function handleDaemonKimiAuthCommand(argv) {
|
|
2229
|
+
const sub = (argv[0] || "status").toLowerCase();
|
|
2230
|
+
const { updateEnvFile } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.ar; });
|
|
2231
|
+
const { resolveKimiProvider, buildKimiCatalogAddArgs, DEFAULT_KIMI_PROVIDER } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.aA; });
|
|
2232
|
+
const redact = (k) => k && k.length > 10 ? `${k.slice(0, 6)}\u2026${k.slice(-4)}` : k ? "***" : "(unset)";
|
|
2233
|
+
const PRESETS = {
|
|
2234
|
+
"use-moonshot": { provider: "moonshotai", base: "https://api.moonshot.ai/v1", label: "Moonshot AI (moonshotai)" },
|
|
2235
|
+
"use-moonshot-cn": { provider: "moonshotai-cn", base: "https://api.moonshot.cn/v1", label: "Moonshot AI China (moonshotai-cn)" },
|
|
2236
|
+
"use-coding": { provider: "kimi-for-coding", base: "https://api.kimi.com/coding", label: "Kimi for Coding (kimi-for-coding)" }
|
|
2237
|
+
};
|
|
2238
|
+
if (sub === "--help" || sub === "-h" || sub === "help") {
|
|
2239
|
+
console.log(`
|
|
2240
|
+
svamp daemon kimi-auth \u2014 Configure how Kimi (MoonshotAI) authenticates (parallels \`svamp daemon codex-auth\`)
|
|
2241
|
+
|
|
2242
|
+
svamp daemon kimi-auth Show current Kimi provider / key (redacted)
|
|
2243
|
+
svamp daemon kimi-auth set <API_KEY> [--provider <id>] [--base-url <url>] [--model <alias>]
|
|
2244
|
+
Configure an explicit provider (default id: ${DEFAULT_KIMI_PROVIDER}).
|
|
2245
|
+
svamp daemon kimi-auth use-moonshot <API_KEY> Preset: Moonshot AI (provider=moonshotai, api.moonshot.ai/v1)
|
|
2246
|
+
svamp daemon kimi-auth use-moonshot-cn <API_KEY> Preset: Moonshot AI China (provider=moonshotai-cn)
|
|
2247
|
+
svamp daemon kimi-auth use-coding <API_KEY> Preset: Kimi for Coding (provider=kimi-for-coding, api.kimi.com/coding)
|
|
2248
|
+
svamp daemon kimi-auth clear Remove svamp's stored Kimi credentials.
|
|
2249
|
+
|
|
2250
|
+
Persisted to ~/.svamp/.env (SVAMP_KIMI_API_KEY / _PROVIDER / _API_BASE / _MODEL) AND written to
|
|
2251
|
+
~/.kimi-code/config.toml via \`kimi provider catalog add\`. Run \`svamp daemon restart\` afterwards to apply.
|
|
2252
|
+
The generic LLM_API_KEY / LLM_API_BASE / LLM_MODEL env vars are also honored as a fallback.
|
|
2253
|
+
`);
|
|
2254
|
+
return;
|
|
2255
|
+
}
|
|
2256
|
+
if (sub === "status" || sub === "show") {
|
|
2257
|
+
const p = resolveKimiProvider(process.env);
|
|
2258
|
+
const { existsSync } = await import('node:fs');
|
|
2259
|
+
const nativeAuth = existsSync(`${process.env.HOME}/.kimi-code/config.toml`);
|
|
2260
|
+
if (p.apiKey) {
|
|
2261
|
+
console.log("Kimi auth: svamp-configured provider");
|
|
2262
|
+
console.log(` provider : ${p.provider}`);
|
|
2263
|
+
console.log(` api_key : ${redact(p.apiKey)}`);
|
|
2264
|
+
console.log(` base_url : ${p.apiBase ?? "(catalog default)"}`);
|
|
2265
|
+
console.log(` model : ${p.model ?? "(provider default)"}`);
|
|
2266
|
+
} else {
|
|
2267
|
+
console.log(`Kimi auth: not configured by svamp (${nativeAuth ? "~/.kimi-code/config.toml present \u2014 using your own `kimi login` / `kimi provider`" : "no ~/.kimi-code/config.toml \u2014 run kimi-auth use-moonshot <key> or `kimi login`"})`);
|
|
2268
|
+
}
|
|
2269
|
+
return;
|
|
2270
|
+
}
|
|
2271
|
+
const applyProvider = async (provider, apiKey, base, model, label) => {
|
|
2272
|
+
updateEnvFile({
|
|
2273
|
+
SVAMP_KIMI_API_KEY: apiKey,
|
|
2274
|
+
SVAMP_KIMI_PROVIDER: provider,
|
|
2275
|
+
SVAMP_KIMI_API_BASE: base || "",
|
|
2276
|
+
SVAMP_KIMI_MODEL: model || ""
|
|
2277
|
+
});
|
|
2278
|
+
const args2 = buildKimiCatalogAddArgs({ provider, apiKey, apiBase: base, model });
|
|
2279
|
+
let localOk = false;
|
|
2280
|
+
if (args2) {
|
|
2281
|
+
const { spawnSync } = await import('node:child_process');
|
|
2282
|
+
const r = spawnSync("kimi", args2, {
|
|
2283
|
+
stdio: ["ignore", "inherit", "inherit"],
|
|
2284
|
+
env: { ...process.env, KIMI_CLI_NO_AUTO_UPDATE: "1" },
|
|
2285
|
+
timeout: 3e4
|
|
2286
|
+
});
|
|
2287
|
+
localOk = r.status === 0;
|
|
2288
|
+
if (!localOk) {
|
|
2289
|
+
console.warn(" (note: `kimi provider catalog add` did not succeed locally \u2014 is kimi installed? `npm i -g @moonshot-ai/kimi-code`.");
|
|
2290
|
+
console.warn(" The daemon will retry the config at session spawn from the stored env.)");
|
|
2291
|
+
}
|
|
2292
|
+
}
|
|
2293
|
+
console.log(`Kimi auth set: ${label} (provider=${provider}${base ? `, base=${base}` : ""}${model ? `, model=${model}` : ""}).`);
|
|
2294
|
+
console.log(` api_key: ${redact(apiKey)}${localOk ? " \u2014 written to ~/.kimi-code/config.toml." : ""}`);
|
|
2295
|
+
console.log('Run "svamp daemon restart" to apply to the daemon.');
|
|
2296
|
+
};
|
|
2297
|
+
if (sub === "set") {
|
|
2298
|
+
const rest = argv.slice(1);
|
|
2299
|
+
let key = "";
|
|
2300
|
+
let provider = DEFAULT_KIMI_PROVIDER;
|
|
2301
|
+
let base;
|
|
2302
|
+
let model;
|
|
2303
|
+
for (let i = 0; i < rest.length; i++) {
|
|
2304
|
+
const a = rest[i];
|
|
2305
|
+
if (a === "--provider") {
|
|
2306
|
+
provider = rest[++i];
|
|
2307
|
+
} else if (a === "--base-url" || a === "--base") {
|
|
2308
|
+
base = rest[++i];
|
|
2309
|
+
} else if (a === "--model") {
|
|
2310
|
+
model = rest[++i];
|
|
2311
|
+
} else if (!a.startsWith("--") && !key) {
|
|
2312
|
+
key = a;
|
|
2313
|
+
}
|
|
2314
|
+
}
|
|
2315
|
+
if (!key) {
|
|
2316
|
+
console.error("Usage: svamp daemon kimi-auth set <api-key> [--provider <id>] [--base-url <url>] [--model <alias>]");
|
|
2317
|
+
console.error(" e.g. svamp daemon kimi-auth set sk-... --provider moonshotai --model moonshotai/kimi-k2.5");
|
|
2318
|
+
process.exit(1);
|
|
2319
|
+
}
|
|
2320
|
+
await applyProvider(provider, key, base, model, `custom provider '${provider}'`);
|
|
2321
|
+
return;
|
|
2322
|
+
}
|
|
2323
|
+
if (PRESETS[sub]) {
|
|
2324
|
+
const key = argv[1];
|
|
2325
|
+
if (!key) {
|
|
2326
|
+
console.error(`Usage: svamp daemon kimi-auth ${sub} <api-key>`);
|
|
2327
|
+
process.exit(1);
|
|
2328
|
+
}
|
|
2329
|
+
const preset = PRESETS[sub];
|
|
2330
|
+
await applyProvider(preset.provider, key, preset.base, void 0, preset.label);
|
|
2331
|
+
return;
|
|
2332
|
+
}
|
|
2333
|
+
if (sub === "clear") {
|
|
2334
|
+
updateEnvFile({ SVAMP_KIMI_API_KEY: "", SVAMP_KIMI_PROVIDER: "", SVAMP_KIMI_API_BASE: "", SVAMP_KIMI_MODEL: "" });
|
|
2335
|
+
console.log(`Cleared svamp's stored Kimi credentials (~/.kimi-code/config.toml left as-is). Run "svamp daemon restart".`);
|
|
2336
|
+
return;
|
|
2337
|
+
}
|
|
2338
|
+
console.error(`Unknown subcommand: svamp daemon kimi-auth ${sub}`);
|
|
2339
|
+
console.error("Available: status, set <KEY> [--provider p] [--base-url u] [--model m], use-moonshot <KEY>, use-moonshot-cn <KEY>, use-coding <KEY>, clear");
|
|
2340
|
+
process.exit(1);
|
|
2341
|
+
}
|
|
2209
2342
|
function printSessionHelp() {
|
|
2210
2343
|
console.log(`
|
|
2211
2344
|
svamp session \u2014 Spawn and manage AI agent sessions
|
|
@@ -2455,7 +2588,7 @@ Examples:
|
|
|
2455
2588
|
async function printSkillsHelp() {
|
|
2456
2589
|
let browseUrl = "<HYPHA_SERVER_URL>/<workspace>/artifacts/marketplace (set HYPHA_SERVER_URL)";
|
|
2457
2590
|
try {
|
|
2458
|
-
const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-
|
|
2591
|
+
const { getArtifactBaseUrl, getSkillsCollectionName } = await import('./run-Y3YLx8x7.mjs').then(function (n) { return n.aC; });
|
|
2459
2592
|
browseUrl = `${getArtifactBaseUrl()}/${getSkillsCollectionName()}`;
|
|
2460
2593
|
} catch {
|
|
2461
2594
|
}
|
|
@@ -2522,10 +2655,11 @@ Usage:
|
|
|
2522
2655
|
Examples:
|
|
2523
2656
|
svamp agent gemini Start Gemini agent in current directory
|
|
2524
2657
|
svamp agent gemini -d /tmp/proj Start Gemini agent in /tmp/proj
|
|
2658
|
+
svamp agent kimi Start Kimi (MoonshotAI) agent
|
|
2525
2659
|
svamp agent codex Start Codex agent
|
|
2526
2660
|
svamp agent -- mycli --acp Start custom ACP-compatible agent
|
|
2527
2661
|
|
|
2528
|
-
Known agents: gemini (ACP), codex (MCP)
|
|
2662
|
+
Known agents: gemini (ACP), kimi (ACP), codex (MCP)
|
|
2529
2663
|
`);
|
|
2530
2664
|
}
|
|
2531
2665
|
main().catch((err) => {
|