@libar-dev/architect 1.0.0-pre.3 → 1.0.0-pre.5

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 (760) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +5 -5
  3. package/dist/api/arch-queries.d.ts.map +1 -1
  4. package/dist/api/context-assembler.d.ts.map +1 -1
  5. package/dist/api/handoff-generator.d.ts.map +1 -1
  6. package/dist/api/index.d.ts +8 -8
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/index.js +7 -7
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/api/{process-state.d.ts → pattern-graph-api.d.ts} +15 -15
  11. package/dist/api/pattern-graph-api.d.ts.map +1 -0
  12. package/dist/api/{process-state.js → pattern-graph-api.js} +13 -13
  13. package/dist/api/pattern-graph-api.js.map +1 -0
  14. package/dist/api/rules-query.d.ts +6 -6
  15. package/dist/api/rules-query.d.ts.map +1 -1
  16. package/dist/api/rules-query.js +4 -4
  17. package/dist/api/rules-query.js.map +1 -1
  18. package/dist/api/scope-validator.d.ts.map +1 -1
  19. package/dist/api/types.d.ts +8 -8
  20. package/dist/api/types.d.ts.map +1 -1
  21. package/dist/api/types.js +5 -5
  22. package/dist/cli/cli-schema.d.ts +3 -4
  23. package/dist/cli/cli-schema.d.ts.map +1 -1
  24. package/dist/cli/cli-schema.js +13 -14
  25. package/dist/cli/cli-schema.js.map +1 -1
  26. package/dist/cli/output-pipeline.d.ts.map +1 -1
  27. package/dist/cli/pattern-graph-cli.d.ts.map +1 -0
  28. package/dist/cli/validate-patterns.d.ts.map +1 -1
  29. package/dist/generators/built-in/cli-recipe-generator.d.ts +3 -4
  30. package/dist/generators/built-in/cli-recipe-generator.d.ts.map +1 -1
  31. package/dist/generators/built-in/cli-recipe-generator.js +6 -7
  32. package/dist/generators/built-in/cli-recipe-generator.js.map +1 -1
  33. package/dist/generators/built-in/cli-reference-generator.d.ts +18 -0
  34. package/dist/generators/built-in/cli-reference-generator.d.ts.map +1 -0
  35. package/dist/generators/built-in/{process-api-reference-generator.js → cli-reference-generator.js} +13 -13
  36. package/dist/generators/built-in/cli-reference-generator.js.map +1 -0
  37. package/dist/generators/built-in/codec-generators.js +12 -12
  38. package/dist/generators/built-in/codec-generators.js.map +1 -1
  39. package/dist/generators/built-in/design-review-generator.d.ts.map +1 -1
  40. package/dist/generators/built-in/reference-generators.d.ts.map +1 -1
  41. package/dist/generators/codec-based.d.ts.map +1 -1
  42. package/dist/generators/index.d.ts.map +1 -1
  43. package/dist/generators/orchestrator.d.ts.map +1 -1
  44. package/dist/generators/pipeline/build-pipeline.d.ts +17 -14
  45. package/dist/generators/pipeline/build-pipeline.d.ts.map +1 -1
  46. package/dist/generators/pipeline/build-pipeline.js +27 -21
  47. package/dist/generators/pipeline/build-pipeline.js.map +1 -1
  48. package/dist/generators/pipeline/index.d.ts.map +1 -1
  49. package/dist/generators/types.d.ts.map +1 -1
  50. package/dist/mcp/pipeline-session.d.ts.map +1 -1
  51. package/dist/renderable/codecs/index-codec.d.ts.map +1 -1
  52. package/dist/renderable/codecs/index-codec.js +54 -28
  53. package/dist/renderable/codecs/index-codec.js.map +1 -1
  54. package/docs/ANNOTATION-GUIDE.md +5 -5
  55. package/docs/ARCHITECTURE.md +79 -79
  56. package/docs/{PROCESS-API.md → CLI.md} +6 -6
  57. package/docs/CONFIGURATION.md +2 -2
  58. package/docs/DOCS-GAP-ANALYSIS.md +65 -65
  59. package/docs/INDEX.md +34 -34
  60. package/docs/MCP-SETUP.md +3 -3
  61. package/docs/METHODOLOGY.md +1 -1
  62. package/docs/SESSION-GUIDES.md +3 -3
  63. package/docs/VALIDATION.md +4 -4
  64. package/docs-live/ARCHITECTURE.md +48 -42
  65. package/docs-live/BUSINESS-RULES.md +3 -3
  66. package/docs-live/CHANGELOG-GENERATED.md +109 -103
  67. package/docs-live/INDEX.md +21 -21
  68. package/docs-live/PRODUCT-AREAS.md +7 -7
  69. package/docs-live/TAXONOMY.md +3 -5
  70. package/docs-live/_claude-md/annotation/annotation-overview.md +1 -1
  71. package/docs-live/_claude-md/annotation/annotation-reference.md +5 -5
  72. package/docs-live/_claude-md/architecture/architecture-types.md +4 -4
  73. package/docs-live/_claude-md/architecture/reference-sample.md +2 -2
  74. package/docs-live/_claude-md/data-api/data-api-overview.md +2 -2
  75. package/docs-live/_claude-md/generation/generation-overview.md +15 -15
  76. package/docs-live/_claude-md/process/process-overview.md +1 -1
  77. package/docs-live/_claude-md/validation/validation-overview.md +1 -1
  78. package/docs-live/business-rules/annotation.md +1 -2
  79. package/docs-live/business-rules/configuration.md +1 -1
  80. package/docs-live/business-rules/data-api.md +149 -136
  81. package/docs-live/business-rules/generation.md +172 -20
  82. package/docs-live/decisions/adr-003-source-first-pattern-architecture.md +1 -1
  83. package/docs-live/decisions/adr-005-codec-based-markdown-rendering.md +5 -5
  84. package/docs-live/decisions/adr-006-single-read-model-architecture.md +24 -24
  85. package/docs-live/product-areas/ANNOTATION.md +19 -9
  86. package/docs-live/product-areas/CONFIGURATION.md +39 -19
  87. package/docs-live/product-areas/DATA-API.md +155 -151
  88. package/docs-live/product-areas/GENERATION.md +159 -144
  89. package/docs-live/product-areas/PROCESS.md +4 -4
  90. package/docs-live/product-areas/VALIDATION.md +35 -20
  91. package/docs-live/reference/ANNOTATION-REFERENCE.md +5 -5
  92. package/docs-live/reference/ARCHITECTURE-CODECS.md +11 -11
  93. package/docs-live/reference/ARCHITECTURE-TYPES.md +28 -25
  94. package/docs-live/reference/{PROCESS-API-RECIPES.md → CLI-RECIPES.md} +11 -11
  95. package/docs-live/reference/{PROCESS-API-REFERENCE.md → CLI-REFERENCE.md} +2 -2
  96. package/docs-live/reference/REFERENCE-SAMPLE.md +56 -56
  97. package/docs-live/reference/SESSION-WORKFLOW-GUIDE.md +3 -3
  98. package/docs-live/taxonomy/format-types.md +2 -2
  99. package/docs-live/taxonomy/metadata-tags.md +1 -23
  100. package/package.json +7 -7
  101. package/dist/api/arch-queries.d.ts +0 -95
  102. package/dist/api/arch-queries.js +0 -310
  103. package/dist/api/arch-queries.js.map +0 -1
  104. package/dist/api/context-assembler.d.ts +0 -124
  105. package/dist/api/context-assembler.js +0 -472
  106. package/dist/api/context-assembler.js.map +0 -1
  107. package/dist/api/context-formatter.d.ts +0 -26
  108. package/dist/api/context-formatter.js +0 -183
  109. package/dist/api/context-formatter.js.map +0 -1
  110. package/dist/api/coverage-analyzer.d.ts +0 -38
  111. package/dist/api/coverage-analyzer.d.ts.map +0 -1
  112. package/dist/api/coverage-analyzer.js +0 -117
  113. package/dist/api/coverage-analyzer.js.map +0 -1
  114. package/dist/api/fuzzy-match.d.ts +0 -75
  115. package/dist/api/fuzzy-match.d.ts.map +0 -1
  116. package/dist/api/fuzzy-match.js +0 -150
  117. package/dist/api/fuzzy-match.js.map +0 -1
  118. package/dist/api/handoff-generator.d.ts +0 -45
  119. package/dist/api/handoff-generator.js +0 -139
  120. package/dist/api/handoff-generator.js.map +0 -1
  121. package/dist/api/pattern-helpers.d.ts +0 -51
  122. package/dist/api/pattern-helpers.d.ts.map +0 -1
  123. package/dist/api/pattern-helpers.js +0 -84
  124. package/dist/api/pattern-helpers.js.map +0 -1
  125. package/dist/api/process-state.d.ts.map +0 -1
  126. package/dist/api/process-state.js.map +0 -1
  127. package/dist/api/scope-validator.d.ts +0 -56
  128. package/dist/api/scope-validator.js +0 -293
  129. package/dist/api/scope-validator.js.map +0 -1
  130. package/dist/api/stub-resolver.d.ts +0 -117
  131. package/dist/api/stub-resolver.d.ts.map +0 -1
  132. package/dist/api/stub-resolver.js +0 -154
  133. package/dist/api/stub-resolver.js.map +0 -1
  134. package/dist/api/summarize.d.ts +0 -75
  135. package/dist/api/summarize.d.ts.map +0 -1
  136. package/dist/api/summarize.js +0 -97
  137. package/dist/api/summarize.js.map +0 -1
  138. package/dist/cache/file-cache.d.ts +0 -72
  139. package/dist/cache/file-cache.d.ts.map +0 -1
  140. package/dist/cache/file-cache.js +0 -80
  141. package/dist/cache/file-cache.js.map +0 -1
  142. package/dist/cache/index.d.ts +0 -5
  143. package/dist/cache/index.d.ts.map +0 -1
  144. package/dist/cache/index.js +0 -5
  145. package/dist/cache/index.js.map +0 -1
  146. package/dist/cli/dataset-cache.d.ts +0 -66
  147. package/dist/cli/dataset-cache.js +0 -179
  148. package/dist/cli/dataset-cache.js.map +0 -1
  149. package/dist/cli/error-handler.d.ts +0 -84
  150. package/dist/cli/error-handler.d.ts.map +0 -1
  151. package/dist/cli/error-handler.js +0 -197
  152. package/dist/cli/error-handler.js.map +0 -1
  153. package/dist/cli/generate-docs.d.ts +0 -30
  154. package/dist/cli/generate-docs.js +0 -370
  155. package/dist/cli/generate-docs.js.map +0 -1
  156. package/dist/cli/lint-patterns.d.ts +0 -57
  157. package/dist/cli/lint-patterns.d.ts.map +0 -1
  158. package/dist/cli/lint-patterns.js +0 -257
  159. package/dist/cli/lint-patterns.js.map +0 -1
  160. package/dist/cli/lint-process.d.ts +0 -54
  161. package/dist/cli/lint-process.d.ts.map +0 -1
  162. package/dist/cli/lint-process.js +0 -319
  163. package/dist/cli/lint-process.js.map +0 -1
  164. package/dist/cli/lint-steps.d.ts +0 -32
  165. package/dist/cli/lint-steps.d.ts.map +0 -1
  166. package/dist/cli/lint-steps.js +0 -172
  167. package/dist/cli/lint-steps.js.map +0 -1
  168. package/dist/cli/mcp-server.d.ts +0 -22
  169. package/dist/cli/mcp-server.js +0 -57
  170. package/dist/cli/mcp-server.js.map +0 -1
  171. package/dist/cli/output-pipeline.d.ts +0 -130
  172. package/dist/cli/output-pipeline.js +0 -234
  173. package/dist/cli/output-pipeline.js.map +0 -1
  174. package/dist/cli/process-api.d.ts +0 -37
  175. package/dist/cli/process-api.d.ts.map +0 -1
  176. package/dist/cli/process-api.js +0 -1550
  177. package/dist/cli/process-api.js.map +0 -1
  178. package/dist/cli/repl.d.ts +0 -38
  179. package/dist/cli/repl.js +0 -239
  180. package/dist/cli/repl.js.map +0 -1
  181. package/dist/cli/validate-patterns.d.ts +0 -115
  182. package/dist/cli/validate-patterns.js +0 -707
  183. package/dist/cli/validate-patterns.js.map +0 -1
  184. package/dist/cli/version.d.ts +0 -35
  185. package/dist/cli/version.d.ts.map +0 -1
  186. package/dist/cli/version.js +0 -64
  187. package/dist/cli/version.js.map +0 -1
  188. package/dist/config/config-loader.d.ts +0 -167
  189. package/dist/config/config-loader.d.ts.map +0 -1
  190. package/dist/config/config-loader.js +0 -294
  191. package/dist/config/config-loader.js.map +0 -1
  192. package/dist/config/defaults.d.ts +0 -92
  193. package/dist/config/defaults.d.ts.map +0 -1
  194. package/dist/config/defaults.js +0 -103
  195. package/dist/config/defaults.js.map +0 -1
  196. package/dist/config/define-config.d.ts +0 -37
  197. package/dist/config/define-config.d.ts.map +0 -1
  198. package/dist/config/define-config.js +0 -38
  199. package/dist/config/define-config.js.map +0 -1
  200. package/dist/config/factory.d.ts +0 -79
  201. package/dist/config/factory.d.ts.map +0 -1
  202. package/dist/config/factory.js +0 -116
  203. package/dist/config/factory.js.map +0 -1
  204. package/dist/config/index.d.ts +0 -45
  205. package/dist/config/index.d.ts.map +0 -1
  206. package/dist/config/index.js +0 -48
  207. package/dist/config/index.js.map +0 -1
  208. package/dist/config/merge-sources.d.ts +0 -47
  209. package/dist/config/merge-sources.d.ts.map +0 -1
  210. package/dist/config/merge-sources.js +0 -61
  211. package/dist/config/merge-sources.js.map +0 -1
  212. package/dist/config/presets.d.ts +0 -115
  213. package/dist/config/presets.d.ts.map +0 -1
  214. package/dist/config/presets.js +0 -119
  215. package/dist/config/presets.js.map +0 -1
  216. package/dist/config/project-config-schema.d.ts +0 -192
  217. package/dist/config/project-config-schema.d.ts.map +0 -1
  218. package/dist/config/project-config-schema.js +0 -231
  219. package/dist/config/project-config-schema.js.map +0 -1
  220. package/dist/config/project-config.d.ts +0 -229
  221. package/dist/config/project-config.d.ts.map +0 -1
  222. package/dist/config/project-config.js +0 -37
  223. package/dist/config/project-config.js.map +0 -1
  224. package/dist/config/regex-builders.d.ts +0 -49
  225. package/dist/config/regex-builders.d.ts.map +0 -1
  226. package/dist/config/regex-builders.js +0 -85
  227. package/dist/config/regex-builders.js.map +0 -1
  228. package/dist/config/resolve-config.d.ts +0 -65
  229. package/dist/config/resolve-config.d.ts.map +0 -1
  230. package/dist/config/resolve-config.js +0 -150
  231. package/dist/config/resolve-config.js.map +0 -1
  232. package/dist/config/types.d.ts +0 -81
  233. package/dist/config/types.d.ts.map +0 -1
  234. package/dist/config/types.js +0 -22
  235. package/dist/config/types.js.map +0 -1
  236. package/dist/config/workflow-loader.d.ts +0 -90
  237. package/dist/config/workflow-loader.d.ts.map +0 -1
  238. package/dist/config/workflow-loader.js +0 -167
  239. package/dist/config/workflow-loader.js.map +0 -1
  240. package/dist/extractor/doc-extractor.d.ts +0 -233
  241. package/dist/extractor/doc-extractor.d.ts.map +0 -1
  242. package/dist/extractor/doc-extractor.js +0 -481
  243. package/dist/extractor/doc-extractor.js.map +0 -1
  244. package/dist/extractor/dual-source-extractor.d.ts +0 -161
  245. package/dist/extractor/dual-source-extractor.d.ts.map +0 -1
  246. package/dist/extractor/dual-source-extractor.js +0 -407
  247. package/dist/extractor/dual-source-extractor.js.map +0 -1
  248. package/dist/extractor/gherkin-extractor.d.ts +0 -170
  249. package/dist/extractor/gherkin-extractor.d.ts.map +0 -1
  250. package/dist/extractor/gherkin-extractor.js +0 -543
  251. package/dist/extractor/gherkin-extractor.js.map +0 -1
  252. package/dist/extractor/index.d.ts +0 -7
  253. package/dist/extractor/index.d.ts.map +0 -1
  254. package/dist/extractor/index.js +0 -11
  255. package/dist/extractor/index.js.map +0 -1
  256. package/dist/extractor/layer-inference.d.ts +0 -66
  257. package/dist/extractor/layer-inference.d.ts.map +0 -1
  258. package/dist/extractor/layer-inference.js +0 -93
  259. package/dist/extractor/layer-inference.js.map +0 -1
  260. package/dist/extractor/shape-extractor.d.ts +0 -79
  261. package/dist/extractor/shape-extractor.d.ts.map +0 -1
  262. package/dist/extractor/shape-extractor.js +0 -966
  263. package/dist/extractor/shape-extractor.js.map +0 -1
  264. package/dist/generators/built-in/codec-generators.d.ts +0 -29
  265. package/dist/generators/built-in/decision-doc-generator.d.ts +0 -204
  266. package/dist/generators/built-in/decision-doc-generator.js +0 -654
  267. package/dist/generators/built-in/decision-doc-generator.js.map +0 -1
  268. package/dist/generators/built-in/design-review-generator.d.ts +0 -26
  269. package/dist/generators/built-in/design-review-generator.js +0 -94
  270. package/dist/generators/built-in/design-review-generator.js.map +0 -1
  271. package/dist/generators/built-in/index.d.ts +0 -22
  272. package/dist/generators/built-in/index.js +0 -23
  273. package/dist/generators/built-in/index.js.map +0 -1
  274. package/dist/generators/built-in/process-api-reference-generator.d.ts +0 -18
  275. package/dist/generators/built-in/process-api-reference-generator.d.ts.map +0 -1
  276. package/dist/generators/built-in/process-api-reference-generator.js.map +0 -1
  277. package/dist/generators/built-in/reference-generators.d.ts +0 -51
  278. package/dist/generators/built-in/reference-generators.js +0 -320
  279. package/dist/generators/built-in/reference-generators.js.map +0 -1
  280. package/dist/generators/codec-based.d.ts +0 -63
  281. package/dist/generators/codec-based.js +0 -88
  282. package/dist/generators/codec-based.js.map +0 -1
  283. package/dist/generators/content-deduplicator.d.ts +0 -114
  284. package/dist/generators/content-deduplicator.d.ts.map +0 -1
  285. package/dist/generators/content-deduplicator.js +0 -356
  286. package/dist/generators/content-deduplicator.js.map +0 -1
  287. package/dist/generators/index.d.ts +0 -50
  288. package/dist/generators/index.js +0 -54
  289. package/dist/generators/index.js.map +0 -1
  290. package/dist/generators/orchestrator.d.ts +0 -265
  291. package/dist/generators/orchestrator.js +0 -570
  292. package/dist/generators/orchestrator.js.map +0 -1
  293. package/dist/generators/pipeline/context-inference.d.ts +0 -55
  294. package/dist/generators/pipeline/context-inference.d.ts.map +0 -1
  295. package/dist/generators/pipeline/context-inference.js +0 -76
  296. package/dist/generators/pipeline/context-inference.js.map +0 -1
  297. package/dist/generators/pipeline/index.d.ts +0 -27
  298. package/dist/generators/pipeline/index.js +0 -34
  299. package/dist/generators/pipeline/index.js.map +0 -1
  300. package/dist/generators/pipeline/merge-patterns.d.ts +0 -33
  301. package/dist/generators/pipeline/merge-patterns.d.ts.map +0 -1
  302. package/dist/generators/pipeline/merge-patterns.js +0 -50
  303. package/dist/generators/pipeline/merge-patterns.js.map +0 -1
  304. package/dist/generators/pipeline/relationship-resolver.d.ts +0 -47
  305. package/dist/generators/pipeline/relationship-resolver.d.ts.map +0 -1
  306. package/dist/generators/pipeline/relationship-resolver.js +0 -132
  307. package/dist/generators/pipeline/relationship-resolver.js.map +0 -1
  308. package/dist/generators/pipeline/sequence-utils.d.ts +0 -49
  309. package/dist/generators/pipeline/sequence-utils.d.ts.map +0 -1
  310. package/dist/generators/pipeline/sequence-utils.js +0 -235
  311. package/dist/generators/pipeline/sequence-utils.js.map +0 -1
  312. package/dist/generators/pipeline/transform-dataset.d.ts +0 -82
  313. package/dist/generators/pipeline/transform-dataset.d.ts.map +0 -1
  314. package/dist/generators/pipeline/transform-dataset.js +0 -355
  315. package/dist/generators/pipeline/transform-dataset.js.map +0 -1
  316. package/dist/generators/pipeline/transform-types.d.ts +0 -96
  317. package/dist/generators/pipeline/transform-types.d.ts.map +0 -1
  318. package/dist/generators/pipeline/transform-types.js +0 -18
  319. package/dist/generators/pipeline/transform-types.js.map +0 -1
  320. package/dist/generators/registry.d.ts +0 -64
  321. package/dist/generators/registry.js +0 -77
  322. package/dist/generators/registry.js.map +0 -1
  323. package/dist/generators/source-mapper.d.ts +0 -143
  324. package/dist/generators/source-mapper.d.ts.map +0 -1
  325. package/dist/generators/source-mapper.js +0 -602
  326. package/dist/generators/source-mapper.js.map +0 -1
  327. package/dist/generators/source-mapping-validator.d.ts +0 -118
  328. package/dist/generators/source-mapping-validator.d.ts.map +0 -1
  329. package/dist/generators/source-mapping-validator.js +0 -334
  330. package/dist/generators/source-mapping-validator.js.map +0 -1
  331. package/dist/generators/types.d.ts +0 -104
  332. package/dist/generators/types.js +0 -5
  333. package/dist/generators/types.js.map +0 -1
  334. package/dist/generators/warning-collector.d.ts +0 -144
  335. package/dist/generators/warning-collector.d.ts.map +0 -1
  336. package/dist/generators/warning-collector.js +0 -166
  337. package/dist/generators/warning-collector.js.map +0 -1
  338. package/dist/git/branch-diff.d.ts +0 -44
  339. package/dist/git/branch-diff.d.ts.map +0 -1
  340. package/dist/git/branch-diff.js +0 -57
  341. package/dist/git/branch-diff.js.map +0 -1
  342. package/dist/git/helpers.d.ts +0 -46
  343. package/dist/git/helpers.d.ts.map +0 -1
  344. package/dist/git/helpers.js +0 -67
  345. package/dist/git/helpers.js.map +0 -1
  346. package/dist/git/index.d.ts +0 -18
  347. package/dist/git/index.d.ts.map +0 -1
  348. package/dist/git/index.js +0 -18
  349. package/dist/git/index.js.map +0 -1
  350. package/dist/git/name-status.d.ts +0 -32
  351. package/dist/git/name-status.d.ts.map +0 -1
  352. package/dist/git/name-status.js +0 -66
  353. package/dist/git/name-status.js.map +0 -1
  354. package/dist/index.d.ts +0 -107
  355. package/dist/index.js +0 -122
  356. package/dist/index.js.map +0 -1
  357. package/dist/lint/engine.d.ts +0 -113
  358. package/dist/lint/engine.d.ts.map +0 -1
  359. package/dist/lint/engine.js +0 -228
  360. package/dist/lint/engine.js.map +0 -1
  361. package/dist/lint/index.d.ts +0 -26
  362. package/dist/lint/index.d.ts.map +0 -1
  363. package/dist/lint/index.js +0 -24
  364. package/dist/lint/index.js.map +0 -1
  365. package/dist/lint/process-guard/decider.d.ts +0 -166
  366. package/dist/lint/process-guard/decider.d.ts.map +0 -1
  367. package/dist/lint/process-guard/decider.js +0 -412
  368. package/dist/lint/process-guard/decider.js.map +0 -1
  369. package/dist/lint/process-guard/derive-state.d.ts +0 -96
  370. package/dist/lint/process-guard/derive-state.d.ts.map +0 -1
  371. package/dist/lint/process-guard/derive-state.js +0 -368
  372. package/dist/lint/process-guard/derive-state.js.map +0 -1
  373. package/dist/lint/process-guard/detect-changes.d.ts +0 -109
  374. package/dist/lint/process-guard/detect-changes.d.ts.map +0 -1
  375. package/dist/lint/process-guard/detect-changes.js +0 -487
  376. package/dist/lint/process-guard/detect-changes.js.map +0 -1
  377. package/dist/lint/process-guard/index.d.ts +0 -35
  378. package/dist/lint/process-guard/index.d.ts.map +0 -1
  379. package/dist/lint/process-guard/index.js +0 -39
  380. package/dist/lint/process-guard/index.js.map +0 -1
  381. package/dist/lint/process-guard/types.d.ts +0 -255
  382. package/dist/lint/process-guard/types.d.ts.map +0 -1
  383. package/dist/lint/process-guard/types.js +0 -31
  384. package/dist/lint/process-guard/types.js.map +0 -1
  385. package/dist/lint/rules.d.ts +0 -147
  386. package/dist/lint/rules.d.ts.map +0 -1
  387. package/dist/lint/rules.js +0 -289
  388. package/dist/lint/rules.js.map +0 -1
  389. package/dist/lint/steps/cross-checks.d.ts +0 -66
  390. package/dist/lint/steps/cross-checks.d.ts.map +0 -1
  391. package/dist/lint/steps/cross-checks.js +0 -290
  392. package/dist/lint/steps/cross-checks.js.map +0 -1
  393. package/dist/lint/steps/feature-checks.d.ts +0 -78
  394. package/dist/lint/steps/feature-checks.d.ts.map +0 -1
  395. package/dist/lint/steps/feature-checks.js +0 -279
  396. package/dist/lint/steps/feature-checks.js.map +0 -1
  397. package/dist/lint/steps/index.d.ts +0 -22
  398. package/dist/lint/steps/index.d.ts.map +0 -1
  399. package/dist/lint/steps/index.js +0 -26
  400. package/dist/lint/steps/index.js.map +0 -1
  401. package/dist/lint/steps/pair-resolver.d.ts +0 -29
  402. package/dist/lint/steps/pair-resolver.d.ts.map +0 -1
  403. package/dist/lint/steps/pair-resolver.js +0 -76
  404. package/dist/lint/steps/pair-resolver.js.map +0 -1
  405. package/dist/lint/steps/runner.d.ts +0 -28
  406. package/dist/lint/steps/runner.d.ts.map +0 -1
  407. package/dist/lint/steps/runner.js +0 -143
  408. package/dist/lint/steps/runner.js.map +0 -1
  409. package/dist/lint/steps/step-checks.d.ts +0 -41
  410. package/dist/lint/steps/step-checks.d.ts.map +0 -1
  411. package/dist/lint/steps/step-checks.js +0 -164
  412. package/dist/lint/steps/step-checks.js.map +0 -1
  413. package/dist/lint/steps/types.d.ts +0 -95
  414. package/dist/lint/steps/types.d.ts.map +0 -1
  415. package/dist/lint/steps/types.js +0 -79
  416. package/dist/lint/steps/types.js.map +0 -1
  417. package/dist/lint/steps/utils.d.ts +0 -22
  418. package/dist/lint/steps/utils.d.ts.map +0 -1
  419. package/dist/lint/steps/utils.js +0 -57
  420. package/dist/lint/steps/utils.js.map +0 -1
  421. package/dist/mcp/file-watcher.d.ts +0 -24
  422. package/dist/mcp/file-watcher.js +0 -75
  423. package/dist/mcp/file-watcher.js.map +0 -1
  424. package/dist/mcp/index.d.ts +0 -19
  425. package/dist/mcp/index.js +0 -21
  426. package/dist/mcp/index.js.map +0 -1
  427. package/dist/mcp/pipeline-session.d.ts +0 -33
  428. package/dist/mcp/pipeline-session.js +0 -149
  429. package/dist/mcp/pipeline-session.js.map +0 -1
  430. package/dist/mcp/server.d.ts +0 -28
  431. package/dist/mcp/server.js +0 -197
  432. package/dist/mcp/server.js.map +0 -1
  433. package/dist/mcp/tool-registry.d.ts +0 -4
  434. package/dist/mcp/tool-registry.js +0 -525
  435. package/dist/mcp/tool-registry.js.map +0 -1
  436. package/dist/renderable/codecs/adr.d.ts +0 -4730
  437. package/dist/renderable/codecs/adr.d.ts.map +0 -1
  438. package/dist/renderable/codecs/adr.js +0 -590
  439. package/dist/renderable/codecs/adr.js.map +0 -1
  440. package/dist/renderable/codecs/architecture.d.ts +0 -4760
  441. package/dist/renderable/codecs/architecture.d.ts.map +0 -1
  442. package/dist/renderable/codecs/architecture.js +0 -524
  443. package/dist/renderable/codecs/architecture.js.map +0 -1
  444. package/dist/renderable/codecs/business-rules.d.ts +0 -4777
  445. package/dist/renderable/codecs/business-rules.d.ts.map +0 -1
  446. package/dist/renderable/codecs/business-rules.js +0 -648
  447. package/dist/renderable/codecs/business-rules.js.map +0 -1
  448. package/dist/renderable/codecs/claude-module.d.ts +0 -4710
  449. package/dist/renderable/codecs/claude-module.d.ts.map +0 -1
  450. package/dist/renderable/codecs/claude-module.js +0 -214
  451. package/dist/renderable/codecs/claude-module.js.map +0 -1
  452. package/dist/renderable/codecs/composite.d.ts +0 -84
  453. package/dist/renderable/codecs/composite.d.ts.map +0 -1
  454. package/dist/renderable/codecs/composite.js +0 -124
  455. package/dist/renderable/codecs/composite.js.map +0 -1
  456. package/dist/renderable/codecs/convention-extractor.d.ts +0 -105
  457. package/dist/renderable/codecs/convention-extractor.d.ts.map +0 -1
  458. package/dist/renderable/codecs/convention-extractor.js +0 -353
  459. package/dist/renderable/codecs/convention-extractor.js.map +0 -1
  460. package/dist/renderable/codecs/decision-doc.d.ts +0 -308
  461. package/dist/renderable/codecs/decision-doc.d.ts.map +0 -1
  462. package/dist/renderable/codecs/decision-doc.js +0 -485
  463. package/dist/renderable/codecs/decision-doc.js.map +0 -1
  464. package/dist/renderable/codecs/design-review.d.ts +0 -55
  465. package/dist/renderable/codecs/design-review.d.ts.map +0 -1
  466. package/dist/renderable/codecs/design-review.js +0 -532
  467. package/dist/renderable/codecs/design-review.js.map +0 -1
  468. package/dist/renderable/codecs/diagram-utils.d.ts +0 -62
  469. package/dist/renderable/codecs/diagram-utils.d.ts.map +0 -1
  470. package/dist/renderable/codecs/diagram-utils.js +0 -70
  471. package/dist/renderable/codecs/diagram-utils.js.map +0 -1
  472. package/dist/renderable/codecs/helpers.d.ts +0 -553
  473. package/dist/renderable/codecs/helpers.d.ts.map +0 -1
  474. package/dist/renderable/codecs/helpers.js +0 -913
  475. package/dist/renderable/codecs/helpers.js.map +0 -1
  476. package/dist/renderable/codecs/index-codec.d.ts +0 -4714
  477. package/dist/renderable/codecs/index.d.ts +0 -46
  478. package/dist/renderable/codecs/index.d.ts.map +0 -1
  479. package/dist/renderable/codecs/index.js +0 -70
  480. package/dist/renderable/codecs/index.js.map +0 -1
  481. package/dist/renderable/codecs/patterns.d.ts +0 -4757
  482. package/dist/renderable/codecs/patterns.d.ts.map +0 -1
  483. package/dist/renderable/codecs/patterns.js +0 -462
  484. package/dist/renderable/codecs/patterns.js.map +0 -1
  485. package/dist/renderable/codecs/planning.d.ts +0 -14055
  486. package/dist/renderable/codecs/planning.d.ts.map +0 -1
  487. package/dist/renderable/codecs/planning.js +0 -449
  488. package/dist/renderable/codecs/planning.js.map +0 -1
  489. package/dist/renderable/codecs/pr-changes.d.ts +0 -4742
  490. package/dist/renderable/codecs/pr-changes.d.ts.map +0 -1
  491. package/dist/renderable/codecs/pr-changes.js +0 -425
  492. package/dist/renderable/codecs/pr-changes.js.map +0 -1
  493. package/dist/renderable/codecs/reference.d.ts +0 -215
  494. package/dist/renderable/codecs/reference.d.ts.map +0 -1
  495. package/dist/renderable/codecs/reference.js +0 -1578
  496. package/dist/renderable/codecs/reference.js.map +0 -1
  497. package/dist/renderable/codecs/reporting.d.ts +0 -14026
  498. package/dist/renderable/codecs/reporting.d.ts.map +0 -1
  499. package/dist/renderable/codecs/reporting.js +0 -365
  500. package/dist/renderable/codecs/reporting.js.map +0 -1
  501. package/dist/renderable/codecs/requirements.d.ts +0 -4743
  502. package/dist/renderable/codecs/requirements.d.ts.map +0 -1
  503. package/dist/renderable/codecs/requirements.js +0 -428
  504. package/dist/renderable/codecs/requirements.js.map +0 -1
  505. package/dist/renderable/codecs/session.d.ts +0 -9410
  506. package/dist/renderable/codecs/session.d.ts.map +0 -1
  507. package/dist/renderable/codecs/session.js +0 -848
  508. package/dist/renderable/codecs/session.js.map +0 -1
  509. package/dist/renderable/codecs/shape-matcher.d.ts +0 -54
  510. package/dist/renderable/codecs/shape-matcher.d.ts.map +0 -1
  511. package/dist/renderable/codecs/shape-matcher.js +0 -106
  512. package/dist/renderable/codecs/shape-matcher.js.map +0 -1
  513. package/dist/renderable/codecs/shared-schema.d.ts +0 -44
  514. package/dist/renderable/codecs/shared-schema.d.ts.map +0 -1
  515. package/dist/renderable/codecs/shared-schema.js +0 -43
  516. package/dist/renderable/codecs/shared-schema.js.map +0 -1
  517. package/dist/renderable/codecs/taxonomy.d.ts +0 -4733
  518. package/dist/renderable/codecs/taxonomy.d.ts.map +0 -1
  519. package/dist/renderable/codecs/taxonomy.js +0 -570
  520. package/dist/renderable/codecs/taxonomy.js.map +0 -1
  521. package/dist/renderable/codecs/timeline.d.ts +0 -14094
  522. package/dist/renderable/codecs/timeline.d.ts.map +0 -1
  523. package/dist/renderable/codecs/timeline.js +0 -906
  524. package/dist/renderable/codecs/timeline.js.map +0 -1
  525. package/dist/renderable/codecs/types/base.d.ts +0 -81
  526. package/dist/renderable/codecs/types/base.d.ts.map +0 -1
  527. package/dist/renderable/codecs/types/base.js +0 -56
  528. package/dist/renderable/codecs/types/base.js.map +0 -1
  529. package/dist/renderable/codecs/types/index.d.ts +0 -5
  530. package/dist/renderable/codecs/types/index.d.ts.map +0 -1
  531. package/dist/renderable/codecs/types/index.js +0 -5
  532. package/dist/renderable/codecs/types/index.js.map +0 -1
  533. package/dist/renderable/codecs/validation-rules.d.ts +0 -4773
  534. package/dist/renderable/codecs/validation-rules.d.ts.map +0 -1
  535. package/dist/renderable/codecs/validation-rules.js +0 -537
  536. package/dist/renderable/codecs/validation-rules.js.map +0 -1
  537. package/dist/renderable/generate.d.ts +0 -338
  538. package/dist/renderable/generate.d.ts.map +0 -1
  539. package/dist/renderable/generate.js +0 -437
  540. package/dist/renderable/generate.js.map +0 -1
  541. package/dist/renderable/index.d.ts +0 -36
  542. package/dist/renderable/index.d.ts.map +0 -1
  543. package/dist/renderable/index.js +0 -58
  544. package/dist/renderable/index.js.map +0 -1
  545. package/dist/renderable/load-preamble.d.ts +0 -56
  546. package/dist/renderable/load-preamble.d.ts.map +0 -1
  547. package/dist/renderable/load-preamble.js +0 -298
  548. package/dist/renderable/load-preamble.js.map +0 -1
  549. package/dist/renderable/render.d.ts +0 -61
  550. package/dist/renderable/render.d.ts.map +0 -1
  551. package/dist/renderable/render.js +0 -346
  552. package/dist/renderable/render.js.map +0 -1
  553. package/dist/renderable/schema.d.ts +0 -194
  554. package/dist/renderable/schema.d.ts.map +0 -1
  555. package/dist/renderable/schema.js +0 -197
  556. package/dist/renderable/schema.js.map +0 -1
  557. package/dist/renderable/utils.d.ts +0 -146
  558. package/dist/renderable/utils.d.ts.map +0 -1
  559. package/dist/renderable/utils.js +0 -362
  560. package/dist/renderable/utils.js.map +0 -1
  561. package/dist/scanner/ast-parser.d.ts +0 -75
  562. package/dist/scanner/ast-parser.d.ts.map +0 -1
  563. package/dist/scanner/ast-parser.js +0 -835
  564. package/dist/scanner/ast-parser.js.map +0 -1
  565. package/dist/scanner/gherkin-ast-parser.d.ts +0 -166
  566. package/dist/scanner/gherkin-ast-parser.d.ts.map +0 -1
  567. package/dist/scanner/gherkin-ast-parser.js +0 -507
  568. package/dist/scanner/gherkin-ast-parser.js.map +0 -1
  569. package/dist/scanner/gherkin-scanner.d.ts +0 -106
  570. package/dist/scanner/gherkin-scanner.d.ts.map +0 -1
  571. package/dist/scanner/gherkin-scanner.js +0 -149
  572. package/dist/scanner/gherkin-scanner.js.map +0 -1
  573. package/dist/scanner/index.d.ts +0 -85
  574. package/dist/scanner/index.d.ts.map +0 -1
  575. package/dist/scanner/index.js +0 -102
  576. package/dist/scanner/index.js.map +0 -1
  577. package/dist/scanner/pattern-scanner.d.ts +0 -83
  578. package/dist/scanner/pattern-scanner.d.ts.map +0 -1
  579. package/dist/scanner/pattern-scanner.js +0 -110
  580. package/dist/scanner/pattern-scanner.js.map +0 -1
  581. package/dist/taxonomy/categories.d.ts +0 -47
  582. package/dist/taxonomy/categories.d.ts.map +0 -1
  583. package/dist/taxonomy/categories.js +0 -175
  584. package/dist/taxonomy/categories.js.map +0 -1
  585. package/dist/taxonomy/claude-section-values.d.ts +0 -12
  586. package/dist/taxonomy/claude-section-values.d.ts.map +0 -1
  587. package/dist/taxonomy/claude-section-values.js +0 -17
  588. package/dist/taxonomy/claude-section-values.js.map +0 -1
  589. package/dist/taxonomy/conventions.d.ts +0 -13
  590. package/dist/taxonomy/conventions.d.ts.map +0 -1
  591. package/dist/taxonomy/conventions.js +0 -27
  592. package/dist/taxonomy/conventions.js.map +0 -1
  593. package/dist/taxonomy/deliverable-status.d.ts +0 -99
  594. package/dist/taxonomy/deliverable-status.d.ts.map +0 -1
  595. package/dist/taxonomy/deliverable-status.js +0 -131
  596. package/dist/taxonomy/deliverable-status.js.map +0 -1
  597. package/dist/taxonomy/format-types.d.ts +0 -17
  598. package/dist/taxonomy/format-types.d.ts.map +0 -1
  599. package/dist/taxonomy/format-types.js +0 -23
  600. package/dist/taxonomy/format-types.js.map +0 -1
  601. package/dist/taxonomy/generator-options.d.ts +0 -67
  602. package/dist/taxonomy/generator-options.d.ts.map +0 -1
  603. package/dist/taxonomy/generator-options.js +0 -75
  604. package/dist/taxonomy/generator-options.js.map +0 -1
  605. package/dist/taxonomy/hierarchy-levels.d.ts +0 -23
  606. package/dist/taxonomy/hierarchy-levels.d.ts.map +0 -1
  607. package/dist/taxonomy/hierarchy-levels.js +0 -22
  608. package/dist/taxonomy/hierarchy-levels.js.map +0 -1
  609. package/dist/taxonomy/index.d.ts +0 -35
  610. package/dist/taxonomy/index.d.ts.map +0 -1
  611. package/dist/taxonomy/index.js +0 -56
  612. package/dist/taxonomy/index.js.map +0 -1
  613. package/dist/taxonomy/layer-types.d.ts +0 -22
  614. package/dist/taxonomy/layer-types.d.ts.map +0 -1
  615. package/dist/taxonomy/layer-types.js +0 -28
  616. package/dist/taxonomy/layer-types.js.map +0 -1
  617. package/dist/taxonomy/normalized-status.d.ts +0 -99
  618. package/dist/taxonomy/normalized-status.d.ts.map +0 -1
  619. package/dist/taxonomy/normalized-status.js +0 -113
  620. package/dist/taxonomy/normalized-status.js.map +0 -1
  621. package/dist/taxonomy/registry-builder.d.ts +0 -104
  622. package/dist/taxonomy/registry-builder.d.ts.map +0 -1
  623. package/dist/taxonomy/registry-builder.js +0 -561
  624. package/dist/taxonomy/registry-builder.js.map +0 -1
  625. package/dist/taxonomy/risk-levels.d.ts +0 -16
  626. package/dist/taxonomy/risk-levels.d.ts.map +0 -1
  627. package/dist/taxonomy/risk-levels.js +0 -15
  628. package/dist/taxonomy/risk-levels.js.map +0 -1
  629. package/dist/taxonomy/severity-types.d.ts +0 -6
  630. package/dist/taxonomy/severity-types.d.ts.map +0 -1
  631. package/dist/taxonomy/severity-types.js +0 -5
  632. package/dist/taxonomy/severity-types.js.map +0 -1
  633. package/dist/taxonomy/status-values.d.ts +0 -39
  634. package/dist/taxonomy/status-values.d.ts.map +0 -1
  635. package/dist/taxonomy/status-values.js +0 -42
  636. package/dist/taxonomy/status-values.js.map +0 -1
  637. package/dist/types/branded.d.ts +0 -89
  638. package/dist/types/branded.d.ts.map +0 -1
  639. package/dist/types/branded.js +0 -57
  640. package/dist/types/branded.js.map +0 -1
  641. package/dist/types/errors.d.ts +0 -342
  642. package/dist/types/errors.d.ts.map +0 -1
  643. package/dist/types/errors.js +0 -251
  644. package/dist/types/errors.js.map +0 -1
  645. package/dist/types/index.d.ts +0 -41
  646. package/dist/types/index.d.ts.map +0 -1
  647. package/dist/types/index.js +0 -5
  648. package/dist/types/index.js.map +0 -1
  649. package/dist/types/result.d.ts +0 -78
  650. package/dist/types/result.d.ts.map +0 -1
  651. package/dist/types/result.js +0 -78
  652. package/dist/types/result.js.map +0 -1
  653. package/dist/utils/collection-utils.d.ts +0 -49
  654. package/dist/utils/collection-utils.d.ts.map +0 -1
  655. package/dist/utils/collection-utils.js +0 -58
  656. package/dist/utils/collection-utils.js.map +0 -1
  657. package/dist/utils/id-utils.d.ts +0 -46
  658. package/dist/utils/id-utils.d.ts.map +0 -1
  659. package/dist/utils/id-utils.js +0 -51
  660. package/dist/utils/id-utils.js.map +0 -1
  661. package/dist/utils/index.d.ts +0 -21
  662. package/dist/utils/index.d.ts.map +0 -1
  663. package/dist/utils/index.js +0 -21
  664. package/dist/utils/index.js.map +0 -1
  665. package/dist/utils/string-utils.d.ts +0 -150
  666. package/dist/utils/string-utils.d.ts.map +0 -1
  667. package/dist/utils/string-utils.js +0 -281
  668. package/dist/utils/string-utils.js.map +0 -1
  669. package/dist/validation/anti-patterns.d.ts +0 -134
  670. package/dist/validation/anti-patterns.d.ts.map +0 -1
  671. package/dist/validation/anti-patterns.js +0 -307
  672. package/dist/validation/anti-patterns.js.map +0 -1
  673. package/dist/validation/dod-validator.d.ts +0 -94
  674. package/dist/validation/dod-validator.d.ts.map +0 -1
  675. package/dist/validation/dod-validator.js +0 -198
  676. package/dist/validation/dod-validator.js.map +0 -1
  677. package/dist/validation/fsm/index.d.ts +0 -59
  678. package/dist/validation/fsm/index.d.ts.map +0 -1
  679. package/dist/validation/fsm/index.js +0 -64
  680. package/dist/validation/fsm/index.js.map +0 -1
  681. package/dist/validation/fsm/states.d.ts +0 -93
  682. package/dist/validation/fsm/states.d.ts.map +0 -1
  683. package/dist/validation/fsm/states.js +0 -98
  684. package/dist/validation/fsm/states.js.map +0 -1
  685. package/dist/validation/fsm/transitions.d.ts +0 -100
  686. package/dist/validation/fsm/transitions.d.ts.map +0 -1
  687. package/dist/validation/fsm/transitions.js +0 -122
  688. package/dist/validation/fsm/transitions.js.map +0 -1
  689. package/dist/validation/fsm/validator.d.ts +0 -163
  690. package/dist/validation/fsm/validator.d.ts.map +0 -1
  691. package/dist/validation/fsm/validator.js +0 -205
  692. package/dist/validation/fsm/validator.js.map +0 -1
  693. package/dist/validation/index.d.ts +0 -23
  694. package/dist/validation/index.d.ts.map +0 -1
  695. package/dist/validation/index.js +0 -25
  696. package/dist/validation/index.js.map +0 -1
  697. package/dist/validation/types.d.ts +0 -136
  698. package/dist/validation/types.d.ts.map +0 -1
  699. package/dist/validation/types.js +0 -56
  700. package/dist/validation/types.js.map +0 -1
  701. package/dist/validation-schemas/codec-utils.d.ts +0 -188
  702. package/dist/validation-schemas/codec-utils.d.ts.map +0 -1
  703. package/dist/validation-schemas/codec-utils.js +0 -258
  704. package/dist/validation-schemas/codec-utils.js.map +0 -1
  705. package/dist/validation-schemas/config.d.ts +0 -99
  706. package/dist/validation-schemas/config.d.ts.map +0 -1
  707. package/dist/validation-schemas/config.js +0 -178
  708. package/dist/validation-schemas/config.js.map +0 -1
  709. package/dist/validation-schemas/doc-directive.d.ts +0 -195
  710. package/dist/validation-schemas/doc-directive.d.ts.map +0 -1
  711. package/dist/validation-schemas/doc-directive.js +0 -239
  712. package/dist/validation-schemas/doc-directive.js.map +0 -1
  713. package/dist/validation-schemas/dual-source.d.ts +0 -167
  714. package/dist/validation-schemas/dual-source.d.ts.map +0 -1
  715. package/dist/validation-schemas/dual-source.js +0 -168
  716. package/dist/validation-schemas/dual-source.js.map +0 -1
  717. package/dist/validation-schemas/export-info.d.ts +0 -53
  718. package/dist/validation-schemas/export-info.d.ts.map +0 -1
  719. package/dist/validation-schemas/export-info.js +0 -101
  720. package/dist/validation-schemas/export-info.js.map +0 -1
  721. package/dist/validation-schemas/extracted-pattern.d.ts +0 -351
  722. package/dist/validation-schemas/extracted-pattern.d.ts.map +0 -1
  723. package/dist/validation-schemas/extracted-pattern.js +0 -459
  724. package/dist/validation-schemas/extracted-pattern.js.map +0 -1
  725. package/dist/validation-schemas/extracted-shape.d.ts +0 -200
  726. package/dist/validation-schemas/extracted-shape.d.ts.map +0 -1
  727. package/dist/validation-schemas/extracted-shape.js +0 -182
  728. package/dist/validation-schemas/extracted-shape.js.map +0 -1
  729. package/dist/validation-schemas/feature.d.ts +0 -554
  730. package/dist/validation-schemas/feature.d.ts.map +0 -1
  731. package/dist/validation-schemas/feature.js +0 -262
  732. package/dist/validation-schemas/feature.js.map +0 -1
  733. package/dist/validation-schemas/index.d.ts +0 -15
  734. package/dist/validation-schemas/index.d.ts.map +0 -1
  735. package/dist/validation-schemas/index.js +0 -32
  736. package/dist/validation-schemas/index.js.map +0 -1
  737. package/dist/validation-schemas/lint.d.ts +0 -46
  738. package/dist/validation-schemas/lint.d.ts.map +0 -1
  739. package/dist/validation-schemas/lint.js +0 -45
  740. package/dist/validation-schemas/lint.js.map +0 -1
  741. package/dist/validation-schemas/master-dataset.d.ts +0 -8299
  742. package/dist/validation-schemas/master-dataset.d.ts.map +0 -1
  743. package/dist/validation-schemas/master-dataset.js +0 -275
  744. package/dist/validation-schemas/master-dataset.js.map +0 -1
  745. package/dist/validation-schemas/output-schemas.d.ts +0 -183
  746. package/dist/validation-schemas/output-schemas.d.ts.map +0 -1
  747. package/dist/validation-schemas/output-schemas.js +0 -149
  748. package/dist/validation-schemas/output-schemas.js.map +0 -1
  749. package/dist/validation-schemas/scenario-ref.d.ts +0 -80
  750. package/dist/validation-schemas/scenario-ref.d.ts.map +0 -1
  751. package/dist/validation-schemas/scenario-ref.js +0 -73
  752. package/dist/validation-schemas/scenario-ref.js.map +0 -1
  753. package/dist/validation-schemas/tag-registry.d.ts +0 -210
  754. package/dist/validation-schemas/tag-registry.d.ts.map +0 -1
  755. package/dist/validation-schemas/tag-registry.js +0 -248
  756. package/dist/validation-schemas/tag-registry.js.map +0 -1
  757. package/dist/validation-schemas/workflow-config.d.ts +0 -125
  758. package/dist/validation-schemas/workflow-config.d.ts.map +0 -1
  759. package/dist/validation-schemas/workflow-config.js +0 -138
  760. package/dist/validation-schemas/workflow-config.js.map +0 -1
@@ -1,835 +0,0 @@
1
- /**
2
- * @architect
3
- * @architect-core @architect-scanner
4
- * @architect-pattern TypeScript AST Parser
5
- * @architect-status completed
6
- * @architect-arch-role infrastructure
7
- * @architect-arch-context scanner
8
- * @architect-arch-layer infrastructure
9
- * @architect-uses TagRegistry, DocDirectiveSchema, typescript-estree
10
- * @architect-used-by Pattern Scanner, Doc Extractor
11
- * @architect-usecase "When parsing JSDoc comments for @architect-* directives"
12
- * @architect-usecase "When extracting code blocks following documentation comments"
13
- *
14
- * ## TypeScript AST Parser - JSDoc Directive Extraction
15
- *
16
- * Parses TypeScript source files using @typescript-eslint/typescript-estree
17
- * to extract @architect-* directives with their associated code blocks.
18
- * First stage of the three-stage pipeline: Scanner → Extractor → Generator.
19
- *
20
- * ### When to Use
21
- *
22
- * - Scanning TypeScript files for documentation directives
23
- * - Extracting code snippets following JSDoc comments
24
- * - Building pattern metadata from JSDoc tags
25
- *
26
- * ### Key Concepts
27
- *
28
- * - **Data-Driven Extraction**: Tag formats defined in registry, not hardcoded
29
- * - **Schema-First Validation**: All directives validated against Zod schemas
30
- * - **Result Monad**: Returns Result<T, E> for explicit error handling
31
- */
32
- import { Result } from '../types/index.js';
33
- import { parse } from '@typescript-eslint/typescript-estree';
34
- import { asDirectiveTag, createDirectiveValidationError, createFileParseError, } from '../types/index.js';
35
- import { DocDirectiveSchema, createDefaultTagRegistry, } from '../validation-schemas/index.js';
36
- import { createRegexBuilders } from '../config/regex-builders.js';
37
- /**
38
- * Module-level regex cache for performance optimization.
39
- *
40
- * Regex compilation is expensive (~50μs per pattern). In hot paths where
41
- * the same patterns are used repeatedly (e.g., extracting metadata tags),
42
- * caching provides ~80x fewer RegExp instantiations.
43
- *
44
- * @internal
45
- */
46
- const REGEX_CACHE = new Map();
47
- /**
48
- * Get or create a cached RegExp instance.
49
- *
50
- * @param pattern - Regex pattern string
51
- * @param flags - Optional regex flags (g, i, m, etc.)
52
- * @returns Cached or newly created RegExp
53
- *
54
- * @internal
55
- */
56
- function getCachedRegex(pattern, flags) {
57
- const key = flags ? `${pattern}|${flags}` : pattern;
58
- let regex = REGEX_CACHE.get(key);
59
- if (!regex) {
60
- regex = new RegExp(pattern, flags);
61
- REGEX_CACHE.set(key, regex);
62
- }
63
- // Reset lastIndex for stateful regexes (those with 'g' flag)
64
- if (regex.global) {
65
- regex.lastIndex = 0;
66
- }
67
- return regex;
68
- }
69
- /**
70
- * Extract single value from comment text for format="value"
71
- *
72
- * @example
73
- * ```
74
- * @architect-pattern MyPattern
75
- * ```
76
- */
77
- function extractSingleValue(commentText, fullTag) {
78
- const regex = getCachedRegex(`(?:^|\\n)\\s*\\*?\\s*${escapeRegex(fullTag)}\\s+(.+?)(?:\\n|\\*|$)`);
79
- const match = regex.exec(commentText);
80
- return match?.[1]?.trim();
81
- }
82
- /**
83
- * Extract enum value from comment text for format="enum"
84
- *
85
- * @example
86
- * ```
87
- * @architect-status completed
88
- * ```
89
- */
90
- function extractEnumValue(commentText, fullTag, validValues) {
91
- const valuesPattern = validValues.join('|');
92
- const regex = getCachedRegex(`${escapeRegex(fullTag)}\\s+(${valuesPattern})`);
93
- const match = regex.exec(commentText);
94
- return match?.[1];
95
- }
96
- /**
97
- * Extract quoted value from comment text for format="quoted-value"
98
- *
99
- * @example
100
- * ```
101
- * @architect-usecase "When implementing a new command"
102
- * ```
103
- */
104
- function extractQuotedValue(commentText, fullTag) {
105
- const regex = getCachedRegex(`${escapeRegex(fullTag)}\\s+(?:"([^"]+)"|([^\\n*]+?)(?:\\n|\\*|$))`, 'g');
106
- const values = [];
107
- let match;
108
- while ((match = regex.exec(commentText)) !== null) {
109
- const value = (match[1] ?? match[2])?.trim();
110
- if (value) {
111
- values.push(value);
112
- }
113
- }
114
- return values;
115
- }
116
- /**
117
- * Extract comma-separated values from comment text for format="csv"
118
- *
119
- * @example
120
- * ```
121
- * @architect-uses PatternA, PatternB, PatternC
122
- * ```
123
- */
124
- function extractCsvValue(commentText, fullTag) {
125
- const regex = getCachedRegex(`${escapeRegex(fullTag)}\\s+([^\\n@*]+)`);
126
- const match = regex.exec(commentText);
127
- if (!match?.[1])
128
- return undefined;
129
- return match[1]
130
- .split(',')
131
- .map((s) => s.trim())
132
- .filter(Boolean);
133
- }
134
- /**
135
- * Extract number value from comment text for format="number"
136
- *
137
- * @example
138
- * ```
139
- * @architect-phase 14
140
- * ```
141
- */
142
- function extractNumberValue(commentText, fullTag) {
143
- const regex = getCachedRegex(`${escapeRegex(fullTag)}\\s+(\\d+)`);
144
- const match = regex.exec(commentText);
145
- return match?.[1] ? parseInt(match[1], 10) : undefined;
146
- }
147
- /**
148
- * Check if flag is present in comment text for format="flag"
149
- *
150
- * @example
151
- * ```
152
- * @architect-core
153
- * ```
154
- */
155
- function checkFlagPresent(commentText, fullTag) {
156
- const regex = getCachedRegex(`${escapeRegex(fullTag)}(?:\\s|$|\\*)`);
157
- return regex.test(commentText);
158
- }
159
- /**
160
- * Escape special regex characters
161
- */
162
- function escapeRegex(str) {
163
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
164
- }
165
- /**
166
- * Build regex patterns for directive parsing from registry configuration.
167
- *
168
- * @param registry - Tag registry with prefix and opt-in tag configuration
169
- * @returns Object with compiled regex patterns for directive parsing
170
- *
171
- * @internal
172
- */
173
- function buildDirectivePatterns(registry) {
174
- // Extract prefix without @ for pattern construction
175
- const prefixWithoutAt = registry.tagPrefix.startsWith('@')
176
- ? registry.tagPrefix.substring(1)
177
- : registry.tagPrefix;
178
- const escapedPrefixWithoutAt = escapeRegex(prefixWithoutAt);
179
- // Extract opt-in tag without @ for pattern construction
180
- const optInWithoutAt = registry.fileOptInTag.startsWith('@')
181
- ? registry.fileOptInTag.substring(1)
182
- : registry.fileOptInTag;
183
- const escapedOptInWithoutAt = escapeRegex(optInWithoutAt);
184
- return {
185
- // Match directive tags: @prefix-pattern, @prefix-core, etc. (prefix includes trailing -)
186
- tagRegex: new RegExp(`@${escapedPrefixWithoutAt}[\\w-]+`, 'g'),
187
- // Check if line starts with opt-in or directive
188
- // e.g., ^@architect or ^@architect-pattern
189
- startsWithOptInOrDirective: new RegExp(`^@${escapedOptInWithoutAt}(?:-[\\w-]+)?`),
190
- // Match opt-in tag for removal (not followed by -)
191
- // e.g., @architect followed by whitespace or end
192
- optInTagPattern: new RegExp(`@${escapedOptInWithoutAt}(?!-)(\\s|$)?`, 'g'),
193
- // Match any @ tag that is NOT our prefix
194
- // e.g., @param, @returns, @example (not @architect)
195
- nonOptInAtTagPattern: new RegExp(`^@(?!${escapedOptInWithoutAt})`),
196
- };
197
- }
198
- /**
199
- * Build regex pattern for value-taking tags from registry.
200
- *
201
- * Value-taking tags are all metadata tags except those with format="flag".
202
- * This pattern detects when a line contains a metadata directive whose
203
- * value should NOT be captured as inline description text.
204
- *
205
- * @param registry - Tag registry to extract metadata tags from
206
- * @returns RegExp pattern string (without surrounding slashes)
207
- *
208
- * @internal
209
- */
210
- function buildValueTakingTagsPattern(registry) {
211
- const valueTakingTags = registry.metadataTags
212
- .filter((tag) => tag.format !== 'flag')
213
- .map((tag) => escapeRegex(tag.tag));
214
- const tagPrefix = escapeRegex(registry.tagPrefix);
215
- return `${tagPrefix}(?:${valueTakingTags.join('|')})\\s`;
216
- }
217
- /**
218
- * Pre-compiled regex for detecting value-taking metadata directives.
219
- *
220
- * Built at module load time from the default registry to:
221
- * 1. Avoid regex compilation on every parse call
222
- * 2. Eliminate hardcoded tag lists that fall out of sync with registry
223
- *
224
- * Matches lines containing tags like @architect-pattern, @architect-status, etc.
225
- * Does NOT match flag-only tags like @architect-core.
226
- *
227
- * @internal
228
- */
229
- const _VALUE_TAKING_TAGS_REGEX = (() => {
230
- const defaultRegistry = createDefaultTagRegistry();
231
- return new RegExp(buildValueTakingTagsPattern(defaultRegistry));
232
- })();
233
- /**
234
- * Extract metadata tag value based on format type
235
- *
236
- * Dispatches to the appropriate extraction function based on the tag's format.
237
- * This enables data-driven metadata extraction without hardcoded patterns.
238
- *
239
- * @param commentText - Full JSDoc comment text
240
- * @param tagDef - Metadata tag definition from registry
241
- * @param prefix - Tag prefix (e.g., "@architect-")
242
- * @returns Extracted value in appropriate format, or undefined if not found
243
- */
244
- function extractMetadataTag(commentText, tagDef, prefix) {
245
- const fullTag = `${prefix}${tagDef.tag}`;
246
- switch (tagDef.format) {
247
- case 'value':
248
- return extractSingleValue(commentText, fullTag);
249
- case 'enum':
250
- return extractEnumValue(commentText, fullTag, tagDef.values ?? []);
251
- case 'quoted-value':
252
- // For repeatable tags, return array; otherwise return single value
253
- if (tagDef.repeatable) {
254
- const values = extractQuotedValue(commentText, fullTag);
255
- return values.length > 0 ? values : undefined;
256
- }
257
- else {
258
- const values = extractQuotedValue(commentText, fullTag);
259
- return values[0];
260
- }
261
- case 'csv':
262
- return extractCsvValue(commentText, fullTag);
263
- case 'number':
264
- return extractNumberValue(commentText, fullTag);
265
- case 'flag':
266
- return checkFlagPresent(commentText, fullTag);
267
- default:
268
- return undefined;
269
- }
270
- }
271
- /**
272
- * Parses TypeScript content and extracts all @architect-* directives
273
- * with their associated code blocks and exports.
274
- *
275
- * **Error Handling**: Returns Result type to surface parse errors:
276
- * - Ok: Contains successfully parsed directives and any skipped directive errors
277
- * - Err: Contains FileParseError when the entire file fails to parse
278
- *
279
- * @param content - TypeScript file content
280
- * @param filePath - Path to TypeScript file (for error messages)
281
- * @param registry - Tag registry for metadata extraction (optional, defaults to generic registry)
282
- * @returns Result with parsed directives or parse error
283
- *
284
- * @example
285
- * ```typescript
286
- * const content = await fs.readFile(filePath, "utf-8");
287
- * const result = parseFileDirectives(content, filePath, registry);
288
- *
289
- * if (Result.isOk(result)) {
290
- * const { directives, skippedDirectives } = result.value;
291
- * console.log(`Parsed ${directives.length} directives`);
292
- * console.log(`Skipped ${skippedDirectives.length} invalid directives`);
293
- * } else {
294
- * console.error(`Parse error: ${result.error.message}`);
295
- * }
296
- * ```
297
- */
298
- export function parseFileDirectives(content, filePath, registry) {
299
- const effectiveRegistry = registry ?? createDefaultTagRegistry();
300
- let ast;
301
- try {
302
- ast = parse(content, {
303
- loc: true,
304
- range: true,
305
- comment: true,
306
- tokens: false,
307
- });
308
- }
309
- catch (error) {
310
- // Surface parse errors instead of silently returning empty
311
- const tsError = error;
312
- const location = 'lineNumber' in tsError && 'column' in tsError
313
- ? { line: tsError.lineNumber, column: tsError.column }
314
- : undefined;
315
- return Result.err(createFileParseError(filePath, tsError.message || 'Unknown parse error', location, error));
316
- }
317
- const results = [];
318
- const skippedDirectives = [];
319
- const comments = ast.comments ?? [];
320
- // Create regex builders for directive detection using registry configuration
321
- const builders = createRegexBuilders(effectiveRegistry.tagPrefix, effectiveRegistry.fileOptInTag);
322
- for (const comment of comments) {
323
- if (comment.type !== 'Block')
324
- continue;
325
- const commentText = comment.value;
326
- if (!builders.hasDocDirectives(commentText))
327
- continue;
328
- // Extract directive information (with schema validation)
329
- if (!comment.loc)
330
- continue; // Skip if no location info
331
- const directiveResult = parseDirective(commentText, comment.loc, filePath, effectiveRegistry);
332
- if (Result.isErr(directiveResult)) {
333
- // Collect directive validation errors instead of silently skipping
334
- skippedDirectives.push(directiveResult.error);
335
- continue;
336
- }
337
- const directive = directiveResult.value;
338
- if (directive.tags.length === 0)
339
- continue;
340
- // Find the code block following this comment
341
- const codeBlock = extractCodeBlockAfterComment(content, ast, comment);
342
- if (!codeBlock)
343
- continue;
344
- // Extract exports from the code block (DD-1: thread content for signature slicing)
345
- const exports = extractExportsFromBlock(ast, codeBlock, content);
346
- results.push({
347
- directive,
348
- code: codeBlock.code,
349
- exports,
350
- });
351
- }
352
- return Result.ok({ directives: results, skippedDirectives });
353
- }
354
- /**
355
- * Parse JSDoc comment to extract directive information
356
- *
357
- * **Schema-First Enforcement**: Validates constructed directive against schema
358
- * to ensure data integrity at the boundary.
359
- *
360
- * **Directive-Level Tag Extraction**: Only extracts `@architect-*` tags from
361
- * the directive section (first lines before description content). Tags mentioned
362
- * in descriptions, examples, or other sections are NOT extracted.
363
- *
364
- * JSDoc structure:
365
- * ```
366
- * /**
367
- * * @architect-core @architect-api <- Directive tags (extracted)
368
- * *
369
- * * Description mentioning @architect-x <- NOT extracted
370
- * * @example
371
- * * hasTag('@architect-y'); <- NOT extracted
372
- * *\/
373
- * ```
374
- */
375
- function parseDirective(commentText, loc, filePath, registry) {
376
- const lines = commentText.split('\n').map((l) => l.trim().replace(/^\*\s?/, ''));
377
- // Build registry-based regex patterns for directive parsing
378
- const patterns = buildDirectivePatterns(registry);
379
- const valueTakingTagsRegex = new RegExp(buildValueTakingTagsPattern(registry));
380
- // Extract directive tags ONLY from directive section
381
- // Directive section = lines where tags appear at the START (not mentioned in text)
382
- // A directive tag line: "@architect-core @architect-api Some brief description"
383
- // A description line: "This works with @architect-api patterns" (tag not at start)
384
- const tags = [];
385
- let inlineDescription = ''; // Capture description on same line as tags
386
- for (const line of lines) {
387
- const trimmedLine = line.trim();
388
- // Skip empty lines at the start (before we've found any tags)
389
- if (trimmedLine === '' && tags.length === 0)
390
- continue;
391
- // Stop at empty lines after we've found tags (description section started)
392
- if (trimmedLine === '' && tags.length > 0)
393
- break;
394
- // Check if line starts with a standard JSDoc tag (@param, @returns, @example, etc.)
395
- // but NOT our doc directives
396
- if (patterns.nonOptInAtTagPattern.exec(trimmedLine)) {
397
- break; // Stop at other @ tags
398
- }
399
- // Check if line STARTS with opt-in or directive tag
400
- // e.g., @architect (no suffix) = file opt-in tag
401
- // e.g., @architect-* (with suffix) = section tag to extract
402
- const startsWithDocTag = patterns.startsWithOptInOrDirective.exec(trimmedLine);
403
- if (startsWithDocTag) {
404
- // This is a directive line - extract only directive tags (with suffix)
405
- // Skip opt-in tag (no suffix) which is just the opt-in marker
406
- // e.g., "@architect @architect-core Brief description" extracts only @architect-core
407
- let match;
408
- let lastTagEnd = 0;
409
- patterns.tagRegex.lastIndex = 0;
410
- while ((match = patterns.tagRegex.exec(trimmedLine)) !== null) {
411
- // Only extract tags that are at the start (consecutive, separated by whitespace or opt-in)
412
- const textBefore = trimmedLine.slice(lastTagEnd, match.index).trim();
413
- // Allow opt-in tag and whitespace between directive tags
414
- const cleanedBefore = textBefore.replace(patterns.optInTagPattern, '').trim();
415
- if (lastTagEnd > 0 && cleanedBefore !== '') {
416
- // There's non-whitespace content between tags - this tag is in description
417
- break;
418
- }
419
- tags.push(match[0]);
420
- lastTagEnd = match.index + match[0].length;
421
- }
422
- // Capture any description text after the tags on the same line
423
- // e.g., "@architect-core Brief description on same line" -> "Brief description on same line"
424
- // But skip lines with metadata directives that take values (all non-flag tags)
425
- // to prevent their values from leaking into the description
426
- // (e.g., "@architect-phase 01" would incorrectly capture "01")
427
- const hasMetadataDirective = valueTakingTagsRegex.test(trimmedLine);
428
- if (!hasMetadataDirective) {
429
- const textAfterTags = trimmedLine
430
- .slice(lastTagEnd)
431
- .replace(patterns.optInTagPattern, '') // Remove any opt-in markers
432
- .trim();
433
- if (textAfterTags) {
434
- inlineDescription = textAfterTags;
435
- }
436
- }
437
- // Continue to next line - there might be more directive tags
438
- }
439
- else {
440
- // Line doesn't start with doc tag - it's description content
441
- break;
442
- }
443
- }
444
- // Data-driven metadata extraction using registry
445
- // Build map of metadata tag results: tagName -> extracted value
446
- const metadataResults = new Map();
447
- for (const tagDef of registry.metadataTags) {
448
- const result = extractMetadataTag(commentText, tagDef, registry.tagPrefix);
449
- if (result !== undefined) {
450
- metadataResults.set(tagDef.tag, result);
451
- }
452
- }
453
- // Map extracted metadata to directive fields
454
- // This mapping translates registry tag names to DocDirective field names
455
- const patternName = metadataResults.get('pattern');
456
- const status = metadataResults.get('status');
457
- const isCore = metadataResults.get('core');
458
- const useCases = metadataResults.get('usecase');
459
- const uses = metadataResults.get('uses');
460
- const usedBy = metadataResults.get('used-by');
461
- const phase = metadataResults.get('phase');
462
- const brief = metadataResults.get('brief');
463
- const dependsOn = metadataResults.get('depends-on');
464
- const enables = metadataResults.get('enables');
465
- // UML-inspired relationship tags (PatternRelationshipModel)
466
- const implementsPatterns = metadataResults.get('implements');
467
- const extendsPattern = metadataResults.get('extends');
468
- // Cross-reference and API navigation tags (PatternRelationshipModel enhancement)
469
- const seeAlso = metadataResults.get('see-also');
470
- const apiRef = metadataResults.get('api-ref');
471
- // Architecture diagram generation tags
472
- const archRole = metadataResults.get('arch-role');
473
- const archContext = metadataResults.get('arch-context');
474
- const archLayer = metadataResults.get('arch-layer');
475
- const includeRaw = metadataResults.get('include');
476
- const include = Array.isArray(includeRaw) ? includeRaw : undefined;
477
- // Design session stub metadata tags
478
- const target = metadataResults.get('target');
479
- const since = metadataResults.get('since');
480
- // Shape extraction tags
481
- const extractShapes = metadataResults.get('extract-shapes');
482
- // PRD metadata tags (product area, user role, business value)
483
- const productArea = metadataResults.get('product-area');
484
- // Convention tags for reference document generation
485
- const convention = metadataResults.get('convention');
486
- // Claude module generation tags
487
- const claudeModule = metadataResults.get('claude-module');
488
- const claudeSection = metadataResults.get('claude-section');
489
- const claudeTags = metadataResults.get('claude-tags');
490
- // Extract "### When to Use" section or "**When to use:**" inline format
491
- // Returns array of bullet points, stopping at section boundaries
492
- // This is a special format that extracts from description, not a metadata tag
493
- const whenToUse = extractWhenToUse(commentText, registry.fileOptInTag);
494
- // Extract description and examples
495
- const descriptionLines = [];
496
- const examples = [];
497
- let inExample = false;
498
- let exampleBuffer = [];
499
- for (const line of lines) {
500
- if (line.startsWith('@example')) {
501
- inExample = true;
502
- if (exampleBuffer.length > 0) {
503
- examples.push(exampleBuffer.join('\n'));
504
- exampleBuffer = [];
505
- }
506
- continue;
507
- }
508
- if (line.startsWith('@param') || line.startsWith('@returns') || line.startsWith('@')) {
509
- if (inExample && exampleBuffer.length > 0) {
510
- examples.push(exampleBuffer.join('\n'));
511
- exampleBuffer = [];
512
- }
513
- inExample = false;
514
- continue;
515
- }
516
- if (inExample) {
517
- // Remove code fence markers
518
- if (!line.startsWith('```')) {
519
- exampleBuffer.push(line);
520
- }
521
- }
522
- else if (!line.startsWith('@')) {
523
- descriptionLines.push(line);
524
- }
525
- }
526
- if (exampleBuffer.length > 0) {
527
- examples.push(exampleBuffer.join('\n'));
528
- }
529
- // Build directive object
530
- // Combine inline description (from same line as tags) with multi-line description
531
- const fullDescription = inlineDescription
532
- ? [inlineDescription, ...descriptionLines].join('\n').trim()
533
- : descriptionLines.join('\n').trim();
534
- const directive = {
535
- tags: tags.map((tag) => asDirectiveTag(tag)),
536
- description: fullDescription,
537
- examples,
538
- position: {
539
- startLine: loc.start.line,
540
- endLine: loc.end.line,
541
- },
542
- // Include optional fields only if present
543
- ...(patternName && { patternName }),
544
- ...(status && { status }),
545
- ...(isCore && { isCore }),
546
- ...(useCases && useCases.length > 0 && { useCases }),
547
- ...(whenToUse && { whenToUse }),
548
- ...(uses && uses.length > 0 && { uses }),
549
- ...(usedBy && usedBy.length > 0 && { usedBy }),
550
- ...(phase !== undefined && { phase }),
551
- ...(brief && { brief }),
552
- ...(dependsOn && dependsOn.length > 0 && { dependsOn }),
553
- ...(enables && enables.length > 0 && { enables }),
554
- // UML-inspired relationship fields (PatternRelationshipModel)
555
- ...(implementsPatterns && implementsPatterns.length > 0 && { implements: implementsPatterns }),
556
- ...(extendsPattern && { extends: extendsPattern }),
557
- // Cross-reference and API navigation fields (PatternRelationshipModel enhancement)
558
- ...(seeAlso && seeAlso.length > 0 && { seeAlso }),
559
- ...(apiRef && apiRef.length > 0 && { apiRef }),
560
- // Design session stub metadata fields
561
- ...(target && { target }),
562
- ...(since && { since }),
563
- // Architecture diagram generation fields
564
- ...(archRole && { archRole }),
565
- ...(archContext && { archContext }),
566
- ...(archLayer && { archLayer }),
567
- ...(include && include.length > 0 && { include }),
568
- ...(claudeModule && { claudeModule }),
569
- ...(claudeSection && { claudeSection }),
570
- ...(claudeTags && claudeTags.length > 0 && { claudeTags }),
571
- // Shape extraction fields
572
- ...(extractShapes && extractShapes.length > 0 && { extractShapes }),
573
- // PRD metadata fields
574
- ...(productArea && { productArea }),
575
- // Convention tags for reference document generation
576
- ...(convention && convention.length > 0 && { convention }),
577
- };
578
- // Validate against schema (schema-first enforcement)
579
- const validation = DocDirectiveSchema.safeParse(directive);
580
- if (!validation.success) {
581
- const error = createDirectiveValidationError(filePath, loc.start.line, 'Invalid directive structure', commentText.substring(0, 100));
582
- return Result.err(error);
583
- }
584
- return Result.ok(validation.data);
585
- }
586
- /**
587
- * Extract code block immediately following a comment
588
- */
589
- function extractCodeBlockAfterComment(content, ast, comment) {
590
- if (!comment.range)
591
- return null;
592
- const commentEnd = comment.range[1];
593
- // Find the first meaningful AST node after this comment
594
- const nextNode = findNextNodeAfterPosition(ast, commentEnd);
595
- if (!nextNode?.range || !nextNode.loc)
596
- return null;
597
- const lines = content.split('\n');
598
- const startLine = nextNode.loc.start.line;
599
- const endLine = nextNode.loc.end.line;
600
- // Extract the code block
601
- const codeLines = lines.slice(startLine - 1, endLine);
602
- return {
603
- code: codeLines.join('\n'),
604
- startLine,
605
- endLine,
606
- };
607
- }
608
- /**
609
- * Find the first AST node after a given position
610
- */
611
- function findNextNodeAfterPosition(ast, position) {
612
- for (const node of ast.body) {
613
- if (node.range && node.range[0] > position) {
614
- return node;
615
- }
616
- }
617
- return null;
618
- }
619
- /**
620
- * Extract export information from a code block
621
- */
622
- function extractExportsFromBlock(ast, block, sourceCode) {
623
- const exports = [];
624
- for (const node of ast.body) {
625
- if (!node.loc)
626
- continue;
627
- if (node.loc.start.line < block.startLine || node.loc.end.line > block.endLine)
628
- continue;
629
- if (node.type === 'ExportNamedDeclaration') {
630
- if (node.declaration) {
631
- exports.push(...extractFromDeclaration(node.declaration, sourceCode));
632
- }
633
- // Handle re-exports like: export { foo, bar } from './module'
634
- // or type exports: export type { Foo } from './module'
635
- if (node.specifiers) {
636
- // Check if parent ExportNamedDeclaration is type-only
637
- const isTypeExport = node.exportKind === 'type';
638
- for (const spec of node.specifiers) {
639
- if (spec.type === 'ExportSpecifier') {
640
- // TypeScript 5.9.0+: exported can be Identifier or Literal (StringLiteral)
641
- // Handles cases like: export { "foo-bar" as baz } from './module'
642
- // Type union exhaustion: only Identifier and Literal are valid types here
643
- const exportedName = spec.exported.type === 'Identifier'
644
- ? spec.exported.name
645
- : spec.exported.value; // Literal type - extract value
646
- exports.push({
647
- name: exportedName,
648
- type: isTypeExport ? 'type' : 'const',
649
- });
650
- }
651
- }
652
- }
653
- }
654
- else if (node.type === 'ExportDefaultDeclaration') {
655
- exports.push({
656
- name: 'default',
657
- type: getExportType(node.declaration),
658
- });
659
- }
660
- }
661
- return exports;
662
- }
663
- /**
664
- * Build a clean function signature from AST node and source code.
665
- *
666
- * DD-1: Uses AST body range to precisely locate the function body start,
667
- * then slices everything before it as the signature. This avoids flawed
668
- * brace-matching that fails on object parameter types like `{ timeout: number }`.
669
- * Strips `export ` prefix but keeps `async` (semantically meaningful).
670
- */
671
- function buildFunctionSignature(declaration, sourceCode) {
672
- // Use AST body range for precise body location (no brace-matching needed)
673
- if (declaration.body) {
674
- const bodyStart = declaration.body.range[0];
675
- const declStart = declaration.range[0];
676
- const beforeBody = sourceCode.slice(declStart, bodyStart);
677
- // Strip 'export ' prefix for clean display
678
- const withoutExport = beforeBody.startsWith('export ')
679
- ? beforeBody.slice('export '.length)
680
- : beforeBody;
681
- return withoutExport.trim() + ';';
682
- }
683
- // Fallback for declarations without body (ambient/abstract)
684
- const fullText = sourceCode.slice(declaration.range[0], declaration.range[1]);
685
- return fullText.startsWith('export ') ? fullText.slice('export '.length).trim() : fullText.trim();
686
- }
687
- /**
688
- * Extract exports from a declaration node
689
- */
690
- function extractFromDeclaration(declaration, sourceCode) {
691
- const exports = [];
692
- switch (declaration.type) {
693
- case 'FunctionDeclaration':
694
- if (declaration.id) {
695
- exports.push({
696
- name: declaration.id.name,
697
- type: 'function',
698
- signature: buildFunctionSignature(declaration, sourceCode),
699
- });
700
- }
701
- break;
702
- case 'VariableDeclaration':
703
- for (const declarator of declaration.declarations) {
704
- if (declarator.id.type === 'Identifier') {
705
- exports.push({
706
- name: declarator.id.name,
707
- type: 'const',
708
- });
709
- }
710
- }
711
- break;
712
- case 'TSTypeAliasDeclaration':
713
- exports.push({
714
- name: declaration.id.name,
715
- type: 'type',
716
- });
717
- break;
718
- case 'TSInterfaceDeclaration':
719
- exports.push({
720
- name: declaration.id.name,
721
- type: 'interface',
722
- });
723
- break;
724
- case 'ClassDeclaration':
725
- if (declaration.id) {
726
- exports.push({
727
- name: declaration.id.name,
728
- type: 'class',
729
- });
730
- }
731
- break;
732
- case 'TSEnumDeclaration':
733
- if (declaration.id) {
734
- exports.push({
735
- name: declaration.id.name,
736
- type: 'enum',
737
- });
738
- }
739
- break;
740
- }
741
- return exports;
742
- }
743
- /**
744
- * Get export type from declaration
745
- */
746
- function getExportType(declaration) {
747
- switch (declaration.type) {
748
- case 'FunctionDeclaration':
749
- return 'function';
750
- case 'ClassDeclaration':
751
- return 'class';
752
- case 'TSInterfaceDeclaration':
753
- return 'interface';
754
- case 'TSTypeAliasDeclaration':
755
- return 'type';
756
- default:
757
- return 'const';
758
- }
759
- }
760
- /**
761
- * Extract "When to Use" bullet points from JSDoc comment
762
- *
763
- * Handles two formats:
764
- * - Heading format: `### When to Use\n- bullet 1\n- bullet 2`
765
- * - Inline format: `**When to use:** Single line description`
766
- *
767
- * Key improvements over naive regex:
768
- * - Strips JSDoc `* ` markers before matching
769
- * - Only captures actual bullet points (lines starting with `- ` or `* `)
770
- * - Stops at section boundaries (empty lines, headings, tables, JSDoc tags)
771
- *
772
- * **Limitation:** Multi-line bullets (continuation lines) are not supported.
773
- * Each bullet must be a single line. For example:
774
- * ```
775
- * ### When to Use
776
- * - This works (single line)
777
- * - This is broken because it
778
- * continues on the next line // <-- Not captured
779
- * ```
780
- * Recommendation: Keep all bullet points as single lines.
781
- *
782
- * @param commentText - Raw JSDoc comment content
783
- * @param fileOptInTag - The file opt-in tag (e.g., "@docs" or "@architect")
784
- * @returns Array of bullet point strings, or undefined if no "When to Use" section
785
- */
786
- function extractWhenToUse(commentText, fileOptInTag) {
787
- // Strip JSDoc markers and normalize lines
788
- const cleanedLines = commentText.split('\n').map((line) => line
789
- .trim()
790
- .replace(/^\*\s?/, '')
791
- .trim());
792
- const cleanedText = cleanedLines.join('\n');
793
- // Try heading format first: ### When to Use
794
- const headingMatch = /###\s*When to Use\s*\n/i.exec(cleanedText);
795
- if (headingMatch) {
796
- const startIndex = headingMatch.index + headingMatch[0].length;
797
- const afterHeading = cleanedText.slice(startIndex);
798
- const lines = afterHeading.split('\n');
799
- const bullets = [];
800
- for (const line of lines) {
801
- const trimmed = line.trim();
802
- // Stop conditions: empty line, new heading, table, JSDoc tag (but not doc directives)
803
- if (trimmed === '')
804
- break;
805
- if (trimmed.startsWith('#'))
806
- break;
807
- if (trimmed.startsWith('|'))
808
- break;
809
- if (trimmed.startsWith('@') && !trimmed.startsWith(fileOptInTag))
810
- break;
811
- // Extract bullet point content (must start with - or * followed by space)
812
- const bulletMatch = /^[-*]\s+(.+)$/.exec(trimmed);
813
- if (bulletMatch?.[1]) {
814
- bullets.push(bulletMatch[1].trim());
815
- }
816
- else {
817
- // Line doesn't start with bullet - stop extraction
818
- break;
819
- }
820
- }
821
- if (bullets.length > 0) {
822
- return bullets;
823
- }
824
- }
825
- // Try inline format: **When to use:** description
826
- const inlineMatch = /\*\*When to use:\*\*\s*([^\n]+)/i.exec(cleanedText);
827
- if (inlineMatch?.[1]) {
828
- const description = inlineMatch[1].trim();
829
- if (description) {
830
- return [description];
831
- }
832
- }
833
- return undefined;
834
- }
835
- //# sourceMappingURL=ast-parser.js.map