squads-cli 0.6.2 → 0.7.0

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 (112) hide show
  1. package/README.md +196 -1152
  2. package/dist/auth-YW3UPFSB.js +23 -0
  3. package/dist/autonomy-BWTVDEAT.js +102 -0
  4. package/dist/autonomy-BWTVDEAT.js.map +1 -0
  5. package/dist/chunk-3KCWNZWW.js +401 -0
  6. package/dist/chunk-3KCWNZWW.js.map +1 -0
  7. package/dist/chunk-67RO2HKR.js +174 -0
  8. package/dist/chunk-67RO2HKR.js.map +1 -0
  9. package/dist/chunk-7JVD7RD4.js +275 -0
  10. package/dist/chunk-7JVD7RD4.js.map +1 -0
  11. package/dist/chunk-BODLDQY7.js +452 -0
  12. package/dist/chunk-BODLDQY7.js.map +1 -0
  13. package/dist/chunk-FFFCFZ6A.js +121 -0
  14. package/dist/chunk-FFFCFZ6A.js.map +1 -0
  15. package/dist/chunk-FIWT2NMM.js +165 -0
  16. package/dist/chunk-FIWT2NMM.js.map +1 -0
  17. package/dist/chunk-L6GQCHDF.js +222 -0
  18. package/dist/chunk-L6GQCHDF.js.map +1 -0
  19. package/dist/{chunk-O7UV3FWI.js → chunk-LDM62TIX.js} +2 -2
  20. package/dist/chunk-LDM62TIX.js.map +1 -0
  21. package/dist/chunk-LOA3KWYJ.js +294 -0
  22. package/dist/chunk-LOA3KWYJ.js.map +1 -0
  23. package/dist/chunk-NA45DFXY.js +616 -0
  24. package/dist/chunk-NA45DFXY.js.map +1 -0
  25. package/dist/{chunk-4CMAEQQY.js → chunk-NQN6JPI7.js} +4 -3
  26. package/dist/chunk-NQN6JPI7.js.map +1 -0
  27. package/dist/chunk-OQJHPULO.js +103 -0
  28. package/dist/chunk-OQJHPULO.js.map +1 -0
  29. package/dist/chunk-QHNUMM4V.js +87 -0
  30. package/dist/chunk-QHNUMM4V.js.map +1 -0
  31. package/dist/chunk-RM6BWILN.js +74 -0
  32. package/dist/chunk-RM6BWILN.js.map +1 -0
  33. package/dist/chunk-WBR5J7EX.js +90 -0
  34. package/dist/chunk-WBR5J7EX.js.map +1 -0
  35. package/dist/chunk-Z2UKDBNL.js +162 -0
  36. package/dist/chunk-Z2UKDBNL.js.map +1 -0
  37. package/dist/cli.js +2136 -12600
  38. package/dist/cli.js.map +1 -1
  39. package/dist/context-M2A2DOFV.js +291 -0
  40. package/dist/context-M2A2DOFV.js.map +1 -0
  41. package/dist/context-feed-JMNW4GAM.js +391 -0
  42. package/dist/context-feed-JMNW4GAM.js.map +1 -0
  43. package/dist/cost-N37I4UTA.js +274 -0
  44. package/dist/cost-N37I4UTA.js.map +1 -0
  45. package/dist/create-554W5HNU.js +286 -0
  46. package/dist/create-554W5HNU.js.map +1 -0
  47. package/dist/daemon-XWPQPPPN.js +546 -0
  48. package/dist/daemon-XWPQPPPN.js.map +1 -0
  49. package/dist/dashboard-L7YKVQEB.js +945 -0
  50. package/dist/dashboard-L7YKVQEB.js.map +1 -0
  51. package/dist/dashboard-MFNRLCEE.js +794 -0
  52. package/dist/dashboard-MFNRLCEE.js.map +1 -0
  53. package/dist/doctor-RG75M5RO.js +346 -0
  54. package/dist/doctor-RG75M5RO.js.map +1 -0
  55. package/dist/env-config-KCLDBKYX.js +21 -0
  56. package/dist/exec-JQKBF7BL.js +197 -0
  57. package/dist/exec-JQKBF7BL.js.map +1 -0
  58. package/dist/feedback-KA2UYBZG.js +229 -0
  59. package/dist/feedback-KA2UYBZG.js.map +1 -0
  60. package/dist/github-UQTM5KMS.js +23 -0
  61. package/dist/goal-EOPC5ZCD.js +168 -0
  62. package/dist/goal-EOPC5ZCD.js.map +1 -0
  63. package/dist/health-3FZDOSR5.js +209 -0
  64. package/dist/health-3FZDOSR5.js.map +1 -0
  65. package/dist/history-TFVXJEDH.js +229 -0
  66. package/dist/history-TFVXJEDH.js.map +1 -0
  67. package/dist/index.js +1 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/init-UOWTNMIE.js +747 -0
  70. package/dist/init-UOWTNMIE.js.map +1 -0
  71. package/dist/kpi-2SQ2WCVT.js +413 -0
  72. package/dist/kpi-2SQ2WCVT.js.map +1 -0
  73. package/dist/learn-6ERTERAO.js +269 -0
  74. package/dist/learn-6ERTERAO.js.map +1 -0
  75. package/dist/list-KSOMUBMB.js +92 -0
  76. package/dist/list-KSOMUBMB.js.map +1 -0
  77. package/dist/login-ST6PAXYE.js +155 -0
  78. package/dist/login-ST6PAXYE.js.map +1 -0
  79. package/dist/memory-3CSNKXIL.js +562 -0
  80. package/dist/memory-3CSNKXIL.js.map +1 -0
  81. package/dist/progress-FKG4V2VH.js +202 -0
  82. package/dist/progress-FKG4V2VH.js.map +1 -0
  83. package/dist/providers-66PDCORB.js +65 -0
  84. package/dist/providers-66PDCORB.js.map +1 -0
  85. package/dist/results-2MJFLWEO.js +224 -0
  86. package/dist/results-2MJFLWEO.js.map +1 -0
  87. package/dist/run-72OQLH5A.js +2685 -0
  88. package/dist/run-72OQLH5A.js.map +1 -0
  89. package/dist/session-6H67XPAQ.js +64 -0
  90. package/dist/session-6H67XPAQ.js.map +1 -0
  91. package/dist/{chunk-NHGLXN2F.js → sessions-GVQIMN4W.js} +23 -459
  92. package/dist/sessions-GVQIMN4W.js.map +1 -0
  93. package/dist/{squad-parser-4BI3G4RS.js → squad-parser-CM3HOIWM.js} +2 -2
  94. package/dist/squad-parser-CM3HOIWM.js.map +1 -0
  95. package/dist/stats-ONZI557Q.js +335 -0
  96. package/dist/stats-ONZI557Q.js.map +1 -0
  97. package/dist/status-FYH42FTB.js +346 -0
  98. package/dist/status-FYH42FTB.js.map +1 -0
  99. package/dist/sync-HJZJNXHW.js +800 -0
  100. package/dist/sync-HJZJNXHW.js.map +1 -0
  101. package/dist/update-B4WMUOPO.js +83 -0
  102. package/dist/update-B4WMUOPO.js.map +1 -0
  103. package/dist/{update-ALJKFFM7.js → update-L7FGHN6W.js} +2 -2
  104. package/dist/update-L7FGHN6W.js.map +1 -0
  105. package/package.json +18 -10
  106. package/dist/chunk-4CMAEQQY.js.map +0 -1
  107. package/dist/chunk-NHGLXN2F.js.map +0 -1
  108. package/dist/chunk-O7UV3FWI.js.map +0 -1
  109. package/dist/sessions-6PB7ALCE.js +0 -16
  110. /package/dist/{sessions-6PB7ALCE.js.map → auth-YW3UPFSB.js.map} +0 -0
  111. /package/dist/{squad-parser-4BI3G4RS.js.map → env-config-KCLDBKYX.js.map} +0 -0
  112. /package/dist/{update-ALJKFFM7.js.map → github-UQTM5KMS.js.map} +0 -0
@@ -0,0 +1,291 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ Events,
4
+ track
5
+ } from "./chunk-L6GQCHDF.js";
6
+ import {
7
+ findSquadsDir,
8
+ listSquads,
9
+ loadSquad,
10
+ resolveExecutionContext
11
+ } from "./chunk-LDM62TIX.js";
12
+ import {
13
+ RESET,
14
+ bold,
15
+ box,
16
+ colors,
17
+ gradient,
18
+ icons,
19
+ padEnd,
20
+ writeLine
21
+ } from "./chunk-N7KDWU4W.js";
22
+ import "./chunk-7OCVIDC7.js";
23
+
24
+ // src/commands/context.ts
25
+ async function contextShowCommand(squadName, options = {}) {
26
+ await track(Events.CLI_CONTEXT, { squad: squadName });
27
+ const squadsDir = findSquadsDir();
28
+ if (!squadsDir) {
29
+ writeLine(`${colors.red}No .agents/squads directory found${RESET}`);
30
+ writeLine(`${colors.dim}Run \`squads init\` to create one.${RESET}`);
31
+ process.exit(1);
32
+ }
33
+ const squad = loadSquad(squadName);
34
+ if (!squad) {
35
+ writeLine(`${colors.red}Squad "${squadName}" not found.${RESET}`);
36
+ process.exit(1);
37
+ }
38
+ const execContext = resolveExecutionContext(squad);
39
+ if (options.json) {
40
+ console.log(JSON.stringify({
41
+ name: squad.name,
42
+ mission: squad.mission,
43
+ repo: squad.repo,
44
+ stack: squad.stack,
45
+ effort: squad.effort,
46
+ context: squad.context,
47
+ resolved: execContext.resolved
48
+ }, null, 2));
49
+ return;
50
+ }
51
+ writeLine();
52
+ writeLine(` ${gradient("squads")} ${colors.dim}context${RESET} ${colors.cyan}${squad.name}${RESET}`);
53
+ const ctx = squad.context;
54
+ if (!ctx) {
55
+ writeLine();
56
+ writeLine(` ${colors.yellow}No context defined in SQUAD.md frontmatter${RESET}`);
57
+ writeLine();
58
+ writeLine(` ${colors.dim}Add a frontmatter block to ${squad.name}/SQUAD.md:${RESET}`);
59
+ writeLine();
60
+ writeLine(` ${colors.dim}---${RESET}`);
61
+ writeLine(` ${colors.dim}name: ${squad.name}${RESET}`);
62
+ writeLine(` ${colors.dim}context:${RESET}`);
63
+ writeLine(` ${colors.dim} mcp: [chrome-devtools]${RESET}`);
64
+ writeLine(` ${colors.dim} model: { default: sonnet }${RESET}`);
65
+ writeLine(` ${colors.dim} budget: { daily: 10 }${RESET}`);
66
+ writeLine(` ${colors.dim}---${RESET}`);
67
+ writeLine();
68
+ return;
69
+ }
70
+ const tableWidth = 54;
71
+ writeLine();
72
+ writeLine(` ${colors.purple}${box.horizontal.repeat(tableWidth)}${RESET}`);
73
+ const mcpSource = execContext.resolved.mcpSource;
74
+ const mcpSourceLabel = mcpSource === "squad-local" ? `${colors.green}squad-local${RESET}` : mcpSource === "generated" ? `${colors.cyan}generated${RESET}` : mcpSource === "user-override" ? `${colors.yellow}user-override${RESET}` : `${colors.dim}fallback${RESET}`;
75
+ if (execContext.resolved.mcpServers.length > 0) {
76
+ writeLine(` ${bold}MCP${RESET} ${colors.cyan}${execContext.resolved.mcpServers.join(", ")}${RESET} ${colors.dim}(${mcpSourceLabel})${RESET}`);
77
+ } else if (ctx?.mcp && ctx.mcp.length > 0) {
78
+ writeLine(` ${bold}MCP${RESET} ${colors.cyan}${ctx.mcp.join(", ")}${RESET}`);
79
+ } else {
80
+ writeLine(` ${bold}MCP${RESET} ${colors.dim}none${RESET}`);
81
+ }
82
+ const resolvedSkills = execContext.resolved.skills || [];
83
+ if (resolvedSkills.length > 0) {
84
+ const skillLabels = resolvedSkills.map((s) => {
85
+ const sourceColor = s.source === "squad-local" ? colors.green : s.source === "project" ? colors.cyan : colors.dim;
86
+ return `${colors.cyan}${s.name}${RESET} ${sourceColor}(${s.source})${RESET}`;
87
+ });
88
+ writeLine(` ${bold}Skills${RESET} ${skillLabels.join(", ")}`);
89
+ } else if (ctx?.skills && ctx.skills.length > 0) {
90
+ writeLine(` ${bold}Skills${RESET} ${colors.cyan}${ctx.skills.join(", ")}${RESET}`);
91
+ }
92
+ if (ctx.memory?.load && ctx.memory.load.length > 0) {
93
+ writeLine(` ${bold}Memory${RESET} ${colors.cyan}${ctx.memory.load.join(", ")}${RESET}`);
94
+ }
95
+ if (ctx.model) {
96
+ const modelParts = [];
97
+ if (ctx.model.default) modelParts.push(`${colors.white}${ctx.model.default}${RESET} ${colors.dim}(default)${RESET}`);
98
+ if (ctx.model.expensive) modelParts.push(`${colors.yellow}${ctx.model.expensive}${RESET} ${colors.dim}(expensive)${RESET}`);
99
+ if (ctx.model.cheap) modelParts.push(`${colors.green}${ctx.model.cheap}${RESET} ${colors.dim}(cheap)${RESET}`);
100
+ writeLine(` ${bold}Model${RESET} ${modelParts.join(", ")}`);
101
+ }
102
+ if (ctx.budget) {
103
+ const budgetParts = [];
104
+ if (ctx.budget.daily) budgetParts.push(`$${ctx.budget.daily}/day`);
105
+ if (ctx.budget.weekly) budgetParts.push(`$${ctx.budget.weekly}/week`);
106
+ if (ctx.budget.perExecution) budgetParts.push(`$${ctx.budget.perExecution}/run`);
107
+ writeLine(` ${bold}Budget${RESET} ${colors.green}${budgetParts.join(", ")}${RESET}`);
108
+ }
109
+ if (squad.effort) {
110
+ const effortColor = squad.effort === "high" ? colors.red : squad.effort === "medium" ? colors.yellow : colors.green;
111
+ writeLine(` ${bold}Effort${RESET} ${effortColor}${squad.effort}${RESET}`);
112
+ }
113
+ if (squad.repo) {
114
+ writeLine(` ${bold}Repo${RESET} ${colors.dim}${squad.repo}${RESET}`);
115
+ }
116
+ if (squad.stack) {
117
+ writeLine(` ${bold}Stack${RESET} ${colors.dim}${squad.stack}${RESET}`);
118
+ }
119
+ writeLine(` ${colors.purple}${box.horizontal.repeat(tableWidth)}${RESET}`);
120
+ writeLine();
121
+ writeLine(` ${colors.dim}$${RESET} squads context show ${colors.cyan}${squad.name}${RESET} --json ${colors.dim}JSON output${RESET}`);
122
+ writeLine(` ${colors.dim}$${RESET} squads run ${colors.cyan}${squad.name}${RESET} ${colors.dim}Run with this context${RESET}`);
123
+ writeLine();
124
+ }
125
+ async function contextListCommand(options = {}) {
126
+ await track(Events.CLI_CONTEXT, { action: "list" });
127
+ const squadsDir = findSquadsDir();
128
+ if (!squadsDir) {
129
+ writeLine(`${colors.red}No .agents/squads directory found${RESET}`);
130
+ process.exit(1);
131
+ }
132
+ const squads = listSquads(squadsDir);
133
+ if (options.json) {
134
+ const contexts = {};
135
+ for (const name of squads) {
136
+ const squad = loadSquad(name);
137
+ if (squad) {
138
+ contexts[name] = squad.context;
139
+ }
140
+ }
141
+ console.log(JSON.stringify(contexts, null, 2));
142
+ return;
143
+ }
144
+ writeLine();
145
+ writeLine(` ${gradient("squads")} ${colors.dim}context list${RESET}`);
146
+ writeLine();
147
+ const w = { name: 14, mcp: 24, model: 12, budget: 12 };
148
+ const tableWidth = w.name + w.mcp + w.model + w.budget + 6;
149
+ writeLine(` ${colors.purple}${box.topLeft}${colors.dim}${box.horizontal.repeat(tableWidth)}${colors.purple}${box.topRight}${RESET}`);
150
+ const header = ` ${colors.purple}${box.vertical}${RESET} ${bold}${padEnd("SQUAD", w.name)}${RESET}${bold}${padEnd("MCP", w.mcp)}${RESET}${bold}${padEnd("MODEL", w.model)}${RESET}${bold}BUDGET${RESET} ${colors.purple}${box.vertical}${RESET}`;
151
+ writeLine(header);
152
+ writeLine(` ${colors.purple}${box.teeRight}${colors.dim}${box.horizontal.repeat(tableWidth)}${colors.purple}${box.teeLeft}${RESET}`);
153
+ for (const name of squads) {
154
+ const squad = loadSquad(name);
155
+ const ctx = squad?.context;
156
+ const mcpStr = ctx?.mcp?.slice(0, 2).join(", ") || `${colors.dim}\u2014${RESET}`;
157
+ const modelStr = ctx?.model?.default || `${colors.dim}\u2014${RESET}`;
158
+ const budgetStr = ctx?.budget?.daily ? `$${ctx.budget.daily}/d` : `${colors.dim}\u2014${RESET}`;
159
+ const row = ` ${colors.purple}${box.vertical}${RESET} ${colors.cyan}${padEnd(name, w.name)}${RESET}${padEnd(mcpStr, w.mcp)}${padEnd(modelStr, w.model)}${padEnd(budgetStr, w.budget)}${colors.purple}${box.vertical}${RESET}`;
160
+ writeLine(row);
161
+ }
162
+ writeLine(` ${colors.purple}${box.bottomLeft}${colors.dim}${box.horizontal.repeat(tableWidth)}${colors.purple}${box.bottomRight}${RESET}`);
163
+ writeLine();
164
+ }
165
+ async function contextActivateCommand(squadName, options = {}) {
166
+ await track(Events.CLI_CONTEXT, { squad: squadName, action: "activate" });
167
+ const squadsDir = findSquadsDir();
168
+ if (!squadsDir) {
169
+ writeLine(`${colors.red}No .agents/squads directory found${RESET}`);
170
+ process.exit(1);
171
+ }
172
+ const squad = loadSquad(squadName);
173
+ if (!squad) {
174
+ writeLine(`${colors.red}Squad "${squadName}" not found.${RESET}`);
175
+ process.exit(1);
176
+ }
177
+ const execContext = resolveExecutionContext(squad, options.force);
178
+ if (options.json) {
179
+ console.log(JSON.stringify(execContext, null, 2));
180
+ return;
181
+ }
182
+ if (options.dryRun) {
183
+ writeLine();
184
+ writeLine(` ${gradient("squads")} ${colors.dim}context activate${RESET} ${colors.cyan}${squadName}${RESET} ${colors.yellow}(dry run)${RESET}`);
185
+ writeLine();
186
+ writeLine(` ${colors.dim}Would resolve:${RESET}`);
187
+ writeLine();
188
+ writeLine(` ${bold}MCP Config${RESET}`);
189
+ writeLine(` Path: ${execContext.resolved.mcpConfigPath}`);
190
+ writeLine(` Source: ${execContext.resolved.mcpSource}`);
191
+ if (execContext.resolved.mcpServers.length > 0) {
192
+ writeLine(` Servers: ${execContext.resolved.mcpServers.join(", ")}`);
193
+ }
194
+ if (execContext.resolved.skills && execContext.resolved.skills.length > 0) {
195
+ writeLine();
196
+ writeLine(` ${bold}Skills${RESET}`);
197
+ for (const skill of execContext.resolved.skills) {
198
+ const sourceColor = skill.source === "squad-local" ? colors.green : skill.source === "project" ? colors.cyan : colors.dim;
199
+ writeLine(` ${colors.cyan}${skill.name}${RESET} ${sourceColor}(${skill.source})${RESET}`);
200
+ writeLine(` ${colors.dim}${skill.path}${RESET}`);
201
+ }
202
+ }
203
+ if (execContext.resolved.memoryPaths.length > 0) {
204
+ writeLine();
205
+ writeLine(` ${bold}Memory${RESET}`);
206
+ for (const path of execContext.resolved.memoryPaths) {
207
+ writeLine(` ${colors.dim}${path}${RESET}`);
208
+ }
209
+ }
210
+ writeLine();
211
+ writeLine(` ${colors.dim}Run without --dry-run to generate config${RESET}`);
212
+ writeLine();
213
+ return;
214
+ }
215
+ writeLine();
216
+ writeLine(` ${gradient("squads")} ${colors.dim}context activate${RESET} ${colors.cyan}${squadName}${RESET}`);
217
+ writeLine();
218
+ const mcpSourceLabel = execContext.resolved.mcpSource === "squad-local" ? `${colors.green}squad-local${RESET}` : execContext.resolved.mcpSource === "generated" ? `${colors.cyan}generated${RESET}` : execContext.resolved.mcpSource === "user-override" ? `${colors.yellow}user override${RESET}` : `${colors.dim}fallback${RESET}`;
219
+ const sourceLabel = mcpSourceLabel;
220
+ writeLine(` ${icons.success} MCP config: ${sourceLabel}`);
221
+ writeLine(` ${colors.dim}${execContext.resolved.mcpConfigPath}${RESET}`);
222
+ if (execContext.resolved.mcpServers.length > 0) {
223
+ writeLine(` ${colors.dim}Servers: ${execContext.resolved.mcpServers.join(", ")}${RESET}`);
224
+ }
225
+ if (execContext.resolved.skills && execContext.resolved.skills.length > 0) {
226
+ const bySource = execContext.resolved.skills.reduce((acc, s) => {
227
+ acc[s.source] = (acc[s.source] || 0) + 1;
228
+ return acc;
229
+ }, {});
230
+ const sourceSummary = Object.entries(bySource).map(([source, count]) => `${count} ${source}`).join(", ");
231
+ writeLine(` ${icons.success} Skills: ${execContext.resolved.skills.length} resolved (${sourceSummary})`);
232
+ }
233
+ if (execContext.resolved.memoryPaths.length > 0) {
234
+ writeLine(` ${icons.success} Memory: ${execContext.resolved.memoryPaths.length} files`);
235
+ }
236
+ writeLine();
237
+ writeLine(` ${colors.dim}To use this context manually:${RESET}`);
238
+ writeLine(` ${colors.dim}$${RESET} claude --mcp-config '${execContext.resolved.mcpConfigPath}'`);
239
+ writeLine();
240
+ writeLine(` ${colors.dim}Or run with squads:${RESET}`);
241
+ writeLine(` ${colors.dim}$${RESET} squads run ${colors.cyan}${squadName}${RESET}`);
242
+ writeLine();
243
+ }
244
+ async function contextPromptCommand(squadName, options = {}) {
245
+ await track(Events.CLI_CONTEXT, { squad: squadName, action: "prompt" });
246
+ const squadsDir = findSquadsDir();
247
+ if (!squadsDir) {
248
+ console.error("No .agents/squads directory found");
249
+ process.exit(1);
250
+ }
251
+ const squad = loadSquad(squadName);
252
+ if (!squad) {
253
+ console.error(`Squad "${squadName}" not found.`);
254
+ process.exit(1);
255
+ }
256
+ if (!options.agent) {
257
+ console.error("Agent required. Use -a <agent>");
258
+ process.exit(1);
259
+ }
260
+ const agentPath = `.agents/squads/${squadName}/${options.agent}.md`;
261
+ const prompt = `Execute the ${options.agent} agent from squad ${squadName}.
262
+
263
+ Read the agent definition at ${agentPath} and follow its instructions exactly.
264
+
265
+ CRITICAL INSTRUCTIONS:
266
+ - Work autonomously - do NOT ask clarifying questions
267
+ - Use Task tool to spawn sub-agents when needed
268
+ - Output findings to GitHub issues (gh issue create)
269
+ - Output code changes as PRs (gh pr create)
270
+ - Update memory files in .agents/memory/${squadName}/${options.agent}/
271
+ - Type /exit when done
272
+
273
+ Begin now.`;
274
+ if (options.json) {
275
+ console.log(JSON.stringify({
276
+ squad: squadName,
277
+ agent: options.agent,
278
+ agentPath,
279
+ prompt
280
+ }, null, 2));
281
+ } else {
282
+ console.log(prompt);
283
+ }
284
+ }
285
+ export {
286
+ contextActivateCommand,
287
+ contextListCommand,
288
+ contextPromptCommand,
289
+ contextShowCommand
290
+ };
291
+ //# sourceMappingURL=context-M2A2DOFV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/context.ts"],"sourcesContent":["import {\n findSquadsDir,\n loadSquad,\n listSquads,\n SquadContext,\n resolveExecutionContext,\n} from '../lib/squad-parser.js';\nimport { track, Events } from '../lib/telemetry.js';\nimport {\n colors,\n bold,\n RESET,\n gradient,\n box,\n padEnd,\n writeLine,\n icons,\n} from '../lib/terminal.js';\n\ninterface ContextOptions {\n json?: boolean;\n}\n\nexport async function contextShowCommand(\n squadName: string,\n options: ContextOptions = {}\n): Promise<void> {\n await track(Events.CLI_CONTEXT, { squad: squadName });\n const squadsDir = findSquadsDir();\n\n if (!squadsDir) {\n writeLine(`${colors.red}No .agents/squads directory found${RESET}`);\n writeLine(`${colors.dim}Run \\`squads init\\` to create one.${RESET}`);\n process.exit(1);\n }\n\n const squad = loadSquad(squadName);\n\n if (!squad) {\n writeLine(`${colors.red}Squad \"${squadName}\" not found.${RESET}`);\n process.exit(1);\n }\n\n // Resolve execution context to get full skill and MCP info\n const execContext = resolveExecutionContext(squad);\n\n if (options.json) {\n console.log(JSON.stringify({\n name: squad.name,\n mission: squad.mission,\n repo: squad.repo,\n stack: squad.stack,\n effort: squad.effort,\n context: squad.context,\n resolved: execContext.resolved,\n }, null, 2));\n return;\n }\n\n writeLine();\n writeLine(` ${gradient('squads')} ${colors.dim}context${RESET} ${colors.cyan}${squad.name}${RESET}`);\n\n const ctx = squad.context;\n\n if (!ctx) {\n writeLine();\n writeLine(` ${colors.yellow}No context defined in SQUAD.md frontmatter${RESET}`);\n writeLine();\n writeLine(` ${colors.dim}Add a frontmatter block to ${squad.name}/SQUAD.md:${RESET}`);\n writeLine();\n writeLine(` ${colors.dim}---${RESET}`);\n writeLine(` ${colors.dim}name: ${squad.name}${RESET}`);\n writeLine(` ${colors.dim}context:${RESET}`);\n writeLine(` ${colors.dim} mcp: [chrome-devtools]${RESET}`);\n writeLine(` ${colors.dim} model: { default: sonnet }${RESET}`);\n writeLine(` ${colors.dim} budget: { daily: 10 }${RESET}`);\n writeLine(` ${colors.dim}---${RESET}`);\n writeLine();\n return;\n }\n\n const tableWidth = 54;\n writeLine();\n writeLine(` ${colors.purple}${box.horizontal.repeat(tableWidth)}${RESET}`);\n\n // MCP Config (show resolved source)\n const mcpSource = execContext.resolved.mcpSource;\n const mcpSourceLabel = mcpSource === 'squad-local' ? `${colors.green}squad-local${RESET}` :\n mcpSource === 'generated' ? `${colors.cyan}generated${RESET}` :\n mcpSource === 'user-override' ? `${colors.yellow}user-override${RESET}` :\n `${colors.dim}fallback${RESET}`;\n\n if (execContext.resolved.mcpServers.length > 0) {\n writeLine(` ${bold}MCP${RESET} ${colors.cyan}${execContext.resolved.mcpServers.join(', ')}${RESET} ${colors.dim}(${mcpSourceLabel})${RESET}`);\n } else if (ctx?.mcp && ctx.mcp.length > 0) {\n writeLine(` ${bold}MCP${RESET} ${colors.cyan}${ctx.mcp.join(', ')}${RESET}`);\n } else {\n writeLine(` ${bold}MCP${RESET} ${colors.dim}none${RESET}`);\n }\n\n // Skills (show resolved with sources)\n const resolvedSkills = execContext.resolved.skills || [];\n if (resolvedSkills.length > 0) {\n const skillLabels = resolvedSkills.map(s => {\n const sourceColor = s.source === 'squad-local' ? colors.green :\n s.source === 'project' ? colors.cyan :\n colors.dim;\n return `${colors.cyan}${s.name}${RESET} ${sourceColor}(${s.source})${RESET}`;\n });\n writeLine(` ${bold}Skills${RESET} ${skillLabels.join(', ')}`);\n } else if (ctx?.skills && ctx.skills.length > 0) {\n writeLine(` ${bold}Skills${RESET} ${colors.cyan}${ctx.skills.join(', ')}${RESET}`);\n }\n\n // Memory\n if (ctx.memory?.load && ctx.memory.load.length > 0) {\n writeLine(` ${bold}Memory${RESET} ${colors.cyan}${ctx.memory.load.join(', ')}${RESET}`);\n }\n\n // Model\n if (ctx.model) {\n const modelParts: string[] = [];\n if (ctx.model.default) modelParts.push(`${colors.white}${ctx.model.default}${RESET} ${colors.dim}(default)${RESET}`);\n if (ctx.model.expensive) modelParts.push(`${colors.yellow}${ctx.model.expensive}${RESET} ${colors.dim}(expensive)${RESET}`);\n if (ctx.model.cheap) modelParts.push(`${colors.green}${ctx.model.cheap}${RESET} ${colors.dim}(cheap)${RESET}`);\n writeLine(` ${bold}Model${RESET} ${modelParts.join(', ')}`);\n }\n\n // Budget\n if (ctx.budget) {\n const budgetParts: string[] = [];\n if (ctx.budget.daily) budgetParts.push(`$${ctx.budget.daily}/day`);\n if (ctx.budget.weekly) budgetParts.push(`$${ctx.budget.weekly}/week`);\n if (ctx.budget.perExecution) budgetParts.push(`$${ctx.budget.perExecution}/run`);\n writeLine(` ${bold}Budget${RESET} ${colors.green}${budgetParts.join(', ')}${RESET}`);\n }\n\n // Effort\n if (squad.effort) {\n const effortColor = squad.effort === 'high' ? colors.red :\n squad.effort === 'medium' ? colors.yellow : colors.green;\n writeLine(` ${bold}Effort${RESET} ${effortColor}${squad.effort}${RESET}`);\n }\n\n // Stack/Repo info\n if (squad.repo) {\n writeLine(` ${bold}Repo${RESET} ${colors.dim}${squad.repo}${RESET}`);\n }\n if (squad.stack) {\n writeLine(` ${bold}Stack${RESET} ${colors.dim}${squad.stack}${RESET}`);\n }\n\n writeLine(` ${colors.purple}${box.horizontal.repeat(tableWidth)}${RESET}`);\n writeLine();\n\n // Commands\n writeLine(` ${colors.dim}$${RESET} squads context show ${colors.cyan}${squad.name}${RESET} --json ${colors.dim}JSON output${RESET}`);\n writeLine(` ${colors.dim}$${RESET} squads run ${colors.cyan}${squad.name}${RESET} ${colors.dim}Run with this context${RESET}`);\n writeLine();\n}\n\nexport async function contextListCommand(\n options: ContextOptions = {}\n): Promise<void> {\n await track(Events.CLI_CONTEXT, { action: 'list' });\n const squadsDir = findSquadsDir();\n\n if (!squadsDir) {\n writeLine(`${colors.red}No .agents/squads directory found${RESET}`);\n process.exit(1);\n }\n\n const squads = listSquads(squadsDir);\n\n if (options.json) {\n const contexts: Record<string, SquadContext | undefined> = {};\n for (const name of squads) {\n const squad = loadSquad(name);\n if (squad) {\n contexts[name] = squad.context;\n }\n }\n console.log(JSON.stringify(contexts, null, 2));\n return;\n }\n\n writeLine();\n writeLine(` ${gradient('squads')} ${colors.dim}context list${RESET}`);\n writeLine();\n\n const w = { name: 14, mcp: 24, model: 12, budget: 12 };\n const tableWidth = w.name + w.mcp + w.model + w.budget + 6;\n\n writeLine(` ${colors.purple}${box.topLeft}${colors.dim}${box.horizontal.repeat(tableWidth)}${colors.purple}${box.topRight}${RESET}`);\n\n const header = ` ${colors.purple}${box.vertical}${RESET} ` +\n `${bold}${padEnd('SQUAD', w.name)}${RESET}` +\n `${bold}${padEnd('MCP', w.mcp)}${RESET}` +\n `${bold}${padEnd('MODEL', w.model)}${RESET}` +\n `${bold}BUDGET${RESET}` +\n ` ${colors.purple}${box.vertical}${RESET}`;\n writeLine(header);\n\n writeLine(` ${colors.purple}${box.teeRight}${colors.dim}${box.horizontal.repeat(tableWidth)}${colors.purple}${box.teeLeft}${RESET}`);\n\n for (const name of squads) {\n const squad = loadSquad(name);\n const ctx = squad?.context;\n\n const mcpStr = ctx?.mcp?.slice(0, 2).join(', ') || `${colors.dim}—${RESET}`;\n const modelStr = ctx?.model?.default || `${colors.dim}—${RESET}`;\n const budgetStr = ctx?.budget?.daily ? `$${ctx.budget.daily}/d` : `${colors.dim}—${RESET}`;\n\n const row = ` ${colors.purple}${box.vertical}${RESET} ` +\n `${colors.cyan}${padEnd(name, w.name)}${RESET}` +\n `${padEnd(mcpStr, w.mcp)}` +\n `${padEnd(modelStr, w.model)}` +\n `${padEnd(budgetStr, w.budget)}` +\n `${colors.purple}${box.vertical}${RESET}`;\n\n writeLine(row);\n }\n\n writeLine(` ${colors.purple}${box.bottomLeft}${colors.dim}${box.horizontal.repeat(tableWidth)}${colors.purple}${box.bottomRight}${RESET}`);\n writeLine();\n}\n\ninterface ActivateOptions {\n dryRun?: boolean;\n force?: boolean;\n json?: boolean;\n}\n\n/**\n * Activate execution context for a squad.\n * Resolves MCP config, skills, and memory paths.\n * Generates squad-scoped .mcp.json if needed.\n */\nexport async function contextActivateCommand(\n squadName: string,\n options: ActivateOptions = {}\n): Promise<void> {\n await track(Events.CLI_CONTEXT, { squad: squadName, action: 'activate' });\n\n const squadsDir = findSquadsDir();\n if (!squadsDir) {\n writeLine(`${colors.red}No .agents/squads directory found${RESET}`);\n process.exit(1);\n }\n\n const squad = loadSquad(squadName);\n if (!squad) {\n writeLine(`${colors.red}Squad \"${squadName}\" not found.${RESET}`);\n process.exit(1);\n }\n\n // Resolve execution context\n const execContext = resolveExecutionContext(squad, options.force);\n\n if (options.json) {\n console.log(JSON.stringify(execContext, null, 2));\n return;\n }\n\n if (options.dryRun) {\n writeLine();\n writeLine(` ${gradient('squads')} ${colors.dim}context activate${RESET} ${colors.cyan}${squadName}${RESET} ${colors.yellow}(dry run)${RESET}`);\n writeLine();\n writeLine(` ${colors.dim}Would resolve:${RESET}`);\n writeLine();\n writeLine(` ${bold}MCP Config${RESET}`);\n writeLine(` Path: ${execContext.resolved.mcpConfigPath}`);\n writeLine(` Source: ${execContext.resolved.mcpSource}`);\n if (execContext.resolved.mcpServers.length > 0) {\n writeLine(` Servers: ${execContext.resolved.mcpServers.join(', ')}`);\n }\n\n if (execContext.resolved.skills && execContext.resolved.skills.length > 0) {\n writeLine();\n writeLine(` ${bold}Skills${RESET}`);\n for (const skill of execContext.resolved.skills) {\n const sourceColor = skill.source === 'squad-local' ? colors.green :\n skill.source === 'project' ? colors.cyan :\n colors.dim;\n writeLine(` ${colors.cyan}${skill.name}${RESET} ${sourceColor}(${skill.source})${RESET}`);\n writeLine(` ${colors.dim}${skill.path}${RESET}`);\n }\n }\n\n if (execContext.resolved.memoryPaths.length > 0) {\n writeLine();\n writeLine(` ${bold}Memory${RESET}`);\n for (const path of execContext.resolved.memoryPaths) {\n writeLine(` ${colors.dim}${path}${RESET}`);\n }\n }\n\n writeLine();\n writeLine(` ${colors.dim}Run without --dry-run to generate config${RESET}`);\n writeLine();\n return;\n }\n\n // Actually activate (generate config if needed)\n writeLine();\n writeLine(` ${gradient('squads')} ${colors.dim}context activate${RESET} ${colors.cyan}${squadName}${RESET}`);\n writeLine();\n\n // Show what was resolved/generated\n const mcpSourceLabel = execContext.resolved.mcpSource === 'squad-local'\n ? `${colors.green}squad-local${RESET}`\n : execContext.resolved.mcpSource === 'generated'\n ? `${colors.cyan}generated${RESET}`\n : execContext.resolved.mcpSource === 'user-override'\n ? `${colors.yellow}user override${RESET}`\n : `${colors.dim}fallback${RESET}`;\n\n const sourceLabel = mcpSourceLabel;\n\n writeLine(` ${icons.success} MCP config: ${sourceLabel}`);\n writeLine(` ${colors.dim}${execContext.resolved.mcpConfigPath}${RESET}`);\n\n if (execContext.resolved.mcpServers.length > 0) {\n writeLine(` ${colors.dim}Servers: ${execContext.resolved.mcpServers.join(', ')}${RESET}`);\n }\n\n if (execContext.resolved.skills && execContext.resolved.skills.length > 0) {\n // Group skills by source\n const bySource = execContext.resolved.skills.reduce((acc, s) => {\n acc[s.source] = (acc[s.source] || 0) + 1;\n return acc;\n }, {} as Record<string, number>);\n\n const sourceSummary = Object.entries(bySource)\n .map(([source, count]) => `${count} ${source}`)\n .join(', ');\n\n writeLine(` ${icons.success} Skills: ${execContext.resolved.skills.length} resolved (${sourceSummary})`);\n }\n\n if (execContext.resolved.memoryPaths.length > 0) {\n writeLine(` ${icons.success} Memory: ${execContext.resolved.memoryPaths.length} files`);\n }\n\n writeLine();\n writeLine(` ${colors.dim}To use this context manually:${RESET}`);\n writeLine(` ${colors.dim}$${RESET} claude --mcp-config '${execContext.resolved.mcpConfigPath}'`);\n writeLine();\n writeLine(` ${colors.dim}Or run with squads:${RESET}`);\n writeLine(` ${colors.dim}$${RESET} squads run ${colors.cyan}${squadName}${RESET}`);\n writeLine();\n}\n\n/**\n * Output a ready-to-use prompt for Claude Code execution.\n * Usage: squads context prompt <squad> -a <agent>\n * Pipe to claude: squads context prompt company -a event-dispatcher | claude --print\n */\ninterface PromptOptions {\n agent?: string;\n json?: boolean;\n}\n\nexport async function contextPromptCommand(\n squadName: string,\n options: PromptOptions = {}\n): Promise<void> {\n await track(Events.CLI_CONTEXT, { squad: squadName, action: 'prompt' });\n const squadsDir = findSquadsDir();\n\n if (!squadsDir) {\n console.error('No .agents/squads directory found');\n process.exit(1);\n }\n\n const squad = loadSquad(squadName);\n if (!squad) {\n console.error(`Squad \"${squadName}\" not found.`);\n process.exit(1);\n }\n\n if (!options.agent) {\n console.error('Agent required. Use -a <agent>');\n process.exit(1);\n }\n\n const agentPath = `.agents/squads/${squadName}/${options.agent}.md`;\n\n // Build the prompt for Claude\n const prompt = `Execute the ${options.agent} agent from squad ${squadName}.\n\nRead the agent definition at ${agentPath} and follow its instructions exactly.\n\nCRITICAL INSTRUCTIONS:\n- Work autonomously - do NOT ask clarifying questions\n- Use Task tool to spawn sub-agents when needed\n- Output findings to GitHub issues (gh issue create)\n- Output code changes as PRs (gh pr create)\n- Update memory files in .agents/memory/${squadName}/${options.agent}/\n- Type /exit when done\n\nBegin now.`;\n\n if (options.json) {\n console.log(JSON.stringify({\n squad: squadName,\n agent: options.agent,\n agentPath,\n prompt,\n }, null, 2));\n } else {\n // Output raw prompt for piping to claude\n console.log(prompt);\n }\n}\n"],"mappings":"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","names":[]}