You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds a `ding` field to <net>/convoy.toml letting a network choose its ding
sidecar: "node" (smalltalk's `st ding`, the default — unset → node, so every
existing user is unchanged) or "rust" (compoundingtech/ding — full st-ding
parity, ~0% CPU). Both take IDENTICAL args, so the selector swaps ONLY the
binary prefix; --identity/--root and the whole flag surface are untouched.
- network-config.ts: DingService type + `ding` field, read/write + validation.
- launch.ts: dingBin()/dingCommand(service) — writePtyToml reads the net's
choice and bakes the right ding binary into each agent's pty.toml. The
pre-#43 ding-heal path stays node-only (it only ever matches `st ding` tomls;
a rust ding is new and already carries --root, so heal skips it).
- convoy init --ding node|rust records the choice (mirrors --megarepo), also
surfaced in the command table (completions + flag allow-list).
Coordinated with ding-rust-claude: the rust `ding` is a confirmed drop-in
(same positional session-id, same --identity/--root, zero new required config).
Claude-Session: https://claude.ai/code/session_01MCzqQKSpPiNX2ketyubByS
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: src/cli.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -137,7 +137,7 @@ function printHelp(): void {
137
137
"SUBCOMMANDS:\n"+
138
138
" ls (default) list the convoy's members [--tree = spawn-parentage tree + cross-machine liveness (synced status-mtime + host) --stale-after <ms> --live-only --json --network]\n"+
139
139
" doctor setup-readiness suite: prove your setup can do real agent work [--quick = preflight only; --full = real CoS→sup→worker org proof (slower)]\n"+
140
-
" init [name|dir] interactive, narrated: stand up a network (name → megarepo → CoS), NAME lives at <home>/<name> [--megarepo <path> --quiet --json --yes --no-channel]\n"+
140
+
" init [name|dir] interactive, narrated: stand up a network (name → megarepo → CoS), NAME lives at <home>/<name> [--megarepo <path> --ding node|rust --quiet --json --yes --no-channel]\n"+
141
141
" add <role> DECLARE an agent — write its agent file into the synced catalog; NO launch (convoy up runs it) [--identity --host --harness claude|codex --model <id> --transport ding|mcp --mcp --network --dir --persona --permanent --dry-run --force]\n"+
142
142
" render <id> materialize an agent's worktree overlay from its catalog agent file — NO launch, NO bus (declarative: add=declare · render=materialize · up=reconcile) [--dir <workspace> --network --dry-run]\n"+
// 3. Create the structure + config, narrating each step.
585
597
say("→ Creating the network structure (smalltalk/ = the bus · catalog/ = agent files (desired state) · pty/ = runtime · worktrees/ = workspaces)…");
586
598
mkdirSync(layout.stRoot,{recursive: true});
587
599
mkdirSync(catalogDir(dir),{recursive: true});// the catalog — `convoy add` writes agent files here (desired state); convoy declares it to `fabric sync` (below) so it propagates cross-machine
588
600
mkdirSync(layout.ptyRoot,{recursive: true});
589
601
mkdirSync(layout.worktrees,{recursive: true});
590
602
say("→ Recording the network config (convoy.toml)…");
0 commit comments