svamp-cli 0.1.46 → 0.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/cli.mjs +91 -14
  2. package/dist/commands-8Wmq0uak.mjs +1407 -0
  3. package/dist/commands-B-XaqFDB.mjs +1407 -0
  4. package/dist/commands-BEhSQqTp.mjs +507 -0
  5. package/dist/commands-BTEmyf2m.mjs +1407 -0
  6. package/dist/commands-BY09VTpk.mjs +1375 -0
  7. package/dist/commands-Bi0zYJvj.mjs +1407 -0
  8. package/dist/commands-C6KDr9Yp.mjs +1407 -0
  9. package/dist/commands-CQz67Rm1.mjs +1395 -0
  10. package/dist/commands-CToIvBFX.mjs +1375 -0
  11. package/dist/commands-CYMSyqYC.mjs +1395 -0
  12. package/dist/commands-CdyCWC3y.mjs +1395 -0
  13. package/dist/commands-CrdvbXPI.mjs +1395 -0
  14. package/dist/commands-D7-NHH5q.mjs +1407 -0
  15. package/dist/commands-DVw-P6-0.mjs +1407 -0
  16. package/dist/commands-DsIoygTL.mjs +1395 -0
  17. package/dist/commands-DypTF36z.mjs +506 -0
  18. package/dist/commands-EUMJqBCs.mjs +1407 -0
  19. package/dist/commands-Jk5no-DX.mjs +1407 -0
  20. package/dist/commands-O1Q9g00y.mjs +1395 -0
  21. package/dist/commands-OwMfbBrU.mjs +1395 -0
  22. package/dist/commands-S_MFQ9n1.mjs +354 -0
  23. package/dist/commands-T3q8VKCY.mjs +1407 -0
  24. package/dist/commands-g-1n3_Rp.mjs +1395 -0
  25. package/dist/commands-otgzprjb.mjs +1375 -0
  26. package/dist/index.mjs +1 -1
  27. package/dist/package-BMCjXPI9.mjs +58 -0
  28. package/dist/package-DG0AkZdm.mjs +58 -0
  29. package/dist/run-4li60ojK.mjs +1051 -0
  30. package/dist/run-6dwQnoBL.mjs +1051 -0
  31. package/dist/run-B-PWtXF-.mjs +5894 -0
  32. package/dist/run-B1ivovUl.mjs +5964 -0
  33. package/dist/run-BE_AIJ7z.mjs +1051 -0
  34. package/dist/run-BVcPemGr.mjs +5947 -0
  35. package/dist/run-BWqEmIiz.mjs +5964 -0
  36. package/dist/run-Bl8OkKyC.mjs +5969 -0
  37. package/dist/run-Bmx5wEBF.mjs +1051 -0
  38. package/dist/run-BzRP6Q5t.mjs +1051 -0
  39. package/dist/run-C0dyMP62.mjs +1051 -0
  40. package/dist/run-CC2C8P-U.mjs +6031 -0
  41. package/dist/run-CDBKhQ1Z.mjs +1051 -0
  42. package/dist/run-CEB6sYzn.mjs +5962 -0
  43. package/dist/run-CIFezmkC.mjs +5949 -0
  44. package/dist/run-CLA9zw7J.mjs +5907 -0
  45. package/dist/run-CSUAy5T5.mjs +1051 -0
  46. package/dist/run-CdihMx0V.mjs +1051 -0
  47. package/dist/run-CkbDK6jA.mjs +1051 -0
  48. package/dist/run-Ckyg9-fm.mjs +6079 -0
  49. package/dist/run-Ct--DWF1.mjs +1051 -0
  50. package/dist/run-D0ow-xms.mjs +5905 -0
  51. package/dist/run-D2X3jEqg.mjs +1051 -0
  52. package/dist/run-D691XPXy.mjs +6031 -0
  53. package/dist/run-DA-YBjNw.mjs +6018 -0
  54. package/dist/run-DByI8mI0.mjs +1051 -0
  55. package/dist/run-DDF-tRbn.mjs +5954 -0
  56. package/dist/run-DOPaGRT2.mjs +6027 -0
  57. package/dist/run-DP7KSZqR.mjs +1051 -0
  58. package/dist/run-DaReJPf8.mjs +1051 -0
  59. package/dist/run-DfuHUDIJ.mjs +1051 -0
  60. package/dist/run-DfwfyFqj.mjs +5975 -0
  61. package/dist/run-DgUDGHZy.mjs +1051 -0
  62. package/dist/run-Dm3U4FB5.mjs +6018 -0
  63. package/dist/run-DzXohf8-.mjs +1051 -0
  64. package/dist/run-HU4XjZfs.mjs +6023 -0
  65. package/dist/run-ZDa17iLg.mjs +6060 -0
  66. package/dist/run-ZN0qMdS_.mjs +1051 -0
  67. package/package.json +2 -2
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { b as stopDaemon, s as startDaemon, d as daemonStatus } from './run-C_8iOjO1.mjs';
1
+ import { b as stopDaemon, s as startDaemon, d as daemonStatus } from './run-Ckyg9-fm.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -103,12 +103,14 @@ async function main() {
103
103
  await handleSessionCommand();
104
104
  } else if (subcommand === "machine") {
105
105
  await handleMachineCommand();
106
+ } else if (subcommand === "skills") {
107
+ await handleSkillsCommand();
106
108
  } else if (subcommand === "--help" || subcommand === "-h") {
107
109
  printHelp();
108
110
  } else if (!subcommand || subcommand === "start") {
109
111
  await handleInteractiveCommand();
110
112
  } else if (subcommand === "--version" || subcommand === "-v") {
111
- const pkg = await import('./package-rasGC9_z.mjs').catch(() => ({ default: { version: "unknown" } }));
113
+ const pkg = await import('./package-DG0AkZdm.mjs').catch(() => ({ default: { version: "unknown" } }));
112
114
  console.log(`svamp version: ${pkg.default.version}`);
113
115
  } else {
114
116
  console.error(`Unknown command: ${subcommand}`);
@@ -117,7 +119,7 @@ async function main() {
117
119
  }
118
120
  }
119
121
  async function handleInteractiveCommand() {
120
- const { runInteractive } = await import('./run-D3bhRCCb.mjs');
122
+ const { runInteractive } = await import('./run-6dwQnoBL.mjs');
121
123
  const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
122
124
  let directory = process.cwd();
123
125
  let resumeSessionId;
@@ -162,7 +164,7 @@ async function handleAgentCommand() {
162
164
  return;
163
165
  }
164
166
  if (agentArgs[0] === "list") {
165
- const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.i; });
167
+ const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-Ckyg9-fm.mjs').then(function (n) { return n.i; });
166
168
  console.log("Known agents:");
167
169
  for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
168
170
  console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
@@ -174,7 +176,7 @@ async function handleAgentCommand() {
174
176
  console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
175
177
  return;
176
178
  }
177
- const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.i; });
179
+ const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-Ckyg9-fm.mjs').then(function (n) { return n.i; });
178
180
  let cwd = process.cwd();
179
181
  const filteredArgs = [];
180
182
  for (let i = 0; i < agentArgs.length; i++) {
@@ -198,12 +200,12 @@ async function handleAgentCommand() {
198
200
  console.log(`Starting ${config.agentName} agent in ${cwd}...`);
199
201
  let backend;
200
202
  if (KNOWN_MCP_AGENTS[config.agentName]) {
201
- const { CodexMcpBackend } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.j; });
203
+ const { CodexMcpBackend } = await import('./run-Ckyg9-fm.mjs').then(function (n) { return n.j; });
202
204
  backend = new CodexMcpBackend({ cwd, log: logFn });
203
205
  } else {
204
- const { AcpBackend } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.h; });
205
- const { GeminiTransport } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.G; });
206
- const { DefaultTransport } = await import('./run-C_8iOjO1.mjs').then(function (n) { return n.D; });
206
+ const { AcpBackend } = await import('./run-Ckyg9-fm.mjs').then(function (n) { return n.h; });
207
+ const { GeminiTransport } = await import('./run-Ckyg9-fm.mjs').then(function (n) { return n.G; });
208
+ const { DefaultTransport } = await import('./run-Ckyg9-fm.mjs').then(function (n) { return n.D; });
207
209
  const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
208
210
  backend = new AcpBackend({
209
211
  agentName: config.agentName,
@@ -321,7 +323,7 @@ async function handleSessionCommand() {
321
323
  printSessionHelp();
322
324
  return;
323
325
  }
324
- const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionQueueAdd, sessionQueueList, sessionQueueClear } = await import('./commands-Cc73uUnP.mjs');
326
+ const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionQueueAdd, sessionQueueList, sessionQueueClear } = await import('./commands-DsIoygTL.mjs');
325
327
  const parseFlagStr = (flag, shortFlag) => {
326
328
  for (let i = 1; i < sessionArgs.length; i++) {
327
329
  if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
@@ -373,7 +375,7 @@ async function handleSessionCommand() {
373
375
  allowDomain.push(sessionArgs[++i]);
374
376
  }
375
377
  }
376
- const { parseShareArg } = await import('./commands-Cc73uUnP.mjs');
378
+ const { parseShareArg } = await import('./commands-DsIoygTL.mjs');
377
379
  const shareEntries = share.map((s) => parseShareArg(s));
378
380
  await sessionSpawn(agent, dir, targetMachineId, {
379
381
  message,
@@ -437,13 +439,14 @@ async function handleSessionCommand() {
437
439
  });
438
440
  } else if (sessionSubcommand === "share") {
439
441
  if (!sessionArgs[1]) {
440
- console.error("Usage: svamp session share <session-id> --add <email>[:<role>] | --remove <email> | --list");
442
+ console.error("Usage: svamp session share <session-id> --add <email>[:<role>] | --remove <email> | --list | --public <view|interact|off>");
441
443
  process.exit(1);
442
444
  }
443
445
  await sessionShare(sessionArgs[1], targetMachineId, {
444
446
  add: parseFlagStr("--add"),
445
447
  remove: parseFlagStr("--remove"),
446
- list: hasFlag("--list")
448
+ list: hasFlag("--list"),
449
+ public: parseFlagStr("--public")
447
450
  });
448
451
  } else if (sessionSubcommand === "ralph-start" || sessionSubcommand === "ralph") {
449
452
  if (!sessionArgs[1] || !sessionArgs[2]) {
@@ -505,7 +508,7 @@ async function handleMachineCommand() {
505
508
  return;
506
509
  }
507
510
  if (machineSubcommand === "share") {
508
- const { machineShare } = await import('./commands-Cc73uUnP.mjs');
511
+ const { machineShare } = await import('./commands-DsIoygTL.mjs');
509
512
  let machineId;
510
513
  const shareArgs = [];
511
514
  for (let i = 1; i < machineArgs.length; i++) {
@@ -541,6 +544,51 @@ async function handleMachineCommand() {
541
544
  }
542
545
  process.exit(0);
543
546
  }
547
+ async function handleSkillsCommand() {
548
+ const skillsArgs = args.slice(1);
549
+ const skillsSubcommand = skillsArgs[0];
550
+ if (!skillsSubcommand || skillsSubcommand === "--help" || skillsSubcommand === "-h") {
551
+ printSkillsHelp();
552
+ return;
553
+ }
554
+ const { skillsFind, skillsInstall, skillsList, skillsRemove, skillsPublish } = await import('./commands-BEhSQqTp.mjs');
555
+ if (skillsSubcommand === "find" || skillsSubcommand === "search") {
556
+ const query = skillsArgs.slice(1).filter((a) => !a.startsWith("--")).join(" ");
557
+ if (!query) {
558
+ console.error("Usage: svamp skills find <query> [--json]");
559
+ process.exit(1);
560
+ }
561
+ await skillsFind(query, { json: skillsArgs.includes("--json") });
562
+ } else if (skillsSubcommand === "install" || skillsSubcommand === "add") {
563
+ if (!skillsArgs[1]) {
564
+ console.error("Usage: svamp skills install <name> [--force]");
565
+ process.exit(1);
566
+ }
567
+ await skillsInstall(skillsArgs[1], { force: skillsArgs.includes("--force") });
568
+ } else if (skillsSubcommand === "list" || skillsSubcommand === "ls") {
569
+ await skillsList();
570
+ } else if (skillsSubcommand === "remove" || skillsSubcommand === "rm") {
571
+ if (!skillsArgs[1]) {
572
+ console.error("Usage: svamp skills remove <name>");
573
+ process.exit(1);
574
+ }
575
+ await skillsRemove(skillsArgs[1]);
576
+ } else if (skillsSubcommand === "publish") {
577
+ const publishArgs = skillsArgs.slice(1).filter((a) => !a.startsWith("--"));
578
+ if (!publishArgs[0]) {
579
+ console.error("Usage: svamp skills publish <path> [--version <tag>]");
580
+ process.exit(1);
581
+ }
582
+ const versionIdx = skillsArgs.indexOf("--version");
583
+ const versionTag = versionIdx !== -1 ? skillsArgs[versionIdx + 1] : void 0;
584
+ await skillsPublish(publishArgs[0], { version: versionTag });
585
+ } else {
586
+ console.error(`Unknown skills command: ${skillsSubcommand}`);
587
+ printSkillsHelp();
588
+ process.exit(1);
589
+ }
590
+ process.exit(0);
591
+ }
544
592
  async function loginToHypha() {
545
593
  const serverUrl = args[1] || process.env.HYPHA_SERVER_URL;
546
594
  if (!serverUrl) {
@@ -865,6 +913,9 @@ Usage:
865
913
  svamp session --help Show all session commands
866
914
  svamp machine share Manage machine sharing & security contexts
867
915
  svamp machine --help Show all machine commands
916
+ svamp skills find <query> Search the skills marketplace
917
+ svamp skills install <n> Install a skill from the marketplace
918
+ svamp skills --help Show all skill commands
868
919
  svamp agent list List known agents
869
920
  svamp agent <name> Start local agent session (gemini, codex)
870
921
  svamp --version Show version
@@ -919,6 +970,7 @@ Usage:
919
970
  svamp session share <id> --list List shared users
920
971
  svamp session share <id> --add <email>[:<role>] Share with user
921
972
  svamp session share <id> --remove <email> Remove shared user
973
+ svamp session share <id> --public <view|interact|off> Set public link access
922
974
 
923
975
  Options:
924
976
  --machine <id>, -m <id> Target a specific machine (prefix match supported)
@@ -948,6 +1000,7 @@ Examples:
948
1000
  svamp session spawn claude -d /tmp/proj --share alice@example.com:admin --deny-read /etc
949
1001
  svamp session spawn claude --security-context ./security.json
950
1002
  svamp session share abc12345 --add bob@example.com:view
1003
+ svamp session share abc12345 --public view
951
1004
  svamp session share abc12345 --list
952
1005
 
953
1006
  Ralph Loop (iterative task loop):
@@ -1003,6 +1056,30 @@ Examples:
1003
1056
  svamp machine share --list
1004
1057
  `);
1005
1058
  }
1059
+ function printSkillsHelp() {
1060
+ console.log(`
1061
+ svamp skills \u2014 Agent skills marketplace
1062
+
1063
+ Usage:
1064
+ svamp skills find <query> [--json] Search for skills in the marketplace
1065
+ svamp skills install <name> [--force] Install skill to ~/.claude/skills/<name>/
1066
+ svamp skills list List locally installed skills
1067
+ svamp skills remove <name> Remove an installed skill
1068
+ svamp skills publish <path> [--version <tag>] Publish a skill to the marketplace
1069
+
1070
+ Skills are stored in ~/.claude/skills/ and automatically detected by Claude Code.
1071
+ Each skill contains a SKILL.md file with instructions and metadata.
1072
+ Skills use git-backed storage \u2014 you can also clone and push via git.
1073
+
1074
+ Browse online: https://hypha.aicell.io/hypha-cloud/artifacts/marketplace
1075
+
1076
+ Examples:
1077
+ svamp skills find "code review"
1078
+ svamp skills install code-review
1079
+ svamp skills publish ./my-skill/
1080
+ svamp skills publish ./my-skill/ --version v1.0
1081
+ `);
1082
+ }
1006
1083
  function printInteractiveHelp() {
1007
1084
  console.log(`
1008
1085
  svamp \u2014 Interactive Claude session with cloud sync