@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,481 @@
1
+ /**
2
+ * @architect
3
+ * @architect-core @architect-extractor
4
+ * @architect-pattern Document Extractor
5
+ * @architect-status completed
6
+ * @architect-arch-role service
7
+ * @architect-arch-context extractor
8
+ * @architect-arch-layer application
9
+ * @architect-include pipeline-stages
10
+ * @architect-uses Pattern Scanner, Tag Registry, Zod
11
+ * @architect-used-by Orchestrator, Generators
12
+ * @architect-usecase "When converting scanned files to ExtractedPattern objects"
13
+ * @architect-usecase "When inferring pattern names and categories from exports"
14
+ *
15
+ * ## Document Extractor - Pattern Extraction and Metadata Generation
16
+ *
17
+ * Converts scanned file data into complete ExtractedPattern objects with
18
+ * unique IDs, inferred names, categories, and timestamps. Second stage of
19
+ * the pipeline: Scanner → **Extractor** → Generator.
20
+ *
21
+ * ### When to Use
22
+ *
23
+ * - Transforming directives to structured patterns
24
+ * - Inferring metadata from tags and exports
25
+ * - Validating pattern structure against schemas
26
+ *
27
+ * ### Key Concepts
28
+ *
29
+ * - **Category Inference**: Uses tag registry priorities to determine primary category
30
+ * - **Name Inference**: Extracts from exports or JSDoc title when not explicit
31
+ * - **Deterministic IDs**: MD5 hash of file path + line number ensures stable identifiers
32
+ */
33
+ import * as fs from 'fs';
34
+ import * as path from 'path';
35
+ import { processExtractShapesTag, discoverTaggedShapes } from './shape-extractor.js';
36
+ import { Result } from '../types/index.js';
37
+ import { asPatternId, asCategoryName, asSourceFilePath, createPatternValidationError, } from '../types/index.js';
38
+ import { ExtractedPatternSchema, createDefaultTagRegistry, } from '../validation-schemas/index.js';
39
+ import { generatePatternId } from '../utils/index.js';
40
+ /**
41
+ * Convert scanned files to extracted patterns
42
+ *
43
+ * **Result Pattern**: Collects both successful extractions AND validation errors,
44
+ * enabling partial success scenarios.
45
+ *
46
+ * @param scannedFiles - Files scanned for directives
47
+ * @param baseDir - Base directory for relative path calculation
48
+ * @param registry - Tag registry for category inference and aggregation tags (optional, defaults to generic registry)
49
+ * @returns Extraction results with patterns and errors
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * import { scanPatterns } from '@libar-dev/code-first-docs/scanner';
54
+ * import { extractPatterns } from '@libar-dev/code-first-docs/extractor';
55
+ *
56
+ * const scanResult = await scanPatterns(config);
57
+ * if (scanResult.ok) {
58
+ * const extraction = extractPatterns(scanResult.value.files, '/path/to/project');
59
+ * console.log(`Extracted ${extraction.patterns.length} patterns`);
60
+ * console.log(`Failed ${extraction.errors.length} validations`);
61
+ * }
62
+ * ```
63
+ */
64
+ export function extractPatterns(scannedFiles, baseDir, registry) {
65
+ const patterns = [];
66
+ const errors = [];
67
+ const effectiveRegistry = registry ?? createDefaultTagRegistry();
68
+ for (const scannedFile of scannedFiles) {
69
+ for (const item of scannedFile.directives) {
70
+ const result = buildPattern(item.directive, item.code, item.exports, scannedFile.filePath, baseDir, effectiveRegistry);
71
+ if (Result.isOk(result)) {
72
+ patterns.push(result.value);
73
+ }
74
+ else {
75
+ errors.push(result.error);
76
+ }
77
+ }
78
+ }
79
+ return { patterns, errors };
80
+ }
81
+ /**
82
+ * Build a complete ExtractedPattern from components
83
+ *
84
+ * **Schema-First Enforcement**: Validates constructed pattern against schema
85
+ * to ensure data integrity at the boundary.
86
+ *
87
+ * @param directive - Parsed JSDoc directive
88
+ * @param code - Extracted code snippet
89
+ * @param exports - Exported symbols from code block
90
+ * @param filePath - Absolute file path
91
+ * @param baseDir - Base directory for relative path calculation
92
+ * @param registry - Tag registry for category inference
93
+ * @returns Result containing validated pattern or validation error
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const result = buildPattern(
98
+ * directive,
99
+ * codeSnippet,
100
+ * exports,
101
+ * '/project/src/utils.ts',
102
+ * '/project',
103
+ * tagRegistry
104
+ * );
105
+ *
106
+ * if (result.ok) {
107
+ * console.log(result.value.id); // 'pattern-a1b2c3d4'
108
+ * console.log(result.value.source.file); // 'src/utils.ts'
109
+ * }
110
+ * ```
111
+ */
112
+ export function buildPattern(directive, code, exports, filePath, baseDir, registry) {
113
+ const relativePath = path.relative(baseDir, filePath);
114
+ const id = asPatternId(generatePatternId(relativePath, directive.position.startLine));
115
+ const name = inferPatternName(directive, exports, registry);
116
+ const category = asCategoryName(inferCategory(directive.tags, registry));
117
+ // Shape extraction: both @architect-extract-shapes (pattern-level) and
118
+ // @architect-shape (declaration-level) contribute to extractedShapes.
119
+ // Read file once for both paths.
120
+ let extractedShapes;
121
+ const extractionWarnings = [];
122
+ // Only TypeScript files can have shapes
123
+ if (filePath.endsWith('.ts') || filePath.endsWith('.tsx')) {
124
+ const jsx = filePath.endsWith('.tsx');
125
+ let sourceContent;
126
+ try {
127
+ sourceContent = fs.readFileSync(filePath, 'utf-8');
128
+ }
129
+ catch (error) {
130
+ extractionWarnings.push(`[shape-extraction] Failed to read file: ${filePath} - ${error instanceof Error ? error.message : String(error)}`);
131
+ }
132
+ // Path 1: Existing @architect-extract-shapes tag processing
133
+ if (sourceContent !== undefined &&
134
+ directive.extractShapes !== undefined &&
135
+ directive.extractShapes.length > 0) {
136
+ const shapeResult = processExtractShapesTag(sourceContent, directive.extractShapes.join(', '), { jsx });
137
+ extractedShapes = shapeResult.shapes;
138
+ extractionWarnings.push(...shapeResult.warnings);
139
+ }
140
+ // Path 2: Declaration-level @architect-shape discovery
141
+ // Performance note: when both paths fire, sourceCode is parsed by typescript-estree
142
+ // twice (once in processExtractShapesTag, once in discoverTaggedShapes). Acceptable
143
+ // for v1 — future optimization could accept a pre-parsed AST.
144
+ if (sourceContent?.includes('architect-shape') === true) {
145
+ const taggedResult = discoverTaggedShapes(sourceContent, { jsx });
146
+ if (taggedResult.ok && taggedResult.value.shapes.length > 0) {
147
+ const existingByName = new Map((extractedShapes ?? []).map((s) => [s.name, s]));
148
+ const newShapes = taggedResult.value.shapes.filter((s) => !existingByName.has(s.name));
149
+ // Merge group and includes from tagged shapes onto existing Path 1 shapes
150
+ for (const tagged of taggedResult.value.shapes) {
151
+ const existing = existingByName.get(tagged.name);
152
+ if (existing !== undefined) {
153
+ if (tagged.group !== undefined) {
154
+ existing.group = tagged.group;
155
+ }
156
+ if (tagged.includes !== undefined) {
157
+ existing.includes = tagged.includes;
158
+ }
159
+ }
160
+ }
161
+ extractedShapes = [...(extractedShapes ?? []), ...newShapes];
162
+ extractionWarnings.push(...taggedResult.value.warnings);
163
+ }
164
+ else if (!taggedResult.ok) {
165
+ extractionWarnings.push(`[shape-discovery] ${taggedResult.error.message}`);
166
+ }
167
+ }
168
+ }
169
+ else if (directive.extractShapes !== undefined && directive.extractShapes.length > 0) {
170
+ // Non-TS file with extract-shapes tag — non-TS extraction path
171
+ try {
172
+ const sourceContent = fs.readFileSync(filePath, 'utf-8');
173
+ const shapeResult = processExtractShapesTag(sourceContent, directive.extractShapes.join(', '));
174
+ extractedShapes = shapeResult.shapes;
175
+ extractionWarnings.push(...shapeResult.warnings);
176
+ }
177
+ catch (error) {
178
+ extractionWarnings.push(`[shape-extraction] Failed to read file: ${filePath} - ${error instanceof Error ? error.message : String(error)}`);
179
+ }
180
+ }
181
+ // Note: extractionWarnings are collected but currently not surfaced
182
+ // Future enhancement: add warnings field to ExtractedPattern schema
183
+ // Build pattern object
184
+ const pattern = {
185
+ id,
186
+ name,
187
+ category,
188
+ directive,
189
+ code,
190
+ source: {
191
+ file: asSourceFilePath(relativePath),
192
+ lines: [directive.position.startLine, directive.position.endLine],
193
+ },
194
+ exports: [...exports],
195
+ extractedAt: new Date().toISOString(),
196
+ // Include optional fields only if present in directive
197
+ ...(directive.patternName !== undefined && { patternName: directive.patternName }),
198
+ ...(directive.status !== undefined && { status: directive.status }),
199
+ ...(directive.isCore === true && { isCore: directive.isCore }),
200
+ ...(directive.useCases !== undefined &&
201
+ directive.useCases.length > 0 && { useCases: directive.useCases }),
202
+ ...(directive.whenToUse !== undefined && { whenToUse: directive.whenToUse }),
203
+ ...(directive.uses !== undefined && directive.uses.length > 0 && { uses: directive.uses }),
204
+ ...(directive.usedBy !== undefined &&
205
+ directive.usedBy.length > 0 && { usedBy: directive.usedBy }),
206
+ // Roadmap integration fields
207
+ ...(directive.phase !== undefined && { phase: directive.phase }),
208
+ ...(directive.brief !== undefined && { brief: directive.brief }),
209
+ ...(directive.dependsOn !== undefined &&
210
+ directive.dependsOn.length > 0 && { dependsOn: directive.dependsOn }),
211
+ ...(directive.enables !== undefined &&
212
+ directive.enables.length > 0 && { enables: directive.enables }),
213
+ // UML-inspired relationship fields (PatternRelationshipModel)
214
+ ...(directive.implements !== undefined &&
215
+ directive.implements.length > 0 && { implementsPatterns: directive.implements }),
216
+ ...(directive.extends !== undefined && { extendsPattern: directive.extends }),
217
+ // Cross-reference and API navigation fields (PatternRelationshipModel enhancement)
218
+ ...(directive.seeAlso !== undefined &&
219
+ directive.seeAlso.length > 0 && { seeAlso: directive.seeAlso }),
220
+ ...(directive.apiRef !== undefined &&
221
+ directive.apiRef.length > 0 && { apiRef: directive.apiRef }),
222
+ // Design session stub metadata fields
223
+ ...(directive.target !== undefined && { targetPath: directive.target }),
224
+ ...(directive.since !== undefined && { since: directive.since }),
225
+ // Architecture diagram generation fields
226
+ ...(directive.archRole !== undefined && { archRole: directive.archRole }),
227
+ ...(directive.archContext !== undefined && { archContext: directive.archContext }),
228
+ ...(directive.archLayer !== undefined && { archLayer: directive.archLayer }),
229
+ ...(directive.include !== undefined &&
230
+ directive.include.length > 0 && { include: directive.include }),
231
+ ...(directive.claudeModule !== undefined && { claudeModule: directive.claudeModule }),
232
+ ...(directive.claudeSection !== undefined && { claudeSection: directive.claudeSection }),
233
+ ...(directive.claudeTags !== undefined &&
234
+ directive.claudeTags.length > 0 && { claudeTags: directive.claudeTags }),
235
+ // PRD metadata fields
236
+ ...(directive.productArea !== undefined && { productArea: directive.productArea }),
237
+ // Shape extraction fields (extracted from source file when @architect-extract-shapes present)
238
+ ...(extractedShapes && extractedShapes.length > 0 && { extractedShapes }),
239
+ // Convention tags for reference document generation
240
+ ...(directive.convention !== undefined &&
241
+ directive.convention.length > 0 && { convention: directive.convention }),
242
+ };
243
+ // Validate against schema (schema-first enforcement)
244
+ const validation = ExtractedPatternSchema.safeParse(pattern);
245
+ if (!validation.success) {
246
+ const errorMessages = validation.error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`);
247
+ const error = createPatternValidationError(asSourceFilePath(relativePath), name, 'Pattern validation failed', errorMessages);
248
+ return Result.err(error);
249
+ }
250
+ return Result.ok(validation.data);
251
+ }
252
+ /**
253
+ * Infer pattern name from directive or exports
254
+ *
255
+ * Uses fallback chain:
256
+ * 1. Explicit pattern tag value (highest priority)
257
+ * 2. First line of description (if not a tag)
258
+ * 3. First export name
259
+ * 4. Generated from primary tag
260
+ *
261
+ * @param directive - Parsed JSDoc directive
262
+ * @param exports - Exported symbols from code block
263
+ * @param registry - Tag registry for prefix-aware tag stripping
264
+ * @returns Inferred pattern name
265
+ *
266
+ * @example
267
+ * ```typescript
268
+ * // From explicit pattern tag (highest priority)
269
+ * const name0 = inferPatternName(
270
+ * { patternName: 'Decider Pattern', description: 'Some description', tags: [...] },
271
+ * [],
272
+ * registry
273
+ * );
274
+ * console.log(name0); // 'Decider Pattern'
275
+ *
276
+ * // From description
277
+ * const name1 = inferPatternName(
278
+ * { description: 'User Authentication\n...', tags: [...] },
279
+ * [],
280
+ * registry
281
+ * );
282
+ * console.log(name1); // 'User Authentication'
283
+ *
284
+ * // From export
285
+ * const name2 = inferPatternName(
286
+ * { description: '@architect-core', tags: [...] },
287
+ * [{ name: 'createUser', type: 'function' }],
288
+ * registry
289
+ * );
290
+ * console.log(name2); // 'createUser'
291
+ *
292
+ * // From tag
293
+ * const name3 = inferPatternName(
294
+ * { description: '', tags: ['@architect-domain-auth'] },
295
+ * [],
296
+ * registry
297
+ * );
298
+ * console.log(name3); // 'domain-pattern'
299
+ * ```
300
+ */
301
+ export function inferPatternName(directive, exports, registry) {
302
+ // Priority 1: Explicit pattern tag value
303
+ if (directive.patternName) {
304
+ return directive.patternName;
305
+ }
306
+ // Priority 2: Try to extract name from first line of description
307
+ const lines = directive.description.split('\n');
308
+ const firstLine = lines[0];
309
+ if (firstLine?.trim() && !firstLine.trim().startsWith('@')) {
310
+ // Strip markdown header prefixes (##, ###, etc.)
311
+ const cleanedName = firstLine.trim().replace(/^#+\s*/, '');
312
+ if (cleanedName) {
313
+ return cleanedName;
314
+ }
315
+ }
316
+ // Fall back to first export name
317
+ const firstExport = exports[0];
318
+ if (firstExport) {
319
+ return firstExport.name;
320
+ }
321
+ // Last resort: generate from tags using registry prefix
322
+ const tagPrefix = registry.tagPrefix;
323
+ const firstTag = directive.tags[0];
324
+ const primaryTag = firstTag?.replace(tagPrefix, '') ?? 'unknown';
325
+ return `${primaryTag}-pattern`;
326
+ }
327
+ /**
328
+ * Infer category from @architect-* tags using priority system
329
+ *
330
+ * Categories are selected based on priority order:
331
+ * domain > arch > infra > validation > testing > performance > security > core
332
+ *
333
+ * @param tags - Array of @architect-* tags
334
+ * @returns Inferred category string
335
+ *
336
+ * @example
337
+ * ```typescript
338
+ * // Priority-based selection
339
+ * const cat1 = inferCategory([
340
+ * '@architect-core',
341
+ * '@architect-domain-auth'
342
+ * ]);
343
+ * console.log(cat1); // 'domain' (higher priority than 'core')
344
+ *
345
+ * // From first tag
346
+ * const cat2 = inferCategory(['@architect-validation-zod']);
347
+ * console.log(cat2); // 'validation'
348
+ *
349
+ * // No tags
350
+ * const cat3 = inferCategory([]);
351
+ * console.log(cat3); // 'uncategorized'
352
+ * ```
353
+ */
354
+ export function inferCategory(tags, registry) {
355
+ // Build priority map from registry (includes aliases)
356
+ // Also track canonical tag for each alias
357
+ const priorityMap = new Map();
358
+ const canonicalMap = new Map(); // Maps alias → canonical tag
359
+ for (const cat of registry.categories) {
360
+ priorityMap.set(cat.tag, cat.priority);
361
+ canonicalMap.set(cat.tag, cat.tag); // Canonical tags map to themselves
362
+ // Include aliases with same priority, mapping to canonical tag
363
+ for (const alias of cat.aliases) {
364
+ priorityMap.set(alias, cat.priority);
365
+ canonicalMap.set(alias, cat.tag); // Alias maps to canonical tag
366
+ }
367
+ }
368
+ // Extract category names from tags (remove prefix)
369
+ const prefix = registry.tagPrefix;
370
+ const categoryTags = [];
371
+ for (const tag of tags) {
372
+ if (!tag.startsWith(prefix))
373
+ continue;
374
+ // Remove prefix to get tag content
375
+ const withoutPrefix = tag.substring(prefix.length);
376
+ // Find ALL matching categories in this tag
377
+ // This handles cases like "@architect-utils-validation" which contains both "utils" and "validation"
378
+ const matches = [];
379
+ // Check for exact match first
380
+ if (priorityMap.has(withoutPrefix)) {
381
+ matches.push(withoutPrefix);
382
+ }
383
+ else {
384
+ // Check all possible contiguous subsequences for category matches
385
+ // e.g., for "utils-validation" check: "utils-validation", "utils", "validation"
386
+ const parts = withoutPrefix.split('-');
387
+ // Try all contiguous subsequences from longest to shortest
388
+ for (let len = parts.length; len > 0; len--) {
389
+ for (let start = 0; start <= parts.length - len; start++) {
390
+ const candidate = parts.slice(start, start + len).join('-');
391
+ if (priorityMap.has(candidate)) {
392
+ matches.push(candidate);
393
+ }
394
+ }
395
+ }
396
+ }
397
+ // Add all matches to categoryTags
398
+ categoryTags.push(...matches);
399
+ }
400
+ // Find tag with highest priority (lowest number)
401
+ // Use canonical tags (normalize aliases)
402
+ let selectedCategory = null;
403
+ let highestPriority = Infinity;
404
+ for (const categoryTag of categoryTags) {
405
+ const priority = priorityMap.get(categoryTag);
406
+ if (priority !== undefined && priority < highestPriority) {
407
+ highestPriority = priority;
408
+ // Use canonical tag (normalizes aliases like "infrastructure" → "infra")
409
+ selectedCategory = canonicalMap.get(categoryTag) ?? categoryTag;
410
+ }
411
+ }
412
+ // If found by priority, return it
413
+ if (selectedCategory !== null) {
414
+ return selectedCategory;
415
+ }
416
+ // Fallback: Extract category from first tag
417
+ const firstTag = tags[0];
418
+ if (firstTag?.startsWith(prefix) === true) {
419
+ const withoutPrefix = firstTag.substring(prefix.length);
420
+ const parts = withoutPrefix.split('-');
421
+ const firstPart = parts[0];
422
+ if (firstPart) {
423
+ return firstPart;
424
+ }
425
+ }
426
+ return 'uncategorized';
427
+ }
428
+ /**
429
+ * Check if directive has specific aggregation tag
430
+ *
431
+ * Generic helper for checking any aggregation tag. Replaces individual
432
+ * hasOverviewTag/hasDecisionTag/hasIntroTag helpers with a unified approach.
433
+ *
434
+ * @param tags - Directive tags to check
435
+ * @param aggregationTagName - Name of aggregation tag (e.g., "overview", "decision", "intro")
436
+ * @param registry - Tag registry
437
+ * @returns True if directive has the specified aggregation tag
438
+ *
439
+ * @example
440
+ * ```typescript
441
+ * hasAggregationTag(['@architect-core', '@architect-overview'], "overview", registry); // true
442
+ * hasAggregationTag(['@architect-core'], "overview", registry); // false
443
+ * hasAggregationTag(['@architect-arch', '@architect-decision'], "decision", registry); // true
444
+ * ```
445
+ */
446
+ export function hasAggregationTag(tags, aggregationTagName, registry) {
447
+ const aggregationTag = registry.aggregationTags.find((t) => t.tag === aggregationTagName);
448
+ if (!aggregationTag)
449
+ return false;
450
+ const fullTag = `${registry.tagPrefix}${aggregationTag.tag}`;
451
+ return tags.some((t) => t === fullTag);
452
+ }
453
+ /**
454
+ * Extract aggregation tags from pattern tags
455
+ *
456
+ * Identifies which aggregated documents a pattern should appear in.
457
+ * Patterns can appear in multiple documents if they have multiple aggregation tags.
458
+ *
459
+ * @param tags - Array of @architect-* tags
460
+ * @param registry - Tag registry for aggregation tag lookup
461
+ * @returns Object indicating which aggregated docs to include pattern in
462
+ *
463
+ * @example
464
+ * ```typescript
465
+ * // Pattern with both overview and decision tags
466
+ * getAggregationTags(['@architect-overview', '@architect-decision'], registry);
467
+ * // { overview: true, decision: true, intro: false }
468
+ *
469
+ * // Pattern with only core tag (no aggregation)
470
+ * getAggregationTags(['@architect-core'], registry);
471
+ * // { overview: false, decision: false, intro: false }
472
+ * ```
473
+ */
474
+ export function getAggregationTags(tags, registry) {
475
+ return {
476
+ overview: hasAggregationTag(tags, 'overview', registry),
477
+ decision: hasAggregationTag(tags, 'decision', registry),
478
+ intro: hasAggregationTag(tags, 'intro', registry),
479
+ };
480
+ }
481
+ //# sourceMappingURL=doc-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-extractor.js","sourceRoot":"","sources":["../../src/extractor/doc-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * @architect
3
+ * @architect-extractor
4
+ * @architect-pattern DualSourceExtractor
5
+ * @architect-status completed
6
+ * @architect-uses DocExtractor, GherkinExtractor, GherkinScanner
7
+ * @architect-used-by Orchestrator
8
+ * @architect-arch-role service
9
+ * @architect-arch-context extractor
10
+ * @architect-arch-layer application
11
+ *
12
+ * ## DualSourceExtractor - Compose Pattern Data from Code + Features
13
+ *
14
+ * Extracts pattern metadata from both TypeScript code stubs (@architect-*)
15
+ * and Gherkin feature files (@architect-*), validates consistency,
16
+ * and composes unified pattern data for documentation generation.
17
+ *
18
+ * ### When to Use
19
+ *
20
+ * - When implementing USDP Pattern 2 (Standard) or higher
21
+ * - When you have both code stubs AND timeline features
22
+ * - When generating artifacts that need both timeless and temporal data
23
+ * - When validating cross-source consistency (pattern name, phase alignment)
24
+ *
25
+ * ### Key Concepts
26
+ *
27
+ * - **Code Source**: @architect-* tags define timeless pattern graph
28
+ * - **Feature Source**: @architect-* tags add temporal process metadata
29
+ * - **Cross-Validation**: Pattern name + phase must match across sources
30
+ * - **Deliverables**: Parsed from Gherkin Background tables in features
31
+ */
32
+ import type { ExtractedPattern } from '../types/index.js';
33
+ import { type ScannedGherkinFile, type ProcessMetadata, type Deliverable, type CrossValidationError, type ValidationSummary } from '../validation-schemas/index.js';
34
+ export type { ProcessMetadata, Deliverable, CrossValidationError, ValidationSummary };
35
+ /**
36
+ * Results from dual-source extraction
37
+ *
38
+ * Contains patterns successfully matched across sources, orphaned
39
+ * code/feature patterns, and cross-validation errors.
40
+ */
41
+ export interface DualSourceResults {
42
+ /** Patterns with both code + process data */
43
+ readonly patterns: readonly DualSourcePattern[];
44
+ /** Patterns from code only (no matching feature) */
45
+ readonly codeOnly: readonly ExtractedPattern[];
46
+ /** Features without matching code stubs */
47
+ readonly featureOnly: readonly ProcessMetadata[];
48
+ /** Cross-validation errors */
49
+ readonly validationErrors: readonly CrossValidationError[];
50
+ /** Non-fatal warnings (e.g., pattern name collisions) */
51
+ readonly warnings: readonly string[];
52
+ }
53
+ /**
54
+ * Combined pattern data from code + features
55
+ *
56
+ * When multiple code files define the same pattern (e.g., ServiceIndependence
57
+ * with ECST and Reservation sub-patterns), they are merged into a single
58
+ * dual-source pattern with the `sources` array containing all variants.
59
+ */
60
+ export interface DualSourcePattern extends ExtractedPattern {
61
+ /** Process metadata from feature file (optional) */
62
+ readonly process?: ProcessMetadata;
63
+ /** Deliverables from feature Background table (optional) */
64
+ readonly deliverables?: readonly Deliverable[];
65
+ /**
66
+ * Multiple source patterns when there's a name collision (optional)
67
+ * Present when multiple code files use the same @architect-pattern name
68
+ */
69
+ readonly sources?: readonly ExtractedPattern[];
70
+ }
71
+ /**
72
+ * Extract process metadata from Gherkin feature tags
73
+ *
74
+ * Uses schema validation instead of type assertions to ensure data integrity.
75
+ * Returns null if required tags are missing OR if validation fails.
76
+ *
77
+ * @param feature - Scanned Gherkin feature
78
+ * @returns Process metadata or null if missing required tags or validation fails
79
+ */
80
+ export declare function extractProcessMetadata(feature: ScannedGherkinFile): ProcessMetadata | null;
81
+ /**
82
+ * Extract deliverables from Gherkin Background table
83
+ *
84
+ * Parses Background section looking for DataTables with a "Deliverable" column.
85
+ * Expected table format:
86
+ * | Deliverable | Status | Tests | Location |
87
+ *
88
+ * Optional columns for extended tracking:
89
+ * | Deliverable | Status | Tests | Location | Finding | Release |
90
+ *
91
+ * - **Finding**: Review traceability ID (e.g., "CODE-001")
92
+ * - **Release**: Semver version for changelog grouping (e.g., "v0.2.0")
93
+ *
94
+ * @param feature - Scanned Gherkin feature with optional background
95
+ * @returns Array of deliverables or empty array if no table found
96
+ *
97
+ * @example
98
+ * ```gherkin
99
+ * Background: Deliverables
100
+ * Given the following deliverables:
101
+ * | Deliverable | Status | Tests | Location | Finding | Release |
102
+ * | Fix parseArgs() call | Done | Yes | src/cli/generate-docs.ts | CODE-001 | v0.2.0 |
103
+ * | Update README.md | Done | No | README.md | DOC-001 | v0.2.0 |
104
+ * ```
105
+ */
106
+ export declare function extractDeliverables(feature: ScannedGherkinFile): readonly Deliverable[];
107
+ /**
108
+ * Combine patterns from code and features into dual-source patterns
109
+ *
110
+ * Validates that pattern names and phases match across sources.
111
+ * Creates unified pattern objects with both code and process metadata.
112
+ *
113
+ * **Pattern Name Collisions:**
114
+ * When multiple code files use the same `@architect-pattern` name (e.g.,
115
+ * ServiceIndependence with ECST and Reservation sub-patterns), they are
116
+ * automatically merged:
117
+ * - Categories, dependencies, and enables are unioned across all sources
118
+ * - Primary pattern (first in array) provides base metadata
119
+ * - All source patterns are preserved in the `sources` array
120
+ * - Console warning is emitted for visibility
121
+ *
122
+ * @param codePatterns - Patterns extracted from TypeScript code
123
+ * @param featureFiles - Scanned Gherkin feature files
124
+ * @returns Dual-source extraction results
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * // Extract from both sources
129
+ * const codeScan = await scanPatterns({ patterns: 'packages/**\/*.ts' });
130
+ * const featureScan = await scanGherkinFiles({ patterns: 'tests/features/**\/*.feature' });
131
+ *
132
+ * if (codeScan.ok && featureScan.ok) {
133
+ * const codeExtraction = extractPatterns(codeScan.value.files, '/project');
134
+ * const dualSource = combineSources(codeExtraction.patterns, featureScan.value.files);
135
+ *
136
+ * console.log(`Combined: ${dualSource.patterns.length}`);
137
+ * console.log(`Code-only: ${dualSource.codeOnly.length}`);
138
+ * console.log(`Feature-only: ${dualSource.featureOnly.length}`);
139
+ * console.log(`Validation errors: ${dualSource.validationErrors.length}`);
140
+ *
141
+ * // Check for collisions
142
+ * for (const pattern of dualSource.patterns) {
143
+ * if (pattern.sources) {
144
+ * console.log(`${pattern.patternName} has ${pattern.sources.length} implementations`);
145
+ * }
146
+ * }
147
+ * }
148
+ * ```
149
+ */
150
+ export declare function combineSources(codePatterns: readonly ExtractedPattern[], featureFiles: readonly ScannedGherkinFile[]): DualSourceResults;
151
+ /**
152
+ * Validate dual-source consistency
153
+ *
154
+ * Checks that patterns are properly aligned across sources.
155
+ * Reports code stubs without features and features without code.
156
+ *
157
+ * @param results - Dual-source extraction results
158
+ * @returns Validation summary
159
+ */
160
+ export declare function validateDualSource(results: DualSourceResults): ValidationSummary;
161
+ //# sourceMappingURL=dual-source-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dual-source-extractor.d.ts","sourceRoot":"","sources":["../../src/extractor/dual-source-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,gCAAgC,CAAC;AAIxC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC;AAEtF;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,8BAA8B;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC3D,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,oDAAoD;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAChD;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,eAAe,GAAG,IAAI,CA4E1F;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,WAAW,EAAE,CA8EvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,YAAY,EAAE,SAAS,kBAAkB,EAAE,GAC1C,iBAAiB,CAuHnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CA6BhF"}