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 CHANGED
@@ -1,10 +1,10 @@
1
- <!-- SW:META template="claude" version="1.0.80" sections="header,start,autodetect,metarule,rules,workflow,context,lsp,structure,taskformat,secrets,syncing,mapping,testing,api,limits,troubleshooting,principles,linking,mcp,autoexecute,auto,docs" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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.80" -->
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;AAIpC,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;CAClB;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAuC3C"}
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":"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"}
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;AAiIH,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"}
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.85",
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
- bash plugins/specweave/scripts/setup-auto.sh [args]
1382
+ specweave auto [INCREMENT_IDS...] [OPTIONS]
1163
1383
  ```
1164
1384
 
1165
- Pass any arguments from the user (increment IDs, --max-iterations, --simple, etc.)
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 setup-auto.sh again with 0002
1415
+ # Action: Activate it and run specweave auto with 0002
1194
1416
  /sw:resume 0002
1195
- bash plugins/specweave/scripts/setup-auto.sh 0002 [other-args]
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
- bash plugins/specweave/scripts/setup-auto.sh 0001 [other-args]
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 setup-auto.sh with the new increment ID
1214
- bash plugins/specweave/scripts/setup-auto.sh 0003-payment-integration [other-args]
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
- bash plugins/specweave/scripts/setup-auto.sh 0002-dashboard 0003-reports 0004-export [other-args]
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(bash:*)
5
+ allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/read-jobs.sh)"]
6
6
  ---
7
7
 
8
8
  # Background Jobs Monitor
9
9
 
10
- !`bash "${CLAUDE_PLUGIN_ROOT}/scripts/read-jobs.sh" $ARGUMENTS`
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(bash:*)
5
+ allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/read-progress.sh)"]
6
6
  ---
7
7
 
8
8
  # Increment Progress
9
9
 
10
- !`bash "${CLAUDE_PLUGIN_ROOT}/scripts/read-progress.sh" $ARGUMENTS`
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(bash:*)
5
+ allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/read-status.sh)"]
6
6
  ---
7
7
 
8
8
  # Increment Status
9
9
 
10
- !`bash "${CLAUDE_PLUGIN_ROOT}/scripts/read-status.sh" $ARGUMENTS`
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