@bradygaster/squad-cli 0.8.20 → 0.8.22

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 (104) hide show
  1. package/README.md +77 -77
  2. package/dist/cli/commands/build.d.ts +31 -0
  3. package/dist/cli/commands/build.d.ts.map +1 -0
  4. package/dist/cli/commands/build.js +453 -0
  5. package/dist/cli/commands/build.js.map +1 -0
  6. package/dist/cli/commands/init-remote.d.ts.map +1 -1
  7. package/dist/cli/commands/init-remote.js +13 -0
  8. package/dist/cli/commands/init-remote.js.map +1 -1
  9. package/dist/cli/commands/link.d.ts.map +1 -1
  10. package/dist/cli/commands/link.js +13 -0
  11. package/dist/cli/commands/link.js.map +1 -1
  12. package/dist/cli/commands/migrate.d.ts +14 -0
  13. package/dist/cli/commands/migrate.d.ts.map +1 -0
  14. package/dist/cli/commands/migrate.js +419 -0
  15. package/dist/cli/commands/migrate.js.map +1 -0
  16. package/dist/cli/commands/streams.d.ts +15 -0
  17. package/dist/cli/commands/streams.d.ts.map +1 -0
  18. package/dist/cli/commands/streams.js +147 -0
  19. package/dist/cli/commands/streams.js.map +1 -0
  20. package/dist/cli/core/cast.d.ts.map +1 -1
  21. package/dist/cli/core/cast.js +111 -63
  22. package/dist/cli/core/cast.js.map +1 -1
  23. package/dist/cli/core/init.d.ts +4 -0
  24. package/dist/cli/core/init.d.ts.map +1 -1
  25. package/dist/cli/core/init.js +2 -2
  26. package/dist/cli/core/init.js.map +1 -1
  27. package/dist/cli/core/team-md.js +34 -34
  28. package/dist/cli/core/templates.d.ts.map +1 -1
  29. package/dist/cli/core/templates.js +0 -6
  30. package/dist/cli/core/templates.js.map +1 -1
  31. package/dist/cli/core/upgrade.d.ts.map +1 -1
  32. package/dist/cli/core/upgrade.js +2 -1
  33. package/dist/cli/core/upgrade.js.map +1 -1
  34. package/dist/cli/index.d.ts +1 -0
  35. package/dist/cli/index.d.ts.map +1 -1
  36. package/dist/cli/index.js +1 -0
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/cli/shell/commands.d.ts +6 -0
  39. package/dist/cli/shell/commands.d.ts.map +1 -1
  40. package/dist/cli/shell/commands.js +2 -1
  41. package/dist/cli/shell/commands.js.map +1 -1
  42. package/dist/cli/shell/components/AgentPanel.d.ts.map +1 -1
  43. package/dist/cli/shell/components/AgentPanel.js +4 -3
  44. package/dist/cli/shell/components/AgentPanel.js.map +1 -1
  45. package/dist/cli/shell/components/App.d.ts.map +1 -1
  46. package/dist/cli/shell/components/App.js +36 -2
  47. package/dist/cli/shell/components/App.js.map +1 -1
  48. package/dist/cli/shell/components/MessageStream.d.ts.map +1 -1
  49. package/dist/cli/shell/components/MessageStream.js +2 -1
  50. package/dist/cli/shell/components/MessageStream.js.map +1 -1
  51. package/dist/cli/shell/components/ThinkingIndicator.js +2 -2
  52. package/dist/cli/shell/components/ThinkingIndicator.js.map +1 -1
  53. package/dist/cli/shell/coordinator.js +88 -88
  54. package/dist/cli/shell/index.d.ts.map +1 -1
  55. package/dist/cli/shell/index.js +41 -3
  56. package/dist/cli/shell/index.js.map +1 -1
  57. package/dist/cli-entry.js +206 -14
  58. package/dist/cli-entry.js.map +1 -1
  59. package/package.json +27 -2
  60. package/templates/casting-history.json +4 -4
  61. package/templates/casting-policy.json +35 -35
  62. package/templates/casting-registry.json +3 -3
  63. package/templates/ceremonies.md +41 -41
  64. package/templates/charter.md +53 -53
  65. package/templates/constraint-tracking.md +38 -38
  66. package/templates/copilot-instructions.md +46 -46
  67. package/templates/history.md +10 -10
  68. package/templates/identity/now.md +9 -9
  69. package/templates/identity/wisdom.md +15 -15
  70. package/templates/mcp-config.md +90 -90
  71. package/templates/multi-agent-format.md +28 -28
  72. package/templates/orchestration-log.md +27 -27
  73. package/templates/plugin-marketplace.md +49 -49
  74. package/templates/raw-agent-output.md +37 -37
  75. package/templates/roster.md +60 -60
  76. package/templates/routing.md +54 -54
  77. package/templates/run-output.md +50 -50
  78. package/templates/scribe-charter.md +119 -119
  79. package/templates/skill.md +24 -24
  80. package/templates/skills/squad-conventions/SKILL.md +69 -69
  81. package/templates/squad.agent.md +1146 -1146
  82. package/templates/workflows/squad-ci.yml +24 -24
  83. package/templates/workflows/squad-docs.yml +50 -50
  84. package/templates/workflows/squad-insider-release.yml +61 -61
  85. package/templates/workflows/squad-issue-assign.yml +161 -161
  86. package/templates/workflows/squad-label-enforce.yml +181 -181
  87. package/templates/workflows/squad-preview.yml +55 -55
  88. package/templates/workflows/squad-promote.yml +120 -120
  89. package/templates/workflows/squad-release.yml +77 -77
  90. package/templates/workflows/squad-triage.yml +260 -260
  91. package/templates/workflows/sync-squad-labels.yml +169 -169
  92. package/dist/cli/shell/sdk-bridge.d.ts +0 -50
  93. package/dist/cli/shell/sdk-bridge.d.ts.map +0 -1
  94. package/dist/cli/shell/sdk-bridge.js +0 -235
  95. package/dist/cli/shell/sdk-bridge.js.map +0 -1
  96. package/dist/cli/shell/theme-colors.d.ts +0 -39
  97. package/dist/cli/shell/theme-colors.d.ts.map +0 -1
  98. package/dist/cli/shell/theme-colors.js +0 -39
  99. package/dist/cli/shell/theme-colors.js.map +0 -1
  100. package/dist/cli.d.ts +0 -3
  101. package/dist/cli.d.ts.map +0 -1
  102. package/dist/cli.js +0 -4
  103. package/dist/cli.js.map +0 -1
  104. package/templates/workflows/squad-main-guard.yml +0 -129
package/README.md CHANGED
@@ -1,77 +1,77 @@
1
- # @bradygaster/squad-cli
2
-
3
- The programmable multi-agent CLI for GitHub Copilot. Build an AI team, assign roles, and let them work your repo.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- # Global (recommended)
9
- npm install -g @bradygaster/squad-cli
10
-
11
- # Project-local
12
- npm install --save-dev @bradygaster/squad-cli
13
-
14
- # One-shot (no install)
15
- npx @bradygaster/squad-cli
16
-
17
- # Insider channel (pre-release builds)
18
- npm install -g @bradygaster/squad-cli@insider
19
- ```
20
-
21
- ## Quick Start
22
-
23
- ```bash
24
- # 1. Initialize Squad in your repo
25
- squad init
26
-
27
- # 2. Create your first agent
28
- squad hire --name aria --role "frontend engineer"
29
-
30
- # 3. Launch the interactive shell
31
- squad
32
- ```
33
-
34
- That's it. You have a working AI team.
35
-
36
- ## Commands
37
-
38
- | Command | Description |
39
- |---------|-------------|
40
- | `squad` | Launch interactive shell |
41
- | `squad init` | Initialize Squad in current repo. `--global` for a personal squad. |
42
- | `squad upgrade` | Update Squad-owned files. `--global`, `--migrate-directory` |
43
- | `squad status` | Show which squad is active (repo vs personal) and why |
44
- | `squad triage` | Scan for work and categorize issues |
45
- | `squad loop` | Continuous work loop. `--filter <pattern>`, `--interval <seconds>` |
46
- | `squad hire` | Team creation wizard. `--name <name>`, `--role <role>` |
47
- | `squad copilot` | Add/remove @copilot coding agent. `--off`, `--auto-assign` |
48
- | `squad plugin` | Manage plugin marketplaces (add/remove/list/browse) |
49
- | `squad export` | Export squad to JSON snapshot. `--out <path>` |
50
- | `squad import <file>` | Import squad from export file. `--force` to overwrite |
51
- | `squad scrub-emails` | Remove email addresses from Squad state files |
52
- | `squad help` | Show help |
53
-
54
- ## Interactive Shell
55
-
56
- Running `squad` with no arguments launches a REPL where you talk directly to your team.
57
-
58
- - **Slash commands:** `/status`, `/history`, `/agents`, `/clear`, `/help`, `/quit`
59
- - **@mentions:** Route messages to a specific agent (e.g. `@aria fix the login bug`)
60
- - **Tab completion:** Agents and commands auto-complete
61
-
62
- The shell coordinates work across agents, streams responses in real time, and keeps a session history.
63
-
64
- ## Requirements
65
-
66
- - **Node.js ≥ 20**
67
- - **GitHub CLI** (`gh`) — required for issue/PR operations and the work loop
68
- - **GitHub Copilot** — provides the AI backend for agent orchestration
69
-
70
- ## Links
71
-
72
- - **SDK:** [@bradygaster/squad-sdk](https://www.npmjs.com/package/@bradygaster/squad-sdk)
73
- - **Issues:** [github.com/bradygaster/squad/issues](https://github.com/bradygaster/squad/issues)
74
-
75
- ## License
76
-
77
- See [LICENSE](https://github.com/bradygaster/squad/blob/main/LICENSE) in the repository root.
1
+ # @bradygaster/squad-cli
2
+
3
+ The programmable multi-agent CLI for GitHub Copilot. Build an AI team, assign roles, and let them work your repo.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ # Global (recommended)
9
+ npm install -g @bradygaster/squad-cli
10
+
11
+ # Project-local
12
+ npm install --save-dev @bradygaster/squad-cli
13
+
14
+ # One-shot (no install)
15
+ npx @bradygaster/squad-cli
16
+
17
+ # Insider channel (pre-release builds)
18
+ npm install -g @bradygaster/squad-cli@insider
19
+ ```
20
+
21
+ ## Quick Start
22
+
23
+ ```bash
24
+ # 1. Initialize Squad in your repo
25
+ squad init
26
+
27
+ # 2. Create your first agent
28
+ squad hire --name aria --role "frontend engineer"
29
+
30
+ # 3. Launch the interactive shell
31
+ squad
32
+ ```
33
+
34
+ That's it. You have a working AI team.
35
+
36
+ ## Commands
37
+
38
+ | Command | Description |
39
+ |---------|-------------|
40
+ | `squad` | Launch interactive shell |
41
+ | `squad init` | Initialize Squad in current repo. `--global` for a personal squad. |
42
+ | `squad upgrade` | Update Squad-owned files. `--global`, `--migrate-directory` |
43
+ | `squad status` | Show which squad is active (repo vs personal) and why |
44
+ | `squad triage` | Scan for work and categorize issues |
45
+ | `squad loop` | Continuous work loop. `--filter <pattern>`, `--interval <seconds>` |
46
+ | `squad hire` | Team creation wizard. `--name <name>`, `--role <role>` |
47
+ | `squad copilot` | Add/remove @copilot coding agent. `--off`, `--auto-assign` |
48
+ | `squad plugin` | Manage plugin marketplaces (add/remove/list/browse) |
49
+ | `squad export` | Export squad to JSON snapshot. `--out <path>` |
50
+ | `squad import <file>` | Import squad from export file. `--force` to overwrite |
51
+ | `squad scrub-emails` | Remove email addresses from Squad state files |
52
+ | `squad help` | Show help |
53
+
54
+ ## Interactive Shell
55
+
56
+ Running `squad` with no arguments launches a REPL where you talk directly to your team.
57
+
58
+ - **Slash commands:** `/status`, `/history`, `/agents`, `/clear`, `/help`, `/quit`
59
+ - **@mentions:** Route messages to a specific agent (e.g. `@aria fix the login bug`)
60
+ - **Tab completion:** Agents and commands auto-complete
61
+
62
+ The shell coordinates work across agents, streams responses in real time, and keeps a session history.
63
+
64
+ ## Requirements
65
+
66
+ - **Node.js ≥ 20**
67
+ - **GitHub CLI** (`gh`) — required for issue/PR operations and the work loop
68
+ - **GitHub Copilot** — provides the AI backend for agent orchestration
69
+
70
+ ## Links
71
+
72
+ - **SDK:** [@bradygaster/squad-sdk](https://www.npmjs.com/package/@bradygaster/squad-sdk)
73
+ - **Issues:** [github.com/bradygaster/squad/issues](https://github.com/bradygaster/squad/issues)
74
+
75
+ ## License
76
+
77
+ See [LICENSE](https://github.com/bradygaster/squad/blob/main/LICENSE) in the repository root.
@@ -0,0 +1,31 @@
1
+ /**
2
+ * squad build — compile TypeScript squad definitions into .squad/ markdown.
3
+ *
4
+ * Loads squad.config.ts (or squad/index.ts) and generates:
5
+ * - .squad/team.md
6
+ * - .squad/routing.md
7
+ * - .squad/agents/{name}/charter.md
8
+ * - .squad/ceremonies.md
9
+ *
10
+ * NEVER touches: decisions.md, history.md, orchestration-log/
11
+ *
12
+ * Flags:
13
+ * --check validate without writing (exit 0 if matches disk, exit 1 if drift)
14
+ * --dry-run show what would be generated without writing
15
+ * --watch rebuild on .ts file changes (stub for now)
16
+ *
17
+ * @module cli/commands/build
18
+ */
19
+ export interface BuildOptions {
20
+ check?: boolean;
21
+ dryRun?: boolean;
22
+ watch?: boolean;
23
+ }
24
+ /**
25
+ * Run the squad build pipeline.
26
+ *
27
+ * @param cwd - Project root directory
28
+ * @param options - CLI flags
29
+ */
30
+ export declare function runBuild(cwd: string, options?: BuildOptions): Promise<void>;
31
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAmdH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDrF"}
@@ -0,0 +1,453 @@
1
+ /**
2
+ * squad build — compile TypeScript squad definitions into .squad/ markdown.
3
+ *
4
+ * Loads squad.config.ts (or squad/index.ts) and generates:
5
+ * - .squad/team.md
6
+ * - .squad/routing.md
7
+ * - .squad/agents/{name}/charter.md
8
+ * - .squad/ceremonies.md
9
+ *
10
+ * NEVER touches: decisions.md, history.md, orchestration-log/
11
+ *
12
+ * Flags:
13
+ * --check validate without writing (exit 0 if matches disk, exit 1 if drift)
14
+ * --dry-run show what would be generated without writing
15
+ * --watch rebuild on .ts file changes (stub for now)
16
+ *
17
+ * @module cli/commands/build
18
+ */
19
+ import fs from 'node:fs';
20
+ import path from 'node:path';
21
+ import { pathToFileURL } from 'node:url';
22
+ import { success, warn, info, dim, BOLD, RESET, YELLOW, GREEN, RED } from '../core/output.js';
23
+ import { fatal } from '../core/errors.js';
24
+ // ---------------------------------------------------------------------------
25
+ // Constants
26
+ // ---------------------------------------------------------------------------
27
+ const GENERATED_HEADER = '<!-- generated by squad build — do not edit -->\n\n';
28
+ /** Files we must NEVER overwrite. */
29
+ const PROTECTED_FILES = new Set([
30
+ 'decisions.md',
31
+ 'decisions-archive.md',
32
+ ]);
33
+ /** Directory prefixes we must NEVER touch. */
34
+ const PROTECTED_DIRS = new Set([
35
+ 'orchestration-log',
36
+ ]);
37
+ /**
38
+ * Discover and dynamically import the squad config file.
39
+ * Search order:
40
+ * 1. squad/index.ts
41
+ * 2. squad.config.ts
42
+ * 3. squad.config.js
43
+ */
44
+ async function loadSquadConfig(cwd) {
45
+ const candidates = [
46
+ path.join(cwd, 'squad', 'index.ts'),
47
+ path.join(cwd, 'squad.config.ts'),
48
+ path.join(cwd, 'squad.config.js'),
49
+ ];
50
+ for (const candidate of candidates) {
51
+ if (fs.existsSync(candidate)) {
52
+ try {
53
+ const url = pathToFileURL(candidate).href;
54
+ const mod = await import(url);
55
+ const config = mod.default ?? mod.config ?? mod.squadConfig;
56
+ if (!config) {
57
+ fatal(`${candidate} must export default, "config", or "squadConfig"`);
58
+ }
59
+ return { config, source: candidate };
60
+ }
61
+ catch (err) {
62
+ fatal(`Failed to load ${candidate}: ${err instanceof Error ? err.message : String(err)}`);
63
+ }
64
+ }
65
+ }
66
+ fatal('No squad config found. Create squad.config.ts or squad/index.ts\n' +
67
+ ' Run "squad init" to bootstrap a new project.');
68
+ }
69
+ // ---------------------------------------------------------------------------
70
+ // Markdown generators
71
+ // ---------------------------------------------------------------------------
72
+ function generateTeamMd(config) {
73
+ const lines = [GENERATED_HEADER];
74
+ const teamName = config.team.name;
75
+ const desc = config.team.description ?? '';
76
+ lines.push(`# Squad Team — ${teamName}\n`);
77
+ if (desc) {
78
+ lines.push(`> ${desc}\n`);
79
+ }
80
+ // Coordinator row
81
+ lines.push('## Coordinator\n');
82
+ lines.push('| Name | Role | Notes |');
83
+ lines.push('|------|------|-------|');
84
+ lines.push('| Squad | Coordinator | Routes work, enforces handoffs and reviewer gates. Does not generate domain artifacts. |');
85
+ lines.push('');
86
+ // Members table
87
+ const agents = config.agents;
88
+ if (agents.length > 0) {
89
+ lines.push('## Members\n');
90
+ lines.push('| Name | Role | Charter | Status |');
91
+ lines.push('|------|------|---------|--------|');
92
+ for (const agent of agents) {
93
+ const name = capitalize(agent.name);
94
+ const role = agent.role;
95
+ const charter = `.squad/agents/${agent.name}/charter.md`;
96
+ const status = formatStatus(agent.status);
97
+ lines.push(`| ${name} | ${role} | \`${charter}\` | ${status} |`);
98
+ }
99
+ lines.push('');
100
+ }
101
+ // Project context
102
+ if (config.team.projectContext) {
103
+ lines.push('## Project Context\n');
104
+ lines.push(config.team.projectContext);
105
+ lines.push('');
106
+ }
107
+ return lines.join('\n');
108
+ }
109
+ function generateRoutingMd(config) {
110
+ if (!config.routing)
111
+ return '';
112
+ const lines = [GENERATED_HEADER];
113
+ const teamName = config.team.name;
114
+ lines.push(`# Routing Rules — ${teamName}\n`);
115
+ if (config.routing.defaultAgent) {
116
+ lines.push(`**Default agent:** ${config.routing.defaultAgent}\n`);
117
+ }
118
+ lines.push('## Rules\n');
119
+ const rules = config.routing.rules;
120
+ for (const rule of rules) {
121
+ const agents = rule.agents.join(', ');
122
+ const desc = rule.description ? ` — ${rule.description}` : '';
123
+ lines.push(`- \`${rule.pattern}\` → ${agents}${desc}`);
124
+ }
125
+ lines.push('');
126
+ return lines.join('\n');
127
+ }
128
+ /**
129
+ * Normalize a model field (string or ModelPreference) into a ModelPreference object.
130
+ */
131
+ function normalizeModelPreference(model) {
132
+ if (!model)
133
+ return undefined;
134
+ if (typeof model === 'string')
135
+ return { preferred: model };
136
+ return model;
137
+ }
138
+ /**
139
+ * Render the `## Model` section for a charter, using the agent's model
140
+ * preference or falling back to squad-level defaults.
141
+ */
142
+ function renderModelSection(agentModel, defaultModel) {
143
+ const pref = normalizeModelPreference(agentModel) ?? normalizeModelPreference(defaultModel);
144
+ if (!pref)
145
+ return [];
146
+ const lines = [];
147
+ lines.push('## Model\n');
148
+ lines.push(`**Preferred:** ${pref.preferred}`);
149
+ if (pref.rationale) {
150
+ lines.push(`**Rationale:** ${pref.rationale}`);
151
+ }
152
+ if (pref.fallback) {
153
+ lines.push(`**Fallback:** ${pref.fallback}`);
154
+ }
155
+ lines.push('');
156
+ return lines;
157
+ }
158
+ function generateCharterMd(agent, defaultModel) {
159
+ const lines = [GENERATED_HEADER];
160
+ const name = agent.name;
161
+ const role = agent.role;
162
+ lines.push(`# ${name} — ${role}\n`);
163
+ if (agent.description) {
164
+ lines.push(`> ${agent.description}\n`);
165
+ }
166
+ if (agent.charter) {
167
+ lines.push(agent.charter);
168
+ lines.push('');
169
+ }
170
+ lines.push(...renderModelSection(agent.model, defaultModel));
171
+ if (agent.tools && agent.tools.length > 0) {
172
+ lines.push('## Tools\n');
173
+ for (const t of agent.tools) {
174
+ lines.push(`- ${t}`);
175
+ }
176
+ lines.push('');
177
+ }
178
+ return lines.join('\n');
179
+ }
180
+ function generateCeremoniesMd(ceremonies) {
181
+ const lines = [GENERATED_HEADER];
182
+ lines.push('# Ceremonies\n');
183
+ for (const c of ceremonies) {
184
+ lines.push(`## ${c.name}`);
185
+ if (c.schedule)
186
+ lines.push(`**Schedule:** ${c.schedule}`);
187
+ if (c.participants && c.participants.length > 0) {
188
+ lines.push(`**Participants:** ${c.participants.join(', ')}`);
189
+ }
190
+ if (c.agenda) {
191
+ lines.push('', c.agenda);
192
+ }
193
+ lines.push('');
194
+ }
195
+ return lines.join('\n');
196
+ }
197
+ /** Size threshold (bytes) above which ceremonies.md is split into dispatch table + skill files (#193). */
198
+ const CEREMONIES_SIZE_THRESHOLD = 15_000;
199
+ /**
200
+ * Generate a compact dispatch table that stays well under the view-tool size limit.
201
+ * Individual ceremony definitions live in skill files referenced by the table.
202
+ */
203
+ function generateCeremoniesDispatchTable(ceremonies) {
204
+ const lines = [GENERATED_HEADER];
205
+ lines.push('# Ceremonies\n');
206
+ lines.push('Ceremony definitions live in individual skill files. This table is the dispatch index.\n');
207
+ lines.push('| Name | Trigger | Schedule | Participants | Skill |');
208
+ lines.push('|------|---------|----------|--------------|-------|');
209
+ for (const c of ceremonies) {
210
+ const trigger = c.trigger ?? 'manual';
211
+ const schedule = c.schedule ?? '—';
212
+ const participants = c.participants?.join(', ') ?? '—';
213
+ const slug = c.name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '');
214
+ const skillPath = `.squad/skills/ceremony-${slug}/SKILL.md`;
215
+ lines.push(`| ${c.name} | ${trigger} | ${schedule} | ${participants} | \`${skillPath}\` |`);
216
+ }
217
+ lines.push('');
218
+ return lines.join('\n');
219
+ }
220
+ /** Generate an individual ceremony skill file. */
221
+ function generateCeremonySkillFile(c) {
222
+ const lines = [GENERATED_HEADER];
223
+ lines.push(`# Ceremony: ${c.name}\n`);
224
+ if (c.trigger)
225
+ lines.push(`**Trigger:** ${c.trigger}`);
226
+ if (c.schedule)
227
+ lines.push(`**Schedule:** ${c.schedule}`);
228
+ if (c.participants && c.participants.length > 0) {
229
+ lines.push(`**Participants:** ${c.participants.join(', ')}`);
230
+ }
231
+ if (c.hooks && c.hooks.length > 0) {
232
+ lines.push(`**Hooks:** ${c.hooks.join(', ')}`);
233
+ }
234
+ if (c.agenda) {
235
+ lines.push('', c.agenda);
236
+ }
237
+ lines.push('');
238
+ return lines.join('\n');
239
+ }
240
+ /** Generate a skill SKILL.md file from BuilderSkillDefinition. */
241
+ function generateSkillFile(skill) {
242
+ const lines = [];
243
+ // Frontmatter
244
+ lines.push('---');
245
+ lines.push(`name: "${skill.name}"`);
246
+ lines.push(`description: "${skill.description}"`);
247
+ lines.push(`domain: "${skill.domain}"`);
248
+ if (skill.confidence) {
249
+ lines.push(`confidence: "${skill.confidence}"`);
250
+ }
251
+ if (skill.source) {
252
+ lines.push(`source: "${skill.source}"`);
253
+ }
254
+ if (skill.tools && skill.tools.length > 0) {
255
+ lines.push('tools:');
256
+ for (const tool of skill.tools) {
257
+ lines.push(` - name: "${tool.name}"`);
258
+ lines.push(` description: "${tool.description}"`);
259
+ lines.push(` when: "${tool.when}"`);
260
+ }
261
+ }
262
+ lines.push('---');
263
+ lines.push('');
264
+ // Content
265
+ lines.push(skill.content);
266
+ lines.push('');
267
+ return lines.join('\n');
268
+ }
269
+ function buildFilePlan(config) {
270
+ const files = [];
271
+ // team.md
272
+ files.push({
273
+ relPath: '.squad/team.md',
274
+ content: generateTeamMd(config),
275
+ });
276
+ // routing.md
277
+ if (config.routing) {
278
+ files.push({
279
+ relPath: '.squad/routing.md',
280
+ content: generateRoutingMd(config),
281
+ });
282
+ }
283
+ // Agent charters
284
+ const defaultModel = config.defaults?.model;
285
+ for (const agent of config.agents) {
286
+ files.push({
287
+ relPath: `.squad/agents/${agent.name}/charter.md`,
288
+ content: generateCharterMd(agent, defaultModel),
289
+ });
290
+ }
291
+ // ceremonies.md — use dispatch table format when content exceeds size threshold (#193)
292
+ if (config.ceremonies && config.ceremonies.length > 0) {
293
+ const monolithic = generateCeremoniesMd(config.ceremonies);
294
+ if (Buffer.byteLength(monolithic, 'utf-8') > CEREMONIES_SIZE_THRESHOLD) {
295
+ // Large: emit dispatch table + individual skill files
296
+ files.push({
297
+ relPath: '.squad/ceremonies.md',
298
+ content: generateCeremoniesDispatchTable(config.ceremonies),
299
+ });
300
+ for (const c of config.ceremonies) {
301
+ const slug = c.name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '');
302
+ files.push({
303
+ relPath: `.squad/skills/ceremony-${slug}/SKILL.md`,
304
+ content: generateCeremonySkillFile(c),
305
+ });
306
+ }
307
+ }
308
+ else {
309
+ // Small: single monolithic file is fine
310
+ files.push({
311
+ relPath: '.squad/ceremonies.md',
312
+ content: monolithic,
313
+ });
314
+ }
315
+ }
316
+ // skills — generate SKILL.md for each skill definition
317
+ if (config.skills && config.skills.length > 0) {
318
+ for (const skill of config.skills) {
319
+ files.push({
320
+ relPath: `.squad/skills/${skill.name}/SKILL.md`,
321
+ content: generateSkillFile(skill),
322
+ });
323
+ }
324
+ }
325
+ return files;
326
+ }
327
+ function isProtected(relPath) {
328
+ const basename = path.basename(relPath);
329
+ if (PROTECTED_FILES.has(basename))
330
+ return true;
331
+ if (basename === 'history.md')
332
+ return true;
333
+ for (const dir of PROTECTED_DIRS) {
334
+ if (relPath.includes(`/${dir}/`) || relPath.includes(`\\${dir}\\`))
335
+ return true;
336
+ }
337
+ return false;
338
+ }
339
+ function writeFiles(cwd, files) {
340
+ let written = 0;
341
+ let skipped = 0;
342
+ const drifted = [];
343
+ for (const file of files) {
344
+ if (isProtected(file.relPath)) {
345
+ skipped++;
346
+ continue;
347
+ }
348
+ const absPath = path.join(cwd, file.relPath);
349
+ const dir = path.dirname(absPath);
350
+ if (!fs.existsSync(dir)) {
351
+ fs.mkdirSync(dir, { recursive: true });
352
+ }
353
+ fs.writeFileSync(absPath, file.content, 'utf-8');
354
+ written++;
355
+ }
356
+ return { files, written, skipped, drifted };
357
+ }
358
+ function checkDrift(cwd, files) {
359
+ const drifted = [];
360
+ const clean = [];
361
+ for (const file of files) {
362
+ if (isProtected(file.relPath))
363
+ continue;
364
+ const absPath = path.join(cwd, file.relPath);
365
+ if (!fs.existsSync(absPath)) {
366
+ drifted.push(file.relPath);
367
+ continue;
368
+ }
369
+ const existing = fs.readFileSync(absPath, 'utf-8');
370
+ if (existing !== file.content) {
371
+ drifted.push(file.relPath);
372
+ }
373
+ else {
374
+ clean.push(file.relPath);
375
+ }
376
+ }
377
+ return { drifted, clean };
378
+ }
379
+ /**
380
+ * Run the squad build pipeline.
381
+ *
382
+ * @param cwd - Project root directory
383
+ * @param options - CLI flags
384
+ */
385
+ export async function runBuild(cwd, options = {}) {
386
+ // --watch stub
387
+ if (options.watch) {
388
+ info(`${YELLOW}⏳${RESET} Watch mode coming soon — rebuilding on file changes is not yet implemented.`);
389
+ info(` For now, run ${BOLD}squad build${RESET} manually after changes.`);
390
+ return;
391
+ }
392
+ // Load config
393
+ const { config, source } = await loadSquadConfig(cwd);
394
+ dim(` Config: ${path.relative(cwd, source) || source}`);
395
+ // Build file plan
396
+ const files = buildFilePlan(config);
397
+ if (files.length === 0) {
398
+ warn('Config produced no files to generate. Check your squad.config.ts.');
399
+ return;
400
+ }
401
+ // --check mode
402
+ if (options.check) {
403
+ const { drifted, clean } = checkDrift(cwd, files);
404
+ if (drifted.length === 0) {
405
+ success(`All ${clean.length} generated files match disk — no drift detected.`);
406
+ return;
407
+ }
408
+ console.log(`\n${RED}✗${RESET} ${BOLD}Drift detected${RESET} in ${drifted.length} file(s):\n`);
409
+ for (const f of drifted) {
410
+ console.log(` ${RED}•${RESET} ${f}`);
411
+ }
412
+ console.log(`\n Run ${BOLD}squad build${RESET} to regenerate.\n`);
413
+ process.exit(1);
414
+ }
415
+ // --dry-run mode
416
+ if (options.dryRun) {
417
+ info(`\n${BOLD}Dry run${RESET} — would generate ${files.length} file(s):\n`);
418
+ for (const file of files) {
419
+ const exists = fs.existsSync(path.join(cwd, file.relPath));
420
+ const label = exists ? `${YELLOW}overwrite${RESET}` : `${GREEN}create${RESET}`;
421
+ console.log(` ${label} ${file.relPath}`);
422
+ }
423
+ console.log('');
424
+ return;
425
+ }
426
+ // Default: write files
427
+ const result = writeFiles(cwd, files);
428
+ success(`squad build complete — generated ${result.written} file(s)`);
429
+ if (result.skipped > 0) {
430
+ dim(` (${result.skipped} protected file(s) skipped)`);
431
+ }
432
+ }
433
+ // ---------------------------------------------------------------------------
434
+ // Helpers
435
+ // ---------------------------------------------------------------------------
436
+ function capitalize(str) {
437
+ if (!str)
438
+ return str;
439
+ return str.charAt(0).toUpperCase() + str.slice(1);
440
+ }
441
+ function formatStatus(status) {
442
+ switch (status) {
443
+ case 'active':
444
+ return '✅ Active';
445
+ case 'inactive':
446
+ return '⏸️ Inactive';
447
+ case 'retired':
448
+ return '🔴 Retired';
449
+ default:
450
+ return '✅ Active';
451
+ }
452
+ }
453
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-remote.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init-remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAmBhF"}
1
+ {"version":3,"file":"init-remote.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init-remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAiChF"}