specweave 0.32.2 → 0.32.3

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 (191) hide show
  1. package/CLAUDE.md +39 -0
  2. package/bin/specweave.js +34 -0
  3. package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.d.ts +100 -0
  4. package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.d.ts.map +1 -0
  5. package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.js +291 -0
  6. package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.js.map +1 -0
  7. package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.d.ts +103 -0
  8. package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.d.ts.map +1 -0
  9. package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.js +310 -0
  10. package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.js.map +1 -0
  11. package/dist/plugins/specweave-jira/lib/jira-permission-gate.d.ts +126 -0
  12. package/dist/plugins/specweave-jira/lib/jira-permission-gate.d.ts.map +1 -0
  13. package/dist/plugins/specweave-jira/lib/jira-permission-gate.js +207 -0
  14. package/dist/plugins/specweave-jira/lib/jira-permission-gate.js.map +1 -0
  15. package/dist/src/adapters/codex/README.md +1 -1
  16. package/dist/src/adapters/codex/adapter.js +1 -1
  17. package/dist/src/cli/commands/archive.d.ts +2 -0
  18. package/dist/src/cli/commands/archive.d.ts.map +1 -1
  19. package/dist/src/cli/commands/archive.js +33 -0
  20. package/dist/src/cli/commands/archive.js.map +1 -1
  21. package/dist/src/cli/commands/context.d.ts +92 -0
  22. package/dist/src/cli/commands/context.d.ts.map +1 -0
  23. package/dist/src/cli/commands/context.js +205 -0
  24. package/dist/src/cli/commands/context.js.map +1 -0
  25. package/dist/src/cli/commands/init.d.ts.map +1 -1
  26. package/dist/src/cli/commands/init.js +111 -69
  27. package/dist/src/cli/commands/init.js.map +1 -1
  28. package/dist/src/cli/helpers/init/external-import.d.ts +3 -0
  29. package/dist/src/cli/helpers/init/external-import.d.ts.map +1 -1
  30. package/dist/src/cli/helpers/init/external-import.js +17 -4
  31. package/dist/src/cli/helpers/init/external-import.js.map +1 -1
  32. package/dist/src/cli/helpers/init/index.d.ts +1 -0
  33. package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
  34. package/dist/src/cli/helpers/init/index.js +2 -0
  35. package/dist/src/cli/helpers/init/index.js.map +1 -1
  36. package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts +70 -0
  37. package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts.map +1 -1
  38. package/dist/src/cli/helpers/init/jira-ado-auto-detect.js +214 -4
  39. package/dist/src/cli/helpers/init/jira-ado-auto-detect.js.map +1 -1
  40. package/dist/src/cli/helpers/init/living-docs-preflight.d.ts +4 -0
  41. package/dist/src/cli/helpers/init/living-docs-preflight.d.ts.map +1 -1
  42. package/dist/src/cli/helpers/init/living-docs-preflight.js +34 -3
  43. package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
  44. package/dist/src/cli/helpers/init/testing-config.d.ts +3 -0
  45. package/dist/src/cli/helpers/init/testing-config.d.ts.map +1 -1
  46. package/dist/src/cli/helpers/init/testing-config.js +9 -2
  47. package/dist/src/cli/helpers/init/testing-config.js.map +1 -1
  48. package/dist/src/cli/helpers/init/translation-config.d.ts +3 -0
  49. package/dist/src/cli/helpers/init/translation-config.d.ts.map +1 -1
  50. package/dist/src/cli/helpers/init/translation-config.js +21 -4
  51. package/dist/src/cli/helpers/init/translation-config.js.map +1 -1
  52. package/dist/src/cli/helpers/init/wizard-navigation.d.ts +45 -0
  53. package/dist/src/cli/helpers/init/wizard-navigation.d.ts.map +1 -0
  54. package/dist/src/cli/helpers/init/wizard-navigation.js +97 -0
  55. package/dist/src/cli/helpers/init/wizard-navigation.js.map +1 -0
  56. package/dist/src/core/increment/increment-archiver.d.ts +25 -4
  57. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -1
  58. package/dist/src/core/increment/increment-archiver.js +64 -20
  59. package/dist/src/core/increment/increment-archiver.js.map +1 -1
  60. package/dist/src/core/increment/increment-utils.d.ts +65 -0
  61. package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
  62. package/dist/src/core/increment/increment-utils.js +114 -0
  63. package/dist/src/core/increment/increment-utils.js.map +1 -1
  64. package/dist/src/core/living-docs/feature-archiver.d.ts +4 -0
  65. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -1
  66. package/dist/src/core/living-docs/feature-archiver.js +32 -10
  67. package/dist/src/core/living-docs/feature-archiver.js.map +1 -1
  68. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -1
  69. package/dist/src/core/living-docs/feature-id-manager.js +7 -3
  70. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
  71. package/dist/src/core/living-docs/governance/ecosystem-detector.d.ts +38 -0
  72. package/dist/src/core/living-docs/governance/ecosystem-detector.d.ts.map +1 -0
  73. package/dist/src/core/living-docs/governance/ecosystem-detector.js +325 -0
  74. package/dist/src/core/living-docs/governance/ecosystem-detector.js.map +1 -0
  75. package/dist/src/core/living-docs/governance/frontend-standards-parser.d.ts +74 -0
  76. package/dist/src/core/living-docs/governance/frontend-standards-parser.d.ts.map +1 -0
  77. package/dist/src/core/living-docs/governance/frontend-standards-parser.js +366 -0
  78. package/dist/src/core/living-docs/governance/frontend-standards-parser.js.map +1 -0
  79. package/dist/src/core/living-docs/governance/go-standards-parser.d.ts +64 -0
  80. package/dist/src/core/living-docs/governance/go-standards-parser.d.ts.map +1 -0
  81. package/dist/src/core/living-docs/governance/go-standards-parser.js +229 -0
  82. package/dist/src/core/living-docs/governance/go-standards-parser.js.map +1 -0
  83. package/dist/src/core/living-docs/governance/index.d.ts +50 -0
  84. package/dist/src/core/living-docs/governance/index.d.ts.map +1 -0
  85. package/dist/src/core/living-docs/governance/index.js +56 -0
  86. package/dist/src/core/living-docs/governance/index.js.map +1 -0
  87. package/dist/src/core/living-docs/governance/java-standards-parser.d.ts +89 -0
  88. package/dist/src/core/living-docs/governance/java-standards-parser.d.ts.map +1 -0
  89. package/dist/src/core/living-docs/governance/java-standards-parser.js +356 -0
  90. package/dist/src/core/living-docs/governance/java-standards-parser.js.map +1 -0
  91. package/dist/src/core/living-docs/governance/python-standards-parser.d.ts +83 -0
  92. package/dist/src/core/living-docs/governance/python-standards-parser.d.ts.map +1 -0
  93. package/dist/src/core/living-docs/governance/python-standards-parser.js +347 -0
  94. package/dist/src/core/living-docs/governance/python-standards-parser.js.map +1 -0
  95. package/dist/src/core/living-docs/governance/standards-generator.d.ts +38 -0
  96. package/dist/src/core/living-docs/governance/standards-generator.d.ts.map +1 -0
  97. package/dist/src/core/living-docs/governance/standards-generator.js +476 -0
  98. package/dist/src/core/living-docs/governance/standards-generator.js.map +1 -0
  99. package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.d.ts.map +1 -1
  100. package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.js +54 -2
  101. package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.js.map +1 -1
  102. package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.d.ts +5 -1
  103. package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.d.ts.map +1 -1
  104. package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.js +358 -30
  105. package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.js.map +1 -1
  106. package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts +44 -0
  107. package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts.map +1 -1
  108. package/dist/src/core/living-docs/living-docs-sync.d.ts +6 -3
  109. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  110. package/dist/src/core/living-docs/living-docs-sync.js +17 -8
  111. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  112. package/dist/src/core/living-docs/module-analyzer.d.ts +22 -0
  113. package/dist/src/core/living-docs/module-analyzer.d.ts.map +1 -1
  114. package/dist/src/core/living-docs/module-analyzer.js +123 -19
  115. package/dist/src/core/living-docs/module-analyzer.js.map +1 -1
  116. package/dist/src/core/llm/provider-factory.js +2 -2
  117. package/dist/src/core/llm/provider-factory.js.map +1 -1
  118. package/dist/src/core/llm/providers/anthropic-provider.js +1 -1
  119. package/dist/src/core/llm/providers/bedrock-provider.d.ts.map +1 -1
  120. package/dist/src/core/llm/providers/bedrock-provider.js +8 -4
  121. package/dist/src/core/llm/providers/bedrock-provider.js.map +1 -1
  122. package/dist/src/importers/jira-importer.d.ts +14 -0
  123. package/dist/src/importers/jira-importer.d.ts.map +1 -1
  124. package/dist/src/importers/jira-importer.js +75 -0
  125. package/dist/src/importers/jira-importer.js.map +1 -1
  126. package/dist/src/integrations/jira/jira-token-provider.d.ts +93 -0
  127. package/dist/src/integrations/jira/jira-token-provider.d.ts.map +1 -0
  128. package/dist/src/integrations/jira/jira-token-provider.js +160 -0
  129. package/dist/src/integrations/jira/jira-token-provider.js.map +1 -0
  130. package/dist/src/sync/ado-reconciler.d.ts +92 -0
  131. package/dist/src/sync/ado-reconciler.d.ts.map +1 -0
  132. package/dist/src/sync/ado-reconciler.js +335 -0
  133. package/dist/src/sync/ado-reconciler.js.map +1 -0
  134. package/dist/src/sync/jira-reconciler.d.ts +106 -0
  135. package/dist/src/sync/jira-reconciler.d.ts.map +1 -0
  136. package/dist/src/sync/jira-reconciler.js +405 -0
  137. package/dist/src/sync/jira-reconciler.js.map +1 -0
  138. package/dist/src/types/model-selection.d.ts +6 -4
  139. package/dist/src/types/model-selection.d.ts.map +1 -1
  140. package/dist/src/types/model-selection.js +3 -1
  141. package/dist/src/types/model-selection.js.map +1 -1
  142. package/dist/src/utils/external-tool-drift-detector.d.ts +1 -1
  143. package/dist/src/utils/external-tool-drift-detector.d.ts.map +1 -1
  144. package/dist/src/utils/external-tool-drift-detector.js +5 -4
  145. package/dist/src/utils/external-tool-drift-detector.js.map +1 -1
  146. package/dist/src/utils/feature-id-derivation.d.ts +8 -3
  147. package/dist/src/utils/feature-id-derivation.d.ts.map +1 -1
  148. package/dist/src/utils/feature-id-derivation.js +14 -6
  149. package/dist/src/utils/feature-id-derivation.js.map +1 -1
  150. package/dist/src/utils/model-selection.d.ts +3 -4
  151. package/dist/src/utils/model-selection.d.ts.map +1 -1
  152. package/dist/src/utils/model-selection.js +3 -4
  153. package/dist/src/utils/model-selection.js.map +1 -1
  154. package/package.json +1 -1
  155. package/plugins/specweave/agents/code-standards-detective/AGENT.md +48 -0
  156. package/plugins/specweave/commands/specweave-costs.md +4 -4
  157. package/plugins/specweave/commands/specweave-do.md +9 -9
  158. package/plugins/specweave/commands/specweave-done.md +13 -0
  159. package/plugins/specweave/commands/specweave-validate.md +27 -1
  160. package/plugins/specweave/hooks/hooks.json +10 -0
  161. package/plugins/specweave/hooks/spec-project-validator.sh +80 -25
  162. package/plugins/specweave/hooks/v2/guards/increment-duplicate-guard.sh +135 -0
  163. package/plugins/specweave/scripts/read-costs.sh +3 -3
  164. package/plugins/specweave/skills/code-standards-analyzer/SKILL.md +58 -6
  165. package/plugins/specweave/skills/increment-planner/SKILL.md +56 -25
  166. package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +4 -2
  167. package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +2 -1
  168. package/plugins/specweave/skills/increment-planner/templates/tasks-multi-project.md +1 -1
  169. package/plugins/specweave/skills/increment-planner/templates/tasks-single-project.md +1 -1
  170. package/plugins/specweave-ado/commands/cleanup-duplicates.md +212 -0
  171. package/plugins/specweave-ado/commands/reconcile.md +120 -0
  172. package/plugins/specweave-ado/lib/ado-duplicate-detector.js +279 -0
  173. package/plugins/specweave-ado/lib/ado-duplicate-detector.ts +407 -0
  174. package/plugins/specweave-github/agents/github-manager/AGENT.md +2 -2
  175. package/plugins/specweave-infrastructure/skills/hetzner-provisioner/README.md +1 -1
  176. package/plugins/specweave-jira/agents/jira-manager/AGENT.md +1 -1
  177. package/plugins/specweave-jira/agents/jira-multi-project-mapper/AGENT.md +530 -0
  178. package/plugins/specweave-jira/agents/jira-sync-judge/AGENT.md +438 -0
  179. package/plugins/specweave-jira/commands/cleanup-duplicates.md +219 -0
  180. package/plugins/specweave-jira/commands/close.md +297 -0
  181. package/plugins/specweave-jira/commands/create.md +198 -0
  182. package/plugins/specweave-jira/commands/reconcile.md +123 -0
  183. package/plugins/specweave-jira/commands/status.md +215 -0
  184. package/plugins/specweave-jira/lib/jira-duplicate-detector.js +296 -0
  185. package/plugins/specweave-jira/lib/jira-duplicate-detector.ts +434 -0
  186. package/plugins/specweave-jira/lib/jira-permission-gate.js +160 -0
  187. package/plugins/specweave-jira/lib/jira-permission-gate.ts +276 -0
  188. package/plugins/specweave-jira/lib/jira-profile-resolver.js +222 -0
  189. package/plugins/specweave-jira/lib/jira-profile-resolver.ts +427 -0
  190. package/plugins/specweave-jira/reference/jira-specweave-mapping.md +16 -11
  191. package/plugins/specweave-release/commands/specweave-release-npm.md +140 -14
@@ -1 +1 @@
1
- {"version":3,"file":"organization-synthesizer.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/organization-synthesizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnG,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,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,CA6CtC;AAyFD,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,CA+BnB"}
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"}
@@ -3,49 +3,108 @@
3
3
  *
4
4
  * Clusters repos into teams, microservices, and domains
5
5
  * using LLM analysis and external specs from Jira/ADO.
6
+ *
7
+ * Supports 1-level (project/) and 2-level (project/board/) folder structures
8
+ * matching the specs structure detected by structure-level-detector.
6
9
  */
7
10
  import * as fs from 'fs';
8
11
  import * as path from 'path';
9
12
  import { glob } from 'glob';
10
13
  import { extractJson, buildJsonPrompt } from '../../../utils/llm-json-extractor.js';
14
+ import { detectStructureLevel } from '../../../utils/structure-level-detector.js';
11
15
  export async function synthesizeOrganization(repoAnalyses, projectPath, llmProvider, onProgress, log) {
12
16
  log('PHASE C: Organization Synthesis');
13
17
  onProgress('org-synthesis', 0, 100, 'Loading external specs');
14
18
  // Load external specs from Jira/ADO imports
15
19
  const externalSpecs = await loadExternalSpecs(projectPath);
16
20
  log(` Loaded ${externalSpecs.length} external spec files`);
21
+ // Detect structure level for team organization
22
+ const structureConfig = detectStructureLevel(projectPath);
23
+ log(` Structure level: ${structureConfig.level}-level (${structureConfig.detectionReason})`);
24
+ // Fetch teams from external tools (ADO/JIRA)
25
+ onProgress('org-synthesis', 10, 100, 'Fetching external teams');
26
+ const externalTeams = await fetchExternalTeams(projectPath, log);
27
+ const externalEnhancedTeams = convertExternalTeamsToEnhanced(externalTeams, structureConfig);
28
+ if (externalTeams.length > 0) {
29
+ log(` Imported ${externalTeams.length} teams from external tools`);
30
+ }
17
31
  onProgress('org-synthesis', 20, 100, 'Building repo summaries');
18
32
  // Build summaries for LLM
19
33
  const repoSummaries = buildRepoSummaries(repoAnalyses);
20
34
  log(` Built summaries for ${repoAnalyses.size} repos`);
35
+ // If we have external teams and no LLM, use external teams directly
36
+ if (!llmProvider && externalTeams.length > 0) {
37
+ log(' No LLM provider, using external teams');
38
+ return createExternalTeamsOnlyResult(externalEnhancedTeams);
39
+ }
21
40
  if (!llmProvider) {
22
41
  log(' No LLM provider, using basic clustering');
23
- return createBasicClustering(repoAnalyses);
42
+ return createBasicClustering(repoAnalyses, projectPath);
24
43
  }
25
44
  onProgress('org-synthesis', 40, 100, 'LLM clustering analysis');
26
- // Build LLM prompt
27
- const prompt = buildClusteringPrompt(repoSummaries, externalSpecs);
45
+ // Build LLM prompt (include external teams context)
46
+ const externalTeamsContext = externalTeams.length > 0
47
+ ? `\n\nExternal teams from ADO/JIRA:\n${externalTeams.map(t => `- ${t.name}: ${t.description || 'No description'}`).join('\n')}`
48
+ : '';
49
+ const prompt = buildClusteringPrompt(repoSummaries, externalSpecs, externalTeamsContext);
28
50
  log(' Sending to LLM for organization analysis...');
29
51
  try {
30
52
  const result = await llmProvider.analyze(prompt);
31
53
  if (!result || !result.content) {
32
- log(' LLM returned empty, using basic clustering');
33
- return createBasicClustering(repoAnalyses);
54
+ log(' LLM returned empty, using external teams or basic clustering');
55
+ return externalTeams.length > 0
56
+ ? createExternalTeamsOnlyResult(externalEnhancedTeams)
57
+ : createBasicClustering(repoAnalyses, projectPath);
34
58
  }
35
59
  const extraction = extractJson(result.content, { requiredFields: ['teams'] });
36
60
  if (extraction.success && extraction.data) {
37
61
  log(' LLM clustering successful');
38
62
  onProgress('org-synthesis', 80, 100, 'Processing results');
39
- return convertLLMResponse(extraction.data);
63
+ // Merge LLM teams with external teams
64
+ const llmResult = convertLLMResponse(extraction.data, projectPath);
65
+ // Add external teams that aren't already covered by LLM
66
+ const llmTeamNames = new Set(llmResult.enhancedTeams.map(t => t.name.toLowerCase()));
67
+ const uniqueExternalTeams = externalEnhancedTeams.filter(et => !llmTeamNames.has(et.name.toLowerCase()));
68
+ if (uniqueExternalTeams.length > 0) {
69
+ llmResult.enhancedTeams.push(...uniqueExternalTeams);
70
+ log(` Merged ${uniqueExternalTeams.length} external teams`);
71
+ }
72
+ return llmResult;
40
73
  }
41
74
  log(` JSON extraction failed: ${extraction.error}`);
42
- return createBasicClustering(repoAnalyses);
75
+ return externalTeams.length > 0
76
+ ? createExternalTeamsOnlyResult(externalEnhancedTeams)
77
+ : createBasicClustering(repoAnalyses, projectPath);
43
78
  }
44
79
  catch (err) {
45
80
  log(` LLM error: ${err.message}`);
46
- return createBasicClustering(repoAnalyses);
81
+ return externalTeams.length > 0
82
+ ? createExternalTeamsOnlyResult(externalEnhancedTeams)
83
+ : createBasicClustering(repoAnalyses, projectPath);
47
84
  }
48
85
  }
86
+ /**
87
+ * Create result with only external teams (no LLM clustering)
88
+ */
89
+ function createExternalTeamsOnlyResult(enhancedTeams) {
90
+ const teams = enhancedTeams.map(t => ({
91
+ name: t.name,
92
+ type: 'team',
93
+ description: t.description,
94
+ repos: t.repos,
95
+ confidence: 'high',
96
+ reasoning: t.reasoning
97
+ }));
98
+ return {
99
+ teams,
100
+ enhancedTeams,
101
+ microservices: [],
102
+ domains: [],
103
+ crossCutting: [],
104
+ hypotheses: ['Teams imported from external tool - repo associations not automatic'],
105
+ confidence: 'medium'
106
+ };
107
+ }
49
108
  async function loadExternalSpecs(projectPath) {
50
109
  const specsPath = path.join(projectPath, '.specweave/docs/internal/specs');
51
110
  if (!fs.existsSync(specsPath))
@@ -68,6 +127,98 @@ async function loadExternalSpecs(projectPath) {
68
127
  return [];
69
128
  }
70
129
  }
130
+ /**
131
+ * Fetch teams from external tools (ADO/JIRA) when sync is configured
132
+ *
133
+ * Uses dynamic imports to avoid initialization errors when external tools aren't configured.
134
+ */
135
+ async function fetchExternalTeams(projectPath, log) {
136
+ const externalTeams = [];
137
+ const configPath = path.join(projectPath, '.specweave/config.json');
138
+ if (!fs.existsSync(configPath)) {
139
+ return externalTeams;
140
+ }
141
+ let config;
142
+ try {
143
+ config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
144
+ }
145
+ catch {
146
+ log(' Could not parse config.json for external teams');
147
+ return externalTeams;
148
+ }
149
+ // Check for ADO sync profiles
150
+ const profiles = config.sync?.profiles || {};
151
+ for (const [profileName, profile] of Object.entries(profiles)) {
152
+ const p = profile;
153
+ if (p.provider !== 'ado')
154
+ continue;
155
+ const adoProject = p.config?.project;
156
+ const organization = p.config?.organization;
157
+ if (!adoProject || !organization) {
158
+ log(` ADO profile ${profileName} missing project/organization`);
159
+ continue;
160
+ }
161
+ try {
162
+ // Dynamic import to avoid initialization errors
163
+ const { AdoClient } = await import('../../../integrations/ado/ado-client.js');
164
+ const { getAdoPat } = await import('../../../integrations/ado/ado-pat-provider.js');
165
+ const pat = getAdoPat(organization);
166
+ if (!pat) {
167
+ log(` No ADO PAT available for organization: ${organization}`);
168
+ continue;
169
+ }
170
+ const adoClient = new AdoClient({ pat, organization, project: adoProject });
171
+ const teams = await adoClient.getTeams(adoProject);
172
+ log(` Fetched ${teams.length} teams from ADO project: ${adoProject}`);
173
+ for (const team of teams) {
174
+ externalTeams.push({
175
+ id: team.id || team.name,
176
+ name: team.name,
177
+ description: team.description,
178
+ url: team.url || `https://dev.azure.com/${organization}/${adoProject}/_settings/teams/${team.name}`,
179
+ projectId: adoProject,
180
+ provider: 'ado'
181
+ });
182
+ }
183
+ }
184
+ catch (err) {
185
+ log(` Failed to fetch ADO teams from ${profileName}: ${err.message}`);
186
+ }
187
+ }
188
+ // JIRA Teams API requires organization ID which isn't typically configured
189
+ // Implementation note: JIRA Teams are org-level, not project-level
190
+ // Future enhancement: Add JIRA teams via https://api.atlassian.com/public/teams/v1/org/{orgId}/teams
191
+ return externalTeams;
192
+ }
193
+ /**
194
+ * Convert external teams to EnhancedTeam format
195
+ */
196
+ function convertExternalTeamsToEnhanced(externalTeams, structureConfig) {
197
+ return externalTeams.map(et => ({
198
+ name: et.name,
199
+ description: et.description || `Team from ${et.provider === 'ado' ? 'Azure DevOps' : 'Jira'}`,
200
+ responsibilities: ['Manage associated repositories and work items'],
201
+ domainExpertise: [],
202
+ techStack: [],
203
+ repos: [], // External teams don't have direct repo mapping
204
+ reasoning: `Team imported from ${et.provider === 'ado' ? 'Azure DevOps' : 'Jira'}`,
205
+ project: et.projectId ? normalizeId(et.projectId) : structureConfig.projects[0]?.id,
206
+ externalId: et.id,
207
+ externalUrl: et.url,
208
+ externalProvider: et.provider
209
+ }));
210
+ }
211
+ /**
212
+ * Normalize ID to kebab-case for folder names
213
+ */
214
+ function normalizeId(name) {
215
+ return name
216
+ .toLowerCase()
217
+ .replace(/\s+/g, '-')
218
+ .replace(/[^a-z0-9-]/g, '')
219
+ .replace(/-+/g, '-')
220
+ .replace(/^-|-$/g, '');
221
+ }
71
222
  function buildRepoSummaries(analyses) {
72
223
  const lines = [];
73
224
  for (const [name, analysis] of analyses) {
@@ -81,25 +232,61 @@ function buildRepoSummaries(analyses) {
81
232
  }
82
233
  return lines.join('\n');
83
234
  }
84
- function buildClusteringPrompt(repoSummaries, externalSpecs) {
235
+ function buildClusteringPrompt(repoSummaries, externalSpecs, externalTeamsContext = '') {
85
236
  const schema = {
86
- teams: '[{name, description, repos:[], reasoning}, ...]',
237
+ teams: '[{name, description, responsibilities:[], domainExpertise:[], techStack:[], repos:[], reasoning, integrationBoundaries?}, ...]',
87
238
  microservices: '[{name, description, repos:[], reasoning}, ...]',
88
239
  domains: '[{name, description, repos:[], reasoning}, ...]',
89
240
  crossCutting: '[{name, description, repos:[], reasoning}, ...]',
90
241
  hypotheses: '["uncertainty1", ...]',
91
242
  };
92
243
  const specsContext = externalSpecs.length > 0 ? `\n\nExternal project info (from Jira/ADO):\n${externalSpecs.join('\n')}` : '';
93
- const context = `Analyze these repositories to understand organization structure:\n\n${repoSummaries}${specsContext}\n\nGroup by:\n1. Teams (likely ownership)\n2. Microservices (service boundaries)\n3. Domains (business areas)\n4. Cross-cutting (shared infra)\n\nNote any uncertainties in hypotheses.`;
94
- return buildJsonPrompt(context, schema, 'Cluster these repositories.');
244
+ const context = `Analyze these repositories to understand organization structure.
245
+
246
+ For each TEAM, provide comprehensive documentation:
247
+ - name: Team name (e.g., "AssetCare Team", "CDP Platform Team")
248
+ - description: 2-3 sentence summary of what this team does
249
+ - responsibilities: Array of 3-5 bullet points defining what the team owns and maintains
250
+ - domainExpertise: Array of technical competencies (e.g., "FHIR integration", "Angular development", "Azure Functions")
251
+ - techStack: Array of primary technologies used across team repos
252
+ - repos: List of repository names belonging to this team
253
+ - reasoning: Brief explanation of why these repos were grouped together
254
+ - integrationBoundaries: (optional) Description of upstream/downstream dependencies
255
+
256
+ Repositories to analyze:
257
+ ${repoSummaries}${specsContext}${externalTeamsContext}
258
+
259
+ Group by:
260
+ 1. Teams (likely ownership with rich metadata)
261
+ 2. Microservices (service boundaries)
262
+ 3. Domains (business areas)
263
+ 4. Cross-cutting (shared infra)
264
+
265
+ Note any uncertainties in hypotheses.`;
266
+ return buildJsonPrompt(context, schema, 'Cluster these repositories with detailed team information.');
95
267
  }
96
- function convertLLMResponse(response) {
268
+ function convertLLMResponse(response, projectPath) {
269
+ const structureConfig = detectStructureLevel(projectPath);
97
270
  const convert = (items, type) => (items || []).map(item => ({
98
271
  name: item.name, type, description: item.description || '',
99
272
  repos: item.repos || [], confidence: 'medium', reasoning: item.reasoning || '',
100
273
  }));
274
+ // Convert enhanced teams with all fields and project context
275
+ const defaultProject = structureConfig.projects[0]?.id || 'default';
276
+ const enhancedTeams = (response.teams || []).map(team => ({
277
+ name: team.name || 'Unknown Team',
278
+ description: team.description || '',
279
+ responsibilities: team.responsibilities || [],
280
+ domainExpertise: team.domainExpertise || [],
281
+ techStack: team.techStack || [],
282
+ repos: team.repos || [],
283
+ reasoning: team.reasoning || '',
284
+ integrationBoundaries: team.integrationBoundaries,
285
+ project: defaultProject, // Set default project for LLM-derived teams
286
+ }));
101
287
  return {
102
288
  teams: convert(response.teams, 'team'),
289
+ enhancedTeams,
103
290
  microservices: convert(response.microservices, 'microservice'),
104
291
  domains: convert(response.domains, 'domain'),
105
292
  crossCutting: convert(response.crossCutting, 'domain'),
@@ -107,7 +294,9 @@ function convertLLMResponse(response) {
107
294
  confidence: 'medium',
108
295
  };
109
296
  }
110
- function createBasicClustering(analyses) {
297
+ function createBasicClustering(analyses, projectPath) {
298
+ const structureConfig = detectStructureLevel(projectPath);
299
+ const defaultProject = structureConfig.projects[0]?.id || 'default';
111
300
  // Basic clustering by naming conventions
112
301
  const teamMap = new Map();
113
302
  for (const [name] of analyses) {
@@ -118,35 +307,174 @@ function createBasicClustering(analyses) {
118
307
  teamMap.get(team).push(name);
119
308
  }
120
309
  const teams = [];
310
+ const enhancedTeams = [];
121
311
  for (const [team, repos] of teamMap) {
122
- teams.push({ name: `${team}-team`, type: 'team', description: `Repos with ${team}- prefix`,
123
- repos, confidence: 'low', reasoning: 'Grouped by naming convention' });
312
+ const teamName = `${team}-team`;
313
+ teams.push({
314
+ name: teamName,
315
+ type: 'team',
316
+ description: `Repos with ${team}- prefix`,
317
+ repos,
318
+ confidence: 'low',
319
+ reasoning: 'Grouped by naming convention'
320
+ });
321
+ // Create basic enhanced team (without LLM-derived fields)
322
+ enhancedTeams.push({
323
+ name: teamName,
324
+ description: `Repositories grouped by ${team}- naming prefix.`,
325
+ responsibilities: ['Maintain repositories with this prefix'],
326
+ domainExpertise: ['General development'],
327
+ techStack: ['TypeScript'], // Default
328
+ repos,
329
+ reasoning: 'Grouped by naming convention - LLM analysis recommended for accurate details',
330
+ project: defaultProject, // Set default project for basic clustering
331
+ });
124
332
  }
125
- return { teams, microservices: [], domains: [], crossCutting: [], hypotheses: ['Basic clustering by naming only - LLM analysis recommended'], confidence: 'low' };
333
+ return {
334
+ teams,
335
+ enhancedTeams,
336
+ microservices: [],
337
+ domains: [],
338
+ crossCutting: [],
339
+ hypotheses: ['Basic clustering by naming only - LLM analysis recommended'],
340
+ confidence: 'low'
341
+ };
342
+ }
343
+ /**
344
+ * Get the team folder path based on structure level configuration
345
+ *
346
+ * 1-level: organization/teams/{project}/
347
+ * 2-level: organization/teams/{project}/{board}/
348
+ */
349
+ function getTeamFolderPath(basePath, team, structureConfig) {
350
+ const teamsBasePath = path.join(basePath, 'teams');
351
+ // Determine project ID
352
+ const projectId = team.project
353
+ || structureConfig.projects[0]?.id
354
+ || 'default';
355
+ if (structureConfig.level === 2) {
356
+ // 2-level: teams/{project}/{board}/
357
+ const boardId = team.board
358
+ || (structureConfig.boardsByProject?.[projectId]?.[0]?.id)
359
+ || 'general';
360
+ return path.join(teamsBasePath, projectId, boardId);
361
+ }
362
+ // 1-level: teams/{project}/
363
+ return path.join(teamsBasePath, projectId);
364
+ }
365
+ /**
366
+ * Generate team markdown content with external links support
367
+ */
368
+ function generateTeamMarkdown(team) {
369
+ const sections = [
370
+ `# ${team.name}`,
371
+ '',
372
+ team.description,
373
+ ''
374
+ ];
375
+ // External links section (if available)
376
+ if (team.externalUrl) {
377
+ sections.push('## External Links', '', `- [View in ${team.externalProvider === 'ado' ? 'Azure DevOps' : team.externalProvider === 'jira' ? 'Jira' : team.externalProvider}](${team.externalUrl})`, '');
378
+ }
379
+ // Responsibilities
380
+ sections.push('## Responsibilities', '', ...(team.responsibilities.length > 0
381
+ ? team.responsibilities.map(r => `- ${r}`)
382
+ : ['- TBD']), '');
383
+ // Domain Expertise
384
+ sections.push('## Domain Expertise', '', ...(team.domainExpertise.length > 0
385
+ ? team.domainExpertise.map(e => `- ${e}`)
386
+ : ['- General development']), '');
387
+ // Technology Stack
388
+ sections.push('## Technology Stack', '', ...(team.techStack.length > 0
389
+ ? team.techStack.map(t => `- ${t}`)
390
+ : ['- TypeScript']), '');
391
+ // Repositories (adjust relative path based on depth)
392
+ const modulesRelPath = team.board ? '../../../../modules' : '../../../modules';
393
+ sections.push('## Repositories', '', ...team.repos.map(r => `- [${r}](${modulesRelPath}/${r}.md)`), '');
394
+ // Integration Boundaries
395
+ sections.push('## Integration Boundaries', '', team.integrationBoundaries || 'Integration boundaries to be documented.', '');
396
+ // Footer
397
+ sections.push('---', `*Clustering reasoning: ${team.reasoning}*`, `*Generated on ${new Date().toISOString().split('T')[0]}*`);
398
+ return sections.join('\n');
399
+ }
400
+ /**
401
+ * Generate index.md for a team folder (project or board level)
402
+ */
403
+ function generateTeamIndexMarkdown(folderName, teams, level) {
404
+ const title = level === 'project'
405
+ ? `# ${folderName} Teams`
406
+ : `# ${folderName} Board Teams`;
407
+ const sections = [
408
+ title,
409
+ '',
410
+ `*${teams.length} teams in this ${level}*`,
411
+ '',
412
+ '## Teams',
413
+ '',
414
+ ...teams.map(t => `- [${t.name}](./${t.name.toLowerCase().replace(/\s+/g, '-')}.md)`),
415
+ '',
416
+ '---',
417
+ `*Generated on ${new Date().toISOString().split('T')[0]}*`
418
+ ];
419
+ return sections.join('\n');
126
420
  }
127
421
  export async function saveOrganizationStructure(projectPath, result, repoAnalyses) {
128
422
  const savedFiles = [];
129
423
  const orgPath = path.join(projectPath, '.specweave/docs/internal/organization');
130
424
  fs.mkdirSync(orgPath, { recursive: true });
425
+ // Detect structure level for team organization
426
+ const structureConfig = detectStructureLevel(projectPath);
131
427
  // Overview
132
- const overviewLines = ['# Organization Overview', '', `*Generated ${new Date().toISOString().split('T')[0]} | Confidence: ${result.confidence}*`, '',
133
- `## Summary`, '', `- **Teams**: ${result.teams.length}`, `- **Microservices**: ${result.microservices.length}`,
134
- `- **Domains**: ${result.domains.length}`, `- **Repositories**: ${repoAnalyses.size}`, ''];
428
+ const overviewLines = [
429
+ '# Organization Overview',
430
+ '',
431
+ `*Generated ${new Date().toISOString().split('T')[0]} | Confidence: ${result.confidence}*`,
432
+ '',
433
+ `## Summary`,
434
+ '',
435
+ `- **Teams**: ${result.teams.length}`,
436
+ `- **Microservices**: ${result.microservices.length}`,
437
+ `- **Domains**: ${result.domains.length}`,
438
+ `- **Repositories**: ${repoAnalyses.size}`,
439
+ `- **Structure Level**: ${structureConfig.level}-level (${structureConfig.detectionReason})`,
440
+ ''
441
+ ];
135
442
  if (result.hypotheses.length > 0) {
136
443
  overviewLines.push('## Uncertainties', '', ...result.hypotheses.map(h => `- ${h}`), '');
137
444
  }
138
445
  fs.writeFileSync(path.join(orgPath, 'overview.md'), overviewLines.join('\n'));
139
446
  savedFiles.push(path.join(orgPath, 'overview.md'));
140
- // Teams
141
- if (result.teams.length > 0) {
142
- const teamsPath = path.join(orgPath, 'teams');
143
- fs.mkdirSync(teamsPath, { recursive: true });
144
- for (const team of result.teams) {
145
- const content = [`# ${team.name}`, '', team.description, '', '## Repositories', '',
146
- ...team.repos.map(r => `- [${r}](../../repos/${r}/overview.md)`), '', `*Reasoning: ${team.reasoning}*`].join('\n');
147
- const fileName = `${team.name.toLowerCase().replace(/\s/g, '-')}.md`;
148
- fs.writeFileSync(path.join(teamsPath, fileName), content);
149
- savedFiles.push(path.join(teamsPath, fileName));
447
+ // Teams - use enhancedTeams for rich documentation with structure-level-aware folders
448
+ if (result.enhancedTeams.length > 0) {
449
+ // Group teams by their target folder
450
+ const teamsByFolder = new Map();
451
+ for (const team of result.enhancedTeams) {
452
+ const folderPath = getTeamFolderPath(orgPath, team, structureConfig);
453
+ if (!teamsByFolder.has(folderPath)) {
454
+ teamsByFolder.set(folderPath, []);
455
+ }
456
+ teamsByFolder.get(folderPath).push(team);
457
+ }
458
+ // Create folders and write team files
459
+ for (const [folderPath, teams] of teamsByFolder) {
460
+ fs.mkdirSync(folderPath, { recursive: true });
461
+ // Create index.md for this folder
462
+ const relativePath = path.relative(path.join(orgPath, 'teams'), folderPath);
463
+ const parts = relativePath.split(path.sep).filter(p => p);
464
+ const folderName = parts[parts.length - 1] || 'Teams';
465
+ const indexLevel = structureConfig.level === 2 && parts.length > 1 ? 'board' : 'project';
466
+ const indexContent = generateTeamIndexMarkdown(folderName, teams, indexLevel);
467
+ const indexPath = path.join(folderPath, 'index.md');
468
+ fs.writeFileSync(indexPath, indexContent);
469
+ savedFiles.push(indexPath);
470
+ // Write individual team files
471
+ for (const team of teams) {
472
+ const content = generateTeamMarkdown(team);
473
+ const fileName = `${team.name.toLowerCase().replace(/\s+/g, '-')}.md`;
474
+ const filePath = path.join(folderPath, fileName);
475
+ fs.writeFileSync(filePath, content);
476
+ savedFiles.push(filePath);
477
+ }
150
478
  }
151
479
  }
152
480
  return savedFiles;
@@ -1 +1 @@
1
- {"version":3,"file":"organization-synthesizer.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/organization-synthesizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"organization-synthesizer.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/organization-synthesizer.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,50 @@ export interface OrganizationCluster {
67
67
  confidence: 'high' | 'medium' | 'low';
68
68
  reasoning: string;
69
69
  }
70
+ /**
71
+ * Enhanced team structure with responsibilities, expertise, and tech stack
72
+ * Used for rich team documentation generation
73
+ */
74
+ export interface EnhancedTeam {
75
+ name: string;
76
+ description: string;
77
+ responsibilities: string[];
78
+ domainExpertise: string[];
79
+ techStack: string[];
80
+ repos: string[];
81
+ reasoning: string;
82
+ integrationBoundaries?: string;
83
+ project?: string;
84
+ board?: string;
85
+ externalId?: string;
86
+ externalUrl?: string;
87
+ externalProvider?: 'ado' | 'jira' | 'github';
88
+ }
89
+ /**
90
+ * LLM response for team clustering with enhanced fields
91
+ */
92
+ export interface EnhancedClusteringResponse {
93
+ teams: EnhancedTeam[];
94
+ microservices: Array<{
95
+ name: string;
96
+ description: string;
97
+ repos: string[];
98
+ reasoning: string;
99
+ }>;
100
+ domains: Array<{
101
+ name: string;
102
+ description: string;
103
+ repos: string[];
104
+ reasoning: string;
105
+ }>;
106
+ crossCutting: Array<{
107
+ name: string;
108
+ description: string;
109
+ repos: string[];
110
+ reasoning: string;
111
+ }>;
112
+ hypotheses: string[];
113
+ }
70
114
  /**
71
115
  * Detected architectural decision
72
116
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/intelligent-analyzer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAGzC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAG1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAGb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,YAAY,EAAE,YAAY,EAAE,CAAC;IAG7B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAG/B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IAGnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;IAC3E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAG/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChG,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1F,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5E,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,OAAO,CAAC;CACpG;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;IAChE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,KACZ,IAAI,CAAC"}
@@ -65,9 +65,12 @@ export declare class LivingDocsSync {
65
65
  * - If FS-XXXE exists → then use next available internal ID
66
66
  * - If FS-XXX already exists → REUSE (same increment re-syncing)
67
67
  *
68
- * @param incrementId - Increment ID (e.g., "0081-ado-repo-cloning")
68
+ * CRITICAL (v0.33.0): External increments (0111E-...) MUST map to external
69
+ * features (FS-111E), not internal ones. Uses canonical deriveFeatureId().
70
+ *
71
+ * @param incrementId - Increment ID (e.g., "0081-ado-repo-cloning" or "0111E-external")
69
72
  * @param resolvedProjectPath - Resolved project path (e.g., "acme/backend" or "my-project")
70
- * @returns Feature ID (e.g., "FS-081", or "FS-082" if FS-081E exists)
73
+ * @returns Feature ID (e.g., "FS-081", "FS-111E", or "FS-082" if collision)
71
74
  * @see deriveFeatureId() in src/utils/feature-id-derivation.ts
72
75
  */
73
76
  private getFeatureIdForIncrement;
@@ -93,7 +96,7 @@ export declare class LivingDocsSync {
93
96
  *
94
97
  * SECURITY: Validates both incrementId and extracted names to prevent path traversal
95
98
  *
96
- * @param incrementId - Increment ID (e.g., "0002-test-anton-monitor")
99
+ * @param incrementId - Increment ID (e.g., "0002-test-anton-monitor" or "0111E-external")
97
100
  * @returns Object with project and board (null if not specified or invalid)
98
101
  */
99
102
  private extractProjectBoardFromSpec;