@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.
- package/README.md +77 -77
- package/dist/cli/commands/build.d.ts +31 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +453 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/init-remote.d.ts.map +1 -1
- package/dist/cli/commands/init-remote.js +13 -0
- package/dist/cli/commands/init-remote.js.map +1 -1
- package/dist/cli/commands/link.d.ts.map +1 -1
- package/dist/cli/commands/link.js +13 -0
- package/dist/cli/commands/link.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +14 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +419 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/streams.d.ts +15 -0
- package/dist/cli/commands/streams.d.ts.map +1 -0
- package/dist/cli/commands/streams.js +147 -0
- package/dist/cli/commands/streams.js.map +1 -0
- package/dist/cli/core/cast.d.ts.map +1 -1
- package/dist/cli/core/cast.js +111 -63
- package/dist/cli/core/cast.js.map +1 -1
- package/dist/cli/core/init.d.ts +4 -0
- package/dist/cli/core/init.d.ts.map +1 -1
- package/dist/cli/core/init.js +2 -2
- package/dist/cli/core/init.js.map +1 -1
- package/dist/cli/core/team-md.js +34 -34
- package/dist/cli/core/templates.d.ts.map +1 -1
- package/dist/cli/core/templates.js +0 -6
- package/dist/cli/core/templates.js.map +1 -1
- package/dist/cli/core/upgrade.d.ts.map +1 -1
- package/dist/cli/core/upgrade.js +2 -1
- package/dist/cli/core/upgrade.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/shell/commands.d.ts +6 -0
- package/dist/cli/shell/commands.d.ts.map +1 -1
- package/dist/cli/shell/commands.js +2 -1
- package/dist/cli/shell/commands.js.map +1 -1
- package/dist/cli/shell/components/AgentPanel.d.ts.map +1 -1
- package/dist/cli/shell/components/AgentPanel.js +4 -3
- package/dist/cli/shell/components/AgentPanel.js.map +1 -1
- package/dist/cli/shell/components/App.d.ts.map +1 -1
- package/dist/cli/shell/components/App.js +36 -2
- package/dist/cli/shell/components/App.js.map +1 -1
- package/dist/cli/shell/components/MessageStream.d.ts.map +1 -1
- package/dist/cli/shell/components/MessageStream.js +2 -1
- package/dist/cli/shell/components/MessageStream.js.map +1 -1
- package/dist/cli/shell/components/ThinkingIndicator.js +2 -2
- package/dist/cli/shell/components/ThinkingIndicator.js.map +1 -1
- package/dist/cli/shell/coordinator.js +88 -88
- package/dist/cli/shell/index.d.ts.map +1 -1
- package/dist/cli/shell/index.js +41 -3
- package/dist/cli/shell/index.js.map +1 -1
- package/dist/cli-entry.js +206 -14
- package/dist/cli-entry.js.map +1 -1
- package/package.json +27 -2
- package/templates/casting-history.json +4 -4
- package/templates/casting-policy.json +35 -35
- package/templates/casting-registry.json +3 -3
- package/templates/ceremonies.md +41 -41
- package/templates/charter.md +53 -53
- package/templates/constraint-tracking.md +38 -38
- package/templates/copilot-instructions.md +46 -46
- package/templates/history.md +10 -10
- package/templates/identity/now.md +9 -9
- package/templates/identity/wisdom.md +15 -15
- package/templates/mcp-config.md +90 -90
- package/templates/multi-agent-format.md +28 -28
- package/templates/orchestration-log.md +27 -27
- package/templates/plugin-marketplace.md +49 -49
- package/templates/raw-agent-output.md +37 -37
- package/templates/roster.md +60 -60
- package/templates/routing.md +54 -54
- package/templates/run-output.md +50 -50
- package/templates/scribe-charter.md +119 -119
- package/templates/skill.md +24 -24
- package/templates/skills/squad-conventions/SKILL.md +69 -69
- package/templates/squad.agent.md +1146 -1146
- package/templates/workflows/squad-ci.yml +24 -24
- package/templates/workflows/squad-docs.yml +50 -50
- package/templates/workflows/squad-insider-release.yml +61 -61
- package/templates/workflows/squad-issue-assign.yml +161 -161
- package/templates/workflows/squad-label-enforce.yml +181 -181
- package/templates/workflows/squad-preview.yml +55 -55
- package/templates/workflows/squad-promote.yml +120 -120
- package/templates/workflows/squad-release.yml +77 -77
- package/templates/workflows/squad-triage.yml +260 -260
- package/templates/workflows/sync-squad-labels.yml +169 -169
- package/dist/cli/shell/sdk-bridge.d.ts +0 -50
- package/dist/cli/shell/sdk-bridge.d.ts.map +0 -1
- package/dist/cli/shell/sdk-bridge.js +0 -235
- package/dist/cli/shell/sdk-bridge.js.map +0 -1
- package/dist/cli/shell/theme-colors.d.ts +0 -39
- package/dist/cli/shell/theme-colors.d.ts.map +0 -1
- package/dist/cli/shell/theme-colors.js +0 -39
- package/dist/cli/shell/theme-colors.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -4
- package/dist/cli.js.map +0 -1
- 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,
|
|
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"}
|