@bradygaster/squad-sdk 0.9.4-insider.1 → 0.9.4
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/dist/config/init.d.ts +5 -0
- package/dist/config/init.d.ts.map +1 -1
- package/dist/config/init.js +31 -25
- package/dist/config/init.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/platform/azure-devops.d.ts.map +1 -1
- package/dist/platform/azure-devops.js +7 -5
- package/dist/platform/azure-devops.js.map +1 -1
- package/dist/platform/comms-teams.d.ts +60 -2
- package/dist/platform/comms-teams.d.ts.map +1 -1
- package/dist/platform/comms-teams.js +171 -39
- package/dist/platform/comms-teams.js.map +1 -1
- package/dist/platform/types.d.ts +6 -0
- package/dist/platform/types.d.ts.map +1 -1
- package/dist/runtime/scheduler.d.ts +6 -0
- package/dist/runtime/scheduler.d.ts.map +1 -1
- package/dist/runtime/scheduler.js +25 -2
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/state-backend.d.ts +5 -0
- package/dist/state-backend.d.ts.map +1 -1
- package/dist/state-backend.js +66 -39
- package/dist/state-backend.js.map +1 -1
- package/package.json +1 -1
- package/templates/mcp-config.md +0 -2
- package/templates/scribe-charter.md +1 -1
- package/templates/squad.agent.md.template +13 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-backend.d.ts","sourceRoot":"","sources":["../src/state-backend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/C,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAClB,QAAQ,EAAE,MAAM;IAI5B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"state-backend.d.ts","sourceRoot":"","sources":["../src/state-backend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/C,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAClB,QAAQ,EAAE,MAAM;IAI5B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIrC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;CAMpC;AAkBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAsBlD;AAWD,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;gBACnB,QAAQ,EAAE,MAAM;IAE5B,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,QAAQ;IAOhB,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAGrC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;CAcpC;AAED,qBAAa,mBAAoB,YAAW,YAAY;IACtD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAgB;IAIpD,OAAO,CAAC,YAAY;IAepB,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK9C,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IA4BlD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIrC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAQnC,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;CAYrB;AAED,MAAM,WAAW,kBAAkB;IAAG,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAAE;AAExE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAoBpH"}
|
package/dist/state-backend.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module state-backend
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { execFileSync } from 'node:child_process';
|
|
7
7
|
import path from 'node:path';
|
|
8
8
|
import { FSStorageProvider } from './storage/fs-storage-provider.js';
|
|
9
9
|
const storage = new FSStorageProvider();
|
|
@@ -16,16 +16,20 @@ export class WorktreeBackend {
|
|
|
16
16
|
this.root = squadDir;
|
|
17
17
|
}
|
|
18
18
|
read(relativePath) {
|
|
19
|
-
|
|
19
|
+
const key = normalizeKey(relativePath);
|
|
20
|
+
return storage.readSync(path.join(this.root, key)) ?? undefined;
|
|
20
21
|
}
|
|
21
22
|
write(relativePath, content) {
|
|
22
|
-
|
|
23
|
+
const key = normalizeKey(relativePath);
|
|
24
|
+
storage.writeSync(path.join(this.root, key), content);
|
|
23
25
|
}
|
|
24
26
|
exists(relativePath) {
|
|
25
|
-
|
|
27
|
+
const key = normalizeKey(relativePath);
|
|
28
|
+
return storage.existsSync(path.join(this.root, key));
|
|
26
29
|
}
|
|
27
30
|
list(relativeDir) {
|
|
28
|
-
const
|
|
31
|
+
const key = normalizeKey(relativeDir);
|
|
32
|
+
const full = path.join(this.root, key);
|
|
29
33
|
if (!storage.existsSync(full) || !storage.isDirectorySync(full))
|
|
30
34
|
return [];
|
|
31
35
|
return storage.listSync(full);
|
|
@@ -33,28 +37,55 @@ export class WorktreeBackend {
|
|
|
33
37
|
}
|
|
34
38
|
function gitExec(args, cwd) {
|
|
35
39
|
try {
|
|
36
|
-
return execFileSync('git', args
|
|
40
|
+
return execFileSync('git', args, { cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
|
|
37
41
|
}
|
|
38
42
|
catch {
|
|
39
43
|
return null;
|
|
40
44
|
}
|
|
41
45
|
}
|
|
42
|
-
function
|
|
43
|
-
|
|
44
|
-
return execFileSync('git', args.split(' '), { cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trimEnd();
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
46
|
+
function gitExecWithInput(args, input, cwd) {
|
|
47
|
+
return execFileSync('git', args, { cwd, input, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
|
|
49
48
|
}
|
|
50
49
|
function gitExecOrThrow(args, cwd) {
|
|
51
50
|
const result = gitExec(args, cwd);
|
|
52
51
|
if (result === null)
|
|
53
|
-
throw new Error(`git command failed: git ${args}`);
|
|
52
|
+
throw new Error(`git command failed: git ${args.join(' ')}`);
|
|
54
53
|
return result;
|
|
55
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Validate a state key against characters that could corrupt git plumbing
|
|
57
|
+
* input (mktree stdin format, branch:path refs) or cause path confusion.
|
|
58
|
+
*/
|
|
59
|
+
export function validateStateKey(key) {
|
|
60
|
+
if (!key || key.length === 0) {
|
|
61
|
+
throw new Error('State key must be non-empty');
|
|
62
|
+
}
|
|
63
|
+
if (key.includes('\0')) {
|
|
64
|
+
throw new Error('State key must not contain null bytes');
|
|
65
|
+
}
|
|
66
|
+
if (/[\n\r]/.test(key)) {
|
|
67
|
+
throw new Error('State key must not contain newline characters');
|
|
68
|
+
}
|
|
69
|
+
if (key.includes('\t')) {
|
|
70
|
+
throw new Error('State key must not contain tab characters');
|
|
71
|
+
}
|
|
72
|
+
const segments = key.split('/');
|
|
73
|
+
for (const seg of segments) {
|
|
74
|
+
if (seg === '') {
|
|
75
|
+
throw new Error('State key must not contain empty path segments');
|
|
76
|
+
}
|
|
77
|
+
if (seg === '.' || seg === '..') {
|
|
78
|
+
throw new Error('State key must not contain . or .. path segments');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
56
82
|
function normalizeKey(relativePath) {
|
|
57
|
-
|
|
83
|
+
const normalized = relativePath.replace(/\\/g, '/').replace(/^\/+/, '').replace(/\/+$/, '');
|
|
84
|
+
// Empty string after normalization means "root" — valid for list() operations
|
|
85
|
+
if (normalized.length > 0) {
|
|
86
|
+
validateStateKey(normalized);
|
|
87
|
+
}
|
|
88
|
+
return normalized;
|
|
58
89
|
}
|
|
59
90
|
export class GitNotesBackend {
|
|
60
91
|
name = 'git-notes';
|
|
@@ -62,7 +93,7 @@ export class GitNotesBackend {
|
|
|
62
93
|
ref = 'squad';
|
|
63
94
|
constructor(repoRoot) { this.cwd = repoRoot; }
|
|
64
95
|
loadBlob() {
|
|
65
|
-
const raw = gitExec(
|
|
96
|
+
const raw = gitExec(['notes', `--ref=${this.ref}`, 'show', 'HEAD'], this.cwd);
|
|
66
97
|
if (!raw)
|
|
67
98
|
return {};
|
|
68
99
|
try {
|
|
@@ -79,9 +110,7 @@ export class GitNotesBackend {
|
|
|
79
110
|
saveBlob(blob) {
|
|
80
111
|
const json = JSON.stringify(blob, null, 2);
|
|
81
112
|
try {
|
|
82
|
-
|
|
83
|
-
cwd: this.cwd, input: json, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
|
|
84
|
-
});
|
|
113
|
+
gitExecWithInput(['notes', `--ref=${this.ref}`, 'add', '-f', '--file', '-', 'HEAD'], json, this.cwd);
|
|
85
114
|
}
|
|
86
115
|
catch {
|
|
87
116
|
throw new Error('git-notes backend: failed to write note on HEAD');
|
|
@@ -123,28 +152,28 @@ export class OrphanBranchBackend {
|
|
|
123
152
|
this.branch = branch;
|
|
124
153
|
}
|
|
125
154
|
ensureBranch() {
|
|
126
|
-
if (gitExec(
|
|
155
|
+
if (gitExec(['rev-parse', '--verify', `refs/heads/${this.branch}`], this.cwd))
|
|
127
156
|
return;
|
|
128
157
|
let tree;
|
|
129
158
|
try {
|
|
130
|
-
tree =
|
|
159
|
+
tree = gitExecWithInput(['mktree'], '', this.cwd);
|
|
131
160
|
}
|
|
132
161
|
catch {
|
|
133
162
|
throw new Error('orphan backend: failed to create empty tree');
|
|
134
163
|
}
|
|
135
164
|
let commit;
|
|
136
165
|
try {
|
|
137
|
-
commit =
|
|
166
|
+
commit = execFileSync('git', ['commit-tree', tree, '-m', 'Initialize squad-state branch'], {
|
|
138
167
|
cwd: this.cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
|
|
139
168
|
}).trim();
|
|
140
169
|
}
|
|
141
170
|
catch {
|
|
142
171
|
throw new Error('orphan backend: failed to create initial commit');
|
|
143
172
|
}
|
|
144
|
-
gitExecOrThrow(
|
|
173
|
+
gitExecOrThrow(['update-ref', `refs/heads/${this.branch}`, commit], this.cwd);
|
|
145
174
|
}
|
|
146
175
|
read(relativePath) {
|
|
147
|
-
const result = gitExec(
|
|
176
|
+
const result = gitExec(['show', `${this.branch}:${normalizeKey(relativePath)}`], this.cwd);
|
|
148
177
|
return result ?? undefined;
|
|
149
178
|
}
|
|
150
179
|
write(relativePath, content) {
|
|
@@ -152,18 +181,16 @@ export class OrphanBranchBackend {
|
|
|
152
181
|
const key = normalizeKey(relativePath);
|
|
153
182
|
let blobHash;
|
|
154
183
|
try {
|
|
155
|
-
blobHash =
|
|
156
|
-
cwd: this.cwd, input: content, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
|
|
157
|
-
}).trim();
|
|
184
|
+
blobHash = gitExecWithInput(['hash-object', '-w', '--stdin'], content, this.cwd);
|
|
158
185
|
}
|
|
159
186
|
catch {
|
|
160
187
|
throw new Error(`orphan backend: failed to hash content for ${key}`);
|
|
161
188
|
}
|
|
162
189
|
let currentTree;
|
|
163
|
-
const treeResult = gitExec(
|
|
190
|
+
const treeResult = gitExec(['log', '--format=%T', '-1', this.branch], this.cwd);
|
|
164
191
|
if (!treeResult) {
|
|
165
192
|
try {
|
|
166
|
-
currentTree =
|
|
193
|
+
currentTree = gitExecWithInput(['mktree'], '', this.cwd);
|
|
167
194
|
}
|
|
168
195
|
catch {
|
|
169
196
|
throw new Error('orphan backend: failed to create empty tree');
|
|
@@ -173,26 +200,26 @@ export class OrphanBranchBackend {
|
|
|
173
200
|
currentTree = treeResult;
|
|
174
201
|
}
|
|
175
202
|
const newTree = this.updateTree(currentTree, key.split('/'), blobHash);
|
|
176
|
-
const parentCommit = gitExec(
|
|
203
|
+
const parentCommit = gitExec(['rev-parse', this.branch], this.cwd);
|
|
177
204
|
let newCommit;
|
|
178
205
|
try {
|
|
179
|
-
const
|
|
180
|
-
newCommit =
|
|
206
|
+
const parentArgs = parentCommit ? ['-p', parentCommit] : [];
|
|
207
|
+
newCommit = execFileSync('git', ['commit-tree', newTree, ...parentArgs, '-m', `Update ${key}`], {
|
|
181
208
|
cwd: this.cwd, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
|
|
182
209
|
}).trim();
|
|
183
210
|
}
|
|
184
211
|
catch {
|
|
185
212
|
throw new Error(`orphan backend: failed to commit update for ${key}`);
|
|
186
213
|
}
|
|
187
|
-
gitExecOrThrow(
|
|
214
|
+
gitExecOrThrow(['update-ref', `refs/heads/${this.branch}`, newCommit], this.cwd);
|
|
188
215
|
}
|
|
189
216
|
exists(relativePath) {
|
|
190
|
-
return gitExec(
|
|
217
|
+
return gitExec(['cat-file', '-t', `${this.branch}:${normalizeKey(relativePath)}`], this.cwd) !== null;
|
|
191
218
|
}
|
|
192
219
|
list(relativeDir) {
|
|
193
220
|
const key = normalizeKey(relativeDir);
|
|
194
221
|
const target = key ? `${this.branch}:${key}` : `${this.branch}:`;
|
|
195
|
-
const result = gitExec(
|
|
222
|
+
const result = gitExec(['ls-tree', '--name-only', target], this.cwd);
|
|
196
223
|
if (!result)
|
|
197
224
|
return [];
|
|
198
225
|
return result.split('\n').filter(Boolean);
|
|
@@ -210,13 +237,13 @@ export class OrphanBranchBackend {
|
|
|
210
237
|
childTree = this.updateTree(subTreeHash, rest, blobHash);
|
|
211
238
|
}
|
|
212
239
|
else {
|
|
213
|
-
const emptyTree =
|
|
240
|
+
const emptyTree = gitExecWithInput(['mktree'], '', this.cwd);
|
|
214
241
|
childTree = this.updateTree(emptyTree, rest, blobHash);
|
|
215
242
|
}
|
|
216
243
|
return this.replaceEntry(baseTree, dir, '040000', 'tree', childTree);
|
|
217
244
|
}
|
|
218
245
|
getSubtreeHash(treeHash, name) {
|
|
219
|
-
const listing = gitExec(
|
|
246
|
+
const listing = gitExec(['ls-tree', treeHash], this.cwd);
|
|
220
247
|
if (!listing)
|
|
221
248
|
return null;
|
|
222
249
|
for (const line of listing.split('\n')) {
|
|
@@ -227,7 +254,7 @@ export class OrphanBranchBackend {
|
|
|
227
254
|
return null;
|
|
228
255
|
}
|
|
229
256
|
replaceEntry(treeHash, name, mode, type, hash) {
|
|
230
|
-
const listing = gitExec(
|
|
257
|
+
const listing = gitExec(['ls-tree', treeHash], this.cwd) ?? '';
|
|
231
258
|
const lines = listing.split('\n').filter(Boolean);
|
|
232
259
|
const filtered = lines.filter((line) => {
|
|
233
260
|
const match = line.match(/^(\d+)\s+(blob|tree)\s+([a-f0-9]+)\t(.+)$/);
|
|
@@ -235,7 +262,7 @@ export class OrphanBranchBackend {
|
|
|
235
262
|
});
|
|
236
263
|
filtered.push(`${mode} ${type} ${hash}\t${name}`);
|
|
237
264
|
try {
|
|
238
|
-
return
|
|
265
|
+
return gitExecWithInput(['mktree'], filtered.join('\n') + '\n', this.cwd);
|
|
239
266
|
}
|
|
240
267
|
catch {
|
|
241
268
|
throw new Error(`orphan backend: failed to create tree with entry ${name}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-backend.js","sourceRoot":"","sources":["../src/state-backend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAYxC,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,UAAU,CAAC;IACV,IAAI,CAAS;IAC9B,YAAY,QAAgB;QAC1B,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,YAAoB;QACvB,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC;IAC3E,CAAC;IACD,KAAK,CAAC,YAAoB,EAAE,OAAe;QACzC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,CAAC,YAAoB;QACzB,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,WAAmB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3E,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,GAAW;IAC/C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACrH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,GAAW;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;IACxE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,WAAW,CAAC;IACX,GAAG,CAAS;IACZ,GAAG,GAAG,OAAO,CAAC;IAC/B,YAAY,QAAgB,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;IAE9C,QAAQ;QACd,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5E,OAAO,MAAgC,CAAC;YAC1C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IACxB,CAAC;IAEO,QAAQ,CAAC,IAA4B;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,QAAQ,CAAC,mBAAmB,IAAI,CAAC,GAAG,uBAAuB,EAAE;gBAC3D,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAC/E,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,YAAoB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,KAAK,CAAC,YAAoB,EAAE,OAAe;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,GAAG,OAAO,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,CAAC,YAAoB;QACzB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,WAAmB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,mBAAmB;IACrB,IAAI,GAAG,QAAQ,CAAC;IACR,GAAG,CAAS;IACZ,MAAM,CAAS;IAChC,YAAY,QAAgB,EAAE,MAAM,GAAG,aAAa;QAClD,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5C,CAAC;IAEO,YAAY;QAClB,IAAI,OAAO,CAAC,iCAAiC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO;QAC9E,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzH,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAAC,CAAC;QAC3E,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,QAAQ,CAAC,mBAAmB,IAAI,qCAAqC,EAAE;gBAC9E,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAClE,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAAC,CAAC;QAC/E,cAAc,CAAC,yBAAyB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC,YAAoB;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACtF,OAAO,MAAM,IAAI,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,YAAoB,EAAE,OAAe;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,QAAQ,CAAC,4BAA4B,EAAE;gBAChD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAClF,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,EAAE,CAAC,CAAC;QAAC,CAAC;QAEjF,IAAI,WAAmB,CAAC;QACxB,MAAM,UAAU,GAAG,OAAO,CAAC,sBAAsB,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,WAAW,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAChI,CAAC;YAAC,MAAM,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YAAC,WAAW,GAAG,UAAU,CAAC;QAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnE,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,SAAS,GAAG,QAAQ,CAAC,mBAAmB,OAAO,IAAI,SAAS,eAAe,GAAG,GAAG,EAAE;gBACjF,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAClE,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,EAAE,CAAC,CAAC;QAAC,CAAC;QAClF,cAAc,CAAC,yBAAyB,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,YAAoB;QACzB,OAAO,OAAO,CAAC,eAAe,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAChG,CAAC;IAED,IAAI,CAAC,WAAmB;QACtB,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;QACjE,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEO,UAAU,CAAC,QAAgB,EAAE,YAAsB,EAAE,QAAgB;QAC3E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACtF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,YAAY,CAAC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAI,CAAC,CAAC;QACxD,IAAI,SAAiB,CAAC;QACtB,IAAI,WAAW,EAAE,CAAC;YAChB,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAClI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,IAAY;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,QAAQ,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACtE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,QAAgB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;QAC3F,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,QAAQ,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjJ,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,oDAAoD,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;IAC1F,CAAC;CACF;AAID,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,QAAgB,EAAE,WAA8B;IACpG,IAAI,aAA2C,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;YAC1D,IAAI,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,QAAQ,IAAI,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;gBAC7F,aAAa,GAAG,MAAM,CAAC,cAAc,CAAqB,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,WAAW,IAAI,aAAa,IAAI,UAAU,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,2BAA2B,MAAM,aAAa,GAAG,+BAA+B,CAAC,CAAC;QAC/F,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,IAAsB,EAAE,QAAgB,EAAE,QAAgB;IAC/E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtD,KAAK,WAAW,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;QACvD,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACxD,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB;QACxE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"state-backend.js","sourceRoot":"","sources":["../src/state-backend.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/templates/mcp-config.md
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
MCP (Model Context Protocol) servers extend Squad with tools for external services — Trello, Aspire dashboards, Azure, Notion, and more. The user configures MCP servers in their environment; Squad discovers and uses them.
|
|
4
4
|
|
|
5
|
-
> **Full patterns:** Read `.squad/skills/mcp-tool-discovery/SKILL.md` for discovery patterns, domain-specific usage, and graceful degradation.
|
|
6
|
-
|
|
7
5
|
## Config File Locations
|
|
8
6
|
|
|
9
7
|
Users configure MCP servers at these locations (checked in priority order):
|
|
@@ -43,7 +43,7 @@ After every substantial work session:
|
|
|
43
43
|
- **Exact duplicates:** If two blocks share the same heading, keep the first and remove the rest.
|
|
44
44
|
- **Overlapping decisions:** Compare block content across all remaining blocks. If two or more blocks cover the same area (same topic, same architectural concern, same component) but were written independently (different dates, different authors), consolidate them:
|
|
45
45
|
a. Synthesize a single merged block that combines the intent and rationale from all overlapping blocks.
|
|
46
|
-
b. Use
|
|
46
|
+
b. Use the CURRENT_DATETIME value from your spawn prompt and a new heading: `### {CURRENT_DATETIME}: {consolidated topic} (consolidated)`
|
|
47
47
|
c. Credit all original authors: `**By:** {Name1}, {Name2}`
|
|
48
48
|
d. Under **What:**, combine the decisions. Note any differences or evolution.
|
|
49
49
|
e. Under **Why:**, merge the rationale, preserving unique reasoning from each.
|
|
@@ -19,6 +19,7 @@ You are **Squad (Coordinator)** — the orchestrator for this project's AI team.
|
|
|
19
19
|
- You may NOT generate domain artifacts (code, designs, analyses) — spawn an agent
|
|
20
20
|
- You may NOT bypass reviewer approval on rejected work
|
|
21
21
|
- You may NOT invent facts or assumptions — ask the user or spawn an agent who knows
|
|
22
|
+
- You may NOT do work yourself — ALWAYS delegate to a team member, even for small tasks. The only exception is Direct Mode (status checks, factual questions, and simple answers from context — see Response Mode Selection).
|
|
22
23
|
|
|
23
24
|
Check: Does `.squad/team.md` exist? (fall back to `.ai-team/team.md` for repos migrating from older installs)
|
|
24
25
|
- **No** → Init Mode
|
|
@@ -104,7 +105,7 @@ The `union` merge driver keeps all lines from both sides, which is correct for a
|
|
|
104
105
|
|
|
105
106
|
**If you wrote code, generated artifacts, or produced domain work without dispatching to an agent, you violated this rule. The coordinator ROUTES — it does not BUILD. No exceptions.**
|
|
106
107
|
|
|
107
|
-
**On every session start:** Run `git config user.name` to identify the current user, and **resolve the team root** (see Worktree Awareness). Store the team root — all `.squad/` paths must be resolved relative to it. Pass the team root into every spawn prompt as `TEAM_ROOT` and the current user's name into every agent spawn prompt and Scribe log so the team always knows who requested the work. Check `.squad/identity/now.md` if it exists — it tells you what the team was last focused on. Update it if the focus has shifted.
|
|
108
|
+
**On every session start:** Run `git config user.name` to identify the current user, and **resolve the team root** (see Worktree Awareness). Store the team root — all `.squad/` paths must be resolved relative to it. Pass the team root and the current datetime (from `<current_datetime>` in your system context) into every spawn prompt as `TEAM_ROOT` and `CURRENT_DATETIME` respectively. Pass the current user's name into every agent spawn prompt and Scribe log so the team always knows who requested the work. Check `.squad/identity/now.md` if it exists — it tells you what the team was last focused on. Update it if the focus has shifted.
|
|
108
109
|
|
|
109
110
|
**⚡ Context caching:** After the first message in a session, `team.md`, `routing.md`, and `registry.json` are already in your context. Do NOT re-read them on subsequent messages — you already have the roster, routing rules, and cast names. Only re-read if the user explicitly modifies the team (adds/removes members, changes routing).
|
|
110
111
|
|
|
@@ -330,6 +331,7 @@ description: "{emoji} {Name}: {brief task summary}"
|
|
|
330
331
|
prompt: |
|
|
331
332
|
You are {Name}, the {Role} on this project.
|
|
332
333
|
TEAM ROOT: {team_root}
|
|
334
|
+
CURRENT_DATETIME: {current_datetime}
|
|
333
335
|
WORKTREE_PATH: {worktree_path}
|
|
334
336
|
WORKTREE_MODE: {true|false}
|
|
335
337
|
**Requested by:** {current user name}
|
|
@@ -348,7 +350,7 @@ prompt: |
|
|
|
348
350
|
⚠️ RESPONSE ORDER: After ALL tool calls, write a plain text summary as FINAL output.
|
|
349
351
|
```
|
|
350
352
|
|
|
351
|
-
For read-only queries, use the explore agent: `agent_type: "explore"` with `"You are {Name}, the {Role}. {question} TEAM ROOT: {team_root}"`
|
|
353
|
+
For read-only queries, use the explore agent: `agent_type: "explore"` with `"You are {Name}, the {Role}. CURRENT_DATETIME: {current_datetime} — {question} TEAM ROOT: {team_root}"`
|
|
352
354
|
|
|
353
355
|
### Per-Agent Model Selection
|
|
354
356
|
|
|
@@ -499,7 +501,7 @@ The `sql` tool is **CLI-only**. It does not exist on VS Code, JetBrains, or GitH
|
|
|
499
501
|
|
|
500
502
|
MCP (Model Context Protocol) servers extend Squad with tools for external services — Trello, Aspire dashboards, Azure, Notion, and more. The user configures MCP servers in their environment; Squad discovers and uses them.
|
|
501
503
|
|
|
502
|
-
> **
|
|
504
|
+
> **Config details:** Read `.squad/templates/mcp-config.md` for config file locations, sample configs, and authentication notes.
|
|
503
505
|
|
|
504
506
|
#### Detection
|
|
505
507
|
|
|
@@ -623,15 +625,17 @@ Squad and all spawned agents may be running inside a **git worktree** rather tha
|
|
|
623
625
|
|
|
624
626
|
**How the Coordinator resolves the team root (on every session start):**
|
|
625
627
|
|
|
626
|
-
1.
|
|
627
|
-
|
|
628
|
+
1. **Check CWD first** — does `.squad/` exist in the current working directory?
|
|
629
|
+
- **Yes** → Team root = CWD. This handles monorepos where `.squad/` lives in a subfolder.
|
|
630
|
+
2. If not, run `git rev-parse --show-toplevel` to get the current worktree root.
|
|
631
|
+
3. Check if `.squad/` exists at that root (fall back to `.ai-team/` for repos that haven't migrated yet).
|
|
628
632
|
- **Yes** → use **worktree-local** strategy. Team root = current worktree root.
|
|
629
633
|
- **No** → use **main-checkout** strategy. Discover the main working tree:
|
|
630
634
|
```
|
|
631
635
|
git worktree list --porcelain
|
|
632
636
|
```
|
|
633
637
|
The first `worktree` line is the main working tree. Team root = that path.
|
|
634
|
-
|
|
638
|
+
4. The user may override the strategy at any time (e.g., *"use main checkout for team state"* or *"keep team state in this worktree"*).
|
|
635
639
|
|
|
636
640
|
**Passing the team root to agents:**
|
|
637
641
|
- The Coordinator includes `TEAM_ROOT: {resolved_path}` in every spawn prompt.
|
|
@@ -769,6 +773,7 @@ prompt: |
|
|
|
769
773
|
{paste contents of .squad/agents/{name}/charter.md here}
|
|
770
774
|
|
|
771
775
|
TEAM ROOT: {team_root}
|
|
776
|
+
CURRENT_DATETIME: {current_datetime}
|
|
772
777
|
All `.squad/` paths are relative to this root.
|
|
773
778
|
|
|
774
779
|
PERSONAL_AGENT: {true|false} # Whether this is a personal agent
|
|
@@ -815,6 +820,7 @@ prompt: |
|
|
|
815
820
|
Do the work. Respond as {Name}.
|
|
816
821
|
|
|
817
822
|
⚠️ OUTPUT: Report outcomes in human terms. Never expose tool internals or SQL.
|
|
823
|
+
⚠️ DATES: When writing dates in any file (decisions, history, logs), use ONLY the CURRENT_DATETIME value above. Never infer or guess the date.
|
|
818
824
|
|
|
819
825
|
AFTER work:
|
|
820
826
|
1. APPEND to .squad/agents/{name}/history.md under "## Learnings":
|
|
@@ -871,6 +877,7 @@ description: "📋 Scribe: Log session & merge decisions"
|
|
|
871
877
|
prompt: |
|
|
872
878
|
You are the Scribe. Read .squad/agents/scribe/charter.md.
|
|
873
879
|
TEAM ROOT: {team_root}
|
|
880
|
+
CURRENT_DATETIME: {current_datetime}
|
|
874
881
|
|
|
875
882
|
SPAWN MANIFEST: {spawn_manifest}
|
|
876
883
|
|