@bradygaster/squad-cli 0.9.1 → 0.9.2-insider.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +329 -329
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +10 -10
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/config.d.ts +12 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +157 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/consult.d.ts.map +1 -1
- package/dist/cli/commands/consult.js +9 -4
- package/dist/cli/commands/consult.js.map +1 -1
- package/dist/cli/commands/copilot.d.ts.map +1 -1
- package/dist/cli/commands/copilot.js +8 -7
- package/dist/cli/commands/copilot.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +50 -17
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/economy.d.ts.map +1 -1
- package/dist/cli/commands/economy.js +3 -2
- package/dist/cli/commands/economy.js.map +1 -1
- package/dist/cli/commands/export.d.ts.map +1 -1
- package/dist/cli/commands/export.js +22 -16
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/extract.d.ts.map +1 -1
- package/dist/cli/commands/extract.js +14 -10
- package/dist/cli/commands/extract.js.map +1 -1
- package/dist/cli/commands/import.d.ts.map +1 -1
- package/dist/cli/commands/import.js +21 -18
- package/dist/cli/commands/import.js.map +1 -1
- package/dist/cli/commands/init-remote.d.ts.map +1 -1
- package/dist/cli/commands/init-remote.js +7 -6
- package/dist/cli/commands/init-remote.js.map +1 -1
- package/dist/cli/commands/link.d.ts.map +1 -1
- package/dist/cli/commands/link.js +11 -10
- package/dist/cli/commands/link.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +19 -18
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/personal.d.ts.map +1 -1
- package/dist/cli/commands/personal.js +57 -65
- package/dist/cli/commands/personal.js.map +1 -1
- package/dist/cli/commands/plugin.d.ts.map +1 -1
- package/dist/cli/commands/plugin.js +8 -7
- package/dist/cli/commands/plugin.js.map +1 -1
- package/dist/cli/commands/rc.d.ts.map +1 -1
- package/dist/cli/commands/rc.js +19 -12
- package/dist/cli/commands/rc.js.map +1 -1
- package/dist/cli/commands/schedule.d.ts.map +1 -1
- package/dist/cli/commands/schedule.js +6 -5
- package/dist/cli/commands/schedule.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +18 -11
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/streams.d.ts.map +1 -1
- package/dist/cli/commands/streams.js +3 -2
- package/dist/cli/commands/streams.js.map +1 -1
- package/dist/cli/commands/upstream.d.ts.map +1 -1
- package/dist/cli/commands/upstream.js +23 -19
- package/dist/cli/commands/upstream.js.map +1 -1
- package/dist/cli/commands/watch/capabilities/board.d.ts +22 -0
- package/dist/cli/commands/watch/capabilities/board.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/board.js +121 -0
- package/dist/cli/commands/watch/capabilities/board.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/budget-check.d.ts +29 -0
- package/dist/cli/commands/watch/capabilities/budget-check.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/budget-check.js +38 -0
- package/dist/cli/commands/watch/capabilities/budget-check.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/circuit-breaker.d.ts +52 -0
- package/dist/cli/commands/watch/capabilities/circuit-breaker.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/circuit-breaker.js +152 -0
- package/dist/cli/commands/watch/capabilities/circuit-breaker.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/decision-hygiene.d.ts +14 -0
- package/dist/cli/commands/watch/capabilities/decision-hygiene.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/decision-hygiene.js +72 -0
- package/dist/cli/commands/watch/capabilities/decision-hygiene.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/execute.d.ts +33 -0
- package/dist/cli/commands/watch/capabilities/execute.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/execute.js +156 -0
- package/dist/cli/commands/watch/capabilities/execute.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/health-check.d.ts +29 -0
- package/dist/cli/commands/watch/capabilities/health-check.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/health-check.js +139 -0
- package/dist/cli/commands/watch/capabilities/health-check.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/heartbeat.d.ts +48 -0
- package/dist/cli/commands/watch/capabilities/heartbeat.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/heartbeat.js +115 -0
- package/dist/cli/commands/watch/capabilities/heartbeat.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/index.d.ts +9 -0
- package/dist/cli/commands/watch/capabilities/index.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/index.js +40 -0
- package/dist/cli/commands/watch/capabilities/index.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/lockfile.d.ts +30 -0
- package/dist/cli/commands/watch/capabilities/lockfile.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/lockfile.js +100 -0
- package/dist/cli/commands/watch/capabilities/lockfile.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/machine-capabilities.d.ts +30 -0
- package/dist/cli/commands/watch/capabilities/machine-capabilities.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/machine-capabilities.js +103 -0
- package/dist/cli/commands/watch/capabilities/machine-capabilities.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/monitor-email.d.ts +14 -0
- package/dist/cli/commands/watch/capabilities/monitor-email.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/monitor-email.js +54 -0
- package/dist/cli/commands/watch/capabilities/monitor-email.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/monitor-teams.d.ts +14 -0
- package/dist/cli/commands/watch/capabilities/monitor-teams.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/monitor-teams.js +55 -0
- package/dist/cli/commands/watch/capabilities/monitor-teams.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/post-failure.d.ts +19 -0
- package/dist/cli/commands/watch/capabilities/post-failure.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/post-failure.js +58 -0
- package/dist/cli/commands/watch/capabilities/post-failure.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/priority.d.ts +59 -0
- package/dist/cli/commands/watch/capabilities/priority.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/priority.js +101 -0
- package/dist/cli/commands/watch/capabilities/priority.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/rate-pool.d.ts +67 -0
- package/dist/cli/commands/watch/capabilities/rate-pool.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/rate-pool.js +187 -0
- package/dist/cli/commands/watch/capabilities/rate-pool.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/retro.d.ts +14 -0
- package/dist/cli/commands/watch/capabilities/retro.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/retro.js +81 -0
- package/dist/cli/commands/watch/capabilities/retro.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/self-pull.d.ts +14 -0
- package/dist/cli/commands/watch/capabilities/self-pull.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/self-pull.js +33 -0
- package/dist/cli/commands/watch/capabilities/self-pull.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/stale-reclaim.d.ts +23 -0
- package/dist/cli/commands/watch/capabilities/stale-reclaim.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/stale-reclaim.js +87 -0
- package/dist/cli/commands/watch/capabilities/stale-reclaim.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/two-pass.d.ts +14 -0
- package/dist/cli/commands/watch/capabilities/two-pass.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/two-pass.js +66 -0
- package/dist/cli/commands/watch/capabilities/two-pass.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/wave-dispatch.d.ts +14 -0
- package/dist/cli/commands/watch/capabilities/wave-dispatch.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/wave-dispatch.js +117 -0
- package/dist/cli/commands/watch/capabilities/wave-dispatch.js.map +1 -0
- package/dist/cli/commands/watch/capabilities/webhook-alerts.d.ts +29 -0
- package/dist/cli/commands/watch/capabilities/webhook-alerts.d.ts.map +1 -0
- package/dist/cli/commands/watch/capabilities/webhook-alerts.js +114 -0
- package/dist/cli/commands/watch/capabilities/webhook-alerts.js.map +1 -0
- package/dist/cli/commands/watch/config.d.ts +40 -0
- package/dist/cli/commands/watch/config.d.ts.map +1 -0
- package/dist/cli/commands/watch/config.js +129 -0
- package/dist/cli/commands/watch/config.js.map +1 -0
- package/dist/cli/commands/watch/index.d.ts +109 -0
- package/dist/cli/commands/watch/index.d.ts.map +1 -0
- package/dist/cli/commands/watch/index.js +757 -0
- package/dist/cli/commands/watch/index.js.map +1 -0
- package/dist/cli/commands/watch/registry.d.ts +19 -0
- package/dist/cli/commands/watch/registry.d.ts.map +1 -0
- package/dist/cli/commands/watch/registry.js +28 -0
- package/dist/cli/commands/watch/registry.js.map +1 -0
- package/dist/cli/commands/watch/types.d.ts +57 -0
- package/dist/cli/commands/watch/types.d.ts.map +1 -0
- package/dist/cli/commands/watch/types.js +8 -0
- package/dist/cli/commands/watch/types.js.map +1 -0
- package/dist/cli/core/cast.d.ts.map +1 -1
- package/dist/cli/core/cast.js +15 -19
- package/dist/cli/core/cast.js.map +1 -1
- package/dist/cli/core/detect-squad-dir.d.ts.map +1 -1
- package/dist/cli/core/detect-squad-dir.js +12 -10
- package/dist/cli/core/detect-squad-dir.js.map +1 -1
- package/dist/cli/core/email-scrub.d.ts.map +1 -1
- package/dist/cli/core/email-scrub.js +12 -11
- package/dist/cli/core/email-scrub.js.map +1 -1
- package/dist/cli/core/gh-cli.d.ts +13 -0
- package/dist/cli/core/gh-cli.d.ts.map +1 -1
- package/dist/cli/core/gh-cli.js +24 -0
- package/dist/cli/core/gh-cli.js.map +1 -1
- package/dist/cli/core/init.d.ts +2 -0
- package/dist/cli/core/init.d.ts.map +1 -1
- package/dist/cli/core/init.js +22 -5
- package/dist/cli/core/init.js.map +1 -1
- package/dist/cli/core/migrate-directory.d.ts.map +1 -1
- package/dist/cli/core/migrate-directory.js +14 -13
- package/dist/cli/core/migrate-directory.js.map +1 -1
- package/dist/cli/core/migrations.d.ts.map +1 -1
- package/dist/cli/core/migrations.js +22 -8
- package/dist/cli/core/migrations.js.map +1 -1
- package/dist/cli/core/nap.d.ts.map +1 -1
- package/dist/cli/core/nap.js +116 -49
- package/dist/cli/core/nap.js.map +1 -1
- package/dist/cli/core/project-type.d.ts.map +1 -1
- package/dist/cli/core/project-type.js +11 -10
- package/dist/cli/core/project-type.js.map +1 -1
- package/dist/cli/core/team-md.d.ts.map +1 -1
- package/dist/cli/core/team-md.js +43 -38
- package/dist/cli/core/team-md.js.map +1 -1
- package/dist/cli/core/templates.d.ts.map +1 -1
- package/dist/cli/core/templates.js +4 -3
- package/dist/cli/core/templates.js.map +1 -1
- package/dist/cli/core/upgrade.d.ts.map +1 -1
- package/dist/cli/core/upgrade.js +68 -55
- package/dist/cli/core/upgrade.js.map +1 -1
- package/dist/cli/core/version.d.ts.map +1 -1
- package/dist/cli/core/version.js +8 -7
- package/dist/cli/core/version.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/self-update.d.ts.map +1 -1
- package/dist/cli/self-update.js +7 -4
- package/dist/cli/self-update.js.map +1 -1
- package/dist/cli/shell/agent-name-parser.d.ts +16 -0
- package/dist/cli/shell/agent-name-parser.d.ts.map +1 -0
- package/dist/cli/shell/agent-name-parser.js +54 -0
- package/dist/cli/shell/agent-name-parser.js.map +1 -0
- package/dist/cli/shell/commands.d.ts.map +1 -1
- package/dist/cli/shell/commands.js +4 -3
- package/dist/cli/shell/commands.js.map +1 -1
- package/dist/cli/shell/coordinator.d.ts +4 -1
- package/dist/cli/shell/coordinator.d.ts.map +1 -1
- package/dist/cli/shell/coordinator.js +29 -26
- package/dist/cli/shell/coordinator.js.map +1 -1
- package/dist/cli/shell/index.d.ts.map +1 -1
- package/dist/cli/shell/index.js +33 -35
- package/dist/cli/shell/index.js.map +1 -1
- package/dist/cli/shell/lifecycle.d.ts +13 -2
- package/dist/cli/shell/lifecycle.d.ts.map +1 -1
- package/dist/cli/shell/lifecycle.js +26 -13
- package/dist/cli/shell/lifecycle.js.map +1 -1
- package/dist/cli/shell/session-store.d.ts.map +1 -1
- package/dist/cli/shell/session-store.js +16 -12
- package/dist/cli/shell/session-store.js.map +1 -1
- package/dist/cli/shell/spawn.d.ts +4 -1
- package/dist/cli/shell/spawn.d.ts.map +1 -1
- package/dist/cli/shell/spawn.js +28 -10
- package/dist/cli/shell/spawn.js.map +1 -1
- package/dist/cli-entry.js +136 -12
- package/dist/cli-entry.js.map +1 -1
- package/package.json +8 -4
- package/scripts/patch-esm-imports.mjs +105 -105
- package/scripts/patch-ink-rendering.mjs +115 -115
- package/templates/casting/Futurama.json +9 -9
- package/templates/casting-history.json +4 -4
- package/templates/casting-policy.json +37 -37
- package/templates/casting-reference.md +104 -104
- package/templates/casting-registry.json +3 -3
- package/templates/ceremonies.md +41 -41
- package/templates/charter.md +53 -53
- package/templates/constraint-tracking.md +38 -38
- package/templates/cooperative-rate-limiting.md +229 -229
- package/templates/copilot-instructions.md +46 -46
- package/templates/history.md +10 -10
- package/templates/identity/now.md +9 -9
- package/templates/identity/wisdom.md +15 -15
- package/templates/issue-lifecycle.md +412 -412
- package/templates/keda-scaler.md +164 -164
- package/templates/machine-capabilities.md +74 -74
- package/templates/mcp-config.md +90 -90
- package/templates/multi-agent-format.md +28 -28
- package/templates/orchestration-log.md +27 -27
- package/templates/plugin-marketplace.md +49 -49
- package/templates/ralph-circuit-breaker.md +313 -313
- package/templates/raw-agent-output.md +37 -37
- package/templates/roster.md +60 -60
- package/templates/routing.md +39 -39
- package/templates/run-output.md +50 -50
- package/templates/scribe-charter.md +123 -119
- package/templates/skill.md +24 -24
- package/templates/skills/agent-collaboration/SKILL.md +42 -42
- package/templates/skills/agent-conduct/SKILL.md +24 -24
- package/templates/skills/architectural-proposals/SKILL.md +151 -151
- package/templates/skills/ci-validation-gates/SKILL.md +84 -84
- package/templates/skills/cli-wiring/SKILL.md +47 -47
- package/templates/skills/client-compatibility/SKILL.md +89 -89
- package/templates/skills/cross-machine-coordination/SKILL.md +434 -0
- package/templates/skills/cross-squad/SKILL.md +114 -114
- package/templates/skills/distributed-mesh/SKILL.md +287 -287
- package/templates/skills/distributed-mesh/mesh.json.example +30 -30
- package/templates/skills/distributed-mesh/sync-mesh.ps1 +111 -111
- package/templates/skills/distributed-mesh/sync-mesh.sh +104 -104
- package/templates/skills/docs-standards/SKILL.md +71 -71
- package/templates/skills/economy-mode/SKILL.md +114 -114
- package/templates/skills/error-recovery/SKILL.md +99 -0
- package/templates/skills/external-comms/SKILL.md +329 -329
- package/templates/skills/gh-auth-isolation/SKILL.md +183 -183
- package/templates/skills/git-workflow/SKILL.md +204 -204
- package/templates/skills/github-multi-account/SKILL.md +95 -95
- package/templates/skills/history-hygiene/SKILL.md +36 -36
- package/templates/skills/humanizer/SKILL.md +105 -105
- package/templates/skills/init-mode/SKILL.md +102 -102
- package/templates/skills/iterative-retrieval/SKILL.md +165 -0
- package/templates/skills/model-selection/SKILL.md +117 -117
- package/templates/skills/nap/SKILL.md +24 -24
- package/templates/skills/notification-routing/SKILL.md +105 -0
- package/templates/skills/personal-squad/SKILL.md +57 -57
- package/templates/skills/pr-screenshots/SKILL.md +149 -0
- package/templates/skills/ralph-two-pass-scan/SKILL.md +35 -0
- package/templates/skills/reflect/SKILL.md +229 -0
- package/templates/skills/release-process/SKILL.md +131 -423
- package/templates/skills/reskill/SKILL.md +92 -92
- package/templates/skills/retro-enforcement/SKILL.md +148 -0
- package/templates/skills/reviewer-protocol/SKILL.md +79 -79
- package/templates/skills/secret-handling/SKILL.md +200 -200
- package/templates/skills/session-recovery/SKILL.md +155 -155
- package/templates/skills/squad-conventions/SKILL.md +69 -69
- package/templates/skills/test-discipline/SKILL.md +37 -37
- package/templates/skills/tiered-memory/SKILL.md +234 -0
- package/templates/skills/windows-compatibility/SKILL.md +98 -74
- package/templates/{squad.agent.md → squad.agent.md.template} +1316 -1287
- package/templates/workflows/squad-ci.yml +24 -24
- package/templates/workflows/squad-docs.yml +54 -54
- package/templates/workflows/squad-heartbeat.yml +0 -4
- package/templates/workflows/squad-insider-release.yml +61 -61
- package/templates/workflows/squad-issue-assign.yml +161 -161
- package/templates/workflows/squad-label-enforce.yml +181 -181
- package/templates/workflows/squad-preview.yml +55 -55
- package/templates/workflows/squad-promote.yml +120 -120
- package/templates/workflows/squad-release.yml +77 -77
- package/templates/workflows/squad-triage.yml +260 -260
- package/templates/workflows/sync-squad-labels.yml +169 -169
- package/dist/cli/commands/watch.d.ts +0 -18
- package/dist/cli/commands/watch.d.ts.map +0 -1
- package/dist/cli/commands/watch.js +0 -306
- package/dist/cli/commands/watch.js.map +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract an agent name from a task description string.
|
|
3
|
+
* Tries multiple patterns in order of specificity:
|
|
4
|
+
* 1. Emoji + name + colon at start (e.g. "🔧 EECOM: Fix auth module")
|
|
5
|
+
* 2. Name + colon anywhere (e.g. "EECOM: Fix auth module")
|
|
6
|
+
* 3. Fuzzy: any knownAgentName appears as a whole word (case-insensitive)
|
|
7
|
+
*
|
|
8
|
+
* @param description - The task description string
|
|
9
|
+
* @param knownAgentNames - Lowercase agent names to match against
|
|
10
|
+
* @returns Parsed agent name and task summary, or null if no match
|
|
11
|
+
*/
|
|
12
|
+
export function parseAgentFromDescription(description, knownAgentNames) {
|
|
13
|
+
if (!description || typeof description !== 'string')
|
|
14
|
+
return null;
|
|
15
|
+
if (!knownAgentNames || knownAgentNames.length === 0)
|
|
16
|
+
return null;
|
|
17
|
+
// Pattern 1: optional leading non-whitespace (emoji) then whitespace then word + colon at start
|
|
18
|
+
const leadingMatch = description.match(/^\S*\s*(\w+):/);
|
|
19
|
+
const leadingName = leadingMatch?.[1];
|
|
20
|
+
if (leadingName) {
|
|
21
|
+
const candidate = leadingName.toLowerCase();
|
|
22
|
+
if (knownAgentNames.includes(candidate)) {
|
|
23
|
+
const taskSummary = description.replace(/^\S*\s*\w+:\s*/, '').slice(0, 60);
|
|
24
|
+
return { agentName: candidate, taskSummary };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Pattern 2: word + colon anywhere in the string
|
|
28
|
+
const anyColonMatch = description.match(/(\w+):/);
|
|
29
|
+
const colonName = anyColonMatch?.[1];
|
|
30
|
+
if (colonName) {
|
|
31
|
+
const candidate = colonName.toLowerCase();
|
|
32
|
+
if (knownAgentNames.includes(candidate)) {
|
|
33
|
+
const afterColon = description.slice((anyColonMatch.index ?? 0) + anyColonMatch[0].length).replace(/^\s*/, '').slice(0, 60);
|
|
34
|
+
return { agentName: candidate, taskSummary: afterColon || description.slice(0, 60) };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Pattern 3: fuzzy — check if any known agent name appears as a word boundary match
|
|
38
|
+
const descLower = description.toLowerCase();
|
|
39
|
+
for (const name of knownAgentNames) {
|
|
40
|
+
const idx = descLower.indexOf(name);
|
|
41
|
+
if (idx !== -1) {
|
|
42
|
+
// Verify word boundary: char before and after must be non-word or start/end
|
|
43
|
+
const charBefore = idx > 0 ? description.charAt(idx - 1) : '';
|
|
44
|
+
const charAfter = idx + name.length < description.length ? description.charAt(idx + name.length) : '';
|
|
45
|
+
const before = idx === 0 || !/\w/.test(charBefore);
|
|
46
|
+
const after = charAfter === '' || !/\w/.test(charAfter);
|
|
47
|
+
if (before && after) {
|
|
48
|
+
return { agentName: name, taskSummary: description.slice(0, 60) };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=agent-name-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-name-parser.js","sourceRoot":"","sources":["../../../src/cli/shell/agent-name-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iFAAiF;IACjF,eAAe,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,cAAc,GACtB,aAAa,CAgCf"}
|
|
@@ -3,8 +3,9 @@ import { BOLD, DIM, RESET } from '../core/output.js';
|
|
|
3
3
|
import { listSessions, loadSessionById } from './session-store.js';
|
|
4
4
|
import { formatAgentLine } from './agent-status.js';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
-
import {
|
|
6
|
+
import { FSStorageProvider } from '@bradygaster/squad-sdk';
|
|
7
7
|
import { runNapSync, formatNapReport } from '../core/nap.js';
|
|
8
|
+
const storage = new FSStorageProvider();
|
|
8
9
|
/**
|
|
9
10
|
* Execute a slash command.
|
|
10
11
|
*/
|
|
@@ -199,11 +200,11 @@ function handleInit(args, context) {
|
|
|
199
200
|
// Write .init-roles marker for the casting flow to pick up
|
|
200
201
|
const rolesMarker = path.join(context.teamRoot, '.squad', '.init-roles');
|
|
201
202
|
try {
|
|
202
|
-
mkdirSync(path.dirname(rolesMarker), { recursive: true });
|
|
203
|
+
storage.mkdirSync(path.dirname(rolesMarker), { recursive: true });
|
|
203
204
|
}
|
|
204
205
|
catch { /* ignore */ }
|
|
205
206
|
try {
|
|
206
|
-
|
|
207
|
+
storage.writeSync(rolesMarker, '1');
|
|
207
208
|
}
|
|
208
209
|
catch { /* ignore */ }
|
|
209
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/cli/shell/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAElE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/cli/shell/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,8 +26,11 @@ export declare function buildInitModePrompt(config: CoordinatorConfig): string;
|
|
|
26
26
|
/**
|
|
27
27
|
* Build the coordinator system prompt from team.md + routing.md.
|
|
28
28
|
* This prompt tells the LLM how to route user requests to agents.
|
|
29
|
+
*
|
|
30
|
+
* Reads via FSStorageProvider so all file access is routed through the
|
|
31
|
+
* StorageProvider abstraction (Phase 3 migration).
|
|
29
32
|
*/
|
|
30
|
-
export declare function buildCoordinatorPrompt(config: CoordinatorConfig): string
|
|
33
|
+
export declare function buildCoordinatorPrompt(config: CoordinatorConfig): Promise<string>;
|
|
31
34
|
/**
|
|
32
35
|
* Parse coordinator response to extract routing decisions.
|
|
33
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/coordinator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/coordinator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAW7D;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iHAAiH;IACjH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAcD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAKrE;AA+JD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8DvF;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CA8C1E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,YAAY,EAAE,EACxB,WAAW,GAAE,MAAW,GACvB,MAAM,CAQR"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
2
1
|
import { join } from 'node:path';
|
|
3
|
-
import { listRoles, searchRoles } from '@bradygaster/squad-sdk';
|
|
2
|
+
import { listRoles, searchRoles, FSStorageProvider } from '@bradygaster/squad-sdk';
|
|
4
3
|
/** Debug logger — writes to stderr only when SQUAD_DEBUG=1. */
|
|
5
4
|
function debugLog(...args) {
|
|
6
5
|
if (process.env['SQUAD_DEBUG'] === '1') {
|
|
@@ -24,6 +23,17 @@ export function hasRosterEntries(teamContent) {
|
|
|
24
23
|
});
|
|
25
24
|
return rows.length > 0;
|
|
26
25
|
}
|
|
26
|
+
/** Fallback text when team.md is missing or has no roster entries. */
|
|
27
|
+
const noTeamFallback = `⚠️ NO TEAM CONFIGURED
|
|
28
|
+
|
|
29
|
+
This project doesn't have a Squad team yet.
|
|
30
|
+
|
|
31
|
+
**You MUST NOT do any project work.** Instead, tell the user:
|
|
32
|
+
1. "This project doesn't have a Squad team yet."
|
|
33
|
+
2. Suggest running \`squad init\` or the \`/init\` command to set one up.
|
|
34
|
+
3. Politely refuse any work requests until init is done.
|
|
35
|
+
|
|
36
|
+
Do not answer coding questions, route to agents, or perform any project tasks.`;
|
|
27
37
|
/**
|
|
28
38
|
* Build an Init Mode system prompt for team casting.
|
|
29
39
|
* Used when team.md exists but has no roster entries.
|
|
@@ -193,45 +203,38 @@ PROJECT: A React and Node.js web application
|
|
|
193
203
|
/**
|
|
194
204
|
* Build the coordinator system prompt from team.md + routing.md.
|
|
195
205
|
* This prompt tells the LLM how to route user requests to agents.
|
|
206
|
+
*
|
|
207
|
+
* Reads via FSStorageProvider so all file access is routed through the
|
|
208
|
+
* StorageProvider abstraction (Phase 3 migration).
|
|
196
209
|
*/
|
|
197
|
-
export function buildCoordinatorPrompt(config) {
|
|
210
|
+
export async function buildCoordinatorPrompt(config) {
|
|
198
211
|
const squadRoot = config.teamRoot;
|
|
212
|
+
const storage = new FSStorageProvider();
|
|
199
213
|
// Load team.md for roster
|
|
200
214
|
const teamPath = config.teamPath ?? join(squadRoot, '.squad', 'team.md');
|
|
201
215
|
let teamContent = '';
|
|
202
216
|
try {
|
|
203
|
-
|
|
204
|
-
if (
|
|
205
|
-
teamContent =
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
3. Politely refuse any work requests until init is done.
|
|
213
|
-
|
|
214
|
-
Do not answer coding questions, route to agents, or perform any project tasks.`;
|
|
217
|
+
const raw = await storage.read(teamPath);
|
|
218
|
+
if (raw === undefined) {
|
|
219
|
+
teamContent = noTeamFallback;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
teamContent = raw;
|
|
223
|
+
if (!hasRosterEntries(teamContent)) {
|
|
224
|
+
teamContent = noTeamFallback;
|
|
225
|
+
}
|
|
215
226
|
}
|
|
216
227
|
}
|
|
217
228
|
catch (err) {
|
|
218
229
|
debugLog('buildCoordinatorPrompt: failed to read team.md at', teamPath, err);
|
|
219
|
-
teamContent =
|
|
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
|
-
|
|
228
|
-
Do not answer coding questions, route to agents, or perform any project tasks.`;
|
|
230
|
+
teamContent = noTeamFallback;
|
|
229
231
|
}
|
|
230
232
|
// Load routing.md for routing rules
|
|
231
233
|
const routingPath = config.routingPath ?? join(squadRoot, '.squad', 'routing.md');
|
|
232
234
|
let routingContent = '';
|
|
233
235
|
try {
|
|
234
|
-
|
|
236
|
+
const raw = await storage.read(routingPath);
|
|
237
|
+
routingContent = raw ?? '(No routing.md found — run `squad init` to create one)';
|
|
235
238
|
}
|
|
236
239
|
catch (err) {
|
|
237
240
|
debugLog('buildCoordinatorPrompt: failed to read routing.md at', routingPath, err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/cli/shell/coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/cli/shell/coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtJ,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClH,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/shell/index.js
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* Manages CopilotSDK sessions and routes messages to agents/coordinator.
|
|
6
6
|
*/
|
|
7
7
|
import { createRequire } from 'node:module';
|
|
8
|
-
import { existsSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
9
8
|
import { join, resolve as pathResolve } from 'node:path';
|
|
10
9
|
import React from 'react';
|
|
11
10
|
import { render } from 'ink';
|
|
@@ -17,8 +16,9 @@ import { StreamBridge } from './stream-bridge.js';
|
|
|
17
16
|
import { ShellLifecycle, loadWelcomeData } from './lifecycle.js';
|
|
18
17
|
import { SquadClient } from '@bradygaster/squad-sdk/client';
|
|
19
18
|
import { RateLimitError } from '@bradygaster/squad-sdk/adapter/errors';
|
|
20
|
-
import { initSquadTelemetry, TIMEOUTS, StreamingPipeline, recordAgentSpawn, recordAgentDuration, recordAgentError, recordAgentDestroy, RuntimeEventBus, resolveSquad, resolveGlobalSquadPath } from '@bradygaster/squad-sdk';
|
|
19
|
+
import { FSStorageProvider, initSquadTelemetry, TIMEOUTS, StreamingPipeline, recordAgentSpawn, recordAgentDuration, recordAgentError, recordAgentDestroy, RuntimeEventBus, resolveSquad, resolveGlobalSquadPath } from '@bradygaster/squad-sdk';
|
|
21
20
|
import { enableShellMetrics, recordShellSessionDuration, recordAgentResponseLatency, recordShellError } from './shell-metrics.js';
|
|
21
|
+
import { parseAgentFromDescription } from './agent-name-parser.js';
|
|
22
22
|
import { buildCoordinatorPrompt, buildInitModePrompt, parseCoordinatorResponse, hasRosterEntries } from './coordinator.js';
|
|
23
23
|
import { loadAgentCharter, buildAgentPrompt } from './spawn.js';
|
|
24
24
|
import { createSession, saveSession, loadLatestSession } from './session-store.js';
|
|
@@ -43,6 +43,7 @@ export { sdkDisconnectGuidance, teamConfigGuidance, agentSessionGuidance, generi
|
|
|
43
43
|
export { enableShellMetrics, recordShellSessionDuration, recordAgentResponseLatency, recordShellError, isShellTelemetryEnabled, _resetShellMetrics, } from './shell-metrics.js';
|
|
44
44
|
const require = createRequire(import.meta.url);
|
|
45
45
|
const pkg = require('../../../package.json');
|
|
46
|
+
const storage = new FSStorageProvider();
|
|
46
47
|
/**
|
|
47
48
|
* Approve all permission requests. CLI runs locally with user trust,
|
|
48
49
|
* so no interactive confirmation is needed.
|
|
@@ -93,7 +94,7 @@ export async function runShell() {
|
|
|
93
94
|
const cwd = process.cwd();
|
|
94
95
|
const localSquad = resolveSquad(cwd);
|
|
95
96
|
const globalSquadDir = join(resolveGlobalSquadPath(), '.squad');
|
|
96
|
-
const hasAnySquad = !!localSquad || existsSync(globalSquadDir);
|
|
97
|
+
const hasAnySquad = !!localSquad || storage.existsSync(globalSquadDir);
|
|
97
98
|
if (!hasAnySquad && !process.stdin.isTTY) {
|
|
98
99
|
console.log('Welcome to Squad\n');
|
|
99
100
|
console.log('Get started by initializing your squad:');
|
|
@@ -136,7 +137,7 @@ export async function runShell() {
|
|
|
136
137
|
// 2. Fall back to global (personal) squad path
|
|
137
138
|
const globalPath = resolveGlobalSquadPath();
|
|
138
139
|
const globalSquadDir = join(globalPath, '.squad');
|
|
139
|
-
if (existsSync(globalSquadDir)) {
|
|
140
|
+
if (storage.existsSync(globalSquadDir)) {
|
|
140
141
|
return globalPath;
|
|
141
142
|
}
|
|
142
143
|
// 3. No squad found — use cwd (triggers init mode)
|
|
@@ -144,8 +145,8 @@ export async function runShell() {
|
|
|
144
145
|
})();
|
|
145
146
|
// Session persistence — create or resume a previous session
|
|
146
147
|
// Skip resume on first run (no team.md or .first-run marker present)
|
|
147
|
-
const hasTeam = existsSync(join(teamRoot, '.squad', 'team.md'));
|
|
148
|
-
const isFirstRun = existsSync(join(teamRoot, '.squad', '.first-run'));
|
|
148
|
+
const hasTeam = storage.existsSync(join(teamRoot, '.squad', 'team.md'));
|
|
149
|
+
const isFirstRun = storage.existsSync(join(teamRoot, '.squad', '.first-run'));
|
|
149
150
|
let persistedSession = createSession();
|
|
150
151
|
const recentSession = (hasTeam && !isFirstRun) ? loadLatestSession(teamRoot) : null;
|
|
151
152
|
if (recentSession) {
|
|
@@ -187,7 +188,7 @@ export async function runShell() {
|
|
|
187
188
|
(async () => {
|
|
188
189
|
try {
|
|
189
190
|
debugLog('eager warm-up: creating coordinator session');
|
|
190
|
-
const systemPrompt = buildCoordinatorPrompt({ teamRoot });
|
|
191
|
+
const systemPrompt = await buildCoordinatorPrompt({ teamRoot });
|
|
191
192
|
coordinatorSession = await client.createSession({
|
|
192
193
|
streaming: true,
|
|
193
194
|
systemMessage: { mode: 'append', content: systemPrompt },
|
|
@@ -326,7 +327,7 @@ export async function runShell() {
|
|
|
326
327
|
shellApi?.setAgentActivity(agentName, 'connecting...');
|
|
327
328
|
// Give React a tick to render the connection hint before blocking on SDK
|
|
328
329
|
await new Promise(resolve => setImmediate(resolve));
|
|
329
|
-
const charter = loadAgentCharter(agentName, teamRoot);
|
|
330
|
+
const charter = await loadAgentCharter(agentName, teamRoot);
|
|
330
331
|
const systemPrompt = buildAgentPrompt(charter);
|
|
331
332
|
if (!registry.get(agentName)) {
|
|
332
333
|
const roleMatch = charter.match(/^#\s+\w+\s+—\s+(.+)$/m);
|
|
@@ -525,7 +526,7 @@ export async function runShell() {
|
|
|
525
526
|
shellApi?.setActivityHint('Connecting to SDK...');
|
|
526
527
|
// Give React a tick to render the connection hint before blocking on SDK
|
|
527
528
|
await new Promise(resolve => setImmediate(resolve));
|
|
528
|
-
const systemPrompt = buildCoordinatorPrompt({ teamRoot });
|
|
529
|
+
const systemPrompt = await buildCoordinatorPrompt({ teamRoot });
|
|
529
530
|
coordinatorSession = await client.createSession({
|
|
530
531
|
streaming: true,
|
|
531
532
|
systemMessage: { mode: 'append', content: systemPrompt },
|
|
@@ -618,18 +619,18 @@ export async function runShell() {
|
|
|
618
619
|
};
|
|
619
620
|
// Try to extract agent name from task description (e.g., "🔧 Morpheus: Building effects")
|
|
620
621
|
const desc = typeof event['description'] === 'string' ? event['description'] : '';
|
|
621
|
-
const
|
|
622
|
-
|
|
623
|
-
|
|
622
|
+
const parsed = parseAgentFromDescription(desc, knownAgentNames);
|
|
623
|
+
if (parsed) {
|
|
624
|
+
const { agentName: matchedAgent, taskSummary } = parsed;
|
|
624
625
|
registry.updateStatus(matchedAgent, 'working');
|
|
625
|
-
const taskSummary = desc.replace(/^\S*\s*\w+:\s*/, '').slice(0, 60);
|
|
626
626
|
registry.updateActivityHint(matchedAgent, taskSummary || 'working...');
|
|
627
627
|
shellApi?.setActivityHint(`${registry.get(matchedAgent)?.name ?? matchedAgent} — ${taskSummary || 'working'}...`);
|
|
628
628
|
shellApi?.setAgentActivity(matchedAgent, taskSummary || 'working...');
|
|
629
629
|
shellApi?.refreshAgents();
|
|
630
630
|
}
|
|
631
631
|
else {
|
|
632
|
-
const
|
|
632
|
+
const trimmedDesc = desc.trim().slice(0, 80);
|
|
633
|
+
const hint = trimmedDesc || (hintMap[toolName] ?? `Using ${toolName}...`);
|
|
633
634
|
shellApi?.setActivityHint(hint);
|
|
634
635
|
}
|
|
635
636
|
}
|
|
@@ -804,8 +805,8 @@ export async function runShell() {
|
|
|
804
805
|
// Check for a stored init prompt (from `squad init "prompt"`)
|
|
805
806
|
const initPromptFile = join(teamRoot, '.squad', '.init-prompt');
|
|
806
807
|
let castPrompt = parsed.raw;
|
|
807
|
-
if (existsSync(initPromptFile)) {
|
|
808
|
-
const storedPrompt =
|
|
808
|
+
if (storage.existsSync(initPromptFile)) {
|
|
809
|
+
const storedPrompt = (storage.readSync(initPromptFile) ?? '').trim();
|
|
809
810
|
if (storedPrompt) {
|
|
810
811
|
debugLog('handleInitCast: using stored init prompt', storedPrompt.slice(0, 100));
|
|
811
812
|
castPrompt = storedPrompt;
|
|
@@ -822,11 +823,11 @@ export async function runShell() {
|
|
|
822
823
|
try {
|
|
823
824
|
// Check for .init-roles marker (set by `squad init --roles` or `/init --roles`)
|
|
824
825
|
const initRolesMarker = join(teamRoot, '.squad', '.init-roles');
|
|
825
|
-
const useBaseRoles = existsSync(initRolesMarker);
|
|
826
|
+
const useBaseRoles = storage.existsSync(initRolesMarker);
|
|
826
827
|
// Consume the marker immediately — it's been read, no need to persist
|
|
827
828
|
if (useBaseRoles) {
|
|
828
829
|
try {
|
|
829
|
-
|
|
830
|
+
await storage.delete(initRolesMarker);
|
|
830
831
|
}
|
|
831
832
|
catch { /* ignore */ }
|
|
832
833
|
}
|
|
@@ -954,9 +955,9 @@ export async function runShell() {
|
|
|
954
955
|
});
|
|
955
956
|
// Clean up stored init prompt (it's been consumed)
|
|
956
957
|
const initPromptFile = join(teamRoot, '.squad', '.init-prompt');
|
|
957
|
-
if (existsSync(initPromptFile)) {
|
|
958
|
+
if (storage.existsSync(initPromptFile)) {
|
|
958
959
|
try {
|
|
959
|
-
|
|
960
|
+
await storage.delete(initPromptFile);
|
|
960
961
|
}
|
|
961
962
|
catch { /* ignore */ }
|
|
962
963
|
}
|
|
@@ -1020,7 +1021,7 @@ export async function runShell() {
|
|
|
1020
1021
|
}
|
|
1021
1022
|
// Guard: require a Squad team before processing work requests
|
|
1022
1023
|
const teamFile = join(teamRoot, '.squad', 'team.md');
|
|
1023
|
-
if (!existsSync(teamFile)) {
|
|
1024
|
+
if (!storage.existsSync(teamFile)) {
|
|
1024
1025
|
// When skipCastConfirmation is explicitly set (true or false), the message
|
|
1025
1026
|
// was routed from an /init flow (inline or follow-up), so bypass the guard
|
|
1026
1027
|
// and go straight to Init Mode casting even without a team.md.
|
|
@@ -1036,7 +1037,7 @@ export async function runShell() {
|
|
|
1036
1037
|
return;
|
|
1037
1038
|
}
|
|
1038
1039
|
// Check if roster is actually populated — if not, enter Init Mode (cast a team)
|
|
1039
|
-
const teamContent =
|
|
1040
|
+
const teamContent = storage.readSync(teamFile) ?? '';
|
|
1040
1041
|
if (!hasRosterEntries(teamContent)) {
|
|
1041
1042
|
await handleInitCast(parsed, parsed.skipCastConfirmation);
|
|
1042
1043
|
return;
|
|
@@ -1097,7 +1098,7 @@ export async function runShell() {
|
|
|
1097
1098
|
// Persist rate limit status so `squad doctor` can surface it.
|
|
1098
1099
|
try {
|
|
1099
1100
|
const squadDir = join(teamRoot, '.squad');
|
|
1100
|
-
|
|
1101
|
+
storage.writeSync(join(squadDir, 'rate-limit-status.json'), JSON.stringify({
|
|
1101
1102
|
timestamp: new Date().toISOString(),
|
|
1102
1103
|
retryAfter,
|
|
1103
1104
|
model,
|
|
@@ -1179,21 +1180,18 @@ export async function runShell() {
|
|
|
1179
1180
|
// Bug fix #3: Clean up orphan .init-prompt if team already exists
|
|
1180
1181
|
const initPromptPath = join(teamRoot, '.squad', '.init-prompt');
|
|
1181
1182
|
const teamFilePath = join(teamRoot, '.squad', 'team.md');
|
|
1182
|
-
if (existsSync(teamFilePath)) {
|
|
1183
|
-
const tc =
|
|
1184
|
-
if (hasRosterEntries(tc) && existsSync(initPromptPath)) {
|
|
1183
|
+
if (storage.existsSync(teamFilePath)) {
|
|
1184
|
+
const tc = storage.readSync(teamFilePath) ?? '';
|
|
1185
|
+
if (hasRosterEntries(tc) && storage.existsSync(initPromptPath)) {
|
|
1185
1186
|
debugLog('Cleaning up orphan .init-prompt (team already exists)');
|
|
1186
|
-
|
|
1187
|
-
unlinkSync(initPromptPath);
|
|
1188
|
-
}
|
|
1189
|
-
catch { /* ignore */ }
|
|
1187
|
+
void storage.delete(initPromptPath).catch(() => { });
|
|
1190
1188
|
}
|
|
1191
1189
|
}
|
|
1192
1190
|
// Bug fix #1: Auto-cast after shellApi is guaranteed to be set (no race condition)
|
|
1193
|
-
if (existsSync(initPromptPath) && existsSync(teamFilePath)) {
|
|
1194
|
-
const tc =
|
|
1191
|
+
if (storage.existsSync(initPromptPath) && storage.existsSync(teamFilePath)) {
|
|
1192
|
+
const tc = storage.readSync(teamFilePath) ?? '';
|
|
1195
1193
|
if (!hasRosterEntries(tc)) {
|
|
1196
|
-
const storedPrompt =
|
|
1194
|
+
const storedPrompt = (storage.readSync(initPromptPath) ?? '').trim();
|
|
1197
1195
|
if (storedPrompt) {
|
|
1198
1196
|
debugLog('Auto-cast: .init-prompt found with empty roster, triggering cast');
|
|
1199
1197
|
// Trigger cast after Ink settles, but now shellApi is guaranteed to be set
|
|
@@ -1246,8 +1244,8 @@ export async function runShell() {
|
|
|
1246
1244
|
// Use the resolved teamRoot instead of cwd so this works from subdirectories (#207)
|
|
1247
1245
|
const squadDir = join(teamRoot, '.squad');
|
|
1248
1246
|
const configPath = join(squadDir, 'config.json');
|
|
1249
|
-
if (existsSync(configPath)) {
|
|
1250
|
-
const raw =
|
|
1247
|
+
if (storage.existsSync(configPath)) {
|
|
1248
|
+
const raw = storage.readSync(configPath) ?? '';
|
|
1251
1249
|
const parsed = JSON.parse(raw);
|
|
1252
1250
|
if (parsed && typeof parsed === 'object' && parsed.consult === true) {
|
|
1253
1251
|
const nc = process.env['NO_COLOR'] != null && process.env['NO_COLOR'] !== '';
|