@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.
Files changed (91) hide show
  1. package/dist/cli/commands/cast.d.ts.map +1 -1
  2. package/dist/cli/commands/cast.js +9 -2
  3. package/dist/cli/commands/cast.js.map +1 -1
  4. package/dist/cli/commands/externalize.d.ts.map +1 -1
  5. package/dist/cli/commands/externalize.js +50 -48
  6. package/dist/cli/commands/externalize.js.map +1 -1
  7. package/dist/cli/commands/loop.js +9 -9
  8. package/dist/cli/commands/loop.js.map +1 -1
  9. package/dist/cli/commands/plugin.d.ts.map +1 -1
  10. package/dist/cli/commands/plugin.js +2 -1
  11. package/dist/cli/commands/plugin.js.map +1 -1
  12. package/dist/cli/commands/skill.d.ts +31 -0
  13. package/dist/cli/commands/skill.d.ts.map +1 -0
  14. package/dist/cli/commands/skill.js +496 -0
  15. package/dist/cli/commands/skill.js.map +1 -0
  16. package/dist/cli/commands/start.d.ts.map +1 -1
  17. package/dist/cli/commands/start.js +31 -5
  18. package/dist/cli/commands/start.js.map +1 -1
  19. package/dist/cli/commands/watch/agent-spawn.d.ts +62 -0
  20. package/dist/cli/commands/watch/agent-spawn.d.ts.map +1 -0
  21. package/dist/cli/commands/watch/agent-spawn.js +127 -0
  22. package/dist/cli/commands/watch/agent-spawn.js.map +1 -0
  23. package/dist/cli/commands/watch/capabilities/board.d.ts.map +1 -1
  24. package/dist/cli/commands/watch/capabilities/board.js +10 -7
  25. package/dist/cli/commands/watch/capabilities/board.js.map +1 -1
  26. package/dist/cli/commands/watch/capabilities/decision-hygiene.js +3 -3
  27. package/dist/cli/commands/watch/capabilities/decision-hygiene.js.map +1 -1
  28. package/dist/cli/commands/watch/capabilities/execute.d.ts.map +1 -1
  29. package/dist/cli/commands/watch/capabilities/execute.js +15 -5
  30. package/dist/cli/commands/watch/capabilities/execute.js.map +1 -1
  31. package/dist/cli/commands/watch/capabilities/fleet-dispatch.d.ts.map +1 -1
  32. package/dist/cli/commands/watch/capabilities/fleet-dispatch.js +13 -7
  33. package/dist/cli/commands/watch/capabilities/fleet-dispatch.js.map +1 -1
  34. package/dist/cli/commands/watch/capabilities/monitor-email.js +3 -3
  35. package/dist/cli/commands/watch/capabilities/monitor-email.js.map +1 -1
  36. package/dist/cli/commands/watch/capabilities/monitor-teams.js +3 -3
  37. package/dist/cli/commands/watch/capabilities/monitor-teams.js.map +1 -1
  38. package/dist/cli/commands/watch/capabilities/retro.js +3 -3
  39. package/dist/cli/commands/watch/capabilities/retro.js.map +1 -1
  40. package/dist/cli/commands/watch/capabilities/self-pull.d.ts.map +1 -1
  41. package/dist/cli/commands/watch/capabilities/self-pull.js +10 -9
  42. package/dist/cli/commands/watch/capabilities/self-pull.js.map +1 -1
  43. package/dist/cli/commands/watch/capabilities/two-pass.d.ts.map +1 -1
  44. package/dist/cli/commands/watch/capabilities/two-pass.js +7 -5
  45. package/dist/cli/commands/watch/capabilities/two-pass.js.map +1 -1
  46. package/dist/cli/commands/watch/capabilities/wave-dispatch.js +3 -3
  47. package/dist/cli/commands/watch/capabilities/wave-dispatch.js.map +1 -1
  48. package/dist/cli/commands/watch/config.d.ts +10 -0
  49. package/dist/cli/commands/watch/config.d.ts.map +1 -1
  50. package/dist/cli/commands/watch/config.js +28 -1
  51. package/dist/cli/commands/watch/config.js.map +1 -1
  52. package/dist/cli/commands/watch/external-loader.d.ts +14 -0
  53. package/dist/cli/commands/watch/external-loader.d.ts.map +1 -0
  54. package/dist/cli/commands/watch/external-loader.js +85 -0
  55. package/dist/cli/commands/watch/external-loader.js.map +1 -0
  56. package/dist/cli/commands/watch/health.js +10 -9
  57. package/dist/cli/commands/watch/health.js.map +1 -1
  58. package/dist/cli/commands/watch/index.d.ts +10 -0
  59. package/dist/cli/commands/watch/index.d.ts.map +1 -1
  60. package/dist/cli/commands/watch/index.js +53 -7
  61. package/dist/cli/commands/watch/index.js.map +1 -1
  62. package/dist/cli/commands/watch/pid-tracker.d.ts +35 -0
  63. package/dist/cli/commands/watch/pid-tracker.d.ts.map +1 -0
  64. package/dist/cli/commands/watch/pid-tracker.js +127 -0
  65. package/dist/cli/commands/watch/pid-tracker.js.map +1 -0
  66. package/dist/cli/commands/watch/types.d.ts +10 -1
  67. package/dist/cli/commands/watch/types.d.ts.map +1 -1
  68. package/dist/cli/core/gh-cli.d.ts +2 -1
  69. package/dist/cli/core/gh-cli.d.ts.map +1 -1
  70. package/dist/cli/core/gh-cli.js +10 -8
  71. package/dist/cli/core/gh-cli.js.map +1 -1
  72. package/dist/cli/core/init.d.ts +10 -0
  73. package/dist/cli/core/init.d.ts.map +1 -1
  74. package/dist/cli/core/init.js +75 -30
  75. package/dist/cli/core/init.js.map +1 -1
  76. package/dist/cli/core/upgrade.d.ts.map +1 -1
  77. package/dist/cli/core/upgrade.js +18 -0
  78. package/dist/cli/core/upgrade.js.map +1 -1
  79. package/dist/cli/index.d.ts +2 -0
  80. package/dist/cli/index.d.ts.map +1 -1
  81. package/dist/cli/index.js +2 -0
  82. package/dist/cli/index.js.map +1 -1
  83. package/dist/cli/shell/index.d.ts.map +1 -1
  84. package/dist/cli/shell/index.js +22 -0
  85. package/dist/cli/shell/index.js.map +1 -1
  86. package/dist/cli-entry.js +49 -0
  87. package/dist/cli-entry.js.map +1 -1
  88. package/package.json +6 -2
  89. package/templates/mcp-config.md +0 -2
  90. package/templates/scribe-charter.md +1 -1
  91. 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;AAwBH,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;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsMhF"}
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 FIRST (before PTY takes over terminal) ───
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-ignore
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":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}