@memoarchitect/tools 0.6.6 → 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 (478) hide show
  1. package/README.md +54 -11
  2. package/package.json +19 -7
  3. package/packages/tools/lib/analysis-starters.d.ts +4 -0
  4. package/packages/tools/lib/analysis-starters.d.ts.map +1 -0
  5. package/packages/tools/lib/analysis-starters.js +425 -0
  6. package/packages/tools/lib/analysis-starters.js.map +1 -0
  7. package/packages/tools/lib/bin/memo.js +161 -10
  8. package/packages/tools/lib/bin/memo.js.map +1 -1
  9. package/packages/tools/lib/browser/index.d.ts +1 -1
  10. package/packages/tools/lib/browser/index.d.ts.map +1 -1
  11. package/packages/tools/lib/browser/index.js +1 -1
  12. package/packages/tools/lib/browser/index.js.map +1 -1
  13. package/packages/tools/lib/commands/ask.js +1 -1
  14. package/packages/tools/lib/commands/ask.js.map +1 -1
  15. package/packages/tools/lib/commands/check.d.ts.map +1 -1
  16. package/packages/tools/lib/commands/check.js +3 -9
  17. package/packages/tools/lib/commands/check.js.map +1 -1
  18. package/packages/tools/lib/commands/conformance.d.ts +36 -0
  19. package/packages/tools/lib/commands/conformance.d.ts.map +1 -0
  20. package/packages/tools/lib/commands/conformance.js +212 -0
  21. package/packages/tools/lib/commands/conformance.js.map +1 -0
  22. package/packages/tools/lib/commands/convert.d.ts +12 -0
  23. package/packages/tools/lib/commands/convert.d.ts.map +1 -0
  24. package/packages/tools/lib/commands/convert.js +103 -0
  25. package/packages/tools/lib/commands/convert.js.map +1 -0
  26. package/packages/tools/lib/commands/create-package.d.ts +1 -2
  27. package/packages/tools/lib/commands/create-package.d.ts.map +1 -1
  28. package/packages/tools/lib/commands/create-package.js.map +1 -1
  29. package/packages/tools/lib/commands/dev.d.ts +13 -0
  30. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  31. package/packages/tools/lib/commands/dev.js +208 -74
  32. package/packages/tools/lib/commands/dev.js.map +1 -1
  33. package/packages/tools/lib/commands/dhf-draft.js +1 -1
  34. package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
  35. package/packages/tools/lib/commands/dhf-preview.js +1 -1
  36. package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
  37. package/packages/tools/lib/commands/dhf.js +1 -1
  38. package/packages/tools/lib/commands/dhf.js.map +1 -1
  39. package/packages/tools/lib/commands/element.d.ts +34 -0
  40. package/packages/tools/lib/commands/element.d.ts.map +1 -0
  41. package/packages/tools/lib/commands/element.js +174 -0
  42. package/packages/tools/lib/commands/element.js.map +1 -0
  43. package/packages/tools/lib/commands/export.d.ts.map +1 -1
  44. package/packages/tools/lib/commands/export.js +39 -40
  45. package/packages/tools/lib/commands/export.js.map +1 -1
  46. package/packages/tools/lib/commands/generate.d.ts.map +1 -1
  47. package/packages/tools/lib/commands/generate.js +10 -7
  48. package/packages/tools/lib/commands/generate.js.map +1 -1
  49. package/packages/tools/lib/commands/import.d.ts.map +1 -1
  50. package/packages/tools/lib/commands/import.js +25 -12
  51. package/packages/tools/lib/commands/import.js.map +1 -1
  52. package/packages/tools/lib/commands/init.d.ts.map +1 -1
  53. package/packages/tools/lib/commands/init.js +37 -14
  54. package/packages/tools/lib/commands/init.js.map +1 -1
  55. package/packages/tools/lib/commands/inspect.d.ts +5 -0
  56. package/packages/tools/lib/commands/inspect.d.ts.map +1 -0
  57. package/packages/tools/lib/commands/inspect.js +56 -0
  58. package/packages/tools/lib/commands/inspect.js.map +1 -0
  59. package/packages/tools/lib/commands/lock.d.ts.map +1 -1
  60. package/packages/tools/lib/commands/lock.js +7 -2
  61. package/packages/tools/lib/commands/lock.js.map +1 -1
  62. package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
  63. package/packages/tools/lib/commands/ontology.js +69 -116
  64. package/packages/tools/lib/commands/ontology.js.map +1 -1
  65. package/packages/tools/lib/commands/pack.d.ts +1 -1
  66. package/packages/tools/lib/commands/pack.d.ts.map +1 -1
  67. package/packages/tools/lib/commands/pack.js +20 -75
  68. package/packages/tools/lib/commands/pack.js.map +1 -1
  69. package/packages/tools/lib/commands/package.d.ts +10 -0
  70. package/packages/tools/lib/commands/package.d.ts.map +1 -0
  71. package/packages/tools/lib/commands/package.js +113 -0
  72. package/packages/tools/lib/commands/package.js.map +1 -0
  73. package/packages/tools/lib/commands/plugin.js +1 -1
  74. package/packages/tools/lib/commands/plugin.js.map +1 -1
  75. package/packages/tools/lib/commands/rules.d.ts.map +1 -1
  76. package/packages/tools/lib/commands/rules.js +120 -30
  77. package/packages/tools/lib/commands/rules.js.map +1 -1
  78. package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
  79. package/packages/tools/lib/commands/sysand-publish.js +14 -16
  80. package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
  81. package/packages/tools/lib/commands/toolchain.d.ts +8 -0
  82. package/packages/tools/lib/commands/toolchain.d.ts.map +1 -0
  83. package/packages/tools/lib/commands/toolchain.js +64 -0
  84. package/packages/tools/lib/commands/toolchain.js.map +1 -0
  85. package/packages/tools/lib/commands/validate.d.ts +1 -1
  86. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  87. package/packages/tools/lib/commands/validate.js +183 -56
  88. package/packages/tools/lib/commands/validate.js.map +1 -1
  89. package/packages/tools/lib/completeness/tracker.d.ts +10 -2
  90. package/packages/tools/lib/completeness/tracker.d.ts.map +1 -1
  91. package/packages/tools/lib/completeness/tracker.js +16 -21
  92. package/packages/tools/lib/completeness/tracker.js.map +1 -1
  93. package/packages/tools/lib/conformance/baseline.d.ts +26 -0
  94. package/packages/tools/lib/conformance/baseline.d.ts.map +1 -0
  95. package/packages/tools/lib/conformance/baseline.js +170 -0
  96. package/packages/tools/lib/conformance/baseline.js.map +1 -0
  97. package/packages/tools/lib/conformance/bnf.d.ts +84 -0
  98. package/packages/tools/lib/conformance/bnf.d.ts.map +1 -0
  99. package/packages/tools/lib/conformance/bnf.js +166 -0
  100. package/packages/tools/lib/conformance/bnf.js.map +1 -0
  101. package/packages/tools/lib/conformance/corpus.d.ts +125 -0
  102. package/packages/tools/lib/conformance/corpus.d.ts.map +1 -0
  103. package/packages/tools/lib/conformance/corpus.js +190 -0
  104. package/packages/tools/lib/conformance/corpus.js.map +1 -0
  105. package/packages/tools/lib/conformance/diff-xmi.d.ts +118 -0
  106. package/packages/tools/lib/conformance/diff-xmi.d.ts.map +1 -0
  107. package/packages/tools/lib/conformance/diff-xmi.js +276 -0
  108. package/packages/tools/lib/conformance/diff-xmi.js.map +1 -0
  109. package/packages/tools/lib/conformance/generated/syside-rules.d.ts +10 -0
  110. package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +1 -0
  111. package/packages/tools/lib/conformance/generated/syside-rules.js +1142 -0
  112. package/packages/tools/lib/conformance/generated/syside-rules.js.map +1 -0
  113. package/packages/tools/lib/conformance/index.d.ts +7 -0
  114. package/packages/tools/lib/conformance/index.d.ts.map +1 -0
  115. package/packages/tools/lib/conformance/index.js +19 -0
  116. package/packages/tools/lib/conformance/index.js.map +1 -0
  117. package/packages/tools/lib/conformance/run.d.ts +117 -0
  118. package/packages/tools/lib/conformance/run.d.ts.map +1 -0
  119. package/packages/tools/lib/conformance/run.js +0 -0
  120. package/packages/tools/lib/conformance/run.js.map +1 -0
  121. package/packages/tools/lib/conformance/xmi.d.ts +45 -0
  122. package/packages/tools/lib/conformance/xmi.d.ts.map +1 -0
  123. package/packages/tools/lib/conformance/xmi.js +148 -0
  124. package/packages/tools/lib/conformance/xmi.js.map +1 -0
  125. package/packages/tools/lib/dhf/template-resolver.js +1 -1
  126. package/packages/tools/lib/dhf/template-resolver.js.map +1 -1
  127. package/packages/tools/lib/import/column-mapper.d.ts +2 -2
  128. package/packages/tools/lib/import/column-mapper.d.ts.map +1 -1
  129. package/packages/tools/lib/import/column-mapper.js +3 -3
  130. package/packages/tools/lib/import/column-mapper.js.map +1 -1
  131. package/packages/tools/lib/index.d.ts +20 -3
  132. package/packages/tools/lib/index.d.ts.map +1 -1
  133. package/packages/tools/lib/index.js +19 -2
  134. package/packages/tools/lib/index.js.map +1 -1
  135. package/packages/tools/lib/language/generated/ast.d.ts +196 -51
  136. package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
  137. package/packages/tools/lib/language/generated/ast.js +136 -15
  138. package/packages/tools/lib/language/generated/ast.js.map +1 -1
  139. package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
  140. package/packages/tools/lib/language/generated/grammar.js +867 -295
  141. package/packages/tools/lib/language/generated/grammar.js.map +1 -1
  142. package/packages/tools/lib/llm/chat-engine.d.ts +4 -3
  143. package/packages/tools/lib/llm/chat-engine.d.ts.map +1 -1
  144. package/packages/tools/lib/llm/chat-engine.js +15 -12
  145. package/packages/tools/lib/llm/chat-engine.js.map +1 -1
  146. package/packages/tools/lib/llm/generate-engine.d.ts +7 -2
  147. package/packages/tools/lib/llm/generate-engine.d.ts.map +1 -1
  148. package/packages/tools/lib/llm/generate-engine.js +22 -4
  149. package/packages/tools/lib/llm/generate-engine.js.map +1 -1
  150. package/packages/tools/lib/llm/index.d.ts +1 -0
  151. package/packages/tools/lib/llm/index.d.ts.map +1 -1
  152. package/packages/tools/lib/llm/index.js +1 -0
  153. package/packages/tools/lib/llm/index.js.map +1 -1
  154. package/packages/tools/lib/llm/model-context.d.ts +2 -2
  155. package/packages/tools/lib/llm/model-context.d.ts.map +1 -1
  156. package/packages/tools/lib/llm/model-context.js +7 -13
  157. package/packages/tools/lib/llm/model-context.js.map +1 -1
  158. package/packages/tools/lib/llm/sysml-guidance.d.ts +8 -0
  159. package/packages/tools/lib/llm/sysml-guidance.d.ts.map +1 -0
  160. package/packages/tools/lib/llm/sysml-guidance.js +28 -0
  161. package/packages/tools/lib/llm/sysml-guidance.js.map +1 -0
  162. package/packages/tools/lib/lock.d.ts +14 -8
  163. package/packages/tools/lib/lock.d.ts.map +1 -1
  164. package/packages/tools/lib/lock.js +97 -108
  165. package/packages/tools/lib/lock.js.map +1 -1
  166. package/packages/tools/lib/mcp/model-loader.d.ts +5 -1
  167. package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
  168. package/packages/tools/lib/mcp/model-loader.js +16 -27
  169. package/packages/tools/lib/mcp/model-loader.js.map +1 -1
  170. package/packages/tools/lib/mcp/tools.d.ts +3 -0
  171. package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
  172. package/packages/tools/lib/mcp/tools.js +8 -9
  173. package/packages/tools/lib/mcp/tools.js.map +1 -1
  174. package/packages/tools/lib/model/activity-notation.d.ts +54 -0
  175. package/packages/tools/lib/model/activity-notation.d.ts.map +1 -0
  176. package/packages/tools/lib/model/activity-notation.js +208 -0
  177. package/packages/tools/lib/model/activity-notation.js.map +1 -0
  178. package/packages/tools/lib/model/builder.d.ts +3 -0
  179. package/packages/tools/lib/model/builder.d.ts.map +1 -1
  180. package/packages/tools/lib/model/builder.js +264 -26
  181. package/packages/tools/lib/model/builder.js.map +1 -1
  182. package/packages/tools/lib/model/config-loader.d.ts +19 -25
  183. package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
  184. package/packages/tools/lib/model/config-loader.js +51 -233
  185. package/packages/tools/lib/model/config-loader.js.map +1 -1
  186. package/packages/tools/lib/model/config.d.ts +42 -213
  187. package/packages/tools/lib/model/config.d.ts.map +1 -1
  188. package/packages/tools/lib/model/config.js +11 -9
  189. package/packages/tools/lib/model/config.js.map +1 -1
  190. package/packages/tools/lib/model/effective-scope.d.ts +74 -0
  191. package/packages/tools/lib/model/effective-scope.d.ts.map +1 -0
  192. package/packages/tools/lib/model/effective-scope.js +133 -0
  193. package/packages/tools/lib/model/effective-scope.js.map +1 -0
  194. package/packages/tools/lib/model/ir-identity.d.ts +94 -0
  195. package/packages/tools/lib/model/ir-identity.d.ts.map +1 -0
  196. package/packages/tools/lib/model/ir-identity.js +178 -0
  197. package/packages/tools/lib/model/ir-identity.js.map +1 -0
  198. package/packages/tools/lib/model/kind-registry.d.ts +114 -1
  199. package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
  200. package/packages/tools/lib/model/kind-registry.js +148 -4
  201. package/packages/tools/lib/model/kind-registry.js.map +1 -1
  202. package/packages/tools/lib/model/layer-resolver.js +1 -1
  203. package/packages/tools/lib/model/layer-resolver.js.map +1 -1
  204. package/packages/tools/lib/model/methodology-loader.d.ts +19 -24
  205. package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
  206. package/packages/tools/lib/model/methodology-loader.js +179 -176
  207. package/packages/tools/lib/model/methodology-loader.js.map +1 -1
  208. package/packages/tools/lib/model/methodology-resolver.d.ts +115 -0
  209. package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -0
  210. package/packages/tools/lib/model/methodology-resolver.js +317 -0
  211. package/packages/tools/lib/model/methodology-resolver.js.map +1 -0
  212. package/packages/tools/lib/model/native-project.d.ts +130 -0
  213. package/packages/tools/lib/model/native-project.d.ts.map +1 -0
  214. package/packages/tools/lib/model/native-project.js +570 -0
  215. package/packages/tools/lib/model/native-project.js.map +1 -0
  216. package/packages/tools/lib/model/ontology-loader.d.ts +34 -21
  217. package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
  218. package/packages/tools/lib/model/ontology-loader.js +340 -614
  219. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  220. package/packages/tools/lib/model/package-manifest.d.ts +37 -0
  221. package/packages/tools/lib/model/package-manifest.d.ts.map +1 -0
  222. package/packages/tools/lib/model/package-manifest.js +96 -0
  223. package/packages/tools/lib/model/package-manifest.js.map +1 -0
  224. package/packages/tools/lib/model/parser-utils.d.ts +31 -0
  225. package/packages/tools/lib/model/parser-utils.d.ts.map +1 -1
  226. package/packages/tools/lib/model/parser-utils.js +89 -1
  227. package/packages/tools/lib/model/parser-utils.js.map +1 -1
  228. package/packages/tools/lib/model/paths.d.ts +10 -4
  229. package/packages/tools/lib/model/paths.d.ts.map +1 -1
  230. package/packages/tools/lib/model/paths.js +10 -4
  231. package/packages/tools/lib/model/paths.js.map +1 -1
  232. package/packages/tools/lib/model/project-conversion.d.ts +226 -0
  233. package/packages/tools/lib/model/project-conversion.d.ts.map +1 -0
  234. package/packages/tools/lib/model/project-conversion.js +946 -0
  235. package/packages/tools/lib/model/project-conversion.js.map +1 -0
  236. package/packages/tools/lib/model/relationship-legality.d.ts +12 -0
  237. package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
  238. package/packages/tools/lib/model/relationship-legality.js.map +1 -1
  239. package/packages/tools/lib/model/relationship-registry.d.ts +16 -1
  240. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
  241. package/packages/tools/lib/model/relationship-registry.js.map +1 -1
  242. package/packages/tools/lib/model/semantic.d.ts +38 -0
  243. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  244. package/packages/tools/lib/model/semantic.js +3 -0
  245. package/packages/tools/lib/model/semantic.js.map +1 -1
  246. package/packages/tools/lib/model/settings-boundary.d.ts +19 -0
  247. package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -0
  248. package/packages/tools/lib/model/settings-boundary.js +118 -0
  249. package/packages/tools/lib/model/settings-boundary.js.map +1 -0
  250. package/packages/tools/lib/model/short-id.d.ts +8 -7
  251. package/packages/tools/lib/model/short-id.d.ts.map +1 -1
  252. package/packages/tools/lib/model/short-id.js +26 -17
  253. package/packages/tools/lib/model/short-id.js.map +1 -1
  254. package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
  255. package/packages/tools/lib/model/source-graph.js +5 -1
  256. package/packages/tools/lib/model/source-graph.js.map +1 -1
  257. package/packages/tools/lib/model/source-provenance.d.ts +112 -0
  258. package/packages/tools/lib/model/source-provenance.d.ts.map +1 -0
  259. package/packages/tools/lib/model/source-provenance.js +169 -0
  260. package/packages/tools/lib/model/source-provenance.js.map +1 -0
  261. package/packages/tools/lib/model/sysml-files.d.ts +9 -0
  262. package/packages/tools/lib/model/sysml-files.d.ts.map +1 -1
  263. package/packages/tools/lib/model/sysml-files.js +20 -1
  264. package/packages/tools/lib/model/sysml-files.js.map +1 -1
  265. package/packages/tools/lib/model/sysml-ir.d.ts +9 -0
  266. package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -0
  267. package/packages/tools/lib/model/sysml-ir.js +105 -0
  268. package/packages/tools/lib/model/sysml-ir.js.map +1 -0
  269. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  270. package/packages/tools/lib/model/view-deriver.js +60 -6
  271. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  272. package/packages/tools/lib/model/view-kinds.d.ts +2 -0
  273. package/packages/tools/lib/model/view-kinds.d.ts.map +1 -1
  274. package/packages/tools/lib/model/view-kinds.js +11 -0
  275. package/packages/tools/lib/model/view-kinds.js.map +1 -1
  276. package/packages/tools/lib/ontology/owl-exporter.d.ts +2 -2
  277. package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
  278. package/packages/tools/lib/ontology/owl-exporter.js +12 -12
  279. package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
  280. package/packages/tools/lib/operations/ai-authoring.d.ts +24 -0
  281. package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -0
  282. package/packages/tools/lib/operations/ai-authoring.js +77 -0
  283. package/packages/tools/lib/operations/ai-authoring.js.map +1 -0
  284. package/packages/tools/lib/operations/authoring.d.ts +40 -0
  285. package/packages/tools/lib/operations/authoring.d.ts.map +1 -0
  286. package/packages/tools/lib/operations/authoring.js +56 -0
  287. package/packages/tools/lib/operations/authoring.js.map +1 -0
  288. package/packages/tools/lib/operations/index.d.ts +2 -0
  289. package/packages/tools/lib/operations/index.d.ts.map +1 -1
  290. package/packages/tools/lib/operations/index.js +2 -0
  291. package/packages/tools/lib/operations/index.js.map +1 -1
  292. package/packages/tools/lib/operations/project-snapshot.d.ts +28 -3
  293. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  294. package/packages/tools/lib/operations/project-snapshot.js +79 -30
  295. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  296. package/packages/tools/lib/protocol/messages.d.ts +311 -11
  297. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  298. package/packages/tools/lib/serializer/csv-io.d.ts +7 -7
  299. package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
  300. package/packages/tools/lib/serializer/csv-io.js +11 -11
  301. package/packages/tools/lib/serializer/csv-io.js.map +1 -1
  302. package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
  303. package/packages/tools/lib/serializer/sysml-generator.js +34 -2
  304. package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
  305. package/packages/tools/lib/server/config-resolver.d.ts +8 -4
  306. package/packages/tools/lib/server/config-resolver.d.ts.map +1 -1
  307. package/packages/tools/lib/server/config-resolver.js +25 -44
  308. package/packages/tools/lib/server/config-resolver.js.map +1 -1
  309. package/packages/tools/lib/server/conflict-policy.d.ts +44 -0
  310. package/packages/tools/lib/server/conflict-policy.d.ts.map +1 -0
  311. package/packages/tools/lib/server/conflict-policy.js +94 -0
  312. package/packages/tools/lib/server/conflict-policy.js.map +1 -0
  313. package/packages/tools/lib/server/dev-server.d.ts +32 -2
  314. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  315. package/packages/tools/lib/server/dev-server.js +721 -53
  316. package/packages/tools/lib/server/dev-server.js.map +1 -1
  317. package/packages/tools/lib/server/element-writer.d.ts +11 -0
  318. package/packages/tools/lib/server/element-writer.d.ts.map +1 -0
  319. package/packages/tools/lib/server/element-writer.js +123 -0
  320. package/packages/tools/lib/server/element-writer.js.map +1 -0
  321. package/packages/tools/lib/server/file-watcher.d.ts +4 -1
  322. package/packages/tools/lib/server/file-watcher.d.ts.map +1 -1
  323. package/packages/tools/lib/server/file-watcher.js +17 -7
  324. package/packages/tools/lib/server/file-watcher.js.map +1 -1
  325. package/packages/tools/lib/server/mutation-domain.d.ts +22 -0
  326. package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -0
  327. package/packages/tools/lib/server/mutation-domain.js +87 -0
  328. package/packages/tools/lib/server/mutation-domain.js.map +1 -0
  329. package/packages/tools/lib/server/persistor.d.ts +63 -8
  330. package/packages/tools/lib/server/persistor.d.ts.map +1 -1
  331. package/packages/tools/lib/server/persistor.js +152 -44
  332. package/packages/tools/lib/server/persistor.js.map +1 -1
  333. package/packages/tools/lib/server/relationship-writer.d.ts +28 -4
  334. package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
  335. package/packages/tools/lib/server/relationship-writer.js +98 -9
  336. package/packages/tools/lib/server/relationship-writer.js.map +1 -1
  337. package/packages/tools/lib/server/rule-policy-writer.d.ts +40 -0
  338. package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -0
  339. package/packages/tools/lib/server/rule-policy-writer.js +124 -0
  340. package/packages/tools/lib/server/rule-policy-writer.js.map +1 -0
  341. package/packages/tools/lib/server/runtime-budget.d.ts +14 -0
  342. package/packages/tools/lib/server/runtime-budget.d.ts.map +1 -0
  343. package/packages/tools/lib/server/runtime-budget.js +15 -0
  344. package/packages/tools/lib/server/runtime-budget.js.map +1 -0
  345. package/packages/tools/lib/server/sysml-notation.d.ts +36 -0
  346. package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -0
  347. package/packages/tools/lib/server/sysml-notation.js +87 -0
  348. package/packages/tools/lib/server/sysml-notation.js.map +1 -0
  349. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
  350. package/packages/tools/lib/server/view-layout-store.js +2 -0
  351. package/packages/tools/lib/server/view-layout-store.js.map +1 -1
  352. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts +9 -0
  353. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts.map +1 -0
  354. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js +315 -0
  355. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js.map +1 -0
  356. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts +5206 -0
  357. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts.map +1 -0
  358. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js +1933 -0
  359. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js.map +1 -0
  360. package/packages/tools/lib/sysml-ir/index.d.ts +3 -0
  361. package/packages/tools/lib/sysml-ir/index.d.ts.map +1 -0
  362. package/packages/tools/lib/sysml-ir/index.js +3 -0
  363. package/packages/tools/lib/sysml-ir/index.js.map +1 -0
  364. package/packages/tools/lib/sysml-ir/ir.d.ts +50 -0
  365. package/packages/tools/lib/sysml-ir/ir.d.ts.map +1 -0
  366. package/packages/tools/lib/sysml-ir/ir.js +2 -0
  367. package/packages/tools/lib/sysml-ir/ir.js.map +1 -0
  368. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +3 -0
  369. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +1 -0
  370. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +97 -0
  371. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +1 -0
  372. package/packages/tools/lib/sysmlc/index.d.ts +2 -0
  373. package/packages/tools/lib/sysmlc/index.d.ts.map +1 -0
  374. package/packages/tools/lib/sysmlc/index.js +7 -0
  375. package/packages/tools/lib/sysmlc/index.js.map +1 -0
  376. package/packages/tools/lib/sysmlc/server.d.ts +29 -0
  377. package/packages/tools/lib/sysmlc/server.d.ts.map +1 -0
  378. package/packages/tools/lib/sysmlc/server.js +168 -0
  379. package/packages/tools/lib/sysmlc/server.js.map +1 -0
  380. package/packages/tools/lib/toolchain/default-registry.d.ts +12 -0
  381. package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -0
  382. package/packages/tools/lib/toolchain/default-registry.js +28 -0
  383. package/packages/tools/lib/toolchain/default-registry.js.map +1 -0
  384. package/packages/tools/lib/toolchain/diagnostic.d.ts +57 -0
  385. package/packages/tools/lib/toolchain/diagnostic.d.ts.map +1 -0
  386. package/packages/tools/lib/toolchain/diagnostic.js +69 -0
  387. package/packages/tools/lib/toolchain/diagnostic.js.map +1 -0
  388. package/packages/tools/lib/toolchain/effective.d.ts +36 -0
  389. package/packages/tools/lib/toolchain/effective.d.ts.map +1 -0
  390. package/packages/tools/lib/toolchain/effective.js +91 -0
  391. package/packages/tools/lib/toolchain/effective.js.map +1 -0
  392. package/packages/tools/lib/toolchain/index.d.ts +11 -0
  393. package/packages/tools/lib/toolchain/index.d.ts.map +1 -0
  394. package/packages/tools/lib/toolchain/index.js +21 -0
  395. package/packages/tools/lib/toolchain/index.js.map +1 -0
  396. package/packages/tools/lib/toolchain/lowering.d.ts +63 -0
  397. package/packages/tools/lib/toolchain/lowering.d.ts.map +1 -0
  398. package/packages/tools/lib/toolchain/lowering.js +100 -0
  399. package/packages/tools/lib/toolchain/lowering.js.map +1 -0
  400. package/packages/tools/lib/toolchain/operations.d.ts +87 -0
  401. package/packages/tools/lib/toolchain/operations.d.ts.map +1 -0
  402. package/packages/tools/lib/toolchain/operations.js +111 -0
  403. package/packages/tools/lib/toolchain/operations.js.map +1 -0
  404. package/packages/tools/lib/toolchain/process.d.ts +45 -0
  405. package/packages/tools/lib/toolchain/process.d.ts.map +1 -0
  406. package/packages/tools/lib/toolchain/process.js +125 -0
  407. package/packages/tools/lib/toolchain/process.js.map +1 -0
  408. package/packages/tools/lib/toolchain/protocol.d.ts +122 -0
  409. package/packages/tools/lib/toolchain/protocol.d.ts.map +1 -0
  410. package/packages/tools/lib/toolchain/protocol.js +74 -0
  411. package/packages/tools/lib/toolchain/protocol.js.map +1 -0
  412. package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts +9 -0
  413. package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts.map +1 -0
  414. package/packages/tools/lib/toolchain/providers/internal-kpar.js +84 -0
  415. package/packages/tools/lib/toolchain/providers/internal-kpar.js.map +1 -0
  416. package/packages/tools/lib/toolchain/providers/internal.d.ts +33 -0
  417. package/packages/tools/lib/toolchain/providers/internal.d.ts.map +1 -0
  418. package/packages/tools/lib/toolchain/providers/internal.js +286 -0
  419. package/packages/tools/lib/toolchain/providers/internal.js.map +1 -0
  420. package/packages/tools/lib/toolchain/providers/sysand.d.ts +12 -0
  421. package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -0
  422. package/packages/tools/lib/toolchain/providers/sysand.js +110 -0
  423. package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -0
  424. package/packages/tools/lib/toolchain/providers/syside.d.ts +24 -0
  425. package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -0
  426. package/packages/tools/lib/toolchain/providers/syside.js +208 -0
  427. package/packages/tools/lib/toolchain/providers/syside.js.map +1 -0
  428. package/packages/tools/lib/toolchain/registry.d.ts +192 -0
  429. package/packages/tools/lib/toolchain/registry.d.ts.map +1 -0
  430. package/packages/tools/lib/toolchain/registry.js +130 -0
  431. package/packages/tools/lib/toolchain/registry.js.map +1 -0
  432. package/packages/tools/lib/toolchain/schema.d.ts +30 -0
  433. package/packages/tools/lib/toolchain/schema.d.ts.map +1 -0
  434. package/packages/tools/lib/toolchain/schema.js +112 -0
  435. package/packages/tools/lib/toolchain/schema.js.map +1 -0
  436. package/packages/tools/lib/toolchain/sysmlc-client.d.ts +77 -0
  437. package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +1 -0
  438. package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
  439. package/packages/tools/lib/toolchain/sysmlc-client.js.map +1 -0
  440. package/packages/tools/lib/validator/architecture-validator.d.ts +17 -0
  441. package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -0
  442. package/packages/tools/lib/validator/architecture-validator.js +101 -0
  443. package/packages/tools/lib/validator/architecture-validator.js.map +1 -0
  444. package/packages/tools/lib/validator/builtin-rules.d.ts +16 -0
  445. package/packages/tools/lib/validator/builtin-rules.d.ts.map +1 -0
  446. package/packages/tools/lib/validator/builtin-rules.js +62 -0
  447. package/packages/tools/lib/validator/builtin-rules.js.map +1 -0
  448. package/packages/tools/lib/validator/constraint-eval.d.ts +15 -0
  449. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  450. package/packages/tools/lib/validator/constraint-eval.js +62 -7
  451. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  452. package/packages/tools/lib/validator/constraint-loader.d.ts +22 -4
  453. package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
  454. package/packages/tools/lib/validator/constraint-loader.js +100 -27
  455. package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
  456. package/packages/tools/lib/validator/rule-engine.d.ts +2 -1
  457. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  458. package/packages/tools/lib/validator/rule-engine.js +57 -4
  459. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  460. package/packages/tools/lib/validator/sysml-constraints.d.ts +64 -0
  461. package/packages/tools/lib/validator/sysml-constraints.d.ts.map +1 -0
  462. package/packages/tools/lib/validator/sysml-constraints.js +251 -0
  463. package/packages/tools/lib/validator/sysml-constraints.js.map +1 -0
  464. package/packages/tools/lib/validator/types.d.ts +33 -0
  465. package/packages/tools/lib/validator/types.d.ts.map +1 -1
  466. package/packages/tools/lib/version.d.ts +2 -0
  467. package/packages/tools/lib/version.d.ts.map +1 -0
  468. package/packages/tools/lib/version.js +26 -0
  469. package/packages/tools/lib/version.js.map +1 -0
  470. package/packages/tools/src/grammar/memo-sysml.langium +104 -18
  471. package/packages/tools/lib/model/dimension-filter.d.ts +0 -33
  472. package/packages/tools/lib/model/dimension-filter.d.ts.map +0 -1
  473. package/packages/tools/lib/model/dimension-filter.js +0 -57
  474. package/packages/tools/lib/model/dimension-filter.js.map +0 -1
  475. package/packages/tools/lib/model/toolchain.d.ts +0 -12
  476. package/packages/tools/lib/model/toolchain.d.ts.map +0 -1
  477. package/packages/tools/lib/model/toolchain.js +0 -92
  478. package/packages/tools/lib/model/toolchain.js.map +0 -1
@@ -0,0 +1,29 @@
1
+ import { type Connection, type Diagnostic as LspDiagnostic } from 'vscode-languageserver/node.js';
2
+ import { type EmitIrParams, type EmitIrResponse, type ProtocolCapability } from '@memoarchitect/tools';
3
+ export declare const IMPLEMENTATION_NAME = "sysmlc";
4
+ export declare function protocolCapability(version?: string): ProtocolCapability;
5
+ export declare class SysmlcServer {
6
+ private readonly version?;
7
+ private readonly projects;
8
+ constructor(version?: string | undefined);
9
+ private state;
10
+ /**
11
+ * Answer `memo/emitIr`, or refuse to answer stale.
12
+ *
13
+ * The check happens after the work, not before it: a revision is superseded
14
+ * by whatever arrived *while* it was compiling, and that is precisely the
15
+ * window this rule exists to close. Handing back the finished-but-old model
16
+ * would put a picture on the canvas of a revision the user has already
17
+ * edited past, with nothing to tell them so.
18
+ */
19
+ emitIr(params: EmitIrParams): Promise<EmitIrResponse>;
20
+ /** Syntax diagnostics for one open document, in LSP's own shape. */
21
+ documentDiagnostics(text: string): Promise<LspDiagnostic[]>;
22
+ /** Wire the server onto a connection. Split out so tests can drive it. */
23
+ listen(connection: Connection): void;
24
+ }
25
+ /** Entry point for `memo-sysmlc serve --stdio`. */
26
+ export declare function serveStdio(version?: string): void;
27
+ /** Read this package's own version, for `--version` and the handshake. */
28
+ export declare function packageVersion(): string | undefined;
29
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/sysmlc/server.ts"],"names":[],"mappings":"AAiBA,OAAO,EAMH,KAAK,UAAU,EACf,KAAK,UAAU,IAAI,aAAa,EACnC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAQH,KAAK,YAAY,EACjB,KAAK,cAAc,EAEnB,KAAK,kBAAkB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAOvE;AAuCD,qBAAa,YAAY;IAGT,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAFrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;gBAE/B,OAAO,CAAC,EAAE,MAAM,YAAA;IAE7C,OAAO,CAAC,KAAK;IASb;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IA2B3D,oEAAoE;IAC9D,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAcjE,0EAA0E;IAC1E,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CAkCvC;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CASjD;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAOnD"}
@@ -0,0 +1,168 @@
1
+ // ─── memo-sysmlc serve --stdio ───────────────────────────────────────────────
2
+ //
3
+ // MEMO's compiler as a long-lived server. Node starts in 50–150 ms, which is
4
+ // fine once and hopeless on every save, so the process transport is a server
5
+ // that is spawned once and answers many revisions — and the protocol it speaks
6
+ // is LSP, because LSP already solved lifecycle, document synchronisation and
7
+ // cancellation, and because an editor that speaks it gets MEMO diagnostics
8
+ // without anyone writing a MEMO client.
9
+ //
10
+ // Exactly one request is added: `memo/emitIr`. Everything else here is standard
11
+ // LSP.
12
+ // ─────────────────────────────────────────────────────────────────────────────
13
+ import { createHash } from 'node:crypto';
14
+ import { readFileSync, statSync } from 'node:fs';
15
+ import { resolve } from 'node:path';
16
+ import { fileURLToPath } from 'node:url';
17
+ import { createConnection, DiagnosticSeverity, ProposedFeatures, TextDocumentSyncKind, TextDocuments, } from 'vscode-languageserver/node.js';
18
+ import { TextDocument } from 'vscode-languageserver-textdocument';
19
+ import { EMIT_IR_REQUEST, PROTOCOL_CAPABILITY_KEY, SYSMLC_IR_VERSION, SYSMLC_PROTOCOL_VERSION, lowerProject, resolveSources, parseText, } from '@memoarchitect/tools';
20
+ export const IMPLEMENTATION_NAME = 'sysmlc';
21
+ export function protocolCapability(version) {
22
+ return {
23
+ protocolVersion: SYSMLC_PROTOCOL_VERSION,
24
+ irVersion: SYSMLC_IR_VERSION,
25
+ implementation: IMPLEMENTATION_NAME,
26
+ implementationVersion: version,
27
+ };
28
+ }
29
+ /**
30
+ * What the project looks like on disk right now.
31
+ *
32
+ * Path, size and mtime of every source file. Deliberately not a content hash:
33
+ * this runs before every compile, and the point is to be cheaper than the
34
+ * compile it might avoid. A same-millisecond same-size edit would defeat it,
35
+ * which is why it only ever *skips work*, never decides an answer.
36
+ */
37
+ function fingerprintProject(projectDir, files) {
38
+ const hash = createHash('sha256');
39
+ // The requested source list is part of the fingerprint, not just its
40
+ // contents: two requests against one directory with different file sets are
41
+ // different questions, and a cache that could not tell them apart would
42
+ // answer the second with the first one's model.
43
+ for (const file of resolveSources(projectDir, files)) {
44
+ try {
45
+ const stat = statSync(file);
46
+ hash.update(`${file}:${stat.size}:${stat.mtimeMs}\n`);
47
+ }
48
+ catch {
49
+ hash.update(`${file}:missing\n`);
50
+ }
51
+ }
52
+ return hash.digest('hex');
53
+ }
54
+ export class SysmlcServer {
55
+ version;
56
+ projects = new Map();
57
+ constructor(version) {
58
+ this.version = version;
59
+ }
60
+ state(projectDir) {
61
+ const key = resolve(projectDir);
62
+ const existing = this.projects.get(key);
63
+ if (existing)
64
+ return existing;
65
+ const created = { latestRequested: 0 };
66
+ this.projects.set(key, created);
67
+ return created;
68
+ }
69
+ /**
70
+ * Answer `memo/emitIr`, or refuse to answer stale.
71
+ *
72
+ * The check happens after the work, not before it: a revision is superseded
73
+ * by whatever arrived *while* it was compiling, and that is precisely the
74
+ * window this rule exists to close. Handing back the finished-but-old model
75
+ * would put a picture on the canvas of a revision the user has already
76
+ * edited past, with nothing to tell them so.
77
+ */
78
+ async emitIr(params) {
79
+ const projectDir = resolve(params.projectDir);
80
+ const state = this.state(projectDir);
81
+ state.latestRequested = Math.max(state.latestRequested, params.revision);
82
+ const fingerprint = fingerprintProject(projectDir, params.files);
83
+ const ir = state.cached?.fingerprint === fingerprint
84
+ ? state.cached.ir
85
+ : await lowerProject(projectDir, { files: params.files });
86
+ state.cached = { fingerprint, ir };
87
+ if (state.latestRequested > params.revision) {
88
+ return {
89
+ outcome: 'superseded',
90
+ protocolVersion: SYSMLC_PROTOCOL_VERSION,
91
+ revision: params.revision,
92
+ supersededBy: state.latestRequested,
93
+ };
94
+ }
95
+ return {
96
+ outcome: 'ir',
97
+ protocolVersion: SYSMLC_PROTOCOL_VERSION,
98
+ revision: params.revision,
99
+ ir,
100
+ };
101
+ }
102
+ /** Syntax diagnostics for one open document, in LSP's own shape. */
103
+ async documentDiagnostics(text) {
104
+ const { errors } = await parseText(text);
105
+ return errors.map(error => {
106
+ const line = Math.max(0, (error.line ?? 1) - 1);
107
+ const character = Math.max(0, (error.column ?? 1) - 1);
108
+ return {
109
+ severity: DiagnosticSeverity.Error,
110
+ range: { start: { line, character }, end: { line, character: character + 1 } },
111
+ message: error.message,
112
+ source: IMPLEMENTATION_NAME,
113
+ };
114
+ });
115
+ }
116
+ /** Wire the server onto a connection. Split out so tests can drive it. */
117
+ listen(connection) {
118
+ const documents = new TextDocuments(TextDocument);
119
+ connection.onInitialize(() => ({
120
+ capabilities: {
121
+ textDocumentSync: TextDocumentSyncKind.Incremental,
122
+ experimental: { [PROTOCOL_CAPABILITY_KEY]: protocolCapability(this.version) },
123
+ },
124
+ serverInfo: { name: IMPLEMENTATION_NAME, version: this.version },
125
+ }));
126
+ // Editor-facing half: fast, local, advisory. §1.1 — the editor gives
127
+ // syntax errors while you type; it never refuses the edit.
128
+ documents.onDidChangeContent(async (change) => {
129
+ connection.sendDiagnostics({
130
+ uri: change.document.uri,
131
+ diagnostics: await this.documentDiagnostics(change.document.getText()),
132
+ });
133
+ });
134
+ documents.onDidClose(event => {
135
+ connection.sendDiagnostics({ uri: event.document.uri, diagnostics: [] });
136
+ });
137
+ // The one custom request. Lowering reads the revision on disk, which is
138
+ // the revision the canvas draws: MEMO saves before it redraws, and a
139
+ // model built from unsaved buffers would show something no file says.
140
+ connection.onRequest(EMIT_IR_REQUEST, (params) => this.emitIr(params));
141
+ connection.onShutdown(() => { this.projects.clear(); });
142
+ connection.onExit(() => process.exit(0));
143
+ documents.listen(connection);
144
+ connection.listen();
145
+ }
146
+ }
147
+ /** Entry point for `memo-sysmlc serve --stdio`. */
148
+ export function serveStdio(version) {
149
+ // stdout is the protocol channel. Anything written to it that is not a
150
+ // JSON-RPC message corrupts the stream, so stray logging goes to stderr.
151
+ console.log = console.error;
152
+ // A client that dies without saying goodbye closes the pipe. Outliving it
153
+ // would leave a compiler running with nobody to answer, so end of input is
154
+ // end of server — the same rule every language server follows.
155
+ process.stdin.on('close', () => process.exit(0));
156
+ new SysmlcServer(version).listen(createConnection(ProposedFeatures.all));
157
+ }
158
+ /** Read this package's own version, for `--version` and the handshake. */
159
+ export function packageVersion() {
160
+ try {
161
+ const path = fileURLToPath(new URL('../../../../package.json', import.meta.url));
162
+ return JSON.parse(readFileSync(path, 'utf8')).version;
163
+ }
164
+ catch {
165
+ return undefined;
166
+ }
167
+ }
168
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/sysmlc/server.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,wCAAwC;AACxC,EAAE;AACF,gFAAgF;AAChF,OAAO;AACP,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GAGhB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EACH,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,cAAc,EACd,SAAS,GAKZ,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IAC/C,OAAO;QACH,eAAe,EAAE,uBAAuB;QACxC,SAAS,EAAE,iBAAiB;QAC5B,cAAc,EAAE,mBAAmB;QACnC,qBAAqB,EAAE,OAAO;KACjC,CAAC;AACN,CAAC;AAcD;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,UAAkB,EAAE,KAAyB;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,qEAAqE;IACrE,4EAA4E;IAC5E,wEAAwE;IACxE,gDAAgD;IAChD,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,OAAO,YAAY;IAGQ;IAFZ,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE5D,YAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEzC,KAAK,CAAC,UAAkB;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,OAAO,GAAiB,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CAAC,MAAoB;QAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEzE,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,KAAK,WAAW;YAChD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACjB,CAAC,CAAC,MAAM,YAAY,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,MAAM,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAEnC,IAAI,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO;gBACH,OAAO,EAAE,YAAY;gBACrB,eAAe,EAAE,uBAAuB;gBACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,YAAY,EAAE,KAAK,CAAC,eAAe;aACtC,CAAC;QACN,CAAC;QACD,OAAO;YACH,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,uBAAuB;YACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,EAAE;SACL,CAAC;IACN,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,mBAAmB,CAAC,IAAY;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,OAAO;gBACH,QAAQ,EAAE,kBAAkB,CAAC,KAAK;gBAClC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC,EAAE,EAAE;gBAC9E,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,mBAAmB;aAC9B,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,UAAsB;QACzB,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;QAElD,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3B,YAAY,EAAE;gBACV,gBAAgB,EAAE,oBAAoB,CAAC,WAAW;gBAClD,YAAY,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;aAChF;YACD,UAAU,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;SACnE,CAAC,CAAC,CAAC;QAEJ,qEAAqE;QACrE,2DAA2D;QAC3D,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACxC,UAAU,CAAC,eAAe,CAAC;gBACvB,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;gBACxB,WAAW,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;aACzE,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YACzB,UAAU,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,wEAAwE;QACxE,qEAAqE;QACrE,sEAAsE;QACtE,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,MAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAErF,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7B,UAAU,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;CACJ;AAED,mDAAmD;AACnD,MAAM,UAAU,UAAU,CAAC,OAAgB;IACvC,uEAAuE;IACvE,yEAAyE;IACzE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,0EAA0E;IAC1E,2EAA2E;IAC3E,+DAA+D;IAC/D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,cAAc;IAC1B,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAiB,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ProviderRegistry } from './registry.js';
2
+ /**
3
+ * Build a registry with the providers that ship with MEMO.
4
+ *
5
+ * Order is registration order, which is the order roles are listed in. It
6
+ * carries no precedence: the default for a role is whichever descriptor claims
7
+ * `isDefault`, not whichever registered first.
8
+ */
9
+ export declare function createDefaultRegistry(): ProviderRegistry;
10
+ /** The registry commands use when they are not given one. */
11
+ export declare const defaultRegistry: ProviderRegistry;
12
+ //# sourceMappingURL=default-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-registry.d.ts","sourceRoot":"","sources":["../../src/toolchain/default-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AASjD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAOxD;AAED,6DAA6D;AAC7D,eAAO,MAAM,eAAe,EAAE,gBAA0C,CAAC"}
@@ -0,0 +1,28 @@
1
+ // ─── The registration surface ────────────────────────────────────────────────
2
+ //
3
+ // This is the whole of it. Adding a provider is one new adapter file plus one
4
+ // `register(...)` line here — a modularity test asserts exactly that, by
5
+ // registering a stub provider and checking nothing else had to change.
6
+ // ─────────────────────────────────────────────────────────────────────────────
7
+ import { ProviderRegistry } from './registry.js';
8
+ import { internalLoweringDescriptor, internalPackageDescriptor, internalValidatorDescriptor, } from './providers/internal.js';
9
+ import { sysideValidatorDescriptor } from './providers/syside.js';
10
+ import { sysandPackageDescriptor } from './providers/sysand.js';
11
+ /**
12
+ * Build a registry with the providers that ship with MEMO.
13
+ *
14
+ * Order is registration order, which is the order roles are listed in. It
15
+ * carries no precedence: the default for a role is whichever descriptor claims
16
+ * `isDefault`, not whichever registered first.
17
+ */
18
+ export function createDefaultRegistry() {
19
+ return new ProviderRegistry()
20
+ .register(internalValidatorDescriptor)
21
+ .register(internalLoweringDescriptor)
22
+ .register(internalPackageDescriptor)
23
+ .register(sysideValidatorDescriptor)
24
+ .register(sysandPackageDescriptor);
25
+ }
26
+ /** The registry commands use when they are not given one. */
27
+ export const defaultRegistry = createDefaultRegistry();
28
+ //# sourceMappingURL=default-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-registry.js","sourceRoot":"","sources":["../../src/toolchain/default-registry.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,uEAAuE;AACvE,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACH,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACjC,OAAO,IAAI,gBAAgB,EAAE;SACxB,QAAQ,CAAC,2BAA2B,CAAC;SACrC,QAAQ,CAAC,0BAA0B,CAAC;SACpC,QAAQ,CAAC,yBAAyB,CAAC;SACnC,QAAQ,CAAC,yBAAyB,CAAC;SACnC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAC3C,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAqB,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,57 @@
1
+ /** Who is complaining. See the table above — this drives canvas behaviour. */
2
+ export type DiagnosticDomain = 'sysml' | 'memo-ingest' | 'memo-methodology';
3
+ export type DiagnosticSeverity = 'error' | 'warning' | 'info';
4
+ /** 1-based line and column, matching every tool's own numbering. */
5
+ export interface DiagnosticPosition {
6
+ line: number;
7
+ column: number;
8
+ }
9
+ export interface DiagnosticRange {
10
+ start: DiagnosticPosition;
11
+ /** Absent when the tool reported a point rather than a span. */
12
+ end?: DiagnosticPosition;
13
+ }
14
+ export interface Diagnostic {
15
+ domain: DiagnosticDomain;
16
+ /** Provider ID that produced this, e.g. the value of `toolchain.validator`. */
17
+ provider: string;
18
+ /** Version string the provider reported, when it reports one. */
19
+ providerVersion?: string;
20
+ severity: DiagnosticSeverity;
21
+ message: string;
22
+ /** Absolute path when the provider gave one; otherwise as the tool wrote it. */
23
+ file?: string;
24
+ range?: DiagnosticRange;
25
+ /**
26
+ * The provider's own stable rule code, carried through verbatim.
27
+ *
28
+ * `syside` publishes 151 kebab-case codes (`reference-error`,
29
+ * `accept-action-usage-parameters`, …). We do not renumber them into a
30
+ * parallel MEMO scheme: suppression and configuration are by code, and a
31
+ * project's suppressions have to survive both a provider upgrade and an
32
+ * eventual engine swap.
33
+ */
34
+ code?: string;
35
+ }
36
+ /**
37
+ * Default severity for a domain.
38
+ *
39
+ * A provider that reports its own severity always wins; this is for diagnostics
40
+ * MEMO itself synthesizes, where the domain is the only thing known.
41
+ */
42
+ export declare function defaultSeverityForDomain(domain: DiagnosticDomain): DiagnosticSeverity;
43
+ /**
44
+ * One GNU-style line:
45
+ * `file:line:col: severity: message [code] [domain/provider]`
46
+ *
47
+ * The leading `file:line:col: severity:` prefix is what every editor and CI
48
+ * annotator already parses. The trailing brackets are additive, so a tool that
49
+ * only understands the GNU prefix still gets a usable line.
50
+ */
51
+ export declare function formatDiagnosticText(diagnostic: Diagnostic): string;
52
+ export declare function formatDiagnosticsText(diagnostics: readonly Diagnostic[]): string;
53
+ export declare function diagnosticsToJson(diagnostics: readonly Diagnostic[], pretty?: boolean): string;
54
+ /** Count by severity — used by commands deciding an exit code. */
55
+ export declare function countBySeverity(diagnostics: readonly Diagnostic[]): Record<DiagnosticSeverity, number>;
56
+ export declare function diagnosticsInDomain(diagnostics: readonly Diagnostic[], domain: DiagnosticDomain): Diagnostic[];
57
+ //# sourceMappingURL=diagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../src/toolchain/diagnostic.ts"],"names":[],"mappings":"AAoBA,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAE5E,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D,oEAAoE;AACpE,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,gEAAgE;IAChE,GAAG,CAAC,EAAE,kBAAkB,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,CAMrF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAUnE;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAEhF;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,EAAE,MAAM,UAAO,GAAG,MAAM,CAE3F;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAItG;AAED,wBAAgB,mBAAmB,CAC/B,WAAW,EAAE,SAAS,UAAU,EAAE,EAClC,MAAM,EAAE,gBAAgB,GACzB,UAAU,EAAE,CAEd"}
@@ -0,0 +1,69 @@
1
+ // ─── Normalized toolchain diagnostics ────────────────────────────────────────
2
+ //
3
+ // One diagnostic shape for every provider, in every role. A provider adapter
4
+ // parses its tool's output format; nothing downstream of the adapter ever sees
5
+ // that format again.
6
+ //
7
+ // The mandatory field is `domain`. It answers "whose complaint is this?", and
8
+ // that answer is what decides how the canvas behaves:
9
+ //
10
+ // sysml the selected validator rejected the source. Error.
11
+ // Keep the last good scene — there is nothing new to draw.
12
+ // memo-ingest the validator accepted it, MEMO could not lower it.
13
+ // Warning. Draw what was understood; never blank.
14
+ // memo-methodology valid SysML, MEMO rule violated. Info/warning.
15
+ // Draw normally and flag the element.
16
+ //
17
+ // Collapsing those three into one "error" list is the failure mode this type
18
+ // exists to prevent: `syside` says the file is fine and MEMO shows nothing.
19
+ // ─────────────────────────────────────────────────────────────────────────────
20
+ /**
21
+ * Default severity for a domain.
22
+ *
23
+ * A provider that reports its own severity always wins; this is for diagnostics
24
+ * MEMO itself synthesizes, where the domain is the only thing known.
25
+ */
26
+ export function defaultSeverityForDomain(domain) {
27
+ switch (domain) {
28
+ case 'sysml': return 'error';
29
+ case 'memo-ingest': return 'warning';
30
+ case 'memo-methodology': return 'info';
31
+ }
32
+ }
33
+ /**
34
+ * One GNU-style line:
35
+ * `file:line:col: severity: message [code] [domain/provider]`
36
+ *
37
+ * The leading `file:line:col: severity:` prefix is what every editor and CI
38
+ * annotator already parses. The trailing brackets are additive, so a tool that
39
+ * only understands the GNU prefix still gets a usable line.
40
+ */
41
+ export function formatDiagnosticText(diagnostic) {
42
+ const parts = [];
43
+ if (diagnostic.file) {
44
+ const { start } = diagnostic.range ?? {};
45
+ parts.push(start ? `${diagnostic.file}:${start.line}:${start.column}: ` : `${diagnostic.file}: `);
46
+ }
47
+ parts.push(`${diagnostic.severity}: ${diagnostic.message}`);
48
+ if (diagnostic.code)
49
+ parts.push(` [${diagnostic.code}]`);
50
+ parts.push(` [${diagnostic.domain}/${diagnostic.provider}]`);
51
+ return parts.join('');
52
+ }
53
+ export function formatDiagnosticsText(diagnostics) {
54
+ return diagnostics.map(formatDiagnosticText).join('\n');
55
+ }
56
+ export function diagnosticsToJson(diagnostics, pretty = true) {
57
+ return JSON.stringify(diagnostics, null, pretty ? 2 : undefined);
58
+ }
59
+ /** Count by severity — used by commands deciding an exit code. */
60
+ export function countBySeverity(diagnostics) {
61
+ const counts = { error: 0, warning: 0, info: 0 };
62
+ for (const d of diagnostics)
63
+ counts[d.severity] += 1;
64
+ return counts;
65
+ }
66
+ export function diagnosticsInDomain(diagnostics, domain) {
67
+ return diagnostics.filter(d => d.domain === domain);
68
+ }
69
+ //# sourceMappingURL=diagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/toolchain/diagnostic.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,qBAAqB;AACrB,EAAE;AACF,8EAA8E;AAC9E,sDAAsD;AACtD,EAAE;AACF,yEAAyE;AACzE,+EAA+E;AAC/E,0EAA0E;AAC1E,sEAAsE;AACtE,qEAAqE;AACrE,0DAA0D;AAC1D,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,gFAAgF;AA0ChF;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAwB;IAC7D,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;QAC7B,KAAK,aAAa,CAAC,CAAC,OAAO,SAAS,CAAC;QACrC,KAAK,kBAAkB,CAAC,CAAC,OAAO,MAAM,CAAC;IAC3C,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAsB;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;IACtG,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,IAAI,UAAU,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAkC;IACpE,OAAO,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAkC,EAAE,MAAM,GAAG,IAAI;IAC/E,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACrE,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,WAAkC;IAC9D,MAAM,MAAM,GAAuC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrF,KAAK,MAAM,CAAC,IAAI,WAAW;QAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,WAAkC,EAClC,MAAwB;IAExB,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { MEMOConfig } from '../model/config.js';
2
+ import { type ProviderRegistry, type ProviderRole } from './registry.js';
3
+ export interface RoleSelection {
4
+ role: ProviderRole;
5
+ provider: string;
6
+ /** Where the value came from — useful in `memo config effective`. */
7
+ source: 'settings' | 'deprecated-alias' | 'default';
8
+ }
9
+ export interface EffectiveToolchain {
10
+ validator: string;
11
+ lowering: string;
12
+ packager: string;
13
+ selections: RoleSelection[];
14
+ /** One line per deprecated key that was honoured. */
15
+ deprecations: string[];
16
+ }
17
+ /**
18
+ * Resolve every role.
19
+ *
20
+ * Precedence is explicit key, then the deprecated alias, then the registry's
21
+ * default.
22
+ *
23
+ * The alias fills both roles that split out of it — but only where the named
24
+ * provider is registered for the role. That caveat is not a hedge, it is the
25
+ * finding that forced the split: the best external validator available cannot
26
+ * emit IR at all, so "one tool does both" was never true of it. An alias that
27
+ * insisted on setting both would fail to resolve for exactly the configuration
28
+ * it exists to keep working. Where the named provider cannot fill a role, that
29
+ * role keeps its default and the deprecation note says which and why — which is
30
+ * what the pre-split code did anyway: run the external check, then lower with
31
+ * MEMO's own parser regardless.
32
+ */
33
+ export declare function resolveToolchain(config: MEMOConfig | undefined, registry: ProviderRegistry): EffectiveToolchain;
34
+ /** Per-provider settings block, as that provider's adapter should read it. */
35
+ export declare function providerSettings<T>(config: MEMOConfig | undefined, providerId: string): T | undefined;
36
+ //# sourceMappingURL=effective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective.d.ts","sourceRoot":"","sources":["../../src/toolchain/effective.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAIH,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACpB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,CAAC;CACvD;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,QAAQ,EAAE,gBAAgB,GAC3B,kBAAkB,CA+DpB;AAWD,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAGrG"}
@@ -0,0 +1,91 @@
1
+ // ─── Effective toolchain selection ───────────────────────────────────────────
2
+ //
3
+ // Turns a settings file into "which provider fills which role", with the
4
+ // deprecated `compiler` alias folded in and defaults taken from the registry
5
+ // rather than written here.
6
+ // ─────────────────────────────────────────────────────────────────────────────
7
+ import { DEPRECATED_COMPILER_SETTING, PROVIDER_ROLES, ROLE_SETTING, } from './registry.js';
8
+ /**
9
+ * Resolve every role.
10
+ *
11
+ * Precedence is explicit key, then the deprecated alias, then the registry's
12
+ * default.
13
+ *
14
+ * The alias fills both roles that split out of it — but only where the named
15
+ * provider is registered for the role. That caveat is not a hedge, it is the
16
+ * finding that forced the split: the best external validator available cannot
17
+ * emit IR at all, so "one tool does both" was never true of it. An alias that
18
+ * insisted on setting both would fail to resolve for exactly the configuration
19
+ * it exists to keep working. Where the named provider cannot fill a role, that
20
+ * role keeps its default and the deprecation note says which and why — which is
21
+ * what the pre-split code did anyway: run the external check, then lower with
22
+ * MEMO's own parser regardless.
23
+ */
24
+ export function resolveToolchain(config, registry) {
25
+ const toolchain = config?.toolchain ?? {};
26
+ const alias = readString(toolchain, DEPRECATED_COMPILER_SETTING);
27
+ const deprecations = [];
28
+ const selections = [];
29
+ const aliasCannotFill = [];
30
+ for (const role of PROVIDER_ROLES) {
31
+ const explicit = readString(toolchain, ROLE_SETTING[role]);
32
+ // The alias only ever meant "the thing that compiles", so it is offered
33
+ // to the two roles that split out of it and never to packaging — and
34
+ // only where the registry says that provider can fill the role.
35
+ const offered = role === 'package' ? undefined : alias;
36
+ const aliased = offered !== undefined && registry.has(role, offered) ? offered : undefined;
37
+ if (offered !== undefined && aliased === undefined && explicit === undefined) {
38
+ aliasCannotFill.push(role);
39
+ }
40
+ const fallback = registry.defaultId(role);
41
+ const provider = explicit ?? aliased ?? fallback;
42
+ if (!provider) {
43
+ throw new Error(`No provider is registered for the ${role} role and none was configured `
44
+ + `(toolchain.${ROLE_SETTING[role]}).`);
45
+ }
46
+ if (!registry.has(role, provider)) {
47
+ // Resolving through the registry produces the message listing what
48
+ // *is* registered, which is the only correct roster.
49
+ registry.descriptor(role, provider);
50
+ }
51
+ selections.push({
52
+ role,
53
+ provider,
54
+ source: explicit ? 'settings' : aliased ? 'deprecated-alias' : 'default',
55
+ });
56
+ }
57
+ if (alias !== undefined) {
58
+ const overridden = selections
59
+ .filter(s => s.source === 'settings' && s.role !== 'package')
60
+ .map(s => `toolchain.${ROLE_SETTING[s.role]}`);
61
+ deprecations.push(`toolchain.${DEPRECATED_COMPILER_SETTING} is deprecated; it sets both `
62
+ + `toolchain.${ROLE_SETTING.validator} and toolchain.${ROLE_SETTING.lowering}.`
63
+ + (overridden.length > 0 ? ` ${overridden.join(' and ')} take precedence.` : ''));
64
+ for (const role of aliasCannotFill) {
65
+ deprecations.push(`"${alias}" is not registered for the ${role} role, so `
66
+ + `toolchain.${ROLE_SETTING[role]} keeps its default `
67
+ + `("${byRole(selections, role)}"). Set toolchain.${ROLE_SETTING[role]} explicitly `
68
+ + `to silence this.`);
69
+ }
70
+ }
71
+ return {
72
+ validator: byRole(selections, 'validator'),
73
+ lowering: byRole(selections, 'lowering'),
74
+ packager: byRole(selections, 'package'),
75
+ selections,
76
+ deprecations,
77
+ };
78
+ }
79
+ function byRole(selections, role) {
80
+ return selections.find(s => s.role === role).provider;
81
+ }
82
+ function readString(toolchain, key) {
83
+ const value = toolchain[key];
84
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
85
+ }
86
+ /** Per-provider settings block, as that provider's adapter should read it. */
87
+ export function providerSettings(config, providerId) {
88
+ const value = config?.toolchain?.[providerId];
89
+ return value && typeof value === 'object' ? value : undefined;
90
+ }
91
+ //# sourceMappingURL=effective.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective.js","sourceRoot":"","sources":["../../src/toolchain/effective.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,4BAA4B;AAC5B,gFAAgF;AAGhF,OAAO,EACH,2BAA2B,EAC3B,cAAc,EACd,YAAY,GAGf,MAAM,eAAe,CAAC;AAkBvB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAC5B,MAA8B,EAC9B,QAA0B;IAE1B,MAAM,SAAS,GAAoB,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;IACjE,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,MAAM,eAAe,GAAmB,EAAE,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,wEAAwE;QACxE,qEAAqE;QACrE,gEAAgE;QAChE,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3E,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACX,qCAAqC,IAAI,gCAAgC;kBACvE,cAAc,YAAY,CAAC,IAAI,CAAC,IAAI,CACzC,CAAC;QACN,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChC,mEAAmE;YACnE,qDAAqD;YACrD,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI;YACJ,QAAQ;YACR,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;SAC3E,CAAC,CAAC;IACP,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,UAAU;aACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;aAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,YAAY,CAAC,IAAI,CACb,aAAa,2BAA2B,+BAA+B;cACrE,aAAa,YAAY,CAAC,SAAS,kBAAkB,YAAY,CAAC,QAAQ,GAAG;cAC7E,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CACnF,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CACb,IAAI,KAAK,+BAA+B,IAAI,YAAY;kBACtD,aAAa,YAAY,CAAC,IAAI,CAAC,qBAAqB;kBACpD,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,YAAY,CAAC,IAAI,CAAC,cAAc;kBAClF,kBAAkB,CACvB,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO;QACH,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC;QAC1C,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;QACvC,UAAU;QACV,YAAY;KACf,CAAC;AACN,CAAC;AAED,SAAS,MAAM,CAAC,UAA2B,EAAE,IAAkB;IAC3D,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAE,CAAC,QAAQ,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,SAA0B,EAAE,GAAW;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAI,MAA8B,EAAE,UAAkB;IAClF,MAAM,KAAK,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from './diagnostic.js';
2
+ export * from './protocol.js';
3
+ export * from './lowering.js';
4
+ export * from './registry.js';
5
+ export * from './effective.js';
6
+ export * from './schema.js';
7
+ export * from './operations.js';
8
+ export * from './default-registry.js';
9
+ export { whichExecutable, resolveExecutable, resolveProjectPath, findBundledExecutable } from './process.js';
10
+ export { getSysmlcClient, disposeSysmlcClients, SysmlcClient } from './sysmlc-client.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/toolchain/index.ts"],"names":[],"mappings":"AAWA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,21 @@
1
+ // ─── The toolchain ───────────────────────────────────────────────────────────
2
+ //
3
+ // `memo-tools` is the tooling interface: the operations re-exported here are
4
+ // the single implementation behind both the `memo` CLI and Architect's server
5
+ // protocol. Architect never spawns a tool, never parses a tool's output, and
6
+ // never learns a provider's name.
7
+ //
8
+ // The registrations live in `default-registry.ts`; the adapters in
9
+ // `providers/`. Nothing outside `providers/` writes a provider ID.
10
+ // ─────────────────────────────────────────────────────────────────────────────
11
+ export * from './diagnostic.js';
12
+ export * from './protocol.js';
13
+ export * from './lowering.js';
14
+ export * from './registry.js';
15
+ export * from './effective.js';
16
+ export * from './schema.js';
17
+ export * from './operations.js';
18
+ export * from './default-registry.js';
19
+ export { whichExecutable, resolveExecutable, resolveProjectPath, findBundledExecutable } from './process.js';
20
+ export { getSysmlcClient, disposeSysmlcClients, SysmlcClient } from './sysmlc-client.js';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/toolchain/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAC7E,kCAAkC;AAClC,EAAE;AACF,mEAAmE;AACnE,mEAAmE;AACnE,gFAAgF;AAEhF,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}