@bradygaster/squad-cli 0.8.20 → 0.8.23

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 +77 -77
  2. package/dist/cli/commands/build.d.ts +31 -0
  3. package/dist/cli/commands/build.d.ts.map +1 -0
  4. package/dist/cli/commands/build.js +453 -0
  5. package/dist/cli/commands/build.js.map +1 -0
  6. package/dist/cli/commands/init-remote.d.ts.map +1 -1
  7. package/dist/cli/commands/init-remote.js +13 -0
  8. package/dist/cli/commands/init-remote.js.map +1 -1
  9. package/dist/cli/commands/link.d.ts.map +1 -1
  10. package/dist/cli/commands/link.js +13 -0
  11. package/dist/cli/commands/link.js.map +1 -1
  12. package/dist/cli/commands/migrate.d.ts +14 -0
  13. package/dist/cli/commands/migrate.d.ts.map +1 -0
  14. package/dist/cli/commands/migrate.js +419 -0
  15. package/dist/cli/commands/migrate.js.map +1 -0
  16. package/dist/cli/commands/rc.d.ts.map +1 -1
  17. package/dist/cli/commands/rc.js +10 -3
  18. package/dist/cli/commands/rc.js.map +1 -1
  19. package/dist/cli/commands/streams.d.ts +15 -0
  20. package/dist/cli/commands/streams.d.ts.map +1 -0
  21. package/dist/cli/commands/streams.js +147 -0
  22. package/dist/cli/commands/streams.js.map +1 -0
  23. package/dist/cli/core/cast.d.ts.map +1 -1
  24. package/dist/cli/core/cast.js +111 -63
  25. package/dist/cli/core/cast.js.map +1 -1
  26. package/dist/cli/core/init.d.ts +4 -0
  27. package/dist/cli/core/init.d.ts.map +1 -1
  28. package/dist/cli/core/init.js +2 -2
  29. package/dist/cli/core/init.js.map +1 -1
  30. package/dist/cli/core/team-md.js +34 -34
  31. package/dist/cli/core/templates.d.ts.map +1 -1
  32. package/dist/cli/core/templates.js +0 -6
  33. package/dist/cli/core/templates.js.map +1 -1
  34. package/dist/cli/core/upgrade.d.ts.map +1 -1
  35. package/dist/cli/core/upgrade.js +2 -1
  36. package/dist/cli/core/upgrade.js.map +1 -1
  37. package/dist/cli/index.d.ts +1 -0
  38. package/dist/cli/index.d.ts.map +1 -1
  39. package/dist/cli/index.js +1 -0
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/shell/commands.d.ts +6 -0
  42. package/dist/cli/shell/commands.d.ts.map +1 -1
  43. package/dist/cli/shell/commands.js +2 -1
  44. package/dist/cli/shell/commands.js.map +1 -1
  45. package/dist/cli/shell/components/AgentPanel.d.ts.map +1 -1
  46. package/dist/cli/shell/components/AgentPanel.js +4 -3
  47. package/dist/cli/shell/components/AgentPanel.js.map +1 -1
  48. package/dist/cli/shell/components/App.d.ts.map +1 -1
  49. package/dist/cli/shell/components/App.js +36 -2
  50. package/dist/cli/shell/components/App.js.map +1 -1
  51. package/dist/cli/shell/components/MessageStream.d.ts.map +1 -1
  52. package/dist/cli/shell/components/MessageStream.js +2 -1
  53. package/dist/cli/shell/components/MessageStream.js.map +1 -1
  54. package/dist/cli/shell/components/ThinkingIndicator.js +2 -2
  55. package/dist/cli/shell/components/ThinkingIndicator.js.map +1 -1
  56. package/dist/cli/shell/coordinator.js +88 -88
  57. package/dist/cli/shell/index.d.ts.map +1 -1
  58. package/dist/cli/shell/index.js +41 -3
  59. package/dist/cli/shell/index.js.map +1 -1
  60. package/dist/cli-entry.js +220 -22
  61. package/dist/cli-entry.js.map +1 -1
  62. package/dist/remote-ui/app.js +334 -0
  63. package/dist/remote-ui/index.html +57 -0
  64. package/dist/remote-ui/manifest.json +10 -0
  65. package/dist/remote-ui/styles.css +249 -0
  66. package/package.json +35 -3
  67. package/scripts/patch-esm-imports.mjs +77 -0
  68. package/templates/casting-history.json +4 -4
  69. package/templates/casting-policy.json +35 -35
  70. package/templates/casting-registry.json +3 -3
  71. package/templates/ceremonies.md +41 -41
  72. package/templates/charter.md +53 -53
  73. package/templates/constraint-tracking.md +38 -38
  74. package/templates/copilot-instructions.md +46 -46
  75. package/templates/history.md +10 -10
  76. package/templates/identity/now.md +9 -9
  77. package/templates/identity/wisdom.md +15 -15
  78. package/templates/mcp-config.md +90 -90
  79. package/templates/multi-agent-format.md +28 -28
  80. package/templates/orchestration-log.md +27 -27
  81. package/templates/plugin-marketplace.md +49 -49
  82. package/templates/raw-agent-output.md +37 -37
  83. package/templates/roster.md +60 -60
  84. package/templates/routing.md +54 -54
  85. package/templates/run-output.md +50 -50
  86. package/templates/scribe-charter.md +119 -119
  87. package/templates/skill.md +24 -24
  88. package/templates/skills/squad-conventions/SKILL.md +69 -69
  89. package/templates/squad.agent.md +1146 -1146
  90. package/templates/workflows/squad-ci.yml +24 -24
  91. package/templates/workflows/squad-docs.yml +50 -50
  92. package/templates/workflows/squad-insider-release.yml +61 -61
  93. package/templates/workflows/squad-issue-assign.yml +161 -161
  94. package/templates/workflows/squad-label-enforce.yml +181 -181
  95. package/templates/workflows/squad-preview.yml +55 -55
  96. package/templates/workflows/squad-promote.yml +120 -120
  97. package/templates/workflows/squad-release.yml +77 -77
  98. package/templates/workflows/squad-triage.yml +260 -260
  99. package/templates/workflows/sync-squad-labels.yml +169 -169
  100. package/dist/cli/shell/sdk-bridge.d.ts +0 -50
  101. package/dist/cli/shell/sdk-bridge.d.ts.map +0 -1
  102. package/dist/cli/shell/sdk-bridge.js +0 -235
  103. package/dist/cli/shell/sdk-bridge.js.map +0 -1
  104. package/dist/cli/shell/theme-colors.d.ts +0 -39
  105. package/dist/cli/shell/theme-colors.d.ts.map +0 -1
  106. package/dist/cli/shell/theme-colors.js +0 -39
  107. package/dist/cli/shell/theme-colors.js.map +0 -1
  108. package/dist/cli.d.ts +0 -3
  109. package/dist/cli.d.ts.map +0 -1
  110. package/dist/cli.js +0 -4
  111. package/dist/cli.js.map +0 -1
  112. package/templates/workflows/squad-main-guard.yml +0 -129
@@ -1,39 +0,0 @@
1
- /**
2
- * Squad CLI — Semantic Color System
3
- *
4
- * Consistent color roles for all CLI components.
5
- * All colors target ≥4.5:1 contrast ratio on standard dark terminals.
6
- *
7
- * Import:
8
- * import { colors } from '../theme-colors.js';
9
- *
10
- * Usage:
11
- * <Text color={noColor ? undefined : colors.info}>...</Text>
12
- *
13
- * Color roles:
14
- * cyan (info) — user input, prompts, neutral informational text
15
- * green (success) — agent ready, task complete, confirmations
16
- * yellow (warning) — experimental flags, caution, in-progress attention
17
- * red (error) — error states, failures, crash messages
18
- * gray (secondary) — hints, timestamps, metadata — readable, never dim
19
- *
20
- * Contrast guidance:
21
- * - Use `colors.secondary` ("gray") for readable secondary text.
22
- * ANSI dim (SGR 2) drops below 4.5:1 on many terminals — avoid for text.
23
- * - Reserve `dimColor` ONLY for decorative elements (separators, box rules).
24
- * - "gray" (ANSI 90 / bright-black) holds ~5:1 contrast on dark backgrounds.
25
- */
26
- /** Ink-compatible color values for the semantic color system. */
27
- export declare const colors: {
28
- /** Info / neutral — user input, prompts, informational highlights */
29
- readonly info: "cyan";
30
- /** Success / completion — agent ready, task done, confirmations */
31
- readonly success: "green";
32
- /** Warning / caution — experimental flags, in-progress work */
33
- readonly warning: "yellow";
34
- /** Error / failure — error states, crashes */
35
- readonly error: "red";
36
- /** Secondary text — hints, timestamps, metadata. Readable, not dim. */
37
- readonly secondary: "gray";
38
- };
39
- //# sourceMappingURL=theme-colors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-colors.d.ts","sourceRoot":"","sources":["../../../src/cli/shell/theme-colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,iEAAiE;AACjE,eAAO,MAAM,MAAM;IACjB,qEAAqE;;IAErE,mEAAmE;;IAEnE,+DAA+D;;IAE/D,8CAA8C;;IAE9C,uEAAuE;;CAE/D,CAAC"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Squad CLI — Semantic Color System
3
- *
4
- * Consistent color roles for all CLI components.
5
- * All colors target ≥4.5:1 contrast ratio on standard dark terminals.
6
- *
7
- * Import:
8
- * import { colors } from '../theme-colors.js';
9
- *
10
- * Usage:
11
- * <Text color={noColor ? undefined : colors.info}>...</Text>
12
- *
13
- * Color roles:
14
- * cyan (info) — user input, prompts, neutral informational text
15
- * green (success) — agent ready, task complete, confirmations
16
- * yellow (warning) — experimental flags, caution, in-progress attention
17
- * red (error) — error states, failures, crash messages
18
- * gray (secondary) — hints, timestamps, metadata — readable, never dim
19
- *
20
- * Contrast guidance:
21
- * - Use `colors.secondary` ("gray") for readable secondary text.
22
- * ANSI dim (SGR 2) drops below 4.5:1 on many terminals — avoid for text.
23
- * - Reserve `dimColor` ONLY for decorative elements (separators, box rules).
24
- * - "gray" (ANSI 90 / bright-black) holds ~5:1 contrast on dark backgrounds.
25
- */
26
- /** Ink-compatible color values for the semantic color system. */
27
- export const colors = {
28
- /** Info / neutral — user input, prompts, informational highlights */
29
- info: 'cyan',
30
- /** Success / completion — agent ready, task done, confirmations */
31
- success: 'green',
32
- /** Warning / caution — experimental flags, in-progress work */
33
- warning: 'yellow',
34
- /** Error / failure — error states, crashes */
35
- error: 'red',
36
- /** Secondary text — hints, timestamps, metadata. Readable, not dim. */
37
- secondary: 'gray',
38
- };
39
- //# sourceMappingURL=theme-colors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-colors.js","sourceRoot":"","sources":["../../../src/cli/shell/theme-colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,iEAAiE;AACjE,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,qEAAqE;IACrE,IAAI,EAAE,MAAM;IACZ,mEAAmE;IACnE,OAAO,EAAE,OAAO;IAChB,+DAA+D;IAC/D,OAAO,EAAE,QAAQ;IACjB,8CAA8C;IAC9C,KAAK,EAAE,KAAK;IACZ,uEAAuE;IACvE,SAAS,EAAE,MAAM;CACT,CAAC"}
package/dist/cli.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- // Redirect to the real CLI entry point
3
- import './cli-entry.js';
4
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC"}
@@ -1,129 +0,0 @@
1
- name: Squad Protected Branch Guard
2
-
3
- on:
4
- pull_request:
5
- branches: [main, preview, insider]
6
- types: [opened, synchronize, reopened]
7
- push:
8
- branches: [main, preview, insider]
9
-
10
- permissions:
11
- contents: read
12
- pull-requests: read
13
-
14
- jobs:
15
- guard:
16
- runs-on: ubuntu-latest
17
- steps:
18
- - uses: actions/checkout@v4
19
-
20
- - name: Check for forbidden paths
21
- uses: actions/github-script@v7
22
- with:
23
- script: |
24
- // Fetch all files changed - handles both PR and push events
25
- let files = [];
26
-
27
- if (context.eventName === 'pull_request') {
28
- // PR event: use pulls.listFiles API
29
- let page = 1;
30
- while (true) {
31
- const resp = await github.rest.pulls.listFiles({
32
- owner: context.repo.owner,
33
- repo: context.repo.repo,
34
- pull_number: context.payload.pull_request.number,
35
- per_page: 100,
36
- page
37
- });
38
- files.push(...resp.data);
39
- if (resp.data.length < 100) break;
40
- page++;
41
- }
42
- } else if (context.eventName === 'push') {
43
- // Push event: compare against base branch
44
- const base = context.payload.before;
45
- const head = context.payload.after;
46
-
47
- // If this is not a force push and base exists, compare commits
48
- if (base && base !== '0000000000000000000000000000000000000000') {
49
- const comparison = await github.rest.repos.compareCommits({
50
- owner: context.repo.owner,
51
- repo: context.repo.repo,
52
- base,
53
- head
54
- });
55
- files = comparison.data.files || [];
56
- } else {
57
- // Force push or initial commit: list all files in the current tree
58
- core.info('Force push detected or initial commit, checking tree state');
59
- const { data: tree } = await github.rest.git.getTree({
60
- owner: context.repo.owner,
61
- repo: context.repo.repo,
62
- tree_sha: head,
63
- recursive: 'true'
64
- });
65
- files = tree.tree
66
- .filter(item => item.type === 'blob')
67
- .map(item => ({ filename: item.path, status: 'added' }));
68
- }
69
- }
70
-
71
- // Check each file against forbidden path rules
72
- // Allow removals ΓÇö deleting forbidden files from protected branches is fine
73
- const forbidden = files
74
- .filter(f => f.status !== 'removed')
75
- .map(f => f.filename)
76
- .filter(f => {
77
- // .ai-team/** and .squad/** ΓÇö ALL team state files, zero exceptions
78
- if (f === '.ai-team' || f.startsWith('.ai-team/') || f === '.squad' || f.startsWith('.squad/')) return true;
79
- // .ai-team-templates/** ΓÇö Squad's own templates, stay on dev
80
- if (f === '.ai-team-templates' || f.startsWith('.ai-team-templates/')) return true;
81
- // team-docs/** ΓÇö ALL internal team docs, zero exceptions
82
- if (f.startsWith('team-docs/')) return true;
83
- // docs/proposals/** ΓÇö internal design proposals, stay on dev
84
- if (f.startsWith('docs/proposals/')) return true;
85
- return false;
86
- });
87
-
88
- if (forbidden.length === 0) {
89
- core.info('✅ No forbidden paths found in PR — all clear.');
90
- return;
91
- }
92
-
93
- // Build a clear, actionable error message
94
- const lines = [
95
- '## 🚫 Forbidden files detected in PR to main',
96
- '',
97
- 'The following files must NOT be merged into `main`.',
98
- '`.ai-team/` and `.squad/` are runtime team state ΓÇö they belong on dev branches only.',
99
- '`.ai-team-templates/` is Squad\'s internal planning ΓÇö it belongs on dev branches only.',
100
- '`team-docs/` is internal team content ΓÇö it belongs on dev branches only.',
101
- '`docs/proposals/` is internal design proposals ΓÇö it belongs on dev branches only.',
102
- '',
103
- '### Forbidden files found:',
104
- '',
105
- ...forbidden.map(f => `- \`${f}\``),
106
- '',
107
- '### How to fix:',
108
- '',
109
- '```bash',
110
- '# Remove tracked .ai-team/ files (keeps local copies):',
111
- 'git rm --cached -r .ai-team/',
112
- '',
113
- '# Remove tracked .squad/ files (keeps local copies):',
114
- 'git rm --cached -r .squad/',
115
- '',
116
- '# Remove tracked team-docs/ files:',
117
- 'git rm --cached -r team-docs/',
118
- '',
119
- '# Commit the removal and push:',
120
- 'git commit -m "chore: remove forbidden paths from PR"',
121
- 'git push',
122
- '```',
123
- '',
124
- '> ⚠️ `.ai-team/` and `.squad/` are committed on `dev` and feature branches by design.',
125
- '> The guard workflow is the enforcement mechanism that keeps these files off `main` and `preview`.',
126
- '> `git rm --cached` untracks them from this PR without deleting your local copies.',
127
- ];
128
-
129
- core.setFailed(lines.join('\n'));