@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,543 @@
1
+ /**
2
+ * @architect
3
+ * @architect-extractor
4
+ * @architect-pattern GherkinExtractor
5
+ * @architect-status completed
6
+ * @architect-implements GherkinRulesSupport
7
+ * @architect-uses GherkinTypes, GherkinASTParser
8
+ * @architect-used-by DualSourceExtractor, Orchestrator
9
+ * @architect-arch-role service
10
+ * @architect-arch-context extractor
11
+ * @architect-arch-layer application
12
+ *
13
+ * ## GherkinExtractor - Convert Feature Files to Pattern Documentation
14
+ *
15
+ * Transforms scanned Gherkin feature files into ExtractedPattern objects
16
+ * for inclusion in generated documentation. Maps feature tags, descriptions,
17
+ * and scenarios to pattern metadata.
18
+ *
19
+ * ### When to Use
20
+ *
21
+ * - When building multi-source documentation (TypeScript + Gherkin)
22
+ * - When converting acceptance criteria to pattern documentation
23
+ * - When defining roadmap patterns in .feature files before implementation
24
+ *
25
+ * ### Key Concepts
26
+ *
27
+ * - **Feature → Pattern**: Feature name becomes pattern name
28
+ * - **Tags → Metadata**: @pattern:Name, @phase:N map to pattern fields
29
+ * - **Scenarios → Use Cases**: Acceptance criteria become "When to Use" examples
30
+ */
31
+ // TODO: Abstract filesystem operations for future Convex migration.
32
+ // Direct fs/path usage should be moved to injected interface (via GherkinExtractorConfig)
33
+ // or deferred to CLI-layer orchestration. See PR-79 comment #042.
34
+ import * as fs from 'node:fs';
35
+ import * as path from 'node:path';
36
+ import { ExtractedPatternSchema, } from '../validation-schemas/extracted-pattern.js';
37
+ import { extractPatternTags } from '../scanner/gherkin-ast-parser.js';
38
+ import { asPatternId, asCategoryName, asSourceFilePath, asDirectiveTag } from '../types/branded.js';
39
+ import { inferFeatureLayer } from './layer-inference.js';
40
+ import { extractDeliverables } from './dual-source-extractor.js';
41
+ import { createGherkinPatternValidationError, } from '../types/errors.js';
42
+ import { generatePatternId } from '../utils/index.js';
43
+ import { getPatternName } from '../api/pattern-helpers.js';
44
+ // =============================================================================
45
+ // Constants
46
+ // =============================================================================
47
+ /**
48
+ * Semantic tags for scenario categorization.
49
+ *
50
+ * These tags identify the nature of a scenario (e.g., happy-path, validation)
51
+ * and are extracted from scenario tags during pattern extraction.
52
+ */
53
+ export const SEMANTIC_SCENARIO_TAGS = [
54
+ 'happy-path',
55
+ 'validation',
56
+ 'business-failure',
57
+ 'business-rule',
58
+ 'compensation',
59
+ 'idempotency',
60
+ 'expiration',
61
+ 'workflow-state',
62
+ ];
63
+ /**
64
+ * Assign a property to an object only if the value is defined (not undefined/null).
65
+ *
66
+ * Performance optimization: Avoids creating intermediate objects from conditional spreads.
67
+ * Instead of `...(x && { field: x })` which creates a temporary object,
68
+ * this directly assigns to the target object.
69
+ *
70
+ * @internal
71
+ */
72
+ function assignIfDefined(obj, key, value) {
73
+ if (value !== undefined && value !== null) {
74
+ obj[key] = value;
75
+ }
76
+ }
77
+ /**
78
+ * Assign a property to an object only if the array is non-empty.
79
+ *
80
+ * @internal
81
+ */
82
+ function assignIfNonEmpty(obj, key, arr) {
83
+ if (arr && arr.length > 0) {
84
+ obj[key] = arr;
85
+ }
86
+ }
87
+ /**
88
+ * Shared Gherkin raw-pattern builder.
89
+ *
90
+ * Keeps the sync and async extraction paths aligned so metadata fields
91
+ * do not drift when one path is updated independently.
92
+ */
93
+ function buildGherkinRawPattern(input) {
94
+ const { relativePath, filePath, patternId, patternName, primaryCategory, feature, metadata, whenToUse, scenarios, rules, deliverables, behaviorFile, behaviorFileVerified, } = input;
95
+ const rawPattern = {
96
+ id: patternId,
97
+ name: patternName,
98
+ category: asCategoryName(primaryCategory),
99
+ directive: {
100
+ tags: feature.tags.map((tag) => asDirectiveTag(`@architect-${tag}`)),
101
+ description: feature.description,
102
+ examples: [],
103
+ position: { startLine: feature.line, endLine: feature.line },
104
+ status: metadata.status,
105
+ phase: metadata.phase,
106
+ },
107
+ code: '',
108
+ source: {
109
+ file: asSourceFilePath(relativePath),
110
+ lines: [feature.line, feature.line],
111
+ },
112
+ exports: [],
113
+ extractedAt: new Date().toISOString(),
114
+ };
115
+ assignIfDefined(rawPattern, 'patternName', metadata.pattern);
116
+ assignIfDefined(rawPattern, 'status', metadata.status);
117
+ assignIfDefined(rawPattern, 'phase', metadata.phase);
118
+ assignIfDefined(rawPattern, 'release', metadata.release);
119
+ assignIfDefined(rawPattern, 'brief', metadata.brief);
120
+ assignIfNonEmpty(rawPattern, 'dependsOn', metadata.dependsOn);
121
+ assignIfNonEmpty(rawPattern, 'enables', metadata.enables);
122
+ assignIfNonEmpty(rawPattern, 'implementsPatterns', metadata.implementsPatterns);
123
+ assignIfDefined(rawPattern, 'extendsPattern', metadata.extendsPattern);
124
+ assignIfDefined(rawPattern, 'targetPath', metadata.target);
125
+ assignIfDefined(rawPattern, 'since', metadata.since);
126
+ assignIfDefined(rawPattern, 'quarter', metadata.quarter);
127
+ assignIfDefined(rawPattern, 'completed', metadata.completed);
128
+ assignIfDefined(rawPattern, 'effort', metadata.effort);
129
+ assignIfDefined(rawPattern, 'effortActual', metadata.effortActual);
130
+ assignIfDefined(rawPattern, 'team', metadata.team);
131
+ assignIfDefined(rawPattern, 'workflow', metadata.workflow);
132
+ assignIfDefined(rawPattern, 'risk', metadata.risk);
133
+ assignIfDefined(rawPattern, 'priority', metadata.priority);
134
+ assignIfDefined(rawPattern, 'productArea', metadata.productArea);
135
+ assignIfDefined(rawPattern, 'userRole', metadata.userRole);
136
+ assignIfDefined(rawPattern, 'businessValue', metadata.businessValue);
137
+ assignIfDefined(rawPattern, 'level', metadata.level);
138
+ assignIfDefined(rawPattern, 'parent', metadata.parent);
139
+ assignIfNonEmpty(rawPattern, 'discoveredGaps', metadata.discoveredGaps);
140
+ assignIfNonEmpty(rawPattern, 'discoveredImprovements', metadata.discoveredImprovements);
141
+ assignIfNonEmpty(rawPattern, 'discoveredRisks', metadata.discoveredRisks);
142
+ assignIfNonEmpty(rawPattern, 'discoveredLearnings', metadata.discoveredLearnings);
143
+ assignIfNonEmpty(rawPattern, 'constraints', metadata.constraints);
144
+ assignIfDefined(rawPattern, 'adr', metadata.adr);
145
+ assignIfDefined(rawPattern, 'adrStatus', metadata.adrStatus);
146
+ assignIfDefined(rawPattern, 'adrCategory', metadata.adrCategory);
147
+ assignIfDefined(rawPattern, 'adrSupersedes', metadata.adrSupersedes);
148
+ assignIfDefined(rawPattern, 'adrSupersededBy', metadata.adrSupersededBy);
149
+ assignIfDefined(rawPattern, 'adrTheme', metadata.adrTheme);
150
+ assignIfDefined(rawPattern, 'adrLayer', metadata.adrLayer);
151
+ assignIfNonEmpty(rawPattern, 'convention', metadata.convention);
152
+ assignIfNonEmpty(rawPattern, 'include', metadata.include);
153
+ assignIfDefined(rawPattern, 'claudeModule', metadata.claudeModule);
154
+ assignIfDefined(rawPattern, 'claudeSection', metadata.claudeSection);
155
+ assignIfNonEmpty(rawPattern, 'claudeTags', metadata.claudeTags);
156
+ assignIfDefined(rawPattern, 'sequenceOrchestrator', metadata.sequenceOrchestrator);
157
+ assignIfNonEmpty(rawPattern, 'whenToUse', whenToUse);
158
+ assignIfNonEmpty(rawPattern, 'deliverables', deliverables);
159
+ if (scenarios.length > 0) {
160
+ rawPattern['scenarios'] = scenarios.map((scenario) => {
161
+ const scenarioRef = {
162
+ featureFile: relativePath,
163
+ featureName: feature.name,
164
+ featureDescription: feature.description,
165
+ scenarioName: scenario.name,
166
+ semanticTags: scenario.tags.filter((tag) => SEMANTIC_SCENARIO_TAGS.includes(tag)),
167
+ tags: scenario.tags,
168
+ layer: inferFeatureLayer(filePath),
169
+ line: scenario.line,
170
+ };
171
+ if (scenario.steps.length > 0) {
172
+ scenarioRef['steps'] = scenario.steps.map((step) => {
173
+ const stepObj = { keyword: step.keyword, text: step.text };
174
+ assignIfDefined(stepObj, 'dataTable', step.dataTable);
175
+ assignIfDefined(stepObj, 'docString', step.docString);
176
+ return stepObj;
177
+ });
178
+ }
179
+ return scenarioRef;
180
+ });
181
+ }
182
+ assignIfDefined(rawPattern, 'behaviorFile', behaviorFile);
183
+ if (behaviorFileVerified !== undefined) {
184
+ rawPattern['behaviorFileVerified'] = behaviorFileVerified;
185
+ }
186
+ if (rules && rules.length > 0) {
187
+ rawPattern['rules'] = rules.map((rule) => {
188
+ const errorNames = rule.scenarios
189
+ .filter((s) => s.tags.some((t) => t === 'sequence-error'))
190
+ .map((s) => s.name);
191
+ return {
192
+ name: rule.name,
193
+ description: rule.description,
194
+ scenarioCount: rule.scenarios.length,
195
+ scenarioNames: rule.scenarios.map((s) => s.name),
196
+ ...(rule.tags.length > 0 && { tags: rule.tags }),
197
+ ...(errorNames.length > 0 && { errorScenarioNames: errorNames }),
198
+ };
199
+ });
200
+ }
201
+ return rawPattern;
202
+ }
203
+ /**
204
+ * Extract patterns from scanned Gherkin feature files
205
+ *
206
+ * Converts feature file metadata into ExtractedPattern objects that can be
207
+ * merged with TypeScript-sourced patterns for unified documentation generation.
208
+ *
209
+ * Returns both successfully extracted patterns and validation errors for
210
+ * patterns that failed extraction. This enables partial success scenarios.
211
+ *
212
+ * @param scannedFiles - Array of scanned Gherkin files
213
+ * @param config - Extractor configuration (requires baseDir for relative paths)
214
+ * @returns Object containing extracted patterns and any validation errors
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * const scanResult = await scanGherkinFiles({
219
+ * patterns: 'tests/features/roadmap/**\/*.feature'
220
+ * });
221
+ *
222
+ * if (scanResult.ok) {
223
+ * const { patterns, errors } = extractPatternsFromGherkin(scanResult.value.files, {
224
+ * baseDir: process.cwd()
225
+ * });
226
+ * console.log(`${patterns.length} patterns extracted, ${errors.length} errors`);
227
+ * }
228
+ * ```
229
+ */
230
+ export function extractPatternsFromGherkin(scannedFiles, config) {
231
+ const patterns = [];
232
+ const errors = [];
233
+ const { baseDir } = config;
234
+ const scenariosAsUseCases = config.scenariosAsUseCases ?? true;
235
+ for (const file of scannedFiles) {
236
+ const { feature, scenarios, rules, filePath } = file;
237
+ // Convert absolute path to relative path from baseDir
238
+ const relativePath = path.relative(baseDir, filePath);
239
+ // Extract pattern metadata from feature tags
240
+ const metadata = extractPatternTags(feature.tags);
241
+ // Skip if no @architect opt-in marker (consistent with TypeScript requirement)
242
+ // The marker normalizes to 'architect' after stripping the @ prefix
243
+ const hasOptIn = feature.tags.some((tag) => tag === 'architect');
244
+ if (!hasOptIn) {
245
+ continue;
246
+ }
247
+ // Skip if no pattern tag (not a pattern definition)
248
+ if (!metadata.pattern) {
249
+ continue;
250
+ }
251
+ // Skip if no status tag (pattern reference for scenario mapping, not a pattern definition)
252
+ // Roadmap patterns MUST have @status:roadmap, @status:active, or @status:completed
253
+ if (!metadata.status) {
254
+ continue;
255
+ }
256
+ // Determine pattern name (from @pattern:Name tag or feature name)
257
+ const patternName = metadata.pattern || feature.name;
258
+ // Determine category (from category tags or default to first one)
259
+ const categories = metadata.categories ?? [];
260
+ const primaryCategory = categories[0] ?? 'ddd';
261
+ // Extract "When to Use" from scenarios if enabled
262
+ const whenToUse = [];
263
+ if (scenariosAsUseCases) {
264
+ for (const scenario of scenarios) {
265
+ // Only include scenarios tagged with @acceptance-criteria
266
+ if (scenario.tags.includes('acceptance-criteria')) {
267
+ whenToUse.push(`When ${scenario.name.toLowerCase()}`);
268
+ }
269
+ }
270
+ }
271
+ // Create pattern ID from file path and line number (deterministic)
272
+ const patternId = asPatternId(generatePatternId(relativePath, feature.line));
273
+ // Extract deliverables from Background table
274
+ const deliverables = extractDeliverables(file);
275
+ // Infer and verify behavior file for traceability
276
+ let behaviorFile = metadata.behaviorFile;
277
+ let behaviorFileVerified;
278
+ if (!behaviorFile) {
279
+ // Infer from convention: timeline/phase-N-name.feature → behavior/name.feature
280
+ const inferred = inferBehaviorFilePath(relativePath);
281
+ if (inferred) {
282
+ behaviorFile = inferred;
283
+ // Verify file exists on disk
284
+ const absolutePath = path.join(baseDir, inferred);
285
+ behaviorFileVerified = fileExistsSync(absolutePath);
286
+ }
287
+ }
288
+ else {
289
+ // Verify explicit tag path exists
290
+ const absolutePath = path.join(baseDir, behaviorFile);
291
+ behaviorFileVerified = fileExistsSync(absolutePath);
292
+ }
293
+ const rawPattern = buildGherkinRawPattern({
294
+ relativePath,
295
+ filePath,
296
+ patternId,
297
+ patternName,
298
+ primaryCategory,
299
+ feature,
300
+ metadata,
301
+ whenToUse,
302
+ scenarios,
303
+ rules,
304
+ deliverables,
305
+ behaviorFile,
306
+ behaviorFileVerified,
307
+ });
308
+ // Validate against schema (schema-first enforcement)
309
+ const validation = ExtractedPatternSchema.safeParse(rawPattern);
310
+ if (!validation.success) {
311
+ // Collect validation error instead of console.warn
312
+ errors.push(createGherkinPatternValidationError(relativePath, patternName, 'Schema validation failed', validation.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`)));
313
+ continue;
314
+ }
315
+ patterns.push(validation.data);
316
+ }
317
+ return { patterns, errors };
318
+ }
319
+ /**
320
+ * Infer behavior file path from timeline feature file path using convention
321
+ *
322
+ * Convention: `timeline/phase-N[suffix]-name.feature` → `behavior/name.feature`
323
+ *
324
+ * Handles edge cases:
325
+ * - `phase-37-remaining-work-enhancement.feature` → `remaining-work-enhancement.feature`
326
+ * - `phase-02b-enhanced-dogfooding.feature` → `enhanced-dogfooding.feature`
327
+ * - `phase-03-watch-mode.feature` → `watch-mode.feature`
328
+ *
329
+ * @param timelineFilePath - Relative path to timeline feature file
330
+ * @returns Inferred behavior file path, or undefined if not a timeline file
331
+ */
332
+ export function inferBehaviorFilePath(timelineFilePath) {
333
+ // Match: phase-NN[a-z]?-name.feature (supports phase-02b, phase-37, etc.)
334
+ const match = /phase-\d+[a-z]?-(.+)\.feature$/.exec(timelineFilePath);
335
+ if (match?.[1]) {
336
+ return `tests/features/behavior/${match[1]}.feature`;
337
+ }
338
+ return undefined;
339
+ }
340
+ /**
341
+ * Check if a file exists at the given path (sync)
342
+ *
343
+ * @param filePath - Absolute path to check
344
+ * @returns true if file exists, false otherwise
345
+ */
346
+ function fileExistsSync(filePath) {
347
+ try {
348
+ return fs.existsSync(filePath);
349
+ }
350
+ catch {
351
+ return false;
352
+ }
353
+ }
354
+ /**
355
+ * Check if a file exists at the given path (async)
356
+ *
357
+ * @param filePath - Absolute path to check
358
+ * @returns Promise resolving to true if file exists, false otherwise
359
+ */
360
+ async function fileExistsAsync(filePath) {
361
+ try {
362
+ await fs.promises.access(filePath);
363
+ return true;
364
+ }
365
+ catch {
366
+ return false;
367
+ }
368
+ }
369
+ /**
370
+ * Extract patterns from scanned Gherkin feature files (async variant)
371
+ *
372
+ * This is the async version of `extractPatternsFromGherkin` that performs
373
+ * file existence checks asynchronously in parallel, avoiding event loop blocking.
374
+ *
375
+ * Use this variant when processing many feature files or when running on
376
+ * systems with slow disk I/O.
377
+ *
378
+ * @param scannedFiles - Array of scanned Gherkin files
379
+ * @param config - Extractor configuration (requires baseDir for relative paths)
380
+ * @returns Promise resolving to extracted patterns and validation errors
381
+ *
382
+ * @example
383
+ * ```typescript
384
+ * const scanResult = await scanGherkinFiles({
385
+ * patterns: 'tests/features/roadmap/**\/*.feature'
386
+ * });
387
+ *
388
+ * if (scanResult.ok) {
389
+ * const { patterns, errors } = await extractPatternsFromGherkinAsync(
390
+ * scanResult.value.files,
391
+ * { baseDir: process.cwd() }
392
+ * );
393
+ * }
394
+ * ```
395
+ */
396
+ export async function extractPatternsFromGherkinAsync(scannedFiles, config) {
397
+ const { baseDir } = config;
398
+ const scenariosAsUseCases = config.scenariosAsUseCases ?? true;
399
+ const patternsToVerify = [];
400
+ const errors = [];
401
+ for (const file of scannedFiles) {
402
+ const { feature, scenarios, rules, filePath } = file;
403
+ const relativePath = path.relative(baseDir, filePath);
404
+ const metadata = extractPatternTags(feature.tags);
405
+ // Skip if no @architect opt-in marker (consistent with TypeScript requirement)
406
+ // The marker normalizes to 'architect' after stripping the @ prefix
407
+ const hasOptIn = feature.tags.some((tag) => tag === 'architect');
408
+ if (!hasOptIn)
409
+ continue;
410
+ // Skip if no pattern or status tag
411
+ if (!metadata.pattern || !metadata.status)
412
+ continue;
413
+ const patternName = metadata.pattern || feature.name;
414
+ const categories = metadata.categories ?? [];
415
+ const primaryCategory = categories[0] ?? 'ddd';
416
+ const whenToUse = [];
417
+ if (scenariosAsUseCases) {
418
+ for (const scenario of scenarios) {
419
+ if (scenario.tags.includes('acceptance-criteria')) {
420
+ whenToUse.push(`When ${scenario.name.toLowerCase()}`);
421
+ }
422
+ }
423
+ }
424
+ const patternId = asPatternId(generatePatternId(relativePath, feature.line));
425
+ const deliverables = extractDeliverables(file);
426
+ // Infer behavior file path but DON'T verify yet
427
+ let behaviorFile = metadata.behaviorFile;
428
+ let behaviorPathToVerify;
429
+ if (!behaviorFile) {
430
+ const inferred = inferBehaviorFilePath(relativePath);
431
+ if (inferred) {
432
+ behaviorFile = inferred;
433
+ behaviorPathToVerify = path.join(baseDir, inferred);
434
+ }
435
+ }
436
+ else {
437
+ behaviorPathToVerify = path.join(baseDir, behaviorFile);
438
+ }
439
+ const rawPattern = buildGherkinRawPattern({
440
+ relativePath,
441
+ filePath,
442
+ patternId,
443
+ patternName,
444
+ primaryCategory,
445
+ feature,
446
+ metadata,
447
+ whenToUse,
448
+ scenarios,
449
+ rules,
450
+ deliverables,
451
+ behaviorFile,
452
+ behaviorFileVerified: undefined,
453
+ });
454
+ const validation = ExtractedPatternSchema.safeParse(rawPattern);
455
+ if (!validation.success) {
456
+ errors.push(createGherkinPatternValidationError(relativePath, patternName, 'Schema validation failed', validation.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`)));
457
+ continue;
458
+ }
459
+ // Use explicit conditional to satisfy exactOptionalPropertyTypes
460
+ // (undefined is not the same as "property not present")
461
+ if (behaviorPathToVerify !== undefined) {
462
+ patternsToVerify.push({ pattern: validation.data, behaviorPathToVerify });
463
+ }
464
+ else {
465
+ patternsToVerify.push({ pattern: validation.data });
466
+ }
467
+ }
468
+ // Second pass: Batch async verification of all behavior file paths
469
+ const verificationPromises = patternsToVerify.map(async ({ pattern, behaviorPathToVerify }) => {
470
+ if (behaviorPathToVerify) {
471
+ const exists = await fileExistsAsync(behaviorPathToVerify);
472
+ // Return pattern with behaviorFileVerified set
473
+ return { ...pattern, behaviorFileVerified: exists };
474
+ }
475
+ return pattern;
476
+ });
477
+ const patterns = await Promise.all(verificationPromises);
478
+ return { patterns, errors };
479
+ }
480
+ // NOTE: extractAdrContent() was removed as part of Issue #99.
481
+ // ADR content (context, decision, consequences) is now derived from
482
+ // Gherkin Rule: keywords instead of parsed markdown in feature descriptions.
483
+ // Rules prefixed with "Context -", "Decision -", "Consequences -" are
484
+ // semantically detected and rendered by the ADR codec.
485
+ /**
486
+ * Compute children arrays from parent references
487
+ *
488
+ * Post-processing step that populates the `children` field on each pattern
489
+ * by finding all patterns that reference it via their `parent` field.
490
+ *
491
+ * This enables bidirectional hierarchy navigation:
492
+ * - Child → Parent: via `parent` field (explicit in feature file)
493
+ * - Parent → Children: via `children` field (computed here)
494
+ *
495
+ * **Performance Note:** This function does NOT re-validate patterns through
496
+ * the schema because:
497
+ * 1. Input patterns have already been validated by extractPatternsFromGherkin()
498
+ * 2. We're only adding a `children: string[]` field which matches the schema
499
+ * 3. Re-validation of the complex ExtractedPatternSchema is expensive (~320 lines)
500
+ *
501
+ * This invariant is safe because:
502
+ * - The children array is derived from validated pattern names
503
+ * - ExtractedPatternSchema.children is defined as `z.array(z.string()).readonly().optional()`
504
+ *
505
+ * @param patterns - Array of validated ExtractedPattern objects
506
+ * @returns New array with `children` populated (does not mutate input)
507
+ *
508
+ * @example
509
+ * ```typescript
510
+ * const rawPatterns = extractPatternsFromGherkin(files, config);
511
+ * const patternsWithHierarchy = computeHierarchyChildren(rawPatterns);
512
+ *
513
+ * // Now epic patterns have children arrays
514
+ * const epic = patternsWithHierarchy.find(p => p.level === 'epic');
515
+ * console.log(epic.children); // ["PhaseA", "PhaseB"]
516
+ * ```
517
+ */
518
+ export function computeHierarchyChildren(patterns) {
519
+ // Build a map: parent name → child names
520
+ const parentToChildren = new Map();
521
+ for (const pattern of patterns) {
522
+ if (pattern.parent) {
523
+ const children = parentToChildren.get(pattern.parent) ?? [];
524
+ // Use patternName if available, otherwise fall back to name
525
+ const childName = getPatternName(pattern);
526
+ children.push(childName);
527
+ parentToChildren.set(pattern.parent, children);
528
+ }
529
+ }
530
+ // Apply children arrays to patterns
531
+ // No re-validation needed - input is already validated and we're only adding children: string[]
532
+ return patterns.map((pattern) => {
533
+ const patternName = getPatternName(pattern);
534
+ const children = parentToChildren.get(patternName);
535
+ if (children && children.length > 0) {
536
+ // Type-safe spread: pattern is validated ExtractedPattern, children is string[]
537
+ // This matches ExtractedPatternSchema.children: z.array(z.string()).readonly().optional()
538
+ return { ...pattern, children };
539
+ }
540
+ return pattern;
541
+ });
542
+ }
543
+ //# sourceMappingURL=gherkin-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gherkin-extractor.js","sourceRoot":"","sources":["../../src/extractor/gherkin-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { extractPatterns, buildPattern, inferPatternName, inferCategory, hasAggregationTag, getAggregationTags, type ExtractionResults, type AggregationTags, } from './doc-extractor.js';
2
+ export { extractProcessMetadata, extractDeliverables, combineSources, validateDualSource, type ProcessMetadata, type Deliverable, type DualSourcePattern, type CrossValidationError, type DualSourceResults, type ValidationSummary, } from './dual-source-extractor.js';
3
+ export { inferFeatureLayer, FEATURE_LAYERS, type FeatureLayer } from './layer-inference.js';
4
+ export { extractPatternsFromGherkin, extractPatternsFromGherkinAsync, computeHierarchyChildren, type GherkinExtractorConfig, type GherkinExtractionResult, } from './gherkin-extractor.js';
5
+ export { extractShapes, processExtractShapesTag, type ProcessExtractShapesResult, } from './shape-extractor.js';
6
+ export { renderShapesAsMarkdown } from '../renderable/codecs/helpers.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extractor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG5F,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,KAAK,0BAA0B,GAChC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { extractPatterns, buildPattern, inferPatternName, inferCategory, hasAggregationTag, getAggregationTags, } from './doc-extractor.js';
2
+ // Dual-Source Extraction (USDP)
3
+ export { extractProcessMetadata, extractDeliverables, combineSources, validateDualSource, } from './dual-source-extractor.js';
4
+ // Layer Inference
5
+ export { inferFeatureLayer, FEATURE_LAYERS } from './layer-inference.js';
6
+ // Gherkin Extraction (Feature File → Pattern)
7
+ export { extractPatternsFromGherkin, extractPatternsFromGherkinAsync, computeHierarchyChildren, } from './gherkin-extractor.js';
8
+ // Shape Extraction (ADR-021: Documentation Generation)
9
+ export { extractShapes, processExtractShapesTag, } from './shape-extractor.js';
10
+ export { renderShapesAsMarkdown } from '../renderable/codecs/helpers.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extractor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC;AAE5B,gCAAgC;AAChC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,GAOnB,MAAM,4BAA4B,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAqB,MAAM,sBAAsB,CAAC;AAE5F,8CAA8C;AAC9C,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,wBAAwB,GAGzB,MAAM,wBAAwB,CAAC;AAEhC,uDAAuD;AACvD,OAAO,EACL,aAAa,EACb,uBAAuB,GAExB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @architect
3
+ * @architect-extractor
4
+ * @architect-pattern LayerInference
5
+ * @architect-status completed
6
+ * @architect-used-by GherkinExtractor
7
+ *
8
+ * ## LayerInference - Directory-Based Feature Classification
9
+ *
10
+ * Infers feature file layer (timeline, domain, integration, e2e, component)
11
+ * from directory path patterns. Enables filtering without explicit annotations.
12
+ *
13
+ * ### When to Use
14
+ *
15
+ * - When filtering scenarios by testing layer
16
+ * - When generating layer-specific documentation
17
+ * - When calculating test coverage by layer
18
+ */
19
+ /**
20
+ * Feature layer classification based on directory structure
21
+ *
22
+ * @remarks
23
+ * Layers represent different testing contexts and documentation purposes:
24
+ * - `timeline`: Process documentation features (roadmap, milestones)
25
+ * - `domain`: Pure domain logic tests (deciders, command handlers)
26
+ * - `integration`: Full-stack integration tests with real backend
27
+ * - `e2e`: Browser-based end-to-end user journey tests
28
+ * - `component`: Tooling/infrastructure component tests
29
+ * - `unknown`: Unclassified features (fallback)
30
+ */
31
+ export type FeatureLayer = 'timeline' | 'domain' | 'integration' | 'e2e' | 'component' | 'unknown';
32
+ /**
33
+ * All valid feature layers as a readonly array
34
+ *
35
+ * @remarks
36
+ * Useful for validation and schema definitions
37
+ */
38
+ export declare const FEATURE_LAYERS: readonly FeatureLayer[];
39
+ /**
40
+ * Infer feature layer from file path
41
+ *
42
+ * Uses directory structure patterns to classify feature files:
43
+ * - `/timeline/` → timeline (process documentation)
44
+ * - `/deciders/` → domain (pure domain logic)
45
+ * - `/orders/`, `/inventory/` (not integration) → domain
46
+ * - `/integration-features/`, `/integration/` → integration
47
+ * - `/e2e/` → e2e (browser-based tests)
48
+ * - `/scanner/`, `/lint/` → component (tooling tests)
49
+ *
50
+ * @param filePath - Absolute or relative path to feature file
51
+ * @returns Inferred layer based on directory patterns
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * inferFeatureLayer('tests/features/timeline/phase-01.feature');
56
+ * // Returns: 'timeline'
57
+ *
58
+ * inferFeatureLayer('tests/features/deciders/order.decider.feature');
59
+ * // Returns: 'domain'
60
+ *
61
+ * inferFeatureLayer('tests/integration-features/orders/flow.feature');
62
+ * // Returns: 'integration'
63
+ * ```
64
+ */
65
+ export declare function inferFeatureLayer(filePath: string): FeatureLayer;
66
+ //# sourceMappingURL=layer-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer-inference.d.ts","sourceRoot":"","sources":["../../src/extractor/layer-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,KAAK,GAAG,WAAW,GAAG,SAAS,CAAC;AAEnG;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAOxC,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CA0ChE"}