@bradygaster/squad-sdk 0.9.6-insider.3 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/client.d.ts.map +1 -1
- package/dist/adapter/client.js +15 -2
- package/dist/adapter/client.js.map +1 -1
- package/dist/adapter/types.d.ts +6 -1
- package/dist/adapter/types.d.ts.map +1 -1
- package/dist/config/init.d.ts.map +1 -1
- package/dist/config/init.js +10 -3
- package/dist/config/init.js.map +1 -1
- package/dist/index.d.ts +2 -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/detect.d.ts.map +1 -1
- package/dist/platform/detect.js +7 -0
- package/dist/platform/detect.js.map +1 -1
- package/dist/state-backend.d.ts +154 -9
- package/dist/state-backend.d.ts.map +1 -1
- package/dist/state-backend.js +719 -185
- package/dist/state-backend.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +16 -0
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/after-agent-reference.md +2 -2
- package/templates/scribe-charter.md +1 -1
- package/templates/skills/fact-checking/SKILL.md +61 -0
- package/templates/spawn-reference.md +1 -2
- package/templates/squad.agent.md.template +16 -6
- package/templates/workflow-wiring-appendix-a-code-reviewer.md +131 -0
- package/templates/workflow-wiring-appendix-b-documenter.md +140 -0
- package/templates/workflow-wiring-guide.md +276 -0
- package/templates/workflows/squad-heartbeat.yml +167 -167
package/dist/state-backend.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Git-native state backends for `.squad/` state storage.
|
|
3
3
|
*
|
|
4
|
+
* Hardening: retry with exponential backoff for transient git errors,
|
|
5
|
+
* circuit-breaker to prevent cascading failures, startup verification,
|
|
6
|
+
* and observable error surfacing (no silent swallowing).
|
|
7
|
+
*
|
|
4
8
|
* @module state-backend
|
|
5
9
|
*/
|
|
6
10
|
import type { StorageProvider, StorageStats } from './storage/storage-provider.js';
|
|
11
|
+
/** Typed error for git command failures with stderr and command context. */
|
|
12
|
+
export declare class GitExecError extends Error {
|
|
13
|
+
readonly command: string;
|
|
14
|
+
readonly reason: string;
|
|
15
|
+
readonly stderr: string;
|
|
16
|
+
readonly name = "GitExecError";
|
|
17
|
+
constructor(command: string, reason: string, stderr: string);
|
|
18
|
+
}
|
|
7
19
|
export type StateBackendType = 'local' | 'external' | 'orphan' | 'two-layer';
|
|
8
20
|
export interface StateBackend {
|
|
9
21
|
read(relativePath: string): string | undefined;
|
|
@@ -14,6 +26,56 @@ export interface StateBackend {
|
|
|
14
26
|
append(relativePath: string, content: string): void;
|
|
15
27
|
readonly name: string;
|
|
16
28
|
}
|
|
29
|
+
type CircuitState = 'closed' | 'open' | 'half-open';
|
|
30
|
+
export declare class CircuitBreaker {
|
|
31
|
+
private readonly threshold;
|
|
32
|
+
private readonly cooldownMs;
|
|
33
|
+
private state;
|
|
34
|
+
private failures;
|
|
35
|
+
private lastFailureTime;
|
|
36
|
+
constructor(threshold?: number, cooldownMs?: number);
|
|
37
|
+
/** Execute an operation through the circuit breaker. */
|
|
38
|
+
execute<T>(fn: () => T, operation: string): T;
|
|
39
|
+
private onSuccess;
|
|
40
|
+
private onFailure;
|
|
41
|
+
get consecutiveFailures(): number;
|
|
42
|
+
get currentState(): CircuitState;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Thrown when an optimistic CAS write (update-ref expected-old) fails after
|
|
46
|
+
* exhausting all retry attempts. Callers may surface, requeue, or retry with
|
|
47
|
+
* application-level coordination. Distinct from GitExecError, which signals
|
|
48
|
+
* a real git failure (corruption, permission, broken repo).
|
|
49
|
+
*/
|
|
50
|
+
export declare class StateBackendConcurrencyError extends Error {
|
|
51
|
+
readonly operation: string;
|
|
52
|
+
readonly attempts: number;
|
|
53
|
+
readonly lastStderr: string;
|
|
54
|
+
readonly name = "StateBackendConcurrencyError";
|
|
55
|
+
constructor(operation: string, attempts: number, lastStderr: string);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Attempt an atomic ref update with compare-and-swap semantics.
|
|
59
|
+
*
|
|
60
|
+
* `expectedOldSha` of `null` means "create only if does not exist"
|
|
61
|
+
* (passed as 40 zeros, git's canonical no-such-ref sentinel).
|
|
62
|
+
*
|
|
63
|
+
* Returns `{ ok: true }` on success, `{ ok: false, stderr }` on CAS conflict,
|
|
64
|
+
* and re-throws any non-CAS git failure (corruption, permission, etc.).
|
|
65
|
+
*/
|
|
66
|
+
declare function tryUpdateRef(ref: string, newSha: string, expectedOldSha: string | null, cwd: string): {
|
|
67
|
+
ok: boolean;
|
|
68
|
+
stderr: string;
|
|
69
|
+
};
|
|
70
|
+
export declare function _setCasInjectorForTesting(fn: ((ref: string) => {
|
|
71
|
+
ok: boolean;
|
|
72
|
+
stderr: string;
|
|
73
|
+
} | null) | null): void;
|
|
74
|
+
/**
|
|
75
|
+
* Internal CAS primitive — exported for unit tests only.
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
export declare const _tryUpdateRefForTesting: typeof tryUpdateRef;
|
|
17
79
|
export declare class WorktreeBackend implements StateBackend {
|
|
18
80
|
readonly name = "local";
|
|
19
81
|
private readonly root;
|
|
@@ -34,16 +96,40 @@ export declare class GitNotesBackend implements StateBackend {
|
|
|
34
96
|
readonly name = "git-notes";
|
|
35
97
|
private readonly cwd;
|
|
36
98
|
private readonly ref;
|
|
37
|
-
private
|
|
99
|
+
private readonly breaker;
|
|
100
|
+
private _rootCommit;
|
|
38
101
|
constructor(repoRoot: string);
|
|
102
|
+
/** Returns the root commit SHA — a stable anchor that never moves. Cached after first call. */
|
|
103
|
+
private rootCommit;
|
|
104
|
+
/** Resolve the current SHA of refs/notes/<ref>, or null if it doesn't exist. */
|
|
105
|
+
private readNotesRef;
|
|
39
106
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
107
|
+
* Load the JSON blob attached to the root commit at a SPECIFIC notes ref SHA.
|
|
108
|
+
* Reading at a pinned SHA (not the live ref tip) is the foundation of the CAS
|
|
109
|
+
* loop — without it, a writer could observe state at version N, build version
|
|
110
|
+
* N+1, but race against another writer who already advanced to N+1' (losing
|
|
111
|
+
* data). With a pinned read, the subsequent update-ref CAS catches the race.
|
|
112
|
+
*
|
|
113
|
+
* NOTE: this relies on the notes tree having no fanout. Git uses fanout
|
|
114
|
+
* (ab/cdef.../) only when many notes are present; we only ever store a single
|
|
115
|
+
* note (on the root commit), so the path is just `<refSha>:<anchor>`.
|
|
43
116
|
*/
|
|
44
|
-
private
|
|
117
|
+
private loadBlobAt;
|
|
118
|
+
/** Convenience reader at the live ref tip (used for read-only operations). */
|
|
45
119
|
private loadBlob;
|
|
46
|
-
|
|
120
|
+
/**
|
|
121
|
+
* Build a new notes commit and attempt to atomically swing refs/notes/<ref>
|
|
122
|
+
* from `expectedOldRefSha` to it. Returns the same `{ ok, stderr }` shape as
|
|
123
|
+
* tryUpdateRef so the caller's retry loop can act.
|
|
124
|
+
*/
|
|
125
|
+
private atomicSaveBlob;
|
|
126
|
+
/**
|
|
127
|
+
* Run a mutator under optimistic CAS. The mutator receives the current blob
|
|
128
|
+
* (re-read on every attempt) and may mutate it; its return value is forwarded
|
|
129
|
+
* to the caller on success. On CAS conflict, the loop retries with jittered
|
|
130
|
+
* backoff up to CAS_MAX_ATTEMPTS times, then throws StateBackendConcurrencyError.
|
|
131
|
+
*/
|
|
132
|
+
private mutateBlob;
|
|
47
133
|
read(relativePath: string): string | undefined;
|
|
48
134
|
write(relativePath: string, content: string): void;
|
|
49
135
|
exists(relativePath: string): boolean;
|
|
@@ -55,6 +141,7 @@ export declare class OrphanBranchBackend implements StateBackend {
|
|
|
55
141
|
readonly name = "orphan";
|
|
56
142
|
private readonly cwd;
|
|
57
143
|
private readonly branch;
|
|
144
|
+
private readonly breaker;
|
|
58
145
|
constructor(repoRoot: string, branch?: string);
|
|
59
146
|
private ensureBranch;
|
|
60
147
|
read(relativePath: string): string | undefined;
|
|
@@ -110,18 +197,34 @@ export declare class StateBackendStorageAdapter implements StorageProvider {
|
|
|
110
197
|
/** Convert absolute path to relative path for the backend. */
|
|
111
198
|
private toRelative;
|
|
112
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Result of promoteNotes — how many notes were moved, archived, or skipped.
|
|
202
|
+
*/
|
|
203
|
+
export interface PromoteNotesResult {
|
|
204
|
+
/** Orphan keys written for notes flagged `promote_to_permanent`. */
|
|
205
|
+
promoted: string[];
|
|
206
|
+
/** Orphan keys written for notes flagged `archive_on_close`. */
|
|
207
|
+
archived: string[];
|
|
208
|
+
/** Count of notes that had neither flag and were left in place. */
|
|
209
|
+
skipped: number;
|
|
210
|
+
}
|
|
113
211
|
/**
|
|
114
212
|
* Two-Layer Backend — combines git-notes (commit-scoped annotations) with orphan
|
|
115
213
|
* branch (permanent state). Reads from orphan for bulk state, writes to both:
|
|
116
214
|
* - Git notes for commit-scoped "why" annotations (per-agent namespace)
|
|
117
215
|
* - Orphan branch for permanent state (decisions, histories, logs)
|
|
118
216
|
*
|
|
119
|
-
*
|
|
217
|
+
* The notes layer is a real, callable consumer in this backend: call
|
|
218
|
+
* {@link TwoLayerBackend.promoteNotes} after a PR merges to move notes flagged
|
|
219
|
+
* with `promote_to_permanent` into the orphan store, and copy notes flagged
|
|
220
|
+
* with `archive_on_close` into `archive/`. {@link TwoLayerBackend.readNote}
|
|
221
|
+
* returns a single note's payload.
|
|
120
222
|
*/
|
|
121
223
|
export declare class TwoLayerBackend implements StateBackend {
|
|
122
224
|
readonly name = "two-layer";
|
|
123
|
-
|
|
124
|
-
|
|
225
|
+
readonly notes: GitNotesBackend;
|
|
226
|
+
readonly orphan: OrphanBranchBackend;
|
|
227
|
+
private readonly repoRoot;
|
|
125
228
|
constructor(repoRoot: string);
|
|
126
229
|
/** Read from orphan (the permanent store) */
|
|
127
230
|
read(key: string): string | undefined;
|
|
@@ -131,9 +234,51 @@ export declare class TwoLayerBackend implements StateBackend {
|
|
|
131
234
|
exists(key: string): boolean;
|
|
132
235
|
delete(key: string): boolean;
|
|
133
236
|
append(key: string, value: string): void;
|
|
237
|
+
/**
|
|
238
|
+
* Read a single git-notes payload as parsed JSON.
|
|
239
|
+
*
|
|
240
|
+
* Returns `null` if no note exists on the given commit for the given ref,
|
|
241
|
+
* or if the note body is not valid JSON.
|
|
242
|
+
*/
|
|
243
|
+
readNote(ref: string, commitSha: string): unknown | null;
|
|
244
|
+
/**
|
|
245
|
+
* Walk all notes attached to commits reachable from HEAD on the given ref
|
|
246
|
+
* and act based on their flags:
|
|
247
|
+
*
|
|
248
|
+
* - `promote_to_permanent: true` — write payload to the orphan layer under
|
|
249
|
+
* `promoted/<ref>/<sha>.json` and REMOVE the source note (the note has
|
|
250
|
+
* been promoted to permanent state and is no longer needed).
|
|
251
|
+
* - `archive_on_close: true` — copy payload to the orphan layer under
|
|
252
|
+
* `archive/<ref>/<sha>.json` and KEEP the source note (archive = copy).
|
|
253
|
+
* - Otherwise — leave the note alone (ephemeral, not worth promoting).
|
|
254
|
+
*
|
|
255
|
+
* Notes that fail to parse as JSON are counted as skipped.
|
|
256
|
+
*/
|
|
257
|
+
promoteNotes(ref: string): PromoteNotesResult;
|
|
258
|
+
/** True for refs that look like `squad/<name>` — alphanumerics, dash, underscore, slash. */
|
|
259
|
+
private isSafeRef;
|
|
260
|
+
/** True for SHA-1 hex (40 chars) or SHA-256 hex (64 chars). */
|
|
261
|
+
private isSafeCommitSha;
|
|
262
|
+
/** Pass the ref through as path segments; normalizeKey will validate each. */
|
|
263
|
+
private sanitizeRefForKey;
|
|
134
264
|
}
|
|
135
265
|
export interface StateBackendConfig {
|
|
136
266
|
stateBackend?: StateBackendType;
|
|
137
267
|
}
|
|
138
268
|
export declare function resolveStateBackend(squadDir: string, repoRoot: string, cliOverride?: StateBackendType): StateBackend;
|
|
269
|
+
/**
|
|
270
|
+
* Read-only health check for a state backend.
|
|
271
|
+
* Verifies the backend is accessible without mutating state.
|
|
272
|
+
*
|
|
273
|
+
* For {@link TwoLayerBackend}, both layers are probed independently — the
|
|
274
|
+
* notes layer can fail (corrupt notes ref, missing commits) even when the
|
|
275
|
+
* orphan layer is healthy, and we surface that explicitly.
|
|
276
|
+
*/
|
|
277
|
+
export declare function verifyStateBackend(backend: StateBackend): {
|
|
278
|
+
ok: boolean;
|
|
279
|
+
error?: string;
|
|
280
|
+
};
|
|
281
|
+
/** @internal Reset the one-shot git-notes migration warn flag. Only for use in tests. */
|
|
282
|
+
export declare function _resetGitNotesMigrationWarnForTesting(): void;
|
|
283
|
+
export {};
|
|
139
284
|
//# sourceMappingURL=state-backend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-backend.d.ts","sourceRoot":"","sources":["../src/state-backend.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"state-backend.d.ts","sourceRoot":"","sources":["../src/state-backend.ts"],"names":[],"mappings":"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"}
|