@memoarchitect/tools 0.4.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 (588) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -0
  3. package/package.json +86 -0
  4. package/packages/tools/lib/__tests__/archetype-parsing.test.d.ts +2 -0
  5. package/packages/tools/lib/__tests__/archetype-parsing.test.d.ts.map +1 -0
  6. package/packages/tools/lib/__tests__/archetype-parsing.test.js +42 -0
  7. package/packages/tools/lib/__tests__/archetype-parsing.test.js.map +1 -0
  8. package/packages/tools/lib/__tests__/architecture-discovery.test.d.ts +2 -0
  9. package/packages/tools/lib/__tests__/architecture-discovery.test.d.ts.map +1 -0
  10. package/packages/tools/lib/__tests__/architecture-discovery.test.js +82 -0
  11. package/packages/tools/lib/__tests__/architecture-discovery.test.js.map +1 -0
  12. package/packages/tools/lib/__tests__/behavior.test.d.ts +2 -0
  13. package/packages/tools/lib/__tests__/behavior.test.d.ts.map +1 -0
  14. package/packages/tools/lib/__tests__/behavior.test.js +766 -0
  15. package/packages/tools/lib/__tests__/behavior.test.js.map +1 -0
  16. package/packages/tools/lib/__tests__/builder.test.d.ts +2 -0
  17. package/packages/tools/lib/__tests__/builder.test.d.ts.map +1 -0
  18. package/packages/tools/lib/__tests__/builder.test.js +728 -0
  19. package/packages/tools/lib/__tests__/builder.test.js.map +1 -0
  20. package/packages/tools/lib/__tests__/config-loader.test.d.ts +2 -0
  21. package/packages/tools/lib/__tests__/config-loader.test.d.ts.map +1 -0
  22. package/packages/tools/lib/__tests__/config-loader.test.js +196 -0
  23. package/packages/tools/lib/__tests__/config-loader.test.js.map +1 -0
  24. package/packages/tools/lib/__tests__/conformance.test.d.ts +2 -0
  25. package/packages/tools/lib/__tests__/conformance.test.d.ts.map +1 -0
  26. package/packages/tools/lib/__tests__/conformance.test.js +467 -0
  27. package/packages/tools/lib/__tests__/conformance.test.js.map +1 -0
  28. package/packages/tools/lib/__tests__/constraint-eval.test.d.ts +2 -0
  29. package/packages/tools/lib/__tests__/constraint-eval.test.d.ts.map +1 -0
  30. package/packages/tools/lib/__tests__/constraint-eval.test.js +195 -0
  31. package/packages/tools/lib/__tests__/constraint-eval.test.js.map +1 -0
  32. package/packages/tools/lib/__tests__/constraint-grammar.test.d.ts +2 -0
  33. package/packages/tools/lib/__tests__/constraint-grammar.test.d.ts.map +1 -0
  34. package/packages/tools/lib/__tests__/constraint-grammar.test.js +163 -0
  35. package/packages/tools/lib/__tests__/constraint-grammar.test.js.map +1 -0
  36. package/packages/tools/lib/__tests__/constraint-loader.test.d.ts +2 -0
  37. package/packages/tools/lib/__tests__/constraint-loader.test.d.ts.map +1 -0
  38. package/packages/tools/lib/__tests__/constraint-loader.test.js +150 -0
  39. package/packages/tools/lib/__tests__/constraint-loader.test.js.map +1 -0
  40. package/packages/tools/lib/__tests__/csv-io.test.d.ts +2 -0
  41. package/packages/tools/lib/__tests__/csv-io.test.d.ts.map +1 -0
  42. package/packages/tools/lib/__tests__/csv-io.test.js +317 -0
  43. package/packages/tools/lib/__tests__/csv-io.test.js.map +1 -0
  44. package/packages/tools/lib/__tests__/dhf-doc-store.test.d.ts +2 -0
  45. package/packages/tools/lib/__tests__/dhf-doc-store.test.d.ts.map +1 -0
  46. package/packages/tools/lib/__tests__/dhf-doc-store.test.js +94 -0
  47. package/packages/tools/lib/__tests__/dhf-doc-store.test.js.map +1 -0
  48. package/packages/tools/lib/__tests__/dhf-template-resolver.test.d.ts +2 -0
  49. package/packages/tools/lib/__tests__/dhf-template-resolver.test.d.ts.map +1 -0
  50. package/packages/tools/lib/__tests__/dhf-template-resolver.test.js +39 -0
  51. package/packages/tools/lib/__tests__/dhf-template-resolver.test.js.map +1 -0
  52. package/packages/tools/lib/__tests__/dhf.test.d.ts +2 -0
  53. package/packages/tools/lib/__tests__/dhf.test.d.ts.map +1 -0
  54. package/packages/tools/lib/__tests__/dhf.test.js +393 -0
  55. package/packages/tools/lib/__tests__/dhf.test.js.map +1 -0
  56. package/packages/tools/lib/__tests__/dimension-filter.test.d.ts +2 -0
  57. package/packages/tools/lib/__tests__/dimension-filter.test.d.ts.map +1 -0
  58. package/packages/tools/lib/__tests__/dimension-filter.test.js +85 -0
  59. package/packages/tools/lib/__tests__/dimension-filter.test.js.map +1 -0
  60. package/packages/tools/lib/__tests__/dsm.test.d.ts +2 -0
  61. package/packages/tools/lib/__tests__/dsm.test.d.ts.map +1 -0
  62. package/packages/tools/lib/__tests__/dsm.test.js +112 -0
  63. package/packages/tools/lib/__tests__/dsm.test.js.map +1 -0
  64. package/packages/tools/lib/__tests__/e2e-workflow.test.d.ts +2 -0
  65. package/packages/tools/lib/__tests__/e2e-workflow.test.d.ts.map +1 -0
  66. package/packages/tools/lib/__tests__/e2e-workflow.test.js +707 -0
  67. package/packages/tools/lib/__tests__/e2e-workflow.test.js.map +1 -0
  68. package/packages/tools/lib/__tests__/file-watcher.test.d.ts +2 -0
  69. package/packages/tools/lib/__tests__/file-watcher.test.d.ts.map +1 -0
  70. package/packages/tools/lib/__tests__/file-watcher.test.js +31 -0
  71. package/packages/tools/lib/__tests__/file-watcher.test.js.map +1 -0
  72. package/packages/tools/lib/__tests__/impact.test.d.ts +2 -0
  73. package/packages/tools/lib/__tests__/impact.test.d.ts.map +1 -0
  74. package/packages/tools/lib/__tests__/impact.test.js +82 -0
  75. package/packages/tools/lib/__tests__/impact.test.js.map +1 -0
  76. package/packages/tools/lib/__tests__/importer.test.d.ts +2 -0
  77. package/packages/tools/lib/__tests__/importer.test.d.ts.map +1 -0
  78. package/packages/tools/lib/__tests__/importer.test.js +336 -0
  79. package/packages/tools/lib/__tests__/importer.test.js.map +1 -0
  80. package/packages/tools/lib/__tests__/kind-registry.test.d.ts +2 -0
  81. package/packages/tools/lib/__tests__/kind-registry.test.d.ts.map +1 -0
  82. package/packages/tools/lib/__tests__/kind-registry.test.js +132 -0
  83. package/packages/tools/lib/__tests__/kind-registry.test.js.map +1 -0
  84. package/packages/tools/lib/__tests__/llm.test.d.ts +2 -0
  85. package/packages/tools/lib/__tests__/llm.test.d.ts.map +1 -0
  86. package/packages/tools/lib/__tests__/llm.test.js +275 -0
  87. package/packages/tools/lib/__tests__/llm.test.js.map +1 -0
  88. package/packages/tools/lib/__tests__/manifest-resolver.test.d.ts +2 -0
  89. package/packages/tools/lib/__tests__/manifest-resolver.test.d.ts.map +1 -0
  90. package/packages/tools/lib/__tests__/manifest-resolver.test.js +97 -0
  91. package/packages/tools/lib/__tests__/manifest-resolver.test.js.map +1 -0
  92. package/packages/tools/lib/__tests__/markdown-to-ir.test.d.ts +2 -0
  93. package/packages/tools/lib/__tests__/markdown-to-ir.test.d.ts.map +1 -0
  94. package/packages/tools/lib/__tests__/markdown-to-ir.test.js +74 -0
  95. package/packages/tools/lib/__tests__/markdown-to-ir.test.js.map +1 -0
  96. package/packages/tools/lib/__tests__/methodology-scope.test.d.ts +2 -0
  97. package/packages/tools/lib/__tests__/methodology-scope.test.d.ts.map +1 -0
  98. package/packages/tools/lib/__tests__/methodology-scope.test.js +59 -0
  99. package/packages/tools/lib/__tests__/methodology-scope.test.js.map +1 -0
  100. package/packages/tools/lib/__tests__/parser.test.d.ts +2 -0
  101. package/packages/tools/lib/__tests__/parser.test.d.ts.map +1 -0
  102. package/packages/tools/lib/__tests__/parser.test.js +938 -0
  103. package/packages/tools/lib/__tests__/parser.test.js.map +1 -0
  104. package/packages/tools/lib/__tests__/plugin.test.d.ts +2 -0
  105. package/packages/tools/lib/__tests__/plugin.test.d.ts.map +1 -0
  106. package/packages/tools/lib/__tests__/plugin.test.js +308 -0
  107. package/packages/tools/lib/__tests__/plugin.test.js.map +1 -0
  108. package/packages/tools/lib/__tests__/relationship-registry.test.d.ts +2 -0
  109. package/packages/tools/lib/__tests__/relationship-registry.test.d.ts.map +1 -0
  110. package/packages/tools/lib/__tests__/relationship-registry.test.js +96 -0
  111. package/packages/tools/lib/__tests__/relationship-registry.test.js.map +1 -0
  112. package/packages/tools/lib/__tests__/rule-registry.test.d.ts +2 -0
  113. package/packages/tools/lib/__tests__/rule-registry.test.d.ts.map +1 -0
  114. package/packages/tools/lib/__tests__/rule-registry.test.js +53 -0
  115. package/packages/tools/lib/__tests__/rule-registry.test.js.map +1 -0
  116. package/packages/tools/lib/__tests__/toolchain.test.d.ts +2 -0
  117. package/packages/tools/lib/__tests__/toolchain.test.d.ts.map +1 -0
  118. package/packages/tools/lib/__tests__/toolchain.test.js +94 -0
  119. package/packages/tools/lib/__tests__/toolchain.test.js.map +1 -0
  120. package/packages/tools/lib/__tests__/view-deriver-samples.test.d.ts +2 -0
  121. package/packages/tools/lib/__tests__/view-deriver-samples.test.d.ts.map +1 -0
  122. package/packages/tools/lib/__tests__/view-deriver-samples.test.js +39 -0
  123. package/packages/tools/lib/__tests__/view-deriver-samples.test.js.map +1 -0
  124. package/packages/tools/lib/__tests__/view-kinds.test.d.ts +2 -0
  125. package/packages/tools/lib/__tests__/view-kinds.test.d.ts.map +1 -0
  126. package/packages/tools/lib/__tests__/view-kinds.test.js +263 -0
  127. package/packages/tools/lib/__tests__/view-kinds.test.js.map +1 -0
  128. package/packages/tools/lib/__tests__/view-layout-store.test.d.ts +2 -0
  129. package/packages/tools/lib/__tests__/view-layout-store.test.d.ts.map +1 -0
  130. package/packages/tools/lib/__tests__/view-layout-store.test.js +61 -0
  131. package/packages/tools/lib/__tests__/view-layout-store.test.js.map +1 -0
  132. package/packages/tools/lib/analysis/dsm.d.ts +47 -0
  133. package/packages/tools/lib/analysis/dsm.d.ts.map +1 -0
  134. package/packages/tools/lib/analysis/dsm.js +172 -0
  135. package/packages/tools/lib/analysis/dsm.js.map +1 -0
  136. package/packages/tools/lib/analysis/impact.d.ts +35 -0
  137. package/packages/tools/lib/analysis/impact.d.ts.map +1 -0
  138. package/packages/tools/lib/analysis/impact.js +97 -0
  139. package/packages/tools/lib/analysis/impact.js.map +1 -0
  140. package/packages/tools/lib/bin/memo.d.ts +3 -0
  141. package/packages/tools/lib/bin/memo.d.ts.map +1 -0
  142. package/packages/tools/lib/bin/memo.js +461 -0
  143. package/packages/tools/lib/bin/memo.js.map +1 -0
  144. package/packages/tools/lib/browser/index.d.ts +13 -0
  145. package/packages/tools/lib/browser/index.d.ts.map +1 -0
  146. package/packages/tools/lib/browser/index.js +11 -0
  147. package/packages/tools/lib/browser/index.js.map +1 -0
  148. package/packages/tools/lib/commands/archetype-loader.d.ts +15 -0
  149. package/packages/tools/lib/commands/archetype-loader.d.ts.map +1 -0
  150. package/packages/tools/lib/commands/archetype-loader.js +31 -0
  151. package/packages/tools/lib/commands/archetype-loader.js.map +1 -0
  152. package/packages/tools/lib/commands/ask.d.ts +6 -0
  153. package/packages/tools/lib/commands/ask.d.ts.map +1 -0
  154. package/packages/tools/lib/commands/ask.js +79 -0
  155. package/packages/tools/lib/commands/ask.js.map +1 -0
  156. package/packages/tools/lib/commands/check.d.ts +6 -0
  157. package/packages/tools/lib/commands/check.d.ts.map +1 -0
  158. package/packages/tools/lib/commands/check.js +214 -0
  159. package/packages/tools/lib/commands/check.js.map +1 -0
  160. package/packages/tools/lib/commands/create-package.d.ts +12 -0
  161. package/packages/tools/lib/commands/create-package.d.ts.map +1 -0
  162. package/packages/tools/lib/commands/create-package.js +293 -0
  163. package/packages/tools/lib/commands/create-package.js.map +1 -0
  164. package/packages/tools/lib/commands/dev.d.ts +6 -0
  165. package/packages/tools/lib/commands/dev.d.ts.map +1 -0
  166. package/packages/tools/lib/commands/dev.js +316 -0
  167. package/packages/tools/lib/commands/dev.js.map +1 -0
  168. package/packages/tools/lib/commands/dhf-draft.d.ts +8 -0
  169. package/packages/tools/lib/commands/dhf-draft.d.ts.map +1 -0
  170. package/packages/tools/lib/commands/dhf-draft.js +115 -0
  171. package/packages/tools/lib/commands/dhf-draft.js.map +1 -0
  172. package/packages/tools/lib/commands/dhf-init.d.ts +4 -0
  173. package/packages/tools/lib/commands/dhf-init.d.ts.map +1 -0
  174. package/packages/tools/lib/commands/dhf-init.js +270 -0
  175. package/packages/tools/lib/commands/dhf-init.js.map +1 -0
  176. package/packages/tools/lib/commands/dhf-preview.d.ts +4 -0
  177. package/packages/tools/lib/commands/dhf-preview.d.ts.map +1 -0
  178. package/packages/tools/lib/commands/dhf-preview.js +285 -0
  179. package/packages/tools/lib/commands/dhf-preview.js.map +1 -0
  180. package/packages/tools/lib/commands/dhf.d.ts +27 -0
  181. package/packages/tools/lib/commands/dhf.d.ts.map +1 -0
  182. package/packages/tools/lib/commands/dhf.js +334 -0
  183. package/packages/tools/lib/commands/dhf.js.map +1 -0
  184. package/packages/tools/lib/commands/export.d.ts +9 -0
  185. package/packages/tools/lib/commands/export.d.ts.map +1 -0
  186. package/packages/tools/lib/commands/export.js +136 -0
  187. package/packages/tools/lib/commands/export.js.map +1 -0
  188. package/packages/tools/lib/commands/generate.d.ts +6 -0
  189. package/packages/tools/lib/commands/generate.d.ts.map +1 -0
  190. package/packages/tools/lib/commands/generate.js +80 -0
  191. package/packages/tools/lib/commands/generate.js.map +1 -0
  192. package/packages/tools/lib/commands/import-ea.d.ts +32 -0
  193. package/packages/tools/lib/commands/import-ea.d.ts.map +1 -0
  194. package/packages/tools/lib/commands/import-ea.js +156 -0
  195. package/packages/tools/lib/commands/import-ea.js.map +1 -0
  196. package/packages/tools/lib/commands/import-owl.d.ts +19 -0
  197. package/packages/tools/lib/commands/import-owl.d.ts.map +1 -0
  198. package/packages/tools/lib/commands/import-owl.js +103 -0
  199. package/packages/tools/lib/commands/import-owl.js.map +1 -0
  200. package/packages/tools/lib/commands/import-sysand.d.ts +11 -0
  201. package/packages/tools/lib/commands/import-sysand.d.ts.map +1 -0
  202. package/packages/tools/lib/commands/import-sysand.js +87 -0
  203. package/packages/tools/lib/commands/import-sysand.js.map +1 -0
  204. package/packages/tools/lib/commands/import.d.ts +30 -0
  205. package/packages/tools/lib/commands/import.d.ts.map +1 -0
  206. package/packages/tools/lib/commands/import.js +250 -0
  207. package/packages/tools/lib/commands/import.js.map +1 -0
  208. package/packages/tools/lib/commands/init-wizard.d.ts +10 -0
  209. package/packages/tools/lib/commands/init-wizard.d.ts.map +1 -0
  210. package/packages/tools/lib/commands/init-wizard.js +69 -0
  211. package/packages/tools/lib/commands/init-wizard.js.map +1 -0
  212. package/packages/tools/lib/commands/init.d.ts +30 -0
  213. package/packages/tools/lib/commands/init.d.ts.map +1 -0
  214. package/packages/tools/lib/commands/init.js +238 -0
  215. package/packages/tools/lib/commands/init.js.map +1 -0
  216. package/packages/tools/lib/commands/install.d.ts +8 -0
  217. package/packages/tools/lib/commands/install.d.ts.map +1 -0
  218. package/packages/tools/lib/commands/install.js +238 -0
  219. package/packages/tools/lib/commands/install.js.map +1 -0
  220. package/packages/tools/lib/commands/lock.d.ts +2 -0
  221. package/packages/tools/lib/commands/lock.d.ts.map +1 -0
  222. package/packages/tools/lib/commands/lock.js +29 -0
  223. package/packages/tools/lib/commands/lock.js.map +1 -0
  224. package/packages/tools/lib/commands/ontology.d.ts +14 -0
  225. package/packages/tools/lib/commands/ontology.d.ts.map +1 -0
  226. package/packages/tools/lib/commands/ontology.js +464 -0
  227. package/packages/tools/lib/commands/ontology.js.map +1 -0
  228. package/packages/tools/lib/commands/pack.d.ts +4 -0
  229. package/packages/tools/lib/commands/pack.d.ts.map +1 -0
  230. package/packages/tools/lib/commands/pack.js +89 -0
  231. package/packages/tools/lib/commands/pack.js.map +1 -0
  232. package/packages/tools/lib/commands/plugin.d.ts +10 -0
  233. package/packages/tools/lib/commands/plugin.d.ts.map +1 -0
  234. package/packages/tools/lib/commands/plugin.js +195 -0
  235. package/packages/tools/lib/commands/plugin.js.map +1 -0
  236. package/packages/tools/lib/commands/req.d.ts +10 -0
  237. package/packages/tools/lib/commands/req.d.ts.map +1 -0
  238. package/packages/tools/lib/commands/req.js +64 -0
  239. package/packages/tools/lib/commands/req.js.map +1 -0
  240. package/packages/tools/lib/commands/roundtrip.d.ts +6 -0
  241. package/packages/tools/lib/commands/roundtrip.d.ts.map +1 -0
  242. package/packages/tools/lib/commands/roundtrip.js +162 -0
  243. package/packages/tools/lib/commands/roundtrip.js.map +1 -0
  244. package/packages/tools/lib/commands/rules.d.ts +15 -0
  245. package/packages/tools/lib/commands/rules.d.ts.map +1 -0
  246. package/packages/tools/lib/commands/rules.js +282 -0
  247. package/packages/tools/lib/commands/rules.js.map +1 -0
  248. package/packages/tools/lib/commands/sysand-publish.d.ts +6 -0
  249. package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -0
  250. package/packages/tools/lib/commands/sysand-publish.js +231 -0
  251. package/packages/tools/lib/commands/sysand-publish.js.map +1 -0
  252. package/packages/tools/lib/commands/validate.d.ts +6 -0
  253. package/packages/tools/lib/commands/validate.d.ts.map +1 -0
  254. package/packages/tools/lib/commands/validate.js +269 -0
  255. package/packages/tools/lib/commands/validate.js.map +1 -0
  256. package/packages/tools/lib/completeness/tracker.d.ts +11 -0
  257. package/packages/tools/lib/completeness/tracker.d.ts.map +1 -0
  258. package/packages/tools/lib/completeness/tracker.js +86 -0
  259. package/packages/tools/lib/completeness/tracker.js.map +1 -0
  260. package/packages/tools/lib/dhf/dhf-config-v2.d.ts +102 -0
  261. package/packages/tools/lib/dhf/dhf-config-v2.d.ts.map +1 -0
  262. package/packages/tools/lib/dhf/dhf-config-v2.js +82 -0
  263. package/packages/tools/lib/dhf/dhf-config-v2.js.map +1 -0
  264. package/packages/tools/lib/dhf/dhf-config.d.ts +53 -0
  265. package/packages/tools/lib/dhf/dhf-config.d.ts.map +1 -0
  266. package/packages/tools/lib/dhf/dhf-config.js +44 -0
  267. package/packages/tools/lib/dhf/dhf-config.js.map +1 -0
  268. package/packages/tools/lib/dhf/directive-parser.d.ts +31 -0
  269. package/packages/tools/lib/dhf/directive-parser.d.ts.map +1 -0
  270. package/packages/tools/lib/dhf/directive-parser.js +83 -0
  271. package/packages/tools/lib/dhf/directive-parser.js.map +1 -0
  272. package/packages/tools/lib/dhf/document-compiler.d.ts +68 -0
  273. package/packages/tools/lib/dhf/document-compiler.d.ts.map +1 -0
  274. package/packages/tools/lib/dhf/document-compiler.js +209 -0
  275. package/packages/tools/lib/dhf/document-compiler.js.map +1 -0
  276. package/packages/tools/lib/dhf/document-ir.d.ts +170 -0
  277. package/packages/tools/lib/dhf/document-ir.d.ts.map +1 -0
  278. package/packages/tools/lib/dhf/document-ir.js +47 -0
  279. package/packages/tools/lib/dhf/document-ir.js.map +1 -0
  280. package/packages/tools/lib/dhf/document-registry.d.ts +45 -0
  281. package/packages/tools/lib/dhf/document-registry.d.ts.map +1 -0
  282. package/packages/tools/lib/dhf/document-registry.js +342 -0
  283. package/packages/tools/lib/dhf/document-registry.js.map +1 -0
  284. package/packages/tools/lib/dhf/export-plugin.d.ts +24 -0
  285. package/packages/tools/lib/dhf/export-plugin.d.ts.map +1 -0
  286. package/packages/tools/lib/dhf/export-plugin.js +24 -0
  287. package/packages/tools/lib/dhf/export-plugin.js.map +1 -0
  288. package/packages/tools/lib/dhf/exporters/docx-exporter.d.ts +15 -0
  289. package/packages/tools/lib/dhf/exporters/docx-exporter.d.ts.map +1 -0
  290. package/packages/tools/lib/dhf/exporters/docx-exporter.js +159 -0
  291. package/packages/tools/lib/dhf/exporters/docx-exporter.js.map +1 -0
  292. package/packages/tools/lib/dhf/exporters/html-exporter.d.ts +9 -0
  293. package/packages/tools/lib/dhf/exporters/html-exporter.d.ts.map +1 -0
  294. package/packages/tools/lib/dhf/exporters/html-exporter.js +248 -0
  295. package/packages/tools/lib/dhf/exporters/html-exporter.js.map +1 -0
  296. package/packages/tools/lib/dhf/exporters/markdown-exporter.d.ts +9 -0
  297. package/packages/tools/lib/dhf/exporters/markdown-exporter.d.ts.map +1 -0
  298. package/packages/tools/lib/dhf/exporters/markdown-exporter.js +147 -0
  299. package/packages/tools/lib/dhf/exporters/markdown-exporter.js.map +1 -0
  300. package/packages/tools/lib/dhf/index.d.ts +15 -0
  301. package/packages/tools/lib/dhf/index.d.ts.map +1 -0
  302. package/packages/tools/lib/dhf/index.js +21 -0
  303. package/packages/tools/lib/dhf/index.js.map +1 -0
  304. package/packages/tools/lib/dhf/markdown-to-ir.d.ts +19 -0
  305. package/packages/tools/lib/dhf/markdown-to-ir.d.ts.map +1 -0
  306. package/packages/tools/lib/dhf/markdown-to-ir.js +193 -0
  307. package/packages/tools/lib/dhf/markdown-to-ir.js.map +1 -0
  308. package/packages/tools/lib/dhf/query-engine.d.ts +61 -0
  309. package/packages/tools/lib/dhf/query-engine.d.ts.map +1 -0
  310. package/packages/tools/lib/dhf/query-engine.js +109 -0
  311. package/packages/tools/lib/dhf/query-engine.js.map +1 -0
  312. package/packages/tools/lib/dhf/query-executor.d.ts +33 -0
  313. package/packages/tools/lib/dhf/query-executor.d.ts.map +1 -0
  314. package/packages/tools/lib/dhf/query-executor.js +222 -0
  315. package/packages/tools/lib/dhf/query-executor.js.map +1 -0
  316. package/packages/tools/lib/dhf/script-runner.d.ts +4 -0
  317. package/packages/tools/lib/dhf/script-runner.d.ts.map +1 -0
  318. package/packages/tools/lib/dhf/script-runner.js +62 -0
  319. package/packages/tools/lib/dhf/script-runner.js.map +1 -0
  320. package/packages/tools/lib/dhf/snapshot.d.ts +60 -0
  321. package/packages/tools/lib/dhf/snapshot.d.ts.map +1 -0
  322. package/packages/tools/lib/dhf/snapshot.js +185 -0
  323. package/packages/tools/lib/dhf/snapshot.js.map +1 -0
  324. package/packages/tools/lib/dhf/template-engine.d.ts +18 -0
  325. package/packages/tools/lib/dhf/template-engine.d.ts.map +1 -0
  326. package/packages/tools/lib/dhf/template-engine.js +339 -0
  327. package/packages/tools/lib/dhf/template-engine.js.map +1 -0
  328. package/packages/tools/lib/dhf/template-resolver.d.ts +42 -0
  329. package/packages/tools/lib/dhf/template-resolver.d.ts.map +1 -0
  330. package/packages/tools/lib/dhf/template-resolver.js +196 -0
  331. package/packages/tools/lib/dhf/template-resolver.js.map +1 -0
  332. package/packages/tools/lib/import/column-mapper.d.ts +35 -0
  333. package/packages/tools/lib/import/column-mapper.d.ts.map +1 -0
  334. package/packages/tools/lib/import/column-mapper.js +171 -0
  335. package/packages/tools/lib/import/column-mapper.js.map +1 -0
  336. package/packages/tools/lib/import/import-diff.d.ts +49 -0
  337. package/packages/tools/lib/import/import-diff.d.ts.map +1 -0
  338. package/packages/tools/lib/import/import-diff.js +102 -0
  339. package/packages/tools/lib/import/import-diff.js.map +1 -0
  340. package/packages/tools/lib/import/recipes.d.ts +43 -0
  341. package/packages/tools/lib/import/recipes.d.ts.map +1 -0
  342. package/packages/tools/lib/import/recipes.js +133 -0
  343. package/packages/tools/lib/import/recipes.js.map +1 -0
  344. package/packages/tools/lib/importer/cameo-importer.d.ts +103 -0
  345. package/packages/tools/lib/importer/cameo-importer.d.ts.map +1 -0
  346. package/packages/tools/lib/importer/cameo-importer.js +384 -0
  347. package/packages/tools/lib/importer/cameo-importer.js.map +1 -0
  348. package/packages/tools/lib/importer/ea-importer.d.ts +115 -0
  349. package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -0
  350. package/packages/tools/lib/importer/ea-importer.js +325 -0
  351. package/packages/tools/lib/importer/ea-importer.js.map +1 -0
  352. package/packages/tools/lib/importer/index.d.ts +5 -0
  353. package/packages/tools/lib/importer/index.d.ts.map +1 -0
  354. package/packages/tools/lib/importer/index.js +15 -0
  355. package/packages/tools/lib/importer/index.js.map +1 -0
  356. package/packages/tools/lib/importer/owl-importer.d.ts +91 -0
  357. package/packages/tools/lib/importer/owl-importer.d.ts.map +1 -0
  358. package/packages/tools/lib/importer/owl-importer.js +429 -0
  359. package/packages/tools/lib/importer/owl-importer.js.map +1 -0
  360. package/packages/tools/lib/importer/sysand-importer.d.ts +78 -0
  361. package/packages/tools/lib/importer/sysand-importer.d.ts.map +1 -0
  362. package/packages/tools/lib/importer/sysand-importer.js +188 -0
  363. package/packages/tools/lib/importer/sysand-importer.js.map +1 -0
  364. package/packages/tools/lib/index.d.ts +44 -0
  365. package/packages/tools/lib/index.d.ts.map +1 -0
  366. package/packages/tools/lib/index.js +56 -0
  367. package/packages/tools/lib/index.js.map +1 -0
  368. package/packages/tools/lib/language/generated/ast.d.ts +629 -0
  369. package/packages/tools/lib/language/generated/ast.d.ts.map +1 -0
  370. package/packages/tools/lib/language/generated/ast.js +961 -0
  371. package/packages/tools/lib/language/generated/ast.js.map +1 -0
  372. package/packages/tools/lib/language/generated/grammar.d.ts +7 -0
  373. package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -0
  374. package/packages/tools/lib/language/generated/grammar.js +5676 -0
  375. package/packages/tools/lib/language/generated/grammar.js.map +1 -0
  376. package/packages/tools/lib/language/generated/module.d.ts +14 -0
  377. package/packages/tools/lib/language/generated/module.d.ts.map +1 -0
  378. package/packages/tools/lib/language/generated/module.js +21 -0
  379. package/packages/tools/lib/language/generated/module.js.map +1 -0
  380. package/packages/tools/lib/language/memo-sysml-module.d.ts +24 -0
  381. package/packages/tools/lib/language/memo-sysml-module.d.ts.map +1 -0
  382. package/packages/tools/lib/language/memo-sysml-module.js +20 -0
  383. package/packages/tools/lib/language/memo-sysml-module.js.map +1 -0
  384. package/packages/tools/lib/llm/ask-engine.d.ts +17 -0
  385. package/packages/tools/lib/llm/ask-engine.d.ts.map +1 -0
  386. package/packages/tools/lib/llm/ask-engine.js +43 -0
  387. package/packages/tools/lib/llm/ask-engine.js.map +1 -0
  388. package/packages/tools/lib/llm/draft-engine.d.ts +32 -0
  389. package/packages/tools/lib/llm/draft-engine.d.ts.map +1 -0
  390. package/packages/tools/lib/llm/draft-engine.js +270 -0
  391. package/packages/tools/lib/llm/draft-engine.js.map +1 -0
  392. package/packages/tools/lib/llm/generate-engine.d.ts +21 -0
  393. package/packages/tools/lib/llm/generate-engine.d.ts.map +1 -0
  394. package/packages/tools/lib/llm/generate-engine.js +83 -0
  395. package/packages/tools/lib/llm/generate-engine.js.map +1 -0
  396. package/packages/tools/lib/llm/index.d.ts +6 -0
  397. package/packages/tools/lib/llm/index.d.ts.map +1 -0
  398. package/packages/tools/lib/llm/index.js +11 -0
  399. package/packages/tools/lib/llm/index.js.map +1 -0
  400. package/packages/tools/lib/llm/llm-provider.d.ts +40 -0
  401. package/packages/tools/lib/llm/llm-provider.d.ts.map +1 -0
  402. package/packages/tools/lib/llm/llm-provider.js +121 -0
  403. package/packages/tools/lib/llm/llm-provider.js.map +1 -0
  404. package/packages/tools/lib/llm/model-context.d.ts +28 -0
  405. package/packages/tools/lib/llm/model-context.d.ts.map +1 -0
  406. package/packages/tools/lib/llm/model-context.js +162 -0
  407. package/packages/tools/lib/llm/model-context.js.map +1 -0
  408. package/packages/tools/lib/lock.d.ts +43 -0
  409. package/packages/tools/lib/lock.d.ts.map +1 -0
  410. package/packages/tools/lib/lock.js +225 -0
  411. package/packages/tools/lib/lock.js.map +1 -0
  412. package/packages/tools/lib/model/builder.d.ts +22 -0
  413. package/packages/tools/lib/model/builder.d.ts.map +1 -0
  414. package/packages/tools/lib/model/builder.js +708 -0
  415. package/packages/tools/lib/model/builder.js.map +1 -0
  416. package/packages/tools/lib/model/config-loader.d.ts +34 -0
  417. package/packages/tools/lib/model/config-loader.d.ts.map +1 -0
  418. package/packages/tools/lib/model/config-loader.js +257 -0
  419. package/packages/tools/lib/model/config-loader.js.map +1 -0
  420. package/packages/tools/lib/model/config.d.ts +220 -0
  421. package/packages/tools/lib/model/config.d.ts.map +1 -0
  422. package/packages/tools/lib/model/config.js +14 -0
  423. package/packages/tools/lib/model/config.js.map +1 -0
  424. package/packages/tools/lib/model/content-store.d.ts +8 -0
  425. package/packages/tools/lib/model/content-store.d.ts.map +1 -0
  426. package/packages/tools/lib/model/content-store.js +59 -0
  427. package/packages/tools/lib/model/content-store.js.map +1 -0
  428. package/packages/tools/lib/model/dimension-filter.d.ts +33 -0
  429. package/packages/tools/lib/model/dimension-filter.d.ts.map +1 -0
  430. package/packages/tools/lib/model/dimension-filter.js +57 -0
  431. package/packages/tools/lib/model/dimension-filter.js.map +1 -0
  432. package/packages/tools/lib/model/kind-registry.d.ts +72 -0
  433. package/packages/tools/lib/model/kind-registry.d.ts.map +1 -0
  434. package/packages/tools/lib/model/kind-registry.js +178 -0
  435. package/packages/tools/lib/model/kind-registry.js.map +1 -0
  436. package/packages/tools/lib/model/layer-resolver.d.ts +25 -0
  437. package/packages/tools/lib/model/layer-resolver.d.ts.map +1 -0
  438. package/packages/tools/lib/model/layer-resolver.js +82 -0
  439. package/packages/tools/lib/model/layer-resolver.js.map +1 -0
  440. package/packages/tools/lib/model/manifest.d.ts +23 -0
  441. package/packages/tools/lib/model/manifest.d.ts.map +1 -0
  442. package/packages/tools/lib/model/manifest.js +117 -0
  443. package/packages/tools/lib/model/manifest.js.map +1 -0
  444. package/packages/tools/lib/model/methodology-loader.d.ts +56 -0
  445. package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -0
  446. package/packages/tools/lib/model/methodology-loader.js +203 -0
  447. package/packages/tools/lib/model/methodology-loader.js.map +1 -0
  448. package/packages/tools/lib/model/ontology-loader.d.ts +113 -0
  449. package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -0
  450. package/packages/tools/lib/model/ontology-loader.js +901 -0
  451. package/packages/tools/lib/model/ontology-loader.js.map +1 -0
  452. package/packages/tools/lib/model/package-registry.d.ts +62 -0
  453. package/packages/tools/lib/model/package-registry.d.ts.map +1 -0
  454. package/packages/tools/lib/model/package-registry.js +164 -0
  455. package/packages/tools/lib/model/package-registry.js.map +1 -0
  456. package/packages/tools/lib/model/parser-utils.d.ts +23 -0
  457. package/packages/tools/lib/model/parser-utils.d.ts.map +1 -0
  458. package/packages/tools/lib/model/parser-utils.js +63 -0
  459. package/packages/tools/lib/model/parser-utils.js.map +1 -0
  460. package/packages/tools/lib/model/paths.d.ts +18 -0
  461. package/packages/tools/lib/model/paths.d.ts.map +1 -0
  462. package/packages/tools/lib/model/paths.js +26 -0
  463. package/packages/tools/lib/model/paths.js.map +1 -0
  464. package/packages/tools/lib/model/relationship-registry.d.ts +64 -0
  465. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -0
  466. package/packages/tools/lib/model/relationship-registry.js +141 -0
  467. package/packages/tools/lib/model/relationship-registry.js.map +1 -0
  468. package/packages/tools/lib/model/semantic.d.ts +175 -0
  469. package/packages/tools/lib/model/semantic.d.ts.map +1 -0
  470. package/packages/tools/lib/model/semantic.js +61 -0
  471. package/packages/tools/lib/model/semantic.js.map +1 -0
  472. package/packages/tools/lib/model/short-id.d.ts +32 -0
  473. package/packages/tools/lib/model/short-id.d.ts.map +1 -0
  474. package/packages/tools/lib/model/short-id.js +136 -0
  475. package/packages/tools/lib/model/short-id.js.map +1 -0
  476. package/packages/tools/lib/model/toolchain.d.ts +12 -0
  477. package/packages/tools/lib/model/toolchain.d.ts.map +1 -0
  478. package/packages/tools/lib/model/toolchain.js +92 -0
  479. package/packages/tools/lib/model/toolchain.js.map +1 -0
  480. package/packages/tools/lib/model/view-deriver.d.ts +22 -0
  481. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -0
  482. package/packages/tools/lib/model/view-deriver.js +160 -0
  483. package/packages/tools/lib/model/view-deriver.js.map +1 -0
  484. package/packages/tools/lib/model/view-kinds.d.ts +29 -0
  485. package/packages/tools/lib/model/view-kinds.d.ts.map +1 -0
  486. package/packages/tools/lib/model/view-kinds.js +80 -0
  487. package/packages/tools/lib/model/view-kinds.js.map +1 -0
  488. package/packages/tools/lib/ontology/owl-exporter.d.ts +43 -0
  489. package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -0
  490. package/packages/tools/lib/ontology/owl-exporter.js +70 -0
  491. package/packages/tools/lib/ontology/owl-exporter.js.map +1 -0
  492. package/packages/tools/lib/operations/index.d.ts +8 -0
  493. package/packages/tools/lib/operations/index.d.ts.map +1 -0
  494. package/packages/tools/lib/operations/index.js +8 -0
  495. package/packages/tools/lib/operations/index.js.map +1 -0
  496. package/packages/tools/lib/operations/project-snapshot.d.ts +17 -0
  497. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -0
  498. package/packages/tools/lib/operations/project-snapshot.js +103 -0
  499. package/packages/tools/lib/operations/project-snapshot.js.map +1 -0
  500. package/packages/tools/lib/plugin/index.d.ts +5 -0
  501. package/packages/tools/lib/plugin/index.d.ts.map +1 -0
  502. package/packages/tools/lib/plugin/index.js +10 -0
  503. package/packages/tools/lib/plugin/index.js.map +1 -0
  504. package/packages/tools/lib/plugin/plugin-loader.d.ts +26 -0
  505. package/packages/tools/lib/plugin/plugin-loader.d.ts.map +1 -0
  506. package/packages/tools/lib/plugin/plugin-loader.js +216 -0
  507. package/packages/tools/lib/plugin/plugin-loader.js.map +1 -0
  508. package/packages/tools/lib/plugin/plugin-registry.d.ts +49 -0
  509. package/packages/tools/lib/plugin/plugin-registry.d.ts.map +1 -0
  510. package/packages/tools/lib/plugin/plugin-registry.js +121 -0
  511. package/packages/tools/lib/plugin/plugin-registry.js.map +1 -0
  512. package/packages/tools/lib/plugin/plugin-scaffold.d.ts +17 -0
  513. package/packages/tools/lib/plugin/plugin-scaffold.d.ts.map +1 -0
  514. package/packages/tools/lib/plugin/plugin-scaffold.js +223 -0
  515. package/packages/tools/lib/plugin/plugin-scaffold.js.map +1 -0
  516. package/packages/tools/lib/plugin/plugin-types.d.ts +115 -0
  517. package/packages/tools/lib/plugin/plugin-types.d.ts.map +1 -0
  518. package/packages/tools/lib/plugin/plugin-types.js +11 -0
  519. package/packages/tools/lib/plugin/plugin-types.js.map +1 -0
  520. package/packages/tools/lib/protocol/messages.d.ts +470 -0
  521. package/packages/tools/lib/protocol/messages.d.ts.map +1 -0
  522. package/packages/tools/lib/protocol/messages.js +6 -0
  523. package/packages/tools/lib/protocol/messages.js.map +1 -0
  524. package/packages/tools/lib/serializer/csv-io.d.ts +113 -0
  525. package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -0
  526. package/packages/tools/lib/serializer/csv-io.js +394 -0
  527. package/packages/tools/lib/serializer/csv-io.js.map +1 -0
  528. package/packages/tools/lib/serializer/sysml-generator.d.ts +32 -0
  529. package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -0
  530. package/packages/tools/lib/serializer/sysml-generator.js +120 -0
  531. package/packages/tools/lib/serializer/sysml-generator.js.map +1 -0
  532. package/packages/tools/lib/server/config-resolver.d.ts +14 -0
  533. package/packages/tools/lib/server/config-resolver.d.ts.map +1 -0
  534. package/packages/tools/lib/server/config-resolver.js +54 -0
  535. package/packages/tools/lib/server/config-resolver.js.map +1 -0
  536. package/packages/tools/lib/server/dev-server.d.ts +17 -0
  537. package/packages/tools/lib/server/dev-server.d.ts.map +1 -0
  538. package/packages/tools/lib/server/dev-server.js +939 -0
  539. package/packages/tools/lib/server/dev-server.js.map +1 -0
  540. package/packages/tools/lib/server/dhf-doc-store.d.ts +11 -0
  541. package/packages/tools/lib/server/dhf-doc-store.d.ts.map +1 -0
  542. package/packages/tools/lib/server/dhf-doc-store.js +181 -0
  543. package/packages/tools/lib/server/dhf-doc-store.js.map +1 -0
  544. package/packages/tools/lib/server/file-watcher.d.ts +20 -0
  545. package/packages/tools/lib/server/file-watcher.d.ts.map +1 -0
  546. package/packages/tools/lib/server/file-watcher.js +140 -0
  547. package/packages/tools/lib/server/file-watcher.js.map +1 -0
  548. package/packages/tools/lib/server/persistor.d.ts +25 -0
  549. package/packages/tools/lib/server/persistor.d.ts.map +1 -0
  550. package/packages/tools/lib/server/persistor.js +100 -0
  551. package/packages/tools/lib/server/persistor.js.map +1 -0
  552. package/packages/tools/lib/server/view-layout-store.d.ts +8 -0
  553. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -0
  554. package/packages/tools/lib/server/view-layout-store.js +73 -0
  555. package/packages/tools/lib/server/view-layout-store.js.map +1 -0
  556. package/packages/tools/lib/types/index.d.ts +4 -0
  557. package/packages/tools/lib/types/index.d.ts.map +1 -0
  558. package/packages/tools/lib/types/index.js +6 -0
  559. package/packages/tools/lib/types/index.js.map +1 -0
  560. package/packages/tools/lib/validator/behavior-validator.d.ts +12 -0
  561. package/packages/tools/lib/validator/behavior-validator.d.ts.map +1 -0
  562. package/packages/tools/lib/validator/behavior-validator.js +124 -0
  563. package/packages/tools/lib/validator/behavior-validator.js.map +1 -0
  564. package/packages/tools/lib/validator/constraint-eval.d.ts +90 -0
  565. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -0
  566. package/packages/tools/lib/validator/constraint-eval.js +478 -0
  567. package/packages/tools/lib/validator/constraint-eval.js.map +1 -0
  568. package/packages/tools/lib/validator/constraint-loader.d.ts +10 -0
  569. package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -0
  570. package/packages/tools/lib/validator/constraint-loader.js +113 -0
  571. package/packages/tools/lib/validator/constraint-loader.js.map +1 -0
  572. package/packages/tools/lib/validator/rule-engine.d.ts +13 -0
  573. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -0
  574. package/packages/tools/lib/validator/rule-engine.js +38 -0
  575. package/packages/tools/lib/validator/rule-engine.js.map +1 -0
  576. package/packages/tools/lib/validator/rule-registry.d.ts +61 -0
  577. package/packages/tools/lib/validator/rule-registry.d.ts.map +1 -0
  578. package/packages/tools/lib/validator/rule-registry.js +142 -0
  579. package/packages/tools/lib/validator/rule-registry.js.map +1 -0
  580. package/packages/tools/lib/validator/types.d.ts +59 -0
  581. package/packages/tools/lib/validator/types.d.ts.map +1 -0
  582. package/packages/tools/lib/validator/types.js +3 -0
  583. package/packages/tools/lib/validator/types.js.map +1 -0
  584. package/packages/tools/lib/validator/view-validator.d.ts +11 -0
  585. package/packages/tools/lib/validator/view-validator.d.ts.map +1 -0
  586. package/packages/tools/lib/validator/view-validator.js +48 -0
  587. package/packages/tools/lib/validator/view-validator.js.map +1 -0
  588. package/packages/tools/src/grammar/memo-sysml.langium +450 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../../src/dhf/template-engine.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAiC,MAAM,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAgD,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,kBAAkB,CAAC;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,EAAE,eAAe,CAAC;CACjC;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAmCjE"}
@@ -0,0 +1,339 @@
1
+ // ─── DHF Template Engine ─────────────────────────────────────────────────────
2
+ //
3
+ // Compiles DHF document templates into Document IR using model data.
4
+ // Templates are defined per document type with section generators.
5
+ // ─────────────────────────────────────────────────────────────────────────────
6
+ import { text, xref, heading, paragraph, table, badge, metric, metricGroup, progress } from './document-ir.js';
7
+ import { createQueryContext } from './query-engine.js';
8
+ import { DHF_DOCUMENT_TYPES as DHF_DOC_TYPES_REF } from './document-registry.js';
9
+ /** Compile a DHF document from model data */
10
+ export function compileDocument(input) {
11
+ const { model, validation, completeness, config, dhfConfig, documentType } = input;
12
+ const ctx = createQueryContext(model, validation, completeness, config);
13
+ const sections = documentType.sections.map(sectionDef => {
14
+ const generator = SECTION_GENERATORS[documentType.id]?.[sectionDef.id]
15
+ || defaultSectionGenerator;
16
+ return generator(sectionDef, documentType, ctx, dhfConfig);
17
+ });
18
+ const totalElements = sections.reduce((sum, s) => sum + (s.elementCount || 0), 0);
19
+ const totalGaps = sections.reduce((sum, s) => sum + (s.gapCount || 0), 0);
20
+ const hasContent = sections.some(s => s.blocks.length > 0);
21
+ const allComplete = sections.every(s => s.status === 'complete' || !sectionIsRequired(documentType, s.id));
22
+ const frontmatter = {
23
+ documentId: documentType.id,
24
+ title: documentType.title,
25
+ version: dhfConfig?.version || '1.0',
26
+ standards: documentType.standards,
27
+ organization: dhfConfig?.organization,
28
+ project: config.projectName || 'MEMO Project',
29
+ phase: dhfConfig?.phase,
30
+ authors: dhfConfig?.authors,
31
+ approvers: dhfConfig?.approvers,
32
+ generatedAt: new Date().toISOString(),
33
+ };
34
+ return {
35
+ frontmatter,
36
+ sections,
37
+ status: !hasContent ? 'empty' : allComplete ? 'complete' : 'partial',
38
+ totalElements,
39
+ totalGaps,
40
+ };
41
+ }
42
+ function sectionIsRequired(docType, sectionId) {
43
+ return docType.sections.find(s => s.id === sectionId)?.required ?? false;
44
+ }
45
+ function defaultSectionGenerator(sectionDef, docType, ctx) {
46
+ const elements = ctx.elementsByKinds(docType.relevantKinds);
47
+ const blocks = [];
48
+ if (elements.length > 0) {
49
+ blocks.push(heading(3, sectionDef.title, sectionDef.id));
50
+ blocks.push(paragraph(text(`${elements.length} model elements relevant to this section.`)));
51
+ const rows = elements.slice(0, 100).map(el => [
52
+ [xref(el.id, el.name, el.kind)],
53
+ [text(el.kind)],
54
+ [text(el.layer)],
55
+ [text(el.doc || '—')],
56
+ ]);
57
+ blocks.push(table(['Element', 'Kind', 'Layer', 'Description'], rows));
58
+ }
59
+ return {
60
+ id: sectionDef.id,
61
+ title: sectionDef.title,
62
+ blocks,
63
+ elementCount: elements.length,
64
+ gapCount: 0,
65
+ status: elements.length > 0 ? 'complete' : sectionDef.required ? 'empty' : 'complete',
66
+ };
67
+ }
68
+ // ─── Risk Management Plan (rmp) ──────────────────────────────────────────────
69
+ function rmpScope(sectionDef, _docType, ctx, dhfConfig) {
70
+ const blocks = [
71
+ heading(3, 'Scope', 'scope'),
72
+ paragraph(text(`This Risk Management Plan covers the risk management activities for `), text(ctx.projectName, { bold: true }), text(` in accordance with ISO 14971:2019.`)),
73
+ ];
74
+ if (dhfConfig?.organization) {
75
+ blocks.push(paragraph(text(`Organization: ${dhfConfig.organization}`)));
76
+ }
77
+ return { id: 'scope', title: 'Scope', blocks, elementCount: 0, gapCount: 0, status: 'complete' };
78
+ }
79
+ function rmpRiskPolicy(sectionDef, _docType, ctx) {
80
+ const hazards = ctx.elementsByKind('Hazard');
81
+ const controls = ctx.elementsByKind('RiskControl');
82
+ const blocks = [
83
+ heading(3, 'Risk Acceptability Policy', 'risk-policy'),
84
+ metricGroup(metric('Hazards Identified', hazards.length), metric('Risk Controls', controls.length), metric('Unmitigated Hazards', ctx.unmitigatedCount())),
85
+ ];
86
+ if (ctx.unmitigatedCount() > 0) {
87
+ blocks.push(paragraph(badge(`${ctx.unmitigatedCount()} unmitigated hazards`, 'error')));
88
+ }
89
+ else if (hazards.length > 0) {
90
+ blocks.push(paragraph(badge('All hazards mitigated', 'success')));
91
+ }
92
+ return {
93
+ id: 'risk-policy', title: 'Risk Acceptability Policy', blocks,
94
+ elementCount: hazards.length + controls.length,
95
+ gapCount: ctx.unmitigatedCount(),
96
+ status: ctx.unmitigatedCount() === 0 && hazards.length > 0 ? 'complete' : hazards.length === 0 ? 'empty' : 'partial',
97
+ };
98
+ }
99
+ function rmpVerification(sectionDef, _docType, ctx) {
100
+ const controls = ctx.elementsByKind('RiskControl');
101
+ const blocks = [heading(3, 'Verification of Risk Control Measures', 'verification-activities')];
102
+ if (controls.length > 0) {
103
+ const rows = controls.map(c => {
104
+ const verified = ctx.related(c.id, 'verifies', 'incoming');
105
+ return [
106
+ [xref(c.id, c.name, c.kind)],
107
+ [text(c.doc || '—')],
108
+ [verified.length > 0 ? badge('Verified', 'success') : badge('Unverified', 'warning')],
109
+ ];
110
+ });
111
+ blocks.push(table(['Control', 'Description', 'Verification'], rows));
112
+ }
113
+ const unverified = controls.filter(c => ctx.related(c.id, 'verifies', 'incoming').length === 0);
114
+ return {
115
+ id: 'verification-activities', title: 'Verification of Risk Control Measures', blocks,
116
+ elementCount: controls.length,
117
+ gapCount: unverified.length,
118
+ status: controls.length === 0 ? 'empty' : unverified.length === 0 ? 'complete' : 'partial',
119
+ };
120
+ }
121
+ // ─── Hazard Analysis Report (har) ────────────────────────────────────────────
122
+ function harHazardId(sectionDef, _docType, ctx) {
123
+ const hazards = ctx.elementsByKind('Hazard');
124
+ const blocks = [heading(3, 'Hazard Identification', 'hazard-identification')];
125
+ if (hazards.length > 0) {
126
+ const rows = hazards.map(h => {
127
+ const mitigations = ctx.related(h.id, 'mitigates', 'incoming');
128
+ return [
129
+ [xref(h.id, h.name, h.kind)],
130
+ [text(h.doc || '—')],
131
+ [text(h.attributes['severity'] || '—')],
132
+ [mitigations.length > 0
133
+ ? badge(`${mitigations.length} control(s)`, 'success')
134
+ : badge('Unmitigated', 'error')],
135
+ ];
136
+ });
137
+ blocks.push(table(['Hazard', 'Description', 'Severity', 'Mitigation'], rows));
138
+ }
139
+ else {
140
+ blocks.push(paragraph(text('No hazards identified in the model.', { italic: true })));
141
+ }
142
+ return {
143
+ id: 'hazard-identification', title: 'Hazard Identification', blocks,
144
+ elementCount: hazards.length,
145
+ gapCount: ctx.unmitigatedCount(),
146
+ status: hazards.length === 0 ? 'empty' : 'complete',
147
+ };
148
+ }
149
+ function harRiskControls(sectionDef, _docType, ctx) {
150
+ const controls = ctx.elementsByKind('RiskControl');
151
+ const blocks = [heading(3, 'Risk Control Measures', 'risk-controls')];
152
+ if (controls.length > 0) {
153
+ const rows = controls.map(c => {
154
+ const mitigates = ctx.related(c.id, 'mitigates', 'outgoing');
155
+ return [
156
+ [xref(c.id, c.name, c.kind)],
157
+ [text(c.doc || '—')],
158
+ [text(mitigates.map(r => ctx.elementName(r.targetId)).join(', ') || '—')],
159
+ ];
160
+ });
161
+ blocks.push(table(['Control', 'Description', 'Mitigates'], rows));
162
+ }
163
+ return {
164
+ id: 'risk-controls', title: 'Risk Control Measures', blocks,
165
+ elementCount: controls.length, gapCount: 0,
166
+ status: controls.length > 0 ? 'complete' : 'empty',
167
+ };
168
+ }
169
+ // ─── RTM ─────────────────────────────────────────────────────────────────────
170
+ function rtmRequirements(sectionDef, _docType, ctx) {
171
+ const reqs = ctx.elementsByKinds(['Requirement', 'Requirement', 'DesignInput']);
172
+ const blocks = [heading(3, 'Requirements Inventory', 'requirements-list')];
173
+ if (reqs.length > 0) {
174
+ blocks.push(metricGroup(metric('Total Requirements', reqs.length), metric('System Requirements', ctx.elementsByKind('Requirement').length), metric('Software Requirements', ctx.elementsByKind('Requirement').length)));
175
+ const rows = reqs.map(r => [
176
+ [xref(r.id, r.name, r.kind)],
177
+ [text(r.kind)],
178
+ [text(r.doc || '—')],
179
+ ]);
180
+ blocks.push(table(['Requirement', 'Type', 'Description'], rows));
181
+ }
182
+ return {
183
+ id: 'requirements-list', title: 'Requirements Inventory', blocks,
184
+ elementCount: reqs.length, gapCount: 0,
185
+ status: reqs.length > 0 ? 'complete' : 'empty',
186
+ };
187
+ }
188
+ function rtmCoverage(sectionDef, _docType, ctx) {
189
+ const reqs = ctx.elementsByKinds(['Requirement', 'Requirement']);
190
+ const blocks = [heading(3, 'Coverage Summary', 'coverage-summary')];
191
+ let traced = 0;
192
+ let verified = 0;
193
+ for (const r of reqs) {
194
+ const traces = ctx.related(r.id, 'traceTo', 'outgoing')
195
+ .concat(ctx.related(r.id, 'satisfies', 'incoming'));
196
+ if (traces.length > 0)
197
+ traced++;
198
+ const verifications = ctx.related(r.id, 'verifies', 'incoming');
199
+ if (verifications.length > 0)
200
+ verified++;
201
+ }
202
+ const total = reqs.length || 1;
203
+ blocks.push(metricGroup(metric('Trace Coverage', `${Math.round(traced / total * 100)}%`, { variant: traced === reqs.length ? 'success' : 'warning' }), metric('Verification Coverage', `${Math.round(verified / total * 100)}%`, { variant: verified === reqs.length ? 'success' : 'warning' })));
204
+ blocks.push(progress('Trace Coverage', traced, reqs.length));
205
+ blocks.push(progress('Verification Coverage', verified, reqs.length));
206
+ const gaps = reqs.length - traced;
207
+ return {
208
+ id: 'coverage-summary', title: 'Coverage Summary', blocks,
209
+ elementCount: reqs.length, gapCount: gaps,
210
+ status: gaps === 0 && reqs.length > 0 ? 'complete' : reqs.length === 0 ? 'empty' : 'partial',
211
+ };
212
+ }
213
+ function rtmGaps(sectionDef, _docType, ctx) {
214
+ const reqs = ctx.elementsByKinds(['Requirement', 'Requirement']);
215
+ const blocks = [heading(3, 'Traceability Gaps', 'gaps')];
216
+ const untraced = reqs.filter(r => {
217
+ const traces = ctx.related(r.id, 'traceTo', 'outgoing')
218
+ .concat(ctx.related(r.id, 'satisfies', 'incoming'));
219
+ return traces.length === 0;
220
+ });
221
+ if (untraced.length > 0) {
222
+ const rows = untraced.map(r => [
223
+ [xref(r.id, r.name, r.kind)],
224
+ [text(r.kind)],
225
+ [badge('No trace', 'error')],
226
+ ]);
227
+ blocks.push(table(['Requirement', 'Type', 'Issue'], rows));
228
+ }
229
+ else if (reqs.length > 0) {
230
+ blocks.push(paragraph(badge('All requirements traced', 'success')));
231
+ }
232
+ return {
233
+ id: 'gaps', title: 'Traceability Gaps', blocks,
234
+ elementCount: untraced.length, gapCount: untraced.length,
235
+ status: untraced.length === 0 ? 'complete' : 'partial',
236
+ };
237
+ }
238
+ // ─── SAD ─────────────────────────────────────────────────────────────────────
239
+ function sadOverview(sectionDef, _docType, ctx) {
240
+ const blocks = [
241
+ heading(3, 'System Overview', 'system-overview'),
242
+ paragraph(text(`${ctx.projectName} system architecture contains:`)),
243
+ metricGroup(metric('Total Elements', ctx.totalElements()), metric('Relationships', ctx.totalRelationships()), metric('Architecture Layers', ctx.layerCount()), metric('Completeness', `${ctx.overallCompleteness()}%`)),
244
+ ];
245
+ // Layer breakdown
246
+ const layerData = ctx.layerSummary();
247
+ if (layerData.length > 0) {
248
+ const rows = layerData.map(l => [
249
+ [text(l.label)],
250
+ [text(String(l.count))],
251
+ [text(`${l.completeness}%`)],
252
+ ]);
253
+ blocks.push(table(['Layer', 'Elements', 'Completeness'], rows));
254
+ }
255
+ return {
256
+ id: 'system-overview', title: 'System Overview', blocks,
257
+ elementCount: ctx.totalElements(), gapCount: 0, status: 'complete',
258
+ };
259
+ }
260
+ // ─── SOUP ────────────────────────────────────────────────────────────────────
261
+ function soupInventory(sectionDef, _docType, ctx) {
262
+ const soups = ctx.elementsByKind('SOUPComponent');
263
+ const blocks = [heading(3, 'SOUP Component Inventory', 'soup-inventory')];
264
+ if (soups.length > 0) {
265
+ const rows = soups.map(s => [
266
+ [xref(s.id, s.name, s.kind)],
267
+ [text(s.attributes['version'] || '—')],
268
+ [text(s.attributes['manufacturer'] || '—')],
269
+ [text(s.doc || '—')],
270
+ ]);
271
+ blocks.push(table(['Component', 'Version', 'Manufacturer', 'Purpose'], rows));
272
+ }
273
+ else {
274
+ blocks.push(paragraph(text('No SOUP components identified.', { italic: true })));
275
+ }
276
+ return {
277
+ id: 'soup-inventory', title: 'SOUP Component Inventory', blocks,
278
+ elementCount: soups.length, gapCount: 0,
279
+ status: soups.length > 0 ? 'complete' : 'empty',
280
+ };
281
+ }
282
+ // ─── DHF Index ───────────────────────────────────────────────────────────────
283
+ function dhfIndexDocList(sectionDef, _docType, ctx) {
284
+ // Import statically at top — re-reference here for clarity
285
+ const docTypes = DHF_DOC_TYPES_REF;
286
+ const blocks = [heading(3, 'Document Inventory', 'document-list')];
287
+ const rows = docTypes.filter(d => d.id !== 'dhf-index').map(d => {
288
+ const relevantElements = ctx.elementsByKinds(d.relevantKinds);
289
+ return [
290
+ [text(d.title, { bold: true })],
291
+ [text(d.id, { code: true })],
292
+ [text(d.standards.join(', '))],
293
+ [relevantElements.length > 0 ? badge(`${relevantElements.length} elements`, 'info') : badge('No data', 'neutral')],
294
+ ];
295
+ });
296
+ blocks.push(table(['Document', 'ID', 'Standards', 'Data Status'], rows));
297
+ return {
298
+ id: 'document-list', title: 'Document Inventory', blocks,
299
+ elementCount: 0, gapCount: 0, status: 'complete',
300
+ };
301
+ }
302
+ function dhfIndexStatus(sectionDef, _docType, ctx) {
303
+ const blocks = [
304
+ heading(3, 'Status Summary', 'status-summary'),
305
+ metricGroup(metric('Total Elements', ctx.totalElements()), metric('Total Relationships', ctx.totalRelationships()), metric('Overall Completeness', `${ctx.overallCompleteness()}%`, { variant: ctx.overallCompleteness() >= 80 ? 'success' : ctx.overallCompleteness() >= 50 ? 'warning' : 'error' }), metric('Validation Errors', ctx.errorCount(), { variant: ctx.errorCount() === 0 ? 'success' : 'error' }), metric('Warnings', ctx.warningCount(), { variant: ctx.warningCount() === 0 ? 'success' : 'warning' })),
306
+ ];
307
+ return {
308
+ id: 'status-summary', title: 'Status Summary', blocks,
309
+ elementCount: 0, gapCount: ctx.errorCount(), status: ctx.errorCount() === 0 ? 'complete' : 'partial',
310
+ };
311
+ }
312
+ // ─── Section Generator Registry ──────────────────────────────────────────────
313
+ const SECTION_GENERATORS = {
314
+ rmp: {
315
+ 'scope': rmpScope,
316
+ 'risk-policy': rmpRiskPolicy,
317
+ 'verification-activities': rmpVerification,
318
+ },
319
+ har: {
320
+ 'hazard-identification': harHazardId,
321
+ 'risk-controls': harRiskControls,
322
+ },
323
+ rtm: {
324
+ 'requirements-list': rtmRequirements,
325
+ 'coverage-summary': rtmCoverage,
326
+ 'gaps': rtmGaps,
327
+ },
328
+ sad: {
329
+ 'system-overview': sadOverview,
330
+ },
331
+ soup: {
332
+ 'soup-inventory': soupInventory,
333
+ },
334
+ 'dhf-index': {
335
+ 'document-list': dhfIndexDocList,
336
+ 'status-summary': dhfIndexStatus,
337
+ },
338
+ };
339
+ //# sourceMappingURL=template-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../../src/dhf/template-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export declare function findVendorTemplatesDir(startDir?: string): string | null;
2
+ /** Test hook: reset the cached vendor templates directory */
3
+ export declare function resetVendorTemplatesDirCache(): void;
4
+ export interface TemplateLoadResult {
5
+ content: string;
6
+ /** Absolute path the template was loaded from */
7
+ sourcePath: string;
8
+ /** Parsed frontmatter (id, title, standard, clauses, required_for) */
9
+ frontmatter: TemplateFrontmatter;
10
+ /** Body content (after frontmatter) */
11
+ body: string;
12
+ }
13
+ export interface TemplateFrontmatter {
14
+ id?: string;
15
+ title?: string;
16
+ standard?: string;
17
+ clauses?: string[];
18
+ required_for?: string[];
19
+ [key: string]: unknown;
20
+ }
21
+ export declare function parseFrontmatter(content: string): {
22
+ frontmatter: TemplateFrontmatter;
23
+ body: string;
24
+ };
25
+ /**
26
+ * Resolve the filesystem path for a template ID.
27
+ * Searches:
28
+ * 1. Custom template dir (if provided)
29
+ * 2. Ontology templates (memo/src/compliance/dhf-templates)
30
+ */
31
+ export declare function resolveTemplatePath(templateId: string, customTemplateDir?: string): string | null;
32
+ export declare function loadTemplate(templateId: string, customTemplateDir?: string): TemplateLoadResult | null;
33
+ export declare function resolveIncludes(content: string, baseDir: string, customTemplateDir?: string, depth?: number): string;
34
+ export declare function resolveProjectDirectives(content: string, projectMeta: Record<string, unknown>): string;
35
+ export interface BuiltinTemplateInfo {
36
+ id: string;
37
+ path: string;
38
+ standard: string;
39
+ frontmatter: TemplateFrontmatter;
40
+ }
41
+ export declare function listBuiltinTemplates(): BuiltinTemplateInfo[];
42
+ //# sourceMappingURL=template-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-resolver.d.ts","sourceRoot":"","sources":["../../src/dhf/template-resolver.ts"],"names":[],"mappings":"AAuBA,wBAAgB,sBAAsB,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAmBtF;AAED,6DAA6D;AAC7D,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,WAAW,EAAE,mBAAmB,CAAC;IACjC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAUpG;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,MAAM,GAAG,IAAI,CAMf;AAgCD,wBAAgB,YAAY,CACxB,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,kBAAkB,GAAG,IAAI,CAW3B;AAMD,wBAAgB,eAAe,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM,EAC1B,KAAK,SAAI,GACV,MAAM,CA4BR;AAID,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,MAAM,CAMR;AAgBD,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,mBAAmB,CAAC;CACpC;AAED,wBAAgB,oBAAoB,IAAI,mBAAmB,EAAE,CA2B5D"}
@@ -0,0 +1,196 @@
1
+ // ─── DHF Template Resolver ────────────────────────────────────────────────────
2
+ //
3
+ // Resolves DHF document templates from:
4
+ // 1. Custom template directory (memo.dhf.yaml → template_dir)
5
+ // 2. The ontology's templates (memo/src/compliance/dhf-templates/ — the
6
+ // templates are compliance content and live in the ontology repo)
7
+ //
8
+ // The ontology templates directory is discovered by walking up from the
9
+ // working directory (a project inside the monorepo tree) and, failing that,
10
+ // relative to this package (engine checked out with its ontology submodule).
11
+ //
12
+ // Also handles {{include:path}} partial resolution and {{project.*}} expansion.
13
+ // ─────────────────────────────────────────────────────────────────────────────
14
+ import { readFileSync, existsSync } from 'node:fs';
15
+ import { resolve, join, dirname } from 'node:path';
16
+ import { fileURLToPath } from 'node:url';
17
+ import { VENDOR_DHF_TEMPLATES_DIR } from '../model/paths.js';
18
+ const __dirname = dirname(fileURLToPath(import.meta.url));
19
+ /** Locate the ontology's dhf-templates directory. Cached after first hit. */
20
+ let vendorTemplatesDir;
21
+ export function findVendorTemplatesDir(startDir = process.cwd()) {
22
+ if (vendorTemplatesDir !== undefined)
23
+ return vendorTemplatesDir;
24
+ // 1. Walk up from the working directory (covers projects anywhere in the tree)
25
+ let dir = resolve(startDir);
26
+ while (true) {
27
+ const candidate = join(dir, VENDOR_DHF_TEMPLATES_DIR);
28
+ if (existsSync(candidate)) {
29
+ vendorTemplatesDir = candidate;
30
+ return candidate;
31
+ }
32
+ const parent = dirname(dir);
33
+ if (parent === dir)
34
+ break;
35
+ dir = parent;
36
+ }
37
+ // 2. Relative to this package: <repo>/packages/tools/{src|lib}/dhf → <repo>/memo/...
38
+ const fromPackage = resolve(__dirname, '../../../..', VENDOR_DHF_TEMPLATES_DIR);
39
+ if (existsSync(fromPackage)) {
40
+ vendorTemplatesDir = fromPackage;
41
+ return fromPackage;
42
+ }
43
+ vendorTemplatesDir = null;
44
+ return null;
45
+ }
46
+ /** Test hook: reset the cached vendor templates directory */
47
+ export function resetVendorTemplatesDirCache() {
48
+ vendorTemplatesDir = undefined;
49
+ }
50
+ // ─── Frontmatter parser ───────────────────────────────────────────────────────
51
+ const FRONTMATTER_RE = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/;
52
+ import * as yaml from 'yaml';
53
+ export function parseFrontmatter(content) {
54
+ const match = content.match(FRONTMATTER_RE);
55
+ if (!match)
56
+ return { frontmatter: {}, body: content };
57
+ try {
58
+ const frontmatter = yaml.parse(match[1]) ?? {};
59
+ return { frontmatter, body: match[2] ?? '' };
60
+ }
61
+ catch {
62
+ return { frontmatter: {}, body: content };
63
+ }
64
+ }
65
+ // ─── Resolve template paths ───────────────────────────────────────────────────
66
+ /**
67
+ * Resolve the filesystem path for a template ID.
68
+ * Searches:
69
+ * 1. Custom template dir (if provided)
70
+ * 2. Ontology templates (memo/src/compliance/dhf-templates)
71
+ */
72
+ export function resolveTemplatePath(templateId, customTemplateDir) {
73
+ const candidates = buildCandidatePaths(templateId, customTemplateDir);
74
+ for (const p of candidates) {
75
+ if (existsSync(p))
76
+ return p;
77
+ }
78
+ return null;
79
+ }
80
+ function buildCandidatePaths(templateId, customDir) {
81
+ const paths = [];
82
+ const variants = [
83
+ templateId,
84
+ `${templateId}.md`,
85
+ ];
86
+ if (customDir) {
87
+ for (const v of variants) {
88
+ paths.push(join(customDir, v));
89
+ }
90
+ }
91
+ const vendorDir = findVendorTemplatesDir();
92
+ if (vendorDir) {
93
+ for (const v of variants) {
94
+ paths.push(join(vendorDir, v));
95
+ // Also try standard-prefixed paths
96
+ for (const standard of ['iso-14971', 'iec-62304', 'iec-62366', '21cfr820', 'fda-cybersecurity', 'shared']) {
97
+ paths.push(join(vendorDir, standard, v));
98
+ paths.push(join(vendorDir, standard, 'snippets', v));
99
+ }
100
+ }
101
+ }
102
+ return paths;
103
+ }
104
+ // ─── Load a template ─────────────────────────────────────────────────────────
105
+ export function loadTemplate(templateId, customTemplateDir) {
106
+ const path = resolveTemplatePath(templateId, customTemplateDir);
107
+ if (!path)
108
+ return null;
109
+ try {
110
+ const content = readFileSync(path, 'utf-8');
111
+ const { frontmatter, body } = parseFrontmatter(content);
112
+ return { content, sourcePath: path, frontmatter, body };
113
+ }
114
+ catch {
115
+ return null;
116
+ }
117
+ }
118
+ // ─── Resolve {{include:path}} partials ────────────────────────────────────────
119
+ const INCLUDE_RE = /\{\{include:([^}]+)\}\}/g;
120
+ export function resolveIncludes(content, baseDir, customTemplateDir, depth = 0) {
121
+ if (depth > 5)
122
+ return content; // Prevent infinite recursion
123
+ return content.replace(INCLUDE_RE, (_match, includePath) => {
124
+ const trimmed = includePath.trim();
125
+ // Try relative to base dir first
126
+ const relativePath = resolve(baseDir, trimmed);
127
+ if (existsSync(relativePath)) {
128
+ try {
129
+ const included = readFileSync(relativePath, 'utf-8');
130
+ const { body } = parseFrontmatter(included);
131
+ return resolveIncludes(body, dirname(relativePath), customTemplateDir, depth + 1);
132
+ }
133
+ catch { /* fall through */ }
134
+ }
135
+ // Try as template ID
136
+ const templatePath = resolveTemplatePath(trimmed, customTemplateDir);
137
+ if (templatePath) {
138
+ try {
139
+ const included = readFileSync(templatePath, 'utf-8');
140
+ const { body } = parseFrontmatter(included);
141
+ return resolveIncludes(body, dirname(templatePath), customTemplateDir, depth + 1);
142
+ }
143
+ catch { /* fall through */ }
144
+ }
145
+ return `\n> ⚠️ Include not found: ${trimmed}\n`;
146
+ });
147
+ }
148
+ // ─── Resolve {{project.*}} directives ─────────────────────────────────────────
149
+ export function resolveProjectDirectives(content, projectMeta) {
150
+ const PROJECT_RE = /\{\{project\.([^}]+)\}\}/g;
151
+ return content.replace(PROJECT_RE, (_match, key) => {
152
+ const value = getNestedValue(projectMeta, key.trim());
153
+ return value !== undefined ? String(value) : `{{project.${key}}}`;
154
+ });
155
+ }
156
+ function getNestedValue(obj, key) {
157
+ const parts = key.split('.');
158
+ let current = obj;
159
+ for (const part of parts) {
160
+ if (current === null || current === undefined)
161
+ return undefined;
162
+ current = current[part];
163
+ }
164
+ return current;
165
+ }
166
+ // ─── List all available built-in templates ────────────────────────────────────
167
+ import { readdirSync } from 'node:fs';
168
+ export function listBuiltinTemplates() {
169
+ const results = [];
170
+ function scan(dir, standard) {
171
+ try {
172
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
173
+ const full = join(dir, entry.name);
174
+ if (entry.isDirectory()) {
175
+ scan(full, entry.name);
176
+ }
177
+ else if (entry.name.endsWith('.md') && !entry.name.startsWith('_')) {
178
+ const id = entry.name.replace(/\.md$/, '');
179
+ try {
180
+ const content = readFileSync(full, 'utf-8');
181
+ const { frontmatter } = parseFrontmatter(content);
182
+ results.push({ id: `${standard}/${id}`, path: full, standard, frontmatter });
183
+ }
184
+ catch { /* skip */ }
185
+ }
186
+ }
187
+ }
188
+ catch { /* skip if dir doesn't exist */ }
189
+ }
190
+ const vendorDir = findVendorTemplatesDir();
191
+ if (vendorDir) {
192
+ scan(vendorDir, 'shared');
193
+ }
194
+ return results;
195
+ }
196
+ //# sourceMappingURL=template-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-resolver.js","sourceRoot":"","sources":["../../src/dhf/template-resolver.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,wCAAwC;AACxC,gEAAgE;AAChE,0EAA0E;AAC1E,uEAAuE;AACvE,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,6EAA6E;AAC7E,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,6EAA6E;AAC7E,IAAI,kBAA6C,CAAC;AAClD,MAAM,UAAU,sBAAsB,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IACnE,IAAI,kBAAkB,KAAK,SAAS;QAAE,OAAO,kBAAkB,CAAC;IAEhE,+EAA+E;IAC/E,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAAC,kBAAkB,GAAG,SAAS,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QAChF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACjB,CAAC;IAED,qFAAqF;IACrF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAC;IAChF,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAAC,kBAAkB,GAAG,WAAW,CAAC;QAAC,OAAO,WAAW,CAAC;IAAC,CAAC;IAEtF,kBAAkB,GAAG,IAAI,CAAC;IAC1B,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,4BAA4B;IACxC,kBAAkB,GAAG,SAAS,CAAC;AACnC,CAAC;AAqBD,iFAAiF;AAEjF,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAE5D,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAEtD,IAAI,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAC;QACtE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAC/B,UAAkB,EAClB,iBAA0B;IAE1B,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB,EAAE,SAAkB;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG;QACb,UAAU;QACV,GAAG,UAAU,KAAK;KACrB,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/B,mCAAmC;YACnC,KAAK,MAAM,QAAQ,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACxG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,YAAY,CACxB,UAAkB,EAClB,iBAA0B;IAE1B,MAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAChE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C,MAAM,UAAU,eAAe,CAC3B,OAAe,EACf,OAAe,EACf,iBAA0B,EAC1B,KAAK,GAAG,CAAC;IAET,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,6BAA6B;IAE5D,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAmB,EAAE,EAAE;QAC/D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAEnC,iCAAiC;QACjC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAC5C,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACtF,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QAED,qBAAqB;QACrB,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACrE,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAC5C,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACtF,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,6BAA6B,OAAO,IAAI,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,wBAAwB,CACpC,OAAe,EACf,WAAoC;IAEpC,MAAM,UAAU,GAAG,2BAA2B,CAAC;IAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,GAAW,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC;IACtE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CAAC,GAA4B,EAAE,GAAW;IAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAChE,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAStC,MAAM,UAAU,oBAAoB;IAChC,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,SAAS,IAAI,CAAC,GAAW,EAAE,QAAgB;QACvC,IAAI,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC3C,IAAI,CAAC;wBACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC5C,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;wBAClD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;oBACjF,CAAC;oBAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC1B,CAAC;YACL,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}