specweave 0.34.5 → 0.34.8

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 (181) hide show
  1. package/bin/fix-marketplace-errors.sh +55 -7
  2. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -1
  3. package/dist/plugins/specweave-github/lib/github-feature-sync.js +3 -1
  4. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -1
  5. package/dist/plugins/specweave-github/lib/github-spec-sync.js +1 -1
  6. package/dist/plugins/specweave-github/lib/github-spec-sync.js.map +1 -1
  7. package/dist/src/cli/commands/import-docs.d.ts +3 -0
  8. package/dist/src/cli/commands/import-docs.d.ts.map +1 -1
  9. package/dist/src/cli/commands/import-docs.js +110 -91
  10. package/dist/src/cli/commands/import-docs.js.map +1 -1
  11. package/dist/src/cli/commands/init.d.ts.map +1 -1
  12. package/dist/src/cli/commands/init.js +16 -7
  13. package/dist/src/cli/commands/init.js.map +1 -1
  14. package/dist/src/cli/commands/living-docs.js +4 -4
  15. package/dist/src/cli/commands/living-docs.js.map +1 -1
  16. package/dist/src/cli/commands/sync-spec-commits.js +1 -1
  17. package/dist/src/cli/commands/sync-spec-commits.js.map +1 -1
  18. package/dist/src/cli/commands/sync-spec-content.js +1 -1
  19. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  20. package/dist/src/cli/helpers/github/increment-profile-selector.js +1 -1
  21. package/dist/src/cli/helpers/github/increment-profile-selector.js.map +1 -1
  22. package/dist/src/cli/helpers/github/profile-manager.d.ts +5 -5
  23. package/dist/src/cli/helpers/github/profile-manager.d.ts.map +1 -1
  24. package/dist/src/cli/helpers/github/profile-manager.js +24 -24
  25. package/dist/src/cli/helpers/github/profile-manager.js.map +1 -1
  26. package/dist/src/cli/helpers/init/brownfield-analysis.js +15 -15
  27. package/dist/src/cli/helpers/init/brownfield-analysis.js.map +1 -1
  28. package/dist/src/cli/helpers/init/config-detection.js +1 -1
  29. package/dist/src/cli/helpers/init/config-detection.js.map +1 -1
  30. package/dist/src/cli/helpers/init/living-docs-preflight.js +7 -7
  31. package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
  32. package/dist/src/cli/helpers/init/plugin-installer.d.ts.map +1 -1
  33. package/dist/src/cli/helpers/init/plugin-installer.js +61 -9
  34. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  35. package/dist/src/cli/helpers/init/sync-profile-helpers.d.ts.map +1 -1
  36. package/dist/src/cli/helpers/init/sync-profile-helpers.js +2 -4
  37. package/dist/src/cli/helpers/init/sync-profile-helpers.js.map +1 -1
  38. package/dist/src/cli/helpers/issue-tracker/ado-area-selection.d.ts +1 -4
  39. package/dist/src/cli/helpers/issue-tracker/ado-area-selection.d.ts.map +1 -1
  40. package/dist/src/cli/helpers/issue-tracker/ado-area-selection.js +0 -32
  41. package/dist/src/cli/helpers/issue-tracker/ado-area-selection.js.map +1 -1
  42. package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +1 -1
  43. package/dist/src/cli/helpers/issue-tracker/ado.js +3 -13
  44. package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
  45. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  46. package/dist/src/cli/helpers/issue-tracker/index.js +0 -1
  47. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  48. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts.map +1 -1
  49. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js +0 -7
  50. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js.map +1 -1
  51. package/dist/src/cli/helpers/issue-tracker/types.d.ts +1 -5
  52. package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -1
  53. package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -1
  54. package/dist/src/cli/workers/import-worker.js +5 -111
  55. package/dist/src/cli/workers/import-worker.js.map +1 -1
  56. package/dist/src/core/background/types.d.ts +3 -0
  57. package/dist/src/core/background/types.d.ts.map +1 -1
  58. package/dist/src/core/config/types.d.ts +0 -5
  59. package/dist/src/core/config/types.d.ts.map +1 -1
  60. package/dist/src/core/config/types.js.map +1 -1
  61. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -1
  62. package/dist/src/core/increment/increment-archiver.js +0 -6
  63. package/dist/src/core/increment/increment-archiver.js.map +1 -1
  64. package/dist/src/core/increment/increment-utils.d.ts +0 -4
  65. package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
  66. package/dist/src/core/increment/increment-utils.js +0 -6
  67. package/dist/src/core/increment/increment-utils.js.map +1 -1
  68. package/dist/src/core/living-docs/cross-project-sync.d.ts +0 -13
  69. package/dist/src/core/living-docs/cross-project-sync.d.ts.map +1 -1
  70. package/dist/src/core/living-docs/cross-project-sync.js +0 -25
  71. package/dist/src/core/living-docs/cross-project-sync.js.map +1 -1
  72. package/dist/src/core/living-docs/delivery/delivery-generator.d.ts +58 -0
  73. package/dist/src/core/living-docs/delivery/delivery-generator.d.ts.map +1 -0
  74. package/dist/src/core/living-docs/delivery/delivery-generator.js +501 -0
  75. package/dist/src/core/living-docs/delivery/delivery-generator.js.map +1 -0
  76. package/dist/src/core/living-docs/delivery/index.d.ts +8 -0
  77. package/dist/src/core/living-docs/delivery/index.d.ts.map +1 -0
  78. package/dist/src/core/living-docs/delivery/index.js +7 -0
  79. package/dist/src/core/living-docs/delivery/index.js.map +1 -0
  80. package/dist/src/core/living-docs/diagrams/index.d.ts +8 -0
  81. package/dist/src/core/living-docs/diagrams/index.d.ts.map +1 -0
  82. package/dist/src/core/living-docs/diagrams/index.js +7 -0
  83. package/dist/src/core/living-docs/diagrams/index.js.map +1 -0
  84. package/dist/src/core/living-docs/diagrams/mermaid-generator.d.ts +103 -0
  85. package/dist/src/core/living-docs/diagrams/mermaid-generator.d.ts.map +1 -0
  86. package/dist/src/core/living-docs/diagrams/mermaid-generator.js +515 -0
  87. package/dist/src/core/living-docs/diagrams/mermaid-generator.js.map +1 -0
  88. package/dist/src/core/living-docs/enterprise/enterprise-generator.d.ts +85 -0
  89. package/dist/src/core/living-docs/enterprise/enterprise-generator.d.ts.map +1 -0
  90. package/dist/src/core/living-docs/enterprise/enterprise-generator.js +556 -0
  91. package/dist/src/core/living-docs/enterprise/enterprise-generator.js.map +1 -0
  92. package/dist/src/core/living-docs/enterprise/history-analyzer.d.ts +91 -0
  93. package/dist/src/core/living-docs/enterprise/history-analyzer.d.ts.map +1 -0
  94. package/dist/src/core/living-docs/enterprise/history-analyzer.js +321 -0
  95. package/dist/src/core/living-docs/enterprise/history-analyzer.js.map +1 -0
  96. package/dist/src/core/living-docs/enterprise/index.d.ts +18 -0
  97. package/dist/src/core/living-docs/enterprise/index.d.ts.map +1 -0
  98. package/dist/src/core/living-docs/enterprise/index.js +14 -0
  99. package/dist/src/core/living-docs/enterprise/index.js.map +1 -0
  100. package/dist/src/core/living-docs/enterprise/relationship-mapper.d.ts +58 -0
  101. package/dist/src/core/living-docs/enterprise/relationship-mapper.d.ts.map +1 -0
  102. package/dist/src/core/living-docs/enterprise/relationship-mapper.js +227 -0
  103. package/dist/src/core/living-docs/enterprise/relationship-mapper.js.map +1 -0
  104. package/dist/src/core/living-docs/enterprise/spec-loader.d.ts +161 -0
  105. package/dist/src/core/living-docs/enterprise/spec-loader.d.ts.map +1 -0
  106. package/dist/src/core/living-docs/enterprise/spec-loader.js +470 -0
  107. package/dist/src/core/living-docs/enterprise/spec-loader.js.map +1 -0
  108. package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.d.ts +31 -1
  109. package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.d.ts.map +1 -1
  110. package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.js +626 -14
  111. package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.js.map +1 -1
  112. package/dist/src/core/living-docs/intelligent-analyzer/index.d.ts +8 -0
  113. package/dist/src/core/living-docs/intelligent-analyzer/index.d.ts.map +1 -1
  114. package/dist/src/core/living-docs/intelligent-analyzer/index.js +87 -4
  115. package/dist/src/core/living-docs/intelligent-analyzer/index.js.map +1 -1
  116. package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts +3 -1
  117. package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts.map +1 -1
  118. package/dist/src/core/living-docs/living-docs-sync.js +1 -1
  119. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  120. package/dist/src/core/living-docs/operations/index.d.ts +8 -0
  121. package/dist/src/core/living-docs/operations/index.d.ts.map +1 -0
  122. package/dist/src/core/living-docs/operations/index.js +7 -0
  123. package/dist/src/core/living-docs/operations/index.js.map +1 -0
  124. package/dist/src/core/living-docs/operations/ops-generator.d.ts +53 -0
  125. package/dist/src/core/living-docs/operations/ops-generator.d.ts.map +1 -0
  126. package/dist/src/core/living-docs/operations/ops-generator.js +462 -0
  127. package/dist/src/core/living-docs/operations/ops-generator.js.map +1 -0
  128. package/dist/src/core/project/project-manager.d.ts +0 -20
  129. package/dist/src/core/project/project-manager.d.ts.map +1 -1
  130. package/dist/src/core/project/project-manager.js +0 -49
  131. package/dist/src/core/project/project-manager.js.map +1 -1
  132. package/dist/src/core/repo-structure/prompt-consolidator.d.ts +0 -8
  133. package/dist/src/core/repo-structure/prompt-consolidator.d.ts.map +1 -1
  134. package/dist/src/core/repo-structure/prompt-consolidator.js +0 -28
  135. package/dist/src/core/repo-structure/prompt-consolidator.js.map +1 -1
  136. package/dist/src/core/sync/profile-manager.d.ts +5 -5
  137. package/dist/src/core/sync/profile-manager.d.ts.map +1 -1
  138. package/dist/src/core/sync/profile-manager.js +17 -17
  139. package/dist/src/core/sync/profile-manager.js.map +1 -1
  140. package/dist/src/core/types/sync-profile.d.ts +3 -20
  141. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  142. package/dist/src/core/types/sync-profile.js +4 -10
  143. package/dist/src/core/types/sync-profile.js.map +1 -1
  144. package/dist/src/integrations/ado/ado-client-factory.d.ts +2 -2
  145. package/dist/src/integrations/ado/ado-client-factory.js +2 -2
  146. package/dist/src/utils/project-detection.d.ts +16 -16
  147. package/dist/src/utils/project-detection.d.ts.map +1 -1
  148. package/dist/src/utils/project-detection.js +39 -39
  149. package/dist/src/utils/project-detection.js.map +1 -1
  150. package/dist/src/utils/validators/ado-validator.d.ts +0 -5
  151. package/dist/src/utils/validators/ado-validator.d.ts.map +1 -1
  152. package/dist/src/utils/validators/ado-validator.js +0 -23
  153. package/dist/src/utils/validators/ado-validator.js.map +1 -1
  154. package/package.json +1 -1
  155. package/plugins/specweave/commands/living-docs.md +168 -39
  156. package/plugins/specweave-github/lib/github-feature-sync.js +1 -1
  157. package/plugins/specweave-github/lib/github-feature-sync.ts +3 -1
  158. package/plugins/specweave-github/lib/github-spec-sync.js +1 -1
  159. package/plugins/specweave-github/lib/github-spec-sync.ts +1 -1
  160. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts +0 -45
  161. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts.map +0 -1
  162. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js +0 -247
  163. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js.map +0 -1
  164. package/dist/src/core/brownfield/analyzer.d.ts +0 -86
  165. package/dist/src/core/brownfield/analyzer.d.ts.map +0 -1
  166. package/dist/src/core/brownfield/analyzer.js +0 -365
  167. package/dist/src/core/brownfield/analyzer.js.map +0 -1
  168. package/dist/src/core/brownfield/importer.d.ts +0 -76
  169. package/dist/src/core/brownfield/importer.d.ts.map +0 -1
  170. package/dist/src/core/brownfield/importer.js +0 -287
  171. package/dist/src/core/brownfield/importer.js.map +0 -1
  172. package/dist/src/utils/env-multi-project-parser.d.ts +0 -237
  173. package/dist/src/utils/env-multi-project-parser.d.ts.map +0 -1
  174. package/dist/src/utils/env-multi-project-parser.js +0 -426
  175. package/dist/src/utils/env-multi-project-parser.js.map +0 -1
  176. package/plugins/specweave-github/lib/github-sync-bidirectional.d.js +0 -0
  177. package/plugins/specweave-github/lib/github-sync-bidirectional.d.ts +0 -36
  178. package/plugins/specweave-github/lib/github-sync-bidirectional.d.ts.map +0 -1
  179. package/plugins/specweave-github/lib/github-sync-bidirectional.js +0 -206
  180. package/plugins/specweave-github/lib/github-sync-bidirectional.js.map +0 -1
  181. package/plugins/specweave-github/lib/github-sync-bidirectional.ts +0 -362
@@ -0,0 +1,91 @@
1
+ /**
2
+ * History Analyzer
3
+ *
4
+ * Analyzes project history from multiple sources:
5
+ * - Git commit history
6
+ * - Increment metadata (completed, abandoned, archived)
7
+ * - Feature creation/completion dates
8
+ * - Release tags
9
+ *
10
+ * Produces a comprehensive timeline of project evolution.
11
+ */
12
+ import { Logger } from '../../../utils/logger.js';
13
+ import type { SpecsCatalog } from './spec-loader.js';
14
+ export interface TimelineEvent {
15
+ date: string;
16
+ type: EventType;
17
+ title: string;
18
+ description: string;
19
+ relatedEntities: string[];
20
+ metadata?: Record<string, any>;
21
+ }
22
+ export type EventType = 'feature_started' | 'feature_completed' | 'increment_started' | 'increment_completed' | 'increment_abandoned' | 'release' | 'milestone' | 'team_change' | 'config_change' | 'incident';
23
+ export interface ProjectTimeline {
24
+ projectName: string;
25
+ startDate: string;
26
+ currentVersion: string;
27
+ events: TimelineEvent[];
28
+ milestones: Milestone[];
29
+ releases: Release[];
30
+ }
31
+ export interface Milestone {
32
+ name: string;
33
+ date: string;
34
+ description: string;
35
+ features: string[];
36
+ }
37
+ export interface Release {
38
+ version: string;
39
+ date: string;
40
+ changelog: string[];
41
+ commits: number;
42
+ }
43
+ export interface HistoryAnalyzerOptions {
44
+ projectPath: string;
45
+ logger?: Logger;
46
+ }
47
+ /**
48
+ * Analyzes project history to build a timeline
49
+ */
50
+ export declare class HistoryAnalyzer {
51
+ private projectPath;
52
+ private logger;
53
+ constructor(options: HistoryAnalyzerOptions);
54
+ /**
55
+ * Analyze all history sources and build timeline
56
+ */
57
+ analyze(specsCatalog: SpecsCatalog): Promise<ProjectTimeline>;
58
+ /**
59
+ * Analyze all increment folders for history
60
+ */
61
+ private analyzeIncrements;
62
+ /**
63
+ * Analyze feature history from specs catalog
64
+ */
65
+ private analyzeFeatureHistory;
66
+ /**
67
+ * Analyze git tags for releases
68
+ */
69
+ private analyzeGitReleases;
70
+ /**
71
+ * Analyze config.json changes from git history
72
+ */
73
+ private analyzeConfigHistory;
74
+ /**
75
+ * Derive milestones from events
76
+ */
77
+ private deriveMilestones;
78
+ /**
79
+ * Get project name from config
80
+ */
81
+ private getProjectName;
82
+ /**
83
+ * Get project start date from earliest event
84
+ */
85
+ private getProjectStartDate;
86
+ /**
87
+ * Get current version from package.json or git tag
88
+ */
89
+ private getCurrentVersion;
90
+ }
91
+ //# sourceMappingURL=history-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-analyzer.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/enterprise/history-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AAE1E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,SAAS,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,qBAAqB,GACrB,SAAS,GACT,WAAW,GACX,aAAa,GACb,eAAe,GACf,UAAU,CAAC;AAEf,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,sBAAsB;IAK3C;;OAEG;IACG,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IA4CnE;;OAEG;YACW,iBAAiB;IAqE/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuD1B;;OAEG;YACW,oBAAoB;IAmClC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4CxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAqB1B"}
@@ -0,0 +1,321 @@
1
+ /**
2
+ * History Analyzer
3
+ *
4
+ * Analyzes project history from multiple sources:
5
+ * - Git commit history
6
+ * - Increment metadata (completed, abandoned, archived)
7
+ * - Feature creation/completion dates
8
+ * - Release tags
9
+ *
10
+ * Produces a comprehensive timeline of project evolution.
11
+ */
12
+ import * as fs from 'fs';
13
+ import * as path from 'path';
14
+ import { execSync } from 'child_process';
15
+ import { consoleLogger } from '../../../utils/logger.js';
16
+ /**
17
+ * Analyzes project history to build a timeline
18
+ */
19
+ export class HistoryAnalyzer {
20
+ constructor(options) {
21
+ this.projectPath = options.projectPath;
22
+ this.logger = options.logger ?? consoleLogger;
23
+ }
24
+ /**
25
+ * Analyze all history sources and build timeline
26
+ */
27
+ async analyze(specsCatalog) {
28
+ const events = [];
29
+ // 1. Analyze increment history
30
+ const incrementEvents = await this.analyzeIncrements();
31
+ events.push(...incrementEvents);
32
+ // 2. Analyze feature history from specs
33
+ const featureEvents = this.analyzeFeatureHistory(specsCatalog);
34
+ events.push(...featureEvents);
35
+ // 3. Analyze git releases/tags
36
+ const releases = this.analyzeGitReleases();
37
+ for (const release of releases) {
38
+ events.push({
39
+ date: release.date,
40
+ type: 'release',
41
+ title: `Release ${release.version}`,
42
+ description: release.changelog.slice(0, 3).join('; '),
43
+ relatedEntities: [release.version],
44
+ metadata: { commits: release.commits },
45
+ });
46
+ }
47
+ // 4. Analyze config changes
48
+ const configEvents = await this.analyzeConfigHistory();
49
+ events.push(...configEvents);
50
+ // Sort by date
51
+ events.sort((a, b) => a.date.localeCompare(b.date));
52
+ // Derive milestones
53
+ const milestones = this.deriveMilestones(events, specsCatalog);
54
+ return {
55
+ projectName: this.getProjectName(),
56
+ startDate: this.getProjectStartDate(events),
57
+ currentVersion: this.getCurrentVersion(),
58
+ events,
59
+ milestones,
60
+ releases,
61
+ };
62
+ }
63
+ /**
64
+ * Analyze all increment folders for history
65
+ */
66
+ async analyzeIncrements() {
67
+ const events = [];
68
+ const incrementsPath = path.join(this.projectPath, '.specweave/increments');
69
+ if (!fs.existsSync(incrementsPath)) {
70
+ return events;
71
+ }
72
+ // Check all subdirectories
73
+ const subdirs = ['', '_archive', '_paused', '_abandoned'];
74
+ for (const subdir of subdirs) {
75
+ const checkPath = subdir ? path.join(incrementsPath, subdir) : incrementsPath;
76
+ if (!fs.existsSync(checkPath))
77
+ continue;
78
+ const entries = fs.readdirSync(checkPath, { withFileTypes: true });
79
+ for (const entry of entries) {
80
+ if (!entry.isDirectory())
81
+ continue;
82
+ if (entry.name.startsWith('_'))
83
+ continue;
84
+ const metadataPath = path.join(checkPath, entry.name, 'metadata.json');
85
+ if (!fs.existsSync(metadataPath))
86
+ continue;
87
+ try {
88
+ const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
89
+ // Increment started event
90
+ if (metadata.createdAt) {
91
+ events.push({
92
+ date: metadata.createdAt,
93
+ type: 'increment_started',
94
+ title: `Started: ${entry.name}`,
95
+ description: metadata.title || entry.name,
96
+ relatedEntities: [entry.name, metadata.feature_id].filter(Boolean),
97
+ metadata: { status: metadata.status },
98
+ });
99
+ }
100
+ // Increment completed event
101
+ if (metadata.status === 'completed' && metadata.completedAt) {
102
+ events.push({
103
+ date: metadata.completedAt,
104
+ type: 'increment_completed',
105
+ title: `Completed: ${entry.name}`,
106
+ description: metadata.title || entry.name,
107
+ relatedEntities: [entry.name, metadata.feature_id].filter(Boolean),
108
+ });
109
+ }
110
+ // Increment abandoned event
111
+ if (metadata.status === 'abandoned' && metadata.abandonedAt) {
112
+ events.push({
113
+ date: metadata.abandonedAt,
114
+ type: 'increment_abandoned',
115
+ title: `Abandoned: ${entry.name}`,
116
+ description: metadata.abandonReason || 'No reason provided',
117
+ relatedEntities: [entry.name],
118
+ });
119
+ }
120
+ }
121
+ catch (err) {
122
+ this.logger.debug(`Failed to parse metadata for ${entry.name}: ${err.message}`);
123
+ }
124
+ }
125
+ }
126
+ return events;
127
+ }
128
+ /**
129
+ * Analyze feature history from specs catalog
130
+ */
131
+ analyzeFeatureHistory(catalog) {
132
+ const events = [];
133
+ for (const feature of catalog.features) {
134
+ // Feature created
135
+ if (feature.createdAt) {
136
+ events.push({
137
+ date: feature.createdAt,
138
+ type: 'feature_started',
139
+ title: `Feature: ${feature.featureName}`,
140
+ description: `${feature.featureId} created with ${feature.userStories.length} user stories`,
141
+ relatedEntities: [feature.featureId, ...feature.userStories.map(us => us.id)],
142
+ });
143
+ }
144
+ // Feature completed
145
+ if (feature.status === 'completed' && feature.completedAt) {
146
+ events.push({
147
+ date: feature.completedAt,
148
+ type: 'feature_completed',
149
+ title: `Completed: ${feature.featureName}`,
150
+ description: `${feature.featureId} - all ${feature.totalACs} acceptance criteria met`,
151
+ relatedEntities: [feature.featureId],
152
+ });
153
+ }
154
+ }
155
+ return events;
156
+ }
157
+ /**
158
+ * Analyze git tags for releases
159
+ */
160
+ analyzeGitReleases() {
161
+ const releases = [];
162
+ try {
163
+ // Get all tags with dates
164
+ const tagOutput = execSync('git tag -l --format="%(refname:short)|%(creatordate:iso8601)"', { cwd: this.projectPath, encoding: 'utf-8' });
165
+ const tags = tagOutput.trim().split('\n').filter(Boolean);
166
+ for (const tagLine of tags) {
167
+ const [version, date] = tagLine.split('|');
168
+ if (!version || !date)
169
+ continue;
170
+ // Get changelog for this tag
171
+ let changelog = [];
172
+ let commits = 0;
173
+ try {
174
+ // Try to get commits since previous tag
175
+ const prevTag = execSync(`git describe --tags --abbrev=0 ${version}^ 2>/dev/null || echo ""`, { cwd: this.projectPath, encoding: 'utf-8' }).trim();
176
+ const range = prevTag ? `${prevTag}..${version}` : version;
177
+ const logOutput = execSync(`git log ${range} --oneline 2>/dev/null || echo ""`, { cwd: this.projectPath, encoding: 'utf-8' });
178
+ const commitLines = logOutput.trim().split('\n').filter(Boolean);
179
+ commits = commitLines.length;
180
+ changelog = commitLines.slice(0, 10).map(line => {
181
+ const [, ...rest] = line.split(' ');
182
+ return rest.join(' ');
183
+ });
184
+ }
185
+ catch { /* ignore */ }
186
+ releases.push({
187
+ version,
188
+ date: date.substring(0, 10), // Just date part
189
+ changelog,
190
+ commits,
191
+ });
192
+ }
193
+ }
194
+ catch (err) {
195
+ this.logger.debug(`Failed to analyze git releases: ${err.message}`);
196
+ }
197
+ return releases.sort((a, b) => b.date.localeCompare(a.date));
198
+ }
199
+ /**
200
+ * Analyze config.json changes from git history
201
+ */
202
+ async analyzeConfigHistory() {
203
+ const events = [];
204
+ try {
205
+ const logOutput = execSync('git log --follow --format="%H|%ci|%s" -p .specweave/config.json 2>/dev/null | head -500', { cwd: this.projectPath, encoding: 'utf-8' });
206
+ // Parse commit info from log
207
+ const commitPattern = /^([a-f0-9]+)\|([^|]+)\|(.+)$/gm;
208
+ let match;
209
+ while ((match = commitPattern.exec(logOutput)) !== null) {
210
+ const [, hash, date, message] = match;
211
+ // Check if it's a significant config change
212
+ if (message.includes('config') ||
213
+ message.includes('project') ||
214
+ message.includes('sync') ||
215
+ message.includes('multi')) {
216
+ events.push({
217
+ date: date.substring(0, 10),
218
+ type: 'config_change',
219
+ title: 'Configuration updated',
220
+ description: message,
221
+ relatedEntities: [hash.substring(0, 7)],
222
+ });
223
+ }
224
+ }
225
+ }
226
+ catch { /* ignore */ }
227
+ return events;
228
+ }
229
+ /**
230
+ * Derive milestones from events
231
+ */
232
+ deriveMilestones(events, catalog) {
233
+ const milestones = [];
234
+ // Major milestones: every 10 features completed
235
+ const completedFeatures = catalog.features.filter(f => f.status === 'completed');
236
+ const sortedCompleted = completedFeatures.sort((a, b) => (a.completedAt || '').localeCompare(b.completedAt || ''));
237
+ let milestone = 10;
238
+ for (let i = 0; i < sortedCompleted.length; i++) {
239
+ if ((i + 1) % 10 === 0) {
240
+ const feature = sortedCompleted[i];
241
+ milestones.push({
242
+ name: `${milestone} Features Completed`,
243
+ date: feature.completedAt || feature.createdAt,
244
+ description: `Milestone: ${milestone} features delivered`,
245
+ features: sortedCompleted.slice(i - 9, i + 1).map(f => f.featureId),
246
+ });
247
+ milestone += 10;
248
+ }
249
+ }
250
+ // Version milestones
251
+ const releases = events.filter(e => e.type === 'release');
252
+ for (const release of releases) {
253
+ if (release.title.includes('1.0') ||
254
+ release.title.includes('2.0') ||
255
+ release.title.match(/v?\d+\.0\.0/)) {
256
+ milestones.push({
257
+ name: release.title,
258
+ date: release.date,
259
+ description: 'Major version release',
260
+ features: [],
261
+ });
262
+ }
263
+ }
264
+ return milestones.sort((a, b) => a.date.localeCompare(b.date));
265
+ }
266
+ /**
267
+ * Get project name from config
268
+ */
269
+ getProjectName() {
270
+ const configPath = path.join(this.projectPath, '.specweave/config.json');
271
+ if (fs.existsSync(configPath)) {
272
+ try {
273
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
274
+ return config.project?.name || config.name || path.basename(this.projectPath);
275
+ }
276
+ catch { /* ignore */ }
277
+ }
278
+ return path.basename(this.projectPath);
279
+ }
280
+ /**
281
+ * Get project start date from earliest event
282
+ */
283
+ getProjectStartDate(events) {
284
+ if (events.length === 0) {
285
+ // Try git first commit
286
+ try {
287
+ const output = execSync('git log --reverse --format="%ci" | head -1', { cwd: this.projectPath, encoding: 'utf-8' });
288
+ return output.trim().substring(0, 10);
289
+ }
290
+ catch { /* ignore */ }
291
+ return new Date().toISOString().substring(0, 10);
292
+ }
293
+ return events[0].date.substring(0, 10);
294
+ }
295
+ /**
296
+ * Get current version from package.json or git tag
297
+ */
298
+ getCurrentVersion() {
299
+ // Try package.json
300
+ const packagePath = path.join(this.projectPath, 'package.json');
301
+ if (fs.existsSync(packagePath)) {
302
+ try {
303
+ const pkg = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
304
+ if (pkg.version)
305
+ return pkg.version;
306
+ }
307
+ catch { /* ignore */ }
308
+ }
309
+ // Try latest git tag
310
+ try {
311
+ const tag = execSync('git describe --tags --abbrev=0 2>/dev/null', {
312
+ cwd: this.projectPath,
313
+ encoding: 'utf-8',
314
+ }).trim();
315
+ return tag;
316
+ }
317
+ catch { /* ignore */ }
318
+ return 'unknown';
319
+ }
320
+ }
321
+ //# sourceMappingURL=history-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-analyzer.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/enterprise/history-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Enterprise Living Docs Module
3
+ *
4
+ * Generates comprehensive enterprise-grade documentation:
5
+ * - Full spec catalog with all features and user stories
6
+ * - Project history and timeline
7
+ * - Team directory with ownership mapping
8
+ * - Cross-references and relationship diagrams
9
+ */
10
+ export { EnhancedSpecLoader } from './spec-loader.js';
11
+ export type { SpecsCatalog, EnhancedFeatureSpec, UserStoryDetail, AcceptanceCriterion, ExternalReference, SpecLoaderOptions, } from './spec-loader.js';
12
+ export { EnterpriseGenerator } from './enterprise-generator.js';
13
+ export type { EnterpriseGeneratorOptions, EnterpriseGenerationResult, EnterpriseMetrics, } from './enterprise-generator.js';
14
+ export { HistoryAnalyzer } from './history-analyzer.js';
15
+ export type { ProjectTimeline, TimelineEvent, EventType, Milestone, Release, HistoryAnalyzerOptions, } from './history-analyzer.js';
16
+ export { RelationshipMapper } from './relationship-mapper.js';
17
+ export type { RelationshipMap, RelationshipMapperOptions, } from './relationship-mapper.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/enterprise/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EACP,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Enterprise Living Docs Module
3
+ *
4
+ * Generates comprehensive enterprise-grade documentation:
5
+ * - Full spec catalog with all features and user stories
6
+ * - Project history and timeline
7
+ * - Team directory with ownership mapping
8
+ * - Cross-references and relationship diagrams
9
+ */
10
+ export { EnhancedSpecLoader } from './spec-loader.js';
11
+ export { EnterpriseGenerator } from './enterprise-generator.js';
12
+ export { HistoryAnalyzer } from './history-analyzer.js';
13
+ export { RelationshipMapper } from './relationship-mapper.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/enterprise/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAUtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOhE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAUxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Relationship Mapper
3
+ *
4
+ * Maps relationships between all entities:
5
+ * - Features → Code files
6
+ * - Teams → Features
7
+ * - Modules → Modules (dependencies)
8
+ * - Increments → Features
9
+ * - External refs → Internal entities
10
+ */
11
+ import { Logger } from '../../../utils/logger.js';
12
+ import type { SpecsCatalog } from './spec-loader.js';
13
+ import type { RepoAnalysis } from '../intelligent-analyzer/types.js';
14
+ import type { OrganizationSynthesisResult } from '../intelligent-analyzer/organization-synthesizer.js';
15
+ export interface RelationshipMap {
16
+ featureToCode: Map<string, string[]>;
17
+ featureToTeam: Map<string, string>;
18
+ teamToFeatures: Map<string, string[]>;
19
+ moduleDependencies: Map<string, string[]>;
20
+ incrementToFeature: Map<string, string>;
21
+ externalToFeature: Map<string, string>;
22
+ totalRelationships: number;
23
+ }
24
+ export interface RelationshipMapperOptions {
25
+ projectPath: string;
26
+ logger?: Logger;
27
+ repoAnalyses?: Map<string, RepoAnalysis>;
28
+ }
29
+ /**
30
+ * Maps relationships between all entities in the system
31
+ */
32
+ export declare class RelationshipMapper {
33
+ private projectPath;
34
+ private logger;
35
+ private repoAnalyses?;
36
+ constructor(options: RelationshipMapperOptions);
37
+ /**
38
+ * Build complete relationship map
39
+ */
40
+ map(catalog: SpecsCatalog, orgResult?: OrganizationSynthesisResult): Promise<RelationshipMap>;
41
+ /**
42
+ * Find code files related to a feature
43
+ */
44
+ private findCodeForFeature;
45
+ /**
46
+ * Extract key terms from a title for code matching
47
+ */
48
+ private extractKeyTerms;
49
+ /**
50
+ * Find files matching a term
51
+ */
52
+ private findFilesByTerm;
53
+ /**
54
+ * Extract module dependencies from repo analysis
55
+ */
56
+ private extractModuleDependencies;
57
+ }
58
+ //# sourceMappingURL=relationship-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-mapper.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/enterprise/relationship-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,kCAAkC,CAAC;AACnF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AAEvG,MAAM,WAAW,eAAe;IAE9B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAGrC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGnC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAGtC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAG1C,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGxC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGvC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAC,CAA4B;gBAErC,OAAO,EAAE,yBAAyB;IAM9C;;OAEG;IACG,GAAG,CACP,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,2BAA2B,GACtC,OAAO,CAAC,eAAe,CAAC;IA4F3B;;OAEG;YACW,kBAAkB;IA4ChC;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;YACW,eAAe;IAoB7B;;OAEG;IACH,OAAO,CAAC,yBAAyB;CAqClC"}