specweave 1.0.197 → 1.0.199

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CLAUDE.md +37 -64
  2. package/bin/specweave.js +24 -0
  3. package/dist/src/cli/commands/interview.d.ts +21 -0
  4. package/dist/src/cli/commands/interview.d.ts.map +1 -0
  5. package/dist/src/cli/commands/interview.js +248 -0
  6. package/dist/src/cli/commands/interview.js.map +1 -0
  7. package/dist/src/cli/commands/lsp.d.ts.map +1 -1
  8. package/dist/src/cli/commands/lsp.js +27 -0
  9. package/dist/src/cli/commands/lsp.js.map +1 -1
  10. package/dist/src/cli/commands/reconcile.d.ts +24 -0
  11. package/dist/src/cli/commands/reconcile.d.ts.map +1 -0
  12. package/dist/src/cli/commands/reconcile.js +139 -0
  13. package/dist/src/cli/commands/reconcile.js.map +1 -0
  14. package/dist/src/core/increment/reconcile-manager.d.ts +131 -0
  15. package/dist/src/core/increment/reconcile-manager.d.ts.map +1 -0
  16. package/dist/src/core/increment/reconcile-manager.js +752 -0
  17. package/dist/src/core/increment/reconcile-manager.js.map +1 -0
  18. package/dist/src/core/lsp/lsp-client.d.ts +3 -0
  19. package/dist/src/core/lsp/lsp-client.d.ts.map +1 -1
  20. package/dist/src/core/lsp/lsp-client.js +120 -32
  21. package/dist/src/core/lsp/lsp-client.js.map +1 -1
  22. package/dist/src/core/lsp/lsp-manager.d.ts +10 -1
  23. package/dist/src/core/lsp/lsp-manager.d.ts.map +1 -1
  24. package/dist/src/core/lsp/lsp-manager.js +46 -16
  25. package/dist/src/core/lsp/lsp-manager.js.map +1 -1
  26. package/dist/src/core/lsp/tsserver-client.d.ts +99 -0
  27. package/dist/src/core/lsp/tsserver-client.d.ts.map +1 -0
  28. package/dist/src/core/lsp/tsserver-client.js +523 -0
  29. package/dist/src/core/lsp/tsserver-client.js.map +1 -0
  30. package/dist/src/core/reflection/skill-memory-injector.d.ts +42 -0
  31. package/dist/src/core/reflection/skill-memory-injector.d.ts.map +1 -0
  32. package/dist/src/core/reflection/skill-memory-injector.js +67 -0
  33. package/dist/src/core/reflection/skill-memory-injector.js.map +1 -0
  34. package/package.json +1 -1
  35. package/plugins/specweave/commands/increment.md +2 -0
  36. package/plugins/specweave/commands/reconcile.md +440 -0
  37. package/plugins/specweave/hooks/user-prompt-submit.sh +81 -6
  38. package/plugins/specweave/hooks/v2/guards/interview-enforcement-guard.sh +171 -0
  39. package/plugins/specweave/skills/increment-planner/SKILL.md +15 -1
  40. package/plugins/specweave/skills/increment-planner/phases/00-preflight.md +40 -0
  41. package/plugins/specweave/skills/lsp/SKILL.md +40 -176
  42. package/plugins/specweave/skills/pm/phases/00-deep-interview.md +49 -1
package/CLAUDE.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- SW:META template="claude" version="1.0.196" sections="header,start,autodetect,metarule,rules,workflow,reflect,context,structure,taskformat,secrets,syncing,testing,tdd,api,limits,troubleshooting,lazyloading,principles,linking,mcp,auto,docs" -->
1
+ <!-- SW:META template="claude" version="1.0.198" sections="header,start,autodetect,metarule,rules,workflow,reflect,context,structure,taskformat,secrets,syncing,testing,tdd,api,limits,troubleshooting,lazyloading,principles,linking,mcp,auto,docs" -->
2
2
 
3
3
  <!-- SW:SECTION:hook-priority version="1.0.171" -->
4
4
  ## ⛔ ABSOLUTE PRIORITY: Hook Instructions Are Mandatory
@@ -53,7 +53,7 @@ Hooks exist to enforce workflow discipline. If you ignore them:
53
53
  **This is non-negotiable. No exceptions. No "just this once".**
54
54
  <!-- SW:END:hook-priority -->
55
55
 
56
- <!-- SW:SECTION:header version="1.0.196" -->
56
+ <!-- SW:SECTION:header version="1.0.198" -->
57
57
  **Framework**: SpecWeave | **Truth**: `spec.md` + `tasks.md`
58
58
  <!-- SW:END:header -->
59
59
 
@@ -131,31 +131,16 @@ IMPLEMENTATION PHASE:
131
131
  - Stripe → sw-payments:stripe-integration
132
132
  - Database → sw-backend:database-optimizer
133
133
 
134
- CODE INTELLIGENCE (LSP - REQUIRES SETUP):
135
- ⚠️ LSP does NOT work automatically - it requires explicit setup!
136
-
137
- **Setup steps:**
138
- 1. Enable: `export ENABLE_LSP_TOOL=1` (add to ~/.zshrc or ~/.bashrc)
139
- 2. Add marketplace: `/plugin marketplace add boostvolt/claude-code-lsps`
140
- 3. Install plugin: `/plugin install vtsls@claude-code-lsps` (TypeScript)
141
-
142
- **Note:** Official marketplace LSP plugins are broken (Issue #15148).
143
- Use `boostvolt/claude-code-lsps` instead.
144
-
145
- **Available LSP operations:** goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol
134
+ CODE INTELLIGENCE (LSP):
135
+ ⚠️ Requires setup - see "LSP Setup" section below
146
136
  ```
147
137
 
148
- ### Understanding LSP vs Skills
149
-
150
- **CRITICAL DISTINCTION** - Two different plugin types:
138
+ ### Skills vs LSP Plugins
151
139
 
152
- | Type | Has SKILL.md | How to Use | Example |
153
- |------|--------------|------------|---------|
154
- | **Skill plugins** | ✅ Yes | `/skill-name` or `Skill({ skill: "name" })` | sw:pm, sw:architect |
155
- | **LSP plugins** | ❌ No | Requires `ENABLE_LSP_TOOL=1` + working plugin | vtsls, pyright |
156
-
157
- **⚠️ Official marketplace LSP plugins are broken** ([Issue #15148](https://github.com/anthropics/claude-code/issues/15148)).
158
- Use `boostvolt/claude-code-lsps` marketplace instead.
140
+ | Type | Has SKILL.md | How to Use |
141
+ |------|--------------|------------|
142
+ | **Skill plugins** | ✅ Yes | `/skill-name` or `Skill({ skill: "name" })` |
143
+ | **LSP plugins** | ❌ No | See "LSP Setup" section below |
159
144
 
160
145
  ### Why Auto-Activation May Not Trigger
161
146
 
@@ -189,7 +174,7 @@ Skill(sw-backend:dotnet-backend) → .NET API patterns
189
174
  Before marking implementation complete, verify:
190
175
  - [ ] Used planning skills (PM, Architect) if complex feature
191
176
  - [ ] Used domain skills for each tech in the stack
192
- - [ ] LSP configured if needed (requires `ENABLE_LSP_TOOL=1` + plugin setup)
177
+ - [ ] LSP configured if needed (see LSP Setup section below)
193
178
  - [ ] Invoked skills explicitly if auto-activation didn't trigger
194
179
  <!-- SW:END:skill-chaining -->
195
180
 
@@ -292,7 +277,7 @@ SpecWeave's `user-prompt-submit.sh` hook auto-installs LSP plugins with **projec
292
277
 
293
278
  **Reference**: [Official Docs](https://code.claude.com/docs/en/discover-plugins#install-plugins) | [Settings Scopes](https://code.claude.com/docs/en/settings#configuration-scopes)
294
279
 
295
- <!-- SW:SECTION:start version="1.0.196" -->
280
+ <!-- SW:SECTION:start version="1.0.198" -->
296
281
  ## Getting Started
297
282
 
298
283
  **Initial increment**: `0001-project-setup` (auto-created by `specweave init`)
@@ -302,7 +287,7 @@ SpecWeave's `user-prompt-submit.sh` hook auto-installs LSP plugins with **projec
302
287
  2. **Customize**: Edit spec.md and use for setup tasks
303
288
  <!-- SW:END:start -->
304
289
 
305
- <!-- SW:SECTION:autodetect version="1.0.196" -->
290
+ <!-- SW:SECTION:autodetect version="1.0.198" -->
306
291
  ## Auto-Detection
307
292
 
308
293
  SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
@@ -312,7 +297,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
312
297
  **Opt-out phrases**: "Just brainstorm first" | "Don't plan yet" | "Quick discussion" | "Let's explore ideas"
313
298
  <!-- SW:END:autodetect -->
314
299
 
315
- <!-- SW:SECTION:metarule version="1.0.196" -->
300
+ <!-- SW:SECTION:metarule version="1.0.198" -->
316
301
  ## Meta-Rule: Think-Before-Act
317
302
 
318
303
  **Satisfy dependencies BEFORE dependent operations.**
@@ -323,7 +308,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
323
308
  ```
324
309
  <!-- SW:END:metarule -->
325
310
 
326
- <!-- SW:SECTION:rules version="1.0.196" -->
311
+ <!-- SW:SECTION:rules version="1.0.198" -->
327
312
  ## Rules
328
313
 
329
314
  1. **Files** → `.specweave/increments/####-name/` (see Structure section for details)
@@ -339,7 +324,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
339
324
  Use next available number. **NEVER create duplicate prefixes.**
340
325
  <!-- SW:END:rules -->
341
326
 
342
- <!-- SW:SECTION:workflow version="1.0.196" -->
327
+ <!-- SW:SECTION:workflow version="1.0.198" -->
343
328
  ## Workflow
344
329
 
345
330
  `/sw:increment "X"` → `/sw:do` → `/sw:progress` → `/sw:done 0001`
@@ -385,7 +370,7 @@ project/
385
370
  **NEVER assume single-repo mode without scanning first!**
386
371
  <!-- SW:END:save-nested-repos -->
387
372
 
388
- <!-- SW:SECTION:reflect version="1.0.196" -->
373
+ <!-- SW:SECTION:reflect version="1.0.198" -->
389
374
  ## Skill Memories
390
375
 
391
376
  SpecWeave learns from corrections. Learnings saved here automatically. Edit or delete as needed.
@@ -397,16 +382,10 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
397
382
 
398
383
  <!-- Auto-captured by SpecWeave reflect. Edit or delete as needed. -->
399
384
 
400
- ### Devops
401
- - **2026-01-29**: LSP requires ENABLE_LSP_TOOL=1 env var + boostvolt/claude-code-lsps marketplace (official plugins broken)
402
-
403
- ### Logging
404
- - **2026-01-29**: // Do NOT verify immediately - show dialog instead
385
+ ### Pm
386
+ - **2026-02-01**: Enable interview process during increment creation for SpecWeave projects
405
387
 
406
- ### General
407
- - **2026-01-29**: Always check for credentials FIRST (presence only - never display values)
408
-
409
- <!-- SW:SECTION:context version="1.0.196" -->
388
+ <!-- SW:SECTION:context version="1.0.198" -->
410
389
  ## Context
411
390
 
412
391
  **Before implementing**: Check ADRs at `.specweave/docs/internal/architecture/adr/`
@@ -414,7 +393,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
414
393
  **Load context**: `/sw:context <topic>` loads relevant living docs into conversation
415
394
  <!-- SW:END:context -->
416
395
 
417
- <!-- SW:SECTION:structure version="1.0.196" -->
396
+ <!-- SW:SECTION:structure version="1.0.198" -->
418
397
  ## Structure
419
398
 
420
399
  ```
@@ -429,7 +408,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
429
408
  **Everything else → subfolders**: `reports/` | `logs/` | `scripts/` | `backups/`
430
409
  <!-- SW:END:structure -->
431
410
 
432
- <!-- SW:SECTION:taskformat version="1.0.196" -->
411
+ <!-- SW:SECTION:taskformat version="1.0.198" -->
433
412
  ## Task Format
434
413
 
435
414
  ```markdown
@@ -439,7 +418,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
439
418
  ```
440
419
  <!-- SW:END:taskformat -->
441
420
 
442
- <!-- SW:SECTION:secrets version="1.0.196" -->
421
+ <!-- SW:SECTION:secrets version="1.0.198" -->
443
422
  ## Secrets Check
444
423
 
445
424
  **BEFORE CLI tools**: Check existing config first!
@@ -453,7 +432,7 @@ gh auth status
453
432
  **SECURITY**: NEVER use `grep TOKEN .env` without `-q` flag - it exposes credentials in terminal!
454
433
  <!-- SW:END:secrets -->
455
434
 
456
- <!-- SW:SECTION:syncing version="1.0.196" -->
435
+ <!-- SW:SECTION:syncing version="1.0.198" -->
457
436
  ## External Sync (GitHub/JIRA/ADO)
458
437
 
459
438
  **Commands**: `/sw-github:sync {id}` (issues) | `/sw:sync-specs` (living docs only)
@@ -463,7 +442,7 @@ gh auth status
463
442
  **Config**: Set `sync.github.enabled: true` + `canUpdateExternalItems: true` in config.json
464
443
  <!-- SW:END:syncing -->
465
444
 
466
- <!-- SW:SECTION:testing version="1.0.196" -->
445
+ <!-- SW:SECTION:testing version="1.0.198" -->
467
446
  ## Testing
468
447
 
469
448
  BDD in tasks.md | Unit >80% | `.test.ts` (Vitest)
@@ -475,7 +454,7 @@ vi.mock('./module', () => ({ func: mockFn }));
475
454
  ```
476
455
  <!-- SW:END:testing -->
477
456
 
478
- <!-- SW:SECTION:tdd version="1.0.196" -->
457
+ <!-- SW:SECTION:tdd version="1.0.198" -->
479
458
  ## TDD Mode (Test-Driven Development)
480
459
 
481
460
  **When `testing.defaultTestMode: "TDD"` is configured**, follow RED-GREEN-REFACTOR discipline:
@@ -536,7 +515,7 @@ When TDD is enabled, tasks include phase markers:
536
515
  **Rule**: Complete dependencies BEFORE dependent tasks (RED before GREEN).
537
516
  <!-- SW:END:tdd -->
538
517
 
539
- <!-- SW:SECTION:api version="1.0.196" -->
518
+ <!-- SW:SECTION:api version="1.0.198" -->
540
519
  ## API Development (OpenAPI-First)
541
520
 
542
521
  **For API projects only.** Commands: `/sw:api-docs --all` | `--openapi` | `--postman` | `--validate`
@@ -544,13 +523,13 @@ When TDD is enabled, tasks include phase markers:
544
523
  Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
545
524
  <!-- SW:END:api -->
546
525
 
547
- <!-- SW:SECTION:limits version="1.0.196" -->
526
+ <!-- SW:SECTION:limits version="1.0.198" -->
548
527
  ## Limits
549
528
 
550
529
  **Max 1500 lines/file** — extract before adding
551
530
  <!-- SW:END:limits -->
552
531
 
553
- <!-- SW:SECTION:troubleshooting version="1.0.196" -->
532
+ <!-- SW:SECTION:troubleshooting version="1.0.198" -->
554
533
  ## Troubleshooting
555
534
 
556
535
  | Issue | Fix |
@@ -567,7 +546,7 @@ Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
567
546
  | Docs folder collisions | Check: `ls docs/ \| grep -E '^[0-9]{2}-' \| cut -d'-' -f1 \| sort \| uniq -d` |
568
547
  <!-- SW:END:troubleshooting -->
569
548
 
570
- <!-- SW:SECTION:lazyloading version="1.0.196" -->
549
+ <!-- SW:SECTION:lazyloading version="1.0.198" -->
571
550
  ## Plugin Auto-Loading
572
551
 
573
552
  Plugins load automatically based on project type and keywords. Manual install if needed:
@@ -581,7 +560,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
581
560
  **Token savings**: Core ~3-5K tokens vs all plugins ~60K+
582
561
  <!-- SW:END:lazyloading -->
583
562
 
584
- <!-- SW:SECTION:principles version="1.0.196" -->
563
+ <!-- SW:SECTION:principles version="1.0.198" -->
585
564
  ## Principles
586
565
 
587
566
  1. **Spec-first**: `/sw:increment` before coding
@@ -590,7 +569,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
590
569
  4. **Traceable**: All work → specs → ACs
591
570
  <!-- SW:END:principles -->
592
571
 
593
- <!-- SW:SECTION:linking version="1.0.196" -->
572
+ <!-- SW:SECTION:linking version="1.0.198" -->
594
573
  ## Bidirectional Linking
595
574
 
596
575
  Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
@@ -598,7 +577,7 @@ Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
598
577
  Task format: `**AC**: AC-US1-01, AC-US1-02` (CRITICAL for linking)
599
578
  <!-- SW:END:linking -->
600
579
 
601
- <!-- SW:SECTION:mcp version="1.0.196" -->
580
+ <!-- SW:SECTION:mcp version="1.0.198" -->
602
581
  ## External Services
603
582
 
604
583
  **Priority**: CLI tools first (simpler) → MCP for complex integrations
@@ -620,7 +599,7 @@ claude mcp add --transport stdio postgres -- npx -y @modelcontextprotocol/server
620
599
  MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
621
600
  <!-- SW:END:mcp -->
622
601
 
623
- <!-- SW:SECTION:auto version="1.0.196" -->
602
+ <!-- SW:SECTION:auto version="1.0.198" -->
624
603
  ## Auto Mode
625
604
 
626
605
  **Commands**: `/sw:auto` (start) | `/sw:auto-status` (check) | `/sw:cancel-auto` (emergency only)
@@ -637,7 +616,7 @@ MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
637
616
  **STOP & ASK** if: Spec conflicts | Task unnecessary | Requirement ambiguous
638
617
  <!-- SW:END:auto -->
639
618
 
640
- <!-- SW:SECTION:docs version="1.0.196" -->
619
+ <!-- SW:SECTION:docs version="1.0.198" -->
641
620
  ## Docs
642
621
 
643
622
  [spec-weave.com](https://spec-weave.com)
@@ -722,11 +701,7 @@ User Stories need `**Project**: my-project` field for external sync. Each US = O
722
701
  - Use `sw-backend:*` skills for .NET/Node/Python APIs
723
702
  - Use `sw-payments:stripe-integration` for Stripe
724
703
 
725
- **Code Intelligence (LSP - REQUIRES SETUP):**
726
- - LSP requires `ENABLE_LSP_TOOL=1` environment variable
727
- - Official marketplace plugins are broken ([Issue #15148](https://github.com/anthropics/claude-code/issues/15148))
728
- - Use `boostvolt/claude-code-lsps` marketplace instead
729
- - Operations: goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol
704
+ **Code Intelligence (LSP):** See "LSP Setup" section above for configuration requirements.
730
705
 
731
706
  **Pattern:**
732
707
  ```
@@ -967,14 +942,12 @@ If skills don't auto-activate:
967
942
  | Domain work (React, .NET, Stripe) | Let auto-activate, Skill tool if not |
968
943
  | Architecture, security review | Usually auto-activates on keywords |
969
944
  | Hook says "SKILL FIRST" | **Always** use Skill tool explicitly |
970
- | **Code intelligence (LSP)** | Requires setup: `ENABLE_LSP_TOOL=1` + `boostvolt/claude-code-lsps` |
945
+ | **Code intelligence (LSP)** | See "LSP Setup" section |
971
946
  | Increment planning | Use PM/Architect skills for spec/plan refinement |
972
947
  | External syncs | Commands: `/sw-github:sync` |
973
948
  | Codebase exploration | Task tool: `subagent_type: "Explore"` |
974
949
  | Complex planning | Task tool: `subagent_type: "Plan"` |
975
950
 
976
- **IMPORTANT**: LSP requires explicit setup. Set `ENABLE_LSP_TOOL=1` and use `boostvolt/claude-code-lsps` marketplace (official plugins are broken). Once configured, LSP provides: goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol.
977
-
978
951
  **Reference**: See `plugins/PLUGINS-INDEX.md` for full plugin catalog with triggers.
979
952
 
980
953
  ---
@@ -1161,7 +1134,7 @@ npm run rebuild
1161
1134
  | Source of truth | tasks.md + spec.md (update immediately) |
1162
1135
  | Completion | `/sw:done` only (NEVER edit metadata.json directly) |
1163
1136
  | **Skills** | **ALWAYS use when available** (PM, Architect, domain skills) |
1164
- | **LSP** | Requires `ENABLE_LSP_TOOL=1` + `boostvolt/claude-code-lsps` (official plugins broken) |
1137
+ | **LSP** | See "LSP Setup" section (requires explicit setup) |
1165
1138
  | Increment root | ONLY 4 files: spec.md, plan.md, tasks.md, metadata.json |
1166
1139
  | Increment IDs | 🚨 Check ALL folders: `find .specweave/increments -maxdepth 2 -name "[0-9]*" \| grep -oE '[0-9]{4}E?'` |
1167
1140
  | Reports/logs | Always to `reports/`, `logs/` subfolders |
package/bin/specweave.js CHANGED
@@ -367,6 +367,30 @@ program
367
367
  await statusCommand(options);
368
368
  });
369
369
 
370
+ // Interview command - Manage Deep Interview Mode state
371
+ const interviewCmd = program
372
+ .command('interview <action> [increment-id] [category] [summary]')
373
+ .description('Manage Deep Interview Mode for increment planning')
374
+ .action(async (action, incrementId, category, summary) => {
375
+ const { interviewCommand } = await import('../dist/src/cli/commands/interview.js');
376
+ await interviewCommand(action, incrementId, category, summary);
377
+ });
378
+
379
+ interviewCmd.addHelpText('after', `
380
+ Actions:
381
+ start <increment-id> Start interview tracking
382
+ mark-covered <id> <category> [summary] Mark category as covered
383
+ status [increment-id] Show interview status
384
+ clear <increment-id> Clear interview state
385
+
386
+ Categories: architecture, integrations, ui-ux, performance, security, edge-cases
387
+
388
+ Examples:
389
+ specweave interview start 0021-auth-feature
390
+ specweave interview mark-covered 0021-auth-feature architecture "Microservices with Redis"
391
+ specweave interview status 0021-auth-feature
392
+ `);
393
+
370
394
  // Logs command - View hook execution logs
371
395
  program
372
396
  .command('logs')
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Start interview tracking for an increment
3
+ */
4
+ export declare function interviewStart(incrementId: string): Promise<void>;
5
+ /**
6
+ * Mark a category as covered
7
+ */
8
+ export declare function interviewMarkCovered(incrementId: string, category: string, summary: string): Promise<void>;
9
+ /**
10
+ * Show interview status for an increment
11
+ */
12
+ export declare function interviewStatus(incrementId?: string): Promise<void>;
13
+ /**
14
+ * Clear interview state (after spec is created)
15
+ */
16
+ export declare function interviewClear(incrementId: string): Promise<void>;
17
+ /**
18
+ * Main interview command handler
19
+ */
20
+ export declare function interviewCommand(action: string, incrementId?: string, categoryOrSummary?: string, summary?: string): Promise<void>;
21
+ //# sourceMappingURL=interview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interview.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/interview.ts"],"names":[],"mappings":"AAiDA;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCvE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
@@ -0,0 +1,248 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { findProjectRoot } from '../../utils/find-project-root.js';
4
+ const DEFAULT_CATEGORIES = ['architecture', 'integrations', 'ui-ux', 'performance', 'security', 'edge-cases'];
5
+ /**
6
+ * Get interview state file path for an increment
7
+ */
8
+ function getInterviewStatePath(projectRoot, incrementId) {
9
+ return path.join(projectRoot, '.specweave', 'state', `interview-${incrementId}.json`);
10
+ }
11
+ /**
12
+ * Get required categories from config
13
+ */
14
+ function getRequiredCategories(projectRoot) {
15
+ try {
16
+ const configPath = path.join(projectRoot, '.specweave', 'config.json');
17
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
18
+ return config.planning?.deepInterview?.categories || DEFAULT_CATEGORIES;
19
+ }
20
+ catch {
21
+ return DEFAULT_CATEGORIES;
22
+ }
23
+ }
24
+ /**
25
+ * Check if strict enforcement is enabled
26
+ */
27
+ function isStrictEnforcement(projectRoot) {
28
+ try {
29
+ const configPath = path.join(projectRoot, '.specweave', 'config.json');
30
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
31
+ return config.planning?.deepInterview?.enabled === true &&
32
+ config.planning?.deepInterview?.enforcement === 'strict';
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * Start interview tracking for an increment
40
+ */
41
+ export async function interviewStart(incrementId) {
42
+ const projectRoot = findProjectRoot(process.cwd());
43
+ if (!projectRoot) {
44
+ console.error('❌ Not in a SpecWeave project. Run `specweave init` first.');
45
+ process.exit(1);
46
+ }
47
+ const stateDir = path.join(projectRoot, '.specweave', 'state');
48
+ if (!fs.existsSync(stateDir)) {
49
+ fs.mkdirSync(stateDir, { recursive: true });
50
+ }
51
+ const statePath = getInterviewStatePath(projectRoot, incrementId);
52
+ if (fs.existsSync(statePath)) {
53
+ console.log(`⚠️ Interview already started for ${incrementId}`);
54
+ await interviewStatus(incrementId);
55
+ return;
56
+ }
57
+ const state = {
58
+ incrementId,
59
+ startedAt: new Date().toISOString(),
60
+ coveredCategories: {}
61
+ };
62
+ fs.writeFileSync(statePath, JSON.stringify(state, null, 2));
63
+ console.log(`✅ Interview started for ${incrementId}`);
64
+ console.log('');
65
+ console.log('Cover all categories before creating spec.md:');
66
+ const categories = getRequiredCategories(projectRoot);
67
+ categories.forEach(cat => console.log(` - [ ] ${cat}`));
68
+ console.log('');
69
+ console.log('Mark categories as covered:');
70
+ console.log(` specweave interview mark-covered ${incrementId} architecture "summary"`);
71
+ }
72
+ /**
73
+ * Mark a category as covered
74
+ */
75
+ export async function interviewMarkCovered(incrementId, category, summary) {
76
+ const projectRoot = findProjectRoot(process.cwd());
77
+ if (!projectRoot) {
78
+ console.error('❌ Not in a SpecWeave project.');
79
+ process.exit(1);
80
+ }
81
+ const categories = getRequiredCategories(projectRoot);
82
+ if (!categories.includes(category)) {
83
+ console.error(`❌ Unknown category: ${category}`);
84
+ console.error(`Valid categories: ${categories.join(', ')}`);
85
+ process.exit(1);
86
+ }
87
+ const statePath = getInterviewStatePath(projectRoot, incrementId);
88
+ let state;
89
+ if (fs.existsSync(statePath)) {
90
+ state = JSON.parse(fs.readFileSync(statePath, 'utf-8'));
91
+ }
92
+ else {
93
+ // Auto-start interview if not started
94
+ state = {
95
+ incrementId,
96
+ startedAt: new Date().toISOString(),
97
+ coveredCategories: {}
98
+ };
99
+ }
100
+ state.coveredCategories[category] = {
101
+ coveredAt: new Date().toISOString(),
102
+ summary: summary || 'Covered'
103
+ };
104
+ fs.writeFileSync(statePath, JSON.stringify(state, null, 2));
105
+ console.log(`✅ Marked ${category} as covered: ${summary || 'Covered'}`);
106
+ // Show remaining
107
+ const covered = Object.keys(state.coveredCategories);
108
+ const remaining = categories.filter(c => !covered.includes(c));
109
+ if (remaining.length === 0) {
110
+ console.log('');
111
+ console.log('🎉 All categories covered! You can now create spec.md');
112
+ }
113
+ else {
114
+ console.log('');
115
+ console.log(`Remaining: ${remaining.join(', ')}`);
116
+ }
117
+ }
118
+ /**
119
+ * Show interview status for an increment
120
+ */
121
+ export async function interviewStatus(incrementId) {
122
+ const projectRoot = findProjectRoot(process.cwd());
123
+ if (!projectRoot) {
124
+ console.error('❌ Not in a SpecWeave project.');
125
+ process.exit(1);
126
+ }
127
+ const isStrict = isStrictEnforcement(projectRoot);
128
+ const categories = getRequiredCategories(projectRoot);
129
+ console.log('📋 Deep Interview Mode');
130
+ console.log(` Enforcement: ${isStrict ? '🔴 STRICT (blocks spec creation)' : '🟡 Advisory'}`);
131
+ console.log(` Categories: ${categories.join(', ')}`);
132
+ console.log('');
133
+ if (!incrementId) {
134
+ // Show all active interviews
135
+ const stateDir = path.join(projectRoot, '.specweave', 'state');
136
+ if (!fs.existsSync(stateDir)) {
137
+ console.log('No active interviews.');
138
+ return;
139
+ }
140
+ const files = fs.readdirSync(stateDir).filter(f => f.startsWith('interview-'));
141
+ if (files.length === 0) {
142
+ console.log('No active interviews.');
143
+ return;
144
+ }
145
+ console.log('Active interviews:');
146
+ for (const file of files) {
147
+ const state = JSON.parse(fs.readFileSync(path.join(stateDir, file), 'utf-8'));
148
+ const covered = Object.keys(state.coveredCategories).length;
149
+ const total = categories.length;
150
+ const emoji = covered === total ? '✅' : '🔄';
151
+ console.log(` ${emoji} ${state.incrementId}: ${covered}/${total} categories covered`);
152
+ }
153
+ return;
154
+ }
155
+ // Show specific increment
156
+ const statePath = getInterviewStatePath(projectRoot, incrementId);
157
+ if (!fs.existsSync(statePath)) {
158
+ console.log(`No interview started for ${incrementId}`);
159
+ console.log(`Start with: specweave interview start ${incrementId}`);
160
+ return;
161
+ }
162
+ const state = JSON.parse(fs.readFileSync(statePath, 'utf-8'));
163
+ const covered = Object.keys(state.coveredCategories);
164
+ console.log(`Interview: ${incrementId}`);
165
+ console.log(`Started: ${state.startedAt}`);
166
+ console.log('');
167
+ console.log('Categories:');
168
+ for (const cat of categories) {
169
+ if (covered.includes(cat)) {
170
+ const info = state.coveredCategories[cat];
171
+ console.log(` [x] ${cat}: ${info.summary}`);
172
+ }
173
+ else {
174
+ console.log(` [ ] ${cat}`);
175
+ }
176
+ }
177
+ const remaining = categories.filter(c => !covered.includes(c));
178
+ if (remaining.length === 0) {
179
+ console.log('');
180
+ console.log('🎉 All categories covered! Ready for spec creation.');
181
+ }
182
+ else {
183
+ console.log('');
184
+ console.log(`⚠️ ${remaining.length} categories remaining: ${remaining.join(', ')}`);
185
+ }
186
+ }
187
+ /**
188
+ * Clear interview state (after spec is created)
189
+ */
190
+ export async function interviewClear(incrementId) {
191
+ const projectRoot = findProjectRoot(process.cwd());
192
+ if (!projectRoot) {
193
+ console.error('❌ Not in a SpecWeave project.');
194
+ process.exit(1);
195
+ }
196
+ const statePath = getInterviewStatePath(projectRoot, incrementId);
197
+ if (fs.existsSync(statePath)) {
198
+ fs.unlinkSync(statePath);
199
+ console.log(`✅ Interview state cleared for ${incrementId}`);
200
+ }
201
+ else {
202
+ console.log(`No interview state found for ${incrementId}`);
203
+ }
204
+ }
205
+ /**
206
+ * Main interview command handler
207
+ */
208
+ export async function interviewCommand(action, incrementId, categoryOrSummary, summary) {
209
+ switch (action) {
210
+ case 'start':
211
+ if (!incrementId) {
212
+ console.error('Usage: specweave interview start <increment-id>');
213
+ process.exit(1);
214
+ }
215
+ await interviewStart(incrementId);
216
+ break;
217
+ case 'mark-covered':
218
+ case 'mark':
219
+ case 'cover':
220
+ if (!incrementId || !categoryOrSummary) {
221
+ console.error('Usage: specweave interview mark-covered <increment-id> <category> [summary]');
222
+ process.exit(1);
223
+ }
224
+ await interviewMarkCovered(incrementId, categoryOrSummary, summary || '');
225
+ break;
226
+ case 'status':
227
+ await interviewStatus(incrementId);
228
+ break;
229
+ case 'clear':
230
+ if (!incrementId) {
231
+ console.error('Usage: specweave interview clear <increment-id>');
232
+ process.exit(1);
233
+ }
234
+ await interviewClear(incrementId);
235
+ break;
236
+ default:
237
+ console.log('Usage: specweave interview <action> [args]');
238
+ console.log('');
239
+ console.log('Actions:');
240
+ console.log(' start <increment-id> Start interview tracking');
241
+ console.log(' mark-covered <id> <category> [summary] Mark category as covered');
242
+ console.log(' status [increment-id] Show interview status');
243
+ console.log(' clear <increment-id> Clear interview state');
244
+ console.log('');
245
+ console.log('Categories: architecture, integrations, ui-ux, performance, security, edge-cases');
246
+ }
247
+ }
248
+ //# sourceMappingURL=interview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interview.js","sourceRoot":"","sources":["../../../../src/cli/commands/interview.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/lsp.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAiD9F;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAiCf;AA+BD;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AA+BD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B3F;AAsCD;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BvF;AAyED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAoE1C;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDxE"}
1
+ {"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/lsp.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAiD9F;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAyCf;AA+BD;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAiCf;AA+BD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC3F;AAsCD;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCvF;AAyED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAoE1C;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDxE"}