@libar-dev/architect 1.0.0-pre.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 (800) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/LICENSE +25 -0
  3. package/LICENSE-MCP +62 -0
  4. package/README.md +147 -0
  5. package/dist/api/arch-queries.d.ts +95 -0
  6. package/dist/api/arch-queries.d.ts.map +1 -0
  7. package/dist/api/arch-queries.js +310 -0
  8. package/dist/api/arch-queries.js.map +1 -0
  9. package/dist/api/context-assembler.d.ts +124 -0
  10. package/dist/api/context-assembler.d.ts.map +1 -0
  11. package/dist/api/context-assembler.js +472 -0
  12. package/dist/api/context-assembler.js.map +1 -0
  13. package/dist/api/context-formatter.d.ts +26 -0
  14. package/dist/api/context-formatter.d.ts.map +1 -0
  15. package/dist/api/context-formatter.js +183 -0
  16. package/dist/api/context-formatter.js.map +1 -0
  17. package/dist/api/coverage-analyzer.d.ts +38 -0
  18. package/dist/api/coverage-analyzer.d.ts.map +1 -0
  19. package/dist/api/coverage-analyzer.js +117 -0
  20. package/dist/api/coverage-analyzer.js.map +1 -0
  21. package/dist/api/fuzzy-match.d.ts +75 -0
  22. package/dist/api/fuzzy-match.d.ts.map +1 -0
  23. package/dist/api/fuzzy-match.js +150 -0
  24. package/dist/api/fuzzy-match.js.map +1 -0
  25. package/dist/api/handoff-generator.d.ts +45 -0
  26. package/dist/api/handoff-generator.d.ts.map +1 -0
  27. package/dist/api/handoff-generator.js +139 -0
  28. package/dist/api/handoff-generator.js.map +1 -0
  29. package/dist/api/index.d.ts +61 -0
  30. package/dist/api/index.d.ts.map +1 -0
  31. package/dist/api/index.js +54 -0
  32. package/dist/api/index.js.map +1 -0
  33. package/dist/api/pattern-helpers.d.ts +51 -0
  34. package/dist/api/pattern-helpers.d.ts.map +1 -0
  35. package/dist/api/pattern-helpers.js +84 -0
  36. package/dist/api/pattern-helpers.js.map +1 -0
  37. package/dist/api/process-state.d.ts +224 -0
  38. package/dist/api/process-state.d.ts.map +1 -0
  39. package/dist/api/process-state.js +308 -0
  40. package/dist/api/process-state.js.map +1 -0
  41. package/dist/api/rules-query.d.ts +60 -0
  42. package/dist/api/rules-query.d.ts.map +1 -0
  43. package/dist/api/rules-query.js +154 -0
  44. package/dist/api/rules-query.js.map +1 -0
  45. package/dist/api/scope-validator.d.ts +56 -0
  46. package/dist/api/scope-validator.d.ts.map +1 -0
  47. package/dist/api/scope-validator.js +293 -0
  48. package/dist/api/scope-validator.js.map +1 -0
  49. package/dist/api/stub-resolver.d.ts +117 -0
  50. package/dist/api/stub-resolver.d.ts.map +1 -0
  51. package/dist/api/stub-resolver.js +154 -0
  52. package/dist/api/stub-resolver.js.map +1 -0
  53. package/dist/api/summarize.d.ts +75 -0
  54. package/dist/api/summarize.d.ts.map +1 -0
  55. package/dist/api/summarize.js +97 -0
  56. package/dist/api/summarize.js.map +1 -0
  57. package/dist/api/types.d.ts +221 -0
  58. package/dist/api/types.d.ts.map +1 -0
  59. package/dist/api/types.js +57 -0
  60. package/dist/api/types.js.map +1 -0
  61. package/dist/cache/file-cache.d.ts +72 -0
  62. package/dist/cache/file-cache.d.ts.map +1 -0
  63. package/dist/cache/file-cache.js +80 -0
  64. package/dist/cache/file-cache.js.map +1 -0
  65. package/dist/cache/index.d.ts +5 -0
  66. package/dist/cache/index.d.ts.map +1 -0
  67. package/dist/cache/index.js +5 -0
  68. package/dist/cache/index.js.map +1 -0
  69. package/dist/cli/cli-schema.d.ts +83 -0
  70. package/dist/cli/cli-schema.d.ts.map +1 -0
  71. package/dist/cli/cli-schema.js +505 -0
  72. package/dist/cli/cli-schema.js.map +1 -0
  73. package/dist/cli/dataset-cache.d.ts +66 -0
  74. package/dist/cli/dataset-cache.d.ts.map +1 -0
  75. package/dist/cli/dataset-cache.js +179 -0
  76. package/dist/cli/dataset-cache.js.map +1 -0
  77. package/dist/cli/error-handler.d.ts +84 -0
  78. package/dist/cli/error-handler.d.ts.map +1 -0
  79. package/dist/cli/error-handler.js +197 -0
  80. package/dist/cli/error-handler.js.map +1 -0
  81. package/dist/cli/generate-docs.d.ts +30 -0
  82. package/dist/cli/generate-docs.d.ts.map +1 -0
  83. package/dist/cli/generate-docs.js +370 -0
  84. package/dist/cli/generate-docs.js.map +1 -0
  85. package/dist/cli/lint-patterns.d.ts +57 -0
  86. package/dist/cli/lint-patterns.d.ts.map +1 -0
  87. package/dist/cli/lint-patterns.js +257 -0
  88. package/dist/cli/lint-patterns.js.map +1 -0
  89. package/dist/cli/lint-process.d.ts +54 -0
  90. package/dist/cli/lint-process.d.ts.map +1 -0
  91. package/dist/cli/lint-process.js +319 -0
  92. package/dist/cli/lint-process.js.map +1 -0
  93. package/dist/cli/lint-steps.d.ts +32 -0
  94. package/dist/cli/lint-steps.d.ts.map +1 -0
  95. package/dist/cli/lint-steps.js +172 -0
  96. package/dist/cli/lint-steps.js.map +1 -0
  97. package/dist/cli/mcp-server.d.ts +22 -0
  98. package/dist/cli/mcp-server.d.ts.map +1 -0
  99. package/dist/cli/mcp-server.js +57 -0
  100. package/dist/cli/mcp-server.js.map +1 -0
  101. package/dist/cli/output-pipeline.d.ts +130 -0
  102. package/dist/cli/output-pipeline.d.ts.map +1 -0
  103. package/dist/cli/output-pipeline.js +234 -0
  104. package/dist/cli/output-pipeline.js.map +1 -0
  105. package/dist/cli/process-api.d.ts +37 -0
  106. package/dist/cli/process-api.d.ts.map +1 -0
  107. package/dist/cli/process-api.js +1550 -0
  108. package/dist/cli/process-api.js.map +1 -0
  109. package/dist/cli/repl.d.ts +38 -0
  110. package/dist/cli/repl.d.ts.map +1 -0
  111. package/dist/cli/repl.js +239 -0
  112. package/dist/cli/repl.js.map +1 -0
  113. package/dist/cli/validate-patterns.d.ts +115 -0
  114. package/dist/cli/validate-patterns.d.ts.map +1 -0
  115. package/dist/cli/validate-patterns.js +707 -0
  116. package/dist/cli/validate-patterns.js.map +1 -0
  117. package/dist/cli/version.d.ts +35 -0
  118. package/dist/cli/version.d.ts.map +1 -0
  119. package/dist/cli/version.js +64 -0
  120. package/dist/cli/version.js.map +1 -0
  121. package/dist/config/config-loader.d.ts +167 -0
  122. package/dist/config/config-loader.d.ts.map +1 -0
  123. package/dist/config/config-loader.js +294 -0
  124. package/dist/config/config-loader.js.map +1 -0
  125. package/dist/config/defaults.d.ts +92 -0
  126. package/dist/config/defaults.d.ts.map +1 -0
  127. package/dist/config/defaults.js +103 -0
  128. package/dist/config/defaults.js.map +1 -0
  129. package/dist/config/define-config.d.ts +37 -0
  130. package/dist/config/define-config.d.ts.map +1 -0
  131. package/dist/config/define-config.js +38 -0
  132. package/dist/config/define-config.js.map +1 -0
  133. package/dist/config/factory.d.ts +79 -0
  134. package/dist/config/factory.d.ts.map +1 -0
  135. package/dist/config/factory.js +116 -0
  136. package/dist/config/factory.js.map +1 -0
  137. package/dist/config/index.d.ts +45 -0
  138. package/dist/config/index.d.ts.map +1 -0
  139. package/dist/config/index.js +48 -0
  140. package/dist/config/index.js.map +1 -0
  141. package/dist/config/merge-sources.d.ts +47 -0
  142. package/dist/config/merge-sources.d.ts.map +1 -0
  143. package/dist/config/merge-sources.js +61 -0
  144. package/dist/config/merge-sources.js.map +1 -0
  145. package/dist/config/presets.d.ts +115 -0
  146. package/dist/config/presets.d.ts.map +1 -0
  147. package/dist/config/presets.js +119 -0
  148. package/dist/config/presets.js.map +1 -0
  149. package/dist/config/project-config-schema.d.ts +192 -0
  150. package/dist/config/project-config-schema.d.ts.map +1 -0
  151. package/dist/config/project-config-schema.js +231 -0
  152. package/dist/config/project-config-schema.js.map +1 -0
  153. package/dist/config/project-config.d.ts +229 -0
  154. package/dist/config/project-config.d.ts.map +1 -0
  155. package/dist/config/project-config.js +37 -0
  156. package/dist/config/project-config.js.map +1 -0
  157. package/dist/config/regex-builders.d.ts +49 -0
  158. package/dist/config/regex-builders.d.ts.map +1 -0
  159. package/dist/config/regex-builders.js +85 -0
  160. package/dist/config/regex-builders.js.map +1 -0
  161. package/dist/config/resolve-config.d.ts +65 -0
  162. package/dist/config/resolve-config.d.ts.map +1 -0
  163. package/dist/config/resolve-config.js +150 -0
  164. package/dist/config/resolve-config.js.map +1 -0
  165. package/dist/config/types.d.ts +81 -0
  166. package/dist/config/types.d.ts.map +1 -0
  167. package/dist/config/types.js +22 -0
  168. package/dist/config/types.js.map +1 -0
  169. package/dist/config/workflow-loader.d.ts +90 -0
  170. package/dist/config/workflow-loader.d.ts.map +1 -0
  171. package/dist/config/workflow-loader.js +167 -0
  172. package/dist/config/workflow-loader.js.map +1 -0
  173. package/dist/extractor/doc-extractor.d.ts +233 -0
  174. package/dist/extractor/doc-extractor.d.ts.map +1 -0
  175. package/dist/extractor/doc-extractor.js +481 -0
  176. package/dist/extractor/doc-extractor.js.map +1 -0
  177. package/dist/extractor/dual-source-extractor.d.ts +161 -0
  178. package/dist/extractor/dual-source-extractor.d.ts.map +1 -0
  179. package/dist/extractor/dual-source-extractor.js +407 -0
  180. package/dist/extractor/dual-source-extractor.js.map +1 -0
  181. package/dist/extractor/gherkin-extractor.d.ts +170 -0
  182. package/dist/extractor/gherkin-extractor.d.ts.map +1 -0
  183. package/dist/extractor/gherkin-extractor.js +543 -0
  184. package/dist/extractor/gherkin-extractor.js.map +1 -0
  185. package/dist/extractor/index.d.ts +7 -0
  186. package/dist/extractor/index.d.ts.map +1 -0
  187. package/dist/extractor/index.js +11 -0
  188. package/dist/extractor/index.js.map +1 -0
  189. package/dist/extractor/layer-inference.d.ts +66 -0
  190. package/dist/extractor/layer-inference.d.ts.map +1 -0
  191. package/dist/extractor/layer-inference.js +93 -0
  192. package/dist/extractor/layer-inference.js.map +1 -0
  193. package/dist/extractor/shape-extractor.d.ts +79 -0
  194. package/dist/extractor/shape-extractor.d.ts.map +1 -0
  195. package/dist/extractor/shape-extractor.js +966 -0
  196. package/dist/extractor/shape-extractor.js.map +1 -0
  197. package/dist/generators/built-in/cli-recipe-generator.d.ts +30 -0
  198. package/dist/generators/built-in/cli-recipe-generator.d.ts.map +1 -0
  199. package/dist/generators/built-in/cli-recipe-generator.js +155 -0
  200. package/dist/generators/built-in/cli-recipe-generator.js.map +1 -0
  201. package/dist/generators/built-in/codec-generators.d.ts +29 -0
  202. package/dist/generators/built-in/codec-generators.d.ts.map +1 -0
  203. package/dist/generators/built-in/codec-generators.js +195 -0
  204. package/dist/generators/built-in/codec-generators.js.map +1 -0
  205. package/dist/generators/built-in/decision-doc-generator.d.ts +204 -0
  206. package/dist/generators/built-in/decision-doc-generator.d.ts.map +1 -0
  207. package/dist/generators/built-in/decision-doc-generator.js +654 -0
  208. package/dist/generators/built-in/decision-doc-generator.js.map +1 -0
  209. package/dist/generators/built-in/design-review-generator.d.ts +26 -0
  210. package/dist/generators/built-in/design-review-generator.d.ts.map +1 -0
  211. package/dist/generators/built-in/design-review-generator.js +94 -0
  212. package/dist/generators/built-in/design-review-generator.js.map +1 -0
  213. package/dist/generators/built-in/index.d.ts +22 -0
  214. package/dist/generators/built-in/index.d.ts.map +1 -0
  215. package/dist/generators/built-in/index.js +23 -0
  216. package/dist/generators/built-in/index.js.map +1 -0
  217. package/dist/generators/built-in/process-api-reference-generator.d.ts +18 -0
  218. package/dist/generators/built-in/process-api-reference-generator.d.ts.map +1 -0
  219. package/dist/generators/built-in/process-api-reference-generator.js +85 -0
  220. package/dist/generators/built-in/process-api-reference-generator.js.map +1 -0
  221. package/dist/generators/built-in/reference-generators.d.ts +51 -0
  222. package/dist/generators/built-in/reference-generators.d.ts.map +1 -0
  223. package/dist/generators/built-in/reference-generators.js +320 -0
  224. package/dist/generators/built-in/reference-generators.js.map +1 -0
  225. package/dist/generators/codec-based.d.ts +63 -0
  226. package/dist/generators/codec-based.d.ts.map +1 -0
  227. package/dist/generators/codec-based.js +88 -0
  228. package/dist/generators/codec-based.js.map +1 -0
  229. package/dist/generators/content-deduplicator.d.ts +114 -0
  230. package/dist/generators/content-deduplicator.d.ts.map +1 -0
  231. package/dist/generators/content-deduplicator.js +356 -0
  232. package/dist/generators/content-deduplicator.js.map +1 -0
  233. package/dist/generators/index.d.ts +50 -0
  234. package/dist/generators/index.d.ts.map +1 -0
  235. package/dist/generators/index.js +54 -0
  236. package/dist/generators/index.js.map +1 -0
  237. package/dist/generators/orchestrator.d.ts +265 -0
  238. package/dist/generators/orchestrator.d.ts.map +1 -0
  239. package/dist/generators/orchestrator.js +570 -0
  240. package/dist/generators/orchestrator.js.map +1 -0
  241. package/dist/generators/pipeline/build-pipeline.d.ts +131 -0
  242. package/dist/generators/pipeline/build-pipeline.d.ts.map +1 -0
  243. package/dist/generators/pipeline/build-pipeline.js +248 -0
  244. package/dist/generators/pipeline/build-pipeline.js.map +1 -0
  245. package/dist/generators/pipeline/context-inference.d.ts +55 -0
  246. package/dist/generators/pipeline/context-inference.d.ts.map +1 -0
  247. package/dist/generators/pipeline/context-inference.js +76 -0
  248. package/dist/generators/pipeline/context-inference.js.map +1 -0
  249. package/dist/generators/pipeline/index.d.ts +27 -0
  250. package/dist/generators/pipeline/index.d.ts.map +1 -0
  251. package/dist/generators/pipeline/index.js +34 -0
  252. package/dist/generators/pipeline/index.js.map +1 -0
  253. package/dist/generators/pipeline/merge-patterns.d.ts +33 -0
  254. package/dist/generators/pipeline/merge-patterns.d.ts.map +1 -0
  255. package/dist/generators/pipeline/merge-patterns.js +50 -0
  256. package/dist/generators/pipeline/merge-patterns.js.map +1 -0
  257. package/dist/generators/pipeline/relationship-resolver.d.ts +47 -0
  258. package/dist/generators/pipeline/relationship-resolver.d.ts.map +1 -0
  259. package/dist/generators/pipeline/relationship-resolver.js +132 -0
  260. package/dist/generators/pipeline/relationship-resolver.js.map +1 -0
  261. package/dist/generators/pipeline/sequence-utils.d.ts +49 -0
  262. package/dist/generators/pipeline/sequence-utils.d.ts.map +1 -0
  263. package/dist/generators/pipeline/sequence-utils.js +235 -0
  264. package/dist/generators/pipeline/sequence-utils.js.map +1 -0
  265. package/dist/generators/pipeline/transform-dataset.d.ts +82 -0
  266. package/dist/generators/pipeline/transform-dataset.d.ts.map +1 -0
  267. package/dist/generators/pipeline/transform-dataset.js +355 -0
  268. package/dist/generators/pipeline/transform-dataset.js.map +1 -0
  269. package/dist/generators/pipeline/transform-types.d.ts +96 -0
  270. package/dist/generators/pipeline/transform-types.d.ts.map +1 -0
  271. package/dist/generators/pipeline/transform-types.js +18 -0
  272. package/dist/generators/pipeline/transform-types.js.map +1 -0
  273. package/dist/generators/registry.d.ts +64 -0
  274. package/dist/generators/registry.d.ts.map +1 -0
  275. package/dist/generators/registry.js +77 -0
  276. package/dist/generators/registry.js.map +1 -0
  277. package/dist/generators/source-mapper.d.ts +143 -0
  278. package/dist/generators/source-mapper.d.ts.map +1 -0
  279. package/dist/generators/source-mapper.js +602 -0
  280. package/dist/generators/source-mapper.js.map +1 -0
  281. package/dist/generators/source-mapping-validator.d.ts +118 -0
  282. package/dist/generators/source-mapping-validator.d.ts.map +1 -0
  283. package/dist/generators/source-mapping-validator.js +334 -0
  284. package/dist/generators/source-mapping-validator.js.map +1 -0
  285. package/dist/generators/types.d.ts +104 -0
  286. package/dist/generators/types.d.ts.map +1 -0
  287. package/dist/generators/types.js +5 -0
  288. package/dist/generators/types.js.map +1 -0
  289. package/dist/generators/warning-collector.d.ts +144 -0
  290. package/dist/generators/warning-collector.d.ts.map +1 -0
  291. package/dist/generators/warning-collector.js +166 -0
  292. package/dist/generators/warning-collector.js.map +1 -0
  293. package/dist/git/branch-diff.d.ts +44 -0
  294. package/dist/git/branch-diff.d.ts.map +1 -0
  295. package/dist/git/branch-diff.js +57 -0
  296. package/dist/git/branch-diff.js.map +1 -0
  297. package/dist/git/helpers.d.ts +46 -0
  298. package/dist/git/helpers.d.ts.map +1 -0
  299. package/dist/git/helpers.js +67 -0
  300. package/dist/git/helpers.js.map +1 -0
  301. package/dist/git/index.d.ts +18 -0
  302. package/dist/git/index.d.ts.map +1 -0
  303. package/dist/git/index.js +18 -0
  304. package/dist/git/index.js.map +1 -0
  305. package/dist/git/name-status.d.ts +32 -0
  306. package/dist/git/name-status.d.ts.map +1 -0
  307. package/dist/git/name-status.js +66 -0
  308. package/dist/git/name-status.js.map +1 -0
  309. package/dist/index.d.ts +107 -0
  310. package/dist/index.d.ts.map +1 -0
  311. package/dist/index.js +122 -0
  312. package/dist/index.js.map +1 -0
  313. package/dist/lint/engine.d.ts +113 -0
  314. package/dist/lint/engine.d.ts.map +1 -0
  315. package/dist/lint/engine.js +228 -0
  316. package/dist/lint/engine.js.map +1 -0
  317. package/dist/lint/index.d.ts +26 -0
  318. package/dist/lint/index.d.ts.map +1 -0
  319. package/dist/lint/index.js +24 -0
  320. package/dist/lint/index.js.map +1 -0
  321. package/dist/lint/process-guard/decider.d.ts +166 -0
  322. package/dist/lint/process-guard/decider.d.ts.map +1 -0
  323. package/dist/lint/process-guard/decider.js +412 -0
  324. package/dist/lint/process-guard/decider.js.map +1 -0
  325. package/dist/lint/process-guard/derive-state.d.ts +96 -0
  326. package/dist/lint/process-guard/derive-state.d.ts.map +1 -0
  327. package/dist/lint/process-guard/derive-state.js +368 -0
  328. package/dist/lint/process-guard/derive-state.js.map +1 -0
  329. package/dist/lint/process-guard/detect-changes.d.ts +109 -0
  330. package/dist/lint/process-guard/detect-changes.d.ts.map +1 -0
  331. package/dist/lint/process-guard/detect-changes.js +487 -0
  332. package/dist/lint/process-guard/detect-changes.js.map +1 -0
  333. package/dist/lint/process-guard/index.d.ts +35 -0
  334. package/dist/lint/process-guard/index.d.ts.map +1 -0
  335. package/dist/lint/process-guard/index.js +39 -0
  336. package/dist/lint/process-guard/index.js.map +1 -0
  337. package/dist/lint/process-guard/types.d.ts +255 -0
  338. package/dist/lint/process-guard/types.d.ts.map +1 -0
  339. package/dist/lint/process-guard/types.js +31 -0
  340. package/dist/lint/process-guard/types.js.map +1 -0
  341. package/dist/lint/rules.d.ts +147 -0
  342. package/dist/lint/rules.d.ts.map +1 -0
  343. package/dist/lint/rules.js +289 -0
  344. package/dist/lint/rules.js.map +1 -0
  345. package/dist/lint/steps/cross-checks.d.ts +66 -0
  346. package/dist/lint/steps/cross-checks.d.ts.map +1 -0
  347. package/dist/lint/steps/cross-checks.js +290 -0
  348. package/dist/lint/steps/cross-checks.js.map +1 -0
  349. package/dist/lint/steps/feature-checks.d.ts +78 -0
  350. package/dist/lint/steps/feature-checks.d.ts.map +1 -0
  351. package/dist/lint/steps/feature-checks.js +279 -0
  352. package/dist/lint/steps/feature-checks.js.map +1 -0
  353. package/dist/lint/steps/index.d.ts +22 -0
  354. package/dist/lint/steps/index.d.ts.map +1 -0
  355. package/dist/lint/steps/index.js +26 -0
  356. package/dist/lint/steps/index.js.map +1 -0
  357. package/dist/lint/steps/pair-resolver.d.ts +29 -0
  358. package/dist/lint/steps/pair-resolver.d.ts.map +1 -0
  359. package/dist/lint/steps/pair-resolver.js +76 -0
  360. package/dist/lint/steps/pair-resolver.js.map +1 -0
  361. package/dist/lint/steps/runner.d.ts +28 -0
  362. package/dist/lint/steps/runner.d.ts.map +1 -0
  363. package/dist/lint/steps/runner.js +143 -0
  364. package/dist/lint/steps/runner.js.map +1 -0
  365. package/dist/lint/steps/step-checks.d.ts +41 -0
  366. package/dist/lint/steps/step-checks.d.ts.map +1 -0
  367. package/dist/lint/steps/step-checks.js +164 -0
  368. package/dist/lint/steps/step-checks.js.map +1 -0
  369. package/dist/lint/steps/types.d.ts +95 -0
  370. package/dist/lint/steps/types.d.ts.map +1 -0
  371. package/dist/lint/steps/types.js +79 -0
  372. package/dist/lint/steps/types.js.map +1 -0
  373. package/dist/lint/steps/utils.d.ts +22 -0
  374. package/dist/lint/steps/utils.d.ts.map +1 -0
  375. package/dist/lint/steps/utils.js +57 -0
  376. package/dist/lint/steps/utils.js.map +1 -0
  377. package/dist/mcp/file-watcher.d.ts +24 -0
  378. package/dist/mcp/file-watcher.d.ts.map +1 -0
  379. package/dist/mcp/file-watcher.js +75 -0
  380. package/dist/mcp/file-watcher.js.map +1 -0
  381. package/dist/mcp/index.d.ts +19 -0
  382. package/dist/mcp/index.d.ts.map +1 -0
  383. package/dist/mcp/index.js +21 -0
  384. package/dist/mcp/index.js.map +1 -0
  385. package/dist/mcp/pipeline-session.d.ts +33 -0
  386. package/dist/mcp/pipeline-session.d.ts.map +1 -0
  387. package/dist/mcp/pipeline-session.js +149 -0
  388. package/dist/mcp/pipeline-session.js.map +1 -0
  389. package/dist/mcp/server.d.ts +28 -0
  390. package/dist/mcp/server.d.ts.map +1 -0
  391. package/dist/mcp/server.js +197 -0
  392. package/dist/mcp/server.js.map +1 -0
  393. package/dist/mcp/tool-registry.d.ts +4 -0
  394. package/dist/mcp/tool-registry.d.ts.map +1 -0
  395. package/dist/mcp/tool-registry.js +525 -0
  396. package/dist/mcp/tool-registry.js.map +1 -0
  397. package/dist/renderable/codecs/adr.d.ts +4730 -0
  398. package/dist/renderable/codecs/adr.d.ts.map +1 -0
  399. package/dist/renderable/codecs/adr.js +590 -0
  400. package/dist/renderable/codecs/adr.js.map +1 -0
  401. package/dist/renderable/codecs/architecture.d.ts +4760 -0
  402. package/dist/renderable/codecs/architecture.d.ts.map +1 -0
  403. package/dist/renderable/codecs/architecture.js +524 -0
  404. package/dist/renderable/codecs/architecture.js.map +1 -0
  405. package/dist/renderable/codecs/business-rules.d.ts +4777 -0
  406. package/dist/renderable/codecs/business-rules.d.ts.map +1 -0
  407. package/dist/renderable/codecs/business-rules.js +648 -0
  408. package/dist/renderable/codecs/business-rules.js.map +1 -0
  409. package/dist/renderable/codecs/claude-module.d.ts +4710 -0
  410. package/dist/renderable/codecs/claude-module.d.ts.map +1 -0
  411. package/dist/renderable/codecs/claude-module.js +214 -0
  412. package/dist/renderable/codecs/claude-module.js.map +1 -0
  413. package/dist/renderable/codecs/composite.d.ts +84 -0
  414. package/dist/renderable/codecs/composite.d.ts.map +1 -0
  415. package/dist/renderable/codecs/composite.js +124 -0
  416. package/dist/renderable/codecs/composite.js.map +1 -0
  417. package/dist/renderable/codecs/convention-extractor.d.ts +105 -0
  418. package/dist/renderable/codecs/convention-extractor.d.ts.map +1 -0
  419. package/dist/renderable/codecs/convention-extractor.js +353 -0
  420. package/dist/renderable/codecs/convention-extractor.js.map +1 -0
  421. package/dist/renderable/codecs/decision-doc.d.ts +308 -0
  422. package/dist/renderable/codecs/decision-doc.d.ts.map +1 -0
  423. package/dist/renderable/codecs/decision-doc.js +485 -0
  424. package/dist/renderable/codecs/decision-doc.js.map +1 -0
  425. package/dist/renderable/codecs/design-review.d.ts +55 -0
  426. package/dist/renderable/codecs/design-review.d.ts.map +1 -0
  427. package/dist/renderable/codecs/design-review.js +532 -0
  428. package/dist/renderable/codecs/design-review.js.map +1 -0
  429. package/dist/renderable/codecs/diagram-utils.d.ts +62 -0
  430. package/dist/renderable/codecs/diagram-utils.d.ts.map +1 -0
  431. package/dist/renderable/codecs/diagram-utils.js +70 -0
  432. package/dist/renderable/codecs/diagram-utils.js.map +1 -0
  433. package/dist/renderable/codecs/helpers.d.ts +553 -0
  434. package/dist/renderable/codecs/helpers.d.ts.map +1 -0
  435. package/dist/renderable/codecs/helpers.js +913 -0
  436. package/dist/renderable/codecs/helpers.js.map +1 -0
  437. package/dist/renderable/codecs/index-codec.d.ts +4714 -0
  438. package/dist/renderable/codecs/index-codec.d.ts.map +1 -0
  439. package/dist/renderable/codecs/index-codec.js +250 -0
  440. package/dist/renderable/codecs/index-codec.js.map +1 -0
  441. package/dist/renderable/codecs/index.d.ts +46 -0
  442. package/dist/renderable/codecs/index.d.ts.map +1 -0
  443. package/dist/renderable/codecs/index.js +70 -0
  444. package/dist/renderable/codecs/index.js.map +1 -0
  445. package/dist/renderable/codecs/patterns.d.ts +4757 -0
  446. package/dist/renderable/codecs/patterns.d.ts.map +1 -0
  447. package/dist/renderable/codecs/patterns.js +462 -0
  448. package/dist/renderable/codecs/patterns.js.map +1 -0
  449. package/dist/renderable/codecs/planning.d.ts +14055 -0
  450. package/dist/renderable/codecs/planning.d.ts.map +1 -0
  451. package/dist/renderable/codecs/planning.js +449 -0
  452. package/dist/renderable/codecs/planning.js.map +1 -0
  453. package/dist/renderable/codecs/pr-changes.d.ts +4742 -0
  454. package/dist/renderable/codecs/pr-changes.d.ts.map +1 -0
  455. package/dist/renderable/codecs/pr-changes.js +425 -0
  456. package/dist/renderable/codecs/pr-changes.js.map +1 -0
  457. package/dist/renderable/codecs/reference.d.ts +215 -0
  458. package/dist/renderable/codecs/reference.d.ts.map +1 -0
  459. package/dist/renderable/codecs/reference.js +1578 -0
  460. package/dist/renderable/codecs/reference.js.map +1 -0
  461. package/dist/renderable/codecs/reporting.d.ts +14026 -0
  462. package/dist/renderable/codecs/reporting.d.ts.map +1 -0
  463. package/dist/renderable/codecs/reporting.js +365 -0
  464. package/dist/renderable/codecs/reporting.js.map +1 -0
  465. package/dist/renderable/codecs/requirements.d.ts +4743 -0
  466. package/dist/renderable/codecs/requirements.d.ts.map +1 -0
  467. package/dist/renderable/codecs/requirements.js +428 -0
  468. package/dist/renderable/codecs/requirements.js.map +1 -0
  469. package/dist/renderable/codecs/session.d.ts +9410 -0
  470. package/dist/renderable/codecs/session.d.ts.map +1 -0
  471. package/dist/renderable/codecs/session.js +848 -0
  472. package/dist/renderable/codecs/session.js.map +1 -0
  473. package/dist/renderable/codecs/shape-matcher.d.ts +54 -0
  474. package/dist/renderable/codecs/shape-matcher.d.ts.map +1 -0
  475. package/dist/renderable/codecs/shape-matcher.js +106 -0
  476. package/dist/renderable/codecs/shape-matcher.js.map +1 -0
  477. package/dist/renderable/codecs/shared-schema.d.ts +44 -0
  478. package/dist/renderable/codecs/shared-schema.d.ts.map +1 -0
  479. package/dist/renderable/codecs/shared-schema.js +43 -0
  480. package/dist/renderable/codecs/shared-schema.js.map +1 -0
  481. package/dist/renderable/codecs/taxonomy.d.ts +4733 -0
  482. package/dist/renderable/codecs/taxonomy.d.ts.map +1 -0
  483. package/dist/renderable/codecs/taxonomy.js +570 -0
  484. package/dist/renderable/codecs/taxonomy.js.map +1 -0
  485. package/dist/renderable/codecs/timeline.d.ts +14094 -0
  486. package/dist/renderable/codecs/timeline.d.ts.map +1 -0
  487. package/dist/renderable/codecs/timeline.js +906 -0
  488. package/dist/renderable/codecs/timeline.js.map +1 -0
  489. package/dist/renderable/codecs/types/base.d.ts +81 -0
  490. package/dist/renderable/codecs/types/base.d.ts.map +1 -0
  491. package/dist/renderable/codecs/types/base.js +56 -0
  492. package/dist/renderable/codecs/types/base.js.map +1 -0
  493. package/dist/renderable/codecs/types/index.d.ts +5 -0
  494. package/dist/renderable/codecs/types/index.d.ts.map +1 -0
  495. package/dist/renderable/codecs/types/index.js +5 -0
  496. package/dist/renderable/codecs/types/index.js.map +1 -0
  497. package/dist/renderable/codecs/validation-rules.d.ts +4773 -0
  498. package/dist/renderable/codecs/validation-rules.d.ts.map +1 -0
  499. package/dist/renderable/codecs/validation-rules.js +537 -0
  500. package/dist/renderable/codecs/validation-rules.js.map +1 -0
  501. package/dist/renderable/generate.d.ts +338 -0
  502. package/dist/renderable/generate.d.ts.map +1 -0
  503. package/dist/renderable/generate.js +437 -0
  504. package/dist/renderable/generate.js.map +1 -0
  505. package/dist/renderable/index.d.ts +36 -0
  506. package/dist/renderable/index.d.ts.map +1 -0
  507. package/dist/renderable/index.js +58 -0
  508. package/dist/renderable/index.js.map +1 -0
  509. package/dist/renderable/load-preamble.d.ts +56 -0
  510. package/dist/renderable/load-preamble.d.ts.map +1 -0
  511. package/dist/renderable/load-preamble.js +298 -0
  512. package/dist/renderable/load-preamble.js.map +1 -0
  513. package/dist/renderable/render.d.ts +61 -0
  514. package/dist/renderable/render.d.ts.map +1 -0
  515. package/dist/renderable/render.js +346 -0
  516. package/dist/renderable/render.js.map +1 -0
  517. package/dist/renderable/schema.d.ts +194 -0
  518. package/dist/renderable/schema.d.ts.map +1 -0
  519. package/dist/renderable/schema.js +197 -0
  520. package/dist/renderable/schema.js.map +1 -0
  521. package/dist/renderable/utils.d.ts +146 -0
  522. package/dist/renderable/utils.d.ts.map +1 -0
  523. package/dist/renderable/utils.js +362 -0
  524. package/dist/renderable/utils.js.map +1 -0
  525. package/dist/scanner/ast-parser.d.ts +75 -0
  526. package/dist/scanner/ast-parser.d.ts.map +1 -0
  527. package/dist/scanner/ast-parser.js +835 -0
  528. package/dist/scanner/ast-parser.js.map +1 -0
  529. package/dist/scanner/gherkin-ast-parser.d.ts +166 -0
  530. package/dist/scanner/gherkin-ast-parser.d.ts.map +1 -0
  531. package/dist/scanner/gherkin-ast-parser.js +507 -0
  532. package/dist/scanner/gherkin-ast-parser.js.map +1 -0
  533. package/dist/scanner/gherkin-scanner.d.ts +106 -0
  534. package/dist/scanner/gherkin-scanner.d.ts.map +1 -0
  535. package/dist/scanner/gherkin-scanner.js +149 -0
  536. package/dist/scanner/gherkin-scanner.js.map +1 -0
  537. package/dist/scanner/index.d.ts +85 -0
  538. package/dist/scanner/index.d.ts.map +1 -0
  539. package/dist/scanner/index.js +102 -0
  540. package/dist/scanner/index.js.map +1 -0
  541. package/dist/scanner/pattern-scanner.d.ts +83 -0
  542. package/dist/scanner/pattern-scanner.d.ts.map +1 -0
  543. package/dist/scanner/pattern-scanner.js +110 -0
  544. package/dist/scanner/pattern-scanner.js.map +1 -0
  545. package/dist/taxonomy/categories.d.ts +47 -0
  546. package/dist/taxonomy/categories.d.ts.map +1 -0
  547. package/dist/taxonomy/categories.js +175 -0
  548. package/dist/taxonomy/categories.js.map +1 -0
  549. package/dist/taxonomy/claude-section-values.d.ts +12 -0
  550. package/dist/taxonomy/claude-section-values.d.ts.map +1 -0
  551. package/dist/taxonomy/claude-section-values.js +17 -0
  552. package/dist/taxonomy/claude-section-values.js.map +1 -0
  553. package/dist/taxonomy/conventions.d.ts +13 -0
  554. package/dist/taxonomy/conventions.d.ts.map +1 -0
  555. package/dist/taxonomy/conventions.js +27 -0
  556. package/dist/taxonomy/conventions.js.map +1 -0
  557. package/dist/taxonomy/deliverable-status.d.ts +99 -0
  558. package/dist/taxonomy/deliverable-status.d.ts.map +1 -0
  559. package/dist/taxonomy/deliverable-status.js +131 -0
  560. package/dist/taxonomy/deliverable-status.js.map +1 -0
  561. package/dist/taxonomy/format-types.d.ts +17 -0
  562. package/dist/taxonomy/format-types.d.ts.map +1 -0
  563. package/dist/taxonomy/format-types.js +23 -0
  564. package/dist/taxonomy/format-types.js.map +1 -0
  565. package/dist/taxonomy/generator-options.d.ts +67 -0
  566. package/dist/taxonomy/generator-options.d.ts.map +1 -0
  567. package/dist/taxonomy/generator-options.js +75 -0
  568. package/dist/taxonomy/generator-options.js.map +1 -0
  569. package/dist/taxonomy/hierarchy-levels.d.ts +23 -0
  570. package/dist/taxonomy/hierarchy-levels.d.ts.map +1 -0
  571. package/dist/taxonomy/hierarchy-levels.js +22 -0
  572. package/dist/taxonomy/hierarchy-levels.js.map +1 -0
  573. package/dist/taxonomy/index.d.ts +35 -0
  574. package/dist/taxonomy/index.d.ts.map +1 -0
  575. package/dist/taxonomy/index.js +56 -0
  576. package/dist/taxonomy/index.js.map +1 -0
  577. package/dist/taxonomy/layer-types.d.ts +22 -0
  578. package/dist/taxonomy/layer-types.d.ts.map +1 -0
  579. package/dist/taxonomy/layer-types.js +28 -0
  580. package/dist/taxonomy/layer-types.js.map +1 -0
  581. package/dist/taxonomy/normalized-status.d.ts +99 -0
  582. package/dist/taxonomy/normalized-status.d.ts.map +1 -0
  583. package/dist/taxonomy/normalized-status.js +113 -0
  584. package/dist/taxonomy/normalized-status.js.map +1 -0
  585. package/dist/taxonomy/registry-builder.d.ts +104 -0
  586. package/dist/taxonomy/registry-builder.d.ts.map +1 -0
  587. package/dist/taxonomy/registry-builder.js +561 -0
  588. package/dist/taxonomy/registry-builder.js.map +1 -0
  589. package/dist/taxonomy/risk-levels.d.ts +16 -0
  590. package/dist/taxonomy/risk-levels.d.ts.map +1 -0
  591. package/dist/taxonomy/risk-levels.js +15 -0
  592. package/dist/taxonomy/risk-levels.js.map +1 -0
  593. package/dist/taxonomy/severity-types.d.ts +6 -0
  594. package/dist/taxonomy/severity-types.d.ts.map +1 -0
  595. package/dist/taxonomy/severity-types.js +5 -0
  596. package/dist/taxonomy/severity-types.js.map +1 -0
  597. package/dist/taxonomy/status-values.d.ts +39 -0
  598. package/dist/taxonomy/status-values.d.ts.map +1 -0
  599. package/dist/taxonomy/status-values.js +42 -0
  600. package/dist/taxonomy/status-values.js.map +1 -0
  601. package/dist/types/branded.d.ts +89 -0
  602. package/dist/types/branded.d.ts.map +1 -0
  603. package/dist/types/branded.js +57 -0
  604. package/dist/types/branded.js.map +1 -0
  605. package/dist/types/errors.d.ts +342 -0
  606. package/dist/types/errors.d.ts.map +1 -0
  607. package/dist/types/errors.js +251 -0
  608. package/dist/types/errors.js.map +1 -0
  609. package/dist/types/index.d.ts +41 -0
  610. package/dist/types/index.d.ts.map +1 -0
  611. package/dist/types/index.js +5 -0
  612. package/dist/types/index.js.map +1 -0
  613. package/dist/types/result.d.ts +78 -0
  614. package/dist/types/result.d.ts.map +1 -0
  615. package/dist/types/result.js +78 -0
  616. package/dist/types/result.js.map +1 -0
  617. package/dist/utils/collection-utils.d.ts +49 -0
  618. package/dist/utils/collection-utils.d.ts.map +1 -0
  619. package/dist/utils/collection-utils.js +58 -0
  620. package/dist/utils/collection-utils.js.map +1 -0
  621. package/dist/utils/id-utils.d.ts +46 -0
  622. package/dist/utils/id-utils.d.ts.map +1 -0
  623. package/dist/utils/id-utils.js +51 -0
  624. package/dist/utils/id-utils.js.map +1 -0
  625. package/dist/utils/index.d.ts +21 -0
  626. package/dist/utils/index.d.ts.map +1 -0
  627. package/dist/utils/index.js +21 -0
  628. package/dist/utils/index.js.map +1 -0
  629. package/dist/utils/string-utils.d.ts +150 -0
  630. package/dist/utils/string-utils.d.ts.map +1 -0
  631. package/dist/utils/string-utils.js +281 -0
  632. package/dist/utils/string-utils.js.map +1 -0
  633. package/dist/validation/anti-patterns.d.ts +134 -0
  634. package/dist/validation/anti-patterns.d.ts.map +1 -0
  635. package/dist/validation/anti-patterns.js +307 -0
  636. package/dist/validation/anti-patterns.js.map +1 -0
  637. package/dist/validation/dod-validator.d.ts +94 -0
  638. package/dist/validation/dod-validator.d.ts.map +1 -0
  639. package/dist/validation/dod-validator.js +198 -0
  640. package/dist/validation/dod-validator.js.map +1 -0
  641. package/dist/validation/fsm/index.d.ts +59 -0
  642. package/dist/validation/fsm/index.d.ts.map +1 -0
  643. package/dist/validation/fsm/index.js +64 -0
  644. package/dist/validation/fsm/index.js.map +1 -0
  645. package/dist/validation/fsm/states.d.ts +93 -0
  646. package/dist/validation/fsm/states.d.ts.map +1 -0
  647. package/dist/validation/fsm/states.js +98 -0
  648. package/dist/validation/fsm/states.js.map +1 -0
  649. package/dist/validation/fsm/transitions.d.ts +100 -0
  650. package/dist/validation/fsm/transitions.d.ts.map +1 -0
  651. package/dist/validation/fsm/transitions.js +122 -0
  652. package/dist/validation/fsm/transitions.js.map +1 -0
  653. package/dist/validation/fsm/validator.d.ts +163 -0
  654. package/dist/validation/fsm/validator.d.ts.map +1 -0
  655. package/dist/validation/fsm/validator.js +205 -0
  656. package/dist/validation/fsm/validator.js.map +1 -0
  657. package/dist/validation/index.d.ts +23 -0
  658. package/dist/validation/index.d.ts.map +1 -0
  659. package/dist/validation/index.js +25 -0
  660. package/dist/validation/index.js.map +1 -0
  661. package/dist/validation/types.d.ts +136 -0
  662. package/dist/validation/types.d.ts.map +1 -0
  663. package/dist/validation/types.js +56 -0
  664. package/dist/validation/types.js.map +1 -0
  665. package/dist/validation-schemas/codec-utils.d.ts +188 -0
  666. package/dist/validation-schemas/codec-utils.d.ts.map +1 -0
  667. package/dist/validation-schemas/codec-utils.js +258 -0
  668. package/dist/validation-schemas/codec-utils.js.map +1 -0
  669. package/dist/validation-schemas/config.d.ts +99 -0
  670. package/dist/validation-schemas/config.d.ts.map +1 -0
  671. package/dist/validation-schemas/config.js +178 -0
  672. package/dist/validation-schemas/config.js.map +1 -0
  673. package/dist/validation-schemas/doc-directive.d.ts +195 -0
  674. package/dist/validation-schemas/doc-directive.d.ts.map +1 -0
  675. package/dist/validation-schemas/doc-directive.js +239 -0
  676. package/dist/validation-schemas/doc-directive.js.map +1 -0
  677. package/dist/validation-schemas/dual-source.d.ts +167 -0
  678. package/dist/validation-schemas/dual-source.d.ts.map +1 -0
  679. package/dist/validation-schemas/dual-source.js +168 -0
  680. package/dist/validation-schemas/dual-source.js.map +1 -0
  681. package/dist/validation-schemas/export-info.d.ts +53 -0
  682. package/dist/validation-schemas/export-info.d.ts.map +1 -0
  683. package/dist/validation-schemas/export-info.js +101 -0
  684. package/dist/validation-schemas/export-info.js.map +1 -0
  685. package/dist/validation-schemas/extracted-pattern.d.ts +351 -0
  686. package/dist/validation-schemas/extracted-pattern.d.ts.map +1 -0
  687. package/dist/validation-schemas/extracted-pattern.js +459 -0
  688. package/dist/validation-schemas/extracted-pattern.js.map +1 -0
  689. package/dist/validation-schemas/extracted-shape.d.ts +200 -0
  690. package/dist/validation-schemas/extracted-shape.d.ts.map +1 -0
  691. package/dist/validation-schemas/extracted-shape.js +182 -0
  692. package/dist/validation-schemas/extracted-shape.js.map +1 -0
  693. package/dist/validation-schemas/feature.d.ts +554 -0
  694. package/dist/validation-schemas/feature.d.ts.map +1 -0
  695. package/dist/validation-schemas/feature.js +262 -0
  696. package/dist/validation-schemas/feature.js.map +1 -0
  697. package/dist/validation-schemas/index.d.ts +15 -0
  698. package/dist/validation-schemas/index.d.ts.map +1 -0
  699. package/dist/validation-schemas/index.js +32 -0
  700. package/dist/validation-schemas/index.js.map +1 -0
  701. package/dist/validation-schemas/lint.d.ts +46 -0
  702. package/dist/validation-schemas/lint.d.ts.map +1 -0
  703. package/dist/validation-schemas/lint.js +45 -0
  704. package/dist/validation-schemas/lint.js.map +1 -0
  705. package/dist/validation-schemas/master-dataset.d.ts +8299 -0
  706. package/dist/validation-schemas/master-dataset.d.ts.map +1 -0
  707. package/dist/validation-schemas/master-dataset.js +275 -0
  708. package/dist/validation-schemas/master-dataset.js.map +1 -0
  709. package/dist/validation-schemas/output-schemas.d.ts +183 -0
  710. package/dist/validation-schemas/output-schemas.d.ts.map +1 -0
  711. package/dist/validation-schemas/output-schemas.js +149 -0
  712. package/dist/validation-schemas/output-schemas.js.map +1 -0
  713. package/dist/validation-schemas/scenario-ref.d.ts +80 -0
  714. package/dist/validation-schemas/scenario-ref.d.ts.map +1 -0
  715. package/dist/validation-schemas/scenario-ref.js +73 -0
  716. package/dist/validation-schemas/scenario-ref.js.map +1 -0
  717. package/dist/validation-schemas/tag-registry.d.ts +210 -0
  718. package/dist/validation-schemas/tag-registry.d.ts.map +1 -0
  719. package/dist/validation-schemas/tag-registry.js +248 -0
  720. package/dist/validation-schemas/tag-registry.js.map +1 -0
  721. package/dist/validation-schemas/workflow-config.d.ts +125 -0
  722. package/dist/validation-schemas/workflow-config.d.ts.map +1 -0
  723. package/dist/validation-schemas/workflow-config.js +138 -0
  724. package/dist/validation-schemas/workflow-config.js.map +1 -0
  725. package/docs/ANNOTATION-GUIDE.md +271 -0
  726. package/docs/ARCHITECTURE.md +1636 -0
  727. package/docs/CONFIGURATION.md +337 -0
  728. package/docs/DOCS-GAP-ANALYSIS.md +811 -0
  729. package/docs/GHERKIN-PATTERNS.md +366 -0
  730. package/docs/INDEX.md +345 -0
  731. package/docs/MCP-SETUP.md +140 -0
  732. package/docs/METHODOLOGY.md +240 -0
  733. package/docs/PROCESS-API.md +65 -0
  734. package/docs/PROCESS-GUARD.md +341 -0
  735. package/docs/SESSION-GUIDES.md +391 -0
  736. package/docs/TAXONOMY.md +106 -0
  737. package/docs/VALIDATION.md +418 -0
  738. package/docs-live/ARCHITECTURE.md +362 -0
  739. package/docs-live/BUSINESS-RULES.md +24 -0
  740. package/docs-live/CHANGELOG-GENERATED.md +375 -0
  741. package/docs-live/DECISIONS.md +78 -0
  742. package/docs-live/INDEX.md +231 -0
  743. package/docs-live/PRODUCT-AREAS.md +255 -0
  744. package/docs-live/TAXONOMY.md +202 -0
  745. package/docs-live/VALIDATION-RULES.md +119 -0
  746. package/docs-live/_claude-md/annotation/annotation-overview.md +26 -0
  747. package/docs-live/_claude-md/annotation/annotation-reference.md +213 -0
  748. package/docs-live/_claude-md/architecture/architecture-codecs.md +160 -0
  749. package/docs-live/_claude-md/architecture/architecture-types.md +32 -0
  750. package/docs-live/_claude-md/architecture/reference-sample.md +162 -0
  751. package/docs-live/_claude-md/authoring/gherkin-authoring-guide.md +245 -0
  752. package/docs-live/_claude-md/configuration/configuration-guide.md +216 -0
  753. package/docs-live/_claude-md/configuration/configuration-overview.md +37 -0
  754. package/docs-live/_claude-md/core-types/core-types-overview.md +20 -0
  755. package/docs-live/_claude-md/data-api/data-api-overview.md +39 -0
  756. package/docs-live/_claude-md/generation/generation-overview.md +30 -0
  757. package/docs-live/_claude-md/process/process-overview.md +127 -0
  758. package/docs-live/_claude-md/validation/process-guard.md +185 -0
  759. package/docs-live/_claude-md/validation/validation-overview.md +37 -0
  760. package/docs-live/_claude-md/validation/validation-tools-guide.md +242 -0
  761. package/docs-live/_claude-md/workflow/session-workflow-guide.md +141 -0
  762. package/docs-live/business-rules/annotation.md +1462 -0
  763. package/docs-live/business-rules/configuration.md +465 -0
  764. package/docs-live/business-rules/core-types.md +531 -0
  765. package/docs-live/business-rules/data-api.md +1403 -0
  766. package/docs-live/business-rules/generation.md +4726 -0
  767. package/docs-live/business-rules/process.md +122 -0
  768. package/docs-live/business-rules/validation.md +998 -0
  769. package/docs-live/decisions/adr-001-taxonomy-canonical-values.md +197 -0
  770. package/docs-live/decisions/adr-002-gherkin-only-testing.md +57 -0
  771. package/docs-live/decisions/adr-003-source-first-pattern-architecture.md +147 -0
  772. package/docs-live/decisions/adr-004-session-workflow-commands.md +137 -0
  773. package/docs-live/decisions/adr-005-codec-based-markdown-rendering.md +150 -0
  774. package/docs-live/decisions/adr-006-single-read-model-architecture.md +136 -0
  775. package/docs-live/decisions/adr-021-doc-generation-proof-of-concept.md +489 -0
  776. package/docs-live/product-areas/ANNOTATION.md +591 -0
  777. package/docs-live/product-areas/CONFIGURATION.md +1048 -0
  778. package/docs-live/product-areas/CORE-TYPES.md +221 -0
  779. package/docs-live/product-areas/DATA-API.md +850 -0
  780. package/docs-live/product-areas/GENERATION.md +1200 -0
  781. package/docs-live/product-areas/PROCESS.md +351 -0
  782. package/docs-live/product-areas/VALIDATION.md +1135 -0
  783. package/docs-live/reference/ANNOTATION-REFERENCE.md +232 -0
  784. package/docs-live/reference/ARCHITECTURE-CODECS.md +675 -0
  785. package/docs-live/reference/ARCHITECTURE-TYPES.md +436 -0
  786. package/docs-live/reference/CONFIGURATION-GUIDE.md +235 -0
  787. package/docs-live/reference/GHERKIN-AUTHORING-GUIDE.md +270 -0
  788. package/docs-live/reference/PROCESS-API-RECIPES.md +476 -0
  789. package/docs-live/reference/PROCESS-API-REFERENCE.md +63 -0
  790. package/docs-live/reference/PROCESS-GUARD-REFERENCE.md +258 -0
  791. package/docs-live/reference/REFERENCE-SAMPLE.md +1135 -0
  792. package/docs-live/reference/SESSION-WORKFLOW-GUIDE.md +384 -0
  793. package/docs-live/reference/VALIDATION-TOOLS-GUIDE.md +263 -0
  794. package/docs-live/taxonomy/categories.md +33 -0
  795. package/docs-live/taxonomy/format-types.md +67 -0
  796. package/docs-live/taxonomy/metadata-tags.md +693 -0
  797. package/docs-live/validation/error-catalog.md +78 -0
  798. package/docs-live/validation/fsm-transitions.md +50 -0
  799. package/docs-live/validation/protection-levels.md +51 -0
  800. package/package.json +233 -0
@@ -0,0 +1,654 @@
1
+ /**
2
+ * @architect
3
+ * @architect-core
4
+ * @architect-pattern DecisionDocGenerator
5
+ * @architect-status completed
6
+ * @architect-phase 27
7
+ * @architect-arch-role service
8
+ * @architect-arch-context generator
9
+ * @architect-arch-layer application
10
+ * @architect-depends-on DecisionDocCodec,SourceMapper
11
+ *
12
+ * ## Decision Doc Generator - Documentation from Decision Documents
13
+ *
14
+ * Orchestrates the full pipeline for generating documentation from decision
15
+ * documents (ADR/PDR in .feature format):
16
+ *
17
+ * 1. Decision parsing - Extract source mappings, rules, DocStrings
18
+ * 2. Source mapping - Aggregate content from TypeScript, Gherkin, decision sources
19
+ * 3. Content assembly - Build RenderableDocument from aggregated sections
20
+ * 4. Multi-level output - Generate compact (_claude-md/) and detailed (docs/) versions
21
+ *
22
+ * ### When to Use
23
+ *
24
+ * - When generating documentation from ADR/PDR decision documents
25
+ * - When decision documents contain source mapping tables
26
+ * - When building progressive disclosure docs at multiple detail levels
27
+ *
28
+ * ### Output Path Convention
29
+ *
30
+ * - Compact: `_claude-md/{section}/{module}.md` (~50 lines)
31
+ * - Detailed: `docs/{PATTERN-NAME}.md` (~300 lines)
32
+ */
33
+ import { heading, paragraph, code, list, separator, collapsible, document as createDocument, } from '../../renderable/schema.js';
34
+ import { renderToMarkdown } from '../../renderable/render.js';
35
+ import { parseDecisionDocument, } from '../../renderable/codecs/decision-doc.js';
36
+ import { parseDescriptionWithDocStrings, renderRuleDescription, renderPropertyDocsTable, } from '../../renderable/codecs/helpers.js';
37
+ import { executeSourceMapping, } from '../source-mapper.js';
38
+ import { toKebabCase, toUpperKebabCase } from '../../utils/string-utils.js';
39
+ import { createWarningCollector, } from '../warning-collector.js';
40
+ import { validateSourceMappingTable } from '../source-mapping-validator.js';
41
+ import { deduplicateSections } from '../content-deduplicator.js';
42
+ // =============================================================================
43
+ // Output Path Resolution
44
+ // =============================================================================
45
+ /**
46
+ * Determine output paths from decision metadata
47
+ *
48
+ * Uses pattern name and optional section to compute paths:
49
+ * - Compact: _claude-md/{section}/{module}.md
50
+ * - Detailed: docs/{PATTERN-NAME}.md
51
+ *
52
+ * @param patternName - Pattern name from decision document
53
+ * @param options - Generator options including section override
54
+ * @returns Computed output paths
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const paths = determineOutputPaths('ProcessGuard', { section: 'validation' });
59
+ * // Returns:
60
+ * // {
61
+ * // compact: '_claude-md/validation/process-guard.md',
62
+ * // detailed: 'docs/PROCESS-GUARD.md'
63
+ * // }
64
+ * ```
65
+ */
66
+ export function determineOutputPaths(patternName, options) {
67
+ // Convert PatternName to kebab-case for module name
68
+ const moduleName = toKebabCase(patternName);
69
+ // Use provided section or default to 'generated'
70
+ const section = options?.section ?? 'generated';
71
+ // Convert PatternName to UPPER-KEBAB-CASE for detailed path
72
+ const upperKebab = toUpperKebabCase(patternName);
73
+ return {
74
+ compact: `_claude-md/${section}/${moduleName}.md`,
75
+ detailed: `docs/${upperKebab}.md`,
76
+ };
77
+ }
78
+ // =============================================================================
79
+ // Content Generation
80
+ // =============================================================================
81
+ /**
82
+ * Generate compact/summary output (~50 lines)
83
+ *
84
+ * Includes only essential tables and type definitions.
85
+ * Suitable for Claude MD context files.
86
+ *
87
+ * @param decisionContent - Parsed decision document
88
+ * @param aggregatedContent - Content from source mapping execution
89
+ * @returns RenderableDocument for compact output
90
+ */
91
+ export function generateCompactOutput(decisionContent, aggregatedContent) {
92
+ const sections = [];
93
+ // Title and brief
94
+ sections.push(heading(2, 'Overview'));
95
+ // Extract key tables and types from aggregated sections
96
+ for (const extracted of aggregatedContent.sections) {
97
+ // Only include sections with substantial content
98
+ if (!extracted.content || extracted.content.trim().length === 0) {
99
+ continue;
100
+ }
101
+ // For compact output, only include:
102
+ // 1. Type/interface definitions (shapes)
103
+ // 2. Key tables
104
+ if (extracted.shapes && extracted.shapes.length > 0) {
105
+ sections.push(heading(3, extracted.section));
106
+ // Render shapes as compact type list
107
+ const typeList = extracted.shapes.map((shape) => `\`${shape.name}\` - ${shape.kind}`);
108
+ sections.push(list(typeList));
109
+ }
110
+ else if (extracted.content.includes('|')) {
111
+ // Content contains a table - include it
112
+ sections.push(heading(3, extracted.section));
113
+ sections.push(paragraph(extracted.content));
114
+ }
115
+ }
116
+ // If no sections were added, add a placeholder
117
+ if (sections.length <= 1) {
118
+ sections.push(paragraph('*No structured content extracted.*'));
119
+ }
120
+ return createDocument(decisionContent.patternName, sections, {
121
+ purpose: 'Compact reference for Claude context',
122
+ detailLevel: 'summary',
123
+ });
124
+ }
125
+ /**
126
+ * Generate detailed output (~300 lines)
127
+ *
128
+ * Includes everything: JSDoc, examples, full descriptions.
129
+ * Suitable for docs/ directory.
130
+ *
131
+ * @param decisionContent - Parsed decision document
132
+ * @param aggregatedContent - Content from source mapping execution
133
+ * @returns RenderableDocument for detailed output
134
+ */
135
+ export function generateDetailedOutput(decisionContent, aggregatedContent) {
136
+ const sections = [];
137
+ // Track rendered DocString content to prevent duplicates
138
+ // Key is content hash (language + content) to identify unique DocStrings
139
+ const renderedDocStrings = new Set();
140
+ // Feature description
141
+ if (decisionContent.description && decisionContent.description.trim().length > 0) {
142
+ sections.push(paragraph(decisionContent.description));
143
+ sections.push(separator());
144
+ }
145
+ // Context section from rules
146
+ if (decisionContent.rules.context.length > 0) {
147
+ sections.push(heading(2, 'Context'));
148
+ for (const rule of decisionContent.rules.context) {
149
+ sections.push(heading(3, rule.name.replace(/^Context\s*[-:]\s*/i, '')));
150
+ if (rule.description) {
151
+ sections.push(...renderRuleDescription(rule.description));
152
+ }
153
+ }
154
+ }
155
+ // Decision section from rules
156
+ if (decisionContent.rules.decision.length > 0) {
157
+ sections.push(heading(2, 'Decision'));
158
+ for (const rule of decisionContent.rules.decision) {
159
+ sections.push(heading(3, rule.name.replace(/^Decision\s*[-:]\s*/i, '')));
160
+ if (rule.description) {
161
+ sections.push(...renderRuleDescription(rule.description));
162
+ }
163
+ }
164
+ }
165
+ // Aggregated content sections
166
+ // Include all sections from Source Mapping - both external files AND self-references
167
+ // The Source Mapping table defines the canonical order of content
168
+ // Self-references to rules will be rendered here, and we filter them from "Other rules" below
169
+ const nonDuplicateSections = aggregatedContent.sections.filter((extracted) => {
170
+ // Skip empty content
171
+ if (!extracted.content || extracted.content.trim().length === 0) {
172
+ return false;
173
+ }
174
+ return true;
175
+ });
176
+ if (nonDuplicateSections.length > 0) {
177
+ sections.push(heading(2, 'Implementation Details'));
178
+ for (const extracted of nonDuplicateSections) {
179
+ sections.push(heading(3, extracted.section));
180
+ // Handle different content types
181
+ if (extracted.shapes && extracted.shapes.length > 0) {
182
+ // Render full shape definitions with JSDoc
183
+ for (const shape of extracted.shapes) {
184
+ // Include JSDoc as part of the code block (combined with source)
185
+ const fullSource = shape.jsDoc ? `${shape.jsDoc}\n${shape.sourceText}` : shape.sourceText;
186
+ sections.push(code(fullSource, 'typescript'));
187
+ // Add property description table for interfaces with documented properties
188
+ const propertyTable = renderPropertyDocsTable(shape.propertyDocs);
189
+ if (propertyTable) {
190
+ sections.push(paragraph(propertyTable));
191
+ }
192
+ }
193
+ }
194
+ else if (extracted.docStrings && extracted.docStrings.length > 0) {
195
+ // Check if content has meaningful text beyond just DocStrings
196
+ // Rule block extractions include context text, tables, AND DocStrings
197
+ // We should render full content to preserve all text, not just DocStrings
198
+ const contentWithoutDocStrings = extracted.content
199
+ .replace(/"""[\w]*\n[\s\S]*?"""/g, '') // Remove Gherkin DocStrings
200
+ .replace(/```[\w]*\n[\s\S]*?```/g, '') // Remove markdown code blocks
201
+ .trim();
202
+ if (contentWithoutDocStrings.length > 0) {
203
+ // Content has text beyond DocStrings - render full content with inline DocStrings
204
+ sections.push(...parseDescriptionWithDocStrings(extracted.content));
205
+ }
206
+ else {
207
+ // Content is ONLY DocStrings - render them as code blocks, skipping duplicates
208
+ for (const ds of extracted.docStrings) {
209
+ const contentKey = `${ds.language}:${ds.content}`;
210
+ if (!renderedDocStrings.has(contentKey)) {
211
+ renderedDocStrings.add(contentKey);
212
+ sections.push(code(ds.content, ds.language));
213
+ }
214
+ }
215
+ }
216
+ }
217
+ else {
218
+ // Plain content - convert DocStrings to code fences
219
+ sections.push(...parseDescriptionWithDocStrings(extracted.content));
220
+ }
221
+ }
222
+ }
223
+ // Consequences section from rules
224
+ if (decisionContent.rules.consequences.length > 0) {
225
+ sections.push(heading(2, 'Consequences'));
226
+ for (const rule of decisionContent.rules.consequences) {
227
+ sections.push(heading(3, rule.name.replace(/^Consequence[s]?\s*[-:]\s*/i, '')));
228
+ if (rule.description) {
229
+ sections.push(...renderRuleDescription(rule.description));
230
+ }
231
+ }
232
+ }
233
+ // Other rules (custom sections)
234
+ // Skip if these rules are already covered by Source Mapping entries
235
+ // to prevent duplicate content in reference documentation
236
+ if (decisionContent.rules.other.length > 0) {
237
+ // Build set of section names from Source Mapping (both self-references and external files)
238
+ const sourceMappedSectionNames = new Set();
239
+ for (const mapping of decisionContent.sourceMappings) {
240
+ // Normalize section name for matching (case-insensitive)
241
+ const normalizedSection = mapping.section.toLowerCase().trim();
242
+ sourceMappedSectionNames.add(normalizedSection);
243
+ }
244
+ // Helper: extract significant words (3+ chars) for fuzzy matching
245
+ const getWords = (text) => new Set(text
246
+ .toLowerCase()
247
+ .split(/[^a-z]+/)
248
+ .filter((w) => w.length >= 3));
249
+ // Only render rules that aren't covered by Source Mapping section names
250
+ for (const rule of decisionContent.rules.other) {
251
+ const ruleName = rule.name.toLowerCase().trim();
252
+ const ruleWords = getWords(ruleName);
253
+ // Check if any Source Mapping section matches this rule name
254
+ // Match if: exact match, substring match, or 2+ words overlap
255
+ const isCovered = Array.from(sourceMappedSectionNames).some((sectionName) => {
256
+ // Exact or substring match
257
+ if (ruleName === sectionName ||
258
+ ruleName.includes(sectionName) ||
259
+ sectionName.includes(ruleName)) {
260
+ return true;
261
+ }
262
+ // Word overlap match (at least 2 significant words)
263
+ const sectionWords = getWords(sectionName);
264
+ let matches = 0;
265
+ for (const word of ruleWords) {
266
+ if (sectionWords.has(word))
267
+ matches++;
268
+ }
269
+ return matches >= 2;
270
+ });
271
+ if (!isCovered) {
272
+ sections.push(heading(2, rule.name));
273
+ if (rule.description) {
274
+ sections.push(...renderRuleDescription(rule.description));
275
+ }
276
+ }
277
+ }
278
+ }
279
+ // DocStrings if not already included
280
+ if (decisionContent.docStrings.length > 0 && aggregatedContent.sections.length === 0) {
281
+ sections.push(heading(2, 'Examples'));
282
+ for (const ds of decisionContent.docStrings) {
283
+ sections.push(code(ds.content, ds.language));
284
+ }
285
+ }
286
+ // Add generation warnings if any
287
+ if (aggregatedContent.warnings.length > 0) {
288
+ sections.push(separator());
289
+ sections.push(collapsible('Generation Warnings', aggregatedContent.warnings.map((w) => paragraph(`- ${w.severity}: ${w.message}`))));
290
+ }
291
+ return createDocument(decisionContent.patternName, sections, {
292
+ purpose: 'Full documentation generated from decision document',
293
+ detailLevel: 'detailed',
294
+ });
295
+ }
296
+ /**
297
+ * Generate standard output (~150 lines)
298
+ *
299
+ * Balance between compact and detailed: tables, types, key descriptions.
300
+ * Suitable for general documentation.
301
+ *
302
+ * @param decisionContent - Parsed decision document
303
+ * @param aggregatedContent - Content from source mapping execution
304
+ * @returns RenderableDocument for standard output
305
+ */
306
+ export function generateStandardOutput(decisionContent, aggregatedContent) {
307
+ const sections = [];
308
+ // Brief description
309
+ if (decisionContent.description && decisionContent.description.trim().length > 0) {
310
+ const briefDesc = decisionContent.description.split('\n').slice(0, 3).join('\n');
311
+ sections.push(paragraph(briefDesc));
312
+ sections.push(separator());
313
+ }
314
+ // Context summary
315
+ if (decisionContent.rules.context.length > 0) {
316
+ sections.push(heading(2, 'Context'));
317
+ const contextNames = decisionContent.rules.context.map((r) => r.name.replace(/^Context\s*[-:]\s*/i, ''));
318
+ sections.push(list(contextNames));
319
+ }
320
+ // Decision summary
321
+ if (decisionContent.rules.decision.length > 0) {
322
+ sections.push(heading(2, 'Decision'));
323
+ for (const rule of decisionContent.rules.decision) {
324
+ sections.push(heading(3, rule.name.replace(/^Decision\s*[-:]\s*/i, '')));
325
+ // First paragraph only
326
+ if (rule.description) {
327
+ const firstPara = rule.description.split('\n\n')[0] ?? '';
328
+ sections.push(paragraph(firstPara));
329
+ }
330
+ }
331
+ }
332
+ // Aggregated content with moderate detail
333
+ for (const extracted of aggregatedContent.sections) {
334
+ if (!extracted.content || extracted.content.trim().length === 0) {
335
+ continue;
336
+ }
337
+ sections.push(heading(3, extracted.section));
338
+ if (extracted.shapes && extracted.shapes.length > 0) {
339
+ // Type definitions without full JSDoc
340
+ for (const shape of extracted.shapes) {
341
+ sections.push(code(shape.sourceText, 'typescript'));
342
+ }
343
+ }
344
+ else {
345
+ sections.push(paragraph(extracted.content));
346
+ }
347
+ }
348
+ return createDocument(decisionContent.patternName, sections, {
349
+ purpose: 'Standard documentation from decision document',
350
+ detailLevel: 'standard',
351
+ });
352
+ }
353
+ /**
354
+ * Execute the generation pipeline: validation, extraction, deduplication
355
+ *
356
+ * Internal function that performs the expensive work once. Both single-level
357
+ * and multi-level generators use this to avoid duplicate work.
358
+ *
359
+ * @param pattern - Extracted pattern with decision document content
360
+ * @param options - Generator options
361
+ * @returns Pipeline result or error
362
+ */
363
+ async function executePipeline(pattern, options) {
364
+ // Default options - all robustness features enabled by default
365
+ const enableValidation = options.enableValidation ?? true;
366
+ const enableDeduplication = options.enableDeduplication ?? true;
367
+ const enableWarningCollection = options.enableWarningCollection ?? true;
368
+ // Step 1: Create WarningCollector for unified warning handling
369
+ const warningCollector = enableWarningCollection
370
+ ? createWarningCollector()
371
+ : undefined;
372
+ // Pattern name can come from directive.patternName or pattern.patternName or pattern.name
373
+ // directive.patternName and pattern.patternName are optional, pattern.name is required
374
+ // Use helper function to catch both null/undefined AND empty strings
375
+ const getPatternName = () => {
376
+ if (pattern.directive.patternName?.trim()) {
377
+ return pattern.directive.patternName;
378
+ }
379
+ if (pattern.patternName?.trim()) {
380
+ return pattern.patternName;
381
+ }
382
+ return pattern.name;
383
+ };
384
+ const patternName = getPatternName();
385
+ const description = pattern.directive.description;
386
+ const rules = pattern.rules ?? [];
387
+ // Step 2: Parse decision document
388
+ const decisionContent = parseDecisionDocument(patternName, description, rules);
389
+ // Step 3 & 4: Validate and execute source mapping (if mappings exist)
390
+ let aggregatedContent = {
391
+ sections: [],
392
+ warnings: [],
393
+ success: true,
394
+ };
395
+ // Deduplication warnings when warningCollector is not used
396
+ const dedupWarnings = [];
397
+ if (decisionContent.sourceMappings.length > 0) {
398
+ // Step 3: PRE-FLIGHT VALIDATION (if enabled)
399
+ if (enableValidation) {
400
+ const validatorOptions = warningCollector
401
+ ? { baseDir: options.baseDir, warningCollector }
402
+ : { baseDir: options.baseDir };
403
+ const validationResult = validateSourceMappingTable(decisionContent.sourceMappings, validatorOptions);
404
+ // Capture validation warnings after successful validation (Issue #4 fix)
405
+ if (validationResult.isValid && warningCollector && validationResult.warnings.length > 0) {
406
+ for (const warning of validationResult.warnings) {
407
+ warningCollector.capture(warning);
408
+ }
409
+ }
410
+ // If validation fails with errors, return early
411
+ if (!validationResult.isValid) {
412
+ const warnings = warningCollector
413
+ ? warningCollector.getAll().map((w) => `${w.category}: ${w.message}`)
414
+ : [];
415
+ return {
416
+ warnings,
417
+ errors: validationResult.errors.map((e) => {
418
+ // Include suggestions if available
419
+ if (e.suggestions && e.suggestions.length > 0) {
420
+ return `${e.message}. Did you mean: ${e.suggestions.join(', ')}?`;
421
+ }
422
+ return e.message;
423
+ }),
424
+ };
425
+ }
426
+ }
427
+ // Step 4: EXECUTE SOURCE MAPPING (with warning collector)
428
+ const baseMapperOptions = {
429
+ baseDir: options.baseDir,
430
+ decisionDocPath: pattern.source.file,
431
+ decisionContent,
432
+ detailLevel: options.detailLevel ?? 'standard',
433
+ };
434
+ const mapperOptions = warningCollector
435
+ ? { ...baseMapperOptions, warningCollector }
436
+ : baseMapperOptions;
437
+ aggregatedContent = await executeSourceMapping(decisionContent.sourceMappings, mapperOptions);
438
+ // Step 5: DEDUPLICATE SECTIONS (if enabled)
439
+ if (enableDeduplication && aggregatedContent.sections.length > 0) {
440
+ const dedupOptions = warningCollector ? { warningCollector } : undefined;
441
+ const dedupResult = deduplicateSections(aggregatedContent.sections, dedupOptions);
442
+ aggregatedContent.sections = dedupResult.sections;
443
+ // Capture deduplication warnings when not using collector
444
+ // (When collector is present, warnings are captured via side-effect)
445
+ if (!warningCollector && dedupResult.warnings.length > 0) {
446
+ dedupWarnings.push(...dedupResult.warnings);
447
+ }
448
+ }
449
+ }
450
+ return { decisionContent, aggregatedContent, warningCollector, patternName, dedupWarnings };
451
+ }
452
+ /**
453
+ * Check if pipeline result is an error
454
+ */
455
+ function isPipelineError(result) {
456
+ return 'errors' in result;
457
+ }
458
+ // =============================================================================
459
+ // Main Generation Function
460
+ // =============================================================================
461
+ /**
462
+ * Generate documentation from a decision document
463
+ *
464
+ * Main entry point that orchestrates the full pipeline:
465
+ * 1. Create WarningCollector for unified warning handling
466
+ * 2. Parse decision document to extract content
467
+ * 3. Validate source mappings (if enabled) - fails fast on validation errors
468
+ * 4. Execute source mapping to aggregate content from referenced files
469
+ * 5. Deduplicate sections (if enabled)
470
+ * 6. Generate output at specified detail level(s)
471
+ * 7. Return output files with all warnings
472
+ *
473
+ * @param pattern - Extracted pattern with decision document content
474
+ * @param options - Generator options
475
+ * @returns Generation result with files and warnings
476
+ *
477
+ * @example
478
+ * ```typescript
479
+ * const result = await generateFromDecision(processGuardPattern, {
480
+ * baseDir: process.cwd(),
481
+ * detailLevel: 'detailed',
482
+ * claudeMdSection: 'validation',
483
+ * });
484
+ *
485
+ * for (const file of result.files) {
486
+ * fs.writeFileSync(file.path, file.content);
487
+ * }
488
+ * ```
489
+ */
490
+ export async function generateFromDecision(pattern, options) {
491
+ // Execute the pipeline
492
+ const pipelineResult = await executePipeline(pattern, options);
493
+ // If pipeline failed, return errors
494
+ if (isPipelineError(pipelineResult)) {
495
+ return {
496
+ files: [],
497
+ warnings: pipelineResult.warnings,
498
+ errors: pipelineResult.errors,
499
+ success: false,
500
+ };
501
+ }
502
+ const { decisionContent, aggregatedContent, warningCollector, patternName, dedupWarnings } = pipelineResult;
503
+ // Generate output at requested detail level
504
+ const sectionOption = options.claudeMdSection ?? pattern.claudeSection;
505
+ const outputPaths = determineOutputPaths(patternName, sectionOption ? { section: sectionOption } : undefined);
506
+ const detailLevel = options.detailLevel ?? 'standard';
507
+ // Generate based on detail level
508
+ let doc;
509
+ let outputPath;
510
+ switch (detailLevel) {
511
+ case 'summary':
512
+ doc = generateCompactOutput(decisionContent, aggregatedContent);
513
+ outputPath = outputPaths.compact;
514
+ break;
515
+ case 'detailed':
516
+ doc = generateDetailedOutput(decisionContent, aggregatedContent);
517
+ outputPath = outputPaths.detailed;
518
+ break;
519
+ case 'standard':
520
+ default:
521
+ doc = generateStandardOutput(decisionContent, aggregatedContent);
522
+ outputPath = outputPaths.detailed;
523
+ break;
524
+ }
525
+ // Render to markdown
526
+ const content = renderToMarkdown(doc);
527
+ const files = [{ path: outputPath, content }];
528
+ // Collect all warnings and return
529
+ // When warningCollector is present, it captures all warnings via side-effects
530
+ // When not present, we need to merge extraction warnings with deduplication warnings
531
+ const warnings = warningCollector
532
+ ? warningCollector.getAll().map((w) => `${w.category}: ${w.message}`)
533
+ : [
534
+ ...aggregatedContent.warnings.map((w) => `${w.severity}: ${w.message}`),
535
+ ...dedupWarnings.map((w) => `${w.category}: ${w.message}`),
536
+ ];
537
+ return { files, warnings, errors: [], success: true };
538
+ }
539
+ /**
540
+ * Generate both compact and detailed outputs
541
+ *
542
+ * Runs the pipeline once and generates documentation at both detail levels.
543
+ * More efficient than calling generateFromDecision twice.
544
+ *
545
+ * @param pattern - Extracted pattern with decision document content
546
+ * @param options - Generator options
547
+ * @returns Generation result with both output files
548
+ */
549
+ export async function generateFromDecisionMultiLevel(pattern, options) {
550
+ // Execute the pipeline ONCE
551
+ const pipelineResult = await executePipeline(pattern, options);
552
+ // If pipeline failed, return errors
553
+ if (isPipelineError(pipelineResult)) {
554
+ return {
555
+ files: [],
556
+ warnings: pipelineResult.warnings,
557
+ errors: pipelineResult.errors,
558
+ success: false,
559
+ };
560
+ }
561
+ const { decisionContent, aggregatedContent, warningCollector, patternName, dedupWarnings } = pipelineResult;
562
+ // Determine output paths
563
+ const sectionOption = options.claudeMdSection ?? pattern.claudeSection;
564
+ const outputPaths = determineOutputPaths(patternName, sectionOption ? { section: sectionOption } : undefined);
565
+ // Generate BOTH outputs from the same processed data
566
+ const compactDoc = generateCompactOutput(decisionContent, aggregatedContent);
567
+ const detailedDoc = generateDetailedOutput(decisionContent, aggregatedContent);
568
+ const compactContent = renderToMarkdown(compactDoc);
569
+ const detailedContent = renderToMarkdown(detailedDoc);
570
+ const files = [
571
+ { path: outputPaths.compact, content: compactContent },
572
+ { path: outputPaths.detailed, content: detailedContent },
573
+ ];
574
+ // Collect all warnings
575
+ // When warningCollector is present, it captures all warnings via side-effects
576
+ // When not present, we need to merge extraction warnings with deduplication warnings
577
+ const warnings = warningCollector
578
+ ? warningCollector.getAll().map((w) => `${w.category}: ${w.message}`)
579
+ : [
580
+ ...aggregatedContent.warnings.map((w) => `${w.severity}: ${w.message}`),
581
+ ...dedupWarnings.map((w) => `${w.category}: ${w.message}`),
582
+ ];
583
+ return { files, warnings, errors: [], success: true };
584
+ }
585
+ // =============================================================================
586
+ // DocumentGenerator Implementation
587
+ // =============================================================================
588
+ /**
589
+ * Decision Doc Generator for registry integration
590
+ *
591
+ * Implements DocumentGenerator interface for use with the generator registry.
592
+ * Filters patterns by type to find ADR/PDR decision documents with source mappings.
593
+ */
594
+ export class DecisionDocGeneratorImpl {
595
+ name = 'doc-from-decision';
596
+ description = 'Generate documentation from ADR/PDR decision documents';
597
+ async generate(patterns, context) {
598
+ const allFiles = [];
599
+ // Filter for decision documents (ADR/PDR patterns with source mappings)
600
+ const decisionPatterns = patterns.filter((p) => {
601
+ // Check if pattern has source mapping table in description or rules
602
+ const description = p.directive.description;
603
+ const hasSourceMappingInDesc = description.includes('| Section |') &&
604
+ (description.includes('| Source File |') || description.includes('| Source |'));
605
+ // Check rules for source mapping tables
606
+ const hasSourceMappingInRules = (p.rules ?? []).some((rule) => rule.description.includes('| Section |') &&
607
+ (rule.description.includes('| Source File |') || rule.description.includes('| Source |')));
608
+ return hasSourceMappingInDesc || hasSourceMappingInRules;
609
+ });
610
+ // Collect all warnings and errors for metadata instead of console output
611
+ const allWarnings = [];
612
+ const allErrors = [];
613
+ if (decisionPatterns.length === 0) {
614
+ allWarnings.push('No decision documents with source mappings found. Ensure patterns have source mapping tables.');
615
+ return {
616
+ files: [],
617
+ metadata: {
618
+ warnings: allWarnings,
619
+ errors: allErrors,
620
+ patternsProcessed: 0,
621
+ },
622
+ };
623
+ }
624
+ // Generate documentation for each decision pattern
625
+ for (const pattern of decisionPatterns) {
626
+ // Use the canonical extracted claude section when present.
627
+ const section = pattern.claudeSection ?? 'generated';
628
+ const result = await generateFromDecisionMultiLevel(pattern, {
629
+ baseDir: context.baseDir,
630
+ detailLevel: 'detailed', // Generate both levels
631
+ claudeMdSection: section,
632
+ });
633
+ allFiles.push(...result.files);
634
+ // Collect errors and warnings (but don't fail)
635
+ allErrors.push(...result.errors);
636
+ allWarnings.push(...result.warnings);
637
+ }
638
+ return {
639
+ files: allFiles,
640
+ metadata: {
641
+ warnings: allWarnings,
642
+ errors: allErrors,
643
+ patternsProcessed: decisionPatterns.length,
644
+ },
645
+ };
646
+ }
647
+ }
648
+ /**
649
+ * Create decision doc generator instance
650
+ */
651
+ export function createDecisionDocGenerator() {
652
+ return new DecisionDocGeneratorImpl();
653
+ }
654
+ //# sourceMappingURL=decision-doc-generator.js.map