specweave 1.0.85 → 1.0.86
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/CLAUDE.md +24 -24
- package/dist/src/cli/commands/auto.d.ts +8 -0
- package/dist/src/cli/commands/auto.d.ts.map +1 -1
- package/dist/src/cli/commands/auto.js +117 -0
- package/dist/src/cli/commands/auto.js.map +1 -1
- package/dist/src/core/auto/types.d.ts +16 -0
- package/dist/src/core/auto/types.d.ts.map +1 -1
- package/dist/src/core/auto/types.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/commands/auto.md +230 -8
- package/plugins/specweave/commands/jobs.md +4 -2
- package/plugins/specweave/commands/progress.md +4 -2
- package/plugins/specweave/commands/status.md +4 -2
- package/plugins/specweave/hooks/validate-completion-conditions.sh +447 -0
package/CLAUDE.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<!-- SW:META template="claude" version="1.0.
|
|
1
|
+
<!-- SW:META template="claude" version="1.0.85" sections="header,start,autodetect,metarule,rules,workflow,context,lsp,structure,taskformat,secrets,syncing,mapping,testing,api,limits,troubleshooting,principles,linking,mcp,autoexecute,auto,docs" -->
|
|
2
2
|
|
|
3
|
-
<!-- SW:SECTION:header version="1.0.
|
|
3
|
+
<!-- SW:SECTION:header version="1.0.85" -->
|
|
4
4
|
**Framework**: SpecWeave | **Truth**: `spec.md` + `tasks.md`
|
|
5
5
|
<!-- SW:END:header -->
|
|
6
6
|
|
|
7
|
-
<!-- SW:SECTION:start version="1.0.
|
|
7
|
+
<!-- SW:SECTION:start version="1.0.85" -->
|
|
8
8
|
## Getting Started
|
|
9
9
|
|
|
10
10
|
**Initial increment**: `0001-project-setup` (auto-created by `specweave init`)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
2. **Customize**: Edit spec.md and use for setup tasks
|
|
15
15
|
<!-- SW:END:start -->
|
|
16
16
|
|
|
17
|
-
<!-- SW:SECTION:autodetect version="1.0.
|
|
17
|
+
<!-- SW:SECTION:autodetect version="1.0.85" -->
|
|
18
18
|
## Auto-Detection
|
|
19
19
|
|
|
20
20
|
SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
@@ -24,7 +24,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
24
24
|
**Opt-out phrases**: "Just brainstorm first" | "Don't plan yet" | "Quick discussion" | "Let's explore ideas"
|
|
25
25
|
<!-- SW:END:autodetect -->
|
|
26
26
|
|
|
27
|
-
<!-- SW:SECTION:metarule version="1.0.
|
|
27
|
+
<!-- SW:SECTION:metarule version="1.0.85" -->
|
|
28
28
|
## Meta-Rule: Think-Before-Act
|
|
29
29
|
|
|
30
30
|
**Satisfy dependencies BEFORE dependent operations.**
|
|
@@ -35,7 +35,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
35
35
|
```
|
|
36
36
|
<!-- SW:END:metarule -->
|
|
37
37
|
|
|
38
|
-
<!-- SW:SECTION:rules version="1.0.
|
|
38
|
+
<!-- SW:SECTION:rules version="1.0.85" -->
|
|
39
39
|
## Rules
|
|
40
40
|
|
|
41
41
|
1. **Files** → `.specweave/increments/####-name/` (spec.md, plan.md, tasks.md at root; reports/, scripts/, logs/ subfolders)
|
|
@@ -46,7 +46,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
46
46
|
6. **⛔ Increment cleanliness**: ONLY 4 files at increment root (metadata.json, spec.md, plan.md, tasks.md). ALL other .md files → `reports/`, logs → `logs/`, scripts → `scripts/`
|
|
47
47
|
<!-- SW:END:rules -->
|
|
48
48
|
|
|
49
|
-
<!-- SW:SECTION:workflow version="1.0.
|
|
49
|
+
<!-- SW:SECTION:workflow version="1.0.85" -->
|
|
50
50
|
## Workflow
|
|
51
51
|
|
|
52
52
|
`/sw:increment "X"` → `/sw:do` → `/sw:progress` → `/sw:done 0001`
|
|
@@ -66,7 +66,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
66
66
|
**Natural language**: "Let's build X" → `/sw:increment` | "What's status?" → `/sw:progress` | "We're done" → `/sw:done` | "Ship while sleeping" → `/sw:auto`
|
|
67
67
|
<!-- SW:END:workflow -->
|
|
68
68
|
|
|
69
|
-
<!-- SW:SECTION:context version="1.0.
|
|
69
|
+
<!-- SW:SECTION:context version="1.0.85" -->
|
|
70
70
|
## Living Docs Context
|
|
71
71
|
|
|
72
72
|
**Before implementing features**: Check existing docs for patterns and decisions.
|
|
@@ -86,7 +86,7 @@ grep -ril "keyword" .specweave/docs/internal/
|
|
|
86
86
|
**Use `/sw:context <topic>`** to load relevant living docs into conversation.
|
|
87
87
|
<!-- SW:END:context -->
|
|
88
88
|
|
|
89
|
-
<!-- SW:SECTION:lsp version="1.0.
|
|
89
|
+
<!-- SW:SECTION:lsp version="1.0.85" -->
|
|
90
90
|
## LSP-Enhanced Exploration
|
|
91
91
|
|
|
92
92
|
**USE LSP ACTIVELY** for semantic code understanding (100x faster than grep).
|
|
@@ -103,7 +103,7 @@ go install golang.org/x/tools/gopls@latest # Go
|
|
|
103
103
|
**Best Practices**: ALWAYS use `findReferences` before refactoring | Use `goToDefinition` instead of grep | Combine with Explore agent
|
|
104
104
|
<!-- SW:END:lsp -->
|
|
105
105
|
|
|
106
|
-
<!-- SW:SECTION:structure version="1.0.
|
|
106
|
+
<!-- SW:SECTION:structure version="1.0.85" -->
|
|
107
107
|
## Structure
|
|
108
108
|
|
|
109
109
|
```
|
|
@@ -173,7 +173,7 @@ my-project/
|
|
|
173
173
|
```
|
|
174
174
|
<!-- SW:END:structure -->
|
|
175
175
|
|
|
176
|
-
<!-- SW:SECTION:taskformat version="1.0.
|
|
176
|
+
<!-- SW:SECTION:taskformat version="1.0.85" -->
|
|
177
177
|
## Task Format
|
|
178
178
|
|
|
179
179
|
```markdown
|
|
@@ -183,7 +183,7 @@ my-project/
|
|
|
183
183
|
```
|
|
184
184
|
<!-- SW:END:taskformat -->
|
|
185
185
|
|
|
186
|
-
<!-- SW:SECTION:secrets version="1.0.
|
|
186
|
+
<!-- SW:SECTION:secrets version="1.0.85" -->
|
|
187
187
|
## Secrets Check
|
|
188
188
|
|
|
189
189
|
**BEFORE CLI tools**: Check existing config first!
|
|
@@ -194,7 +194,7 @@ gh auth status
|
|
|
194
194
|
```
|
|
195
195
|
<!-- SW:END:secrets -->
|
|
196
196
|
|
|
197
|
-
<!-- SW:SECTION:syncing version="1.0.
|
|
197
|
+
<!-- SW:SECTION:syncing version="1.0.85" -->
|
|
198
198
|
## External Sync (GitHub/JIRA/ADO)
|
|
199
199
|
|
|
200
200
|
**After increment creation**: Run `/sw-github:sync {id}` to create issues!
|
|
@@ -222,7 +222,7 @@ Living docs sync ≠ External sync. They are separate:
|
|
|
222
222
|
**Verify tokens**: `grep GITHUB_TOKEN .env` | `gh auth status`
|
|
223
223
|
<!-- SW:END:syncing -->
|
|
224
224
|
|
|
225
|
-
<!-- SW:SECTION:mapping version="1.0.
|
|
225
|
+
<!-- SW:SECTION:mapping version="1.0.85" -->
|
|
226
226
|
## GitHub Mapping
|
|
227
227
|
|
|
228
228
|
| SpecWeave | GitHub |
|
|
@@ -232,7 +232,7 @@ Living docs sync ≠ External sync. They are separate:
|
|
|
232
232
|
| Task T-XXX | Checkbox |
|
|
233
233
|
<!-- SW:END:mapping -->
|
|
234
234
|
|
|
235
|
-
<!-- SW:SECTION:testing version="1.0.
|
|
235
|
+
<!-- SW:SECTION:testing version="1.0.85" -->
|
|
236
236
|
## Testing
|
|
237
237
|
|
|
238
238
|
BDD in tasks.md | Unit >80% | `.test.ts` (Vitest)
|
|
@@ -244,7 +244,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
|
|
|
244
244
|
```
|
|
245
245
|
<!-- SW:END:testing -->
|
|
246
246
|
|
|
247
|
-
<!-- SW:SECTION:api version="1.0.
|
|
247
|
+
<!-- SW:SECTION:api version="1.0.85" -->
|
|
248
248
|
## API Development (OpenAPI-First)
|
|
249
249
|
|
|
250
250
|
**For API projects only.** OpenAPI = source of truth → Postman derived from it.
|
|
@@ -263,13 +263,13 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
|
|
|
263
263
|
**Import**: Postman → Import collection + env → Fill secrets → Select env
|
|
264
264
|
<!-- SW:END:api -->
|
|
265
265
|
|
|
266
|
-
<!-- SW:SECTION:limits version="1.0.
|
|
266
|
+
<!-- SW:SECTION:limits version="1.0.85" -->
|
|
267
267
|
## Limits
|
|
268
268
|
|
|
269
269
|
**Max 1500 lines/file** — extract before adding
|
|
270
270
|
<!-- SW:END:limits -->
|
|
271
271
|
|
|
272
|
-
<!-- SW:SECTION:troubleshooting version="1.0.
|
|
272
|
+
<!-- SW:SECTION:troubleshooting version="1.0.85" -->
|
|
273
273
|
## Troubleshooting
|
|
274
274
|
|
|
275
275
|
| Issue | Fix |
|
|
@@ -288,7 +288,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
|
|
|
288
288
|
| Path patterns not working | `//path` = absolute, `/path` = relative to settings file, `additionalDirectories` for explicit working dirs |
|
|
289
289
|
<!-- SW:END:troubleshooting -->
|
|
290
290
|
|
|
291
|
-
<!-- SW:SECTION:principles version="1.0.
|
|
291
|
+
<!-- SW:SECTION:principles version="1.0.85" -->
|
|
292
292
|
## Principles
|
|
293
293
|
|
|
294
294
|
1. **Spec-first**: `/sw:increment` before coding
|
|
@@ -298,7 +298,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
|
|
|
298
298
|
5. **Clean**: All files in increment folders
|
|
299
299
|
<!-- SW:END:principles -->
|
|
300
300
|
|
|
301
|
-
<!-- SW:SECTION:linking version="1.0.
|
|
301
|
+
<!-- SW:SECTION:linking version="1.0.85" -->
|
|
302
302
|
## Bidirectional Linking
|
|
303
303
|
|
|
304
304
|
Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
|
|
@@ -306,7 +306,7 @@ Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
|
|
|
306
306
|
Task format: `**AC**: AC-US1-01, AC-US1-02` (CRITICAL for linking)
|
|
307
307
|
<!-- SW:END:linking -->
|
|
308
308
|
|
|
309
|
-
<!-- SW:SECTION:mcp version="1.0.
|
|
309
|
+
<!-- SW:SECTION:mcp version="1.0.85" -->
|
|
310
310
|
## External Service Connection
|
|
311
311
|
|
|
312
312
|
**Priority**: MCP Server → REST API → CLI → Direct Connection
|
|
@@ -330,7 +330,7 @@ wrangler whoami 2>/dev/null
|
|
|
330
330
|
```
|
|
331
331
|
<!-- SW:END:mcp -->
|
|
332
332
|
|
|
333
|
-
<!-- SW:SECTION:autoexecute version="1.0.
|
|
333
|
+
<!-- SW:SECTION:autoexecute version="1.0.85" -->
|
|
334
334
|
## Auto-Execute Rule
|
|
335
335
|
|
|
336
336
|
**NEVER** output "Manual Step Required" when credentials exist. **EXECUTE DIRECTLY.**
|
|
@@ -344,7 +344,7 @@ wrangler whoami 2>/dev/null && gh auth status 2>/dev/null
|
|
|
344
344
|
```
|
|
345
345
|
<!-- SW:END:autoexecute -->
|
|
346
346
|
|
|
347
|
-
<!-- SW:SECTION:auto version="1.0.
|
|
347
|
+
<!-- SW:SECTION:auto version="1.0.85" -->
|
|
348
348
|
## Auto Mode (Autonomous Execution)
|
|
349
349
|
|
|
350
350
|
**Continuous execution until all tasks complete.**
|
|
@@ -417,7 +417,7 @@ wrangler whoami 2>/dev/null && gh auth status 2>/dev/null
|
|
|
417
417
|
**Circuit Breaker**: External API fails 3x? Queue & continue
|
|
418
418
|
<!-- SW:END:auto -->
|
|
419
419
|
|
|
420
|
-
<!-- SW:SECTION:docs version="1.0.
|
|
420
|
+
<!-- SW:SECTION:docs version="1.0.85" -->
|
|
421
421
|
## Docs
|
|
422
422
|
|
|
423
423
|
[spec-weave.com](https://spec-weave.com) | `.specweave/docs/internal/`
|
|
@@ -27,6 +27,14 @@ export interface AutoCommandOptions {
|
|
|
27
27
|
y?: boolean;
|
|
28
28
|
tdd?: boolean;
|
|
29
29
|
strict?: boolean;
|
|
30
|
+
build?: boolean;
|
|
31
|
+
tests?: boolean;
|
|
32
|
+
e2e?: boolean;
|
|
33
|
+
lint?: boolean;
|
|
34
|
+
types?: boolean;
|
|
35
|
+
cov?: string;
|
|
36
|
+
e2eCov?: string;
|
|
37
|
+
cmd?: string;
|
|
30
38
|
}
|
|
31
39
|
export declare function createAutoCommand(): Command;
|
|
32
40
|
//# sourceMappingURL=auto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAgD3C"}
|
|
@@ -34,6 +34,15 @@ export function createAutoCommand() {
|
|
|
34
34
|
.option('-y', 'Alias for --yes')
|
|
35
35
|
.option('--tdd', 'Enable TDD strict mode - ALL tests must pass')
|
|
36
36
|
.option('--strict', 'Alias for --tdd')
|
|
37
|
+
// Completion condition flags (v0.4.0+)
|
|
38
|
+
.option('--build', 'Build must pass before completion')
|
|
39
|
+
.option('--tests', 'Tests must pass before completion (unit + integration)')
|
|
40
|
+
.option('--e2e', 'E2E tests must pass before completion')
|
|
41
|
+
.option('--lint', 'Linting must pass before completion')
|
|
42
|
+
.option('--types', 'Type-checking must pass before completion')
|
|
43
|
+
.option('--cov <n>', 'Code coverage must meet threshold (%)', '80')
|
|
44
|
+
.option('--e2e-cov <n>', 'E2E coverage must meet threshold (%)', '70')
|
|
45
|
+
.option('--cmd <command>', 'Custom command must pass before completion')
|
|
37
46
|
.action(async (incrementIds, options) => {
|
|
38
47
|
const projectPath = process.cwd();
|
|
39
48
|
// Check if SpecWeave is initialized
|
|
@@ -80,6 +89,68 @@ async function handleAutoCommand(projectPath, incrementIds, options) {
|
|
|
80
89
|
const prompt = options.prompt;
|
|
81
90
|
const autoApprove = options.yes || options.y || false;
|
|
82
91
|
const tddMode = options.tdd || options.strict || false;
|
|
92
|
+
// Parse completion conditions (v0.4.0+)
|
|
93
|
+
const completionConditions = [];
|
|
94
|
+
if (options.build) {
|
|
95
|
+
completionConditions.push({
|
|
96
|
+
type: 'build',
|
|
97
|
+
autoHeal: true,
|
|
98
|
+
maxRetries: 3,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (options.tests || tddMode) {
|
|
102
|
+
completionConditions.push({
|
|
103
|
+
type: 'tests',
|
|
104
|
+
autoHeal: false, // Tests must be fixed manually
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (options.e2e) {
|
|
108
|
+
completionConditions.push({
|
|
109
|
+
type: 'e2e',
|
|
110
|
+
autoHeal: false, // E2E tests must be fixed manually
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (options.lint) {
|
|
114
|
+
completionConditions.push({
|
|
115
|
+
type: 'lint',
|
|
116
|
+
autoHeal: true,
|
|
117
|
+
maxRetries: 3,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (options.types) {
|
|
121
|
+
completionConditions.push({
|
|
122
|
+
type: 'types',
|
|
123
|
+
autoHeal: true,
|
|
124
|
+
maxRetries: 3,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (options.cov) {
|
|
128
|
+
const threshold = parseInt(options.cov, 10);
|
|
129
|
+
if (threshold > 0 && threshold <= 100) {
|
|
130
|
+
completionConditions.push({
|
|
131
|
+
type: 'coverage',
|
|
132
|
+
threshold,
|
|
133
|
+
autoHeal: false,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (options.e2eCov) {
|
|
138
|
+
const threshold = parseInt(options.e2eCov, 10);
|
|
139
|
+
if (threshold > 0 && threshold <= 100) {
|
|
140
|
+
completionConditions.push({
|
|
141
|
+
type: 'e2e-coverage',
|
|
142
|
+
threshold,
|
|
143
|
+
autoHeal: false,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (options.cmd) {
|
|
148
|
+
completionConditions.push({
|
|
149
|
+
type: 'command',
|
|
150
|
+
cmd: options.cmd,
|
|
151
|
+
autoHeal: false, // Custom commands must pass as-is
|
|
152
|
+
});
|
|
153
|
+
}
|
|
83
154
|
// Parse increment IDs from args or --increments option
|
|
84
155
|
let finalIncrementIds = [...incrementIds];
|
|
85
156
|
if (options.increments) {
|
|
@@ -172,6 +243,10 @@ async function handleAutoCommand(projectPath, incrementIds, options) {
|
|
|
172
243
|
if (tddMode) {
|
|
173
244
|
session.tddMode = true;
|
|
174
245
|
}
|
|
246
|
+
// Add completion conditions if provided (v0.4.0+)
|
|
247
|
+
if (completionConditions.length > 0) {
|
|
248
|
+
session.completionConditions = completionConditions;
|
|
249
|
+
}
|
|
175
250
|
// Add skip gates if provided
|
|
176
251
|
if (skipGates.length > 0) {
|
|
177
252
|
session.humanGates.approved = skipGates;
|
|
@@ -211,6 +286,45 @@ async function handleAutoCommand(projectPath, incrementIds, options) {
|
|
|
211
286
|
console.log(chalk.red(' ALL tests MUST pass before auto mode can complete'));
|
|
212
287
|
console.log(chalk.red('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
213
288
|
}
|
|
289
|
+
// Display completion conditions (v0.4.0+)
|
|
290
|
+
if (completionConditions.length > 0) {
|
|
291
|
+
console.log('');
|
|
292
|
+
console.log(chalk.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
293
|
+
console.log(chalk.yellow('⚙️ COMPLETION CONDITIONS'));
|
|
294
|
+
console.log(chalk.yellow(' Auto mode will NOT stop until ALL conditions pass:'));
|
|
295
|
+
console.log('');
|
|
296
|
+
for (const condition of completionConditions) {
|
|
297
|
+
let description = '';
|
|
298
|
+
switch (condition.type) {
|
|
299
|
+
case 'build':
|
|
300
|
+
description = '🔨 Build must pass (auto-heal enabled, max 3 retries)';
|
|
301
|
+
break;
|
|
302
|
+
case 'tests':
|
|
303
|
+
description = '✅ Tests must pass (unit + integration)';
|
|
304
|
+
break;
|
|
305
|
+
case 'e2e':
|
|
306
|
+
description = '🎭 E2E tests must pass';
|
|
307
|
+
break;
|
|
308
|
+
case 'lint':
|
|
309
|
+
description = '🧹 Linting must pass (auto-heal enabled, max 3 retries)';
|
|
310
|
+
break;
|
|
311
|
+
case 'types':
|
|
312
|
+
description = '📘 Type-checking must pass (auto-heal enabled, max 3 retries)';
|
|
313
|
+
break;
|
|
314
|
+
case 'coverage':
|
|
315
|
+
description = `📊 Code coverage must be ≥${condition.threshold}%`;
|
|
316
|
+
break;
|
|
317
|
+
case 'e2e-coverage':
|
|
318
|
+
description = `🎯 E2E coverage must be ≥${condition.threshold}%`;
|
|
319
|
+
break;
|
|
320
|
+
case 'command':
|
|
321
|
+
description = `⚡ Command must pass: ${condition.cmd}`;
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
console.log(' • ' + description);
|
|
325
|
+
}
|
|
326
|
+
console.log(chalk.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
327
|
+
}
|
|
214
328
|
console.log('');
|
|
215
329
|
console.log(`Increment Queue (${finalIncrementIds.length}):`);
|
|
216
330
|
for (const incId of finalIncrementIds) {
|
|
@@ -224,6 +338,9 @@ async function handleAutoCommand(projectPath, incrementIds, options) {
|
|
|
224
338
|
if (tddMode) {
|
|
225
339
|
console.log(chalk.red(' • (TDD MODE: 100% tests GREEN required)'));
|
|
226
340
|
}
|
|
341
|
+
if (completionConditions.length > 0) {
|
|
342
|
+
console.log(chalk.yellow(` • ALL ${completionConditions.length} completion conditions pass`));
|
|
343
|
+
}
|
|
227
344
|
console.log(` • Max iterations (${maxIterations}) reached`);
|
|
228
345
|
if (maxHours) {
|
|
229
346
|
console.log(` • Max hours (${maxHours}) exceeded`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../../src/cli/commands/auto.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../../../src/cli/commands/auto.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,20 @@ export interface HumanGateRequest {
|
|
|
24
24
|
timeout: number;
|
|
25
25
|
context?: string;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Completion condition types for auto mode
|
|
29
|
+
* Determines when auto mode can complete
|
|
30
|
+
*/
|
|
31
|
+
export type CompletionConditionType = 'build' | 'tests' | 'e2e' | 'lint' | 'types' | 'coverage' | 'e2e-coverage' | 'command';
|
|
32
|
+
export interface CompletionCondition {
|
|
33
|
+
type: CompletionConditionType;
|
|
34
|
+
threshold?: number;
|
|
35
|
+
cmd?: string;
|
|
36
|
+
autoHeal?: boolean;
|
|
37
|
+
maxRetries?: number;
|
|
38
|
+
framework?: string;
|
|
39
|
+
detectedCommand?: string;
|
|
40
|
+
}
|
|
27
41
|
export interface AutoSession {
|
|
28
42
|
sessionId: string;
|
|
29
43
|
status: AutoSessionStatus;
|
|
@@ -41,6 +55,8 @@ export interface AutoSession {
|
|
|
41
55
|
lastActivity: string;
|
|
42
56
|
endReason?: string;
|
|
43
57
|
simple?: boolean;
|
|
58
|
+
completionConditions?: CompletionCondition[];
|
|
59
|
+
tddMode?: boolean;
|
|
44
60
|
}
|
|
45
61
|
export interface AutoConfig {
|
|
46
62
|
enabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/auto/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5F,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/auto/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/auto/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/auto/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2JH,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,GAAG;IAClB,QAAQ,EAAE,GAAG;IACb,WAAW,EAAE,UAAU;IACvB,iBAAiB,EAAE,EAAE;IACrB,gBAAgB,EAAE,KAAK;IACvB,UAAU,EAAE;QACV,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;QACzF,OAAO,EAAE,IAAI,EAAE,aAAa;QAC5B,gBAAgB,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,mBAAmB,CAAC;KACpE;IACD,eAAe,EAAE;QACf,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE,GAAG,EAAE,YAAY;KAChC;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,GAAG,EAAE,YAAY;QAChC,eAAe,EAAE,IAAI;KACtB;IACD,qBAAqB,EAAE,IAAI;CAC5B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.86",
|
|
4
4
|
"description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -43,6 +43,14 @@ description: Start autonomous execution session with stop hook integration. Work
|
|
|
43
43
|
| `--prompt "text"` | Analyze prompt and create increments (intelligent chunking) | None |
|
|
44
44
|
| `--yes`, `-y` | Auto-approve increment plan (skip user approval) | false |
|
|
45
45
|
| `--tdd`, `--strict` | **NEW v2.2**: Enable TDD strict mode - ALL tests must pass | false |
|
|
46
|
+
| **`--build`** | **NEW v0.4.0**: Build must pass before completion (auto-heal: 3 retries) | false |
|
|
47
|
+
| **`--tests`** | **NEW v0.4.0**: Tests must pass before completion (unit + integration) | false |
|
|
48
|
+
| **`--e2e`** | **NEW v0.4.0**: E2E tests must pass before completion | false |
|
|
49
|
+
| **`--lint`** | **NEW v0.4.0**: Linting must pass before completion (auto-heal: 3 retries) | false |
|
|
50
|
+
| **`--types`** | **NEW v0.4.0**: Type-checking must pass before completion (auto-heal: 3 retries) | false |
|
|
51
|
+
| **`--cov <n>`** | **NEW v0.4.0**: Code coverage must meet threshold (%) | 80 |
|
|
52
|
+
| **`--e2e-cov <n>`** | **NEW v0.4.0**: E2E coverage must meet threshold (%) | 70 |
|
|
53
|
+
| **`--cmd "<command>"`** | **NEW v0.4.0**: Custom command must pass before completion | None |
|
|
46
54
|
|
|
47
55
|
:::warning v2.3 - Iteration limits are SAFETY NETS
|
|
48
56
|
The primary completion criteria is **tests passing + tasks complete**. Iteration limits (2500 iterations, 600 hours) are backup safety nets. Per the Ralph Wiggum pattern, completion should be detected through **external verification** (test results), not self-assessment.
|
|
@@ -50,6 +58,218 @@ The primary completion criteria is **tests passing + tasks complete**. Iteration
|
|
|
50
58
|
**IMPORTANT: Stop hook runs PER AGENT** - Each spawned subagent gets its own hook invocation. Iteration count is shared via session file, reflecting main agent loops.
|
|
51
59
|
:::
|
|
52
60
|
|
|
61
|
+
## Completion Conditions (v0.4.0+)
|
|
62
|
+
|
|
63
|
+
**Auto mode will NOT stop until ALL specified conditions pass.**
|
|
64
|
+
|
|
65
|
+
### What Are Completion Conditions?
|
|
66
|
+
|
|
67
|
+
Completion conditions are **quality gates** that prevent auto mode from completing until specific checks pass:
|
|
68
|
+
|
|
69
|
+
- **`--build`**: Build must succeed (auto-heal enabled, max 3 retries)
|
|
70
|
+
- **`--tests`**: All tests must pass (unit + integration tests)
|
|
71
|
+
- **`--e2e`**: E2E tests must pass (Playwright, Cypress, etc.)
|
|
72
|
+
- **`--lint`**: Linting must pass (ESLint, Black, Clippy, etc.)
|
|
73
|
+
- **`--types`**: Type-checking must pass (TypeScript, mypy, etc.)
|
|
74
|
+
- **`--cov N`**: Code coverage must meet threshold (e.g., `--cov 80` = 80% minimum)
|
|
75
|
+
- **`--e2e-cov N`**: E2E coverage must meet threshold
|
|
76
|
+
- **`--cmd "..."`**: Custom command must pass (e.g., `--cmd "make verify"`)
|
|
77
|
+
|
|
78
|
+
### Auto-Heal vs Manual Fix
|
|
79
|
+
|
|
80
|
+
| Condition | Auto-Heal? | Behavior |
|
|
81
|
+
|-----------|-----------|----------|
|
|
82
|
+
| `--build` | ✅ Yes (3 retries) | Build failures auto-fixed by LLM |
|
|
83
|
+
| `--lint` | ✅ Yes (3 retries) | Lint errors auto-fixed by LLM |
|
|
84
|
+
| `--types` | ✅ Yes (3 retries) | Type errors auto-fixed by LLM |
|
|
85
|
+
| `--tests` | ❌ No | Tests must be fixed manually by LLM |
|
|
86
|
+
| `--e2e` | ❌ No | E2E tests must be fixed manually |
|
|
87
|
+
| `--cov` | ❌ No | Must write more tests to meet threshold |
|
|
88
|
+
| `--cmd` | ❌ No | Custom commands run as-is |
|
|
89
|
+
|
|
90
|
+
**Auto-heal** means the hook will:
|
|
91
|
+
1. Run the command
|
|
92
|
+
2. If it fails, ask LLM to fix the issue
|
|
93
|
+
3. Retry up to 3 times
|
|
94
|
+
4. Block completion if still failing after 3 attempts
|
|
95
|
+
|
|
96
|
+
**Manual fix** means:
|
|
97
|
+
1. Run the command
|
|
98
|
+
2. If it fails, BLOCK immediately
|
|
99
|
+
3. LLM must fix the issue manually
|
|
100
|
+
4. Re-run to validate
|
|
101
|
+
|
|
102
|
+
### Framework Auto-Detection
|
|
103
|
+
|
|
104
|
+
Commands are auto-detected based on your project structure:
|
|
105
|
+
|
|
106
|
+
**TypeScript/Node:**
|
|
107
|
+
```bash
|
|
108
|
+
# Detected from package.json, jest.config.js, vitest.config.ts
|
|
109
|
+
build: npm run build
|
|
110
|
+
tests: npm test OR npx vitest run
|
|
111
|
+
e2e: npx playwright test OR npx cypress run
|
|
112
|
+
lint: npm run lint OR npx eslint .
|
|
113
|
+
types: npx tsc --noEmit
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Python:**
|
|
117
|
+
```bash
|
|
118
|
+
# Detected from requirements.txt, pyproject.toml, pytest.ini
|
|
119
|
+
build: python -m build
|
|
120
|
+
tests: pytest
|
|
121
|
+
e2e: (none)
|
|
122
|
+
lint: black --check . OR flake8
|
|
123
|
+
types: mypy .
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Go:**
|
|
127
|
+
```bash
|
|
128
|
+
# Detected from go.mod
|
|
129
|
+
build: go build ./...
|
|
130
|
+
tests: go test ./...
|
|
131
|
+
lint: golangci-lint run
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Rust:**
|
|
135
|
+
```bash
|
|
136
|
+
# Detected from Cargo.toml
|
|
137
|
+
build: cargo build
|
|
138
|
+
tests: cargo test
|
|
139
|
+
lint: cargo clippy
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Example Usage
|
|
143
|
+
|
|
144
|
+
**Basic - Build + Tests:**
|
|
145
|
+
```bash
|
|
146
|
+
/sw:auto --build --tests
|
|
147
|
+
# → Auto mode will NOT stop until build passes AND all tests pass
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Strict Quality:**
|
|
151
|
+
```bash
|
|
152
|
+
/sw:auto --build --tests --e2e --lint --types --cov 80
|
|
153
|
+
# → ALL conditions must pass:
|
|
154
|
+
# ✅ Build succeeds
|
|
155
|
+
# ✅ Tests pass
|
|
156
|
+
# ✅ E2E tests pass
|
|
157
|
+
# ✅ Lint passes
|
|
158
|
+
# ✅ Type-check passes
|
|
159
|
+
# ✅ Coverage ≥80%
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Custom Command:**
|
|
163
|
+
```bash
|
|
164
|
+
/sw:auto --cmd "make verify"
|
|
165
|
+
# → Auto mode will run `make verify` before completion
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Combined with Other Flags:**
|
|
169
|
+
```bash
|
|
170
|
+
/sw:auto --prompt "Build auth system" --yes --build --tests --cov 85
|
|
171
|
+
# → Intelligent chunking + auto-approve + quality gates
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Session Output
|
|
175
|
+
|
|
176
|
+
When you start auto mode with completion conditions, you'll see:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
🚀 Auto Session Started
|
|
180
|
+
|
|
181
|
+
Session ID: auto-2026-01-04-abc123
|
|
182
|
+
Max Iterations: 2500
|
|
183
|
+
Max Hours: 600
|
|
184
|
+
Simple Mode: false
|
|
185
|
+
|
|
186
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
187
|
+
⚙️ COMPLETION CONDITIONS
|
|
188
|
+
Auto mode will NOT stop until ALL conditions pass:
|
|
189
|
+
|
|
190
|
+
• 🔨 Build must pass (auto-heal enabled, max 3 retries)
|
|
191
|
+
• ✅ Tests must pass (unit + integration)
|
|
192
|
+
• 🎭 E2E tests must pass
|
|
193
|
+
• 📊 Code coverage must be ≥80%
|
|
194
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
195
|
+
|
|
196
|
+
Increment Queue (1):
|
|
197
|
+
• 0001-auth-system
|
|
198
|
+
|
|
199
|
+
Current: 0001-auth-system
|
|
200
|
+
|
|
201
|
+
The session will continue until:
|
|
202
|
+
• All tasks complete AND tests pass
|
|
203
|
+
• ALL 4 completion conditions pass
|
|
204
|
+
• Max iterations (2500) reached
|
|
205
|
+
• Max hours (600) exceeded
|
|
206
|
+
• You run specweave cancel-auto
|
|
207
|
+
• A human gate requires approval
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Stop Hook Validation
|
|
211
|
+
|
|
212
|
+
The stop hook (`stop-auto.sh`) validates completion conditions:
|
|
213
|
+
|
|
214
|
+
1. **Before allowing completion**, the hook runs:
|
|
215
|
+
```bash
|
|
216
|
+
plugins/specweave/hooks/validate-completion-conditions.sh
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
2. **For each condition**:
|
|
220
|
+
- Auto-detects the framework-specific command
|
|
221
|
+
- Runs the command
|
|
222
|
+
- Parses the output
|
|
223
|
+
- If auto-heal enabled, retries on failure (max 3x)
|
|
224
|
+
- BLOCKS completion if ANY condition fails
|
|
225
|
+
|
|
226
|
+
3. **Only when ALL conditions pass**:
|
|
227
|
+
- Hook approves completion
|
|
228
|
+
- Auto mode stops successfully
|
|
229
|
+
- Celebration sound plays 🎉
|
|
230
|
+
|
|
231
|
+
### Per-Increment Override
|
|
232
|
+
|
|
233
|
+
You can override completion conditions per increment in `metadata.json`:
|
|
234
|
+
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"increment": "0001-auth-system",
|
|
238
|
+
"autoCompletion": {
|
|
239
|
+
"conditions": [
|
|
240
|
+
{ "type": "build" },
|
|
241
|
+
{ "type": "tests" },
|
|
242
|
+
{ "type": "coverage", "threshold": 90 }
|
|
243
|
+
],
|
|
244
|
+
"override": true
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
When `override: true`, the increment-specific conditions replace the session-level conditions.
|
|
250
|
+
|
|
251
|
+
### Troubleshooting
|
|
252
|
+
|
|
253
|
+
**Issue**: "Build command not detected"
|
|
254
|
+
- **Fix**: Add `scripts.build` to `package.json` OR use `--cmd "your-build-cmd"`
|
|
255
|
+
|
|
256
|
+
**Issue**: "Tests pass but coverage below threshold"
|
|
257
|
+
- **Fix**: Write more tests to cover untested code paths
|
|
258
|
+
|
|
259
|
+
**Issue**: "Auto-heal keeps retrying but failing"
|
|
260
|
+
- **Fix**: After 3 retries, the hook will BLOCK. Fix the issue manually, then resume.
|
|
261
|
+
|
|
262
|
+
**Issue**: "E2E tests not detected"
|
|
263
|
+
- **Fix**: Ensure `playwright.config.ts` or `cypress.config.js` exists
|
|
264
|
+
|
|
265
|
+
### Best Practices
|
|
266
|
+
|
|
267
|
+
1. **Start Simple**: Use `--build --tests` for basic quality gates
|
|
268
|
+
2. **Add Coverage Gradually**: Start with `--cov 70`, increase to 80-90 over time
|
|
269
|
+
3. **Use Auto-Heal**: Let build/lint/types auto-fix (saves manual work)
|
|
270
|
+
4. **Don't Skip E2E**: Use `--e2e` for user-facing features
|
|
271
|
+
5. **Custom Commands**: Use `--cmd` for project-specific checks (e.g., security scans)
|
|
272
|
+
|
|
53
273
|
## Intelligent Increment Creation (NEW!)
|
|
54
274
|
|
|
55
275
|
**Auto mode now creates increments automatically when none exist!**
|
|
@@ -1159,10 +1379,12 @@ When this command is invoked:
|
|
|
1159
1379
|
**Execute this IMMEDIATELY when /sw:auto is invoked:**
|
|
1160
1380
|
|
|
1161
1381
|
```bash
|
|
1162
|
-
|
|
1382
|
+
specweave auto [INCREMENT_IDS...] [OPTIONS]
|
|
1163
1383
|
```
|
|
1164
1384
|
|
|
1165
|
-
|
|
1385
|
+
**IMPORTANT**: The command is executed via the globally-installed `specweave` CLI, NOT bash scripts. This ensures cross-platform compatibility (Windows, macOS, Linux).
|
|
1386
|
+
|
|
1387
|
+
Pass any arguments from the user (increment IDs, completion conditions, --max-iterations, --simple, etc.)
|
|
1166
1388
|
|
|
1167
1389
|
**Handle exit codes:**
|
|
1168
1390
|
- `0`: Success, session created → proceed to Step 3
|
|
@@ -1190,9 +1412,9 @@ Pass any arguments from the user (increment IDs, --max-iterations, --simple, etc
|
|
|
1190
1412
|
```bash
|
|
1191
1413
|
# User said: "work on the login feature"
|
|
1192
1414
|
# Found: .specweave/increments/0002-user-login-system (status: planned)
|
|
1193
|
-
# Action: Activate it and run
|
|
1415
|
+
# Action: Activate it and run specweave auto with 0002
|
|
1194
1416
|
/sw:resume 0002
|
|
1195
|
-
|
|
1417
|
+
specweave auto 0002 [other-args]
|
|
1196
1418
|
```
|
|
1197
1419
|
|
|
1198
1420
|
**B. Extend existing increment:**
|
|
@@ -1201,7 +1423,7 @@ Pass any arguments from the user (increment IDs, --max-iterations, --simple, etc
|
|
|
1201
1423
|
# Found: .specweave/increments/0001-authentication (status: active, incomplete)
|
|
1202
1424
|
# Action: Add tasks to existing increment, use it for auto mode
|
|
1203
1425
|
# Edit tasks.md to add new tasks
|
|
1204
|
-
|
|
1426
|
+
specweave auto 0001 [other-args]
|
|
1205
1427
|
```
|
|
1206
1428
|
|
|
1207
1429
|
**C. Create new increment(s):**
|
|
@@ -1210,8 +1432,8 @@ Pass any arguments from the user (increment IDs, --max-iterations, --simple, etc
|
|
|
1210
1432
|
# No matching increments found
|
|
1211
1433
|
# Action: Create new increment via /sw:increment
|
|
1212
1434
|
/sw:increment "Payment integration with Stripe - support card payments, webhooks, and subscription management"
|
|
1213
|
-
# Then run
|
|
1214
|
-
|
|
1435
|
+
# Then run specweave auto with the new increment ID
|
|
1436
|
+
specweave auto 0003-payment-integration [other-args]
|
|
1215
1437
|
```
|
|
1216
1438
|
|
|
1217
1439
|
**D. Multiple increments:**
|
|
@@ -1219,7 +1441,7 @@ Pass any arguments from the user (increment IDs, --max-iterations, --simple, etc
|
|
|
1219
1441
|
# User said: "finish all pending features"
|
|
1220
1442
|
# Found: multiple backlog/planned increments
|
|
1221
1443
|
# Action: Create queue
|
|
1222
|
-
|
|
1444
|
+
specweave auto 0002-dashboard 0003-reports 0004-export [other-args]
|
|
1223
1445
|
```
|
|
1224
1446
|
|
|
1225
1447
|
**E. Ask user (if ambiguous):**
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
name: sw:jobs
|
|
3
3
|
description: Show current work status (active increments, progress) and background jobs (imports, cloning). Even with no jobs, shows increment summary and helpful context.
|
|
4
4
|
usage: /sw:jobs [--all] [--id <job-id>]
|
|
5
|
-
allowed-tools: Bash(
|
|
5
|
+
allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/read-jobs.sh)"]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Background Jobs Monitor
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
```!
|
|
11
|
+
bash "${CLAUDE_PLUGIN_ROOT}/scripts/read-jobs.sh" $ARGUMENTS
|
|
12
|
+
```
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
name: sw:progress
|
|
3
3
|
description: Show progress for all active increments with task completion status
|
|
4
4
|
usage: /sw:progress [incrementId]
|
|
5
|
-
allowed-tools: Bash(
|
|
5
|
+
allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/read-progress.sh)"]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Increment Progress
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
```!
|
|
11
|
+
bash "${CLAUDE_PLUGIN_ROOT}/scripts/read-progress.sh" $ARGUMENTS
|
|
12
|
+
```
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
name: sw:status
|
|
3
3
|
description: Show increment status overview with rich details (active, backlog, paused, completed, abandoned)
|
|
4
4
|
usage: /sw:status [--active|--backlog|--paused|--completed|--abandoned|--stale]
|
|
5
|
-
allowed-tools: Bash(
|
|
5
|
+
allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/read-status.sh)"]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Increment Status
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
```!
|
|
11
|
+
bash "${CLAUDE_PLUGIN_ROOT}/scripts/read-status.sh" $ARGUMENTS
|
|
12
|
+
```
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# validate-completion-conditions.sh
|
|
3
|
+
# Validates completion conditions for auto mode (v0.4.0+)
|
|
4
|
+
#
|
|
5
|
+
# Reads session.completionConditions from auto-session.json
|
|
6
|
+
# Validates each condition (build, tests, e2e, lint, types, coverage, custom command)
|
|
7
|
+
# Auto-detects framework-specific commands
|
|
8
|
+
# Implements self-healing for build/lint failures (max 3 retries)
|
|
9
|
+
# Returns exit code 0 if ALL conditions pass, 1 if ANY fail
|
|
10
|
+
#
|
|
11
|
+
# Usage: validate-completion-conditions.sh <SESSION_FILE> <TRANSCRIPT_PATH>
|
|
12
|
+
|
|
13
|
+
set -e
|
|
14
|
+
|
|
15
|
+
SESSION_FILE="$1"
|
|
16
|
+
TRANSCRIPT_PATH="$2"
|
|
17
|
+
|
|
18
|
+
if [ ! -f "$SESSION_FILE" ]; then
|
|
19
|
+
echo "Session file not found: $SESSION_FILE" >&2
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
# Check if completionConditions exist in session
|
|
24
|
+
HAS_CONDITIONS=$(jq -r 'has("completionConditions")' "$SESSION_FILE" 2>/dev/null || echo "false")
|
|
25
|
+
|
|
26
|
+
if [ "$HAS_CONDITIONS" = "false" ] || [ "$(jq -r '.completionConditions | length' "$SESSION_FILE" 2>/dev/null || echo "0")" = "0" ]; then
|
|
27
|
+
# No completion conditions - pass validation
|
|
28
|
+
exit 0
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# ============================================================================
|
|
32
|
+
# FRAMEWORK DETECTION
|
|
33
|
+
# Auto-detect build/test/lint commands based on project files
|
|
34
|
+
# ============================================================================
|
|
35
|
+
|
|
36
|
+
detect_framework() {
|
|
37
|
+
if [ -f "package.json" ]; then
|
|
38
|
+
echo "npm"
|
|
39
|
+
elif [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then
|
|
40
|
+
echo "python"
|
|
41
|
+
elif [ -f "go.mod" ]; then
|
|
42
|
+
echo "go"
|
|
43
|
+
elif [ -f "Cargo.toml" ]; then
|
|
44
|
+
echo "rust"
|
|
45
|
+
elif [ -f "pom.xml" ]; then
|
|
46
|
+
echo "maven"
|
|
47
|
+
elif [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
|
|
48
|
+
echo "gradle"
|
|
49
|
+
else
|
|
50
|
+
echo "unknown"
|
|
51
|
+
fi
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
detect_command() {
|
|
55
|
+
local condition_type="$1"
|
|
56
|
+
local framework=$(detect_framework)
|
|
57
|
+
|
|
58
|
+
case "$condition_type" in
|
|
59
|
+
build)
|
|
60
|
+
case "$framework" in
|
|
61
|
+
npm)
|
|
62
|
+
if jq -e '.scripts.build' package.json &>/dev/null; then
|
|
63
|
+
echo "npm run build"
|
|
64
|
+
else
|
|
65
|
+
echo "" # No build command
|
|
66
|
+
fi
|
|
67
|
+
;;
|
|
68
|
+
python)
|
|
69
|
+
if [ -f "pyproject.toml" ]; then
|
|
70
|
+
echo "python -m build"
|
|
71
|
+
else
|
|
72
|
+
echo ""
|
|
73
|
+
fi
|
|
74
|
+
;;
|
|
75
|
+
go)
|
|
76
|
+
echo "go build ./..."
|
|
77
|
+
;;
|
|
78
|
+
rust)
|
|
79
|
+
echo "cargo build"
|
|
80
|
+
;;
|
|
81
|
+
maven)
|
|
82
|
+
echo "mvn compile"
|
|
83
|
+
;;
|
|
84
|
+
gradle)
|
|
85
|
+
echo "./gradlew build"
|
|
86
|
+
;;
|
|
87
|
+
*)
|
|
88
|
+
echo ""
|
|
89
|
+
;;
|
|
90
|
+
esac
|
|
91
|
+
;;
|
|
92
|
+
tests)
|
|
93
|
+
case "$framework" in
|
|
94
|
+
npm)
|
|
95
|
+
if jq -e '.scripts.test' package.json &>/dev/null; then
|
|
96
|
+
echo "npm test"
|
|
97
|
+
elif [ -f "vitest.config.ts" ] || [ -f "vitest.config.js" ]; then
|
|
98
|
+
echo "npx vitest run"
|
|
99
|
+
elif [ -f "jest.config.js" ] || [ -f "jest.config.ts" ]; then
|
|
100
|
+
echo "npx jest"
|
|
101
|
+
else
|
|
102
|
+
echo "npm test"
|
|
103
|
+
fi
|
|
104
|
+
;;
|
|
105
|
+
python)
|
|
106
|
+
if [ -f "pytest.ini" ] || grep -q pytest requirements.txt 2>/dev/null; then
|
|
107
|
+
echo "pytest"
|
|
108
|
+
else
|
|
109
|
+
echo "python -m unittest"
|
|
110
|
+
fi
|
|
111
|
+
;;
|
|
112
|
+
go)
|
|
113
|
+
echo "go test ./..."
|
|
114
|
+
;;
|
|
115
|
+
rust)
|
|
116
|
+
echo "cargo test"
|
|
117
|
+
;;
|
|
118
|
+
maven)
|
|
119
|
+
echo "mvn test"
|
|
120
|
+
;;
|
|
121
|
+
gradle)
|
|
122
|
+
echo "./gradlew test"
|
|
123
|
+
;;
|
|
124
|
+
*)
|
|
125
|
+
echo "npm test"
|
|
126
|
+
;;
|
|
127
|
+
esac
|
|
128
|
+
;;
|
|
129
|
+
e2e)
|
|
130
|
+
case "$framework" in
|
|
131
|
+
npm)
|
|
132
|
+
if [ -f "playwright.config.ts" ] || [ -f "playwright.config.js" ]; then
|
|
133
|
+
echo "npx playwright test"
|
|
134
|
+
elif [ -f "cypress.config.ts" ] || [ -f "cypress.config.js" ]; then
|
|
135
|
+
echo "npx cypress run"
|
|
136
|
+
else
|
|
137
|
+
echo ""
|
|
138
|
+
fi
|
|
139
|
+
;;
|
|
140
|
+
*)
|
|
141
|
+
echo ""
|
|
142
|
+
;;
|
|
143
|
+
esac
|
|
144
|
+
;;
|
|
145
|
+
lint)
|
|
146
|
+
case "$framework" in
|
|
147
|
+
npm)
|
|
148
|
+
if jq -e '.scripts.lint' package.json &>/dev/null; then
|
|
149
|
+
echo "npm run lint"
|
|
150
|
+
elif [ -f ".eslintrc.js" ] || [ -f ".eslintrc.json" ] || [ -f "eslint.config.js" ]; then
|
|
151
|
+
echo "npx eslint ."
|
|
152
|
+
else
|
|
153
|
+
echo ""
|
|
154
|
+
fi
|
|
155
|
+
;;
|
|
156
|
+
python)
|
|
157
|
+
if grep -q "black" requirements.txt 2>/dev/null; then
|
|
158
|
+
echo "black --check ."
|
|
159
|
+
elif grep -q "flake8" requirements.txt 2>/dev/null; then
|
|
160
|
+
echo "flake8"
|
|
161
|
+
else
|
|
162
|
+
echo ""
|
|
163
|
+
fi
|
|
164
|
+
;;
|
|
165
|
+
go)
|
|
166
|
+
echo "golangci-lint run"
|
|
167
|
+
;;
|
|
168
|
+
rust)
|
|
169
|
+
echo "cargo clippy"
|
|
170
|
+
;;
|
|
171
|
+
*)
|
|
172
|
+
echo ""
|
|
173
|
+
;;
|
|
174
|
+
esac
|
|
175
|
+
;;
|
|
176
|
+
types)
|
|
177
|
+
case "$framework" in
|
|
178
|
+
npm)
|
|
179
|
+
if [ -f "tsconfig.json" ]; then
|
|
180
|
+
echo "npx tsc --noEmit"
|
|
181
|
+
else
|
|
182
|
+
echo ""
|
|
183
|
+
fi
|
|
184
|
+
;;
|
|
185
|
+
python)
|
|
186
|
+
if grep -q "mypy" requirements.txt 2>/dev/null; then
|
|
187
|
+
echo "mypy ."
|
|
188
|
+
else
|
|
189
|
+
echo ""
|
|
190
|
+
fi
|
|
191
|
+
;;
|
|
192
|
+
*)
|
|
193
|
+
echo ""
|
|
194
|
+
;;
|
|
195
|
+
esac
|
|
196
|
+
;;
|
|
197
|
+
esac
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
# ============================================================================
|
|
201
|
+
# VALIDATION FUNCTIONS
|
|
202
|
+
# ============================================================================
|
|
203
|
+
|
|
204
|
+
validate_build() {
|
|
205
|
+
local auto_heal="$1"
|
|
206
|
+
local max_retries="${2:-3}"
|
|
207
|
+
local cmd=$(detect_command "build")
|
|
208
|
+
|
|
209
|
+
if [ -z "$cmd" ]; then
|
|
210
|
+
echo " ⏭️ No build command detected - skipping" >&2
|
|
211
|
+
return 0
|
|
212
|
+
fi
|
|
213
|
+
|
|
214
|
+
echo " 🔨 Running build: $cmd" >&2
|
|
215
|
+
|
|
216
|
+
local attempt=1
|
|
217
|
+
while [ $attempt -le "$max_retries" ]; do
|
|
218
|
+
if eval "$cmd" >/dev/null 2>&1; then
|
|
219
|
+
echo " ✅ Build passed" >&2
|
|
220
|
+
return 0
|
|
221
|
+
else
|
|
222
|
+
echo " ❌ Build failed (attempt $attempt/$max_retries)" >&2
|
|
223
|
+
|
|
224
|
+
if [ "$auto_heal" = "true" ] && [ $attempt -lt "$max_retries" ]; then
|
|
225
|
+
echo " 🔄 Auto-heal enabled - will retry after LLM fix" >&2
|
|
226
|
+
attempt=$((attempt + 1))
|
|
227
|
+
else
|
|
228
|
+
echo "BLOCK:Build failed after $attempt attempt(s)"
|
|
229
|
+
return 1
|
|
230
|
+
fi
|
|
231
|
+
fi
|
|
232
|
+
done
|
|
233
|
+
|
|
234
|
+
echo "BLOCK:Build failed after $max_retries retries"
|
|
235
|
+
return 1
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
validate_tests() {
|
|
239
|
+
local cmd=$(detect_command "tests")
|
|
240
|
+
|
|
241
|
+
echo " ✅ Running tests: $cmd" >&2
|
|
242
|
+
|
|
243
|
+
if ! eval "$cmd" >/dev/null 2>&1; then
|
|
244
|
+
echo "BLOCK:Tests failed"
|
|
245
|
+
return 1
|
|
246
|
+
fi
|
|
247
|
+
|
|
248
|
+
echo " ✅ Tests passed" >&2
|
|
249
|
+
return 0
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
validate_e2e() {
|
|
253
|
+
local cmd=$(detect_command "e2e")
|
|
254
|
+
|
|
255
|
+
if [ -z "$cmd" ]; then
|
|
256
|
+
echo " ⏭️ No E2E framework detected - skipping" >&2
|
|
257
|
+
return 0
|
|
258
|
+
fi
|
|
259
|
+
|
|
260
|
+
echo " 🎭 Running E2E tests: $cmd" >&2
|
|
261
|
+
|
|
262
|
+
if ! eval "$cmd" >/dev/null 2>&1; then
|
|
263
|
+
echo "BLOCK:E2E tests failed"
|
|
264
|
+
return 1
|
|
265
|
+
fi
|
|
266
|
+
|
|
267
|
+
echo " ✅ E2E tests passed" >&2
|
|
268
|
+
return 0
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
validate_lint() {
|
|
272
|
+
local auto_heal="$1"
|
|
273
|
+
local max_retries="${2:-3}"
|
|
274
|
+
local cmd=$(detect_command "lint")
|
|
275
|
+
|
|
276
|
+
if [ -z "$cmd" ]; then
|
|
277
|
+
echo " ⏭️ No lint command detected - skipping" >&2
|
|
278
|
+
return 0
|
|
279
|
+
fi
|
|
280
|
+
|
|
281
|
+
echo " 🧹 Running lint: $cmd" >&2
|
|
282
|
+
|
|
283
|
+
local attempt=1
|
|
284
|
+
while [ $attempt -le "$max_retries" ]; do
|
|
285
|
+
if eval "$cmd" >/dev/null 2>&1; then
|
|
286
|
+
echo " ✅ Lint passed" >&2
|
|
287
|
+
return 0
|
|
288
|
+
else
|
|
289
|
+
echo " ❌ Lint failed (attempt $attempt/$max_retries)" >&2
|
|
290
|
+
|
|
291
|
+
if [ "$auto_heal" = "true" ] && [ $attempt -lt "$max_retries" ]; then
|
|
292
|
+
echo " 🔄 Auto-heal enabled - will retry after LLM fix" >&2
|
|
293
|
+
attempt=$((attempt + 1))
|
|
294
|
+
else
|
|
295
|
+
echo "BLOCK:Lint failed after $attempt attempt(s)"
|
|
296
|
+
return 1
|
|
297
|
+
fi
|
|
298
|
+
fi
|
|
299
|
+
done
|
|
300
|
+
|
|
301
|
+
echo "BLOCK:Lint failed after $max_retries retries"
|
|
302
|
+
return 1
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
validate_types() {
|
|
306
|
+
local auto_heal="$1"
|
|
307
|
+
local max_retries="${2:-3}"
|
|
308
|
+
local cmd=$(detect_command "types")
|
|
309
|
+
|
|
310
|
+
if [ -z "$cmd" ]; then
|
|
311
|
+
echo " ⏭️ No type-checking command detected - skipping" >&2
|
|
312
|
+
return 0
|
|
313
|
+
fi
|
|
314
|
+
|
|
315
|
+
echo " 📘 Running type-check: $cmd" >&2
|
|
316
|
+
|
|
317
|
+
local attempt=1
|
|
318
|
+
while [ $attempt -le "$max_retries" ]; do
|
|
319
|
+
if eval "$cmd" >/dev/null 2>&1; then
|
|
320
|
+
echo " ✅ Type-check passed" >&2
|
|
321
|
+
return 0
|
|
322
|
+
else
|
|
323
|
+
echo " ❌ Type-check failed (attempt $attempt/$max_retries)" >&2
|
|
324
|
+
|
|
325
|
+
if [ "$auto_heal" = "true" ] && [ $attempt -lt "$max_retries" ]; then
|
|
326
|
+
echo " 🔄 Auto-heal enabled - will retry after LLM fix" >&2
|
|
327
|
+
attempt=$((attempt + 1))
|
|
328
|
+
else
|
|
329
|
+
echo "BLOCK:Type-check failed after $attempt attempt(s)"
|
|
330
|
+
return 1
|
|
331
|
+
fi
|
|
332
|
+
fi
|
|
333
|
+
done
|
|
334
|
+
|
|
335
|
+
echo "BLOCK:Type-check failed after $max_retries retries"
|
|
336
|
+
return 1
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
validate_coverage() {
|
|
340
|
+
local threshold="$1"
|
|
341
|
+
local framework=$(detect_framework)
|
|
342
|
+
|
|
343
|
+
# This is simplified - real implementation would parse coverage reports
|
|
344
|
+
echo " 📊 Coverage validation (threshold: ${threshold}%) - NOT YET IMPLEMENTED" >&2
|
|
345
|
+
return 0
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
validate_custom_command() {
|
|
349
|
+
local cmd="$1"
|
|
350
|
+
|
|
351
|
+
echo " ⚡ Running custom command: $cmd" >&2
|
|
352
|
+
|
|
353
|
+
if ! eval "$cmd" >/dev/null 2>&1; then
|
|
354
|
+
echo "BLOCK:Custom command failed: $cmd"
|
|
355
|
+
return 1
|
|
356
|
+
fi
|
|
357
|
+
|
|
358
|
+
echo " ✅ Custom command passed" >&2
|
|
359
|
+
return 0
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
# ============================================================================
|
|
363
|
+
# MAIN VALIDATION LOOP
|
|
364
|
+
# ============================================================================
|
|
365
|
+
|
|
366
|
+
echo "🔍 Validating completion conditions..." >&2
|
|
367
|
+
|
|
368
|
+
# Parse conditions array from session file
|
|
369
|
+
CONDITIONS_JSON=$(jq -r '.completionConditions' "$SESSION_FILE")
|
|
370
|
+
CONDITION_COUNT=$(echo "$CONDITIONS_JSON" | jq -r 'length')
|
|
371
|
+
|
|
372
|
+
echo "Found $CONDITION_COUNT completion condition(s)" >&2
|
|
373
|
+
|
|
374
|
+
# Track failures
|
|
375
|
+
FAILED_CONDITIONS=()
|
|
376
|
+
|
|
377
|
+
# Iterate through each condition
|
|
378
|
+
for i in $(seq 0 $((CONDITION_COUNT - 1))); do
|
|
379
|
+
CONDITION=$(echo "$CONDITIONS_JSON" | jq -r ".[$i]")
|
|
380
|
+
TYPE=$(echo "$CONDITION" | jq -r '.type')
|
|
381
|
+
AUTO_HEAL=$(echo "$CONDITION" | jq -r '.autoHeal // "false"')
|
|
382
|
+
MAX_RETRIES=$(echo "$CONDITION" | jq -r '.maxRetries // "3"')
|
|
383
|
+
THRESHOLD=$(echo "$CONDITION" | jq -r '.threshold // ""')
|
|
384
|
+
CMD=$(echo "$CONDITION" | jq -r '.cmd // ""')
|
|
385
|
+
|
|
386
|
+
echo "" >&2
|
|
387
|
+
echo "Condition $((i + 1))/$CONDITION_COUNT: $TYPE" >&2
|
|
388
|
+
|
|
389
|
+
case "$TYPE" in
|
|
390
|
+
build)
|
|
391
|
+
if ! validate_build "$AUTO_HEAL" "$MAX_RETRIES"; then
|
|
392
|
+
FAILED_CONDITIONS+=("build")
|
|
393
|
+
fi
|
|
394
|
+
;;
|
|
395
|
+
tests)
|
|
396
|
+
if ! validate_tests; then
|
|
397
|
+
FAILED_CONDITIONS+=("tests")
|
|
398
|
+
fi
|
|
399
|
+
;;
|
|
400
|
+
e2e)
|
|
401
|
+
if ! validate_e2e; then
|
|
402
|
+
FAILED_CONDITIONS+=("e2e")
|
|
403
|
+
fi
|
|
404
|
+
;;
|
|
405
|
+
lint)
|
|
406
|
+
if ! validate_lint "$AUTO_HEAL" "$MAX_RETRIES"; then
|
|
407
|
+
FAILED_CONDITIONS+=("lint")
|
|
408
|
+
fi
|
|
409
|
+
;;
|
|
410
|
+
types)
|
|
411
|
+
if ! validate_types "$AUTO_HEAL" "$MAX_RETRIES"; then
|
|
412
|
+
FAILED_CONDITIONS+=("types")
|
|
413
|
+
fi
|
|
414
|
+
;;
|
|
415
|
+
coverage)
|
|
416
|
+
if ! validate_coverage "$THRESHOLD"; then
|
|
417
|
+
FAILED_CONDITIONS+=("coverage:$THRESHOLD%")
|
|
418
|
+
fi
|
|
419
|
+
;;
|
|
420
|
+
e2e-coverage)
|
|
421
|
+
# Similar to coverage
|
|
422
|
+
echo " 🎯 E2E coverage validation - NOT YET IMPLEMENTED" >&2
|
|
423
|
+
;;
|
|
424
|
+
command)
|
|
425
|
+
if ! validate_custom_command "$CMD"; then
|
|
426
|
+
FAILED_CONDITIONS+=("command:$CMD")
|
|
427
|
+
fi
|
|
428
|
+
;;
|
|
429
|
+
*)
|
|
430
|
+
echo " ⚠️ Unknown condition type: $TYPE" >&2
|
|
431
|
+
;;
|
|
432
|
+
esac
|
|
433
|
+
done
|
|
434
|
+
|
|
435
|
+
# Check if any conditions failed
|
|
436
|
+
if [ ${#FAILED_CONDITIONS[@]} -gt 0 ]; then
|
|
437
|
+
echo "" >&2
|
|
438
|
+
echo "❌ ${#FAILED_CONDITIONS[@]} completion condition(s) FAILED:" >&2
|
|
439
|
+
for failed in "${FAILED_CONDITIONS[@]}"; do
|
|
440
|
+
echo " • $failed" >&2
|
|
441
|
+
done
|
|
442
|
+
exit 1
|
|
443
|
+
fi
|
|
444
|
+
|
|
445
|
+
echo "" >&2
|
|
446
|
+
echo "✅ All $CONDITION_COUNT completion conditions passed!" >&2
|
|
447
|
+
exit 0
|