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

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 (758) 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 -3
  23. package/dist/cli/cli-schema.js +13 -13
  24. package/dist/cli/cli-schema.js.map +1 -1
  25. package/dist/cli/output-pipeline.d.ts.map +1 -1
  26. package/dist/cli/pattern-graph-cli.d.ts.map +1 -0
  27. package/dist/cli/validate-patterns.d.ts.map +1 -1
  28. package/dist/generators/built-in/cli-recipe-generator.d.ts +3 -3
  29. package/dist/generators/built-in/cli-recipe-generator.js +6 -6
  30. package/dist/generators/built-in/cli-recipe-generator.js.map +1 -1
  31. package/dist/generators/built-in/cli-reference-generator.d.ts +18 -0
  32. package/dist/generators/built-in/cli-reference-generator.d.ts.map +1 -0
  33. package/dist/generators/built-in/{process-api-reference-generator.js → cli-reference-generator.js} +13 -13
  34. package/dist/generators/built-in/cli-reference-generator.js.map +1 -0
  35. package/dist/generators/built-in/codec-generators.js +12 -12
  36. package/dist/generators/built-in/codec-generators.js.map +1 -1
  37. package/dist/generators/built-in/design-review-generator.d.ts.map +1 -1
  38. package/dist/generators/built-in/reference-generators.d.ts.map +1 -1
  39. package/dist/generators/codec-based.d.ts.map +1 -1
  40. package/dist/generators/index.d.ts.map +1 -1
  41. package/dist/generators/orchestrator.d.ts.map +1 -1
  42. package/dist/generators/pipeline/build-pipeline.d.ts +17 -14
  43. package/dist/generators/pipeline/build-pipeline.d.ts.map +1 -1
  44. package/dist/generators/pipeline/build-pipeline.js +27 -21
  45. package/dist/generators/pipeline/build-pipeline.js.map +1 -1
  46. package/dist/generators/pipeline/index.d.ts.map +1 -1
  47. package/dist/generators/types.d.ts.map +1 -1
  48. package/dist/mcp/pipeline-session.d.ts.map +1 -1
  49. package/dist/renderable/codecs/index-codec.d.ts.map +1 -1
  50. package/dist/renderable/codecs/index-codec.js +54 -28
  51. package/dist/renderable/codecs/index-codec.js.map +1 -1
  52. package/docs/ANNOTATION-GUIDE.md +5 -5
  53. package/docs/ARCHITECTURE.md +79 -79
  54. package/docs/{PROCESS-API.md → CLI.md} +6 -6
  55. package/docs/CONFIGURATION.md +2 -2
  56. package/docs/DOCS-GAP-ANALYSIS.md +65 -65
  57. package/docs/INDEX.md +34 -34
  58. package/docs/MCP-SETUP.md +3 -3
  59. package/docs/METHODOLOGY.md +1 -1
  60. package/docs/SESSION-GUIDES.md +3 -3
  61. package/docs/VALIDATION.md +4 -4
  62. package/docs-live/ARCHITECTURE.md +48 -42
  63. package/docs-live/BUSINESS-RULES.md +3 -3
  64. package/docs-live/CHANGELOG-GENERATED.md +109 -103
  65. package/docs-live/INDEX.md +21 -21
  66. package/docs-live/PRODUCT-AREAS.md +7 -7
  67. package/docs-live/TAXONOMY.md +3 -5
  68. package/docs-live/_claude-md/annotation/annotation-overview.md +1 -1
  69. package/docs-live/_claude-md/annotation/annotation-reference.md +5 -5
  70. package/docs-live/_claude-md/architecture/architecture-types.md +4 -4
  71. package/docs-live/_claude-md/architecture/reference-sample.md +2 -2
  72. package/docs-live/_claude-md/data-api/data-api-overview.md +2 -2
  73. package/docs-live/_claude-md/generation/generation-overview.md +15 -15
  74. package/docs-live/_claude-md/process/process-overview.md +1 -1
  75. package/docs-live/_claude-md/validation/validation-overview.md +1 -1
  76. package/docs-live/business-rules/annotation.md +1 -2
  77. package/docs-live/business-rules/configuration.md +1 -1
  78. package/docs-live/business-rules/data-api.md +149 -136
  79. package/docs-live/business-rules/generation.md +172 -20
  80. package/docs-live/decisions/adr-003-source-first-pattern-architecture.md +1 -1
  81. package/docs-live/decisions/adr-005-codec-based-markdown-rendering.md +5 -5
  82. package/docs-live/decisions/adr-006-single-read-model-architecture.md +24 -24
  83. package/docs-live/product-areas/ANNOTATION.md +19 -9
  84. package/docs-live/product-areas/CONFIGURATION.md +39 -19
  85. package/docs-live/product-areas/DATA-API.md +155 -151
  86. package/docs-live/product-areas/GENERATION.md +159 -144
  87. package/docs-live/product-areas/PROCESS.md +4 -4
  88. package/docs-live/product-areas/VALIDATION.md +35 -20
  89. package/docs-live/reference/ANNOTATION-REFERENCE.md +5 -5
  90. package/docs-live/reference/ARCHITECTURE-CODECS.md +11 -11
  91. package/docs-live/reference/ARCHITECTURE-TYPES.md +28 -25
  92. package/docs-live/reference/{PROCESS-API-RECIPES.md → CLI-RECIPES.md} +11 -11
  93. package/docs-live/reference/{PROCESS-API-REFERENCE.md → CLI-REFERENCE.md} +2 -2
  94. package/docs-live/reference/REFERENCE-SAMPLE.md +56 -56
  95. package/docs-live/reference/SESSION-WORKFLOW-GUIDE.md +3 -3
  96. package/docs-live/taxonomy/format-types.md +2 -2
  97. package/docs-live/taxonomy/metadata-tags.md +1 -23
  98. package/package.json +7 -7
  99. package/dist/api/arch-queries.d.ts +0 -95
  100. package/dist/api/arch-queries.js +0 -310
  101. package/dist/api/arch-queries.js.map +0 -1
  102. package/dist/api/context-assembler.d.ts +0 -124
  103. package/dist/api/context-assembler.js +0 -472
  104. package/dist/api/context-assembler.js.map +0 -1
  105. package/dist/api/context-formatter.d.ts +0 -26
  106. package/dist/api/context-formatter.js +0 -183
  107. package/dist/api/context-formatter.js.map +0 -1
  108. package/dist/api/coverage-analyzer.d.ts +0 -38
  109. package/dist/api/coverage-analyzer.d.ts.map +0 -1
  110. package/dist/api/coverage-analyzer.js +0 -117
  111. package/dist/api/coverage-analyzer.js.map +0 -1
  112. package/dist/api/fuzzy-match.d.ts +0 -75
  113. package/dist/api/fuzzy-match.d.ts.map +0 -1
  114. package/dist/api/fuzzy-match.js +0 -150
  115. package/dist/api/fuzzy-match.js.map +0 -1
  116. package/dist/api/handoff-generator.d.ts +0 -45
  117. package/dist/api/handoff-generator.js +0 -139
  118. package/dist/api/handoff-generator.js.map +0 -1
  119. package/dist/api/pattern-helpers.d.ts +0 -51
  120. package/dist/api/pattern-helpers.d.ts.map +0 -1
  121. package/dist/api/pattern-helpers.js +0 -84
  122. package/dist/api/pattern-helpers.js.map +0 -1
  123. package/dist/api/process-state.d.ts.map +0 -1
  124. package/dist/api/process-state.js.map +0 -1
  125. package/dist/api/scope-validator.d.ts +0 -56
  126. package/dist/api/scope-validator.js +0 -293
  127. package/dist/api/scope-validator.js.map +0 -1
  128. package/dist/api/stub-resolver.d.ts +0 -117
  129. package/dist/api/stub-resolver.d.ts.map +0 -1
  130. package/dist/api/stub-resolver.js +0 -154
  131. package/dist/api/stub-resolver.js.map +0 -1
  132. package/dist/api/summarize.d.ts +0 -75
  133. package/dist/api/summarize.d.ts.map +0 -1
  134. package/dist/api/summarize.js +0 -97
  135. package/dist/api/summarize.js.map +0 -1
  136. package/dist/cache/file-cache.d.ts +0 -72
  137. package/dist/cache/file-cache.d.ts.map +0 -1
  138. package/dist/cache/file-cache.js +0 -80
  139. package/dist/cache/file-cache.js.map +0 -1
  140. package/dist/cache/index.d.ts +0 -5
  141. package/dist/cache/index.d.ts.map +0 -1
  142. package/dist/cache/index.js +0 -5
  143. package/dist/cache/index.js.map +0 -1
  144. package/dist/cli/dataset-cache.d.ts +0 -66
  145. package/dist/cli/dataset-cache.js +0 -179
  146. package/dist/cli/dataset-cache.js.map +0 -1
  147. package/dist/cli/error-handler.d.ts +0 -84
  148. package/dist/cli/error-handler.d.ts.map +0 -1
  149. package/dist/cli/error-handler.js +0 -197
  150. package/dist/cli/error-handler.js.map +0 -1
  151. package/dist/cli/generate-docs.d.ts +0 -30
  152. package/dist/cli/generate-docs.js +0 -370
  153. package/dist/cli/generate-docs.js.map +0 -1
  154. package/dist/cli/lint-patterns.d.ts +0 -57
  155. package/dist/cli/lint-patterns.d.ts.map +0 -1
  156. package/dist/cli/lint-patterns.js +0 -257
  157. package/dist/cli/lint-patterns.js.map +0 -1
  158. package/dist/cli/lint-process.d.ts +0 -54
  159. package/dist/cli/lint-process.d.ts.map +0 -1
  160. package/dist/cli/lint-process.js +0 -319
  161. package/dist/cli/lint-process.js.map +0 -1
  162. package/dist/cli/lint-steps.d.ts +0 -32
  163. package/dist/cli/lint-steps.d.ts.map +0 -1
  164. package/dist/cli/lint-steps.js +0 -172
  165. package/dist/cli/lint-steps.js.map +0 -1
  166. package/dist/cli/mcp-server.d.ts +0 -22
  167. package/dist/cli/mcp-server.js +0 -57
  168. package/dist/cli/mcp-server.js.map +0 -1
  169. package/dist/cli/output-pipeline.d.ts +0 -130
  170. package/dist/cli/output-pipeline.js +0 -234
  171. package/dist/cli/output-pipeline.js.map +0 -1
  172. package/dist/cli/process-api.d.ts +0 -37
  173. package/dist/cli/process-api.d.ts.map +0 -1
  174. package/dist/cli/process-api.js +0 -1550
  175. package/dist/cli/process-api.js.map +0 -1
  176. package/dist/cli/repl.d.ts +0 -38
  177. package/dist/cli/repl.js +0 -239
  178. package/dist/cli/repl.js.map +0 -1
  179. package/dist/cli/validate-patterns.d.ts +0 -115
  180. package/dist/cli/validate-patterns.js +0 -707
  181. package/dist/cli/validate-patterns.js.map +0 -1
  182. package/dist/cli/version.d.ts +0 -35
  183. package/dist/cli/version.d.ts.map +0 -1
  184. package/dist/cli/version.js +0 -64
  185. package/dist/cli/version.js.map +0 -1
  186. package/dist/config/config-loader.d.ts +0 -167
  187. package/dist/config/config-loader.d.ts.map +0 -1
  188. package/dist/config/config-loader.js +0 -294
  189. package/dist/config/config-loader.js.map +0 -1
  190. package/dist/config/defaults.d.ts +0 -92
  191. package/dist/config/defaults.d.ts.map +0 -1
  192. package/dist/config/defaults.js +0 -103
  193. package/dist/config/defaults.js.map +0 -1
  194. package/dist/config/define-config.d.ts +0 -37
  195. package/dist/config/define-config.d.ts.map +0 -1
  196. package/dist/config/define-config.js +0 -38
  197. package/dist/config/define-config.js.map +0 -1
  198. package/dist/config/factory.d.ts +0 -79
  199. package/dist/config/factory.d.ts.map +0 -1
  200. package/dist/config/factory.js +0 -116
  201. package/dist/config/factory.js.map +0 -1
  202. package/dist/config/index.d.ts +0 -45
  203. package/dist/config/index.d.ts.map +0 -1
  204. package/dist/config/index.js +0 -48
  205. package/dist/config/index.js.map +0 -1
  206. package/dist/config/merge-sources.d.ts +0 -47
  207. package/dist/config/merge-sources.d.ts.map +0 -1
  208. package/dist/config/merge-sources.js +0 -61
  209. package/dist/config/merge-sources.js.map +0 -1
  210. package/dist/config/presets.d.ts +0 -115
  211. package/dist/config/presets.d.ts.map +0 -1
  212. package/dist/config/presets.js +0 -119
  213. package/dist/config/presets.js.map +0 -1
  214. package/dist/config/project-config-schema.d.ts +0 -192
  215. package/dist/config/project-config-schema.d.ts.map +0 -1
  216. package/dist/config/project-config-schema.js +0 -231
  217. package/dist/config/project-config-schema.js.map +0 -1
  218. package/dist/config/project-config.d.ts +0 -229
  219. package/dist/config/project-config.d.ts.map +0 -1
  220. package/dist/config/project-config.js +0 -37
  221. package/dist/config/project-config.js.map +0 -1
  222. package/dist/config/regex-builders.d.ts +0 -49
  223. package/dist/config/regex-builders.d.ts.map +0 -1
  224. package/dist/config/regex-builders.js +0 -85
  225. package/dist/config/regex-builders.js.map +0 -1
  226. package/dist/config/resolve-config.d.ts +0 -65
  227. package/dist/config/resolve-config.d.ts.map +0 -1
  228. package/dist/config/resolve-config.js +0 -150
  229. package/dist/config/resolve-config.js.map +0 -1
  230. package/dist/config/types.d.ts +0 -81
  231. package/dist/config/types.d.ts.map +0 -1
  232. package/dist/config/types.js +0 -22
  233. package/dist/config/types.js.map +0 -1
  234. package/dist/config/workflow-loader.d.ts +0 -90
  235. package/dist/config/workflow-loader.d.ts.map +0 -1
  236. package/dist/config/workflow-loader.js +0 -167
  237. package/dist/config/workflow-loader.js.map +0 -1
  238. package/dist/extractor/doc-extractor.d.ts +0 -233
  239. package/dist/extractor/doc-extractor.d.ts.map +0 -1
  240. package/dist/extractor/doc-extractor.js +0 -481
  241. package/dist/extractor/doc-extractor.js.map +0 -1
  242. package/dist/extractor/dual-source-extractor.d.ts +0 -161
  243. package/dist/extractor/dual-source-extractor.d.ts.map +0 -1
  244. package/dist/extractor/dual-source-extractor.js +0 -407
  245. package/dist/extractor/dual-source-extractor.js.map +0 -1
  246. package/dist/extractor/gherkin-extractor.d.ts +0 -170
  247. package/dist/extractor/gherkin-extractor.d.ts.map +0 -1
  248. package/dist/extractor/gherkin-extractor.js +0 -543
  249. package/dist/extractor/gherkin-extractor.js.map +0 -1
  250. package/dist/extractor/index.d.ts +0 -7
  251. package/dist/extractor/index.d.ts.map +0 -1
  252. package/dist/extractor/index.js +0 -11
  253. package/dist/extractor/index.js.map +0 -1
  254. package/dist/extractor/layer-inference.d.ts +0 -66
  255. package/dist/extractor/layer-inference.d.ts.map +0 -1
  256. package/dist/extractor/layer-inference.js +0 -93
  257. package/dist/extractor/layer-inference.js.map +0 -1
  258. package/dist/extractor/shape-extractor.d.ts +0 -79
  259. package/dist/extractor/shape-extractor.d.ts.map +0 -1
  260. package/dist/extractor/shape-extractor.js +0 -966
  261. package/dist/extractor/shape-extractor.js.map +0 -1
  262. package/dist/generators/built-in/codec-generators.d.ts +0 -29
  263. package/dist/generators/built-in/decision-doc-generator.d.ts +0 -204
  264. package/dist/generators/built-in/decision-doc-generator.js +0 -654
  265. package/dist/generators/built-in/decision-doc-generator.js.map +0 -1
  266. package/dist/generators/built-in/design-review-generator.d.ts +0 -26
  267. package/dist/generators/built-in/design-review-generator.js +0 -94
  268. package/dist/generators/built-in/design-review-generator.js.map +0 -1
  269. package/dist/generators/built-in/index.d.ts +0 -22
  270. package/dist/generators/built-in/index.js +0 -23
  271. package/dist/generators/built-in/index.js.map +0 -1
  272. package/dist/generators/built-in/process-api-reference-generator.d.ts +0 -18
  273. package/dist/generators/built-in/process-api-reference-generator.d.ts.map +0 -1
  274. package/dist/generators/built-in/process-api-reference-generator.js.map +0 -1
  275. package/dist/generators/built-in/reference-generators.d.ts +0 -51
  276. package/dist/generators/built-in/reference-generators.js +0 -320
  277. package/dist/generators/built-in/reference-generators.js.map +0 -1
  278. package/dist/generators/codec-based.d.ts +0 -63
  279. package/dist/generators/codec-based.js +0 -88
  280. package/dist/generators/codec-based.js.map +0 -1
  281. package/dist/generators/content-deduplicator.d.ts +0 -114
  282. package/dist/generators/content-deduplicator.d.ts.map +0 -1
  283. package/dist/generators/content-deduplicator.js +0 -356
  284. package/dist/generators/content-deduplicator.js.map +0 -1
  285. package/dist/generators/index.d.ts +0 -50
  286. package/dist/generators/index.js +0 -54
  287. package/dist/generators/index.js.map +0 -1
  288. package/dist/generators/orchestrator.d.ts +0 -265
  289. package/dist/generators/orchestrator.js +0 -570
  290. package/dist/generators/orchestrator.js.map +0 -1
  291. package/dist/generators/pipeline/context-inference.d.ts +0 -55
  292. package/dist/generators/pipeline/context-inference.d.ts.map +0 -1
  293. package/dist/generators/pipeline/context-inference.js +0 -76
  294. package/dist/generators/pipeline/context-inference.js.map +0 -1
  295. package/dist/generators/pipeline/index.d.ts +0 -27
  296. package/dist/generators/pipeline/index.js +0 -34
  297. package/dist/generators/pipeline/index.js.map +0 -1
  298. package/dist/generators/pipeline/merge-patterns.d.ts +0 -33
  299. package/dist/generators/pipeline/merge-patterns.d.ts.map +0 -1
  300. package/dist/generators/pipeline/merge-patterns.js +0 -50
  301. package/dist/generators/pipeline/merge-patterns.js.map +0 -1
  302. package/dist/generators/pipeline/relationship-resolver.d.ts +0 -47
  303. package/dist/generators/pipeline/relationship-resolver.d.ts.map +0 -1
  304. package/dist/generators/pipeline/relationship-resolver.js +0 -132
  305. package/dist/generators/pipeline/relationship-resolver.js.map +0 -1
  306. package/dist/generators/pipeline/sequence-utils.d.ts +0 -49
  307. package/dist/generators/pipeline/sequence-utils.d.ts.map +0 -1
  308. package/dist/generators/pipeline/sequence-utils.js +0 -235
  309. package/dist/generators/pipeline/sequence-utils.js.map +0 -1
  310. package/dist/generators/pipeline/transform-dataset.d.ts +0 -82
  311. package/dist/generators/pipeline/transform-dataset.d.ts.map +0 -1
  312. package/dist/generators/pipeline/transform-dataset.js +0 -355
  313. package/dist/generators/pipeline/transform-dataset.js.map +0 -1
  314. package/dist/generators/pipeline/transform-types.d.ts +0 -96
  315. package/dist/generators/pipeline/transform-types.d.ts.map +0 -1
  316. package/dist/generators/pipeline/transform-types.js +0 -18
  317. package/dist/generators/pipeline/transform-types.js.map +0 -1
  318. package/dist/generators/registry.d.ts +0 -64
  319. package/dist/generators/registry.js +0 -77
  320. package/dist/generators/registry.js.map +0 -1
  321. package/dist/generators/source-mapper.d.ts +0 -143
  322. package/dist/generators/source-mapper.d.ts.map +0 -1
  323. package/dist/generators/source-mapper.js +0 -602
  324. package/dist/generators/source-mapper.js.map +0 -1
  325. package/dist/generators/source-mapping-validator.d.ts +0 -118
  326. package/dist/generators/source-mapping-validator.d.ts.map +0 -1
  327. package/dist/generators/source-mapping-validator.js +0 -334
  328. package/dist/generators/source-mapping-validator.js.map +0 -1
  329. package/dist/generators/types.d.ts +0 -104
  330. package/dist/generators/types.js +0 -5
  331. package/dist/generators/types.js.map +0 -1
  332. package/dist/generators/warning-collector.d.ts +0 -144
  333. package/dist/generators/warning-collector.d.ts.map +0 -1
  334. package/dist/generators/warning-collector.js +0 -166
  335. package/dist/generators/warning-collector.js.map +0 -1
  336. package/dist/git/branch-diff.d.ts +0 -44
  337. package/dist/git/branch-diff.d.ts.map +0 -1
  338. package/dist/git/branch-diff.js +0 -57
  339. package/dist/git/branch-diff.js.map +0 -1
  340. package/dist/git/helpers.d.ts +0 -46
  341. package/dist/git/helpers.d.ts.map +0 -1
  342. package/dist/git/helpers.js +0 -67
  343. package/dist/git/helpers.js.map +0 -1
  344. package/dist/git/index.d.ts +0 -18
  345. package/dist/git/index.d.ts.map +0 -1
  346. package/dist/git/index.js +0 -18
  347. package/dist/git/index.js.map +0 -1
  348. package/dist/git/name-status.d.ts +0 -32
  349. package/dist/git/name-status.d.ts.map +0 -1
  350. package/dist/git/name-status.js +0 -66
  351. package/dist/git/name-status.js.map +0 -1
  352. package/dist/index.d.ts +0 -107
  353. package/dist/index.js +0 -122
  354. package/dist/index.js.map +0 -1
  355. package/dist/lint/engine.d.ts +0 -113
  356. package/dist/lint/engine.d.ts.map +0 -1
  357. package/dist/lint/engine.js +0 -228
  358. package/dist/lint/engine.js.map +0 -1
  359. package/dist/lint/index.d.ts +0 -26
  360. package/dist/lint/index.d.ts.map +0 -1
  361. package/dist/lint/index.js +0 -24
  362. package/dist/lint/index.js.map +0 -1
  363. package/dist/lint/process-guard/decider.d.ts +0 -166
  364. package/dist/lint/process-guard/decider.d.ts.map +0 -1
  365. package/dist/lint/process-guard/decider.js +0 -412
  366. package/dist/lint/process-guard/decider.js.map +0 -1
  367. package/dist/lint/process-guard/derive-state.d.ts +0 -96
  368. package/dist/lint/process-guard/derive-state.d.ts.map +0 -1
  369. package/dist/lint/process-guard/derive-state.js +0 -368
  370. package/dist/lint/process-guard/derive-state.js.map +0 -1
  371. package/dist/lint/process-guard/detect-changes.d.ts +0 -109
  372. package/dist/lint/process-guard/detect-changes.d.ts.map +0 -1
  373. package/dist/lint/process-guard/detect-changes.js +0 -487
  374. package/dist/lint/process-guard/detect-changes.js.map +0 -1
  375. package/dist/lint/process-guard/index.d.ts +0 -35
  376. package/dist/lint/process-guard/index.d.ts.map +0 -1
  377. package/dist/lint/process-guard/index.js +0 -39
  378. package/dist/lint/process-guard/index.js.map +0 -1
  379. package/dist/lint/process-guard/types.d.ts +0 -255
  380. package/dist/lint/process-guard/types.d.ts.map +0 -1
  381. package/dist/lint/process-guard/types.js +0 -31
  382. package/dist/lint/process-guard/types.js.map +0 -1
  383. package/dist/lint/rules.d.ts +0 -147
  384. package/dist/lint/rules.d.ts.map +0 -1
  385. package/dist/lint/rules.js +0 -289
  386. package/dist/lint/rules.js.map +0 -1
  387. package/dist/lint/steps/cross-checks.d.ts +0 -66
  388. package/dist/lint/steps/cross-checks.d.ts.map +0 -1
  389. package/dist/lint/steps/cross-checks.js +0 -290
  390. package/dist/lint/steps/cross-checks.js.map +0 -1
  391. package/dist/lint/steps/feature-checks.d.ts +0 -78
  392. package/dist/lint/steps/feature-checks.d.ts.map +0 -1
  393. package/dist/lint/steps/feature-checks.js +0 -279
  394. package/dist/lint/steps/feature-checks.js.map +0 -1
  395. package/dist/lint/steps/index.d.ts +0 -22
  396. package/dist/lint/steps/index.d.ts.map +0 -1
  397. package/dist/lint/steps/index.js +0 -26
  398. package/dist/lint/steps/index.js.map +0 -1
  399. package/dist/lint/steps/pair-resolver.d.ts +0 -29
  400. package/dist/lint/steps/pair-resolver.d.ts.map +0 -1
  401. package/dist/lint/steps/pair-resolver.js +0 -76
  402. package/dist/lint/steps/pair-resolver.js.map +0 -1
  403. package/dist/lint/steps/runner.d.ts +0 -28
  404. package/dist/lint/steps/runner.d.ts.map +0 -1
  405. package/dist/lint/steps/runner.js +0 -143
  406. package/dist/lint/steps/runner.js.map +0 -1
  407. package/dist/lint/steps/step-checks.d.ts +0 -41
  408. package/dist/lint/steps/step-checks.d.ts.map +0 -1
  409. package/dist/lint/steps/step-checks.js +0 -164
  410. package/dist/lint/steps/step-checks.js.map +0 -1
  411. package/dist/lint/steps/types.d.ts +0 -95
  412. package/dist/lint/steps/types.d.ts.map +0 -1
  413. package/dist/lint/steps/types.js +0 -79
  414. package/dist/lint/steps/types.js.map +0 -1
  415. package/dist/lint/steps/utils.d.ts +0 -22
  416. package/dist/lint/steps/utils.d.ts.map +0 -1
  417. package/dist/lint/steps/utils.js +0 -57
  418. package/dist/lint/steps/utils.js.map +0 -1
  419. package/dist/mcp/file-watcher.d.ts +0 -24
  420. package/dist/mcp/file-watcher.js +0 -75
  421. package/dist/mcp/file-watcher.js.map +0 -1
  422. package/dist/mcp/index.d.ts +0 -19
  423. package/dist/mcp/index.js +0 -21
  424. package/dist/mcp/index.js.map +0 -1
  425. package/dist/mcp/pipeline-session.d.ts +0 -33
  426. package/dist/mcp/pipeline-session.js +0 -149
  427. package/dist/mcp/pipeline-session.js.map +0 -1
  428. package/dist/mcp/server.d.ts +0 -28
  429. package/dist/mcp/server.js +0 -197
  430. package/dist/mcp/server.js.map +0 -1
  431. package/dist/mcp/tool-registry.d.ts +0 -4
  432. package/dist/mcp/tool-registry.js +0 -525
  433. package/dist/mcp/tool-registry.js.map +0 -1
  434. package/dist/renderable/codecs/adr.d.ts +0 -4730
  435. package/dist/renderable/codecs/adr.d.ts.map +0 -1
  436. package/dist/renderable/codecs/adr.js +0 -590
  437. package/dist/renderable/codecs/adr.js.map +0 -1
  438. package/dist/renderable/codecs/architecture.d.ts +0 -4760
  439. package/dist/renderable/codecs/architecture.d.ts.map +0 -1
  440. package/dist/renderable/codecs/architecture.js +0 -524
  441. package/dist/renderable/codecs/architecture.js.map +0 -1
  442. package/dist/renderable/codecs/business-rules.d.ts +0 -4777
  443. package/dist/renderable/codecs/business-rules.d.ts.map +0 -1
  444. package/dist/renderable/codecs/business-rules.js +0 -648
  445. package/dist/renderable/codecs/business-rules.js.map +0 -1
  446. package/dist/renderable/codecs/claude-module.d.ts +0 -4710
  447. package/dist/renderable/codecs/claude-module.d.ts.map +0 -1
  448. package/dist/renderable/codecs/claude-module.js +0 -214
  449. package/dist/renderable/codecs/claude-module.js.map +0 -1
  450. package/dist/renderable/codecs/composite.d.ts +0 -84
  451. package/dist/renderable/codecs/composite.d.ts.map +0 -1
  452. package/dist/renderable/codecs/composite.js +0 -124
  453. package/dist/renderable/codecs/composite.js.map +0 -1
  454. package/dist/renderable/codecs/convention-extractor.d.ts +0 -105
  455. package/dist/renderable/codecs/convention-extractor.d.ts.map +0 -1
  456. package/dist/renderable/codecs/convention-extractor.js +0 -353
  457. package/dist/renderable/codecs/convention-extractor.js.map +0 -1
  458. package/dist/renderable/codecs/decision-doc.d.ts +0 -308
  459. package/dist/renderable/codecs/decision-doc.d.ts.map +0 -1
  460. package/dist/renderable/codecs/decision-doc.js +0 -485
  461. package/dist/renderable/codecs/decision-doc.js.map +0 -1
  462. package/dist/renderable/codecs/design-review.d.ts +0 -55
  463. package/dist/renderable/codecs/design-review.d.ts.map +0 -1
  464. package/dist/renderable/codecs/design-review.js +0 -532
  465. package/dist/renderable/codecs/design-review.js.map +0 -1
  466. package/dist/renderable/codecs/diagram-utils.d.ts +0 -62
  467. package/dist/renderable/codecs/diagram-utils.d.ts.map +0 -1
  468. package/dist/renderable/codecs/diagram-utils.js +0 -70
  469. package/dist/renderable/codecs/diagram-utils.js.map +0 -1
  470. package/dist/renderable/codecs/helpers.d.ts +0 -553
  471. package/dist/renderable/codecs/helpers.d.ts.map +0 -1
  472. package/dist/renderable/codecs/helpers.js +0 -913
  473. package/dist/renderable/codecs/helpers.js.map +0 -1
  474. package/dist/renderable/codecs/index-codec.d.ts +0 -4714
  475. package/dist/renderable/codecs/index.d.ts +0 -46
  476. package/dist/renderable/codecs/index.d.ts.map +0 -1
  477. package/dist/renderable/codecs/index.js +0 -70
  478. package/dist/renderable/codecs/index.js.map +0 -1
  479. package/dist/renderable/codecs/patterns.d.ts +0 -4757
  480. package/dist/renderable/codecs/patterns.d.ts.map +0 -1
  481. package/dist/renderable/codecs/patterns.js +0 -462
  482. package/dist/renderable/codecs/patterns.js.map +0 -1
  483. package/dist/renderable/codecs/planning.d.ts +0 -14055
  484. package/dist/renderable/codecs/planning.d.ts.map +0 -1
  485. package/dist/renderable/codecs/planning.js +0 -449
  486. package/dist/renderable/codecs/planning.js.map +0 -1
  487. package/dist/renderable/codecs/pr-changes.d.ts +0 -4742
  488. package/dist/renderable/codecs/pr-changes.d.ts.map +0 -1
  489. package/dist/renderable/codecs/pr-changes.js +0 -425
  490. package/dist/renderable/codecs/pr-changes.js.map +0 -1
  491. package/dist/renderable/codecs/reference.d.ts +0 -215
  492. package/dist/renderable/codecs/reference.d.ts.map +0 -1
  493. package/dist/renderable/codecs/reference.js +0 -1578
  494. package/dist/renderable/codecs/reference.js.map +0 -1
  495. package/dist/renderable/codecs/reporting.d.ts +0 -14026
  496. package/dist/renderable/codecs/reporting.d.ts.map +0 -1
  497. package/dist/renderable/codecs/reporting.js +0 -365
  498. package/dist/renderable/codecs/reporting.js.map +0 -1
  499. package/dist/renderable/codecs/requirements.d.ts +0 -4743
  500. package/dist/renderable/codecs/requirements.d.ts.map +0 -1
  501. package/dist/renderable/codecs/requirements.js +0 -428
  502. package/dist/renderable/codecs/requirements.js.map +0 -1
  503. package/dist/renderable/codecs/session.d.ts +0 -9410
  504. package/dist/renderable/codecs/session.d.ts.map +0 -1
  505. package/dist/renderable/codecs/session.js +0 -848
  506. package/dist/renderable/codecs/session.js.map +0 -1
  507. package/dist/renderable/codecs/shape-matcher.d.ts +0 -54
  508. package/dist/renderable/codecs/shape-matcher.d.ts.map +0 -1
  509. package/dist/renderable/codecs/shape-matcher.js +0 -106
  510. package/dist/renderable/codecs/shape-matcher.js.map +0 -1
  511. package/dist/renderable/codecs/shared-schema.d.ts +0 -44
  512. package/dist/renderable/codecs/shared-schema.d.ts.map +0 -1
  513. package/dist/renderable/codecs/shared-schema.js +0 -43
  514. package/dist/renderable/codecs/shared-schema.js.map +0 -1
  515. package/dist/renderable/codecs/taxonomy.d.ts +0 -4733
  516. package/dist/renderable/codecs/taxonomy.d.ts.map +0 -1
  517. package/dist/renderable/codecs/taxonomy.js +0 -570
  518. package/dist/renderable/codecs/taxonomy.js.map +0 -1
  519. package/dist/renderable/codecs/timeline.d.ts +0 -14094
  520. package/dist/renderable/codecs/timeline.d.ts.map +0 -1
  521. package/dist/renderable/codecs/timeline.js +0 -906
  522. package/dist/renderable/codecs/timeline.js.map +0 -1
  523. package/dist/renderable/codecs/types/base.d.ts +0 -81
  524. package/dist/renderable/codecs/types/base.d.ts.map +0 -1
  525. package/dist/renderable/codecs/types/base.js +0 -56
  526. package/dist/renderable/codecs/types/base.js.map +0 -1
  527. package/dist/renderable/codecs/types/index.d.ts +0 -5
  528. package/dist/renderable/codecs/types/index.d.ts.map +0 -1
  529. package/dist/renderable/codecs/types/index.js +0 -5
  530. package/dist/renderable/codecs/types/index.js.map +0 -1
  531. package/dist/renderable/codecs/validation-rules.d.ts +0 -4773
  532. package/dist/renderable/codecs/validation-rules.d.ts.map +0 -1
  533. package/dist/renderable/codecs/validation-rules.js +0 -537
  534. package/dist/renderable/codecs/validation-rules.js.map +0 -1
  535. package/dist/renderable/generate.d.ts +0 -338
  536. package/dist/renderable/generate.d.ts.map +0 -1
  537. package/dist/renderable/generate.js +0 -437
  538. package/dist/renderable/generate.js.map +0 -1
  539. package/dist/renderable/index.d.ts +0 -36
  540. package/dist/renderable/index.d.ts.map +0 -1
  541. package/dist/renderable/index.js +0 -58
  542. package/dist/renderable/index.js.map +0 -1
  543. package/dist/renderable/load-preamble.d.ts +0 -56
  544. package/dist/renderable/load-preamble.d.ts.map +0 -1
  545. package/dist/renderable/load-preamble.js +0 -298
  546. package/dist/renderable/load-preamble.js.map +0 -1
  547. package/dist/renderable/render.d.ts +0 -61
  548. package/dist/renderable/render.d.ts.map +0 -1
  549. package/dist/renderable/render.js +0 -346
  550. package/dist/renderable/render.js.map +0 -1
  551. package/dist/renderable/schema.d.ts +0 -194
  552. package/dist/renderable/schema.d.ts.map +0 -1
  553. package/dist/renderable/schema.js +0 -197
  554. package/dist/renderable/schema.js.map +0 -1
  555. package/dist/renderable/utils.d.ts +0 -146
  556. package/dist/renderable/utils.d.ts.map +0 -1
  557. package/dist/renderable/utils.js +0 -362
  558. package/dist/renderable/utils.js.map +0 -1
  559. package/dist/scanner/ast-parser.d.ts +0 -75
  560. package/dist/scanner/ast-parser.d.ts.map +0 -1
  561. package/dist/scanner/ast-parser.js +0 -835
  562. package/dist/scanner/ast-parser.js.map +0 -1
  563. package/dist/scanner/gherkin-ast-parser.d.ts +0 -166
  564. package/dist/scanner/gherkin-ast-parser.d.ts.map +0 -1
  565. package/dist/scanner/gherkin-ast-parser.js +0 -507
  566. package/dist/scanner/gherkin-ast-parser.js.map +0 -1
  567. package/dist/scanner/gherkin-scanner.d.ts +0 -106
  568. package/dist/scanner/gherkin-scanner.d.ts.map +0 -1
  569. package/dist/scanner/gherkin-scanner.js +0 -149
  570. package/dist/scanner/gherkin-scanner.js.map +0 -1
  571. package/dist/scanner/index.d.ts +0 -85
  572. package/dist/scanner/index.d.ts.map +0 -1
  573. package/dist/scanner/index.js +0 -102
  574. package/dist/scanner/index.js.map +0 -1
  575. package/dist/scanner/pattern-scanner.d.ts +0 -83
  576. package/dist/scanner/pattern-scanner.d.ts.map +0 -1
  577. package/dist/scanner/pattern-scanner.js +0 -110
  578. package/dist/scanner/pattern-scanner.js.map +0 -1
  579. package/dist/taxonomy/categories.d.ts +0 -47
  580. package/dist/taxonomy/categories.d.ts.map +0 -1
  581. package/dist/taxonomy/categories.js +0 -175
  582. package/dist/taxonomy/categories.js.map +0 -1
  583. package/dist/taxonomy/claude-section-values.d.ts +0 -12
  584. package/dist/taxonomy/claude-section-values.d.ts.map +0 -1
  585. package/dist/taxonomy/claude-section-values.js +0 -17
  586. package/dist/taxonomy/claude-section-values.js.map +0 -1
  587. package/dist/taxonomy/conventions.d.ts +0 -13
  588. package/dist/taxonomy/conventions.d.ts.map +0 -1
  589. package/dist/taxonomy/conventions.js +0 -27
  590. package/dist/taxonomy/conventions.js.map +0 -1
  591. package/dist/taxonomy/deliverable-status.d.ts +0 -99
  592. package/dist/taxonomy/deliverable-status.d.ts.map +0 -1
  593. package/dist/taxonomy/deliverable-status.js +0 -131
  594. package/dist/taxonomy/deliverable-status.js.map +0 -1
  595. package/dist/taxonomy/format-types.d.ts +0 -17
  596. package/dist/taxonomy/format-types.d.ts.map +0 -1
  597. package/dist/taxonomy/format-types.js +0 -23
  598. package/dist/taxonomy/format-types.js.map +0 -1
  599. package/dist/taxonomy/generator-options.d.ts +0 -67
  600. package/dist/taxonomy/generator-options.d.ts.map +0 -1
  601. package/dist/taxonomy/generator-options.js +0 -75
  602. package/dist/taxonomy/generator-options.js.map +0 -1
  603. package/dist/taxonomy/hierarchy-levels.d.ts +0 -23
  604. package/dist/taxonomy/hierarchy-levels.d.ts.map +0 -1
  605. package/dist/taxonomy/hierarchy-levels.js +0 -22
  606. package/dist/taxonomy/hierarchy-levels.js.map +0 -1
  607. package/dist/taxonomy/index.d.ts +0 -35
  608. package/dist/taxonomy/index.d.ts.map +0 -1
  609. package/dist/taxonomy/index.js +0 -56
  610. package/dist/taxonomy/index.js.map +0 -1
  611. package/dist/taxonomy/layer-types.d.ts +0 -22
  612. package/dist/taxonomy/layer-types.d.ts.map +0 -1
  613. package/dist/taxonomy/layer-types.js +0 -28
  614. package/dist/taxonomy/layer-types.js.map +0 -1
  615. package/dist/taxonomy/normalized-status.d.ts +0 -99
  616. package/dist/taxonomy/normalized-status.d.ts.map +0 -1
  617. package/dist/taxonomy/normalized-status.js +0 -113
  618. package/dist/taxonomy/normalized-status.js.map +0 -1
  619. package/dist/taxonomy/registry-builder.d.ts +0 -104
  620. package/dist/taxonomy/registry-builder.d.ts.map +0 -1
  621. package/dist/taxonomy/registry-builder.js +0 -561
  622. package/dist/taxonomy/registry-builder.js.map +0 -1
  623. package/dist/taxonomy/risk-levels.d.ts +0 -16
  624. package/dist/taxonomy/risk-levels.d.ts.map +0 -1
  625. package/dist/taxonomy/risk-levels.js +0 -15
  626. package/dist/taxonomy/risk-levels.js.map +0 -1
  627. package/dist/taxonomy/severity-types.d.ts +0 -6
  628. package/dist/taxonomy/severity-types.d.ts.map +0 -1
  629. package/dist/taxonomy/severity-types.js +0 -5
  630. package/dist/taxonomy/severity-types.js.map +0 -1
  631. package/dist/taxonomy/status-values.d.ts +0 -39
  632. package/dist/taxonomy/status-values.d.ts.map +0 -1
  633. package/dist/taxonomy/status-values.js +0 -42
  634. package/dist/taxonomy/status-values.js.map +0 -1
  635. package/dist/types/branded.d.ts +0 -89
  636. package/dist/types/branded.d.ts.map +0 -1
  637. package/dist/types/branded.js +0 -57
  638. package/dist/types/branded.js.map +0 -1
  639. package/dist/types/errors.d.ts +0 -342
  640. package/dist/types/errors.d.ts.map +0 -1
  641. package/dist/types/errors.js +0 -251
  642. package/dist/types/errors.js.map +0 -1
  643. package/dist/types/index.d.ts +0 -41
  644. package/dist/types/index.d.ts.map +0 -1
  645. package/dist/types/index.js +0 -5
  646. package/dist/types/index.js.map +0 -1
  647. package/dist/types/result.d.ts +0 -78
  648. package/dist/types/result.d.ts.map +0 -1
  649. package/dist/types/result.js +0 -78
  650. package/dist/types/result.js.map +0 -1
  651. package/dist/utils/collection-utils.d.ts +0 -49
  652. package/dist/utils/collection-utils.d.ts.map +0 -1
  653. package/dist/utils/collection-utils.js +0 -58
  654. package/dist/utils/collection-utils.js.map +0 -1
  655. package/dist/utils/id-utils.d.ts +0 -46
  656. package/dist/utils/id-utils.d.ts.map +0 -1
  657. package/dist/utils/id-utils.js +0 -51
  658. package/dist/utils/id-utils.js.map +0 -1
  659. package/dist/utils/index.d.ts +0 -21
  660. package/dist/utils/index.d.ts.map +0 -1
  661. package/dist/utils/index.js +0 -21
  662. package/dist/utils/index.js.map +0 -1
  663. package/dist/utils/string-utils.d.ts +0 -150
  664. package/dist/utils/string-utils.d.ts.map +0 -1
  665. package/dist/utils/string-utils.js +0 -281
  666. package/dist/utils/string-utils.js.map +0 -1
  667. package/dist/validation/anti-patterns.d.ts +0 -134
  668. package/dist/validation/anti-patterns.d.ts.map +0 -1
  669. package/dist/validation/anti-patterns.js +0 -307
  670. package/dist/validation/anti-patterns.js.map +0 -1
  671. package/dist/validation/dod-validator.d.ts +0 -94
  672. package/dist/validation/dod-validator.d.ts.map +0 -1
  673. package/dist/validation/dod-validator.js +0 -198
  674. package/dist/validation/dod-validator.js.map +0 -1
  675. package/dist/validation/fsm/index.d.ts +0 -59
  676. package/dist/validation/fsm/index.d.ts.map +0 -1
  677. package/dist/validation/fsm/index.js +0 -64
  678. package/dist/validation/fsm/index.js.map +0 -1
  679. package/dist/validation/fsm/states.d.ts +0 -93
  680. package/dist/validation/fsm/states.d.ts.map +0 -1
  681. package/dist/validation/fsm/states.js +0 -98
  682. package/dist/validation/fsm/states.js.map +0 -1
  683. package/dist/validation/fsm/transitions.d.ts +0 -100
  684. package/dist/validation/fsm/transitions.d.ts.map +0 -1
  685. package/dist/validation/fsm/transitions.js +0 -122
  686. package/dist/validation/fsm/transitions.js.map +0 -1
  687. package/dist/validation/fsm/validator.d.ts +0 -163
  688. package/dist/validation/fsm/validator.d.ts.map +0 -1
  689. package/dist/validation/fsm/validator.js +0 -205
  690. package/dist/validation/fsm/validator.js.map +0 -1
  691. package/dist/validation/index.d.ts +0 -23
  692. package/dist/validation/index.d.ts.map +0 -1
  693. package/dist/validation/index.js +0 -25
  694. package/dist/validation/index.js.map +0 -1
  695. package/dist/validation/types.d.ts +0 -136
  696. package/dist/validation/types.d.ts.map +0 -1
  697. package/dist/validation/types.js +0 -56
  698. package/dist/validation/types.js.map +0 -1
  699. package/dist/validation-schemas/codec-utils.d.ts +0 -188
  700. package/dist/validation-schemas/codec-utils.d.ts.map +0 -1
  701. package/dist/validation-schemas/codec-utils.js +0 -258
  702. package/dist/validation-schemas/codec-utils.js.map +0 -1
  703. package/dist/validation-schemas/config.d.ts +0 -99
  704. package/dist/validation-schemas/config.d.ts.map +0 -1
  705. package/dist/validation-schemas/config.js +0 -178
  706. package/dist/validation-schemas/config.js.map +0 -1
  707. package/dist/validation-schemas/doc-directive.d.ts +0 -195
  708. package/dist/validation-schemas/doc-directive.d.ts.map +0 -1
  709. package/dist/validation-schemas/doc-directive.js +0 -239
  710. package/dist/validation-schemas/doc-directive.js.map +0 -1
  711. package/dist/validation-schemas/dual-source.d.ts +0 -167
  712. package/dist/validation-schemas/dual-source.d.ts.map +0 -1
  713. package/dist/validation-schemas/dual-source.js +0 -168
  714. package/dist/validation-schemas/dual-source.js.map +0 -1
  715. package/dist/validation-schemas/export-info.d.ts +0 -53
  716. package/dist/validation-schemas/export-info.d.ts.map +0 -1
  717. package/dist/validation-schemas/export-info.js +0 -101
  718. package/dist/validation-schemas/export-info.js.map +0 -1
  719. package/dist/validation-schemas/extracted-pattern.d.ts +0 -351
  720. package/dist/validation-schemas/extracted-pattern.d.ts.map +0 -1
  721. package/dist/validation-schemas/extracted-pattern.js +0 -459
  722. package/dist/validation-schemas/extracted-pattern.js.map +0 -1
  723. package/dist/validation-schemas/extracted-shape.d.ts +0 -200
  724. package/dist/validation-schemas/extracted-shape.d.ts.map +0 -1
  725. package/dist/validation-schemas/extracted-shape.js +0 -182
  726. package/dist/validation-schemas/extracted-shape.js.map +0 -1
  727. package/dist/validation-schemas/feature.d.ts +0 -554
  728. package/dist/validation-schemas/feature.d.ts.map +0 -1
  729. package/dist/validation-schemas/feature.js +0 -262
  730. package/dist/validation-schemas/feature.js.map +0 -1
  731. package/dist/validation-schemas/index.d.ts +0 -15
  732. package/dist/validation-schemas/index.d.ts.map +0 -1
  733. package/dist/validation-schemas/index.js +0 -32
  734. package/dist/validation-schemas/index.js.map +0 -1
  735. package/dist/validation-schemas/lint.d.ts +0 -46
  736. package/dist/validation-schemas/lint.d.ts.map +0 -1
  737. package/dist/validation-schemas/lint.js +0 -45
  738. package/dist/validation-schemas/lint.js.map +0 -1
  739. package/dist/validation-schemas/master-dataset.d.ts +0 -8299
  740. package/dist/validation-schemas/master-dataset.d.ts.map +0 -1
  741. package/dist/validation-schemas/master-dataset.js +0 -275
  742. package/dist/validation-schemas/master-dataset.js.map +0 -1
  743. package/dist/validation-schemas/output-schemas.d.ts +0 -183
  744. package/dist/validation-schemas/output-schemas.d.ts.map +0 -1
  745. package/dist/validation-schemas/output-schemas.js +0 -149
  746. package/dist/validation-schemas/output-schemas.js.map +0 -1
  747. package/dist/validation-schemas/scenario-ref.d.ts +0 -80
  748. package/dist/validation-schemas/scenario-ref.d.ts.map +0 -1
  749. package/dist/validation-schemas/scenario-ref.js +0 -73
  750. package/dist/validation-schemas/scenario-ref.js.map +0 -1
  751. package/dist/validation-schemas/tag-registry.d.ts +0 -210
  752. package/dist/validation-schemas/tag-registry.d.ts.map +0 -1
  753. package/dist/validation-schemas/tag-registry.js +0 -248
  754. package/dist/validation-schemas/tag-registry.js.map +0 -1
  755. package/dist/validation-schemas/workflow-config.d.ts +0 -125
  756. package/dist/validation-schemas/workflow-config.d.ts.map +0 -1
  757. package/dist/validation-schemas/workflow-config.js +0 -138
  758. 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