@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,394 @@
1
+ // ─── CSV Import/Export for MEMO Elements & Relationships ─────────────────────
2
+ //
3
+ // Standard CSV formats for bulk import/export of model data.
4
+ // The element CSV schema is ontology-aware: kind determines the construct
5
+ // and layer automatically, and dynamic columns map to SysML attributes.
6
+ // ─────────────────────────────────────────────────────────────────────────────
7
+ /**
8
+ * Attach provenance to a batch of CsvElements.
9
+ * `sourceRow` is auto-assigned (1-based index into the `elements` array).
10
+ * Call this after `parseElementsCsv()` when you want full traceability.
11
+ *
12
+ * @example
13
+ * const result = parseElementsCsv(csv, config);
14
+ * const withProvenance = attachProvenance(result.items, {
15
+ * sourceFile: 'requirements-v3.xlsx',
16
+ * importTimestamp: new Date().toISOString(),
17
+ * importSessionId: crypto.randomUUID(),
18
+ * });
19
+ */
20
+ export function attachProvenance(elements, meta) {
21
+ return elements.map((el, idx) => ({
22
+ ...el,
23
+ provenance: { ...meta, sourceRow: idx + 1 },
24
+ }));
25
+ }
26
+ // ─── Fixed column names ─────────────────────────────────────────────────────
27
+ const ELEMENT_FIXED_COLS = ['id', 'name', 'kind', 'construct', 'doc'];
28
+ const RELATIONSHIP_FIXED_COLS = ['sourceId', 'targetId', 'type', 'sourceEnd', 'targetEnd'];
29
+ // ─── CSV Parsing Helpers ────────────────────────────────────────────────────
30
+ /** Parse a CSV line respecting quoted fields (handles commas and newlines inside quotes) */
31
+ function parseCsvLine(line) {
32
+ const fields = [];
33
+ let current = '';
34
+ let inQuotes = false;
35
+ for (let i = 0; i < line.length; i++) {
36
+ const ch = line[i];
37
+ if (inQuotes) {
38
+ if (ch === '"') {
39
+ if (i + 1 < line.length && line[i + 1] === '"') {
40
+ current += '"';
41
+ i++; // skip escaped quote
42
+ }
43
+ else {
44
+ inQuotes = false;
45
+ }
46
+ }
47
+ else {
48
+ current += ch;
49
+ }
50
+ }
51
+ else {
52
+ if (ch === '"') {
53
+ inQuotes = true;
54
+ }
55
+ else if (ch === ',') {
56
+ fields.push(current.trim());
57
+ current = '';
58
+ }
59
+ else {
60
+ current += ch;
61
+ }
62
+ }
63
+ }
64
+ fields.push(current.trim());
65
+ return fields;
66
+ }
67
+ /** Escape a CSV field value (quote if it contains comma, quote, or newline) */
68
+ function escapeCsvField(value) {
69
+ if (value.includes(',') || value.includes('"') || value.includes('\n')) {
70
+ return `"${value.replace(/"/g, '""')}"`;
71
+ }
72
+ return value;
73
+ }
74
+ /** Parse full CSV text into header + rows */
75
+ function parseCsvText(csvText) {
76
+ const lines = csvText.split(/\r?\n/).filter((l) => l.trim() !== '');
77
+ if (lines.length === 0)
78
+ return { headers: [], rows: [] };
79
+ const headers = parseCsvLine(lines[0]);
80
+ const rows = lines.slice(1).map(parseCsvLine);
81
+ return { headers, rows };
82
+ }
83
+ // ─── Element CSV ────────────────────────────────────────────────────────────
84
+ /**
85
+ * Parse an elements CSV file.
86
+ *
87
+ * **Standard CSV format for elements:**
88
+ * ```
89
+ * id,name,kind,construct,doc,[attr1],[attr2],...
90
+ * ```
91
+ *
92
+ * - `id` — unique element identifier (required, valid SysML identifier)
93
+ * - `name` — display name (required)
94
+ * - `kind` — ontology type from config.kinds (required, e.g. "Hazard", "Requirement")
95
+ * - `construct` — SysML construct override (optional, auto-derived from kind if omitted)
96
+ * - `doc` — documentation comment (optional)
97
+ * - Additional columns become `attribute redefines <colName> = "<value>"` in SysML
98
+ *
99
+ * The `kind` value is validated against the resolved config. If `construct` is omitted,
100
+ * it is derived from the kind's `sysmlConstruct` definition. The `layer` is always
101
+ * derived from the kind definition and cannot be set manually.
102
+ */
103
+ export function parseElementsCsv(csvText, config) {
104
+ const { headers, rows } = parseCsvText(csvText);
105
+ const items = [];
106
+ const errors = [];
107
+ const warnings = [];
108
+ if (headers.length === 0) {
109
+ errors.push('CSV is empty — no header row found');
110
+ return { items, errors, warnings };
111
+ }
112
+ // Validate required columns
113
+ const missing = ['id', 'name', 'kind'].filter((c) => !headers.includes(c));
114
+ if (missing.length > 0) {
115
+ errors.push(`Missing required columns: ${missing.join(', ')}`);
116
+ return { items, errors, warnings };
117
+ }
118
+ // Identify dynamic attribute columns (anything not in fixed set)
119
+ const fixedSet = new Set(ELEMENT_FIXED_COLS);
120
+ const attrCols = headers.filter((h) => !fixedSet.has(h));
121
+ const seenIds = new Set();
122
+ for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
123
+ const row = rows[rowIdx];
124
+ const lineNum = rowIdx + 2; // 1-indexed, +1 for header
125
+ // Build a field map
126
+ const fields = {};
127
+ for (let i = 0; i < headers.length; i++) {
128
+ fields[headers[i]] = row[i] ?? '';
129
+ }
130
+ const id = fields['id'];
131
+ const name = fields['name'];
132
+ const kind = fields['kind'];
133
+ const constructOverride = fields['construct'] || '';
134
+ const doc = fields['doc'] || '';
135
+ // Validate id
136
+ if (!id) {
137
+ errors.push(`Row ${lineNum}: missing required field 'id'`);
138
+ continue;
139
+ }
140
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(id)) {
141
+ errors.push(`Row ${lineNum}: invalid id '${id}' — must be a valid SysML identifier (letters, digits, underscore, starting with letter or underscore)`);
142
+ continue;
143
+ }
144
+ if (seenIds.has(id)) {
145
+ errors.push(`Row ${lineNum}: duplicate id '${id}'`);
146
+ continue;
147
+ }
148
+ seenIds.add(id);
149
+ // Validate name
150
+ if (!name) {
151
+ errors.push(`Row ${lineNum}: missing required field 'name'`);
152
+ continue;
153
+ }
154
+ // Validate kind against config
155
+ if (!kind) {
156
+ errors.push(`Row ${lineNum}: missing required field 'kind'`);
157
+ continue;
158
+ }
159
+ const kinds = config.kinds ?? {};
160
+ const kindDef = kinds[kind];
161
+ if (!kindDef) {
162
+ const validKinds = Object.keys(kinds).sort();
163
+ errors.push(`Row ${lineNum}: unknown kind '${kind}'. Valid kinds: ${validKinds.join(', ')}`);
164
+ continue;
165
+ }
166
+ // Derive construct from kind (or use override)
167
+ let construct = constructOverride;
168
+ if (!construct) {
169
+ // Map sysmlConstruct (e.g. "part def") to usage construct (e.g. "part")
170
+ construct = sysmlConstructToUsage(kindDef.sysmlConstruct);
171
+ }
172
+ // Derive layer from kind
173
+ const layer = kindDef.layer || '';
174
+ if (!layer) {
175
+ warnings.push(`Row ${lineNum}: kind '${kind}' has no layer defined in config`);
176
+ }
177
+ // Collect dynamic attributes
178
+ const attributes = {};
179
+ for (const col of attrCols) {
180
+ const val = fields[col];
181
+ if (val) {
182
+ attributes[col] = val;
183
+ }
184
+ }
185
+ // Merge default attributes from kind definition (CSV values take precedence)
186
+ if (kindDef.defaultAttributes) {
187
+ for (const [key, val] of Object.entries(kindDef.defaultAttributes)) {
188
+ if (!(key in attributes)) {
189
+ attributes[key] = val;
190
+ }
191
+ }
192
+ }
193
+ items.push({ id, name, kind, construct, layer, doc, attributes });
194
+ }
195
+ return { items, errors, warnings };
196
+ }
197
+ /**
198
+ * Export model elements to CSV.
199
+ *
200
+ * Produces a CSV with fixed columns (id, name, kind, construct, doc) plus
201
+ * dynamic attribute columns gathered from all elements in the model.
202
+ */
203
+ export function exportElementsCsv(model, _config) {
204
+ const elements = Array.from(model.elements.values());
205
+ if (elements.length === 0)
206
+ return '';
207
+ // Collect all unique attribute keys across all elements
208
+ const attrKeysSet = new Set();
209
+ for (const el of elements) {
210
+ for (const key of Object.keys(el.attributes)) {
211
+ if (key !== 'name')
212
+ attrKeysSet.add(key); // 'name' is a fixed column
213
+ }
214
+ }
215
+ const attrKeys = Array.from(attrKeysSet).sort();
216
+ // Build header
217
+ const headers = [...ELEMENT_FIXED_COLS, ...attrKeys];
218
+ const lines = [headers.map(escapeCsvField).join(',')];
219
+ // Build rows
220
+ for (const el of elements) {
221
+ const row = [
222
+ el.id,
223
+ el.name,
224
+ el.kind,
225
+ el.construct,
226
+ el.doc || '',
227
+ ...attrKeys.map((k) => el.attributes[k] || ''),
228
+ ];
229
+ lines.push(row.map(escapeCsvField).join(','));
230
+ }
231
+ return lines.join('\n') + '\n';
232
+ }
233
+ // ─── Relationship CSV ───────────────────────────────────────────────────────
234
+ /**
235
+ * Parse a relationships CSV file.
236
+ *
237
+ * **Standard CSV format for relationships:**
238
+ * ```
239
+ * sourceId,targetId,type,sourceEnd,targetEnd
240
+ * ```
241
+ *
242
+ * - `sourceId` — source element id (required, must exist in model or import batch)
243
+ * - `targetId` — target element id (required, must exist in model or import batch)
244
+ * - `type` — relationship type from config (required, e.g. "mitigates", "traceTo")
245
+ * - `sourceEnd` — connection end name (optional, default: "source")
246
+ * - `targetEnd` — connection end name (optional, default: "target")
247
+ */
248
+ export function parseRelationshipsCsv(csvText, config, knownElementIds) {
249
+ const { headers, rows } = parseCsvText(csvText);
250
+ const items = [];
251
+ const errors = [];
252
+ const warnings = [];
253
+ if (headers.length === 0) {
254
+ errors.push('CSV is empty — no header row found');
255
+ return { items, errors, warnings };
256
+ }
257
+ // Validate required columns
258
+ const missing = ['sourceId', 'targetId', 'type'].filter((c) => !headers.includes(c));
259
+ if (missing.length > 0) {
260
+ errors.push(`Missing required columns: ${missing.join(', ')}`);
261
+ return { items, errors, warnings };
262
+ }
263
+ // Build valid relationship type set
264
+ const validRelTypes = new Set((config.relationshipTypes ?? []).map((r) => r.name));
265
+ for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
266
+ const row = rows[rowIdx];
267
+ const lineNum = rowIdx + 2;
268
+ const fields = {};
269
+ for (let i = 0; i < headers.length; i++) {
270
+ fields[headers[i]] = row[i] ?? '';
271
+ }
272
+ const sourceId = fields['sourceId'];
273
+ const targetId = fields['targetId'];
274
+ const type = fields['type'];
275
+ const sourceEnd = fields['sourceEnd'] || 'source';
276
+ const targetEnd = fields['targetEnd'] || 'target';
277
+ if (!sourceId) {
278
+ errors.push(`Row ${lineNum}: missing required field 'sourceId'`);
279
+ continue;
280
+ }
281
+ if (!targetId) {
282
+ errors.push(`Row ${lineNum}: missing required field 'targetId'`);
283
+ continue;
284
+ }
285
+ if (!type) {
286
+ errors.push(`Row ${lineNum}: missing required field 'type'`);
287
+ continue;
288
+ }
289
+ // Validate relationship type
290
+ if (!validRelTypes.has(type)) {
291
+ const valid = Array.from(validRelTypes).sort();
292
+ errors.push(`Row ${lineNum}: unknown relationship type '${type}'. Valid types: ${valid.join(', ')}`);
293
+ continue;
294
+ }
295
+ // Validate element ids if known
296
+ if (knownElementIds) {
297
+ if (!knownElementIds.has(sourceId)) {
298
+ errors.push(`Row ${lineNum}: sourceId '${sourceId}' not found in model`);
299
+ continue;
300
+ }
301
+ if (!knownElementIds.has(targetId)) {
302
+ errors.push(`Row ${lineNum}: targetId '${targetId}' not found in model`);
303
+ continue;
304
+ }
305
+ }
306
+ if (sourceId === targetId) {
307
+ warnings.push(`Row ${lineNum}: self-referencing relationship (sourceId === targetId === '${sourceId}')`);
308
+ }
309
+ items.push({ sourceId, targetId, type, sourceEnd, targetEnd });
310
+ }
311
+ return { items, errors, warnings };
312
+ }
313
+ /**
314
+ * Export model relationships to CSV.
315
+ */
316
+ export function exportRelationshipsCsv(model) {
317
+ if (model.relationships.length === 0)
318
+ return '';
319
+ const headers = [...RELATIONSHIP_FIXED_COLS];
320
+ const lines = [headers.map(escapeCsvField).join(',')];
321
+ for (const rel of model.relationships) {
322
+ const row = [rel.sourceId, rel.targetId, rel.type, rel.sourceEnd, rel.targetEnd];
323
+ lines.push(row.map(escapeCsvField).join(','));
324
+ }
325
+ return lines.join('\n') + '\n';
326
+ }
327
+ // ─── Helpers ────────────────────────────────────────────────────────────────
328
+ /** Map SysML construct definition to usage keyword */
329
+ function sysmlConstructToUsage(sysmlConstruct) {
330
+ const map = {
331
+ 'part def': 'part',
332
+ 'item def': 'item',
333
+ 'requirement def': 'requirement',
334
+ 'action def': 'action',
335
+ 'port def': 'port',
336
+ 'interface def': 'interface',
337
+ 'connection def': 'connection',
338
+ 'attribute def': 'attribute',
339
+ 'enum def': 'enum',
340
+ };
341
+ return map[sysmlConstruct] || 'part';
342
+ }
343
+ /**
344
+ * Generate a template CSV for elements based on the config's ontology kinds.
345
+ * Includes all valid kinds as example rows with their default attributes.
346
+ */
347
+ export function generateElementTemplate(config) {
348
+ // Gather all default attribute keys across all kinds
349
+ const attrKeysSet = new Set();
350
+ for (const kindDef of Object.values(config.kinds ?? {})) {
351
+ if (kindDef.defaultAttributes) {
352
+ for (const key of Object.keys(kindDef.defaultAttributes)) {
353
+ attrKeysSet.add(key);
354
+ }
355
+ }
356
+ }
357
+ const attrKeys = Array.from(attrKeysSet).sort();
358
+ const headers = [...ELEMENT_FIXED_COLS, ...attrKeys];
359
+ const lines = [headers.map(escapeCsvField).join(',')];
360
+ // Add one example row per kind
361
+ for (const [kindKey, kindDef] of Object.entries(config.kinds ?? {})) {
362
+ const construct = sysmlConstructToUsage(kindDef.sysmlConstruct);
363
+ const row = [
364
+ `example_${kindKey.toLowerCase()}`, // id
365
+ `Example ${kindDef.label}`, // name
366
+ kindKey, // kind
367
+ construct, // construct
368
+ `A sample ${kindDef.label} element`, // doc
369
+ ...attrKeys.map((k) => kindDef.defaultAttributes?.[k] || ''),
370
+ ];
371
+ lines.push(row.map(escapeCsvField).join(','));
372
+ }
373
+ return lines.join('\n') + '\n';
374
+ }
375
+ /**
376
+ * Generate a template CSV for relationships based on config relationship types.
377
+ */
378
+ export function generateRelationshipTemplate(config) {
379
+ const headers = [...RELATIONSHIP_FIXED_COLS];
380
+ const lines = [headers.map(escapeCsvField).join(',')];
381
+ // Add one example row per relationship type
382
+ for (const relType of (config.relationshipTypes ?? [])) {
383
+ const row = [
384
+ 'source_element_id', // sourceId
385
+ 'target_element_id', // targetId
386
+ relType.name, // type
387
+ 'source', // sourceEnd
388
+ 'target', // targetEnd
389
+ ];
390
+ lines.push(row.map(escapeCsvField).join(','));
391
+ }
392
+ return lines.join('\n') + '\n';
393
+ }
394
+ //# sourceMappingURL=csv-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-io.js","sourceRoot":"","sources":["../../src/serializer/csv-io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { CsvElement, CsvRelationship } from './csv-io.js';
2
+ export declare function generateUsage(element: CsvElement): string;
3
+ /**
4
+ * Generate a SysML connection usage for a relationship.
5
+ *
6
+ * Example output:
7
+ * ```sysml
8
+ * connection : Mitigates connect control ::> risk_control_001 to hazard ::> hazard_001;
9
+ * ```
10
+ */
11
+ export declare function generateConnection(rel: CsvRelationship): string;
12
+ /**
13
+ * Generate a complete .sysml file from elements and relationships.
14
+ *
15
+ * @param elements - Parsed elements from CSV
16
+ * @param relationships - Parsed relationships from CSV
17
+ * @param packageName - SysML package name (e.g. "imported_elements")
18
+ */
19
+ /**
20
+ * Wrap already-indented inner package-body lines in `package` declarations.
21
+ *
22
+ * Standard SysML v2 requires single-identifier names in a package DECLARATION, so a
23
+ * qualified name (`a::b::c`) is emitted as NESTED packages, never `package a::b::c {`.
24
+ * The inner lines are assumed to already carry one indentation level (as the existing
25
+ * generators produce them); deeper nesting adds the extra levels. For a single-segment
26
+ * name this is byte-identical to the previous `package name { … }` output.
27
+ */
28
+ export declare function wrapPackage(qualifiedName: string, innerLines: string[], opts?: {
29
+ isLibrary?: boolean;
30
+ }): string[];
31
+ export declare function generateFile(elements: CsvElement[], relationships: CsvRelationship[], packageName: string): string;
32
+ //# sourceMappingURL=sysml-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sysml-generator.d.ts","sourceRoot":"","sources":["../../src/serializer/sysml-generator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI/D,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAkCzD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAG/D;AAED;;;;;;GAMG;AACH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAajH;AAED,wBAAgB,YAAY,CACxB,QAAQ,EAAE,UAAU,EAAE,EACtB,aAAa,EAAE,eAAe,EAAE,EAChC,WAAW,EAAE,MAAM,GACpB,MAAM,CAgCR"}
@@ -0,0 +1,120 @@
1
+ // ─── SysML v2 Text Generator ─────────────────────────────────────────────────
2
+ //
3
+ // Generates valid SysML v2 text from imported elements and relationships.
4
+ // Used by CSV import to produce .sysml files that the parser can roundtrip.
5
+ // ─────────────────────────────────────────────────────────────────────────────
6
+ // Generate a SysML usage block for a single element.
7
+ // Example: requirement hazard_001 : Hazard { doc /​* text *​/ attribute redefines name = "..."; }
8
+ export function generateUsage(element) {
9
+ const lines = [];
10
+ const indent = ' ';
11
+ // Usage header: <construct> <id> : <kind> {
12
+ lines.push(`${element.construct} ${element.id} : ${element.kind} {`);
13
+ // Doc comment
14
+ if (element.doc) {
15
+ lines.push(`${indent}doc /* ${element.doc} */`);
16
+ }
17
+ // Name attribute (always emit if different from id)
18
+ if (element.name && element.name !== element.id) {
19
+ lines.push(`${indent}attribute redefines name = "${escapeString(element.name)}";`);
20
+ }
21
+ // Dynamic attributes
22
+ for (const [key, value] of Object.entries(element.attributes)) {
23
+ if (key === 'name')
24
+ continue; // already handled above
25
+ lines.push(`${indent}attribute redefines ${key} = "${escapeString(value)}";`);
26
+ }
27
+ // Provenance attributes (written as _import_* so they don't conflict with model attrs)
28
+ if (element.provenance) {
29
+ const p = element.provenance;
30
+ lines.push(`${indent}attribute redefines _import_source = "${escapeString(p.sourceFile)}";`);
31
+ lines.push(`${indent}attribute redefines _import_row = "${p.sourceRow}";`);
32
+ lines.push(`${indent}attribute redefines _import_timestamp = "${escapeString(p.importTimestamp)}";`);
33
+ lines.push(`${indent}attribute redefines _import_session = "${escapeString(p.importSessionId)}";`);
34
+ }
35
+ lines.push('}');
36
+ return lines.join('\n');
37
+ }
38
+ /**
39
+ * Generate a SysML connection usage for a relationship.
40
+ *
41
+ * Example output:
42
+ * ```sysml
43
+ * connection : Mitigates connect control ::> risk_control_001 to hazard ::> hazard_001;
44
+ * ```
45
+ */
46
+ export function generateConnection(rel) {
47
+ const typeName = capitalizeFirst(rel.type);
48
+ return `connection : ${typeName} connect ${rel.sourceEnd} ::> ${rel.sourceId} to ${rel.targetEnd} ::> ${rel.targetId};`;
49
+ }
50
+ /**
51
+ * Generate a complete .sysml file from elements and relationships.
52
+ *
53
+ * @param elements - Parsed elements from CSV
54
+ * @param relationships - Parsed relationships from CSV
55
+ * @param packageName - SysML package name (e.g. "imported_elements")
56
+ */
57
+ /**
58
+ * Wrap already-indented inner package-body lines in `package` declarations.
59
+ *
60
+ * Standard SysML v2 requires single-identifier names in a package DECLARATION, so a
61
+ * qualified name (`a::b::c`) is emitted as NESTED packages, never `package a::b::c {`.
62
+ * The inner lines are assumed to already carry one indentation level (as the existing
63
+ * generators produce them); deeper nesting adds the extra levels. For a single-segment
64
+ * name this is byte-identical to the previous `package name { … }` output.
65
+ */
66
+ export function wrapPackage(qualifiedName, innerLines, opts) {
67
+ const segs = qualifiedName.split('::').filter(Boolean);
68
+ if (segs.length === 0)
69
+ return innerLines;
70
+ const out = [];
71
+ segs.forEach((seg, i) => {
72
+ const pad = ' '.repeat(i);
73
+ const lib = opts?.isLibrary && i === segs.length - 1 ? 'library ' : '';
74
+ out.push(`${pad}${lib}package ${seg} {`);
75
+ });
76
+ const extra = ' '.repeat(segs.length - 1); // innerLines already carry one level
77
+ for (const l of innerLines)
78
+ out.push(l.length ? `${extra}${l}` : l);
79
+ for (let i = segs.length - 1; i >= 0; i--)
80
+ out.push(`${' '.repeat(i)}}`);
81
+ return out;
82
+ }
83
+ export function generateFile(elements, relationships, packageName) {
84
+ const body = [];
85
+ body.push('');
86
+ // Group elements by kind for readability
87
+ const byKind = new Map();
88
+ for (const el of elements) {
89
+ if (!byKind.has(el.kind))
90
+ byKind.set(el.kind, []);
91
+ byKind.get(el.kind).push(el);
92
+ }
93
+ for (const [kind, kindElements] of byKind) {
94
+ body.push(` // ── ${kind} ──`);
95
+ for (const el of kindElements) {
96
+ const usageLines = generateUsage(el).split('\n');
97
+ for (const ul of usageLines) {
98
+ body.push(` ${ul}`);
99
+ }
100
+ body.push('');
101
+ }
102
+ }
103
+ // Relationships
104
+ if (relationships.length > 0) {
105
+ body.push(' // ── Relationships ──');
106
+ for (const rel of relationships) {
107
+ body.push(` ${generateConnection(rel)}`);
108
+ }
109
+ body.push('');
110
+ }
111
+ return wrapPackage(packageName, body).join('\n') + '\n';
112
+ }
113
+ // ─── Helpers ────────────────────────────────────────────────────────────────
114
+ function escapeString(s) {
115
+ return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
116
+ }
117
+ function capitalizeFirst(s) {
118
+ return s.charAt(0).toUpperCase() + s.slice(1);
119
+ }
120
+ //# sourceMappingURL=sysml-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sysml-generator.js","sourceRoot":"","sources":["../../src/serializer/sysml-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { MEMOConfig } from '@memoarchitect/tools';
2
+ export interface ConfigChainEntry {
3
+ configPath: string;
4
+ config: MEMOConfig;
5
+ }
6
+ /**
7
+ * Load and fully resolve a config file, following the extends chain.
8
+ */
9
+ export declare function loadAndResolveConfig(configPath: string): MEMOConfig;
10
+ /**
11
+ * Load the raw config chain in inheritance order: base parent first, leaf last.
12
+ */
13
+ export declare function loadConfigChain(configPath: string): ConfigChainEntry[];
14
+ //# sourceMappingURL=config-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-resolver.d.ts","sourceRoot":"","sources":["../../src/server/config-resolver.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAOnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAEtE"}
@@ -0,0 +1,54 @@
1
+ // ─── Config Resolver ──────────────────────────────────────────────────────────
2
+ //
3
+ // Resolves the `extends` chain for MEMO configs.
4
+ // Handles: "@memoarchitect/medical-modeling-profile" → find config in node_modules or workspace packages
5
+ // Supports both new format (memo.package.yaml) and legacy (memo.config.yaml).
6
+ // ─────────────────────────────────────────────────────────────────────────────
7
+ import { resolve, dirname } from 'node:path';
8
+ import { loadConfig, resolveConfig, resolvePackageConfig } from '@memoarchitect/tools';
9
+ /**
10
+ * Load and fully resolve a config file, following the extends chain.
11
+ */
12
+ export function loadAndResolveConfig(configPath) {
13
+ const config = loadConfig(configPath);
14
+ const projectDir = dirname(configPath);
15
+ return resolveConfig(config, (packageName) => {
16
+ return resolveParentConfig(packageName, projectDir);
17
+ });
18
+ }
19
+ /**
20
+ * Load the raw config chain in inheritance order: base parent first, leaf last.
21
+ */
22
+ export function loadConfigChain(configPath) {
23
+ return loadConfigChainInternal(resolve(configPath), new Set());
24
+ }
25
+ /**
26
+ * Try to find and load a parent config by package name.
27
+ * Searches: node_modules, workspace packages, known paths.
28
+ */
29
+ function resolveParentConfig(packageName, fromDir) {
30
+ const configPath = resolveParentConfigPath(packageName, fromDir);
31
+ return configPath ? loadConfig(configPath) : undefined;
32
+ }
33
+ function loadConfigChainInternal(configPath, seen) {
34
+ if (seen.has(configPath))
35
+ return [];
36
+ seen.add(configPath);
37
+ const config = loadConfig(configPath);
38
+ const chain = [];
39
+ if (config.extends) {
40
+ const extendsArr = Array.isArray(config.extends) ? config.extends : [config.extends];
41
+ for (const parentName of extendsArr) {
42
+ const parentPath = resolveParentConfigPath(parentName, dirname(configPath));
43
+ if (parentPath) {
44
+ chain.push(...loadConfigChainInternal(parentPath, seen));
45
+ }
46
+ }
47
+ }
48
+ chain.push({ configPath, config });
49
+ return chain;
50
+ }
51
+ function resolveParentConfigPath(packageName, fromDir) {
52
+ return resolvePackageConfig(packageName, fromDir);
53
+ }
54
+ //# sourceMappingURL=config-resolver.js.map