@bradygaster/squad-cli 0.9.4-insider.1 → 0.9.5-insider.1
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/dist/cli/commands/cast.d.ts.map +1 -1
- package/dist/cli/commands/cast.js +9 -2
- package/dist/cli/commands/cast.js.map +1 -1
- package/dist/cli/commands/externalize.d.ts.map +1 -1
- package/dist/cli/commands/externalize.js +50 -48
- package/dist/cli/commands/externalize.js.map +1 -1
- package/dist/cli/commands/loop.js +9 -9
- package/dist/cli/commands/loop.js.map +1 -1
- package/dist/cli/commands/plugin.d.ts.map +1 -1
- package/dist/cli/commands/plugin.js +2 -1
- package/dist/cli/commands/plugin.js.map +1 -1
- package/dist/cli/commands/skill.d.ts +31 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +496 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +31 -5
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/watch/agent-spawn.d.ts +62 -0
- package/dist/cli/commands/watch/agent-spawn.d.ts.map +1 -0
- package/dist/cli/commands/watch/agent-spawn.js +127 -0
- package/dist/cli/commands/watch/agent-spawn.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/board.d.ts.map +1 -1
- package/dist/cli/commands/watch/capabilities/board.js +10 -7
- package/dist/cli/commands/watch/capabilities/board.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/decision-hygiene.js +3 -3
- package/dist/cli/commands/watch/capabilities/decision-hygiene.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/execute.d.ts.map +1 -1
- package/dist/cli/commands/watch/capabilities/execute.js +15 -5
- package/dist/cli/commands/watch/capabilities/execute.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/fleet-dispatch.d.ts.map +1 -1
- package/dist/cli/commands/watch/capabilities/fleet-dispatch.js +13 -7
- package/dist/cli/commands/watch/capabilities/fleet-dispatch.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/monitor-email.js +3 -3
- package/dist/cli/commands/watch/capabilities/monitor-email.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/monitor-teams.js +3 -3
- package/dist/cli/commands/watch/capabilities/monitor-teams.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/retro.js +3 -3
- package/dist/cli/commands/watch/capabilities/retro.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/self-pull.d.ts.map +1 -1
- package/dist/cli/commands/watch/capabilities/self-pull.js +10 -9
- package/dist/cli/commands/watch/capabilities/self-pull.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/two-pass.d.ts.map +1 -1
- package/dist/cli/commands/watch/capabilities/two-pass.js +7 -5
- package/dist/cli/commands/watch/capabilities/two-pass.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/wave-dispatch.js +3 -3
- package/dist/cli/commands/watch/capabilities/wave-dispatch.js.map +1 -1
- package/dist/cli/commands/watch/config.d.ts +10 -0
- package/dist/cli/commands/watch/config.d.ts.map +1 -1
- package/dist/cli/commands/watch/config.js +28 -1
- package/dist/cli/commands/watch/config.js.map +1 -1
- package/dist/cli/commands/watch/external-loader.d.ts +14 -0
- package/dist/cli/commands/watch/external-loader.d.ts.map +1 -0
- package/dist/cli/commands/watch/external-loader.js +85 -0
- package/dist/cli/commands/watch/external-loader.js.map +1 -0
- package/dist/cli/commands/watch/health.js +10 -9
- package/dist/cli/commands/watch/health.js.map +1 -1
- package/dist/cli/commands/watch/index.d.ts +10 -0
- package/dist/cli/commands/watch/index.d.ts.map +1 -1
- package/dist/cli/commands/watch/index.js +53 -7
- package/dist/cli/commands/watch/index.js.map +1 -1
- package/dist/cli/commands/watch/pid-tracker.d.ts +35 -0
- package/dist/cli/commands/watch/pid-tracker.d.ts.map +1 -0
- package/dist/cli/commands/watch/pid-tracker.js +127 -0
- package/dist/cli/commands/watch/pid-tracker.js.map +1 -0
- package/dist/cli/commands/watch/types.d.ts +10 -1
- package/dist/cli/commands/watch/types.d.ts.map +1 -1
- package/dist/cli/core/gh-cli.d.ts +2 -1
- package/dist/cli/core/gh-cli.d.ts.map +1 -1
- package/dist/cli/core/gh-cli.js +10 -8
- package/dist/cli/core/gh-cli.js.map +1 -1
- package/dist/cli/core/init.d.ts +10 -0
- package/dist/cli/core/init.d.ts.map +1 -1
- package/dist/cli/core/init.js +75 -30
- package/dist/cli/core/init.js.map +1 -1
- package/dist/cli/core/upgrade.d.ts.map +1 -1
- package/dist/cli/core/upgrade.js +18 -0
- package/dist/cli/core/upgrade.js.map +1 -1
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/shell/index.d.ts.map +1 -1
- package/dist/cli/shell/index.js +22 -0
- package/dist/cli/shell/index.js.map +1 -1
- package/dist/cli-entry.js +49 -0
- package/dist/cli-entry.js.map +1 -1
- package/package.json +6 -2
- package/templates/mcp-config.md +0 -2
- package/templates/scribe-charter.md +1 -1
- package/templates/squad.agent.md.template +13 -6
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill command — APM (Agent Package Manager) integration
|
|
3
|
+
*
|
|
4
|
+
* squad skill publish [<name>] — export a skill to APM format
|
|
5
|
+
* squad skill install <name> — install a skill from APM registry
|
|
6
|
+
* squad skill list — list installed skills
|
|
7
|
+
*
|
|
8
|
+
* APM is package.json for AI agent context: https://github.com/microsoft/apm
|
|
9
|
+
*/
|
|
10
|
+
import { readFile, writeFile, mkdir, readdir } from 'node:fs/promises';
|
|
11
|
+
import { existsSync } from 'node:fs';
|
|
12
|
+
import { join, basename } from 'node:path';
|
|
13
|
+
import { execFile } from 'node:child_process';
|
|
14
|
+
import { promisify } from 'node:util';
|
|
15
|
+
import { success, warn, info, DIM, BOLD, RESET } from '../core/output.js';
|
|
16
|
+
import { fatal } from '../core/errors.js';
|
|
17
|
+
import { detectSquadDir } from '../core/detect-squad-dir.js';
|
|
18
|
+
import { ghAvailable } from '../core/gh-cli.js';
|
|
19
|
+
const execFileAsync = promisify(execFile);
|
|
20
|
+
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
21
|
+
/** Parse `---\nkey: value\n---` front-matter from a Markdown file. */
|
|
22
|
+
function parseFrontMatter(content) {
|
|
23
|
+
const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
24
|
+
if (!match)
|
|
25
|
+
return {};
|
|
26
|
+
const result = {};
|
|
27
|
+
for (const line of match[1].split('\n')) {
|
|
28
|
+
const colon = line.indexOf(':');
|
|
29
|
+
if (colon === -1)
|
|
30
|
+
continue;
|
|
31
|
+
const key = line.slice(0, colon).trim();
|
|
32
|
+
const value = line.slice(colon + 1).trim().replace(/^["']|["']$/g, '');
|
|
33
|
+
result[key] = value;
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
/** Read the project name from package.json, falling back to directory name. */
|
|
38
|
+
async function readProjectName(dest) {
|
|
39
|
+
const pkgPath = join(dest, 'package.json');
|
|
40
|
+
if (existsSync(pkgPath)) {
|
|
41
|
+
try {
|
|
42
|
+
const pkg = JSON.parse(await readFile(pkgPath, 'utf8'));
|
|
43
|
+
if (typeof pkg.name === 'string' && pkg.name)
|
|
44
|
+
return pkg.name;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// ignore
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return basename(dest);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve the skills directory, preferring .copilot/skills/ over .squad/skills/.
|
|
54
|
+
* Returns { dir, relPrefix } where relPrefix is the display path (e.g. '.copilot/skills').
|
|
55
|
+
*/
|
|
56
|
+
function resolveSkillsDir(dest) {
|
|
57
|
+
const copilotSkills = join(dest, '.copilot', 'skills');
|
|
58
|
+
if (existsSync(copilotSkills)) {
|
|
59
|
+
return { dir: copilotSkills, relPrefix: '.copilot/skills' };
|
|
60
|
+
}
|
|
61
|
+
const squadDirInfo = detectSquadDir(dest);
|
|
62
|
+
const squadSkills = join(squadDirInfo.path, 'skills');
|
|
63
|
+
if (existsSync(squadSkills)) {
|
|
64
|
+
return { dir: squadSkills, relPrefix: `${squadDirInfo.name}/skills` };
|
|
65
|
+
}
|
|
66
|
+
// Default to .copilot/skills/ for new installs
|
|
67
|
+
return { dir: copilotSkills, relPrefix: '.copilot/skills' };
|
|
68
|
+
}
|
|
69
|
+
/** Collect all skills from the skills directory. */
|
|
70
|
+
async function collectSkills(skillsDir, relPrefix) {
|
|
71
|
+
if (!existsSync(skillsDir))
|
|
72
|
+
return [];
|
|
73
|
+
const skills = [];
|
|
74
|
+
try {
|
|
75
|
+
const entries = await readdir(skillsDir);
|
|
76
|
+
for (const entry of entries) {
|
|
77
|
+
const skillFile = join(skillsDir, entry, 'skill.md');
|
|
78
|
+
if (!existsSync(skillFile))
|
|
79
|
+
continue;
|
|
80
|
+
const content = await readFile(skillFile, 'utf8');
|
|
81
|
+
const fm = parseFrontMatter(content);
|
|
82
|
+
skills.push({
|
|
83
|
+
name: fm['name'] ?? entry,
|
|
84
|
+
description: fm['description'],
|
|
85
|
+
path: `${relPrefix}/${entry}/skill.md`,
|
|
86
|
+
version: fm['version'],
|
|
87
|
+
source: fm['source'],
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// ignore read errors
|
|
93
|
+
}
|
|
94
|
+
return skills;
|
|
95
|
+
}
|
|
96
|
+
// ── Sub-commands ──────────────────────────────────────────────────────────────
|
|
97
|
+
/**
|
|
98
|
+
* squad skill publish [<name>]
|
|
99
|
+
*
|
|
100
|
+
* Exports a skill (or all skills) to APM-compatible format.
|
|
101
|
+
* Creates/updates apm.yml at the project root.
|
|
102
|
+
*/
|
|
103
|
+
async function publish(dest, skillName) {
|
|
104
|
+
const { dir: skillsDir, relPrefix } = resolveSkillsDir(dest);
|
|
105
|
+
if (!existsSync(skillsDir)) {
|
|
106
|
+
fatal('No skills directory found. Create .copilot/skills/ first.');
|
|
107
|
+
}
|
|
108
|
+
const projectName = await readProjectName(dest);
|
|
109
|
+
if (skillName) {
|
|
110
|
+
// Publish a single named skill
|
|
111
|
+
const skillFile = join(skillsDir, skillName, 'skill.md');
|
|
112
|
+
if (!existsSync(skillFile)) {
|
|
113
|
+
fatal(`Skill '${skillName}' not found at ${relPrefix}/${skillName}/skill.md`);
|
|
114
|
+
}
|
|
115
|
+
const content = await readFile(skillFile, 'utf8');
|
|
116
|
+
const fm = parseFrontMatter(content);
|
|
117
|
+
// Build the skill's own apm.yml inside its directory
|
|
118
|
+
const apmSkillPath = join(skillsDir, skillName, 'apm.yml');
|
|
119
|
+
const skillApm = [
|
|
120
|
+
`name: ${fm['name'] ?? skillName}`,
|
|
121
|
+
`version: ${fm['version'] ?? '1.0.0'}`,
|
|
122
|
+
fm['description'] ? `description: "${fm['description']}"` : null,
|
|
123
|
+
``,
|
|
124
|
+
`skills:`,
|
|
125
|
+
` - name: ${fm['name'] ?? skillName}`,
|
|
126
|
+
` path: skill.md`,
|
|
127
|
+
fm['description'] ? ` description: "${fm['description']}"` : null,
|
|
128
|
+
]
|
|
129
|
+
.filter(l => l !== null)
|
|
130
|
+
.join('\n');
|
|
131
|
+
await writeFile(apmSkillPath, skillApm + '\n', 'utf8');
|
|
132
|
+
success(`Published skill '${skillName}' to ${relPrefix}/${skillName}/apm.yml`);
|
|
133
|
+
info(`${DIM}APM format ready — push to GitHub to share via APM registry${RESET}`);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
// Publish all skills → update project-level apm.yml
|
|
137
|
+
const skills = await collectSkills(skillsDir, relPrefix);
|
|
138
|
+
const apmPath = join(dest, 'apm.yml');
|
|
139
|
+
// Read existing apm.yml to preserve manually-added fields
|
|
140
|
+
let existing = {};
|
|
141
|
+
if (existsSync(apmPath)) {
|
|
142
|
+
try {
|
|
143
|
+
// Simple YAML parse — only top-level fields we care about
|
|
144
|
+
const raw = await readFile(apmPath, 'utf8');
|
|
145
|
+
if (raw.includes('instructions:')) {
|
|
146
|
+
// Preserve instructions block (just keep existing file, re-emit skills section)
|
|
147
|
+
info(`${DIM}Updating skills section in existing apm.yml${RESET}`);
|
|
148
|
+
}
|
|
149
|
+
existing = { name: projectName };
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
existing = {};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const lines = [
|
|
156
|
+
`# apm.yml — Agent Package Manager manifest`,
|
|
157
|
+
`# See: https://github.com/microsoft/apm`,
|
|
158
|
+
``,
|
|
159
|
+
`name: ${existing.name ?? projectName}`,
|
|
160
|
+
`version: 1.0.0`,
|
|
161
|
+
``,
|
|
162
|
+
`# Skills exported from ${relPrefix}/`,
|
|
163
|
+
`skills:`,
|
|
164
|
+
...skills.map(s => [
|
|
165
|
+
` - name: ${s.name}`,
|
|
166
|
+
s.description ? ` description: "${s.description}"` : null,
|
|
167
|
+
` path: ${s.path}`,
|
|
168
|
+
s.version ? ` version: ${s.version}` : null,
|
|
169
|
+
]
|
|
170
|
+
.filter(l => l !== null)
|
|
171
|
+
.join('\n')),
|
|
172
|
+
``,
|
|
173
|
+
`# Instruction files deployed by 'apm install'`,
|
|
174
|
+
`instructions:`,
|
|
175
|
+
` - path: .squad/copilot-instructions.md`,
|
|
176
|
+
` target: .github/copilot-instructions.md`,
|
|
177
|
+
``,
|
|
178
|
+
`# Prompts deployed by 'apm install'`,
|
|
179
|
+
`prompts:`,
|
|
180
|
+
` - path: ${relPrefix}/*/skill.md`,
|
|
181
|
+
` target: .github/prompts/`,
|
|
182
|
+
];
|
|
183
|
+
await writeFile(apmPath, lines.join('\n') + '\n', 'utf8');
|
|
184
|
+
if (skills.length > 0) {
|
|
185
|
+
success(`Published ${skills.length} skill(s) to apm.yml`);
|
|
186
|
+
for (const s of skills) {
|
|
187
|
+
info(` ${DIM}• ${s.name}${RESET}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
success(`Created apm.yml (no skills found yet — add skills to ${relPrefix}/)`);
|
|
192
|
+
}
|
|
193
|
+
info(`${DIM}Run 'apm publish' to push to the APM registry${RESET}`);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* squad skill install <source>
|
|
197
|
+
*
|
|
198
|
+
* Installs a skill from an APM source.
|
|
199
|
+
* Source formats:
|
|
200
|
+
* owner/repo — install all skills from a GitHub repo
|
|
201
|
+
* owner/repo/skill-name — install a specific skill
|
|
202
|
+
* https://... — URL to a raw skill.md
|
|
203
|
+
*/
|
|
204
|
+
async function install(dest, source) {
|
|
205
|
+
if (!source) {
|
|
206
|
+
fatal('Usage: squad skill install <owner/repo>[/<skill-name>] | <url>');
|
|
207
|
+
}
|
|
208
|
+
const { dir: skillsDir, relPrefix } = resolveSkillsDir(dest);
|
|
209
|
+
if (!existsSync(skillsDir)) {
|
|
210
|
+
await mkdir(skillsDir, { recursive: true });
|
|
211
|
+
}
|
|
212
|
+
// URL-based install
|
|
213
|
+
if (source.startsWith('http://') || source.startsWith('https://')) {
|
|
214
|
+
await installFromUrl(source, skillsDir, relPrefix);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
// GitHub-based: owner/repo or owner/repo/skill-name
|
|
218
|
+
const parts = source.split('/');
|
|
219
|
+
if (parts.length < 2) {
|
|
220
|
+
fatal('Invalid source. Use: owner/repo, owner/repo/skill-name, or a URL');
|
|
221
|
+
}
|
|
222
|
+
const owner = parts[0];
|
|
223
|
+
const repo = parts[1];
|
|
224
|
+
const skillFilter = parts.length >= 3 ? parts.slice(2).join('/') : undefined;
|
|
225
|
+
if (!ghAvailable()) {
|
|
226
|
+
fatal('GitHub CLI (gh) is required for APM install. Install from https://cli.github.com/');
|
|
227
|
+
}
|
|
228
|
+
info(`${DIM}Fetching skill(s) from ${owner}/${repo}...${RESET}`);
|
|
229
|
+
// Try to find skills via gh api — look for apm.yml or .copilot/skills/
|
|
230
|
+
await installFromGitHub(owner, repo, skillFilter, skillsDir, dest);
|
|
231
|
+
}
|
|
232
|
+
async function installFromUrl(url, skillsDir, relPrefix) {
|
|
233
|
+
let content;
|
|
234
|
+
try {
|
|
235
|
+
// Node 18+ has built-in fetch
|
|
236
|
+
const res = await fetch(url);
|
|
237
|
+
if (!res.ok) {
|
|
238
|
+
fatal(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
|
|
239
|
+
}
|
|
240
|
+
content = await res.text();
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
fatal(`Failed to fetch ${url}: ${err.message}`);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
// Derive skill name from URL
|
|
247
|
+
const urlName = url
|
|
248
|
+
.split('/')
|
|
249
|
+
.filter(Boolean)
|
|
250
|
+
.slice(-2, -1)[0] ??
|
|
251
|
+
'imported-skill';
|
|
252
|
+
const skillName = urlName.replace(/[^a-z0-9-_]/gi, '-').toLowerCase();
|
|
253
|
+
const skillDir = join(skillsDir, skillName);
|
|
254
|
+
await mkdir(skillDir, { recursive: true });
|
|
255
|
+
await writeFile(join(skillDir, 'skill.md'), content, 'utf8');
|
|
256
|
+
success(`Installed skill '${skillName}' from URL`);
|
|
257
|
+
info(` ${DIM}Location: ${relPrefix}/${skillName}/skill.md${RESET}`);
|
|
258
|
+
}
|
|
259
|
+
async function installFromGitHub(owner, repo, skillFilter, skillsDir, dest) {
|
|
260
|
+
// First, try to read the apm.yml from the repo to discover skills
|
|
261
|
+
let apmContent = null;
|
|
262
|
+
try {
|
|
263
|
+
const { stdout } = await execFileAsync('gh', [
|
|
264
|
+
'api',
|
|
265
|
+
`repos/${owner}/${repo}/contents/apm.yml`,
|
|
266
|
+
'--jq', '.content',
|
|
267
|
+
]);
|
|
268
|
+
apmContent = Buffer.from(stdout.trim(), 'base64').toString('utf8');
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
// No apm.yml — fall back to scanning skills directories
|
|
272
|
+
}
|
|
273
|
+
if (!apmContent) {
|
|
274
|
+
// Fall back: try skills directories via API
|
|
275
|
+
await installSkillsFromSquadDir(owner, repo, skillFilter, skillsDir);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
// Parse the apm.yml to find skill paths
|
|
279
|
+
const skillPaths = [];
|
|
280
|
+
const lines = apmContent.split('\n');
|
|
281
|
+
let inSkills = false;
|
|
282
|
+
let currentSkill = {};
|
|
283
|
+
for (const line of lines) {
|
|
284
|
+
if (line.trim() === 'skills:') {
|
|
285
|
+
inSkills = true;
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
if (inSkills && line.match(/^[a-z]/i) && !line.startsWith(' ')) {
|
|
289
|
+
// New top-level key — exit skills section
|
|
290
|
+
if (currentSkill.name && currentSkill.path)
|
|
291
|
+
skillPaths.push(currentSkill);
|
|
292
|
+
currentSkill = {};
|
|
293
|
+
inSkills = false;
|
|
294
|
+
}
|
|
295
|
+
if (inSkills) {
|
|
296
|
+
const nameMatch = line.match(/^\s+- name:\s*(.+)$/);
|
|
297
|
+
const pathMatch = line.match(/^\s+path:\s*(.+)$/);
|
|
298
|
+
if (nameMatch) {
|
|
299
|
+
if (currentSkill.name && currentSkill.path)
|
|
300
|
+
skillPaths.push(currentSkill);
|
|
301
|
+
currentSkill = { name: nameMatch[1].trim() };
|
|
302
|
+
}
|
|
303
|
+
if (pathMatch)
|
|
304
|
+
currentSkill.path = pathMatch[1].trim();
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
if (currentSkill.name && currentSkill.path)
|
|
308
|
+
skillPaths.push(currentSkill);
|
|
309
|
+
// Filter by skill name if specified
|
|
310
|
+
const toInstall = skillFilter
|
|
311
|
+
? skillPaths.filter(s => s.name === skillFilter || s.path.includes(skillFilter))
|
|
312
|
+
: skillPaths;
|
|
313
|
+
if (toInstall.length === 0) {
|
|
314
|
+
if (skillFilter) {
|
|
315
|
+
fatal(`Skill '${skillFilter}' not found in ${owner}/${repo}'s apm.yml`);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
warn(`No skills declared in ${owner}/${repo}'s apm.yml`);
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
let installed = 0;
|
|
323
|
+
for (const skill of toInstall) {
|
|
324
|
+
try {
|
|
325
|
+
const { stdout: rawContent } = await execFileAsync('gh', [
|
|
326
|
+
'api',
|
|
327
|
+
`repos/${owner}/${repo}/contents/${skill.path}`,
|
|
328
|
+
'--jq', '.content',
|
|
329
|
+
]);
|
|
330
|
+
const content = Buffer.from(rawContent.trim(), 'base64').toString('utf8');
|
|
331
|
+
const skillDir = join(skillsDir, skill.name);
|
|
332
|
+
await mkdir(skillDir, { recursive: true });
|
|
333
|
+
await writeFile(join(skillDir, 'skill.md'), content, 'utf8');
|
|
334
|
+
// Write a source metadata file so we can track origin
|
|
335
|
+
const meta = {
|
|
336
|
+
source: `${owner}/${repo}`,
|
|
337
|
+
path: skill.path,
|
|
338
|
+
installed_at: new Date().toISOString(),
|
|
339
|
+
};
|
|
340
|
+
await writeFile(join(skillDir, '.apm-source.json'), JSON.stringify(meta, null, 2) + '\n', 'utf8');
|
|
341
|
+
success(`Installed skill '${skill.name}'`);
|
|
342
|
+
info(` ${DIM}Source: ${owner}/${repo}${skill.path}${RESET}`);
|
|
343
|
+
installed++;
|
|
344
|
+
}
|
|
345
|
+
catch (err) {
|
|
346
|
+
warn(`Failed to install '${skill.name}': ${err.message}`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (installed > 0) {
|
|
350
|
+
info(`\n${DIM}Run 'squad skill publish' to refresh apm.yml with newly installed skills${RESET}`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
async function installSkillsFromSquadDir(owner, repo, skillFilter, skillsDir) {
|
|
354
|
+
// Try .copilot/skills/ (standard) then .squad/skills/ (legacy) then bare skills/
|
|
355
|
+
const candidates = ['.copilot/skills', '.squad/skills', 'skills'];
|
|
356
|
+
let entries = [];
|
|
357
|
+
for (const candidate of candidates) {
|
|
358
|
+
try {
|
|
359
|
+
const { stdout } = await execFileAsync('gh', [
|
|
360
|
+
'api',
|
|
361
|
+
`repos/${owner}/${repo}/contents/${candidate}`,
|
|
362
|
+
'--jq', '[.[] | {name: .name, path: .path, type: .type}]',
|
|
363
|
+
]);
|
|
364
|
+
entries = JSON.parse(stdout);
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
catch {
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
if (entries.length === 0) {
|
|
372
|
+
fatal(`No skills directory found in ${owner}/${repo}. The repo may not use APM or Squad conventions.`);
|
|
373
|
+
}
|
|
374
|
+
const dirs = entries.filter(e => e.type === 'dir');
|
|
375
|
+
const toInstall = skillFilter ? dirs.filter(d => d.name === skillFilter) : dirs;
|
|
376
|
+
if (toInstall.length === 0) {
|
|
377
|
+
if (skillFilter) {
|
|
378
|
+
fatal(`Skill '${skillFilter}' not found in ${owner}/${repo}`);
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
warn(`No skill directories found in ${owner}/${repo}`);
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
let installed = 0;
|
|
386
|
+
for (const dir of toInstall) {
|
|
387
|
+
const skillFilePath = `${dir.path}/skill.md`;
|
|
388
|
+
try {
|
|
389
|
+
const { stdout: rawContent } = await execFileAsync('gh', [
|
|
390
|
+
'api',
|
|
391
|
+
`repos/${owner}/${repo}/contents/${skillFilePath}`,
|
|
392
|
+
'--jq', '.content',
|
|
393
|
+
]);
|
|
394
|
+
const content = Buffer.from(rawContent.trim(), 'base64').toString('utf8');
|
|
395
|
+
const skillDir = join(skillsDir, dir.name);
|
|
396
|
+
await mkdir(skillDir, { recursive: true });
|
|
397
|
+
await writeFile(join(skillDir, 'skill.md'), content, 'utf8');
|
|
398
|
+
const meta = {
|
|
399
|
+
source: `${owner}/${repo}`,
|
|
400
|
+
path: skillFilePath,
|
|
401
|
+
installed_at: new Date().toISOString(),
|
|
402
|
+
};
|
|
403
|
+
await writeFile(join(skillDir, '.apm-source.json'), JSON.stringify(meta, null, 2) + '\n', 'utf8');
|
|
404
|
+
success(`Installed skill '${dir.name}'`);
|
|
405
|
+
info(` ${DIM}Source: ${owner}/${repo}/${skillFilePath}${RESET}`);
|
|
406
|
+
installed++;
|
|
407
|
+
}
|
|
408
|
+
catch {
|
|
409
|
+
warn(`Skipped '${dir.name}' — no skill.md found`);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
if (installed > 0) {
|
|
413
|
+
info(`\n${DIM}Run 'squad skill publish' to refresh apm.yml${RESET}`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* squad skill list
|
|
418
|
+
*
|
|
419
|
+
* Lists installed skills from .copilot/skills/ (or legacy .squad/skills/).
|
|
420
|
+
*/
|
|
421
|
+
async function listSkills(dest) {
|
|
422
|
+
const { dir: skillsDir, relPrefix } = resolveSkillsDir(dest);
|
|
423
|
+
if (!existsSync(skillsDir)) {
|
|
424
|
+
info('No skills directory found. Run "squad init" first or create .copilot/skills/');
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
const skills = await collectSkills(skillsDir, relPrefix);
|
|
428
|
+
if (skills.length === 0) {
|
|
429
|
+
info(`${DIM}No skills installed yet.${RESET}`);
|
|
430
|
+
info(`Install a skill: squad skill install <owner/repo>`);
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
console.log(`\n${BOLD}Installed Skills${RESET}\n`);
|
|
434
|
+
for (const skill of skills) {
|
|
435
|
+
const metaPath = join(skillsDir, skill.name, '.apm-source.json');
|
|
436
|
+
let sourceNote = '';
|
|
437
|
+
if (existsSync(metaPath)) {
|
|
438
|
+
try {
|
|
439
|
+
const meta = JSON.parse(await readFile(metaPath, 'utf8'));
|
|
440
|
+
sourceNote = ` ${DIM}(from ${meta.source})${RESET}`;
|
|
441
|
+
}
|
|
442
|
+
catch {
|
|
443
|
+
// ignore
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
console.log(` ${BOLD}${skill.name}${RESET}${sourceNote}`);
|
|
447
|
+
if (skill.description) {
|
|
448
|
+
console.log(` ${DIM}${skill.description}${RESET}`);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
console.log();
|
|
452
|
+
}
|
|
453
|
+
// ── Main export ───────────────────────────────────────────────────────────────
|
|
454
|
+
/**
|
|
455
|
+
* Entry point for `squad skill` command.
|
|
456
|
+
*
|
|
457
|
+
* @param dest - Working directory (usually process.cwd())
|
|
458
|
+
* @param args - Remaining args after `squad skill`
|
|
459
|
+
*/
|
|
460
|
+
export async function runSkill(dest, args) {
|
|
461
|
+
const subCmd = args[0];
|
|
462
|
+
if (!subCmd || subCmd === 'help' || subCmd === '--help') {
|
|
463
|
+
console.log(`\n${BOLD}squad skill${RESET} — APM (Agent Package Manager) integration\n`);
|
|
464
|
+
console.log(`Usage:`);
|
|
465
|
+
console.log(` squad skill publish [<skill-name>] Export skill(s) to APM format (apm.yml)`);
|
|
466
|
+
console.log(` squad skill install <source> Install from APM registry`);
|
|
467
|
+
console.log(` squad skill list List installed skills`);
|
|
468
|
+
console.log(`\nInstall sources:`);
|
|
469
|
+
console.log(` owner/repo All skills from a GitHub repo`);
|
|
470
|
+
console.log(` owner/repo/skill-name A specific skill from a GitHub repo`);
|
|
471
|
+
console.log(` https://... A direct URL to a skill.md file`);
|
|
472
|
+
console.log(`\nAPM registry: https://github.com/microsoft/apm\n`);
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
switch (subCmd) {
|
|
476
|
+
case 'publish': {
|
|
477
|
+
const skillName = args[1];
|
|
478
|
+
await publish(dest, skillName);
|
|
479
|
+
break;
|
|
480
|
+
}
|
|
481
|
+
case 'install': {
|
|
482
|
+
const source = args[1];
|
|
483
|
+
if (!source) {
|
|
484
|
+
fatal('Usage: squad skill install <owner/repo>[/<skill-name>] | <url>');
|
|
485
|
+
}
|
|
486
|
+
await install(dest, source);
|
|
487
|
+
break;
|
|
488
|
+
}
|
|
489
|
+
case 'list':
|
|
490
|
+
await listSkills(dest);
|
|
491
|
+
break;
|
|
492
|
+
default:
|
|
493
|
+
fatal(`Unknown skill subcommand: ${subCmd}\nRun 'squad skill help' for usage.`);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/cli/commands/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0BH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgBD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiNhF"}
|
|
@@ -20,7 +20,36 @@ const RESET = '\x1b[0m';
|
|
|
20
20
|
const DIM = '\x1b[2m';
|
|
21
21
|
const GREEN = '\x1b[32m';
|
|
22
22
|
const YELLOW = '\x1b[33m';
|
|
23
|
+
const MISSING_MODULE_RE = /\b(?:MODULE_NOT_FOUND|ERR_MODULE_NOT_FOUND)\b|Cannot find module|Cannot find package/i;
|
|
24
|
+
async function checkNodePty() {
|
|
25
|
+
try {
|
|
26
|
+
return await import('node-pty');
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
30
|
+
if (MISSING_MODULE_RE.test(detail)) {
|
|
31
|
+
throw new Error('node-pty not available. Install it for PTY support:');
|
|
32
|
+
}
|
|
33
|
+
throw new Error('node-pty not available. Install it for PTY support:', {
|
|
34
|
+
cause: detail,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
23
38
|
export async function runStart(cwd, options) {
|
|
39
|
+
// ─── Verify node-pty availability FIRST (before any side effects) ───
|
|
40
|
+
let nodePty;
|
|
41
|
+
try {
|
|
42
|
+
nodePty = await checkNodePty();
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
const detail = err instanceof Error && typeof err.cause === 'string' ? err.cause : undefined;
|
|
46
|
+
console.error(`${YELLOW}\u2717${RESET} ${err.message}`);
|
|
47
|
+
console.error(` ${DIM}npm install -g node-pty${RESET}`);
|
|
48
|
+
if (detail) {
|
|
49
|
+
console.error(`\n${DIM}Error: ${detail}${RESET}`);
|
|
50
|
+
}
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
24
53
|
const { repo, branch } = getGitInfo(cwd);
|
|
25
54
|
const machine = getMachineId();
|
|
26
55
|
const squadDir = storage.existsSync(path.join(cwd, '.squad'))
|
|
@@ -28,7 +57,7 @@ export async function runStart(cwd, options) {
|
|
|
28
57
|
: storage.existsSync(path.join(cwd, '.ai-team'))
|
|
29
58
|
? path.join(cwd, '.ai-team')
|
|
30
59
|
: '';
|
|
31
|
-
// ─── Setup remote bridge
|
|
60
|
+
// ─── Setup remote bridge (after verifying PTY is available) ───
|
|
32
61
|
let bridge = null;
|
|
33
62
|
let tunnelUrl = '';
|
|
34
63
|
const config = {
|
|
@@ -110,7 +139,7 @@ export async function runStart(cwd, options) {
|
|
|
110
139
|
tunnelUrl = tunnelUrlWithToken;
|
|
111
140
|
console.log(`${GREEN}✓${RESET} Remote: ${BOLD}${tunnelUrlWithToken}${RESET}`);
|
|
112
141
|
try {
|
|
113
|
-
// @ts-
|
|
142
|
+
// @ts-expect-error — qrcode-terminal is an optional dependency
|
|
114
143
|
const qrcode = (await import('qrcode-terminal'));
|
|
115
144
|
qrcode.default.generate(tunnelUrlWithToken, { small: true }, (code) => { console.log(code); });
|
|
116
145
|
}
|
|
@@ -127,9 +156,6 @@ export async function runStart(cwd, options) {
|
|
|
127
156
|
console.log(`${YELLOW}⚠${RESET} devtunnel not installed. Local mirror on port ${actualPort}.`);
|
|
128
157
|
}
|
|
129
158
|
// ─── Spawn copilot in PTY ─────────────────────────────────
|
|
130
|
-
// Dynamic import node-pty (native module)
|
|
131
|
-
// @ts-expect-error — node-pty is an optional native dependency
|
|
132
|
-
const nodePty = await import('node-pty');
|
|
133
159
|
const copilotExePath = path.join('C:', 'ProgramData', 'global-npm', 'node_modules', '@github', 'copilot', 'node_modules', '@github', 'copilot-win32-x64', 'copilot.exe');
|
|
134
160
|
const defaultCmd = storage.existsSync(copilotExePath) ? copilotExePath : 'copilot';
|
|
135
161
|
const copilotCmd = options.command || defaultCmd;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,qEAAqE;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAExC,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,GAAG,GAAG,SAAS,CAAC;AACtB,MAAM,KAAK,GAAG,UAAU,CAAC;AACzB,MAAM,MAAM,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
|