@memoarchitect/tools 0.6.7 → 0.7.2

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 (466) hide show
  1. package/README.md +36 -11
  2. package/package.json +19 -7
  3. package/packages/tools/lib/bin/memo.js +161 -10
  4. package/packages/tools/lib/bin/memo.js.map +1 -1
  5. package/packages/tools/lib/browser/index.d.ts +1 -1
  6. package/packages/tools/lib/browser/index.d.ts.map +1 -1
  7. package/packages/tools/lib/browser/index.js +1 -1
  8. package/packages/tools/lib/browser/index.js.map +1 -1
  9. package/packages/tools/lib/commands/ask.js +1 -1
  10. package/packages/tools/lib/commands/ask.js.map +1 -1
  11. package/packages/tools/lib/commands/check.d.ts.map +1 -1
  12. package/packages/tools/lib/commands/check.js +3 -9
  13. package/packages/tools/lib/commands/check.js.map +1 -1
  14. package/packages/tools/lib/commands/conformance.d.ts +36 -0
  15. package/packages/tools/lib/commands/conformance.d.ts.map +1 -0
  16. package/packages/tools/lib/commands/conformance.js +212 -0
  17. package/packages/tools/lib/commands/conformance.js.map +1 -0
  18. package/packages/tools/lib/commands/convert.d.ts +12 -0
  19. package/packages/tools/lib/commands/convert.d.ts.map +1 -0
  20. package/packages/tools/lib/commands/convert.js +103 -0
  21. package/packages/tools/lib/commands/convert.js.map +1 -0
  22. package/packages/tools/lib/commands/create-package.d.ts +1 -2
  23. package/packages/tools/lib/commands/create-package.d.ts.map +1 -1
  24. package/packages/tools/lib/commands/create-package.js.map +1 -1
  25. package/packages/tools/lib/commands/dev.d.ts +13 -0
  26. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  27. package/packages/tools/lib/commands/dev.js +208 -74
  28. package/packages/tools/lib/commands/dev.js.map +1 -1
  29. package/packages/tools/lib/commands/dhf-draft.js +1 -1
  30. package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
  31. package/packages/tools/lib/commands/dhf-preview.js +1 -1
  32. package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
  33. package/packages/tools/lib/commands/dhf.js +1 -1
  34. package/packages/tools/lib/commands/dhf.js.map +1 -1
  35. package/packages/tools/lib/commands/element.d.ts +34 -0
  36. package/packages/tools/lib/commands/element.d.ts.map +1 -0
  37. package/packages/tools/lib/commands/element.js +174 -0
  38. package/packages/tools/lib/commands/element.js.map +1 -0
  39. package/packages/tools/lib/commands/export.d.ts.map +1 -1
  40. package/packages/tools/lib/commands/export.js +39 -40
  41. package/packages/tools/lib/commands/export.js.map +1 -1
  42. package/packages/tools/lib/commands/generate.d.ts.map +1 -1
  43. package/packages/tools/lib/commands/generate.js +10 -7
  44. package/packages/tools/lib/commands/generate.js.map +1 -1
  45. package/packages/tools/lib/commands/import.d.ts.map +1 -1
  46. package/packages/tools/lib/commands/import.js +25 -12
  47. package/packages/tools/lib/commands/import.js.map +1 -1
  48. package/packages/tools/lib/commands/init.d.ts.map +1 -1
  49. package/packages/tools/lib/commands/init.js +34 -14
  50. package/packages/tools/lib/commands/init.js.map +1 -1
  51. package/packages/tools/lib/commands/inspect.d.ts +5 -0
  52. package/packages/tools/lib/commands/inspect.d.ts.map +1 -0
  53. package/packages/tools/lib/commands/inspect.js +56 -0
  54. package/packages/tools/lib/commands/inspect.js.map +1 -0
  55. package/packages/tools/lib/commands/lock.d.ts.map +1 -1
  56. package/packages/tools/lib/commands/lock.js +7 -2
  57. package/packages/tools/lib/commands/lock.js.map +1 -1
  58. package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
  59. package/packages/tools/lib/commands/ontology.js +69 -116
  60. package/packages/tools/lib/commands/ontology.js.map +1 -1
  61. package/packages/tools/lib/commands/pack.d.ts +1 -1
  62. package/packages/tools/lib/commands/pack.d.ts.map +1 -1
  63. package/packages/tools/lib/commands/pack.js +20 -78
  64. package/packages/tools/lib/commands/pack.js.map +1 -1
  65. package/packages/tools/lib/commands/package.d.ts +10 -0
  66. package/packages/tools/lib/commands/package.d.ts.map +1 -0
  67. package/packages/tools/lib/commands/package.js +113 -0
  68. package/packages/tools/lib/commands/package.js.map +1 -0
  69. package/packages/tools/lib/commands/plugin.js +1 -1
  70. package/packages/tools/lib/commands/plugin.js.map +1 -1
  71. package/packages/tools/lib/commands/rules.d.ts.map +1 -1
  72. package/packages/tools/lib/commands/rules.js +120 -30
  73. package/packages/tools/lib/commands/rules.js.map +1 -1
  74. package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
  75. package/packages/tools/lib/commands/sysand-publish.js +14 -16
  76. package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
  77. package/packages/tools/lib/commands/toolchain.d.ts +8 -0
  78. package/packages/tools/lib/commands/toolchain.d.ts.map +1 -0
  79. package/packages/tools/lib/commands/toolchain.js +64 -0
  80. package/packages/tools/lib/commands/toolchain.js.map +1 -0
  81. package/packages/tools/lib/commands/validate.d.ts +1 -1
  82. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  83. package/packages/tools/lib/commands/validate.js +183 -56
  84. package/packages/tools/lib/commands/validate.js.map +1 -1
  85. package/packages/tools/lib/completeness/tracker.d.ts +10 -2
  86. package/packages/tools/lib/completeness/tracker.d.ts.map +1 -1
  87. package/packages/tools/lib/completeness/tracker.js +16 -21
  88. package/packages/tools/lib/completeness/tracker.js.map +1 -1
  89. package/packages/tools/lib/conformance/baseline.d.ts +26 -0
  90. package/packages/tools/lib/conformance/baseline.d.ts.map +1 -0
  91. package/packages/tools/lib/conformance/baseline.js +170 -0
  92. package/packages/tools/lib/conformance/baseline.js.map +1 -0
  93. package/packages/tools/lib/conformance/bnf.d.ts +84 -0
  94. package/packages/tools/lib/conformance/bnf.d.ts.map +1 -0
  95. package/packages/tools/lib/conformance/bnf.js +166 -0
  96. package/packages/tools/lib/conformance/bnf.js.map +1 -0
  97. package/packages/tools/lib/conformance/corpus.d.ts +125 -0
  98. package/packages/tools/lib/conformance/corpus.d.ts.map +1 -0
  99. package/packages/tools/lib/conformance/corpus.js +190 -0
  100. package/packages/tools/lib/conformance/corpus.js.map +1 -0
  101. package/packages/tools/lib/conformance/diff-xmi.d.ts +118 -0
  102. package/packages/tools/lib/conformance/diff-xmi.d.ts.map +1 -0
  103. package/packages/tools/lib/conformance/diff-xmi.js +276 -0
  104. package/packages/tools/lib/conformance/diff-xmi.js.map +1 -0
  105. package/packages/tools/lib/conformance/generated/syside-rules.d.ts +10 -0
  106. package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +1 -0
  107. package/packages/tools/lib/conformance/generated/syside-rules.js +1142 -0
  108. package/packages/tools/lib/conformance/generated/syside-rules.js.map +1 -0
  109. package/packages/tools/lib/conformance/index.d.ts +7 -0
  110. package/packages/tools/lib/conformance/index.d.ts.map +1 -0
  111. package/packages/tools/lib/conformance/index.js +19 -0
  112. package/packages/tools/lib/conformance/index.js.map +1 -0
  113. package/packages/tools/lib/conformance/run.d.ts +117 -0
  114. package/packages/tools/lib/conformance/run.d.ts.map +1 -0
  115. package/packages/tools/lib/conformance/run.js +0 -0
  116. package/packages/tools/lib/conformance/run.js.map +1 -0
  117. package/packages/tools/lib/conformance/xmi.d.ts +45 -0
  118. package/packages/tools/lib/conformance/xmi.d.ts.map +1 -0
  119. package/packages/tools/lib/conformance/xmi.js +148 -0
  120. package/packages/tools/lib/conformance/xmi.js.map +1 -0
  121. package/packages/tools/lib/dhf/template-resolver.js +1 -1
  122. package/packages/tools/lib/dhf/template-resolver.js.map +1 -1
  123. package/packages/tools/lib/import/column-mapper.d.ts +2 -2
  124. package/packages/tools/lib/import/column-mapper.d.ts.map +1 -1
  125. package/packages/tools/lib/import/column-mapper.js +3 -3
  126. package/packages/tools/lib/import/column-mapper.js.map +1 -1
  127. package/packages/tools/lib/index.d.ts +20 -3
  128. package/packages/tools/lib/index.d.ts.map +1 -1
  129. package/packages/tools/lib/index.js +19 -2
  130. package/packages/tools/lib/index.js.map +1 -1
  131. package/packages/tools/lib/language/generated/ast.d.ts +196 -51
  132. package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
  133. package/packages/tools/lib/language/generated/ast.js +136 -15
  134. package/packages/tools/lib/language/generated/ast.js.map +1 -1
  135. package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
  136. package/packages/tools/lib/language/generated/grammar.js +867 -295
  137. package/packages/tools/lib/language/generated/grammar.js.map +1 -1
  138. package/packages/tools/lib/llm/chat-engine.d.ts +4 -3
  139. package/packages/tools/lib/llm/chat-engine.d.ts.map +1 -1
  140. package/packages/tools/lib/llm/chat-engine.js +15 -12
  141. package/packages/tools/lib/llm/chat-engine.js.map +1 -1
  142. package/packages/tools/lib/llm/generate-engine.d.ts +7 -2
  143. package/packages/tools/lib/llm/generate-engine.d.ts.map +1 -1
  144. package/packages/tools/lib/llm/generate-engine.js +22 -4
  145. package/packages/tools/lib/llm/generate-engine.js.map +1 -1
  146. package/packages/tools/lib/llm/index.d.ts +1 -0
  147. package/packages/tools/lib/llm/index.d.ts.map +1 -1
  148. package/packages/tools/lib/llm/index.js +1 -0
  149. package/packages/tools/lib/llm/index.js.map +1 -1
  150. package/packages/tools/lib/llm/model-context.d.ts +2 -2
  151. package/packages/tools/lib/llm/model-context.d.ts.map +1 -1
  152. package/packages/tools/lib/llm/model-context.js +7 -13
  153. package/packages/tools/lib/llm/model-context.js.map +1 -1
  154. package/packages/tools/lib/llm/sysml-guidance.d.ts +8 -0
  155. package/packages/tools/lib/llm/sysml-guidance.d.ts.map +1 -0
  156. package/packages/tools/lib/llm/sysml-guidance.js +28 -0
  157. package/packages/tools/lib/llm/sysml-guidance.js.map +1 -0
  158. package/packages/tools/lib/lock.d.ts +14 -8
  159. package/packages/tools/lib/lock.d.ts.map +1 -1
  160. package/packages/tools/lib/lock.js +97 -108
  161. package/packages/tools/lib/lock.js.map +1 -1
  162. package/packages/tools/lib/mcp/model-loader.d.ts +3 -0
  163. package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
  164. package/packages/tools/lib/mcp/model-loader.js +9 -5
  165. package/packages/tools/lib/mcp/model-loader.js.map +1 -1
  166. package/packages/tools/lib/mcp/tools.d.ts +3 -0
  167. package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
  168. package/packages/tools/lib/mcp/tools.js +8 -9
  169. package/packages/tools/lib/mcp/tools.js.map +1 -1
  170. package/packages/tools/lib/model/activity-notation.d.ts +54 -0
  171. package/packages/tools/lib/model/activity-notation.d.ts.map +1 -0
  172. package/packages/tools/lib/model/activity-notation.js +208 -0
  173. package/packages/tools/lib/model/activity-notation.js.map +1 -0
  174. package/packages/tools/lib/model/builder.d.ts +3 -0
  175. package/packages/tools/lib/model/builder.d.ts.map +1 -1
  176. package/packages/tools/lib/model/builder.js +231 -19
  177. package/packages/tools/lib/model/builder.js.map +1 -1
  178. package/packages/tools/lib/model/config-loader.d.ts +19 -25
  179. package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
  180. package/packages/tools/lib/model/config-loader.js +51 -233
  181. package/packages/tools/lib/model/config-loader.js.map +1 -1
  182. package/packages/tools/lib/model/config.d.ts +42 -213
  183. package/packages/tools/lib/model/config.d.ts.map +1 -1
  184. package/packages/tools/lib/model/config.js +11 -9
  185. package/packages/tools/lib/model/config.js.map +1 -1
  186. package/packages/tools/lib/model/effective-scope.d.ts +74 -0
  187. package/packages/tools/lib/model/effective-scope.d.ts.map +1 -0
  188. package/packages/tools/lib/model/effective-scope.js +133 -0
  189. package/packages/tools/lib/model/effective-scope.js.map +1 -0
  190. package/packages/tools/lib/model/ir-identity.d.ts +94 -0
  191. package/packages/tools/lib/model/ir-identity.d.ts.map +1 -0
  192. package/packages/tools/lib/model/ir-identity.js +178 -0
  193. package/packages/tools/lib/model/ir-identity.js.map +1 -0
  194. package/packages/tools/lib/model/kind-registry.d.ts +114 -1
  195. package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
  196. package/packages/tools/lib/model/kind-registry.js +148 -4
  197. package/packages/tools/lib/model/kind-registry.js.map +1 -1
  198. package/packages/tools/lib/model/layer-resolver.js +1 -1
  199. package/packages/tools/lib/model/layer-resolver.js.map +1 -1
  200. package/packages/tools/lib/model/methodology-loader.d.ts +19 -24
  201. package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
  202. package/packages/tools/lib/model/methodology-loader.js +179 -176
  203. package/packages/tools/lib/model/methodology-loader.js.map +1 -1
  204. package/packages/tools/lib/model/methodology-resolver.d.ts +115 -0
  205. package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -0
  206. package/packages/tools/lib/model/methodology-resolver.js +317 -0
  207. package/packages/tools/lib/model/methodology-resolver.js.map +1 -0
  208. package/packages/tools/lib/model/native-project.d.ts +130 -0
  209. package/packages/tools/lib/model/native-project.d.ts.map +1 -0
  210. package/packages/tools/lib/model/native-project.js +570 -0
  211. package/packages/tools/lib/model/native-project.js.map +1 -0
  212. package/packages/tools/lib/model/ontology-loader.d.ts +34 -21
  213. package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
  214. package/packages/tools/lib/model/ontology-loader.js +340 -614
  215. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  216. package/packages/tools/lib/model/package-manifest.d.ts +37 -0
  217. package/packages/tools/lib/model/package-manifest.d.ts.map +1 -0
  218. package/packages/tools/lib/model/package-manifest.js +96 -0
  219. package/packages/tools/lib/model/package-manifest.js.map +1 -0
  220. package/packages/tools/lib/model/parser-utils.d.ts +31 -0
  221. package/packages/tools/lib/model/parser-utils.d.ts.map +1 -1
  222. package/packages/tools/lib/model/parser-utils.js +89 -1
  223. package/packages/tools/lib/model/parser-utils.js.map +1 -1
  224. package/packages/tools/lib/model/paths.d.ts +10 -4
  225. package/packages/tools/lib/model/paths.d.ts.map +1 -1
  226. package/packages/tools/lib/model/paths.js +10 -4
  227. package/packages/tools/lib/model/paths.js.map +1 -1
  228. package/packages/tools/lib/model/project-conversion.d.ts +226 -0
  229. package/packages/tools/lib/model/project-conversion.d.ts.map +1 -0
  230. package/packages/tools/lib/model/project-conversion.js +946 -0
  231. package/packages/tools/lib/model/project-conversion.js.map +1 -0
  232. package/packages/tools/lib/model/relationship-legality.d.ts +10 -0
  233. package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
  234. package/packages/tools/lib/model/relationship-legality.js.map +1 -1
  235. package/packages/tools/lib/model/relationship-registry.d.ts +16 -1
  236. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
  237. package/packages/tools/lib/model/relationship-registry.js.map +1 -1
  238. package/packages/tools/lib/model/semantic.d.ts +27 -0
  239. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  240. package/packages/tools/lib/model/semantic.js +3 -0
  241. package/packages/tools/lib/model/semantic.js.map +1 -1
  242. package/packages/tools/lib/model/settings-boundary.d.ts +19 -0
  243. package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -0
  244. package/packages/tools/lib/model/settings-boundary.js +118 -0
  245. package/packages/tools/lib/model/settings-boundary.js.map +1 -0
  246. package/packages/tools/lib/model/short-id.d.ts.map +1 -1
  247. package/packages/tools/lib/model/short-id.js +2 -0
  248. package/packages/tools/lib/model/short-id.js.map +1 -1
  249. package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
  250. package/packages/tools/lib/model/source-graph.js +5 -1
  251. package/packages/tools/lib/model/source-graph.js.map +1 -1
  252. package/packages/tools/lib/model/source-provenance.d.ts +112 -0
  253. package/packages/tools/lib/model/source-provenance.d.ts.map +1 -0
  254. package/packages/tools/lib/model/source-provenance.js +169 -0
  255. package/packages/tools/lib/model/source-provenance.js.map +1 -0
  256. package/packages/tools/lib/model/sysml-ir.d.ts +9 -0
  257. package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -0
  258. package/packages/tools/lib/model/sysml-ir.js +105 -0
  259. package/packages/tools/lib/model/sysml-ir.js.map +1 -0
  260. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  261. package/packages/tools/lib/model/view-deriver.js +36 -6
  262. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  263. package/packages/tools/lib/model/view-kinds.d.ts +2 -0
  264. package/packages/tools/lib/model/view-kinds.d.ts.map +1 -1
  265. package/packages/tools/lib/model/view-kinds.js +11 -0
  266. package/packages/tools/lib/model/view-kinds.js.map +1 -1
  267. package/packages/tools/lib/ontology/owl-exporter.d.ts +2 -2
  268. package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
  269. package/packages/tools/lib/ontology/owl-exporter.js +12 -12
  270. package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
  271. package/packages/tools/lib/operations/ai-authoring.d.ts +24 -0
  272. package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -0
  273. package/packages/tools/lib/operations/ai-authoring.js +77 -0
  274. package/packages/tools/lib/operations/ai-authoring.js.map +1 -0
  275. package/packages/tools/lib/operations/authoring.d.ts +40 -0
  276. package/packages/tools/lib/operations/authoring.d.ts.map +1 -0
  277. package/packages/tools/lib/operations/authoring.js +56 -0
  278. package/packages/tools/lib/operations/authoring.js.map +1 -0
  279. package/packages/tools/lib/operations/index.d.ts +2 -0
  280. package/packages/tools/lib/operations/index.d.ts.map +1 -1
  281. package/packages/tools/lib/operations/index.js +2 -0
  282. package/packages/tools/lib/operations/index.js.map +1 -1
  283. package/packages/tools/lib/operations/project-snapshot.d.ts +28 -3
  284. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  285. package/packages/tools/lib/operations/project-snapshot.js +79 -30
  286. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  287. package/packages/tools/lib/protocol/messages.d.ts +298 -11
  288. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  289. package/packages/tools/lib/serializer/csv-io.d.ts +7 -7
  290. package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
  291. package/packages/tools/lib/serializer/csv-io.js +11 -11
  292. package/packages/tools/lib/serializer/csv-io.js.map +1 -1
  293. package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
  294. package/packages/tools/lib/serializer/sysml-generator.js +34 -2
  295. package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
  296. package/packages/tools/lib/server/config-resolver.d.ts +8 -4
  297. package/packages/tools/lib/server/config-resolver.d.ts.map +1 -1
  298. package/packages/tools/lib/server/config-resolver.js +25 -44
  299. package/packages/tools/lib/server/config-resolver.js.map +1 -1
  300. package/packages/tools/lib/server/conflict-policy.d.ts +44 -0
  301. package/packages/tools/lib/server/conflict-policy.d.ts.map +1 -0
  302. package/packages/tools/lib/server/conflict-policy.js +94 -0
  303. package/packages/tools/lib/server/conflict-policy.js.map +1 -0
  304. package/packages/tools/lib/server/dev-server.d.ts +32 -2
  305. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  306. package/packages/tools/lib/server/dev-server.js +721 -53
  307. package/packages/tools/lib/server/dev-server.js.map +1 -1
  308. package/packages/tools/lib/server/element-writer.d.ts +11 -0
  309. package/packages/tools/lib/server/element-writer.d.ts.map +1 -0
  310. package/packages/tools/lib/server/element-writer.js +123 -0
  311. package/packages/tools/lib/server/element-writer.js.map +1 -0
  312. package/packages/tools/lib/server/file-watcher.d.ts +4 -1
  313. package/packages/tools/lib/server/file-watcher.d.ts.map +1 -1
  314. package/packages/tools/lib/server/file-watcher.js +17 -7
  315. package/packages/tools/lib/server/file-watcher.js.map +1 -1
  316. package/packages/tools/lib/server/mutation-domain.d.ts +22 -0
  317. package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -0
  318. package/packages/tools/lib/server/mutation-domain.js +87 -0
  319. package/packages/tools/lib/server/mutation-domain.js.map +1 -0
  320. package/packages/tools/lib/server/persistor.d.ts +63 -8
  321. package/packages/tools/lib/server/persistor.d.ts.map +1 -1
  322. package/packages/tools/lib/server/persistor.js +152 -44
  323. package/packages/tools/lib/server/persistor.js.map +1 -1
  324. package/packages/tools/lib/server/relationship-writer.d.ts +28 -4
  325. package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
  326. package/packages/tools/lib/server/relationship-writer.js +98 -13
  327. package/packages/tools/lib/server/relationship-writer.js.map +1 -1
  328. package/packages/tools/lib/server/rule-policy-writer.d.ts +40 -0
  329. package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -0
  330. package/packages/tools/lib/server/rule-policy-writer.js +124 -0
  331. package/packages/tools/lib/server/rule-policy-writer.js.map +1 -0
  332. package/packages/tools/lib/server/runtime-budget.d.ts +14 -0
  333. package/packages/tools/lib/server/runtime-budget.d.ts.map +1 -0
  334. package/packages/tools/lib/server/runtime-budget.js +15 -0
  335. package/packages/tools/lib/server/runtime-budget.js.map +1 -0
  336. package/packages/tools/lib/server/sysml-notation.d.ts +36 -0
  337. package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -0
  338. package/packages/tools/lib/server/sysml-notation.js +87 -0
  339. package/packages/tools/lib/server/sysml-notation.js.map +1 -0
  340. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts +9 -0
  341. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts.map +1 -0
  342. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js +315 -0
  343. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js.map +1 -0
  344. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts +5206 -0
  345. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts.map +1 -0
  346. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js +1933 -0
  347. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js.map +1 -0
  348. package/packages/tools/lib/sysml-ir/index.d.ts +3 -0
  349. package/packages/tools/lib/sysml-ir/index.d.ts.map +1 -0
  350. package/packages/tools/lib/sysml-ir/index.js +3 -0
  351. package/packages/tools/lib/sysml-ir/index.js.map +1 -0
  352. package/packages/tools/lib/sysml-ir/ir.d.ts +50 -0
  353. package/packages/tools/lib/sysml-ir/ir.d.ts.map +1 -0
  354. package/packages/tools/lib/sysml-ir/ir.js +2 -0
  355. package/packages/tools/lib/sysml-ir/ir.js.map +1 -0
  356. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +3 -0
  357. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +1 -0
  358. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +97 -0
  359. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +1 -0
  360. package/packages/tools/lib/sysmlc/index.d.ts +2 -0
  361. package/packages/tools/lib/sysmlc/index.d.ts.map +1 -0
  362. package/packages/tools/lib/sysmlc/index.js +7 -0
  363. package/packages/tools/lib/sysmlc/index.js.map +1 -0
  364. package/packages/tools/lib/sysmlc/server.d.ts +29 -0
  365. package/packages/tools/lib/sysmlc/server.d.ts.map +1 -0
  366. package/packages/tools/lib/sysmlc/server.js +168 -0
  367. package/packages/tools/lib/sysmlc/server.js.map +1 -0
  368. package/packages/tools/lib/toolchain/default-registry.d.ts +12 -0
  369. package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -0
  370. package/packages/tools/lib/toolchain/default-registry.js +28 -0
  371. package/packages/tools/lib/toolchain/default-registry.js.map +1 -0
  372. package/packages/tools/lib/toolchain/diagnostic.d.ts +57 -0
  373. package/packages/tools/lib/toolchain/diagnostic.d.ts.map +1 -0
  374. package/packages/tools/lib/toolchain/diagnostic.js +69 -0
  375. package/packages/tools/lib/toolchain/diagnostic.js.map +1 -0
  376. package/packages/tools/lib/toolchain/effective.d.ts +36 -0
  377. package/packages/tools/lib/toolchain/effective.d.ts.map +1 -0
  378. package/packages/tools/lib/toolchain/effective.js +91 -0
  379. package/packages/tools/lib/toolchain/effective.js.map +1 -0
  380. package/packages/tools/lib/toolchain/index.d.ts +11 -0
  381. package/packages/tools/lib/toolchain/index.d.ts.map +1 -0
  382. package/packages/tools/lib/toolchain/index.js +21 -0
  383. package/packages/tools/lib/toolchain/index.js.map +1 -0
  384. package/packages/tools/lib/toolchain/lowering.d.ts +63 -0
  385. package/packages/tools/lib/toolchain/lowering.d.ts.map +1 -0
  386. package/packages/tools/lib/toolchain/lowering.js +100 -0
  387. package/packages/tools/lib/toolchain/lowering.js.map +1 -0
  388. package/packages/tools/lib/toolchain/operations.d.ts +87 -0
  389. package/packages/tools/lib/toolchain/operations.d.ts.map +1 -0
  390. package/packages/tools/lib/toolchain/operations.js +111 -0
  391. package/packages/tools/lib/toolchain/operations.js.map +1 -0
  392. package/packages/tools/lib/toolchain/process.d.ts +45 -0
  393. package/packages/tools/lib/toolchain/process.d.ts.map +1 -0
  394. package/packages/tools/lib/toolchain/process.js +125 -0
  395. package/packages/tools/lib/toolchain/process.js.map +1 -0
  396. package/packages/tools/lib/toolchain/protocol.d.ts +122 -0
  397. package/packages/tools/lib/toolchain/protocol.d.ts.map +1 -0
  398. package/packages/tools/lib/toolchain/protocol.js +74 -0
  399. package/packages/tools/lib/toolchain/protocol.js.map +1 -0
  400. package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts +9 -0
  401. package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts.map +1 -0
  402. package/packages/tools/lib/toolchain/providers/internal-kpar.js +84 -0
  403. package/packages/tools/lib/toolchain/providers/internal-kpar.js.map +1 -0
  404. package/packages/tools/lib/toolchain/providers/internal.d.ts +33 -0
  405. package/packages/tools/lib/toolchain/providers/internal.d.ts.map +1 -0
  406. package/packages/tools/lib/toolchain/providers/internal.js +286 -0
  407. package/packages/tools/lib/toolchain/providers/internal.js.map +1 -0
  408. package/packages/tools/lib/toolchain/providers/sysand.d.ts +12 -0
  409. package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -0
  410. package/packages/tools/lib/toolchain/providers/sysand.js +110 -0
  411. package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -0
  412. package/packages/tools/lib/toolchain/providers/syside.d.ts +24 -0
  413. package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -0
  414. package/packages/tools/lib/toolchain/providers/syside.js +208 -0
  415. package/packages/tools/lib/toolchain/providers/syside.js.map +1 -0
  416. package/packages/tools/lib/toolchain/registry.d.ts +192 -0
  417. package/packages/tools/lib/toolchain/registry.d.ts.map +1 -0
  418. package/packages/tools/lib/toolchain/registry.js +130 -0
  419. package/packages/tools/lib/toolchain/registry.js.map +1 -0
  420. package/packages/tools/lib/toolchain/schema.d.ts +30 -0
  421. package/packages/tools/lib/toolchain/schema.d.ts.map +1 -0
  422. package/packages/tools/lib/toolchain/schema.js +112 -0
  423. package/packages/tools/lib/toolchain/schema.js.map +1 -0
  424. package/packages/tools/lib/toolchain/sysmlc-client.d.ts +77 -0
  425. package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +1 -0
  426. package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
  427. package/packages/tools/lib/toolchain/sysmlc-client.js.map +1 -0
  428. package/packages/tools/lib/validator/architecture-validator.d.ts +8 -1
  429. package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -1
  430. package/packages/tools/lib/validator/architecture-validator.js +25 -1
  431. package/packages/tools/lib/validator/architecture-validator.js.map +1 -1
  432. package/packages/tools/lib/validator/builtin-rules.d.ts +16 -0
  433. package/packages/tools/lib/validator/builtin-rules.d.ts.map +1 -0
  434. package/packages/tools/lib/validator/builtin-rules.js +62 -0
  435. package/packages/tools/lib/validator/builtin-rules.js.map +1 -0
  436. package/packages/tools/lib/validator/constraint-eval.d.ts +15 -0
  437. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  438. package/packages/tools/lib/validator/constraint-eval.js +62 -7
  439. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  440. package/packages/tools/lib/validator/constraint-loader.d.ts +22 -4
  441. package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
  442. package/packages/tools/lib/validator/constraint-loader.js +100 -27
  443. package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
  444. package/packages/tools/lib/validator/rule-engine.d.ts +2 -1
  445. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  446. package/packages/tools/lib/validator/rule-engine.js +56 -5
  447. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  448. package/packages/tools/lib/validator/sysml-constraints.d.ts +64 -0
  449. package/packages/tools/lib/validator/sysml-constraints.d.ts.map +1 -0
  450. package/packages/tools/lib/validator/sysml-constraints.js +251 -0
  451. package/packages/tools/lib/validator/sysml-constraints.js.map +1 -0
  452. package/packages/tools/lib/validator/types.d.ts +33 -0
  453. package/packages/tools/lib/validator/types.d.ts.map +1 -1
  454. package/packages/tools/lib/version.d.ts +2 -0
  455. package/packages/tools/lib/version.d.ts.map +1 -0
  456. package/packages/tools/lib/version.js +26 -0
  457. package/packages/tools/lib/version.js.map +1 -0
  458. package/packages/tools/src/grammar/memo-sysml.langium +104 -18
  459. package/packages/tools/lib/model/dimension-filter.d.ts +0 -33
  460. package/packages/tools/lib/model/dimension-filter.d.ts.map +0 -1
  461. package/packages/tools/lib/model/dimension-filter.js +0 -57
  462. package/packages/tools/lib/model/dimension-filter.js.map +0 -1
  463. package/packages/tools/lib/model/toolchain.d.ts +0 -12
  464. package/packages/tools/lib/model/toolchain.d.ts.map +0 -1
  465. package/packages/tools/lib/model/toolchain.js +0 -92
  466. package/packages/tools/lib/model/toolchain.js.map +0 -1
@@ -1,236 +1,65 @@
1
- /** Project type discriminator */
2
- export type ProjectType = 'ontology' | 'profile' | 'library' | 'device';
3
- /** An architecture visualization layer grouping related entity kinds */
4
- export interface ArchLayer {
5
- /** Unique layer identifier, e.g. "requirements", "architecture" */
6
- id: string;
7
- /** Human-readable label for the layer */
8
- label: string;
9
- /** Hex color for layer visualization, e.g. "#4A90D9" */
10
- color: string;
11
- }
12
- /** A typed relationship between entity kinds */
13
- export interface RelationshipType {
14
- /** Relationship identifier, e.g. "mitigates" */
15
- name: string;
16
- /** Human-readable label, e.g. "Mitigates" */
17
- label: string;
18
- /** Architecture layer this relationship belongs to */
19
- layer: string;
20
- /** Hex color for relationship visualization */
21
- color: string;
22
- }
23
1
  /** SysML v2 constructs supported as entity base types */
24
2
  export type SysMLConstruct = 'part def' | 'requirement def' | 'verification def' | 'state def' | 'use case def' | 'action def' | 'action usage' | 'item def' | 'port def' | 'interface def' | 'connection def' | 'attribute def' | 'enum def';
25
- /** Definition of an entity kind within a domain */
26
- export interface KindDefinition {
27
- /** Human-readable label */
28
- label: string;
29
- /** Architecture layer this kind belongs to */
30
- layer?: string;
31
- /** SysML v2 construct this kind maps to */
32
- sysmlConstruct: SysMLConstruct;
33
- /** Icon identifier for the palette/diagram */
34
- icon?: string;
35
- /** Template file for new instances (relative to domain package) */
36
- template?: string;
37
- /** Default attributes for new instances */
38
- defaultAttributes?: Record<string, string>;
39
- }
40
3
  /** Legacy diagram type keys — each maps to exactly one SysML v2 view kind (see view-kinds.ts) */
41
4
  export type DiagramType = 'bdd' | 'ibd' | 'req' | 'ucd' | 'act' | 'afd' | 'pkg' | 'par' | 'risk' | 'stm' | 'seq' | 'fmea' | 'alloc' | 'threat-model';
42
- /** Diagram definition — a named, typed view within a viewpoint */
43
- export interface DiagramDefinition {
44
- /** Unique diagram identifier, e.g. "diag-risk-chain" */
45
- id: string;
46
- /** Human-readable name, e.g. "Risk Mitigation Chain" */
47
- name: string;
48
- /** SysML v2 diagram type */
49
- diagramType: DiagramType;
50
- /** Parent viewpoint ID this diagram belongs to */
51
- viewpointId: string;
52
- /** Additional viewpoints this reusable diagram also conforms to. */
53
- viewpointIds?: string[];
54
- /** Optional group shown within each viewpoint in Memo Architect. */
55
- group?: string;
56
- /** Whether this diagram is auto-generated from the viewpoint */
57
- auto: boolean;
58
- /** Description / purpose of this diagram (used in doc generation) */
59
- description?: string;
60
- /** Additional metadata properties (free-form, for doc generation) */
61
- properties?: Record<string, string>;
62
- /** Optional override: specific element IDs to include (subset of viewpoint) */
63
- elementIds?: string[];
64
- /** Optional override: specific relationship types to show */
65
- relationshipTypes?: string[];
66
- }
67
- /** Viewpoint definition for filtered model views */
68
- export interface ViewpointDefinition {
69
- /** Unique viewpoint identifier */
70
- id: string;
71
- /** Human-readable name */
72
- label: string;
73
- /** Optional ontology-authored grouping used by Memo Architect. */
74
- group?: string;
75
- /** Entity kinds visible in this viewpoint */
76
- visibleKinds: string[];
77
- /** Relationship types visible in this viewpoint */
78
- visibleRelationships: string[];
79
- /** Architecture layers visible in this viewpoint */
80
- visibleLayers: string[];
81
- /** SysML v2 diagram types supported by this viewpoint */
82
- supportedDiagramTypes?: DiagramType[];
83
- /** Auto-generated diagrams for this viewpoint */
84
- diagrams?: DiagramDefinition[];
85
- }
86
- /** Guided workflow step for wizard-like interactions */
87
- export interface WorkflowStep {
88
- /** Step identifier */
89
- id: string;
90
- /** Human-readable label */
91
- label: string;
92
- /** Entity kinds involved in this step */
93
- kinds: string[];
94
- /** Prompt text for the user */
95
- prompt: string;
96
- }
97
- /** Guided workflow definition */
98
- export interface WorkflowDefinition {
99
- /** Unique workflow identifier */
100
- id: string;
101
- /** Human-readable label */
102
- label: string;
103
- /** Ordered steps */
104
- steps: WorkflowStep[];
105
- }
106
- /** First-run configuration for new projects */
107
- export interface FirstRunConfig {
108
- /** Template to scaffold, e.g. "infusion-pump" */
109
- template?: string;
110
- /** Prompt user for project metadata */
111
- promptForMetadata?: boolean;
112
- /** Auto-create starter files */
113
- scaffoldFiles?: string[];
114
- }
115
- export interface SysideToolConfig {
116
- /** Executable name or path. Defaults to `syside` on PATH. */
117
- executable?: string;
118
- /** Optional syside.toml path, relative to the project directory. */
119
- configFile?: string;
120
- /** Treat Syside warnings as compilation errors. Defaults to true. */
121
- warningsAsErrors?: boolean;
122
- /** Syside validation scope. Defaults to `all`. Use `none` for syntax-only compilation. */
123
- diagnose?: 'all' | 'external' | 'project' | 'none';
124
- }
125
- export interface SysandToolConfig {
126
- /** Executable name or path. Defaults to `sysand` on PATH. */
127
- executable?: string;
128
- /** Optional sysand.toml path, relative to the project directory. */
129
- configFile?: string;
130
- }
131
- /** External tool selection. Defaults preserve MEMO's built-in behavior. */
5
+ /**
6
+ * Tool selection, one provider per role.
7
+ *
8
+ * Every value here is a plain `string`. A union type would re-hardcode the
9
+ * roster the provider registry exists to keep open: the legal values are
10
+ * whatever is registered, checked at resolution time against the registry, and
11
+ * a third-party adapter must be selectable without editing this file.
12
+ *
13
+ * Per-provider settings live under the provider's own ID (`syside`, `sysand`,
14
+ * …). They are typed as `unknown` here and read by that provider's adapter,
15
+ * which is the only module that knows the shape — see the index signature.
16
+ */
132
17
  export interface ToolchainConfig {
133
- compiler?: 'internal' | 'syside';
134
- packager?: 'internal' | 'sysand';
135
- syside?: SysideToolConfig;
136
- sysand?: SysandToolConfig;
137
- }
138
- /** Ontology reference in a device project */
139
- export interface OntologyReference {
140
- /** Package name, e.g. "@memoarchitect/ontology" or "memo-ontology" on SysAnd */
141
- name: string;
142
- /** Semver version constraint, e.g. "^2.0.0" */
143
- version: string;
144
- }
145
- /** Self-describing metadata for an ontology package */
146
- export interface OntologyMetadata {
147
- /** Package identifier, e.g. "@memoarchitect/ontology" */
148
- id: string;
149
- /** Semver version */
150
- version: string;
151
- /** Human-readable description */
152
- description: string;
153
- /** Author or organization */
154
- author?: string;
155
- /** License identifier, e.g. "Apache-2.0" */
156
- license?: string;
157
- /** Searchable tags, e.g. ["medical", "ISO-14971"] */
158
- tags?: string[];
159
- }
160
- /** Reference to an external ontology (OWL, JSON-LD, or SysAnd format) */
161
- export interface ExternalOntologyRef {
162
- /** Import format */
163
- source: 'owl' | 'jsonld' | 'sysand';
164
- /** File path or URL to the ontology */
165
- uri: string;
166
- /** Namespace prefix, e.g. "fma" */
167
- prefix: string;
168
- /** Import only these classes/concepts (empty = import all) */
169
- subset?: string[];
170
- }
171
- /** Reference to a reusable element library */
172
- export interface LibraryRef {
173
- /** Package name, e.g. "@sysand/std-library" */
174
- package: string;
175
- /** Import only these categories, e.g. ["USB", "Logging"] */
176
- categories?: string[];
18
+ /** "Is this valid SysML/KerML?" */
19
+ validator?: string;
20
+ /** "What can MEMO ingest from this revision?" */
21
+ lowering?: string;
22
+ /** How the project is packed and published. */
23
+ packager?: string;
24
+ /**
25
+ * @deprecated Alias that sets both `validator` and `lowering`.
26
+ *
27
+ * It predates the split of the two roles, which answer different questions
28
+ * and produce diagnostics in different domains. Kept so existing settings
29
+ * files keep working; `validator`/`lowering` win when both are present.
30
+ */
31
+ compiler?: string;
32
+ /** Per-provider settings, keyed by provider ID. Read only by that adapter. */
33
+ [providerId: string]: unknown;
177
34
  }
178
35
  /**
179
- * MEMOConfig — the complete project/domain configuration.
36
+ * MEMOConfig — application settings for one project.
180
37
  *
181
- * Two project types:
182
- * - "ontology": defines a shareable type system (publishable as .kpar)
183
- * - "device": models a specific medical device (references an ontology)
38
+ * Everything here changes how a command runs. Nothing here changes what the
39
+ * model means: no field selects a methodology, enables or disables a rule,
40
+ * defines a kind or relationship, or chooses the content of a portable view.
41
+ * `warningsAsErrors` may change a command's exit policy; it does not change the
42
+ * severity the model authored.
184
43
  */
185
44
  export interface MEMOConfig {
186
- /** Project name (set by `memo init`) */
187
- projectName: string;
188
- /** Project type: "ontology", "profile", "library", or "device" */
189
- projectType: ProjectType;
190
- /** Parent config to inherit from. String for single parent, array for multiple. */
191
- extends?: string | string[];
192
- /** Ontology references (device projects only) */
193
- ontologies?: OntologyReference[];
194
45
  /**
195
- * Optional ontology modules to load on top of the base ontology.
196
- * Modules are declared as optional in the base ontology's memo.package.yaml
197
- * under `optionalModules:`. Following OWL import semantics, only modules a
198
- * project explicitly opts into are loaded — disabled modules contribute
199
- * no kinds/relationships, no validation rules, and no viewpoints.
46
+ * Display name for CLI output.
200
47
  *
201
- * Each entry is a package name like "@memoarchitect/ontology-ros" or a
202
- * short alias like "ros" (resolved against the base ontology's optionalModules list).
48
+ * The project's real name is `projectName` on its `ProjectMethodBinding`.
49
+ * This is a convenience copy for log lines, resolved from the binding when
50
+ * one is available and falling back to the directory name when it is not.
203
51
  */
204
- modules?: string[];
205
- /** Self-describing metadata for ontology packages */
206
- ontologyMetadata?: OntologyMetadata;
207
- /** External ontology imports (OWL, JSON-LD, SysAnd) */
208
- externalOntologies?: ExternalOntologyRef[];
209
- /** Reusable element library imports */
210
- libraries?: LibraryRef[];
211
- /** Architecture visualization layers */
212
- architectureLayers?: ArchLayer[];
213
- /** Entity kind definitions (keyed by kind identifier). Optional — prefer KindRegistry. */
214
- kinds?: Record<string, KindDefinition>;
215
- /** Typed relationship definitions with architecture layer mapping. Optional — prefer RelationshipRegistry. */
216
- relationshipTypes?: RelationshipType[];
52
+ projectName: string;
217
53
  /**
218
54
  * Where authored relationships are written, per model package.
219
55
  * Keyed by package qualified name, valued by a project-relative .sysml
220
- * path. A package listed here always collects its relationships in that
221
- * file; anything not listed falls back to the ownership policy in
222
- * server/relationship-writer.ts.
56
+ * path. This is an editor placement preference — it decides which file a
57
+ * new relationship lands in, not whether the relationship is legal.
223
58
  */
224
59
  relationshipFiles?: Record<string, string>;
225
60
  /** Project-relative .sysml file that owns relationships with no better home. */
226
61
  canonicalRelationshipFile?: string;
227
- /** Viewpoint definitions for filtered views */
228
- viewpoints?: ViewpointDefinition[];
229
- /** Guided workflows for step-by-step modeling */
230
- workflows?: WorkflowDefinition[];
231
- /** First-run scaffolding configuration */
232
- firstRun?: FirstRunConfig;
233
- /** Compiler and KPAR packager selection. */
62
+ /** Validator, lowering and packager provider selection. */
234
63
  toolchain?: ToolchainConfig;
235
64
  }
236
65
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/model/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/model/config.ts"],"names":[],"mappings":"AAeA,yDAAyD;AACzD,MAAM,MAAM,cAAc,GACpB,UAAU,GACV,iBAAiB,GACjB,kBAAkB,GAClB,WAAW,GACX,cAAc,GACd,YAAY,GACZ,cAAc,GACd,UAAU,GACV,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,UAAU,CAAC;AAEjB,iGAAiG;AACjG,MAAM,MAAM,WAAW,GACjB,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GACtE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC5B,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACvB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C,gFAAgF;IAChF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B"}
@@ -1,14 +1,16 @@
1
- // ─── MEMO Configuration Types ─────────────────────────────────────────────────
1
+ // ─── MEMO Application Settings ────────────────────────────────────────────────
2
2
  //
3
- // Domain packages (e.g. @memoarchitect/medical-modeling-profile) implement MEMOConfig as config.yaml.
4
- // Projects inherit from domain configs via the `extends` field.
5
- // The CLI merges the inheritance chain at startup.
3
+ // How the tools operate on a project — never what the project's model contains.
6
4
  //
7
- // Four project types:
8
- // - "ontology" — shared type system (kinds + relationships)
9
- // - "profile" — viewpoints, templates (extends an ontology)
10
- // - "library" — reusable model elements (instances, not types)
11
- // - "device" — specific medical device model referencing an ontology
5
+ // `MEMOConfig` used to be the project's semantic description: it selected the
6
+ // methodology, the ontologies, the modules, the viewpoints, the layers, the
7
+ // kinds, and the relationship types. None of that is here now. Those facts are
8
+ // SysML, resolved by `native-project.ts` and `methodology-resolver.ts`, and a
9
+ // settings file that still declares them is rejected by `settings-boundary.ts`.
10
+ //
11
+ // What remains is the section 5.3 list: which external compiler and packager to
12
+ // run, and where their executables and config files are. Changing any of it
13
+ // changes how a command behaves, not what the model means.
12
14
  // ─────────────────────────────────────────────────────────────────────────────
13
15
  export {};
14
16
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/model/config.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,sGAAsG;AACtG,gEAAgE;AAChE,mDAAmD;AACnD,EAAE;AACF,sBAAsB;AACtB,8DAA8D;AAC9D,+DAA+D;AAC/D,kEAAkE;AAClE,yEAAyE;AACzE,gFAAgF"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/model/config.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,2DAA2D;AAC3D,gFAAgF"}
@@ -0,0 +1,74 @@
1
+ import type { EffectiveMethodology, RuleCandidate } from './methodology-resolver.js';
2
+ import type { CompiledConstraint } from '../validator/constraint-eval.js';
3
+ /**
4
+ * The part of a kind this module needs.
5
+ *
6
+ * `layer` is optional here even though the registry always fills it: a caller
7
+ * may be asking about a kind that did not resolve, and "unplaced" has to be a
8
+ * representable answer rather than a cast.
9
+ */
10
+ export interface ScopedKind {
11
+ layer?: string;
12
+ }
13
+ export type ScopeDimension = 'layer' | 'module' | 'standard' | 'artifactKind' | 'viewpoint';
14
+ /** The resolved answer to "what is in scope", ready to be asked questions. */
15
+ export interface EffectiveScope {
16
+ mode: 'allAvailable' | 'explicit';
17
+ layers: ReadonlySet<string>;
18
+ modules: ReadonlySet<string>;
19
+ standards: ReadonlySet<string>;
20
+ artifactKinds: ReadonlySet<string>;
21
+ viewpoints: ReadonlySet<string>;
22
+ }
23
+ export declare function buildEffectiveScope(methodology: EffectiveMethodology): EffectiveScope;
24
+ /** A scope that selects everything — the shape callers get before a binding resolves. */
25
+ export declare const UNRESTRICTED_SCOPE: EffectiveScope;
26
+ /**
27
+ * Is one value in scope for a dimension?
28
+ *
29
+ * Under `allAvailable` everything the project resolved is in scope, and the
30
+ * lists are required to be empty. Under `explicit` only what is listed is in
31
+ * scope — including when the list is empty, which selects nothing.
32
+ */
33
+ export declare function isInScope(scope: EffectiveScope, dimension: ScopeDimension, value: string | undefined): boolean;
34
+ /**
35
+ * Is a kind in scope?
36
+ *
37
+ * A kind belongs to exactly one axis position, so it is in scope when its layer
38
+ * is selected. A kind with no layer is only in scope under `allAvailable`: an
39
+ * unplaced kind cannot be shown to satisfy an explicit selection.
40
+ */
41
+ export declare function isKindInScope(scope: EffectiveScope, kind: ScopedKind): boolean;
42
+ /** Filter kinds to those in scope. Used by palettes and creation dialogs alike. */
43
+ export declare function filterKindsInScope<T extends ScopedKind>(kinds: readonly T[], scope: EffectiveScope): T[];
44
+ /**
45
+ * Is a package in scope?
46
+ *
47
+ * `includedLayer` and `includedModule` both name packages; a methodology splits
48
+ * them for readability, not because the resolver treats them differently.
49
+ */
50
+ export declare function isPackageInScope(scope: EffectiveScope, packageName: string): boolean;
51
+ /**
52
+ * Is a rule active under this scope?
53
+ *
54
+ * A rule is scoped by the package that declares it. Disposition is a separate
55
+ * question answered by `resolveEffectiveRules`: a rule can be in scope and
56
+ * disabled, and the audit needs to show both facts rather than one.
57
+ */
58
+ export declare function isRulePackageInScope(scope: EffectiveScope, declaringPackage: string | undefined): boolean;
59
+ /**
60
+ * The rules a project's methodology actually activates.
61
+ *
62
+ * A rule is active when BOTH its declaring package and its subject kind are in
63
+ * scope. A rule whose subject the methodology never selected can only report on
64
+ * content the project did not agree to model — which is how the GPCA prototype
65
+ * used to accumulate cybersecurity violations for a discipline it had excluded.
66
+ *
67
+ * This lives here, shared, because `memo validate` and `memo rules list` are
68
+ * two views of one answer. They computed it separately, and inevitably
69
+ * disagreed: `validate` scope-filtered and `rules list` did not, so the same
70
+ * project reported 20 rules and 38 rules depending on which command you asked.
71
+ * A number that changes with the question is not an audit.
72
+ */
73
+ export declare function activeRuleCandidates(constraints: readonly CompiledConstraint[], scope: EffectiveScope, filePackages: ReadonlyMap<string, string>, kindSourceFile: (kindName: string) => string | undefined): RuleCandidate[];
74
+ //# sourceMappingURL=effective-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective-scope.d.ts","sourceRoot":"","sources":["../../src/model/effective-scope.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,WAAW,CAAC;AAE5F,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,cAAc,GAAG,UAAU,CAAC;IAClC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,oBAAoB,GAAG,cAAc,CASrF;AAED,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,EAAE,cAOhC,CAAC;AAYF;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI9G;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAE9E;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,UAAU,EACnD,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,cAAc,GACtB,CAAC,EAAE,CAGL;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAGpF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIzG;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAChC,WAAW,EAAE,SAAS,kBAAkB,EAAE,EAC1C,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACzD,aAAa,EAAE,CAoBjB"}
@@ -0,0 +1,133 @@
1
+ // ─── Effective Scope ──────────────────────────────────────────────────────────
2
+ //
3
+ // What the project's methodology actually selects, and the single place that
4
+ // answers "is this in scope?" for model visibility, rule activation,
5
+ // completeness, palettes, and allowed creation kinds.
6
+ //
7
+ // The behaviour this replaces is the reason the module exists. `dimension-filter`
8
+ // treated an empty inclusion list as "the methodology does not restrict", so a
9
+ // methodology that selected nothing and a methodology that selected everything
10
+ // produced identical results, and nobody could tell which one had been authored.
11
+ // Scope is now explicit: `scopeMode` says which it is, and under `explicit` an
12
+ // empty list selects nothing.
13
+ //
14
+ // Design reference: sections 9.2 and 18.3 deliverable 3.
15
+ // ─────────────────────────────────────────────────────────────────────────────
16
+ import { ruleCandidatesFromConstraints } from './methodology-resolver.js';
17
+ export function buildEffectiveScope(methodology) {
18
+ return {
19
+ mode: methodology.scopeMode,
20
+ layers: new Set(methodology.includedLayers),
21
+ modules: new Set(methodology.includedModules),
22
+ standards: new Set(methodology.includedStandards),
23
+ artifactKinds: new Set(methodology.includedArtifactKinds),
24
+ viewpoints: new Set(methodology.includedViewpoints),
25
+ };
26
+ }
27
+ /** A scope that selects everything — the shape callers get before a binding resolves. */
28
+ export const UNRESTRICTED_SCOPE = {
29
+ mode: 'allAvailable',
30
+ layers: new Set(),
31
+ modules: new Set(),
32
+ standards: new Set(),
33
+ artifactKinds: new Set(),
34
+ viewpoints: new Set(),
35
+ };
36
+ function setFor(scope, dimension) {
37
+ switch (dimension) {
38
+ case 'layer': return scope.layers;
39
+ case 'module': return scope.modules;
40
+ case 'standard': return scope.standards;
41
+ case 'artifactKind': return scope.artifactKinds;
42
+ case 'viewpoint': return scope.viewpoints;
43
+ }
44
+ }
45
+ /**
46
+ * Is one value in scope for a dimension?
47
+ *
48
+ * Under `allAvailable` everything the project resolved is in scope, and the
49
+ * lists are required to be empty. Under `explicit` only what is listed is in
50
+ * scope — including when the list is empty, which selects nothing.
51
+ */
52
+ export function isInScope(scope, dimension, value) {
53
+ if (scope.mode === 'allAvailable')
54
+ return true;
55
+ if (value === undefined)
56
+ return false;
57
+ return setFor(scope, dimension).has(value);
58
+ }
59
+ /**
60
+ * Is a kind in scope?
61
+ *
62
+ * A kind belongs to exactly one axis position, so it is in scope when its layer
63
+ * is selected. A kind with no layer is only in scope under `allAvailable`: an
64
+ * unplaced kind cannot be shown to satisfy an explicit selection.
65
+ */
66
+ export function isKindInScope(scope, kind) {
67
+ return isInScope(scope, 'layer', kind.layer);
68
+ }
69
+ /** Filter kinds to those in scope. Used by palettes and creation dialogs alike. */
70
+ export function filterKindsInScope(kinds, scope) {
71
+ if (scope.mode === 'allAvailable')
72
+ return [...kinds];
73
+ return kinds.filter(kind => isKindInScope(scope, kind));
74
+ }
75
+ /**
76
+ * Is a package in scope?
77
+ *
78
+ * `includedLayer` and `includedModule` both name packages; a methodology splits
79
+ * them for readability, not because the resolver treats them differently.
80
+ */
81
+ export function isPackageInScope(scope, packageName) {
82
+ if (scope.mode === 'allAvailable')
83
+ return true;
84
+ return scope.layers.has(packageName) || scope.modules.has(packageName);
85
+ }
86
+ /**
87
+ * Is a rule active under this scope?
88
+ *
89
+ * A rule is scoped by the package that declares it. Disposition is a separate
90
+ * question answered by `resolveEffectiveRules`: a rule can be in scope and
91
+ * disabled, and the audit needs to show both facts rather than one.
92
+ */
93
+ export function isRulePackageInScope(scope, declaringPackage) {
94
+ if (scope.mode === 'allAvailable')
95
+ return true;
96
+ if (!declaringPackage)
97
+ return false;
98
+ return isPackageInScope(scope, declaringPackage);
99
+ }
100
+ // ─── Rule activation ─────────────────────────────────────────────────────────
101
+ /**
102
+ * The rules a project's methodology actually activates.
103
+ *
104
+ * A rule is active when BOTH its declaring package and its subject kind are in
105
+ * scope. A rule whose subject the methodology never selected can only report on
106
+ * content the project did not agree to model — which is how the GPCA prototype
107
+ * used to accumulate cybersecurity violations for a discipline it had excluded.
108
+ *
109
+ * This lives here, shared, because `memo validate` and `memo rules list` are
110
+ * two views of one answer. They computed it separately, and inevitably
111
+ * disagreed: `validate` scope-filtered and `rules list` did not, so the same
112
+ * project reported 20 rules and 38 rules depending on which command you asked.
113
+ * A number that changes with the question is not an audit.
114
+ */
115
+ export function activeRuleCandidates(constraints, scope, filePackages, kindSourceFile) {
116
+ const packageOf = (file) => file ? filePackages.get(file) : undefined;
117
+ const subjectInScope = (appliesTo) => {
118
+ if (scope.mode === 'allAvailable')
119
+ return true;
120
+ // A model-level rule has no single subject kind to place.
121
+ if (!appliesTo || appliesTo === 'Model')
122
+ return true;
123
+ const kindName = appliesTo.split('[')[0];
124
+ // A methodology's inclusion lists name packages, so a kind is placed by
125
+ // the package that declares it — not by the `layer` string, which is a
126
+ // display grouping in a different namespace.
127
+ return isRulePackageInScope(scope, packageOf(kindSourceFile(kindName)));
128
+ };
129
+ return ruleCandidatesFromConstraints(constraints
130
+ .filter(c => isRulePackageInScope(scope, packageOf(c.sourceFile)))
131
+ .filter(c => subjectInScope(c.appliesToKind)));
132
+ }
133
+ //# sourceMappingURL=effective-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective-scope.js","sourceRoot":"","sources":["../../src/model/effective-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import type { SysmlIdentity, SysmlIR } from '../sysml-ir/index.js';
2
+ /**
3
+ * A write was made against an identity the current IR does not have.
4
+ *
5
+ * Loud on purpose. The alternative — falling back to a name lookup — is how a
6
+ * write ends up editing the wrong element, which is the failure this whole
7
+ * module exists to make impossible.
8
+ */
9
+ export declare class StaleIrIdentityError extends Error {
10
+ readonly identityId: string;
11
+ constructor(identityId: string, detail: string);
12
+ }
13
+ /** The wire form: what a client needs to name an element in a later write. */
14
+ export type IrIdentityTable = Record<string, string>;
15
+ /** What an index knows about one addressable declaration. */
16
+ export interface IrIdentityEntry {
17
+ identity: SysmlIdentity;
18
+ /** The Memo element it projects to, when the projection mapped it. */
19
+ memoElementId?: string;
20
+ }
21
+ export interface IrIdentityIndex {
22
+ /** Memo element ID → IR identity ID, for elements the projection mapped. */
23
+ readonly byMemoElement: IrIdentityTable;
24
+ /** IR identity ID → the declaration it names. */
25
+ readonly byIdentity: ReadonlyMap<string, IrIdentityEntry>;
26
+ }
27
+ /**
28
+ * Index one IR for identity resolution.
29
+ *
30
+ * Both directions are needed and neither is derivable cheaply from the other:
31
+ * the client holds Memo element IDs and has to mint an identity from one, and
32
+ * the server holds an identity and has to find what it names.
33
+ */
34
+ export declare function buildIrIdentityIndex(ir: SysmlIR | undefined): IrIdentityIndex;
35
+ /**
36
+ * Rebuild an index from the compact table alone.
37
+ *
38
+ * The whole IR is not shipped with a model update — `standardProperties` carry
39
+ * every declared property of every node, and a surface that only needs to
40
+ * *address* an element does not need its contents. The identity ID is a
41
+ * self-describing string, so the table is enough to reconstruct everything the
42
+ * resolver uses.
43
+ */
44
+ export declare function indexFromIdentityTable(table: IrIdentityTable | undefined): IrIdentityIndex;
45
+ /**
46
+ * Read an identity ID back into its parts.
47
+ *
48
+ * `file:///…/model/a.sysml#members[0]/members[2]:PartUsage`. The file URI may
49
+ * itself contain `#` only if percent-encoded, and the metaclass never contains
50
+ * `:`, so splitting at the first `#` and the last `:` is unambiguous.
51
+ */
52
+ export declare function parseSysmlIdentityId(id: string): SysmlIdentity | undefined;
53
+ /**
54
+ * The compact table shipped with a model update.
55
+ *
56
+ * The whole IR is not sent: its `standardProperties` carry every declared
57
+ * property of every node, and a client that only needs to address an element
58
+ * does not need its contents.
59
+ */
60
+ export declare function irIdentityTable(ir: SysmlIR | undefined): IrIdentityTable;
61
+ /**
62
+ * Resolve an identity ID against the current IR, or fail loudly.
63
+ *
64
+ * `expectedMemoElementId`, when given, is checked too: an identity that still
65
+ * exists but now names a different element is exactly as stale as one that has
66
+ * disappeared, and it is the more dangerous of the two.
67
+ */
68
+ export declare function requireIrIdentity(index: IrIdentityIndex, identityId: string, expectedMemoElementId?: string): IrIdentityEntry;
69
+ /** The identity a client should quote when it writes to this element. */
70
+ export declare function identityForMemoElement(index: IrIdentityIndex, memoElementId: string): string | undefined;
71
+ /** `members[3]/members[1]` → `[3, 1]`. Any other shape is not a path we minted. */
72
+ export declare function parseDeclarationPath(declarationPath: string): number[] | undefined;
73
+ /** The project-relative file an identity's URI names, given the project root. */
74
+ export declare function identityFile(identity: SysmlIdentity, projectRoot: string): string | undefined;
75
+ /** True when this identity was minted for that project-relative file. */
76
+ export declare function identityNamesFile(identity: SysmlIdentity, projectRoot: string, relativePath: string): boolean;
77
+ /**
78
+ * Walk a parsed document to the declaration an identity addresses.
79
+ *
80
+ * The metaclass is verified, not assumed: a path that still resolves but to a
81
+ * different kind of declaration means the file was edited underneath this
82
+ * identity, and continuing would rewrite the wrong lines.
83
+ */
84
+ export declare function resolveDeclarationByIdentity(root: {
85
+ members?: unknown[];
86
+ }, identity: SysmlIdentity): {
87
+ $type?: string;
88
+ name?: string;
89
+ $cstNode?: {
90
+ offset: number;
91
+ length: number;
92
+ };
93
+ };
94
+ //# sourceMappingURL=ir-identity.d.ts.map