@bradygaster/squad-cli 0.8.25 → 0.9.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 (172) hide show
  1. package/README.md +284 -32
  2. package/dist/cli/commands/aspire.d.ts.map +1 -1
  3. package/dist/cli/commands/aspire.js +3 -0
  4. package/dist/cli/commands/aspire.js.map +1 -1
  5. package/dist/cli/commands/build.js +3 -3
  6. package/dist/cli/commands/build.js.map +1 -1
  7. package/dist/cli/commands/cast.d.ts +13 -0
  8. package/dist/cli/commands/cast.d.ts.map +1 -0
  9. package/dist/cli/commands/cast.js +77 -0
  10. package/dist/cli/commands/cast.js.map +1 -0
  11. package/dist/cli/commands/cost.d.ts +2 -0
  12. package/dist/cli/commands/cost.d.ts.map +1 -0
  13. package/dist/cli/commands/cost.js +170 -0
  14. package/dist/cli/commands/cost.js.map +1 -0
  15. package/dist/cli/commands/cross-squad.d.ts +12 -0
  16. package/dist/cli/commands/cross-squad.d.ts.map +1 -0
  17. package/dist/cli/commands/cross-squad.js +80 -0
  18. package/dist/cli/commands/cross-squad.js.map +1 -0
  19. package/dist/cli/commands/doctor.d.ts +5 -0
  20. package/dist/cli/commands/doctor.d.ts.map +1 -1
  21. package/dist/cli/commands/doctor.js +156 -0
  22. package/dist/cli/commands/doctor.js.map +1 -1
  23. package/dist/cli/commands/economy.d.ts +10 -0
  24. package/dist/cli/commands/economy.d.ts.map +1 -0
  25. package/dist/cli/commands/economy.js +64 -0
  26. package/dist/cli/commands/economy.js.map +1 -0
  27. package/dist/cli/commands/export.d.ts.map +1 -1
  28. package/dist/cli/commands/export.js +11 -4
  29. package/dist/cli/commands/export.js.map +1 -1
  30. package/dist/cli/commands/import.js +2 -2
  31. package/dist/cli/commands/import.js.map +1 -1
  32. package/dist/cli/commands/personal.d.ts +16 -0
  33. package/dist/cli/commands/personal.d.ts.map +1 -0
  34. package/dist/cli/commands/personal.js +213 -0
  35. package/dist/cli/commands/personal.js.map +1 -0
  36. package/dist/cli/commands/roles.d.ts +2 -0
  37. package/dist/cli/commands/roles.d.ts.map +1 -0
  38. package/dist/cli/commands/roles.js +54 -0
  39. package/dist/cli/commands/roles.js.map +1 -0
  40. package/dist/cli/commands/schedule.d.ts +14 -0
  41. package/dist/cli/commands/schedule.d.ts.map +1 -0
  42. package/dist/cli/commands/schedule.js +208 -0
  43. package/dist/cli/commands/schedule.js.map +1 -0
  44. package/dist/cli/commands/watch.d.ts.map +1 -1
  45. package/dist/cli/commands/watch.js +17 -5
  46. package/dist/cli/commands/watch.js.map +1 -1
  47. package/dist/cli/core/cast.d.ts +9 -0
  48. package/dist/cli/core/cast.d.ts.map +1 -1
  49. package/dist/cli/core/cast.js +170 -60
  50. package/dist/cli/core/cast.js.map +1 -1
  51. package/dist/cli/core/detect-squad-dir.d.ts +10 -0
  52. package/dist/cli/core/detect-squad-dir.d.ts.map +1 -1
  53. package/dist/cli/core/detect-squad-dir.js +47 -0
  54. package/dist/cli/core/detect-squad-dir.js.map +1 -1
  55. package/dist/cli/core/init.d.ts +8 -0
  56. package/dist/cli/core/init.d.ts.map +1 -1
  57. package/dist/cli/core/init.js +115 -2
  58. package/dist/cli/core/init.js.map +1 -1
  59. package/dist/cli/core/migrations.d.ts.map +1 -1
  60. package/dist/cli/core/migrations.js +21 -0
  61. package/dist/cli/core/migrations.js.map +1 -1
  62. package/dist/cli/core/templates.d.ts.map +1 -1
  63. package/dist/cli/core/templates.js +8 -1
  64. package/dist/cli/core/templates.js.map +1 -1
  65. package/dist/cli/core/upgrade.d.ts +14 -0
  66. package/dist/cli/core/upgrade.d.ts.map +1 -1
  67. package/dist/cli/core/upgrade.js +182 -48
  68. package/dist/cli/core/upgrade.js.map +1 -1
  69. package/dist/cli/core/version.js +2 -2
  70. package/dist/cli/core/version.js.map +1 -1
  71. package/dist/cli/index.d.ts +2 -0
  72. package/dist/cli/index.d.ts.map +1 -1
  73. package/dist/cli/index.js +2 -0
  74. package/dist/cli/index.js.map +1 -1
  75. package/dist/cli/self-update.d.ts +21 -0
  76. package/dist/cli/self-update.d.ts.map +1 -0
  77. package/dist/cli/self-update.js +113 -0
  78. package/dist/cli/self-update.js.map +1 -0
  79. package/dist/cli/shell/autocomplete.d.ts.map +1 -1
  80. package/dist/cli/shell/autocomplete.js +5 -0
  81. package/dist/cli/shell/autocomplete.js.map +1 -1
  82. package/dist/cli/shell/commands.d.ts.map +1 -1
  83. package/dist/cli/shell/commands.js +55 -24
  84. package/dist/cli/shell/commands.js.map +1 -1
  85. package/dist/cli/shell/components/AgentPanel.d.ts.map +1 -1
  86. package/dist/cli/shell/components/AgentPanel.js +21 -6
  87. package/dist/cli/shell/components/AgentPanel.js.map +1 -1
  88. package/dist/cli/shell/components/App.d.ts.map +1 -1
  89. package/dist/cli/shell/components/App.js +33 -15
  90. package/dist/cli/shell/components/App.js.map +1 -1
  91. package/dist/cli/shell/components/InputPrompt.js +1 -1
  92. package/dist/cli/shell/components/InputPrompt.js.map +1 -1
  93. package/dist/cli/shell/components/MessageStream.d.ts +2 -0
  94. package/dist/cli/shell/components/MessageStream.d.ts.map +1 -1
  95. package/dist/cli/shell/components/MessageStream.js +20 -20
  96. package/dist/cli/shell/components/MessageStream.js.map +1 -1
  97. package/dist/cli/shell/components/ThinkingIndicator.d.ts +4 -0
  98. package/dist/cli/shell/components/ThinkingIndicator.d.ts.map +1 -1
  99. package/dist/cli/shell/components/ThinkingIndicator.js +23 -4
  100. package/dist/cli/shell/components/ThinkingIndicator.js.map +1 -1
  101. package/dist/cli/shell/coordinator.d.ts +7 -0
  102. package/dist/cli/shell/coordinator.d.ts.map +1 -1
  103. package/dist/cli/shell/coordinator.js +206 -88
  104. package/dist/cli/shell/coordinator.js.map +1 -1
  105. package/dist/cli/shell/error-messages.d.ts +14 -0
  106. package/dist/cli/shell/error-messages.d.ts.map +1 -1
  107. package/dist/cli/shell/error-messages.js +65 -1
  108. package/dist/cli/shell/error-messages.js.map +1 -1
  109. package/dist/cli/shell/index.d.ts +1 -1
  110. package/dist/cli/shell/index.d.ts.map +1 -1
  111. package/dist/cli/shell/index.js +83 -12
  112. package/dist/cli/shell/index.js.map +1 -1
  113. package/dist/cli/shell/router.d.ts.map +1 -1
  114. package/dist/cli/shell/router.js +21 -2
  115. package/dist/cli/shell/router.js.map +1 -1
  116. package/dist/cli/shell/stream-bridge.d.ts +2 -0
  117. package/dist/cli/shell/stream-bridge.d.ts.map +1 -1
  118. package/dist/cli/shell/stream-bridge.js +11 -2
  119. package/dist/cli/shell/stream-bridge.js.map +1 -1
  120. package/dist/cli/shell/terminal.d.ts +5 -5
  121. package/dist/cli/shell/terminal.d.ts.map +1 -1
  122. package/dist/cli/shell/terminal.js +35 -26
  123. package/dist/cli/shell/terminal.js.map +1 -1
  124. package/dist/cli-entry.js +124 -42
  125. package/dist/cli-entry.js.map +1 -1
  126. package/package.json +20 -4
  127. package/scripts/patch-esm-imports.mjs +84 -55
  128. package/scripts/patch-ink-rendering.mjs +115 -0
  129. package/templates/casting/Futurama.json +10 -0
  130. package/templates/casting-policy.json +4 -2
  131. package/templates/casting-reference.md +104 -0
  132. package/templates/cooperative-rate-limiting.md +229 -0
  133. package/templates/issue-lifecycle.md +412 -0
  134. package/templates/keda-scaler.md +164 -0
  135. package/templates/machine-capabilities.md +75 -0
  136. package/templates/orchestration-log.md +1 -1
  137. package/templates/ralph-circuit-breaker.md +313 -0
  138. package/templates/routing.md +5 -20
  139. package/templates/scribe-charter.md +1 -1
  140. package/templates/skills/agent-collaboration/SKILL.md +42 -0
  141. package/templates/skills/agent-conduct/SKILL.md +24 -0
  142. package/templates/skills/architectural-proposals/SKILL.md +151 -0
  143. package/templates/skills/ci-validation-gates/SKILL.md +84 -0
  144. package/templates/skills/cli-wiring/SKILL.md +47 -0
  145. package/templates/skills/client-compatibility/SKILL.md +89 -0
  146. package/templates/skills/cross-squad/SKILL.md +114 -0
  147. package/templates/skills/distributed-mesh/SKILL.md +287 -0
  148. package/templates/skills/distributed-mesh/mesh.json.example +30 -0
  149. package/templates/skills/distributed-mesh/sync-mesh.ps1 +111 -0
  150. package/templates/skills/distributed-mesh/sync-mesh.sh +104 -0
  151. package/templates/skills/docs-standards/SKILL.md +71 -0
  152. package/templates/skills/economy-mode/SKILL.md +114 -0
  153. package/templates/skills/external-comms/SKILL.md +329 -0
  154. package/templates/skills/gh-auth-isolation/SKILL.md +183 -0
  155. package/templates/skills/git-workflow/SKILL.md +204 -0
  156. package/templates/skills/github-multi-account/SKILL.md +95 -0
  157. package/templates/skills/history-hygiene/SKILL.md +36 -0
  158. package/templates/skills/humanizer/SKILL.md +105 -0
  159. package/templates/skills/init-mode/SKILL.md +102 -0
  160. package/templates/skills/model-selection/SKILL.md +117 -0
  161. package/templates/skills/nap/SKILL.md +24 -0
  162. package/templates/skills/personal-squad/SKILL.md +57 -0
  163. package/templates/skills/release-process/SKILL.md +423 -0
  164. package/templates/skills/reskill/SKILL.md +92 -0
  165. package/templates/skills/reviewer-protocol/SKILL.md +79 -0
  166. package/templates/skills/secret-handling/SKILL.md +200 -0
  167. package/templates/skills/session-recovery/SKILL.md +155 -0
  168. package/templates/skills/test-discipline/SKILL.md +37 -0
  169. package/templates/skills/windows-compatibility/SKILL.md +74 -0
  170. package/templates/squad.agent.md +1287 -1146
  171. package/templates/workflows/squad-docs.yml +8 -4
  172. package/templates/workflows/squad-heartbeat.yml +3 -4
@@ -1,5 +1,6 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
+ import { listRoles, searchRoles } from '@bradygaster/squad-sdk';
3
4
  /** Debug logger — writes to stderr only when SQUAD_DEBUG=1. */
4
5
  function debugLog(...args) {
5
6
  if (process.env['SQUAD_DEBUG'] === '1') {
@@ -26,50 +27,167 @@ export function hasRosterEntries(teamContent) {
26
27
  /**
27
28
  * Build an Init Mode system prompt for team casting.
28
29
  * Used when team.md exists but has no roster entries.
30
+ *
31
+ * When `config.useBaseRoles` is true (opt-in via `--roles`), the prompt
32
+ * includes the built-in base roles catalog so the LLM maps agents to
33
+ * curated role IDs. Otherwise (default), the LLM casts from a fictional
34
+ * universe with free-form role names — the beloved casting experience.
29
35
  */
30
36
  export function buildInitModePrompt(config) {
31
- return `You are the Squad Coordinator in Init Mode.
32
-
33
- This project has a Squad scaffold (.squad/ directory) but no team has been cast yet.
34
- The user's message describes what they want to build or work on.
35
-
36
- Your job: Propose a team of 4-5 AI agents based on what the user wants to do.
37
-
38
- ## Rules
39
- 1. Analyze the user's message to understand the project (language, stack, scope)
40
- 2. Pick a fictional universe for character names (e.g., Alien, The Usual Suspects, Blade Runner, The Matrix, Heat, Star Wars). Pick ONE universe and use it consistently.
41
- 3. Propose 4-5 agents with roles that match the project needs
42
- 4. Scribe and Ralph are always included automatically do NOT include them in your proposal
43
-
44
- ## Response Format — you MUST use this EXACT format:
45
-
46
- INIT_TEAM:
47
- - {Name} | {Role} | {scope: 2-4 words describing expertise}
48
- - {Name} | {Role} | {scope}
49
- - {Name} | {Role} | {scope}
50
- - {Name} | {Role} | {scope}
51
- UNIVERSE: {universe name}
52
- PROJECT: {1-sentence project description}
53
-
54
- ## Example
55
-
56
- If user says "Build a React app with a Node backend":
57
-
58
- INIT_TEAM:
59
- - Ripley | Lead | Architecture, code review, decisions
60
- - Dallas | Frontend Dev | React, components, styling
61
- - Kane | Backend Dev | Node.js, APIs, database
62
- - Lambert | Tester | Tests, quality, edge cases
63
- UNIVERSE: Alien
64
- PROJECT: A React and Node.js web application
65
-
66
- ## Important
67
- - Use character names that feel natural, not forced
68
- - Roles should match project needs (don't always use the same 4 roles)
69
- - For CLI projects: maybe skip Frontend, add DevOps or SDK Expert
70
- - For data projects: add Data Engineer, skip Frontend
71
- - Keep scope descriptions short (2-4 words each)
72
- - Respond ONLY with the INIT_TEAM block no other text
37
+ if (config.useBaseRoles) {
38
+ return buildBaseRolesInitPrompt();
39
+ }
40
+ return buildUniverseCastingInitPrompt();
41
+ }
42
+ /**
43
+ * Default init prompt — fictional universe casting (no base roles catalog).
44
+ */
45
+ function buildUniverseCastingInitPrompt() {
46
+ return `You are the Squad Coordinator in Init Mode.
47
+
48
+ This project has a Squad scaffold (.squad/ directory) but no team has been cast yet.
49
+ The user's message describes what they want to build or work on.
50
+
51
+ Your job: Propose a team of 4-5 AI agents based on what the user wants to do.
52
+
53
+ ## Rules
54
+ 1. Analyze the user's message to understand the project (language, stack, scope)
55
+ 2. Pick a fictional universe for character names. **Strongly prefer:**
56
+ - **The Usual Suspects** (8 characters: Keyser, McManus, Fenster, Verbal, Hockney, Redfoot, Edie, Kobayashi)
57
+ - **Ocean's Eleven** (10 characters: Danny, Rusty, Linus, Basher, Livingston, Saul, Yen, Virgil, Turk, Reuben)
58
+
59
+ You may also choose other film universes (Alien, The Matrix, Heat, Star Wars, Blade Runner, etc.) but the two above are preferred.
60
+ 3. Propose 4-5 agents with roles that match the project needs
61
+ 4. Scribe and Ralph are always included automatically — do NOT include them in your proposal
62
+
63
+ ## Response Format — you MUST use this EXACT format:
64
+
65
+ INIT_TEAM:
66
+ - {Name} | {Role} | {scope: 2-4 words describing expertise}
67
+ - {Name} | {Role} | {scope}
68
+ - {Name} | {Role} | {scope}
69
+ - {Name} | {Role} | {scope}
70
+ UNIVERSE: {universe name}
71
+ PROJECT: {1-sentence project description}
72
+
73
+ ## Example
74
+
75
+ If user says "Build a React app with a Node backend":
76
+
77
+ INIT_TEAM:
78
+ - Ripley | Lead | Architecture, code review, decisions
79
+ - Dallas | Frontend Dev | React, components, styling
80
+ - Kane | Backend Dev | Node.js, APIs, database
81
+ - Lambert | Tester | Tests, quality, edge cases
82
+ UNIVERSE: Alien
83
+ PROJECT: A React and Node.js web application
84
+
85
+ ## Important
86
+ - Use character names that feel natural, not forced
87
+ - Roles should match project needs (don't always use the same 4 roles)
88
+ - For CLI projects: maybe skip Frontend, add DevOps or SDK Expert
89
+ - For data projects: add Data Engineer, skip Frontend
90
+ - Keep scope descriptions short (2-4 words each)
91
+ - Respond ONLY with the INIT_TEAM block — no other text
92
+ `;
93
+ }
94
+ /**
95
+ * Opt-in base roles init prompt — includes the curated role catalog.
96
+ * Activated by `squad init --roles` or `/init --roles`.
97
+ */
98
+ function buildBaseRolesInitPrompt() {
99
+ const catalog = new Map(listRoles().map((role) => [role.id, role]));
100
+ const resolveRole = (id) => catalog.get(id) ?? searchRoles(id)[0];
101
+ const formatRole = (id, label) => {
102
+ const role = resolveRole(id);
103
+ const title = role?.title ?? label;
104
+ return ` ${id.padEnd(22, ' ')} — ${title}`;
105
+ };
106
+ const softwareRoles = [
107
+ ['lead', 'Lead / Architect'],
108
+ ['frontend', 'Frontend Developer'],
109
+ ['backend', 'Backend Developer'],
110
+ ['fullstack', 'Full-Stack Developer'],
111
+ ['reviewer', 'Code Reviewer'],
112
+ ['tester', 'Test Engineer'],
113
+ ['devops', 'DevOps Engineer'],
114
+ ['security', 'Security Engineer'],
115
+ ['data', 'Data Engineer'],
116
+ ['docs', 'Technical Writer'],
117
+ ['ai', 'AI / ML Engineer'],
118
+ ['designer', 'UI/UX Designer'],
119
+ ];
120
+ const businessRoles = [
121
+ ['marketing-strategist', 'Marketing Strategist'],
122
+ ['sales-strategist', 'Sales Strategist'],
123
+ ['product-manager', 'Product Manager'],
124
+ ['project-manager', 'Project Manager'],
125
+ ['support-specialist', 'Support Specialist'],
126
+ ['game-developer', 'Game Developer'],
127
+ ['media-buyer', 'Media Buyer'],
128
+ ['compliance-legal', 'Compliance & Legal'],
129
+ ];
130
+ const softwareRoleLines = softwareRoles.map(([id, label]) => formatRole(id, label)).join('\n');
131
+ const businessRoleLines = businessRoles.map(([id, label]) => formatRole(id, label)).join('\n');
132
+ return `You are the Squad Coordinator in Init Mode.
133
+
134
+ This project has a Squad scaffold (.squad/ directory) but no team has been cast yet.
135
+ The user's message describes what they want to build or work on.
136
+
137
+ Your job: Propose a team of 4-5 AI agents based on what the user wants to do.
138
+
139
+ ## Rules
140
+ 1. Analyze the user's message to understand the project (language, stack, scope)
141
+ 2. Pick a fictional universe for character names (e.g., Alien, The Usual Suspects, Blade Runner, The Matrix, Heat, Star Wars). Pick ONE universe and use it consistently.
142
+ 3. Propose 4-5 agents with roles that match the project needs
143
+ 4. Scribe and Ralph are always included automatically — do NOT include them in your proposal
144
+
145
+ ## Built-in Base Roles (use these as starting points)
146
+
147
+ The following base roles are available. Prefer these over inventing new roles — they have deep, curated charter content.
148
+ When proposing a team, match the user's project needs to these roles first.
149
+ Only propose a custom role if none of the base roles fit.
150
+
151
+ Software Development:
152
+ ${softwareRoleLines}
153
+
154
+ Business & Operations:
155
+ ${businessRoleLines}
156
+
157
+ When proposing a team member, use the role ID from above in the Role field.
158
+ Example: "- Ripley | lead | Architecture, code review, decisions"
159
+ This tells the system to use the pre-built Lead/Architect charter content.
160
+ If you use a role not in this list, the system will generate a generic charter instead.
161
+
162
+ ## Response Format — you MUST use this EXACT format:
163
+
164
+ INIT_TEAM:
165
+ - {Name} | {Role} | {scope: 2-4 words describing expertise}
166
+ - {Name} | {Role} | {scope}
167
+ - {Name} | {Role} | {scope}
168
+ - {Name} | {Role} | {scope}
169
+ UNIVERSE: {universe name}
170
+ PROJECT: {1-sentence project description}
171
+
172
+ ## Example
173
+
174
+ If user says "Build a React app with a Node backend":
175
+
176
+ INIT_TEAM:
177
+ - Ripley | lead | Architecture, code review, decisions
178
+ - Dallas | frontend | React, components, styling
179
+ - Kane | backend | Node.js, APIs, database
180
+ - Lambert | tester | Tests, quality, edge cases
181
+ UNIVERSE: Alien
182
+ PROJECT: A React and Node.js web application
183
+
184
+ ## Important
185
+ - Use character names that feel natural, not forced
186
+ - Roles should match project needs (don't always use the same 4 roles)
187
+ - For CLI projects: maybe skip Frontend, add DevOps or SDK Expert
188
+ - For data projects: add Data Engineer, skip Frontend
189
+ - Keep scope descriptions short (2-4 words each)
190
+ - Respond ONLY with the INIT_TEAM block — no other text
73
191
  `;
74
192
  }
75
193
  /**
@@ -84,29 +202,29 @@ export function buildCoordinatorPrompt(config) {
84
202
  try {
85
203
  teamContent = readFileSync(teamPath, 'utf-8');
86
204
  if (!hasRosterEntries(teamContent)) {
87
- teamContent = `⚠️ NO TEAM CONFIGURED
88
-
89
- This project doesn't have a Squad team yet.
90
-
91
- **You MUST NOT do any project work.** Instead, tell the user:
92
- 1. "This project doesn't have a Squad team yet."
93
- 2. Suggest running \`squad init\` or the \`/init\` command to set one up.
94
- 3. Politely refuse any work requests until init is done.
95
-
205
+ teamContent = `⚠️ NO TEAM CONFIGURED
206
+
207
+ This project doesn't have a Squad team yet.
208
+
209
+ **You MUST NOT do any project work.** Instead, tell the user:
210
+ 1. "This project doesn't have a Squad team yet."
211
+ 2. Suggest running \`squad init\` or the \`/init\` command to set one up.
212
+ 3. Politely refuse any work requests until init is done.
213
+
96
214
  Do not answer coding questions, route to agents, or perform any project tasks.`;
97
215
  }
98
216
  }
99
217
  catch (err) {
100
218
  debugLog('buildCoordinatorPrompt: failed to read team.md at', teamPath, err);
101
- teamContent = `⚠️ NO TEAM CONFIGURED
102
-
103
- This project doesn't have a Squad team yet.
104
-
105
- **You MUST NOT do any project work.** Instead, tell the user:
106
- 1. "This project doesn't have a Squad team yet."
107
- 2. Suggest running \`squad init\` or the \`/init\` command to set one up.
108
- 3. Politely refuse any work requests until init is done.
109
-
219
+ teamContent = `⚠️ NO TEAM CONFIGURED
220
+
221
+ This project doesn't have a Squad team yet.
222
+
223
+ **You MUST NOT do any project work.** Instead, tell the user:
224
+ 1. "This project doesn't have a Squad team yet."
225
+ 2. Suggest running \`squad init\` or the \`/init\` command to set one up.
226
+ 3. Politely refuse any work requests until init is done.
227
+
110
228
  Do not answer coding questions, route to agents, or perform any project tasks.`;
111
229
  }
112
230
  // Load routing.md for routing rules
@@ -119,34 +237,34 @@ Do not answer coding questions, route to agents, or perform any project tasks.`;
119
237
  debugLog('buildCoordinatorPrompt: failed to read routing.md at', routingPath, err);
120
238
  routingContent = '(No routing.md found — run `squad init` to create one)';
121
239
  }
122
- return `You are the Squad Coordinator — you route work to the right agent.
123
-
124
- ## Team Roster
125
- ${teamContent}
126
-
127
- ## Routing Rules
128
- ${routingContent}
129
-
130
- ## Your Job
131
- 1. Read the user's message
132
- 2. Decide which agent(s) should handle it based on routing rules
133
- 3. If naming a specific agent ("Fenster, fix the bug"), route directly
134
- 4. If ambiguous, pick the best match and explain your choice
135
- 5. For status/factual questions, answer directly without spawning
136
-
137
- ## Response Format
138
- When routing to an agent, respond with:
139
- ROUTE: {agent_name}
140
- TASK: {what the agent should do}
141
- CONTEXT: {any relevant context}
142
-
143
- When answering directly:
144
- DIRECT: {your answer}
145
-
146
- When routing to multiple agents:
147
- MULTI:
148
- - {agent1}: {task1}
149
- - {agent2}: {task2}
240
+ return `You are the Squad Coordinator — you route work to the right agent.
241
+
242
+ ## Team Roster
243
+ ${teamContent}
244
+
245
+ ## Routing Rules
246
+ ${routingContent}
247
+
248
+ ## Your Job
249
+ 1. Read the user's message
250
+ 2. Decide which agent(s) should handle it based on routing rules
251
+ 3. If naming a specific agent ("Fenster, fix the bug"), route directly
252
+ 4. If ambiguous, pick the best match and explain your choice
253
+ 5. For status/factual questions, answer directly without spawning
254
+
255
+ ## Response Format
256
+ When routing to an agent, respond with:
257
+ ROUTE: {agent_name}
258
+ TASK: {what the agent should do}
259
+ CONTEXT: {any relevant context}
260
+
261
+ When answering directly:
262
+ DIRECT: {your answer}
263
+
264
+ When routing to multiple agents:
265
+ MULTI:
266
+ - {agent1}: {task1}
267
+ - {agent2}: {task2}
150
268
  `;
151
269
  }
152
270
  export function parseCoordinatorResponse(response) {
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/cli/shell/coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/cli/shell/coordinator.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,22 @@ export declare function sdkDisconnectGuidance(detail?: string): ErrorGuidance;
14
14
  export declare function teamConfigGuidance(issue: string): ErrorGuidance;
15
15
  /** Agent session failure */
16
16
  export declare function agentSessionGuidance(agentName: string, detail?: string): ErrorGuidance;
17
+ /**
18
+ * Extract retry-after duration (in seconds) from an error message string.
19
+ * Handles patterns like "retry after 120 seconds", "try again in 2 hours", etc.
20
+ */
21
+ export declare function extractRetryAfter(message: string): number | undefined;
22
+ /** Rate limit hit — model or endpoint temporarily throttled */
23
+ export declare function rateLimitGuidance(opts?: {
24
+ retryAfter?: number;
25
+ model?: string;
26
+ }): ErrorGuidance;
17
27
  /** Generic error with context */
18
28
  export declare function genericGuidance(detail: string): ErrorGuidance;
29
+ /** Request timeout */
30
+ export declare function timeoutGuidance(agentName?: string): ErrorGuidance;
31
+ /** Unknown slash command */
32
+ export declare function unknownCommandGuidance(command: string): ErrorGuidance;
19
33
  /** Format an ErrorGuidance into a user-facing string */
20
34
  export declare function formatGuidance(g: ErrorGuidance): string;
21
35
  //# sourceMappingURL=error-messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-messages.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/error-messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,yCAAyC;AACzC,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CASpE;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAS/D;AAED,4BAA4B;AAC5B,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAStF;AAED,iCAAiC;AACjC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAQ7D;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CASvD"}
1
+ {"version":3,"file":"error-messages.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/error-messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,yCAAyC;AACzC,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CASpE;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAS/D;AAED,4BAA4B;AAC5B,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAStF;AAWD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQrE;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAa/F;AAED,iCAAiC;AACjC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAS7D;AAED,sBAAsB;AACtB,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAUjE;AAED,4BAA4B;AAC5B,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAQrE;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CASvD"}
@@ -37,13 +37,77 @@ export function agentSessionGuidance(agentName, detail) {
37
37
  ],
38
38
  };
39
39
  }
40
+ /** Format seconds into a human-readable duration string */
41
+ function formatDuration(seconds) {
42
+ const hours = Math.ceil(seconds / 3600);
43
+ const minutes = Math.ceil(seconds / 60);
44
+ if (seconds >= 3600)
45
+ return `${hours} hour${hours === 1 ? '' : 's'}`;
46
+ if (seconds >= 60)
47
+ return `${minutes} minute${minutes === 1 ? '' : 's'}`;
48
+ return `${seconds} second${seconds === 1 ? '' : 's'}`;
49
+ }
50
+ /**
51
+ * Extract retry-after duration (in seconds) from an error message string.
52
+ * Handles patterns like "retry after 120 seconds", "try again in 2 hours", etc.
53
+ */
54
+ export function extractRetryAfter(message) {
55
+ const secMatch = message.match(/retry.{0,15}after\s+(\d+)\s*second/i);
56
+ if (secMatch)
57
+ return parseInt(secMatch[1], 10);
58
+ const hrMatch = message.match(/(?:try again|retry).{0,20}in\s+(\d+)\s*hour/i);
59
+ if (hrMatch)
60
+ return parseInt(hrMatch[1], 10) * 3600;
61
+ const minMatch = message.match(/(?:try again|retry).{0,20}in\s+(\d+)\s*minute/i);
62
+ if (minMatch)
63
+ return parseInt(minMatch[1], 10) * 60;
64
+ return undefined;
65
+ }
66
+ /** Rate limit hit — model or endpoint temporarily throttled */
67
+ export function rateLimitGuidance(opts) {
68
+ const modelStr = opts?.model ? ` for ${opts.model}` : '';
69
+ const retryStr = opts?.retryAfter
70
+ ? `Try again in ${formatDuration(opts.retryAfter)}`
71
+ : 'Try again later when the limit resets';
72
+ return {
73
+ message: `Rate limit reached${modelStr}. Copilot has temporarily throttled your requests.`,
74
+ recovery: [
75
+ retryStr,
76
+ 'Enable economy mode to switch to cheaper models: `squad economy on`',
77
+ 'Or set a different model: add `"defaultModel": "gpt-4.1"` to .squad/config.json',
78
+ ],
79
+ };
80
+ }
40
81
  /** Generic error with context */
41
82
  export function genericGuidance(detail) {
42
83
  return {
43
84
  message: detail,
44
85
  recovery: [
45
- 'Try again',
86
+ 'Try your message again',
46
87
  "Run 'squad doctor' for diagnostics",
88
+ 'Check your internet connection',
89
+ ],
90
+ };
91
+ }
92
+ /** Request timeout */
93
+ export function timeoutGuidance(agentName) {
94
+ const who = agentName ? `${agentName} timed out` : 'Request timed out';
95
+ return {
96
+ message: `${who}. The model may be under load.`,
97
+ recovery: [
98
+ 'Try again — the issue is often transient',
99
+ 'Set SQUAD_REPL_TIMEOUT=120 for a longer timeout (seconds)',
100
+ "Run 'squad doctor' to verify connectivity",
101
+ ],
102
+ };
103
+ }
104
+ /** Unknown slash command */
105
+ export function unknownCommandGuidance(command) {
106
+ return {
107
+ message: `Unknown command: /${command}`,
108
+ recovery: [
109
+ 'Type /help to see available commands',
110
+ 'Check for typos in the command name',
47
111
  ],
48
112
  };
49
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"error-messages.js","sourceRoot":"","sources":["../../../src/cli/shell/error-messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,yCAAyC;AACzC,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC,CAAC,mBAAmB;QACrE,QAAQ,EAAE;YACR,wCAAwC;YACxC,gCAAgC;YAChC,gCAAgC;SACjC;KACF,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO;QACL,OAAO,EAAE,6BAA6B,KAAK,EAAE;QAC7C,QAAQ,EAAE;YACR,gCAAgC;YAChC,wCAAwC;YACxC,gDAAgD;SACjD;KACF,CAAC;AACJ,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,MAAe;IACrE,OAAO;QACL,OAAO,EAAE,GAAG,SAAS,kBAAkB,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;QACrE,QAAQ,EAAE;YACR,sDAAsD;YACtD,mCAAmC;YACnC,QAAQ,SAAS,oBAAoB;SACtC;KACF,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO;QACL,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACR,WAAW;YACX,oCAAoC;SACrC;KACF,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,cAAc,CAAC,CAAgB;IAC7C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"error-messages.js","sourceRoot":"","sources":["../../../src/cli/shell/error-messages.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export type { SessionData, SessionSummary } from './session-store.js';
29
29
  export { App } from './components/App.js';
30
30
  export type { ShellApi, AppProps } from './components/App.js';
31
31
  export { ErrorBoundary } from './components/ErrorBoundary.js';
32
- export { sdkDisconnectGuidance, teamConfigGuidance, agentSessionGuidance, genericGuidance, formatGuidance, } from './error-messages.js';
32
+ export { sdkDisconnectGuidance, teamConfigGuidance, agentSessionGuidance, genericGuidance, rateLimitGuidance, extractRetryAfter, timeoutGuidance, unknownCommandGuidance, formatGuidance, } from './error-messages.js';
33
33
  export type { ErrorGuidance } from './error-messages.js';
34
34
  export { enableShellMetrics, recordShellSessionDuration, recordAgentResponseLatency, recordShellError, isShellTelemetryEnabled, _resetShellMetrics, } from './shell-metrics.js';
35
35
  /** Options for ghost response retry. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/index.ts"],"names":[],"mappings":"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"}