specweave 0.32.10 → 0.33.2

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 (172) hide show
  1. package/CLAUDE.md +106 -1
  2. package/dist/src/cli/add-child-pid.d.ts +11 -0
  3. package/dist/src/cli/add-child-pid.d.ts.map +1 -0
  4. package/dist/src/cli/add-child-pid.js +42 -0
  5. package/dist/src/cli/add-child-pid.js.map +1 -0
  6. package/dist/src/cli/add-child-process.d.ts +15 -0
  7. package/dist/src/cli/add-child-process.d.ts.map +1 -0
  8. package/dist/src/cli/add-child-process.js +40 -0
  9. package/dist/src/cli/add-child-process.js.map +1 -0
  10. package/dist/src/cli/check-watchdog.d.ts +15 -0
  11. package/dist/src/cli/check-watchdog.d.ts.map +1 -0
  12. package/dist/src/cli/check-watchdog.js +47 -0
  13. package/dist/src/cli/check-watchdog.js.map +1 -0
  14. package/dist/src/cli/cleanup-zombies.d.ts +14 -0
  15. package/dist/src/cli/cleanup-zombies.d.ts.map +1 -0
  16. package/dist/src/cli/cleanup-zombies.js +268 -0
  17. package/dist/src/cli/cleanup-zombies.js.map +1 -0
  18. package/dist/src/cli/find-session-by-pid.d.ts +14 -0
  19. package/dist/src/cli/find-session-by-pid.d.ts.map +1 -0
  20. package/dist/src/cli/find-session-by-pid.js +45 -0
  21. package/dist/src/cli/find-session-by-pid.js.map +1 -0
  22. package/dist/src/cli/get-stale-sessions.d.ts +17 -0
  23. package/dist/src/cli/get-stale-sessions.d.ts.map +1 -0
  24. package/dist/src/cli/get-stale-sessions.js +36 -0
  25. package/dist/src/cli/get-stale-sessions.js.map +1 -0
  26. package/dist/src/cli/register-session.d.ts +16 -0
  27. package/dist/src/cli/register-session.d.ts.map +1 -0
  28. package/dist/src/cli/register-session.js +48 -0
  29. package/dist/src/cli/register-session.js.map +1 -0
  30. package/dist/src/cli/remove-session.d.ts +11 -0
  31. package/dist/src/cli/remove-session.d.ts.map +1 -0
  32. package/dist/src/cli/remove-session.js +36 -0
  33. package/dist/src/cli/remove-session.js.map +1 -0
  34. package/dist/src/cli/update-heartbeat.d.ts +11 -0
  35. package/dist/src/cli/update-heartbeat.d.ts.map +1 -0
  36. package/dist/src/cli/update-heartbeat.js +36 -0
  37. package/dist/src/cli/update-heartbeat.js.map +1 -0
  38. package/dist/src/config/types.d.ts +1208 -203
  39. package/dist/src/config/types.d.ts.map +1 -1
  40. package/dist/src/core/background/job-manager.d.ts +16 -0
  41. package/dist/src/core/background/job-manager.d.ts.map +1 -1
  42. package/dist/src/core/background/job-manager.js +110 -15
  43. package/dist/src/core/background/job-manager.js.map +1 -1
  44. package/dist/src/core/increment/increment-utils.d.ts +26 -1
  45. package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
  46. package/dist/src/core/increment/increment-utils.js +66 -4
  47. package/dist/src/core/increment/increment-utils.js.map +1 -1
  48. package/dist/src/core/increment/status-change-sync-trigger.d.ts +3 -1
  49. package/dist/src/core/increment/status-change-sync-trigger.d.ts.map +1 -1
  50. package/dist/src/core/increment/status-change-sync-trigger.js +5 -2
  51. package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
  52. package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.d.ts.map +1 -1
  53. package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.js +48 -12
  54. package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.js.map +1 -1
  55. package/dist/src/core/living-docs/intelligent-analyzer/cache-manager.d.ts +70 -0
  56. package/dist/src/core/living-docs/intelligent-analyzer/cache-manager.d.ts.map +1 -0
  57. package/dist/src/core/living-docs/intelligent-analyzer/cache-manager.js +188 -0
  58. package/dist/src/core/living-docs/intelligent-analyzer/cache-manager.js.map +1 -0
  59. package/dist/src/core/living-docs/intelligent-analyzer/dashboard-generator.d.ts +33 -0
  60. package/dist/src/core/living-docs/intelligent-analyzer/dashboard-generator.d.ts.map +1 -0
  61. package/dist/src/core/living-docs/intelligent-analyzer/dashboard-generator.js +290 -0
  62. package/dist/src/core/living-docs/intelligent-analyzer/dashboard-generator.js.map +1 -0
  63. package/dist/src/core/living-docs/intelligent-analyzer/deep-repo-analyzer.d.ts.map +1 -1
  64. package/dist/src/core/living-docs/intelligent-analyzer/deep-repo-analyzer.js +114 -11
  65. package/dist/src/core/living-docs/intelligent-analyzer/deep-repo-analyzer.js.map +1 -1
  66. package/dist/src/core/living-docs/intelligent-analyzer/graph-visualizer.d.ts +23 -0
  67. package/dist/src/core/living-docs/intelligent-analyzer/graph-visualizer.d.ts.map +1 -0
  68. package/dist/src/core/living-docs/intelligent-analyzer/graph-visualizer.js +283 -0
  69. package/dist/src/core/living-docs/intelligent-analyzer/graph-visualizer.js.map +1 -0
  70. package/dist/src/core/living-docs/intelligent-analyzer/mermaid-generator.d.ts +44 -0
  71. package/dist/src/core/living-docs/intelligent-analyzer/mermaid-generator.d.ts.map +1 -0
  72. package/dist/src/core/living-docs/intelligent-analyzer/mermaid-generator.js +61 -0
  73. package/dist/src/core/living-docs/intelligent-analyzer/mermaid-generator.js.map +1 -0
  74. package/dist/src/core/living-docs/intelligent-analyzer/orchestrator.d.ts +126 -0
  75. package/dist/src/core/living-docs/intelligent-analyzer/orchestrator.d.ts.map +1 -0
  76. package/dist/src/core/living-docs/intelligent-analyzer/orchestrator.js +378 -0
  77. package/dist/src/core/living-docs/intelligent-analyzer/orchestrator.js.map +1 -0
  78. package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.d.ts.map +1 -1
  79. package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.js +57 -0
  80. package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.js.map +1 -1
  81. package/dist/src/core/living-docs/intelligent-analyzer/pattern-analyzer.d.ts +82 -0
  82. package/dist/src/core/living-docs/intelligent-analyzer/pattern-analyzer.d.ts.map +1 -0
  83. package/dist/src/core/living-docs/intelligent-analyzer/pattern-analyzer.js +430 -0
  84. package/dist/src/core/living-docs/intelligent-analyzer/pattern-analyzer.js.map +1 -0
  85. package/dist/src/core/living-docs/intelligent-analyzer/repo-scanner.d.ts +84 -0
  86. package/dist/src/core/living-docs/intelligent-analyzer/repo-scanner.d.ts.map +1 -0
  87. package/dist/src/core/living-docs/intelligent-analyzer/repo-scanner.js +387 -0
  88. package/dist/src/core/living-docs/intelligent-analyzer/repo-scanner.js.map +1 -0
  89. package/dist/src/core/living-docs/intelligent-analyzer/report-writer.d.ts +61 -0
  90. package/dist/src/core/living-docs/intelligent-analyzer/report-writer.d.ts.map +1 -0
  91. package/dist/src/core/living-docs/intelligent-analyzer/report-writer.js +174 -0
  92. package/dist/src/core/living-docs/intelligent-analyzer/report-writer.js.map +1 -0
  93. package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts +1 -1
  94. package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts.map +1 -1
  95. package/dist/src/core/living-docs/module-analyzer.d.ts +3 -0
  96. package/dist/src/core/living-docs/module-analyzer.d.ts.map +1 -1
  97. package/dist/src/core/living-docs/module-analyzer.js +40 -1
  98. package/dist/src/core/living-docs/module-analyzer.js.map +1 -1
  99. package/dist/src/core/qa/qa-runner.js +1 -1
  100. package/dist/src/core/qa/qa-runner.js.map +1 -1
  101. package/dist/src/core/scheduler/session-sync-executor.js +1 -1
  102. package/dist/src/core/scheduler/session-sync-executor.js.map +1 -1
  103. package/dist/src/core/status-line/status-line-updater.d.ts +1 -1
  104. package/dist/src/core/status-line/status-line-updater.d.ts.map +1 -1
  105. package/dist/src/core/status-line/status-line-updater.js +4 -3
  106. package/dist/src/core/status-line/status-line-updater.js.map +1 -1
  107. package/dist/src/importers/jira-importer.d.ts.map +1 -1
  108. package/dist/src/importers/jira-importer.js +18 -9
  109. package/dist/src/importers/jira-importer.js.map +1 -1
  110. package/dist/src/init/architecture/types.d.ts +140 -33
  111. package/dist/src/init/architecture/types.d.ts.map +1 -1
  112. package/dist/src/init/compliance/types.d.ts +27 -30
  113. package/dist/src/init/compliance/types.d.ts.map +1 -1
  114. package/dist/src/init/repo/types.d.ts +34 -11
  115. package/dist/src/init/repo/types.d.ts.map +1 -1
  116. package/dist/src/init/research/src/config/types.d.ts +82 -15
  117. package/dist/src/init/research/src/config/types.d.ts.map +1 -1
  118. package/dist/src/init/research/types.d.ts +93 -38
  119. package/dist/src/init/research/types.d.ts.map +1 -1
  120. package/dist/src/init/team/types.d.ts +42 -4
  121. package/dist/src/init/team/types.d.ts.map +1 -1
  122. package/dist/src/sync/ado-reconciler.js +1 -1
  123. package/dist/src/sync/ado-reconciler.js.map +1 -1
  124. package/dist/src/sync/github-reconciler.js +1 -1
  125. package/dist/src/sync/github-reconciler.js.map +1 -1
  126. package/dist/src/sync/jira-reconciler.js +1 -1
  127. package/dist/src/sync/jira-reconciler.js.map +1 -1
  128. package/dist/src/types/session.d.ts +65 -0
  129. package/dist/src/types/session.d.ts.map +1 -0
  130. package/dist/src/types/session.js +8 -0
  131. package/dist/src/types/session.js.map +1 -0
  132. package/dist/src/utils/lock-manager.d.ts +48 -0
  133. package/dist/src/utils/lock-manager.d.ts.map +1 -0
  134. package/dist/src/utils/lock-manager.js +195 -0
  135. package/dist/src/utils/lock-manager.js.map +1 -0
  136. package/dist/src/utils/notification-manager.d.ts +45 -0
  137. package/dist/src/utils/notification-manager.d.ts.map +1 -0
  138. package/dist/src/utils/notification-manager.js +130 -0
  139. package/dist/src/utils/notification-manager.js.map +1 -0
  140. package/dist/src/utils/platform-utils.d.ts +136 -0
  141. package/dist/src/utils/platform-utils.d.ts.map +1 -0
  142. package/dist/src/utils/platform-utils.js +366 -0
  143. package/dist/src/utils/platform-utils.js.map +1 -0
  144. package/dist/src/utils/session-registry.d.ts +142 -0
  145. package/dist/src/utils/session-registry.d.ts.map +1 -0
  146. package/dist/src/utils/session-registry.js +480 -0
  147. package/dist/src/utils/session-registry.js.map +1 -0
  148. package/package.json +5 -2
  149. package/plugins/specweave/commands/specweave-living-docs.md +42 -0
  150. package/plugins/specweave/hooks/hooks.json +10 -0
  151. package/plugins/specweave/hooks/lib/update-active-increment.sh +2 -2
  152. package/plugins/specweave/hooks/lib/update-status-line.sh +1 -1
  153. package/plugins/specweave/hooks/post-increment-status-change.sh +3 -3
  154. package/plugins/specweave/hooks/post-metadata-change.sh +1 -1
  155. package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -26
  156. package/plugins/specweave/hooks/universal/session-start.cmd +16 -16
  157. package/plugins/specweave/hooks/universal/session-start.ps1 +16 -16
  158. package/plugins/specweave/hooks/user-prompt-submit.sh +2 -2
  159. package/plugins/specweave/hooks/v2/guards/increment-root-guard.sh +61 -0
  160. package/plugins/specweave/hooks/v2/session-end.sh +69 -0
  161. package/plugins/specweave/hooks/v2/session-start.sh +81 -0
  162. package/plugins/specweave/lib/vendor/sync/github-reconciler.js +1 -1
  163. package/plugins/specweave/lib/vendor/sync/github-reconciler.js.map +1 -1
  164. package/plugins/specweave/scripts/heartbeat.sh +110 -0
  165. package/plugins/specweave/scripts/progress.js +34 -4
  166. package/plugins/specweave/scripts/read-jobs.sh +1 -1
  167. package/plugins/specweave/scripts/read-progress.sh +50 -5
  168. package/plugins/specweave/scripts/read-workflow.sh +1 -1
  169. package/plugins/specweave/scripts/session-watchdog.sh +65 -0
  170. package/plugins/specweave/scripts/status.js +28 -11
  171. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +738 -0
  172. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +1107 -0
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Living Docs Orchestrator
3
+ *
4
+ * Main coordinator that manages the entire analysis pipeline with caching and change detection.
5
+ *
6
+ * Architecture:
7
+ * Phase 1: Discovery (repo scanning)
8
+ * Phase 2: Analysis (patterns, modules, tech debt)
9
+ * Phase 3: Synthesis (ADR generation with LLM)
10
+ */
11
+ import { Logger } from '../../../utils/logger.js';
12
+ import type { RepoAnalysis, LLMProvider } from './types.js';
13
+ export interface OrchestratorOptions {
14
+ projectRoot: string;
15
+ logger?: Logger;
16
+ llmProvider?: LLMProvider;
17
+ }
18
+ export interface UpdateOptions {
19
+ incremental?: boolean;
20
+ full?: boolean;
21
+ adrOnly?: boolean;
22
+ techDebtOnly?: boolean;
23
+ modulesOnly?: boolean;
24
+ dryRun?: boolean;
25
+ }
26
+ export interface DiscoveryResult {
27
+ repos: Array<{
28
+ name: string;
29
+ path: string;
30
+ }>;
31
+ totalFiles: number;
32
+ duration: number;
33
+ }
34
+ export interface AnalysisResult {
35
+ repoAnalyses: Map<string, RepoAnalysis>;
36
+ duration: number;
37
+ filesCreated?: string[];
38
+ }
39
+ export interface SynthesisResult {
40
+ adrsGenerated: number;
41
+ teamsClustered: number;
42
+ duration: number;
43
+ filesCreated?: string[];
44
+ }
45
+ export interface PhaseResult {
46
+ success: boolean;
47
+ duration: number;
48
+ message: string;
49
+ }
50
+ export interface UpdateResult {
51
+ success: boolean;
52
+ duration: number;
53
+ phases: {
54
+ discovery: PhaseResult;
55
+ analysis: PhaseResult;
56
+ synthesis: PhaseResult;
57
+ };
58
+ filesCreated: string[];
59
+ filesUpdated: string[];
60
+ errors: string[];
61
+ }
62
+ export interface ChangedFiles {
63
+ path: string;
64
+ status: 'added' | 'modified' | 'deleted';
65
+ }
66
+ /**
67
+ * Main orchestrator for living docs intelligent analysis.
68
+ *
69
+ * Coordinates all analysis phases with caching and Git-based change detection.
70
+ */
71
+ export declare class LivingDocsOrchestrator {
72
+ private projectRoot;
73
+ private logger;
74
+ private llmProvider?;
75
+ private cacheDir;
76
+ constructor(options: OrchestratorOptions);
77
+ /**
78
+ * Main entry point - orchestrates full update or incremental update.
79
+ */
80
+ update(options?: UpdateOptions): Promise<UpdateResult>;
81
+ /**
82
+ * Phase 1: Discovery
83
+ * Scans all repos (umbrella or single) and creates file inventory.
84
+ */
85
+ private executePhase1Discovery;
86
+ /**
87
+ * Phase 2: Analysis
88
+ * Pattern detection, module graph, tech debt detection.
89
+ */
90
+ private executePhase2Analysis;
91
+ /**
92
+ * Phase 3: Synthesis
93
+ * LLM-powered ADR synthesis, team clustering, architecture docs.
94
+ */
95
+ private executePhase3Synthesis;
96
+ /**
97
+ * Detect changes since last update using Git diff.
98
+ */
99
+ detectChanges(): Promise<ChangedFiles[]>;
100
+ /**
101
+ * Load data from cache.
102
+ */
103
+ loadFromCache<T>(key: string): Promise<T | null>;
104
+ /**
105
+ * Save data to cache.
106
+ */
107
+ saveToCache(key: string, data: any): Promise<void>;
108
+ /**
109
+ * Clear all cache and checkpoint data.
110
+ * Used when --full flag is set to force complete rebuild.
111
+ */
112
+ clearCache(): Promise<void>;
113
+ /**
114
+ * Discover all repos (umbrella or single).
115
+ */
116
+ private discoverRepos;
117
+ /**
118
+ * Get current Git commit hash.
119
+ */
120
+ private getCurrentCommit;
121
+ /**
122
+ * Count files in a directory (excluding node_modules, .git, etc.).
123
+ */
124
+ private countFiles;
125
+ }
126
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,378 @@
1
+ /**
2
+ * Living Docs Orchestrator
3
+ *
4
+ * Main coordinator that manages the entire analysis pipeline with caching and change detection.
5
+ *
6
+ * Architecture:
7
+ * Phase 1: Discovery (repo scanning)
8
+ * Phase 2: Analysis (patterns, modules, tech debt)
9
+ * Phase 3: Synthesis (ADR generation with LLM)
10
+ */
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ import { execSync } from 'child_process';
14
+ import { consoleLogger } from '../../../utils/logger.js';
15
+ import { runIntelligentAnalysis } from './index.js';
16
+ /**
17
+ * Main orchestrator for living docs intelligent analysis.
18
+ *
19
+ * Coordinates all analysis phases with caching and Git-based change detection.
20
+ */
21
+ export class LivingDocsOrchestrator {
22
+ constructor(options) {
23
+ this.projectRoot = options.projectRoot;
24
+ this.logger = options.logger ?? consoleLogger;
25
+ this.llmProvider = options.llmProvider;
26
+ this.cacheDir = path.join(this.projectRoot, '.specweave/cache/analysis');
27
+ // Ensure cache directory exists
28
+ fs.mkdirSync(this.cacheDir, { recursive: true });
29
+ }
30
+ /**
31
+ * Main entry point - orchestrates full update or incremental update.
32
+ */
33
+ async update(options = {}) {
34
+ const startTime = Date.now();
35
+ const result = {
36
+ success: false,
37
+ duration: 0,
38
+ phases: {
39
+ discovery: { success: false, duration: 0, message: '' },
40
+ analysis: { success: false, duration: 0, message: '' },
41
+ synthesis: { success: false, duration: 0, message: '' },
42
+ },
43
+ filesCreated: [],
44
+ filesUpdated: [],
45
+ errors: [],
46
+ };
47
+ try {
48
+ this.logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
49
+ this.logger.info('LIVING DOCS INTELLIGENT ANALYSIS');
50
+ this.logger.info(`Mode: ${options.full ? 'FULL' : 'INCREMENTAL'}`);
51
+ this.logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
52
+ this.logger.info('');
53
+ // Clear cache if full rebuild requested (AC-US6-04)
54
+ if (options.full) {
55
+ this.logger.info('🔄 FULL MODE - Clearing cache and checkpoints...');
56
+ await this.clearCache();
57
+ this.logger.info('');
58
+ }
59
+ // Dry run - show what would be updated
60
+ if (options.dryRun) {
61
+ this.logger.info('DRY RUN MODE - No changes will be made');
62
+ const changedFiles = await this.detectChanges();
63
+ this.logger.info(`Would analyze ${changedFiles.length} changed files`);
64
+ result.success = true;
65
+ result.duration = Date.now() - startTime;
66
+ return result;
67
+ }
68
+ // Phase 1: Discovery
69
+ const discoveryResult = await this.executePhase1Discovery();
70
+ result.phases.discovery = {
71
+ success: true,
72
+ duration: discoveryResult.duration,
73
+ message: `Discovered ${discoveryResult.repos.length} repos (${discoveryResult.totalFiles} files)`,
74
+ };
75
+ // Phase 2: Analysis (if not adrOnly/techDebtOnly)
76
+ if (!options.adrOnly && !options.techDebtOnly) {
77
+ const analysisResult = await this.executePhase2Analysis(discoveryResult.repos);
78
+ result.phases.analysis = {
79
+ success: true,
80
+ duration: analysisResult.duration,
81
+ message: `Analyzed ${analysisResult.repoAnalyses.size} repos`,
82
+ };
83
+ // Track files created during analysis
84
+ if (analysisResult.filesCreated) {
85
+ result.filesCreated.push(...analysisResult.filesCreated);
86
+ }
87
+ }
88
+ // Phase 3: Synthesis (ADRs, teams, architecture)
89
+ const synthesisResult = await this.executePhase3Synthesis(discoveryResult.repos);
90
+ result.phases.synthesis = {
91
+ success: true,
92
+ duration: synthesisResult.duration,
93
+ message: `Generated ${synthesisResult.adrsGenerated} ADRs, ${synthesisResult.teamsClustered} teams`,
94
+ };
95
+ // Track files created during synthesis
96
+ if (synthesisResult.filesCreated) {
97
+ result.filesCreated.push(...synthesisResult.filesCreated);
98
+ }
99
+ result.success = true;
100
+ result.duration = Date.now() - startTime;
101
+ // Enhanced update logging (AC-US6-06)
102
+ this.logger.info('');
103
+ this.logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
104
+ this.logger.info(`✅ LIVING DOCS UPDATE COMPLETE`);
105
+ this.logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
106
+ this.logger.info('');
107
+ // Show what was updated
108
+ this.logger.info('📊 SUMMARY:');
109
+ this.logger.info('');
110
+ if (result.phases.discovery.success) {
111
+ this.logger.info(` Discovery: ${result.phases.discovery.message}`);
112
+ this.logger.info(` Duration: ${Math.round(result.phases.discovery.duration / 1000)}s`);
113
+ }
114
+ if (result.phases.analysis.success) {
115
+ this.logger.info(` Analysis: ${result.phases.analysis.message}`);
116
+ this.logger.info(` Duration: ${Math.round(result.phases.analysis.duration / 1000)}s`);
117
+ }
118
+ if (result.phases.synthesis.success) {
119
+ this.logger.info(` Synthesis: ${result.phases.synthesis.message}`);
120
+ this.logger.info(` Duration: ${Math.round(result.phases.synthesis.duration / 1000)}s`);
121
+ }
122
+ this.logger.info('');
123
+ if (result.filesCreated.length > 0) {
124
+ this.logger.info(` Files Created: ${result.filesCreated.length}`);
125
+ result.filesCreated.slice(0, 5).forEach(file => this.logger.info(` • ${file}`));
126
+ if (result.filesCreated.length > 5) {
127
+ this.logger.info(` ... and ${result.filesCreated.length - 5} more`);
128
+ }
129
+ }
130
+ if (result.filesUpdated.length > 0) {
131
+ this.logger.info(` Files Updated: ${result.filesUpdated.length}`);
132
+ result.filesUpdated.slice(0, 5).forEach(file => this.logger.info(` • ${file}`));
133
+ if (result.filesUpdated.length > 5) {
134
+ this.logger.info(` ... and ${result.filesUpdated.length - 5} more`);
135
+ }
136
+ }
137
+ this.logger.info('');
138
+ this.logger.info(` Total Duration: ${Math.round(result.duration / 1000)}s`);
139
+ this.logger.info(` Mode: ${options.full ? 'FULL (cache bypassed)' : 'INCREMENTAL (cache used)'}`);
140
+ this.logger.info('');
141
+ this.logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
142
+ // Save last update info to cache
143
+ await this.saveToCache('last-update.json', {
144
+ timestamp: new Date().toISOString(),
145
+ commit: this.getCurrentCommit(),
146
+ duration: result.duration,
147
+ mode: options.full ? 'full' : 'incremental',
148
+ filesCreated: result.filesCreated.length,
149
+ filesUpdated: result.filesUpdated.length,
150
+ });
151
+ }
152
+ catch (error) {
153
+ result.errors.push(error instanceof Error ? error.message : String(error));
154
+ this.logger.error(`Analysis failed: ${error}`);
155
+ }
156
+ return result;
157
+ }
158
+ /**
159
+ * Phase 1: Discovery
160
+ * Scans all repos (umbrella or single) and creates file inventory.
161
+ */
162
+ async executePhase1Discovery() {
163
+ const startTime = Date.now();
164
+ this.logger.info('📂 Phase 1: Discovery');
165
+ this.logger.info('');
166
+ // Detect repos (umbrella or single)
167
+ const repos = await this.discoverRepos();
168
+ let totalFiles = 0;
169
+ for (const repo of repos) {
170
+ const fileCount = this.countFiles(repo.path);
171
+ totalFiles += fileCount;
172
+ this.logger.info(` ✓ ${repo.name} (${fileCount} files)`);
173
+ }
174
+ const duration = Date.now() - startTime;
175
+ this.logger.info('');
176
+ this.logger.info(`✅ Discovery complete (${Math.round(duration / 1000)}s)`);
177
+ this.logger.info('');
178
+ return { repos, totalFiles, duration };
179
+ }
180
+ /**
181
+ * Phase 2: Analysis
182
+ * Pattern detection, module graph, tech debt detection.
183
+ */
184
+ async executePhase2Analysis(repos) {
185
+ const startTime = Date.now();
186
+ this.logger.info('🔍 Phase 2: Analysis');
187
+ this.logger.info('');
188
+ // Use existing intelligent analysis (refactored in future tasks)
189
+ const analysisOptions = {
190
+ projectPath: this.projectRoot,
191
+ repos,
192
+ llmProvider: this.llmProvider,
193
+ onProgress: (phase, current, total, message) => {
194
+ this.logger.info(` [${phase}] ${current}/${total} - ${message}`);
195
+ },
196
+ log: (msg) => this.logger.info(` ${msg}`),
197
+ };
198
+ const { repoAnalyses, savedFiles } = await runIntelligentAnalysis(analysisOptions);
199
+ const duration = Date.now() - startTime;
200
+ this.logger.info('');
201
+ this.logger.info(`✅ Analysis complete (${Math.round(duration / 1000)}s)`);
202
+ this.logger.info('');
203
+ return { repoAnalyses, duration, filesCreated: savedFiles };
204
+ }
205
+ /**
206
+ * Phase 3: Synthesis
207
+ * LLM-powered ADR synthesis, team clustering, architecture docs.
208
+ */
209
+ async executePhase3Synthesis(repos) {
210
+ const startTime = Date.now();
211
+ this.logger.info('💎 Phase 3: Synthesis (LLM-powered)');
212
+ this.logger.info('');
213
+ // This will be expanded in future tasks (T-013 to T-016)
214
+ // For now, we leverage the existing intelligent analysis synthesis phases
215
+ const adrsGenerated = 0; // TODO: Count from architecture-generator.ts
216
+ const teamsClustered = 0; // TODO: Count from organization-synthesizer.ts
217
+ const duration = Date.now() - startTime;
218
+ this.logger.info('');
219
+ this.logger.info(`✅ Synthesis complete (${Math.round(duration / 1000)}s)`);
220
+ this.logger.info('');
221
+ return { adrsGenerated, teamsClustered, duration };
222
+ }
223
+ /**
224
+ * Detect changes since last update using Git diff.
225
+ */
226
+ async detectChanges() {
227
+ try {
228
+ const lastUpdate = await this.loadFromCache('last-update.json');
229
+ if (!lastUpdate || !lastUpdate.commit) {
230
+ // No previous update, consider all files changed
231
+ return [];
232
+ }
233
+ const currentCommit = this.getCurrentCommit();
234
+ if (lastUpdate.commit === currentCommit) {
235
+ // No changes since last update
236
+ return [];
237
+ }
238
+ // Run git diff to get changed files
239
+ const diffOutput = execSync(`git diff --name-status ${lastUpdate.commit} ${currentCommit}`, { cwd: this.projectRoot, encoding: 'utf-8' });
240
+ const changedFiles = [];
241
+ for (const line of diffOutput.split('\n')) {
242
+ if (!line.trim())
243
+ continue;
244
+ const [status, filePath] = line.split('\t');
245
+ if (!filePath)
246
+ continue;
247
+ changedFiles.push({
248
+ path: filePath,
249
+ status: status.startsWith('A') ? 'added' :
250
+ status.startsWith('M') ? 'modified' :
251
+ status.startsWith('D') ? 'deleted' : 'modified',
252
+ });
253
+ }
254
+ return changedFiles;
255
+ }
256
+ catch (error) {
257
+ this.logger.warn(`Git diff failed: ${error}`);
258
+ return [];
259
+ }
260
+ }
261
+ /**
262
+ * Load data from cache.
263
+ */
264
+ async loadFromCache(key) {
265
+ const cachePath = path.join(this.cacheDir, key);
266
+ if (!fs.existsSync(cachePath)) {
267
+ return null;
268
+ }
269
+ try {
270
+ const content = fs.readFileSync(cachePath, 'utf-8');
271
+ return JSON.parse(content);
272
+ }
273
+ catch (error) {
274
+ this.logger.warn(`Failed to load cache ${key}: ${error}`);
275
+ return null;
276
+ }
277
+ }
278
+ /**
279
+ * Save data to cache.
280
+ */
281
+ async saveToCache(key, data) {
282
+ const cachePath = path.join(this.cacheDir, key);
283
+ fs.writeFileSync(cachePath, JSON.stringify(data, null, 2));
284
+ }
285
+ /**
286
+ * Clear all cache and checkpoint data.
287
+ * Used when --full flag is set to force complete rebuild.
288
+ */
289
+ async clearCache() {
290
+ try {
291
+ // Clear cache directory
292
+ if (fs.existsSync(this.cacheDir)) {
293
+ const files = fs.readdirSync(this.cacheDir);
294
+ for (const file of files) {
295
+ fs.unlinkSync(path.join(this.cacheDir, file));
296
+ }
297
+ this.logger.info(` ✓ Cleared ${files.length} cache files`);
298
+ }
299
+ // Clear intelligent analysis checkpoint
300
+ const checkpointPath = path.join(this.projectRoot, '.specweave/docs/internal/temp/intelligent-analysis-checkpoint.json');
301
+ if (fs.existsSync(checkpointPath)) {
302
+ fs.unlinkSync(checkpointPath);
303
+ this.logger.info(' ✓ Cleared intelligent analysis checkpoint');
304
+ }
305
+ }
306
+ catch (error) {
307
+ this.logger.warn(`Failed to clear cache: ${error}`);
308
+ }
309
+ }
310
+ /**
311
+ * Discover all repos (umbrella or single).
312
+ */
313
+ async discoverRepos() {
314
+ const configPath = path.join(this.projectRoot, '.specweave/config.json');
315
+ if (!fs.existsSync(configPath)) {
316
+ // Single repo mode
317
+ return [{ name: 'main', path: this.projectRoot }];
318
+ }
319
+ try {
320
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
321
+ if (config.umbrella && config.umbrella.childRepos) {
322
+ // Multi-repo umbrella mode
323
+ return config.umbrella.childRepos.map((repo) => ({
324
+ name: repo.name,
325
+ path: path.join(this.projectRoot, repo.path),
326
+ }));
327
+ }
328
+ }
329
+ catch (error) {
330
+ this.logger.warn(`Failed to load config: ${error}`);
331
+ }
332
+ // Fallback to single repo
333
+ return [{ name: 'main', path: this.projectRoot }];
334
+ }
335
+ /**
336
+ * Get current Git commit hash.
337
+ */
338
+ getCurrentCommit() {
339
+ try {
340
+ return execSync('git rev-parse HEAD', {
341
+ cwd: this.projectRoot,
342
+ encoding: 'utf-8',
343
+ }).trim();
344
+ }
345
+ catch {
346
+ return 'unknown';
347
+ }
348
+ }
349
+ /**
350
+ * Count files in a directory (excluding node_modules, .git, etc.).
351
+ */
352
+ countFiles(dirPath) {
353
+ let count = 0;
354
+ const excludeDirs = ['node_modules', '.git', 'dist', 'build', '.specweave'];
355
+ const walk = (dir) => {
356
+ try {
357
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
358
+ for (const entry of entries) {
359
+ if (excludeDirs.includes(entry.name))
360
+ continue;
361
+ const fullPath = path.join(dir, entry.name);
362
+ if (entry.isDirectory()) {
363
+ walk(fullPath);
364
+ }
365
+ else {
366
+ count++;
367
+ }
368
+ }
369
+ }
370
+ catch {
371
+ // Ignore permission errors
372
+ }
373
+ };
374
+ walk(dirPath);
375
+ return count;
376
+ }
377
+ }
378
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"organization-synthesizer.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/organization-synthesizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAcjH,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,2BAA2B,CAAC,CAuFtC;AAubD,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,2BAA2B,EACnC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACtC,OAAO,CAAC,MAAM,EAAE,CAAC,CAuEnB"}
1
+ {"version":3,"file":"organization-synthesizer.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/organization-synthesizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAcjH,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,2BAA2B,CAAC,CAqGtC;AAufD,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,2BAA2B,EACnC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACtC,OAAO,CAAC,MAAM,EAAE,CAAC,CAuEnB"}
@@ -32,6 +32,14 @@ export async function synthesizeOrganization(repoAnalyses, projectPath, llmProvi
32
32
  // Build summaries for LLM
33
33
  const repoSummaries = buildRepoSummaries(repoAnalyses);
34
34
  log(` Built summaries for ${repoAnalyses.size} repos`);
35
+ // If we have external teams WITH LLM, enrich them first
36
+ if (llmProvider && externalTeams.length > 0) {
37
+ log(' Enriching external teams with LLM analysis...');
38
+ const enrichedExternalTeams = await enrichExternalTeamsWithLLM(externalEnhancedTeams, repoAnalyses, llmProvider, log);
39
+ // Update the external teams array with enriched versions
40
+ externalEnhancedTeams.splice(0, externalEnhancedTeams.length, ...enrichedExternalTeams);
41
+ log(` Enriched ${enrichedExternalTeams.length} external teams with AI-powered analysis`);
42
+ }
35
43
  // If we have external teams and no LLM, use external teams directly
36
44
  if (!llmProvider && externalTeams.length > 0) {
37
45
  log(' No LLM provider, using external teams');
@@ -105,6 +113,55 @@ function createExternalTeamsOnlyResult(enhancedTeams) {
105
113
  confidence: 'medium'
106
114
  };
107
115
  }
116
+ /**
117
+ * Enrich external teams (from ADO/JIRA) with LLM-powered analysis
118
+ * This provides rich responsibilities, domain expertise, and tech stack based on repo analysis
119
+ */
120
+ async function enrichExternalTeamsWithLLM(externalTeams, repoAnalyses, llmProvider, log) {
121
+ const enrichedTeams = [];
122
+ // Build a comprehensive repo context for LLM
123
+ const repoContext = Array.from(repoAnalyses.entries())
124
+ .map(([name, analysis]) => {
125
+ const patterns = analysis.patternsUsed.map(p => p.pattern).join(', ');
126
+ const concepts = analysis.keyConcepts.join(', ');
127
+ return `- ${name}: ${analysis.purpose} | Patterns: ${patterns || 'none'} | Concepts: ${concepts || 'none'}`;
128
+ })
129
+ .join('\n');
130
+ for (const team of externalTeams) {
131
+ try {
132
+ const schema = {
133
+ responsibilities: '["responsibility1", "responsibility2", ...]',
134
+ domainExpertise: '["expertise1", "expertise2", ...]',
135
+ techStack: '["tech1", "tech2", ...]',
136
+ description: 'string (2-3 sentences about what this team does)',
137
+ integrationBoundaries: 'string (description of upstream/downstream dependencies)',
138
+ };
139
+ const prompt = buildJsonPrompt(`Team: ${team.name}\nOriginal description: ${team.description}\n\nAvailable repositories:\n${repoContext}\n\nAnalyze this team and provide:\n- responsibilities: 3-5 specific bullet points of what this team owns\n- domainExpertise: 3-5 technical competencies (e.g., "Azure Functions", "React development", "Medical device integration")\n- techStack: Primary technologies used (infer from repos)\n- description: Rich 2-3 sentence summary\n- integrationBoundaries: How this team integrates with others`, schema, `Provide detailed team analysis for ${team.name}`);
140
+ const result = await llmProvider.analyze(prompt);
141
+ if (result?.content) {
142
+ const extraction = extractJson(result.content, { requiredFields: [] });
143
+ if (extraction.success && extraction.data) {
144
+ enrichedTeams.push({
145
+ ...team,
146
+ description: extraction.data.description || team.description,
147
+ responsibilities: extraction.data.responsibilities || team.responsibilities,
148
+ domainExpertise: extraction.data.domainExpertise || team.domainExpertise,
149
+ techStack: extraction.data.techStack || team.techStack,
150
+ integrationBoundaries: extraction.data.integrationBoundaries || team.integrationBoundaries,
151
+ });
152
+ log(` Enriched team: ${team.name}`);
153
+ continue;
154
+ }
155
+ }
156
+ }
157
+ catch (err) {
158
+ log(` Failed to enrich team ${team.name}: ${err.message}`);
159
+ }
160
+ // Fallback: keep original if enrichment fails
161
+ enrichedTeams.push(team);
162
+ }
163
+ return enrichedTeams;
164
+ }
108
165
  async function loadExternalSpecs(projectPath) {
109
166
  const specsPath = path.join(projectPath, '.specweave/docs/internal/specs');
110
167
  if (!fs.existsSync(specsPath))