svamp-cli 0.2.324 → 0.2.326

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 (29) hide show
  1. package/README.md +2 -3
  2. package/bin/skills/crew/SKILL.md +10 -2
  3. package/dist/{adminCommands-CHE1wq5m.mjs → adminCommands-D1NzA4Hb.mjs} +1 -1
  4. package/dist/{agentCommands-D7CV6DKL.mjs → agentCommands-DUHUBzrj.mjs} +5 -5
  5. package/dist/{auth-BfimMIpL.mjs → auth-DogM3PPm.mjs} +3 -3
  6. package/dist/{cli-Dv0vM2P7.mjs → cli-PWoHWBkF.mjs} +79 -79
  7. package/dist/cli.mjs +4 -4
  8. package/dist/{commands-CuyCq5eZ.mjs → commands-B5bC9eXz.mjs} +3 -3
  9. package/dist/{commands-CQK2nD3o.mjs → commands-CBk4dLUP.mjs} +3 -3
  10. package/dist/{commands-CdbvHh2p.mjs → commands-Ck4pP86Q.mjs} +4 -4
  11. package/dist/{commands-BA4LVlQW.mjs → commands-CqqQYRzg.mjs} +2 -2
  12. package/dist/{commands-GRfwAHgR.mjs → commands-CxfUr2Qr.mjs} +1 -1
  13. package/dist/{commands-4hjEGB-I.mjs → commands-D-4ry2I6.mjs} +13 -13
  14. package/dist/{commands-BQ7UFowe.mjs → commands-Dm9KNB-p.mjs} +3 -3
  15. package/dist/{commands-jaaQooYW.mjs → commands-Dt_MecCB.mjs} +3 -3
  16. package/dist/{fleet-CSh3MUcM.mjs → fleet-Bzg3YxM4.mjs} +2 -2
  17. package/dist/{headlessCli-Zl5Yu4CL.mjs → headlessCli-DvJI9DRh.mjs} +4 -4
  18. package/dist/index.mjs +3 -3
  19. package/dist/{notifyCommands-BQZXhfLt.mjs → notifyCommands-BpMErHcv.mjs} +1 -1
  20. package/dist/{package-DgboZg2o.mjs → package-D_BgajkI.mjs} +2 -2
  21. package/dist/{pinnedClaudeCode-8SZDu7O-.mjs → pinnedClaudeCode-BO0Qs_kE.mjs} +1 -1
  22. package/dist/{rpc-C1KIoUyz.mjs → rpc-27xBajCe.mjs} +3 -3
  23. package/dist/{rpc-BIzMNjqC.mjs → rpc-Qcj4M_LQ.mjs} +3 -3
  24. package/dist/{run-CEp9YpUZ.mjs → run-BBBr4jkI.mjs} +202 -47
  25. package/dist/{run-DKAROgSg.mjs → run-CocRShOR.mjs} +1 -1
  26. package/dist/{scheduler-DIYulmdV.mjs → scheduler-DjAVEyn3.mjs} +3 -3
  27. package/dist/{serveCommands-Bq5Cw3mE.mjs → serveCommands-BK-wWc_i.mjs} +12 -12
  28. package/dist/{sideband-C83128hf.mjs → sideband-5ck3CDWM.mjs} +3 -3
  29. package/package.json +3 -3
package/README.md CHANGED
@@ -78,7 +78,7 @@ All session commands support `--machine <id>` / `-m <id>` to target a specific m
78
78
  svamp session list [--active] [--json]
79
79
  svamp session machines # List discoverable machines
80
80
  svamp session spawn <agent> [-d <path>] [--message <msg>] [--wait]
81
- svamp session stop <id>
81
+ svamp session archive <id> # Stop + archive a session
82
82
  svamp session info <id> [--json]
83
83
  svamp session send <id> <message> [--wait] [--timeout N]
84
84
  svamp session wait <id> [--timeout N]
@@ -148,8 +148,7 @@ svamp service expose <name> --port <port> # Expose local port via frpc
148
148
  svamp service expose <name> --port <port> --group <g> --group-key <key>
149
149
  # Multi-machine load balancing
150
150
  svamp service serve <name> [dir] # Static-files tunnel
151
- svamp service list # List active tunnels
152
- svamp service info <name> # Show details + health
151
+ svamp service list # List active tunnels (with status)
153
152
  svamp service delete <name> # Stop tunnel
154
153
  ```
155
154
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: crew
3
- version: 0.2.0
3
+ version: 0.3.0
4
4
  description: Coordinate work as a lead delegating features to managed worktree children — spawn a child per feature on its own branch, run it as a loop until done, and pull finished work back to the base branch with merge-and-close. Use when one session should run a project and farm out features instead of piling many sessions on one working tree.
5
5
  ---
6
6
 
@@ -15,14 +15,22 @@ A **crew** is emergent, not a heavy object: it is just plain sessions linked by
15
15
  `parentSessionId` + a `crew.role`. A **feature child** always (a) has the lead as its
16
16
  parent, (b) lives in its own `.dev/worktree/<n>` on its own branch, and (c) runs as a loop
17
17
  with `parent: <lead>` — i.e. **the lead is the judge** that decides when the child is done
18
- (this is the `parent`-routed case of the loop … until gate; see the `loop` skill).
18
+ (this is the `parent`-routed case of the loop … until gate; the loop engine is Claude Code's
19
+ native `/goal`, driven from `svamp session loop`).
19
20
 
20
21
  ## The verbs (these are your tools)
21
22
 
22
23
  ```
23
24
  svamp feature start "<brief>" [--oracle "<test cmd>"] [--base <branch>] [--action nudge|block]
25
+ [--issue <id>] [--max N] [--model <id>]
24
26
  # (lead) create a worktree child on a new branch, run it as a loop until done
25
27
  # (oracle → parent verdict), and brief it. Prints the child id.
28
+ # --issue <id> links the child to an existing backlog issue: its verdict routes
29
+ # ONTO that issue. This is the seam that joins crew to the backlog the loop
30
+ # oracle (`svamp issue pending`) reads — without it the child's result is
31
+ # invisible to the loop, so pass it whenever the feature came from an issue.
32
+ # --max N bounds the child's loop iterations (a hard stop, unlike the soft
33
+ # progress-based cap); --model <id> picks the child's model.
26
34
  svamp feature start "<brief>" --no-worktree --dir <folder>
27
35
  # (lead) STANDALONE child: run a child directly IN <folder> (a subdir or sibling
28
36
  # project) with NO worktree/branch. Still attached (parentSessionId), shows in
@@ -1,4 +1,4 @@
1
- import { c as connectToHypha, K as computeCollectionConfigUpdate, L as SYSTEM_COLLECTION_CONFIG } from './run-CEp9YpUZ.mjs';
1
+ import { c as connectToHypha, K as computeCollectionConfigUpdate, L as SYSTEM_COLLECTION_CONFIG } from './run-BBBr4jkI.mjs';
2
2
  import { existsSync, readFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import os from 'node:os';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync, renameSync } from '
2
2
  import { join, dirname } from 'node:path';
3
3
  import os from 'node:os';
4
4
  import { requireNotSandboxed } from './sandboxDetect-DNTcbgWD.mjs';
5
- import { e as shortId } from './run-CEp9YpUZ.mjs';
5
+ import { e as shortId } from './run-BBBr4jkI.mjs';
6
6
  import 'os';
7
7
  import 'fs/promises';
8
8
  import 'fs';
@@ -96,7 +96,7 @@ async function sessionSetTitle(title) {
96
96
  }
97
97
  async function sessionSetProjectDescription(description) {
98
98
  const dir = process.cwd();
99
- const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-CEp9YpUZ.mjs').then(function (n) { return n.as; });
99
+ const { projectName, writeProjectInfo, sanitizeDescription, projectInfoPath } = await import('./run-BBBr4jkI.mjs').then(function (n) { return n.as; });
100
100
  const desc = sanitizeDescription(description, 240);
101
101
  if (!desc) {
102
102
  console.error("Project description is empty.");
@@ -369,7 +369,7 @@ async function sessionBroadcast(action, args) {
369
369
  console.log(`Broadcast sent: ${action}`);
370
370
  }
371
371
  async function connectToMachineService() {
372
- const { connectAndGetMachine } = await import('./commands-GRfwAHgR.mjs');
372
+ const { connectAndGetMachine } = await import('./commands-CxfUr2Qr.mjs');
373
373
  return connectAndGetMachine();
374
374
  }
375
375
  function buildInboxMessage(args) {
@@ -452,7 +452,7 @@ async function inboxSend(targetSessionId, opts) {
452
452
  console.error("Message body is required.");
453
453
  process.exit(1);
454
454
  }
455
- const { connectAndResolveSession } = await import('./commands-GRfwAHgR.mjs');
455
+ const { connectAndResolveSession } = await import('./commands-CxfUr2Qr.mjs');
456
456
  let server;
457
457
  try {
458
458
  const { targetId, messageId } = await inboxSendCore(
@@ -507,7 +507,7 @@ async function inboxReply(messageId, body, opts) {
507
507
  console.error("SVAMP_SESSION_ID not set. This command must be run inside a Svamp session.");
508
508
  process.exit(1);
509
509
  }
510
- const { connectAndResolveSession } = await import('./commands-GRfwAHgR.mjs');
510
+ const { connectAndResolveSession } = await import('./commands-CxfUr2Qr.mjs');
511
511
  const { server: localServer, machine: localMachine } = await connectToMachineService();
512
512
  let localDisconnected = false;
513
513
  const disconnectLocal = async () => {
@@ -1,4 +1,4 @@
1
- import { a0 as resolveModel } from './run-CEp9YpUZ.mjs';
1
+ import { a0 as resolveModel } from './run-BBBr4jkI.mjs';
2
2
  import 'os';
3
3
  import 'fs/promises';
4
4
  import 'fs';
@@ -6,14 +6,14 @@ import 'path';
6
6
  import 'url';
7
7
  import 'child_process';
8
8
  import 'crypto';
9
- import 'node:crypto';
10
9
  import 'node:fs';
10
+ import 'node:path';
11
+ import 'node:crypto';
11
12
  import 'node:child_process';
12
13
  import 'util';
13
14
  import 'http';
14
15
  import 'net';
15
16
  import 'node:os';
16
- import 'node:path';
17
17
  import 'node:events';
18
18
  import '@agentclientprotocol/sdk';
19
19
  import 'node:util';