specweave 0.21.3 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CLAUDE.md +198 -6
  2. package/README.md +33 -3
  3. package/dist/plugins/specweave-github/lib/CodeValidator.d.ts +101 -0
  4. package/dist/plugins/specweave-github/lib/CodeValidator.d.ts.map +1 -0
  5. package/dist/plugins/specweave-github/lib/CodeValidator.js +219 -0
  6. package/dist/plugins/specweave-github/lib/CodeValidator.js.map +1 -0
  7. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +182 -0
  8. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +1 -0
  9. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +603 -0
  10. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -0
  11. package/dist/plugins/specweave-github/lib/types.d.ts +34 -0
  12. package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -1
  13. package/dist/src/cli/commands/init.d.ts.map +1 -1
  14. package/dist/src/cli/commands/init.js +60 -5
  15. package/dist/src/cli/commands/init.js.map +1 -1
  16. package/dist/src/config/types.d.ts +8 -8
  17. package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -1
  18. package/dist/src/core/living-docs/CompletionPropagator.js +4 -3
  19. package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -1
  20. package/dist/src/core/living-docs/SpecDistributor.d.ts +5 -0
  21. package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -1
  22. package/dist/src/core/living-docs/SpecDistributor.js +12 -0
  23. package/dist/src/core/living-docs/SpecDistributor.js.map +1 -1
  24. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  25. package/dist/src/core/living-docs/project-detector.js +38 -0
  26. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  27. package/dist/src/core/types/config.d.ts +23 -0
  28. package/dist/src/core/types/config.d.ts.map +1 -1
  29. package/dist/src/core/types/config.js +10 -0
  30. package/dist/src/core/types/config.js.map +1 -1
  31. package/dist/src/init/ArchitecturePresenter.d.ts +47 -0
  32. package/dist/src/init/ArchitecturePresenter.d.ts.map +1 -0
  33. package/dist/src/init/ArchitecturePresenter.js +180 -0
  34. package/dist/src/init/ArchitecturePresenter.js.map +1 -0
  35. package/dist/src/init/InitFlow.d.ts.map +1 -1
  36. package/dist/src/init/InitFlow.js +30 -1
  37. package/dist/src/init/InitFlow.js.map +1 -1
  38. package/dist/src/init/architecture/CostEstimator.d.ts +52 -0
  39. package/dist/src/init/architecture/CostEstimator.d.ts.map +1 -0
  40. package/dist/src/init/architecture/CostEstimator.js +107 -0
  41. package/dist/src/init/architecture/CostEstimator.js.map +1 -0
  42. package/dist/src/init/architecture/InfrastructureMapper.d.ts +41 -0
  43. package/dist/src/init/architecture/InfrastructureMapper.d.ts.map +1 -0
  44. package/dist/src/init/architecture/InfrastructureMapper.js +140 -0
  45. package/dist/src/init/architecture/InfrastructureMapper.js.map +1 -0
  46. package/dist/src/init/architecture/ProjectGenerator.d.ts +44 -0
  47. package/dist/src/init/architecture/ProjectGenerator.d.ts.map +1 -0
  48. package/dist/src/init/architecture/ProjectGenerator.js +216 -0
  49. package/dist/src/init/architecture/ProjectGenerator.js.map +1 -0
  50. package/dist/src/init/research/src/config/types.d.ts +8 -8
  51. package/package.json +9 -8
  52. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  53. package/plugins/specweave-github/lib/CodeValidator.js +195 -0
  54. package/plugins/specweave-github/lib/CodeValidator.ts +284 -0
  55. package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +545 -0
  56. package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +809 -0
  57. package/plugins/specweave-github/lib/types.ts +38 -0
  58. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +1200 -0
  59. package/src/templates/AGENTS.md.template +22 -1
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Three-Layer Bidirectional Sync Manager
3
+ *
4
+ * Handles synchronization across three layers:
5
+ * - Layer 1: GitHub Issue (stakeholder UI)
6
+ * - Layer 2: Living Docs User Story files (intermediate representation)
7
+ * - Layer 3: Increment spec.md + tasks.md (source of truth)
8
+ *
9
+ * Supports two sync flows:
10
+ * 1. GitHub → Living Docs → Increment (stakeholder checks checkbox)
11
+ * 2. Increment → Living Docs → GitHub (developer completes work)
12
+ *
13
+ * Features:
14
+ * - Code validation (reopen tasks if code doesn't exist)
15
+ * - Completion propagation (Tasks → ACs → User Stories)
16
+ * - Conflict resolution (Increment always wins)
17
+ *
18
+ * @module ThreeLayerSyncManager
19
+ */
20
+ /**
21
+ * Acceptance Criterion with completion state
22
+ */
23
+ export interface AcceptanceCriterion {
24
+ id: string;
25
+ userStoryId: string;
26
+ description: string;
27
+ completed: boolean;
28
+ projects: string[];
29
+ rawLine: string;
30
+ }
31
+ /**
32
+ * Task with completion state and AC references
33
+ */
34
+ export interface Task {
35
+ id: string;
36
+ title: string;
37
+ completed: boolean;
38
+ completedDate?: string;
39
+ acIds: string[];
40
+ filePaths?: string[];
41
+ }
42
+ /**
43
+ * Change detected during sync
44
+ */
45
+ export interface SyncChange {
46
+ type: 'ac' | 'task';
47
+ id: string;
48
+ completed: boolean;
49
+ layer: 'github' | 'living-docs' | 'increment';
50
+ userStoryPath?: string;
51
+ incrementPath?: string;
52
+ }
53
+ /**
54
+ * Sync result
55
+ */
56
+ export interface SyncResult {
57
+ acsUpdated: number;
58
+ tasksUpdated: number;
59
+ tasksReopened: number;
60
+ conflicts: string[];
61
+ errors: string[];
62
+ }
63
+ export declare class ThreeLayerSyncManager {
64
+ private codeValidator;
65
+ private userStoryFileCache;
66
+ private projectRoot;
67
+ constructor(projectRoot?: string);
68
+ /**
69
+ * Clear User Story file cache
70
+ * Call this when file structure changes or for testing
71
+ */
72
+ clearCache(): void;
73
+ /**
74
+ * Sync from GitHub to Increment (Flow 1: GitHub → Living Docs → Increment)
75
+ *
76
+ * Triggered when stakeholder checks AC/Task checkbox in GitHub issue.
77
+ */
78
+ syncGitHubToIncrement(issueNumber: number, incrementPath: string, livingDocsPath: string): Promise<SyncResult>;
79
+ /**
80
+ * Sync from Increment to GitHub (Flow 2: Increment → Living Docs → GitHub)
81
+ *
82
+ * Triggered when developer completes work and updates increment files.
83
+ */
84
+ syncIncrementToGitHub(incrementPath: string, livingDocsPath: string, issueNumber: number): Promise<SyncResult>;
85
+ /**
86
+ * Validate that code exists for completed task
87
+ * Uses CodeValidator for comprehensive validation
88
+ */
89
+ private validateCodeExists;
90
+ /**
91
+ * Reopen task if code validation fails
92
+ */
93
+ private reopenTask;
94
+ /**
95
+ * Propagate completion from Tasks → ACs → User Stories (bottom-up)
96
+ */
97
+ propagateCompletion(incrementPath: string, livingDocsPath: string): Promise<void>;
98
+ /**
99
+ * Fetch GitHub issue state
100
+ */
101
+ private fetchGitHubIssueState;
102
+ /**
103
+ * Extract ACs from GitHub issue body
104
+ */
105
+ private extractAcsFromIssue;
106
+ /**
107
+ * Extract Tasks from GitHub issue body
108
+ */
109
+ private extractTasksFromIssue;
110
+ /**
111
+ * Parse ACs from spec.md
112
+ */
113
+ private parseAcceptanceCriteria;
114
+ /**
115
+ * Parse Tasks from tasks.md
116
+ */
117
+ private parseTasks;
118
+ /**
119
+ * Group ACs by User Story ID
120
+ */
121
+ private groupAcsByUserStory;
122
+ /**
123
+ * Filter tasks by AC IDs
124
+ */
125
+ private filterTasksByAcIds;
126
+ /**
127
+ * Find User Story file by ID (with caching for performance)
128
+ */
129
+ private findUserStoryFile;
130
+ /**
131
+ * Find User Story file that contains specific task
132
+ */
133
+ private findUserStoryFileForTask;
134
+ /**
135
+ * Update AC in User Story file
136
+ */
137
+ private updateUserStoryAc;
138
+ /**
139
+ * Update Task in User Story file
140
+ */
141
+ private updateUserStoryTask;
142
+ /**
143
+ * Update multiple ACs in User Story file
144
+ */
145
+ private updateUserStoryAcs;
146
+ /**
147
+ * Update multiple Tasks in User Story file
148
+ */
149
+ private updateUserStoryTasks;
150
+ /**
151
+ * Update AC in increment spec.md
152
+ */
153
+ private updateIncrementAc;
154
+ /**
155
+ * Update multiple ACs in increment spec.md
156
+ */
157
+ private updateIncrementAcs;
158
+ /**
159
+ * Update multiple Tasks in increment tasks.md
160
+ */
161
+ private updateIncrementTasks;
162
+ /**
163
+ * Update ACs in increment with conflict resolution (Increment wins)
164
+ *
165
+ * If GitHub and Increment disagree, Increment state wins as it's the source of truth.
166
+ * Conflicts are logged for transparency.
167
+ */
168
+ private updateIncrementAcsWithConflictResolution;
169
+ /**
170
+ * Update Tasks in increment with conflict resolution (Increment wins)
171
+ */
172
+ private updateIncrementTasksWithConflictResolution;
173
+ /**
174
+ * Update GitHub issue with ACs and Tasks
175
+ */
176
+ private updateGitHubIssue;
177
+ /**
178
+ * Add comment to GitHub issue
179
+ */
180
+ private addGitHubComment;
181
+ }
182
+ //# sourceMappingURL=ThreeLayerSyncManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeLayerSyncManager.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/ThreeLayerSyncManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,kBAAkB,CAAyC;IACnE,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAsB;IAK/C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACG,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,UAAU,CAAC;IAuEtB;;;;OAIG;IACG,qBAAqB,CACzB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC;IAuDtB;;;OAGG;YACW,kBAAkB;IAMhC;;OAEG;YACW,UAAU;IA6BxB;;OAEG;IACG,mBAAmB,CACvB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IA4ChB;;OAEG;YACW,qBAAqB;IAgBnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0B7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8B/B;;OAEG;IACH,OAAO,CAAC,UAAU;IA6ClB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;YACW,iBAAiB;IAuB/B;;OAEG;YACW,wBAAwB;IAgBtC;;OAEG;YACW,iBAAiB;IAW/B;;OAEG;YACW,mBAAmB;IAWjC;;OAEG;YACW,kBAAkB;IAYhC;;OAEG;YACW,oBAAoB;IAYlC;;OAEG;YACW,iBAAiB;IAW/B;;OAEG;YACW,kBAAkB;IAahC;;OAEG;YACW,oBAAoB;IAqBlC;;;;;OAKG;YACW,wCAAwC;IAmCtD;;OAEG;YACW,0CAA0C;IAyCxD;;OAEG;YACW,iBAAiB;IAqC/B;;OAEG;YACW,gBAAgB;CAS/B"}