From 5e421b09d5d0e973a93bfbfc553236a468d2eb5a Mon Sep 17 00:00:00 2001 From: brady gaster Date: Fri, 26 Jun 2026 02:05:49 -0700 Subject: [PATCH] feat(cli): rename 'hire' to 'cast' in CLI help and docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The canonical command for adding team members is now 'cast' — we're casting agents, not hiring humans. 'hire' continues to work silently as an alias (like cls/clear in PowerShell). - squad cast (no args) → shows roster (existing behavior preserved) - squad cast --name X --role Y → launches team creation wizard - squad hire → always launches the wizard (silent alias) Updated all CLI help text, README docs, blog posts, SDK templates, and skill files. Added 'cast' to test expectations while keeping 'hire' in the recognized-commands list. Closes #1393 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .changeset/rename-hire-to-cast.md | 5 +++++ .copilot/skills/cli-wiring/SKILL.md | 4 ++-- .copilot/skills/init-mode/SKILL.md | 8 +++---- README.md | 2 +- docs/src/content/blog/001b-meet-the-squad.md | 4 ++-- .../docs/features/copilot-coding-agent.md | 2 +- packages/squad-cli/README.md | 2 +- packages/squad-cli/src/cli-entry.ts | 22 ++++++++++--------- .../squad-cli/src/cli/core/command-help.ts | 19 ++++++++-------- packages/squad-cli/src/cli/shell/index.ts | 2 +- .../templates/skills/cli-wiring/SKILL.md | 4 ++-- .../templates/skills/init-mode/SKILL.md | 8 +++---- .../squad-cli/templates/skills/squad/SKILL.md | 4 ++-- .../templates/skills/cli-wiring/SKILL.md | 4 ++-- .../templates/skills/init-mode/SKILL.md | 8 +++---- .../squad-sdk/templates/skills/squad/SKILL.md | 4 ++-- test/cli-packaging-smoke.test.ts | 1 + test/cli-shell-comprehensive.test.ts | 12 ++++++++-- test/cli/command-help.test.ts | 1 + 19 files changed, 66 insertions(+), 50 deletions(-) create mode 100644 .changeset/rename-hire-to-cast.md diff --git a/.changeset/rename-hire-to-cast.md b/.changeset/rename-hire-to-cast.md new file mode 100644 index 000000000..41eab8b42 --- /dev/null +++ b/.changeset/rename-hire-to-cast.md @@ -0,0 +1,5 @@ +--- +"squad-cli": minor +--- + +Rename `hire` command to `cast` in CLI help and documentation. The `hire` command continues to work as a silent alias (like `cls`/`clear` in PowerShell) — no deprecation, no warnings, it just does the same thing. All user-facing text now presents `cast` as the canonical verb because we're casting agents, not hiring humans. diff --git a/.copilot/skills/cli-wiring/SKILL.md b/.copilot/skills/cli-wiring/SKILL.md index 07ab25284..465d13e9b 100644 --- a/.copilot/skills/cli-wiring/SKILL.md +++ b/.copilot/skills/cli-wiring/SKILL.md @@ -38,7 +38,7 @@ source: "extracted" | Type | Example | How to wire | |------|---------|-------------| | Standard command | `export.ts`, `build.ts` | `run*()` function, parse flags from `args` | -| Placeholder command | `loop`, `hire` | Inline in cli-entry.ts, prints pending message | +| Placeholder command | `loop`, `cast` (alias: `hire`) | Inline in cli-entry.ts, prints pending message | | Utility/check module | `rc-tunnel.ts`, `copilot-bridge.ts` | Wire as diagnostic check (e.g., `isDevtunnelAvailable()`) | | Subcommand of another | `init-remote.ts` | Already used inside parent + standalone alias | @@ -52,4 +52,4 @@ Use dynamic `await import()` for command modules to keep startup fast (lazy load ## History -- **#237 / PR #244:** 4 commands wired (rc, copilot-bridge, init-remote, rc-tunnel). aspire, link, loop, hire were already present. +- **#237 / PR #244:** 4 commands wired (rc, copilot-bridge, init-remote, rc-tunnel). aspire, link, loop, cast (née hire) were already present. diff --git a/.copilot/skills/init-mode/SKILL.md b/.copilot/skills/init-mode/SKILL.md index 430c6ae15..4f937bc65 100644 --- a/.copilot/skills/init-mode/SKILL.md +++ b/.copilot/skills/init-mode/SKILL.md @@ -42,7 +42,7 @@ No team exists yet. Propose one — but **DO NOT create any files until the user 5. Use the `ask_user` tool to confirm the roster. Provide choices so the user sees a selectable menu: - **question:** *"Look right?"* - - **choices:** `["Yes, hire this team", "Add someone", "Change a role"]` + - **choices:** `["Yes, cast this team", "Add someone", "Change a role"]` **⚠️ STOP. Your response ENDS here. Do NOT proceed to Phase 2. Do NOT create any files or directories. Wait for the user's reply.** @@ -69,7 +69,7 @@ No team exists yet. Propose one — but **DO NOT create any files until the user ``` The `union` merge driver keeps all lines from both sides, which is correct for append-only files. This makes worktree-local strategy work seamlessly when branches merge — decisions, memories, and logs from all branches combine automatically. -7. Say: *"✅ Team hired. Try: '{FirstCastName}, set up the project structure'"* +7. Say: *"✅ Team cast. Try: '{FirstCastName}, set up the project structure'"* 8. **Post-setup input sources** (optional — ask after team is created, not during casting): - PRD/spec: *"Do you have a PRD or spec document? (file path, paste it, or skip)"* → If provided, follow PRD Mode flow @@ -87,9 +87,9 @@ The `union` merge driver keeps all lines from both sides, which is correct for a 4. User: *"TypeScript CLI tool with GitHub API integration"* 5. Coordinator runs casting algorithm → selects "The Usual Suspects" universe 6. Proposes: Keaton (Lead), Verbal (Prompt), Fenster (Backend), Hockney (Tester), Scribe, Ralph -7. Uses `ask_user` with choices → user selects "Yes, hire this team" +7. Uses `ask_user` with choices → user selects "Yes, cast this team" 8. Coordinator creates `.squad/` structure, initializes casting state, seeds agents -9. Says: *"✅ Team hired. Try: 'Keaton, set up the project structure'"* +9. Says: *"✅ Team cast. Try: 'Keaton, set up the project structure'"* ## Anti-Patterns diff --git a/README.md b/README.md index b2ab79a3d..fa710b44c 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ Say **"squad commands"** in chat to see a categorized menu of common operations | Command | What it does | |---------|-------------| -| `squad init` | **Init** — scaffold Squad in the current directory (idempotent — safe to run multiple times); alias: `hire`; use `--global` to init in personal squad directory, `--mode remote ` for dual-root mode | +| `squad init` | **Init** — scaffold Squad in the current directory (idempotent — safe to run multiple times); alias: `cast`; use `--global` to init in personal squad directory, `--mode remote ` for dual-root mode | | `squad upgrade` | Update Squad-owned files to latest; never touches your team state; use `--global` to upgrade personal squad, `--migrate-directory` to rename `.ai-team/` → `.squad/` | | `squad upgrade --self` | Update the Squad CLI package itself; add `--insider` for dev-channel prerelease builds | | `squad status` | Show which squad is active and why | diff --git a/docs/src/content/blog/001b-meet-the-squad.md b/docs/src/content/blog/001b-meet-the-squad.md index bc8d2b07f..57fe72d62 100644 --- a/docs/src/content/blog/001b-meet-the-squad.md +++ b/docs/src/content/blog/001b-meet-the-squad.md @@ -69,8 +69,8 @@ You won't hear from Scribe. Ever. Scribe works in the background — logging ses | Active agents | 8 | | Silent agents | 1 | | Total roster | 9 | -| Original hires (day one) | 5 | -| Hired in session 2+ | 3 | +| Original cast (day one) | 5 | +| Cast in session 2+ | 3 | | Newest member | Redfoot | ## What's Next diff --git a/docs/src/content/docs/features/copilot-coding-agent.md b/docs/src/content/docs/features/copilot-coding-agent.md index f9b10bba8..095819c68 100644 --- a/docs/src/content/docs/features/copilot-coding-agent.md +++ b/docs/src/content/docs/features/copilot-coding-agent.md @@ -46,7 +46,7 @@ gh issue edit --add-label "squad:copilot" Say something like: - **"I want to add copilot to the squad"** -- **"hire copilot to the squad"** +- **"cast copilot to the squad"** - **"add team member copilot"** The coordinator will add @copilot to the roster and ask about auto-assign. diff --git a/packages/squad-cli/README.md b/packages/squad-cli/README.md index 3d15cb896..8441fa0d0 100644 --- a/packages/squad-cli/README.md +++ b/packages/squad-cli/README.md @@ -76,7 +76,7 @@ For detailed documentation on each command, see the [CLI Reference](https://docs | Command | Purpose | |---------|---------| -| `squad hire --name --role ` | Add a new agent to your team | +| `squad cast --name --role ` | Add a new agent to your team (alias: `hire`) | | `squad copilot` | Add the @copilot coding agent | | `squad copilot --off` | Remove @copilot from the team | | `squad copilot --auto-assign` | Enable auto-assignment for @copilot | diff --git a/packages/squad-cli/src/cli-entry.ts b/packages/squad-cli/src/cli-entry.ts index 652a2ad67..bab2497b4 100644 --- a/packages/squad-cli/src/cli-entry.ts +++ b/packages/squad-cli/src/cli-entry.ts @@ -204,8 +204,8 @@ async function main(): Promise { console.log(` Flags: --init (generate boilerplate loop.md)`); console.log(` --file (custom loop file)`); console.log(` --monitor-email, --monitor-teams (add monitoring)`); - console.log(` ${BOLD}hire${RESET} Team creation wizard`); - console.log(` Usage: hire [--name ] [--role ]`); + console.log(` ${BOLD}cast${RESET} Show roster, or add a new agent (alias: hire)`); + console.log(` Usage: cast [--name ] [--role ]`); console.log(` ${BOLD}copilot${RESET} Add/remove the Copilot coding agent (@copilot)`); console.log(` Usage: copilot [--off] [--auto-assign]`); console.log(` ${BOLD}plugin${RESET} Manage plugin marketplaces`); @@ -784,12 +784,20 @@ async function main(): Promise { return; } - if (cmd === 'hire') { + if (cmd === 'cast' || cmd === 'hire') { const nameIdx = args.indexOf('--name'); const name = (nameIdx !== -1 && args[nameIdx + 1]) ? args[nameIdx + 1] : undefined; const roleIdx = args.indexOf('--role'); const role = (roleIdx !== -1 && args[roleIdx + 1]) ? args[roleIdx + 1] : undefined; - console.log('👋 Squad hire — team creation wizard starting... (full implementation pending)'); + + // `squad cast` with no wizard flags shows the roster; `squad hire` always runs the wizard + if (cmd === 'cast' && !name && !role) { + const { runCast } = await import('./cli/commands/cast.js'); + await runCast(getSquadStartDir()); + return; + } + + console.log('🎬 Squad cast — team creation wizard starting... (full implementation pending)'); if (name) { console.log(` Name: ${name}`); } @@ -1079,12 +1087,6 @@ async function main(): Promise { return; } - if (cmd === 'cast') { - const { runCast } = await import('./cli/commands/cast.js'); - await runCast(getSquadStartDir()); - return; - } - if (cmd === 'skill') { const { runSkill } = await import('./cli/commands/skill.js'); await runSkill(getSquadStartDir(), args.slice(1)); diff --git a/packages/squad-cli/src/cli/core/command-help.ts b/packages/squad-cli/src/cli/core/command-help.ts index 910e02bff..0bf5dbe57 100644 --- a/packages/squad-cli/src/cli/core/command-help.ts +++ b/packages/squad-cli/src/cli/core/command-help.ts @@ -127,13 +127,16 @@ const COMMAND_HELP: Record = { console.log(` squad loop --monitor-email ${DIM}# with email monitoring${RESET}`); }, - hire: (version) => { - header('hire', version, 'Team creation wizard'); - console.log(`Usage: squad hire [--name ] [--role ]\n`); - console.log(`Interactive wizard that walks you through adding a new agent to the team.\n`); + cast: (version) => { + header('cast', version, 'Show roster or add a new agent to the team'); + console.log(`Usage: squad cast ${DIM}# show the current cast (roster)${RESET}`); + console.log(` squad cast --name --role ${DIM}# add a new agent${RESET}\n`); + console.log(`With no flags, displays the current session cast (project + personal agents).`); + console.log(`With --name/--role, launches the team creation wizard.\n`); console.log(`Options:`); console.log(` ${BOLD}--name ${RESET} Pre-fill the agent name`); - console.log(` ${BOLD}--role ${RESET} Pre-select a built-in role (see 'squad roles')\n`); + console.log(` ${BOLD}--role ${RESET} Pre-select a built-in role (see 'squad roles')`); + console.log(`\nAlias: ${BOLD}squad hire${RESET} (always runs the creation wizard)\n`); }, copilot: (version) => { @@ -287,11 +290,6 @@ const COMMAND_HELP: Record = { console.log(` ${BOLD}--remote${RESET} init: back presets with a GitHub repo\n`); }, - cast: (version) => { - header('cast', version, 'Show the current session cast (project + personal agents)'); - console.log(`Usage: squad cast\n`); - }, - rc: (version) => printRcHelp('rc', version), 'remote-control': (version) => printRcHelp('remote-control', version), @@ -402,6 +400,7 @@ function printRcHelp(name: 'rc' | 'remote-control', version: string): void { * have explicit help blocks) do NOT need an entry here. */ const COMMAND_ALIASES: Readonly> = { + hire: 'cast', streams: 'subsquads', workstreams: 'subsquads', }; diff --git a/packages/squad-cli/src/cli/shell/index.ts b/packages/squad-cli/src/cli/shell/index.ts index af2d50f82..caf3c6158 100644 --- a/packages/squad-cli/src/cli/shell/index.ts +++ b/packages/squad-cli/src/cli/shell/index.ts @@ -1015,7 +1015,7 @@ export async function runShell(): Promise { shellApi?.addMessage({ role: 'system', - content: `✅ Team hired! ${result.membersCreated.length} members created.`, + content: `✅ Team cast! ${result.membersCreated.length} members created.`, timestamp: new Date(), }); diff --git a/packages/squad-cli/templates/skills/cli-wiring/SKILL.md b/packages/squad-cli/templates/skills/cli-wiring/SKILL.md index 03f7bf55f..5b315b02d 100644 --- a/packages/squad-cli/templates/skills/cli-wiring/SKILL.md +++ b/packages/squad-cli/templates/skills/cli-wiring/SKILL.md @@ -30,7 +30,7 @@ | Type | Example | How to wire | |------|---------|-------------| | Standard command | `export.ts`, `build.ts` | `run*()` function, parse flags from `args` | -| Placeholder command | `loop`, `hire` | Inline in cli-entry.ts, prints pending message | +| Placeholder command | `loop`, `cast` (alias: `hire`) | Inline in cli-entry.ts, prints pending message | | Utility/check module | `rc-tunnel.ts`, `copilot-bridge.ts` | Wire as diagnostic check (e.g., `isDevtunnelAvailable()`) | | Subcommand of another | `init-remote.ts` | Already used inside parent + standalone alias | @@ -44,4 +44,4 @@ Use dynamic `await import()` for command modules to keep startup fast (lazy load ## History -- **#237 / PR #244:** 4 commands wired (rc, copilot-bridge, init-remote, rc-tunnel). aspire, link, loop, hire were already present. +- **#237 / PR #244:** 4 commands wired (rc, copilot-bridge, init-remote, rc-tunnel). aspire, link, loop, cast (née hire) were already present. diff --git a/packages/squad-cli/templates/skills/init-mode/SKILL.md b/packages/squad-cli/templates/skills/init-mode/SKILL.md index 430c6ae15..4f937bc65 100644 --- a/packages/squad-cli/templates/skills/init-mode/SKILL.md +++ b/packages/squad-cli/templates/skills/init-mode/SKILL.md @@ -42,7 +42,7 @@ No team exists yet. Propose one — but **DO NOT create any files until the user 5. Use the `ask_user` tool to confirm the roster. Provide choices so the user sees a selectable menu: - **question:** *"Look right?"* - - **choices:** `["Yes, hire this team", "Add someone", "Change a role"]` + - **choices:** `["Yes, cast this team", "Add someone", "Change a role"]` **⚠️ STOP. Your response ENDS here. Do NOT proceed to Phase 2. Do NOT create any files or directories. Wait for the user's reply.** @@ -69,7 +69,7 @@ No team exists yet. Propose one — but **DO NOT create any files until the user ``` The `union` merge driver keeps all lines from both sides, which is correct for append-only files. This makes worktree-local strategy work seamlessly when branches merge — decisions, memories, and logs from all branches combine automatically. -7. Say: *"✅ Team hired. Try: '{FirstCastName}, set up the project structure'"* +7. Say: *"✅ Team cast. Try: '{FirstCastName}, set up the project structure'"* 8. **Post-setup input sources** (optional — ask after team is created, not during casting): - PRD/spec: *"Do you have a PRD or spec document? (file path, paste it, or skip)"* → If provided, follow PRD Mode flow @@ -87,9 +87,9 @@ The `union` merge driver keeps all lines from both sides, which is correct for a 4. User: *"TypeScript CLI tool with GitHub API integration"* 5. Coordinator runs casting algorithm → selects "The Usual Suspects" universe 6. Proposes: Keaton (Lead), Verbal (Prompt), Fenster (Backend), Hockney (Tester), Scribe, Ralph -7. Uses `ask_user` with choices → user selects "Yes, hire this team" +7. Uses `ask_user` with choices → user selects "Yes, cast this team" 8. Coordinator creates `.squad/` structure, initializes casting state, seeds agents -9. Says: *"✅ Team hired. Try: 'Keaton, set up the project structure'"* +9. Says: *"✅ Team cast. Try: 'Keaton, set up the project structure'"* ## Anti-Patterns diff --git a/packages/squad-cli/templates/skills/squad/SKILL.md b/packages/squad-cli/templates/skills/squad/SKILL.md index d9caa13f4..e67cd9710 100644 --- a/packages/squad-cli/templates/skills/squad/SKILL.md +++ b/packages/squad-cli/templates/skills/squad/SKILL.md @@ -214,9 +214,9 @@ Proceed? (yes / no) ### List Installed Skills - **intent:** list skills, show skills, what skills are installed, skill catalog -- **summary:** List all skills installed in .squad/skills/ and .copilot/skills/ +- **summary:** List all skills installed in .squad/skills/ and .github/skills/ - **action:** coordinator -- **command:** Direct Mode — list .squad/skills/ and .copilot/skills/ directories +- **command:** Direct Mode — list .squad/skills/ and .github/skills/ directories - **args:** (none) - **confirm:** false diff --git a/packages/squad-sdk/templates/skills/cli-wiring/SKILL.md b/packages/squad-sdk/templates/skills/cli-wiring/SKILL.md index 03f7bf55f..5b315b02d 100644 --- a/packages/squad-sdk/templates/skills/cli-wiring/SKILL.md +++ b/packages/squad-sdk/templates/skills/cli-wiring/SKILL.md @@ -30,7 +30,7 @@ | Type | Example | How to wire | |------|---------|-------------| | Standard command | `export.ts`, `build.ts` | `run*()` function, parse flags from `args` | -| Placeholder command | `loop`, `hire` | Inline in cli-entry.ts, prints pending message | +| Placeholder command | `loop`, `cast` (alias: `hire`) | Inline in cli-entry.ts, prints pending message | | Utility/check module | `rc-tunnel.ts`, `copilot-bridge.ts` | Wire as diagnostic check (e.g., `isDevtunnelAvailable()`) | | Subcommand of another | `init-remote.ts` | Already used inside parent + standalone alias | @@ -44,4 +44,4 @@ Use dynamic `await import()` for command modules to keep startup fast (lazy load ## History -- **#237 / PR #244:** 4 commands wired (rc, copilot-bridge, init-remote, rc-tunnel). aspire, link, loop, hire were already present. +- **#237 / PR #244:** 4 commands wired (rc, copilot-bridge, init-remote, rc-tunnel). aspire, link, loop, cast (née hire) were already present. diff --git a/packages/squad-sdk/templates/skills/init-mode/SKILL.md b/packages/squad-sdk/templates/skills/init-mode/SKILL.md index 430c6ae15..4f937bc65 100644 --- a/packages/squad-sdk/templates/skills/init-mode/SKILL.md +++ b/packages/squad-sdk/templates/skills/init-mode/SKILL.md @@ -42,7 +42,7 @@ No team exists yet. Propose one — but **DO NOT create any files until the user 5. Use the `ask_user` tool to confirm the roster. Provide choices so the user sees a selectable menu: - **question:** *"Look right?"* - - **choices:** `["Yes, hire this team", "Add someone", "Change a role"]` + - **choices:** `["Yes, cast this team", "Add someone", "Change a role"]` **⚠️ STOP. Your response ENDS here. Do NOT proceed to Phase 2. Do NOT create any files or directories. Wait for the user's reply.** @@ -69,7 +69,7 @@ No team exists yet. Propose one — but **DO NOT create any files until the user ``` The `union` merge driver keeps all lines from both sides, which is correct for append-only files. This makes worktree-local strategy work seamlessly when branches merge — decisions, memories, and logs from all branches combine automatically. -7. Say: *"✅ Team hired. Try: '{FirstCastName}, set up the project structure'"* +7. Say: *"✅ Team cast. Try: '{FirstCastName}, set up the project structure'"* 8. **Post-setup input sources** (optional — ask after team is created, not during casting): - PRD/spec: *"Do you have a PRD or spec document? (file path, paste it, or skip)"* → If provided, follow PRD Mode flow @@ -87,9 +87,9 @@ The `union` merge driver keeps all lines from both sides, which is correct for a 4. User: *"TypeScript CLI tool with GitHub API integration"* 5. Coordinator runs casting algorithm → selects "The Usual Suspects" universe 6. Proposes: Keaton (Lead), Verbal (Prompt), Fenster (Backend), Hockney (Tester), Scribe, Ralph -7. Uses `ask_user` with choices → user selects "Yes, hire this team" +7. Uses `ask_user` with choices → user selects "Yes, cast this team" 8. Coordinator creates `.squad/` structure, initializes casting state, seeds agents -9. Says: *"✅ Team hired. Try: 'Keaton, set up the project structure'"* +9. Says: *"✅ Team cast. Try: 'Keaton, set up the project structure'"* ## Anti-Patterns diff --git a/packages/squad-sdk/templates/skills/squad/SKILL.md b/packages/squad-sdk/templates/skills/squad/SKILL.md index d9caa13f4..e67cd9710 100644 --- a/packages/squad-sdk/templates/skills/squad/SKILL.md +++ b/packages/squad-sdk/templates/skills/squad/SKILL.md @@ -214,9 +214,9 @@ Proceed? (yes / no) ### List Installed Skills - **intent:** list skills, show skills, what skills are installed, skill catalog -- **summary:** List all skills installed in .squad/skills/ and .copilot/skills/ +- **summary:** List all skills installed in .squad/skills/ and .github/skills/ - **action:** coordinator -- **command:** Direct Mode — list .squad/skills/ and .copilot/skills/ directories +- **command:** Direct Mode — list .squad/skills/ and .github/skills/ directories - **args:** (none) - **confirm:** false diff --git a/test/cli-packaging-smoke.test.ts b/test/cli-packaging-smoke.test.ts index 4fb8b5e73..944fde7f5 100644 --- a/test/cli-packaging-smoke.test.ts +++ b/test/cli-packaging-smoke.test.ts @@ -261,6 +261,7 @@ describe('CLI packaging smoke test', { timeout: 120_000 }, () => { 'migrate', 'triage', 'loop', + 'cast', 'hire', 'export', 'import', diff --git a/test/cli-shell-comprehensive.test.ts b/test/cli-shell-comprehensive.test.ts index de8ac02b4..3f7c44094 100644 --- a/test/cli-shell-comprehensive.test.ts +++ b/test/cli-shell-comprehensive.test.ts @@ -1268,16 +1268,24 @@ describe('Stub command removal', () => { expect(result.handled).toBe(false); }); - it('commands.ts executeCommand does not have hire command', () => { + it('commands.ts executeCommand does not have cast/hire command', () => { const reg = new SessionRegistry(); const renderer = new ShellRenderer(); - const result = executeCommand('hire', [], { + const result = executeCommand('cast', [], { registry: reg, renderer, messageHistory: [], teamRoot: '/test', }); expect(result.handled).toBe(false); + + const resultHire = executeCommand('hire', [], { + registry: reg, + renderer, + messageHistory: [], + teamRoot: '/test', + }); + expect(resultHire.handled).toBe(false); }); it('all known commands are functional (not stubs)', () => { diff --git a/test/cli/command-help.test.ts b/test/cli/command-help.test.ts index 7c73e09fe..e6c9be7d6 100644 --- a/test/cli/command-help.test.ts +++ b/test/cli/command-help.test.ts @@ -110,6 +110,7 @@ describe('printCommandHelp', () => { 'export', 'externalize', 'extract', + 'cast', 'hire', 'import', 'init',