@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,35 @@
1
+ import type { MEMOConfig } from '../model/config.js';
2
+ import type { ImportRecipe, ColumnMapping } from './recipes.js';
3
+ export type { ColumnMapping };
4
+ /**
5
+ * Infer column mappings for a set of spreadsheet headers.
6
+ *
7
+ * Strategy:
8
+ * 1. If a `recipe` is provided, match each header against recipe.columnMappings
9
+ * using case-insensitive exact match.
10
+ * 2. Fall back to a built-in heuristic for common column name patterns.
11
+ * 3. Unrecognised columns pass through as dynamic attributes (camelCase normalised).
12
+ *
13
+ * Returns one ColumnMapping per *input* header. `targetAttribute` is `null`
14
+ * (represented as empty string) for columns that should be skipped.
15
+ */
16
+ export declare function inferColumnMappings(headers: string[], recipe?: ImportRecipe): ColumnMapping[];
17
+ export interface MappedCsvResult {
18
+ /** Standard elements CSV text ready for parseElementsCsv() */
19
+ csv: string;
20
+ /** Headers that had no mapping and were skipped */
21
+ skippedColumns: string[];
22
+ /** Warnings about missing required mappings or value transforms */
23
+ warnings: string[];
24
+ }
25
+ /**
26
+ * Apply a set of column mappings to raw spreadsheet rows and produce a
27
+ * standard MEMO elements CSV string.
28
+ *
29
+ * @param rawRows Rows from the source spreadsheet (header → cell value)
30
+ * @param mappings Mappings returned by inferColumnMappings()
31
+ * @param config Resolved MEMO config (used to auto-set kind if not mapped)
32
+ * @param defaultKind Kind to use when no kind column is present
33
+ */
34
+ export declare function applyColumnMappings(rawRows: Record<string, string>[], mappings: ColumnMapping[], config: MEMOConfig, defaultKind?: string): MappedCsvResult;
35
+ //# sourceMappingURL=column-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-mapper.d.ts","sourceRoot":"","sources":["../../src/import/column-mapper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,YAAY,EAAE,aAAa,EAAE,CAAC;AAI9B;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,YAAY,GACtB,aAAa,EAAE,CAsBjB;AAqBD,MAAM,WAAW,eAAe;IAC5B,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EACjC,QAAQ,EAAE,aAAa,EAAE,EACzB,MAAM,EAAE,UAAU,EAClB,WAAW,CAAC,EAAE,MAAM,GACrB,eAAe,CAwEjB"}
@@ -0,0 +1,171 @@
1
+ // ─── Column-Mapping Assistant ─────────────────────────────────────────────────
2
+ //
3
+ // Infers column mappings from spreadsheet headers and applies them to produce
4
+ // a standard MEMO elements CSV ready for parseElementsCsv().
5
+ // ─────────────────────────────────────────────────────────────────────────────
6
+ // ─── Inference ───────────────────────────────────────────────────────────────
7
+ /**
8
+ * Infer column mappings for a set of spreadsheet headers.
9
+ *
10
+ * Strategy:
11
+ * 1. If a `recipe` is provided, match each header against recipe.columnMappings
12
+ * using case-insensitive exact match.
13
+ * 2. Fall back to a built-in heuristic for common column name patterns.
14
+ * 3. Unrecognised columns pass through as dynamic attributes (camelCase normalised).
15
+ *
16
+ * Returns one ColumnMapping per *input* header. `targetAttribute` is `null`
17
+ * (represented as empty string) for columns that should be skipped.
18
+ */
19
+ export function inferColumnMappings(headers, recipe) {
20
+ return headers.map((header) => {
21
+ const normalised = header.trim().toLowerCase();
22
+ // ── Recipe match ──────────────────────────────────────────────────────
23
+ if (recipe) {
24
+ const hit = recipe.columnMappings.find((m) => m.sourceColumn.toLowerCase() === normalised);
25
+ if (hit)
26
+ return { ...hit, sourceColumn: header };
27
+ }
28
+ // ── Heuristic fallback ────────────────────────────────────────────────
29
+ const heuristic = HEURISTIC_MAPPINGS.find((m) => m.sourceColumn.toLowerCase() === normalised);
30
+ if (heuristic)
31
+ return { ...heuristic, sourceColumn: header };
32
+ // ── Passthrough — normalise to camelCase attribute ────────────────────
33
+ const attr = toCamelCase(header);
34
+ return { sourceColumn: header, targetAttribute: attr };
35
+ });
36
+ }
37
+ /** Common column name → MEMO attribute heuristics (supplement to recipe matching) */
38
+ const HEURISTIC_MAPPINGS = [
39
+ { sourceColumn: 'id', targetAttribute: 'id', transform: 'sanitize-id' },
40
+ { sourceColumn: 'identifier', targetAttribute: 'id', transform: 'sanitize-id' },
41
+ { sourceColumn: 'uid', targetAttribute: 'id', transform: 'sanitize-id' },
42
+ { sourceColumn: 'name', targetAttribute: 'name' },
43
+ { sourceColumn: 'title', targetAttribute: 'name' },
44
+ { sourceColumn: 'label', targetAttribute: 'name' },
45
+ { sourceColumn: 'description', targetAttribute: 'doc' },
46
+ { sourceColumn: 'text', targetAttribute: 'doc' },
47
+ { sourceColumn: 'notes', targetAttribute: 'doc' },
48
+ { sourceColumn: 'kind', targetAttribute: 'kind' },
49
+ { sourceColumn: 'type', targetAttribute: 'kind' },
50
+ { sourceColumn: 'category', targetAttribute: 'kind' },
51
+ { sourceColumn: 'construct', targetAttribute: 'construct' },
52
+ ];
53
+ /**
54
+ * Apply a set of column mappings to raw spreadsheet rows and produce a
55
+ * standard MEMO elements CSV string.
56
+ *
57
+ * @param rawRows Rows from the source spreadsheet (header → cell value)
58
+ * @param mappings Mappings returned by inferColumnMappings()
59
+ * @param config Resolved MEMO config (used to auto-set kind if not mapped)
60
+ * @param defaultKind Kind to use when no kind column is present
61
+ */
62
+ export function applyColumnMappings(rawRows, mappings, config, defaultKind) {
63
+ const warnings = [];
64
+ const skippedColumns = [];
65
+ // Collect unique target attributes to form the output header row
66
+ const targetAttrs = new Set();
67
+ const activeMap = [];
68
+ for (const m of mappings) {
69
+ if (!m.targetAttribute) {
70
+ skippedColumns.push(m.sourceColumn);
71
+ continue;
72
+ }
73
+ // Skip duplicate target (first mapping wins)
74
+ if (targetAttrs.has(m.targetAttribute))
75
+ continue;
76
+ targetAttrs.add(m.targetAttribute);
77
+ activeMap.push(m);
78
+ }
79
+ // Ensure required fixed columns are present
80
+ const hasId = targetAttrs.has('id');
81
+ const hasName = targetAttrs.has('name');
82
+ const hasKind = targetAttrs.has('kind');
83
+ if (!hasId)
84
+ warnings.push("No column mapped to 'id' — id will be auto-generated from row number");
85
+ if (!hasName)
86
+ warnings.push("No column mapped to 'name'");
87
+ if (!hasKind && !defaultKind)
88
+ warnings.push("No column mapped to 'kind' and no defaultKind set");
89
+ // Build output column order: fixed cols first, then dynamic attrs
90
+ const FIXED = ['id', 'name', 'kind', 'construct', 'doc'];
91
+ const dynamicTargets = Array.from(targetAttrs).filter((t) => !FIXED.includes(t));
92
+ const outputHeaders = [
93
+ ...FIXED.filter((f) => targetAttrs.has(f)),
94
+ ...dynamicTargets,
95
+ ];
96
+ // Ensure 'id', 'name', 'kind' are always present
97
+ for (const req of ['id', 'name', 'kind']) {
98
+ if (!outputHeaders.includes(req))
99
+ outputHeaders.unshift(req);
100
+ }
101
+ const lines = [outputHeaders.map(escapeCsv).join(',')];
102
+ rawRows.forEach((row, rowIdx) => {
103
+ const out = {};
104
+ // Apply mappings
105
+ for (const m of activeMap) {
106
+ const raw = row[m.sourceColumn] ?? '';
107
+ out[m.targetAttribute] = applyTransform(raw, m.transform);
108
+ }
109
+ // Auto-generate id if missing
110
+ if (!out['id'] || out['id'].trim() === '') {
111
+ out['id'] = `row_${rowIdx + 1}`;
112
+ }
113
+ // Apply defaultKind if kind not mapped or empty
114
+ if ((!out['kind'] || out['kind'].trim() === '') && defaultKind) {
115
+ out['kind'] = defaultKind;
116
+ }
117
+ // Validate kind against config kinds (warn but keep)
118
+ const kind = out['kind'];
119
+ if (kind && config.kinds && !config.kinds[kind]) {
120
+ warnings.push(`Row ${rowIdx + 2}: unknown kind '${kind}' (not in config)`);
121
+ }
122
+ const rowValues = outputHeaders.map((h) => escapeCsv(out[h] ?? ''));
123
+ lines.push(rowValues.join(','));
124
+ });
125
+ return { csv: lines.join('\n') + '\n', skippedColumns, warnings };
126
+ }
127
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
128
+ function applyTransform(value, transform) {
129
+ if (!transform)
130
+ return value;
131
+ switch (transform) {
132
+ case 'sanitize-id': return sanitizeId(value);
133
+ case 'upper': return value.toUpperCase();
134
+ case 'lower': return value.toLowerCase();
135
+ default: return value;
136
+ }
137
+ }
138
+ /**
139
+ * Sanitize a raw cell value into a valid SysML identifier.
140
+ * - Strips leading/trailing whitespace
141
+ * - Replaces spaces and hyphens with underscores
142
+ * - Removes remaining non-identifier characters
143
+ * - Prepends 'e_' if the result starts with a digit
144
+ * - Lowercases the result
145
+ */
146
+ function sanitizeId(raw) {
147
+ let s = raw.trim()
148
+ .replace(/[\s\-]+/g, '_')
149
+ .replace(/[^a-zA-Z0-9_]/g, '')
150
+ .toLowerCase();
151
+ if (/^\d/.test(s))
152
+ s = 'e_' + s;
153
+ return s;
154
+ }
155
+ /** Convert a string to camelCase for use as an attribute name */
156
+ function toCamelCase(s) {
157
+ return s
158
+ .trim()
159
+ .replace(/[^a-zA-Z0-9 _-]/g, '')
160
+ .split(/[\s_-]+/)
161
+ .map((word, i) => i === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
162
+ .join('');
163
+ }
164
+ /** Minimal CSV field escaping */
165
+ function escapeCsv(value) {
166
+ if (value.includes(',') || value.includes('"') || value.includes('\n')) {
167
+ return `"${value.replace(/"/g, '""')}"`;
168
+ }
169
+ return value;
170
+ }
171
+ //# sourceMappingURL=column-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-mapper.js","sourceRoot":"","sources":["../../src/import/column-mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { MemoModel, MemoElement } from '../model/semantic.js';
2
+ import type { CsvElement } from '../serializer/csv-io.js';
3
+ /** One field that changed between the existing element and the incoming CSV row */
4
+ export interface FieldChange {
5
+ field: string;
6
+ currentValue: string;
7
+ incomingValue: string;
8
+ }
9
+ /** An element that already exists in the model but has incoming changes */
10
+ export interface ModifiedElement {
11
+ current: MemoElement;
12
+ incoming: CsvElement;
13
+ changes: FieldChange[];
14
+ }
15
+ /**
16
+ * Structured diff between the current model and an incoming CSV batch.
17
+ *
18
+ * - `added` — elements in the CSV that don't exist in the model yet
19
+ * - `modified` — elements that exist in both but have field differences
20
+ * - `unchanged` — element IDs present in both with no differences
21
+ * - `removed` — element IDs in the model that are NOT in the incoming CSV
22
+ * (only populated if `detectRemovals` was true — callers opt in
23
+ * because removal detection requires knowing the CSV represents
24
+ * the full population, not a partial update)
25
+ */
26
+ export interface ImportDiff {
27
+ added: CsvElement[];
28
+ modified: ModifiedElement[];
29
+ unchanged: string[];
30
+ removed: string[];
31
+ /** Total count of incoming rows */
32
+ incomingCount: number;
33
+ /** Total count of current model elements */
34
+ currentCount: number;
35
+ }
36
+ /**
37
+ * Compute the diff between the current model and an incoming batch of elements.
38
+ *
39
+ * @param model Current MEMO model (from the builder)
40
+ * @param incoming Parsed elements from the incoming CSV
41
+ * @param detectRemovals If true, elements in the model that are missing from
42
+ * the incoming batch are listed in `removed`. Only set
43
+ * this to true when the CSV represents a full replacement
44
+ * of the population, not a partial update.
45
+ */
46
+ export declare function computeImportDiff(model: MemoModel, incoming: CsvElement[], detectRemovals?: boolean): ImportDiff;
47
+ /** Summarise an ImportDiff to a one-line string */
48
+ export declare function formatDiffSummary(diff: ImportDiff): string;
49
+ //# sourceMappingURL=import-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-diff.d.ts","sourceRoot":"","sources":["../../src/import/import-diff.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI1D,mFAAmF;AACnF,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,UAAU,EAAE,EACtB,cAAc,UAAQ,GACvB,UAAU,CAuCZ;AAyCD,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAO1D"}
@@ -0,0 +1,102 @@
1
+ // ─── Re-import Diff ───────────────────────────────────────────────────────────
2
+ //
3
+ // Computes a structured diff between the current model state and a batch of
4
+ // incoming CSV elements, enabling "update without replacement" workflows.
5
+ // Users can see what changed, what is new, and what was removed before
6
+ // committing to the import.
7
+ // ─────────────────────────────────────────────────────────────────────────────
8
+ // ─── computeImportDiff ───────────────────────────────────────────────────────
9
+ /**
10
+ * Compute the diff between the current model and an incoming batch of elements.
11
+ *
12
+ * @param model Current MEMO model (from the builder)
13
+ * @param incoming Parsed elements from the incoming CSV
14
+ * @param detectRemovals If true, elements in the model that are missing from
15
+ * the incoming batch are listed in `removed`. Only set
16
+ * this to true when the CSV represents a full replacement
17
+ * of the population, not a partial update.
18
+ */
19
+ export function computeImportDiff(model, incoming, detectRemovals = false) {
20
+ const added = [];
21
+ const modified = [];
22
+ const unchanged = [];
23
+ const removed = [];
24
+ const incomingById = new Map(incoming.map((el) => [el.id, el]));
25
+ for (const inEl of incoming) {
26
+ const existing = model.elements.get(inEl.id);
27
+ if (!existing) {
28
+ added.push(inEl);
29
+ continue;
30
+ }
31
+ const changes = diffElement(existing, inEl);
32
+ if (changes.length > 0) {
33
+ modified.push({ current: existing, incoming: inEl, changes });
34
+ }
35
+ else {
36
+ unchanged.push(inEl.id);
37
+ }
38
+ }
39
+ if (detectRemovals) {
40
+ for (const [id] of model.elements) {
41
+ if (!incomingById.has(id)) {
42
+ removed.push(id);
43
+ }
44
+ }
45
+ }
46
+ return {
47
+ added,
48
+ modified,
49
+ unchanged,
50
+ removed,
51
+ incomingCount: incoming.length,
52
+ currentCount: model.elements.size,
53
+ };
54
+ }
55
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
56
+ const PROVENANCE_PREFIX = '_import_';
57
+ /** Compare a model element against an incoming CSV element, returning changed fields */
58
+ function diffElement(current, incoming) {
59
+ const changes = [];
60
+ // Fixed fields
61
+ if (current.name !== incoming.name) {
62
+ changes.push({ field: 'name', currentValue: current.name, incomingValue: incoming.name });
63
+ }
64
+ if (current.kind !== incoming.kind) {
65
+ changes.push({ field: 'kind', currentValue: current.kind, incomingValue: incoming.kind });
66
+ }
67
+ if ((current.doc ?? '') !== (incoming.doc ?? '')) {
68
+ changes.push({ field: 'doc', currentValue: current.doc ?? '', incomingValue: incoming.doc ?? '' });
69
+ }
70
+ // Dynamic attributes (skip provenance fields — they always differ)
71
+ const allAttrKeys = new Set([
72
+ ...Object.keys(current.attributes),
73
+ ...Object.keys(incoming.attributes),
74
+ ]);
75
+ for (const key of allAttrKeys) {
76
+ if (key === 'name')
77
+ continue;
78
+ if (key.startsWith(PROVENANCE_PREFIX))
79
+ continue;
80
+ const cv = current.attributes[key] ?? '';
81
+ const iv = incoming.attributes[key] ?? '';
82
+ if (cv !== iv) {
83
+ changes.push({ field: key, currentValue: cv, incomingValue: iv });
84
+ }
85
+ }
86
+ return changes;
87
+ }
88
+ // ─── Formatting helpers (used by CLI display) ────────────────────────────────
89
+ /** Summarise an ImportDiff to a one-line string */
90
+ export function formatDiffSummary(diff) {
91
+ const parts = [];
92
+ if (diff.added.length > 0)
93
+ parts.push(`+${diff.added.length} added`);
94
+ if (diff.modified.length > 0)
95
+ parts.push(`~${diff.modified.length} modified`);
96
+ if (diff.unchanged.length > 0)
97
+ parts.push(`=${diff.unchanged.length} unchanged`);
98
+ if (diff.removed.length > 0)
99
+ parts.push(`-${diff.removed.length} removed`);
100
+ return parts.length > 0 ? parts.join(', ') : 'no changes';
101
+ }
102
+ //# sourceMappingURL=import-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-diff.js","sourceRoot":"","sources":["../../src/import/import-diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /** A single column mapping: source spreadsheet column → MEMO attribute */
2
+ export interface ColumnMapping {
3
+ /** Column header in the source artifact (case-insensitive match) */
4
+ sourceColumn: string;
5
+ /**
6
+ * Target attribute name in the MEMO element CSV format.
7
+ * Special values: 'id', 'name', 'kind', 'doc' map to the fixed columns.
8
+ * Any other value becomes a dynamic attribute column.
9
+ */
10
+ targetAttribute: string;
11
+ /**
12
+ * Optional transform applied to the raw cell value before writing.
13
+ * - 'sanitize-id': strip non-identifier chars, lowercase, prepend letter if starts with digit
14
+ * - 'upper': UPPERCASE
15
+ * - 'lower': lowercase
16
+ */
17
+ transform?: 'sanitize-id' | 'upper' | 'lower';
18
+ /** Whether this mapping is required (import errors if column missing) */
19
+ required?: boolean;
20
+ }
21
+ /** A named, documented import recipe for a common artifact type */
22
+ export interface ImportRecipe {
23
+ id: string;
24
+ name: string;
25
+ description: string;
26
+ /** Kind to assign when no kind column is present in the source */
27
+ defaultKind?: string;
28
+ /** Column mappings in priority order (first match wins for inference) */
29
+ columnMappings: ColumnMapping[];
30
+ }
31
+ /** Requirements matrix: ID, title, description, priority, category columns */
32
+ export declare const RECIPE_REQUIREMENTS_MATRIX: ImportRecipe;
33
+ /** Hazard log: hazard ID, description, severity, probability, risk level */
34
+ export declare const RECIPE_HAZARD_LOG: ImportRecipe;
35
+ /** FMEA worksheet: component, failure mode, effect, severity, occurrence, detection, RPN */
36
+ export declare const RECIPE_FMEA_WORKSHEET: ImportRecipe;
37
+ /** Verification table: requirement ID reference, test method, result, pass/fail */
38
+ export declare const RECIPE_VERIFICATION_TABLE: ImportRecipe;
39
+ /** All built-in recipes in display order */
40
+ export declare const BUILTIN_RECIPES: ImportRecipe[];
41
+ /** Look up a built-in recipe by id */
42
+ export declare function findRecipe(id: string): ImportRecipe | undefined;
43
+ //# sourceMappingURL=recipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/import/recipes.ts"],"names":[],"mappings":"AAQA,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC1B,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,mEAAmE;AACnE,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,cAAc,EAAE,aAAa,EAAE,CAAC;CACnC;AAID,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,EAAE,YA2BxC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,EAAE,YAyB/B,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,EAAE,YA6BnC,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,yBAAyB,EAAE,YA0BvC,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,eAAe,EAAE,YAAY,EAKzC,CAAC;AAEF,sCAAsC;AACtC,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE/D"}
@@ -0,0 +1,133 @@
1
+ // ─── Named Import Recipes ─────────────────────────────────────────────────────
2
+ //
3
+ // Predefined column-mapping configurations for common medical device artifact
4
+ // types. Users pick a recipe instead of configuring column mappings from scratch.
5
+ // ─────────────────────────────────────────────────────────────────────────────
6
+ // ─── Built-in Recipes ────────────────────────────────────────────────────────
7
+ /** Requirements matrix: ID, title, description, priority, category columns */
8
+ export const RECIPE_REQUIREMENTS_MATRIX = {
9
+ id: 'requirements-matrix',
10
+ name: 'Requirements Matrix',
11
+ description: 'Standard requirements spreadsheet with ID, title, description, priority columns. Typical export from DOORS, Jama, or a simple Excel requirements log.',
12
+ defaultKind: 'Requirement',
13
+ columnMappings: [
14
+ { sourceColumn: 'req id', targetAttribute: 'id', transform: 'sanitize-id', required: true },
15
+ { sourceColumn: 'requirement id', targetAttribute: 'id', transform: 'sanitize-id', required: true },
16
+ { sourceColumn: 'id', targetAttribute: 'id', transform: 'sanitize-id', required: true },
17
+ { sourceColumn: 'req #', targetAttribute: 'id', transform: 'sanitize-id' },
18
+ { sourceColumn: 'number', targetAttribute: 'id', transform: 'sanitize-id' },
19
+ { sourceColumn: 'title', targetAttribute: 'name', required: true },
20
+ { sourceColumn: 'requirement title', targetAttribute: 'name', required: true },
21
+ { sourceColumn: 'name', targetAttribute: 'name', required: true },
22
+ { sourceColumn: 'summary', targetAttribute: 'name' },
23
+ { sourceColumn: 'description', targetAttribute: 'doc' },
24
+ { sourceColumn: 'text', targetAttribute: 'doc' },
25
+ { sourceColumn: 'statement', targetAttribute: 'doc' },
26
+ { sourceColumn: 'requirement text', targetAttribute: 'doc' },
27
+ { sourceColumn: 'kind', targetAttribute: 'kind' },
28
+ { sourceColumn: 'type', targetAttribute: 'kind' },
29
+ { sourceColumn: 'category', targetAttribute: 'category' },
30
+ { sourceColumn: 'priority', targetAttribute: 'priority' },
31
+ { sourceColumn: 'rationale', targetAttribute: 'rationale' },
32
+ { sourceColumn: 'verification method', targetAttribute: 'verificationMethod' },
33
+ { sourceColumn: 'status', targetAttribute: 'status' },
34
+ ],
35
+ };
36
+ /** Hazard log: hazard ID, description, severity, probability, risk level */
37
+ export const RECIPE_HAZARD_LOG = {
38
+ id: 'hazard-log',
39
+ name: 'Hazard Log',
40
+ description: 'ISO 14971 hazard analysis spreadsheet with hazard ID, description, severity, probability and risk level columns.',
41
+ defaultKind: 'Hazard',
42
+ columnMappings: [
43
+ { sourceColumn: 'hazard id', targetAttribute: 'id', transform: 'sanitize-id', required: true },
44
+ { sourceColumn: 'haz id', targetAttribute: 'id', transform: 'sanitize-id' },
45
+ { sourceColumn: 'id', targetAttribute: 'id', transform: 'sanitize-id', required: true },
46
+ { sourceColumn: 'hazard', targetAttribute: 'name', required: true },
47
+ { sourceColumn: 'hazard description', targetAttribute: 'name', required: true },
48
+ { sourceColumn: 'name', targetAttribute: 'name', required: true },
49
+ { sourceColumn: 'description', targetAttribute: 'doc' },
50
+ { sourceColumn: 'hazardous situation', targetAttribute: 'doc' },
51
+ { sourceColumn: 'kind', targetAttribute: 'kind' },
52
+ { sourceColumn: 'severity', targetAttribute: 'severity' },
53
+ { sourceColumn: 'probability', targetAttribute: 'probability' },
54
+ { sourceColumn: 'risk level', targetAttribute: 'riskLevel' },
55
+ { sourceColumn: 'risk', targetAttribute: 'riskLevel' },
56
+ { sourceColumn: 'harm', targetAttribute: 'harm' },
57
+ { sourceColumn: 'foreseeable misuse', targetAttribute: 'foreseeableMisuse' },
58
+ { sourceColumn: 'mitigation', targetAttribute: 'mitigation' },
59
+ { sourceColumn: 'residual risk', targetAttribute: 'residualRisk' },
60
+ { sourceColumn: 'status', targetAttribute: 'status' },
61
+ ],
62
+ };
63
+ /** FMEA worksheet: component, failure mode, effect, severity, occurrence, detection, RPN */
64
+ export const RECIPE_FMEA_WORKSHEET = {
65
+ id: 'fmea-worksheet',
66
+ name: 'FMEA Worksheet',
67
+ description: 'Failure Mode and Effects Analysis spreadsheet. Maps component failure modes to MEMO Failure kind with FMEA attributes (severity, occurrence, detection, RPN).',
68
+ defaultKind: 'Failure',
69
+ columnMappings: [
70
+ { sourceColumn: 'id', targetAttribute: 'id', transform: 'sanitize-id', required: true },
71
+ { sourceColumn: 'fmea id', targetAttribute: 'id', transform: 'sanitize-id' },
72
+ { sourceColumn: 'failure mode', targetAttribute: 'name', required: true },
73
+ { sourceColumn: 'failure mode description', targetAttribute: 'name' },
74
+ { sourceColumn: 'name', targetAttribute: 'name', required: true },
75
+ { sourceColumn: 'description', targetAttribute: 'doc' },
76
+ { sourceColumn: 'effect', targetAttribute: 'doc' },
77
+ { sourceColumn: 'effect of failure', targetAttribute: 'effect' },
78
+ { sourceColumn: 'kind', targetAttribute: 'kind' },
79
+ { sourceColumn: 'component', targetAttribute: 'component' },
80
+ { sourceColumn: 'function', targetAttribute: 'function' },
81
+ { sourceColumn: 'severity', targetAttribute: 'severity' },
82
+ { sourceColumn: 's', targetAttribute: 'severity' },
83
+ { sourceColumn: 'occurrence', targetAttribute: 'occurrence' },
84
+ { sourceColumn: 'o', targetAttribute: 'occurrence' },
85
+ { sourceColumn: 'detection', targetAttribute: 'detection' },
86
+ { sourceColumn: 'd', targetAttribute: 'detection' },
87
+ { sourceColumn: 'rpn', targetAttribute: 'rpn' },
88
+ { sourceColumn: 'risk priority number', targetAttribute: 'rpn' },
89
+ { sourceColumn: 'cause', targetAttribute: 'cause' },
90
+ { sourceColumn: 'controls', targetAttribute: 'controls' },
91
+ { sourceColumn: 'action', targetAttribute: 'action' },
92
+ ],
93
+ };
94
+ /** Verification table: requirement ID reference, test method, result, pass/fail */
95
+ export const RECIPE_VERIFICATION_TABLE = {
96
+ id: 'verification-table',
97
+ name: 'Verification Table',
98
+ description: 'Verification and validation traceability matrix mapping requirements to test methods and results.',
99
+ defaultKind: 'VerificationTest',
100
+ columnMappings: [
101
+ { sourceColumn: 'test id', targetAttribute: 'id', transform: 'sanitize-id', required: true },
102
+ { sourceColumn: 'verification id', targetAttribute: 'id', transform: 'sanitize-id' },
103
+ { sourceColumn: 'id', targetAttribute: 'id', transform: 'sanitize-id', required: true },
104
+ { sourceColumn: 'test name', targetAttribute: 'name', required: true },
105
+ { sourceColumn: 'name', targetAttribute: 'name', required: true },
106
+ { sourceColumn: 'title', targetAttribute: 'name' },
107
+ { sourceColumn: 'description', targetAttribute: 'doc' },
108
+ { sourceColumn: 'objective', targetAttribute: 'doc' },
109
+ { sourceColumn: 'kind', targetAttribute: 'kind' },
110
+ { sourceColumn: 'requirement id', targetAttribute: 'requirementId' },
111
+ { sourceColumn: 'req id', targetAttribute: 'requirementId' },
112
+ { sourceColumn: 'method', targetAttribute: 'method' },
113
+ { sourceColumn: 'test method', targetAttribute: 'method' },
114
+ { sourceColumn: 'verification method', targetAttribute: 'method' },
115
+ { sourceColumn: 'result', targetAttribute: 'result' },
116
+ { sourceColumn: 'pass/fail', targetAttribute: 'result' },
117
+ { sourceColumn: 'status', targetAttribute: 'status' },
118
+ { sourceColumn: 'evidence', targetAttribute: 'evidence' },
119
+ { sourceColumn: 'notes', targetAttribute: 'notes' },
120
+ ],
121
+ };
122
+ /** All built-in recipes in display order */
123
+ export const BUILTIN_RECIPES = [
124
+ RECIPE_REQUIREMENTS_MATRIX,
125
+ RECIPE_HAZARD_LOG,
126
+ RECIPE_FMEA_WORKSHEET,
127
+ RECIPE_VERIFICATION_TABLE,
128
+ ];
129
+ /** Look up a built-in recipe by id */
130
+ export function findRecipe(id) {
131
+ return BUILTIN_RECIPES.find((r) => r.id === id);
132
+ }
133
+ //# sourceMappingURL=recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/import/recipes.ts"],"names":[],"mappings":"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"}