From ed9c21d33768a3aaa925e56e9ec3c8f000690b58 Mon Sep 17 00:00:00 2001 From: Emmitt <1337ERJ1337@gmail.com> Date: Fri, 6 Mar 2026 13:55:51 -0800 Subject: [PATCH] fix: wire up squad link and squad init --mode remote in CLI entry point Both commands had full implementations and tests but were never routed in cli-entry.ts: - squad link : imports runLink from commands/link.ts - squad init --mode remote : imports writeRemoteConfig from commands/init-remote.ts, writes config before running normal init Also adds both commands to the help text. Closes #222 --- packages/squad-cli/src/cli-entry.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/packages/squad-cli/src/cli-entry.ts b/packages/squad-cli/src/cli-entry.ts index 9c18fa5c2..3c83caab6 100644 --- a/packages/squad-cli/src/cli-entry.ts +++ b/packages/squad-cli/src/cli-entry.ts @@ -39,6 +39,8 @@ async function main(): Promise { console.log(` Flags: --global (init in personal squad directory)`); console.log(` ${BOLD}init${RESET} Initialize Squad (skip files that already exist)`); console.log(` Flags: --global (init in personal squad directory)`); + console.log(` Usage: init --mode remote `); + console.log(` Creates .squad/config.json pointing to an external team root`); console.log(` ${BOLD}upgrade${RESET} Update Squad-owned files to latest version`); console.log(` Overwrites: squad.agent.md, templates dir (.squad/templates/)`); console.log(` Never touches: .squad/ or .ai-team/ (your team state)`); @@ -77,6 +79,8 @@ async function main(): Promise { console.log(` Flags: --dry-run, --clean, --yes, --accept-risks`); console.log(` ${BOLD}workstreams${RESET} Manage Squad Workstreams (multi-Codespace scaling)`); console.log(` Usage: workstreams >`); + console.log(` ${BOLD}link${RESET} Link project to a remote team root`); + console.log(` Usage: link `); console.log(` ${BOLD}build${RESET} Compile squad.config.ts into .squad/ markdown`); console.log(` Flags: --check (validate only), --dry-run (preview), --watch (rebuild on change)`); @@ -100,6 +104,21 @@ async function main(): Promise { // Route subcommands if (cmd === 'init') { + const modeIdx = args.indexOf('--mode'); + const mode = (modeIdx !== -1 && args[modeIdx + 1]) ? args[modeIdx + 1] : undefined; + + if (mode === 'remote') { + const teamPath = args[modeIdx + 2]; + if (!teamPath) { + fatal('Usage: squad init --mode remote '); + } + const { writeRemoteConfig } = await import('./cli/commands/init-remote.js'); + const dest = process.cwd(); + writeRemoteConfig(dest, teamPath); + await runInit(dest); + return; + } + const dest = hasGlobal ? resolveGlobalSquadPath() : process.cwd(); runInit(dest).catch(err => { fatal(err.message); @@ -301,6 +320,16 @@ async function main(): Promise { return; } + if (cmd === 'link') { + const { runLink } = await import('./cli/commands/link.js'); + const teamPath = args[1]; + if (!teamPath) { + fatal('Usage: squad link '); + } + runLink(process.cwd(), teamPath); + return; + } + // Unknown command fatal(`Unknown command: ${cmd}\n Run 'squad help' for usage information.`); }