@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,190 @@
1
+ // ─── The conformance corpus ──────────────────────────────────────────────────
2
+ //
3
+ // A pinned, checksummed copy of the OMG's own published artifacts, vendored
4
+ // under `corpus/sysml-v2-release/` by `scripts/vendor-corpus.mjs`.
5
+ //
6
+ // Why static artifacts rather than a spawned reference implementation: they are
7
+ // versioned, deterministic, diffable in review, and carry no runtime, licence
8
+ // or startup cost — and MEMO's dependency graph stays free of a JVM (§1.3).
9
+ // The `xmi.implied` tree is the Pilot's own *computed* output published as
10
+ // data, which is the part that could not otherwise be had without running it.
11
+ //
12
+ // What a static corpus cannot do is judge source nobody has seen before. That
13
+ // is what an external live validator is for, and why `conformance run` takes a
14
+ // provider rather than grading MEMO against MEMO.
15
+ // ─────────────────────────────────────────────────────────────────────────────
16
+ import { createHash } from 'node:crypto';
17
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
18
+ import { dirname, join, posix, relative, resolve, sep } from 'node:path';
19
+ import { fileURLToPath } from 'node:url';
20
+ /** Textual model sources. `.kerml` is half the Kernel libraries. */
21
+ export const MODEL_EXTENSIONS = ['.sysml', '.kerml'];
22
+ /** The XMI serializations, declared and with implied elements. */
23
+ export const XMI_EXTENSIONS = ['.sysmlx', '.kermlx'];
24
+ export const LIBRARY_SOURCE_TREE = 'sysml.library';
25
+ export const LIBRARY_XMI_TREE = 'sysml.library.xmi';
26
+ export const LIBRARY_XMI_IMPLIED_TREE = 'sysml.library.xmi.implied';
27
+ /** The normative textual and graphical grammars. */
28
+ export const BNF_TREE = 'bnf';
29
+ export function provenanceOf(corpus) {
30
+ const { repository, commit, commitDate, digest, libraryVersions } = corpus.manifest;
31
+ return { repository, commit, commitDate, digest, libraryVersions };
32
+ }
33
+ export class CorpusNotFoundError extends Error {
34
+ dir;
35
+ constructor(dir) {
36
+ super(`No conformance corpus at "${dir}" — expected a manifest.json beside the vendored trees. `
37
+ + 'Run `node scripts/vendor-corpus.mjs` in memo-tools, or pass --corpus <dir>.');
38
+ this.dir = dir;
39
+ this.name = 'CorpusNotFoundError';
40
+ }
41
+ }
42
+ /**
43
+ * Where the vendored corpus lives, relative to this module.
44
+ *
45
+ * `src/conformance/` and `lib/conformance/` sit at the same depth below the
46
+ * package root, so one expression serves both the compiled and the sources
47
+ * build without a build-time constant.
48
+ */
49
+ export function defaultCorpusDir() {
50
+ return resolve(dirname(fileURLToPath(import.meta.url)), '../../../../corpus/sysml-v2-release');
51
+ }
52
+ export function loadCorpus(dir) {
53
+ const root = resolve(dir ?? defaultCorpusDir());
54
+ const manifestPath = join(root, 'manifest.json');
55
+ if (!existsSync(manifestPath))
56
+ throw new CorpusNotFoundError(root);
57
+ return { root, manifest: JSON.parse(readFileSync(manifestPath, 'utf-8')) };
58
+ }
59
+ /**
60
+ * Check vendored content against the manifest.
61
+ *
62
+ * `trees` narrows the check — hashing 150 MB to run a report over 1.4 MB of
63
+ * textual sources costs more than the report. The full sweep is what the
64
+ * corpus-integrity test runs.
65
+ */
66
+ export function verifyCorpus(corpus, trees) {
67
+ const mismatches = [];
68
+ for (const [rel, entry] of Object.entries(corpus.manifest.files)) {
69
+ if (trees && !trees.some(tree => rel === tree || rel.startsWith(`${tree}/`)))
70
+ continue;
71
+ const full = join(corpus.root, rel.split(posix.sep).join(sep));
72
+ if (!existsSync(full)) {
73
+ mismatches.push({ path: rel, reason: 'missing' });
74
+ continue;
75
+ }
76
+ const actual = createHash('sha256').update(readFileSync(full)).digest('hex');
77
+ if (actual !== entry.sha256)
78
+ mismatches.push({ path: rel, reason: 'changed' });
79
+ }
80
+ return mismatches;
81
+ }
82
+ function slug(segment) {
83
+ return segment.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
84
+ }
85
+ function isModelSource(name) {
86
+ return MODEL_EXTENSIONS.some(extension => name.endsWith(extension));
87
+ }
88
+ /** Every model source under `dir`, absolute and sorted. */
89
+ export function modelSourcesIn(dir) {
90
+ const out = [];
91
+ const walk = (current) => {
92
+ for (const entry of readdirSync(current, { withFileTypes: true })) {
93
+ const full = join(current, entry.name);
94
+ if (entry.isDirectory())
95
+ walk(full);
96
+ else if (isModelSource(entry.name))
97
+ out.push(full);
98
+ }
99
+ };
100
+ if (existsSync(dir))
101
+ walk(dir);
102
+ return out.sort();
103
+ }
104
+ function unitAt(root, relPath, kind, id) {
105
+ const files = modelSourcesIn(join(root, relPath.split(posix.sep).join(sep)));
106
+ return {
107
+ id,
108
+ path: relPath,
109
+ kind,
110
+ files,
111
+ bytes: files.reduce((n, file) => n + statSync(file).size, 0),
112
+ };
113
+ }
114
+ /**
115
+ * Partition the corpus into units.
116
+ *
117
+ * A library group whose own directory holds sources is one unit (the Systems
118
+ * Library); otherwise each child directory is (Kernel Libraries, Domain
119
+ * Libraries). That rule is what produces the ten-way split matching the KPARs,
120
+ * without this file carrying a hardcoded list of library names that a Release
121
+ * bump would silently invalidate.
122
+ */
123
+ export function corpusUnits(corpus) {
124
+ const units = [];
125
+ const libraryRoot = join(corpus.root, LIBRARY_SOURCE_TREE);
126
+ if (existsSync(libraryRoot)) {
127
+ for (const group of readdirSync(libraryRoot, { withFileTypes: true })
128
+ .filter(entry => entry.isDirectory())
129
+ .sort((a, b) => (a.name < b.name ? -1 : 1))) {
130
+ const groupPath = posix.join(LIBRARY_SOURCE_TREE, group.name);
131
+ const groupDir = join(libraryRoot, group.name);
132
+ const ownSources = readdirSync(groupDir).some(isModelSource);
133
+ if (ownSources) {
134
+ units.push(unitAt(corpus.root, groupPath, 'library', `library/${slug(group.name)}`));
135
+ continue;
136
+ }
137
+ for (const library of readdirSync(groupDir, { withFileTypes: true })
138
+ .filter(entry => entry.isDirectory())
139
+ .sort((a, b) => (a.name < b.name ? -1 : 1))) {
140
+ units.push(unitAt(corpus.root, posix.join(groupPath, library.name), 'library', `library/${slug(group.name)}/${slug(library.name)}`));
141
+ }
142
+ }
143
+ }
144
+ for (const [relPath, id] of [['sysml/src', 'examples/sysml'], ['kerml/src', 'examples/kerml']]) {
145
+ if (existsSync(join(corpus.root, relPath.split(posix.sep).join(sep)))) {
146
+ units.push(unitAt(corpus.root, relPath, 'examples', id));
147
+ }
148
+ }
149
+ return units.filter(unit => unit.files.length > 0);
150
+ }
151
+ /**
152
+ * Select units by id, accepting a prefix so `--unit library` means all of them.
153
+ *
154
+ * An unmatched selector is an error rather than an empty run: a conformance
155
+ * command that reports zero findings because it ran nothing is the worst
156
+ * possible false green.
157
+ */
158
+ export function selectUnits(units, selectors) {
159
+ if (selectors.length === 0)
160
+ return [...units];
161
+ const selected = new Map();
162
+ for (const selector of selectors) {
163
+ const matches = units.filter(unit => unit.id === selector || unit.id.startsWith(`${selector}/`));
164
+ if (matches.length === 0) {
165
+ throw new Error(`No corpus unit matches "${selector}". Available: ${units.map(u => u.id).join(', ')}.`);
166
+ }
167
+ for (const match of matches)
168
+ selected.set(match.id, match);
169
+ }
170
+ return [...selected.values()];
171
+ }
172
+ /**
173
+ * The XMI file that serializes a given library source.
174
+ *
175
+ * Upstream mirrors the tree exactly and swaps the extension —
176
+ * `sysml.library/Systems Library/Parts.sysml` becomes
177
+ * `sysml.library.xmi.implied/Systems Library/Parts.sysmlx`.
178
+ */
179
+ export function xmiCounterpart(corpus, source, tree) {
180
+ const relPath = relative(join(corpus.root, LIBRARY_SOURCE_TREE), source);
181
+ if (relPath.startsWith('..'))
182
+ return undefined;
183
+ const candidate = join(corpus.root, tree, `${relPath}x`);
184
+ return existsSync(candidate) ? candidate : undefined;
185
+ }
186
+ /** Corpus-relative path, in upstream's own separator, for reports. */
187
+ export function corpusRelative(corpus, path) {
188
+ return relative(corpus.root, path).split(sep).join(posix.sep);
189
+ }
190
+ //# sourceMappingURL=corpus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corpus.js","sourceRoot":"","sources":["../../src/conformance/corpus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import type { MEMOConfig } from '../model/config.js';
2
+ import type { MemoElement } from '../model/semantic.js';
3
+ import type { ProviderRegistry } from '../toolchain/registry.js';
4
+ import { type Corpus, type CorpusProvenance } from './corpus.js';
5
+ /**
6
+ * How a single difference is classified.
7
+ *
8
+ * missing-declared the source declares it, the reference has it, MEMO does
9
+ * not. A lowering gap — MEMO did not read the source.
10
+ * missing-implied only the reference's *implied* pass produced it. A
11
+ * derived-semantics gap: MEMO read the source but does not
12
+ * compute what the source entails.
13
+ * extra MEMO has an element neither XMI does. Something was
14
+ * invented, or named differently than upstream names it.
15
+ * differing-derived both have it; a derived value differs (today: metaclass
16
+ * against MEMO's construct).
17
+ * qualified-name the leaf name exists on both sides under different
18
+ * containment paths. Reported apart from `missing`/`extra`
19
+ * because it is one defect, not two, and it is a naming
20
+ * gap rather than a missing element.
21
+ */
22
+ export type DifferenceClass = 'missing-declared' | 'missing-implied' | 'extra' | 'differing-derived' | 'qualified-name';
23
+ export declare const DIFFERENCE_CLASSES: readonly DifferenceClass[];
24
+ export type DifferenceCounts = Record<DifferenceClass, number>;
25
+ export declare function emptyDifferenceCounts(): DifferenceCounts;
26
+ export interface Difference {
27
+ class: DifferenceClass;
28
+ qualifiedName: string;
29
+ /** Reference metaclass, where the reference has the element. */
30
+ metatype?: string;
31
+ /** MEMO's construct, where MEMO has it. */
32
+ construct?: string;
33
+ /** Free-text only for `differing-derived` and `qualified-name`. */
34
+ detail?: string;
35
+ }
36
+ export interface LibraryDiff {
37
+ /** Source file, corpus-relative. */
38
+ source: string;
39
+ /** The two XMI counterparts, corpus-relative; absent when upstream has none. */
40
+ declaredXmi?: string;
41
+ impliedXmi?: string;
42
+ /** Named elements each side computed. */
43
+ referenceDeclared: number;
44
+ referenceImplied: number;
45
+ memo: number;
46
+ /**
47
+ * Unnamed elements in the reference serialization.
48
+ *
49
+ * Not compared — see the module header — but reported, because "we compared
50
+ * 19 of 336 elements" is a materially different claim from "we compared the
51
+ * file", and only one of them is true.
52
+ */
53
+ referenceAnonymous: number;
54
+ counts: DifferenceCounts;
55
+ /** Capped sample, sorted, so a baseline stays reviewable. */
56
+ differences: Difference[];
57
+ /** Set when the library could not be compared at all. */
58
+ failure?: string;
59
+ }
60
+ export interface DiffXmiReport {
61
+ reportVersion: string;
62
+ memoVersion: string;
63
+ corpus: CorpusProvenance & {
64
+ root: string;
65
+ };
66
+ toolchain: {
67
+ lowering: string;
68
+ };
69
+ totals: {
70
+ libraries: number;
71
+ counts: DifferenceCounts;
72
+ };
73
+ libraries: LibraryDiff[];
74
+ }
75
+ export declare const DIFF_REPORT_VERSION = "1.0.0";
76
+ /**
77
+ * MEMO's qualified name for an element.
78
+ *
79
+ * MEMO's model is flat: an element carries the package it was declared in, and
80
+ * nesting is not part of its identity. The reference's is a containment path.
81
+ * Joining package and id with `::` is the closest honest translation, and where
82
+ * it does not line up the difference lands in `qualified-name` rather than
83
+ * being hidden — which is the point of having that class.
84
+ */
85
+ export declare function memoQualifiedName(element: MemoElement): string;
86
+ /**
87
+ * Whether a reference metaclass and a MEMO construct describe the same thing.
88
+ *
89
+ * MEMO's `construct` is the SysML keyword (`part`, `action`, `requirement`);
90
+ * the reference's metatype is the metaclass (`PartUsage`, `PartDefinition`,
91
+ * `ActionUsage`). Comparing them exactly would report every element as
92
+ * differing, which is noise. The test is containment of the keyword in the
93
+ * metaclass name, case-folded — deliberately loose, because this is the first
94
+ * derived value compared and a strict mapping table belongs with the canonical
95
+ * IR (Session 3), not here.
96
+ */
97
+ export declare function derivedValuesAgree(metatype: string, construct: string | undefined): boolean;
98
+ export interface DiffXmiOptions {
99
+ config: MEMOConfig;
100
+ projectDir: string;
101
+ corpusDir?: string;
102
+ /**
103
+ * Library sources to compare, as corpus-relative paths or bare filenames.
104
+ * Empty compares every library source that has an XMI counterpart.
105
+ */
106
+ libraries?: readonly string[];
107
+ registry?: ProviderRegistry;
108
+ memoVersion: string;
109
+ verify?: boolean;
110
+ onLibrary?: (source: string, index: number, total: number) => void;
111
+ }
112
+ /** Compare one library source against its two XMI counterparts. */
113
+ export declare function diffLibrary(source: string, corpus: Corpus, options: DiffXmiOptions): Promise<LibraryDiff>;
114
+ /** Library sources named by `--library`, or every one with an XMI counterpart. */
115
+ export declare function selectLibraries(corpus: Corpus, selectors: readonly string[]): string[];
116
+ export declare function runDiffXmi(options: DiffXmiOptions): Promise<DiffXmiReport>;
117
+ export declare function formatDiffXmiReport(report: DiffXmiReport): string;
118
+ //# sourceMappingURL=diff-xmi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-xmi.d.ts","sourceRoot":"","sources":["../../src/conformance/diff-xmi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ // ─── memo conformance diff-xmi ───────────────────────────────────────────────
2
+ //
3
+ // The differential oracle. For one normative library it asks: what does MEMO
4
+ // compute for this source, and how does that differ from what the reference
5
+ // implementation computed for the same source?
6
+ //
7
+ // The right-hand side is not a second opinion we are trusting on faith — it is
8
+ // `sysml.library.xmi.implied`, the Pilot's own output, published by the OMG as
9
+ // data at a pinned commit. Running the Pilot would give the same answer at the
10
+ // cost of a JVM (§1.3); reading its published answer costs nothing and is
11
+ // diffable in review.
12
+ //
13
+ // What is compared, and what deliberately is not. Two independent
14
+ // implementations agree on *which named elements exist, of what metaclass,
15
+ // under what qualified name*. They do not agree on UUIDs, on the ordering of
16
+ // unnamed memberships, or on how a documentation body is broken across lines —
17
+ // comparing those would produce thousands of differences that mean nothing.
18
+ // The comparison is therefore over named elements only, and every unnamed
19
+ // element the file contains is counted and reported rather than dropped
20
+ // silently.
21
+ //
22
+ // This is the acceptance harness for Track B B3. Today the internal grammar is
23
+ // a MEMO subset that does not accept `standard library package` at all, so the
24
+ // honest result is a large `missing-declared` count — which is the measurement,
25
+ // not a failure of the harness. Nothing here passes or fails on its own: the
26
+ // gate is a frozen baseline, and what it catches is a count that *moved*.
27
+ // ─────────────────────────────────────────────────────────────────────────────
28
+ import { basename, dirname } from 'node:path';
29
+ import { defaultRegistry } from '../toolchain/default-registry.js';
30
+ import { resolveToolchain } from '../toolchain/effective.js';
31
+ import { runLowering } from '../toolchain/operations.js';
32
+ import { LIBRARY_SOURCE_TREE, LIBRARY_XMI_IMPLIED_TREE, LIBRARY_XMI_TREE, corpusRelative, loadCorpus, modelSourcesIn, provenanceOf, verifyCorpus, xmiCounterpart, } from './corpus.js';
33
+ import { readXmi } from './xmi.js';
34
+ export const DIFFERENCE_CLASSES = ['missing-declared', 'missing-implied', 'extra', 'differing-derived', 'qualified-name'];
35
+ export function emptyDifferenceCounts() {
36
+ return {
37
+ 'missing-declared': 0,
38
+ 'missing-implied': 0,
39
+ 'extra': 0,
40
+ 'differing-derived': 0,
41
+ 'qualified-name': 0,
42
+ };
43
+ }
44
+ export const DIFF_REPORT_VERSION = '1.0.0';
45
+ /** Differences listed per library. Enough to act on, not a dump of 20 000. */
46
+ const SAMPLE_LIMIT = 25;
47
+ /**
48
+ * MEMO's qualified name for an element.
49
+ *
50
+ * MEMO's model is flat: an element carries the package it was declared in, and
51
+ * nesting is not part of its identity. The reference's is a containment path.
52
+ * Joining package and id with `::` is the closest honest translation, and where
53
+ * it does not line up the difference lands in `qualified-name` rather than
54
+ * being hidden — which is the point of having that class.
55
+ */
56
+ export function memoQualifiedName(element) {
57
+ return element.package ? `${element.package}::${element.id}` : element.id;
58
+ }
59
+ /** Last segment of a `::`-joined name. */
60
+ function leaf(qualifiedName) {
61
+ const index = qualifiedName.lastIndexOf('::');
62
+ return index < 0 ? qualifiedName : qualifiedName.slice(index + 2);
63
+ }
64
+ /**
65
+ * Whether a reference metaclass and a MEMO construct describe the same thing.
66
+ *
67
+ * MEMO's `construct` is the SysML keyword (`part`, `action`, `requirement`);
68
+ * the reference's metatype is the metaclass (`PartUsage`, `PartDefinition`,
69
+ * `ActionUsage`). Comparing them exactly would report every element as
70
+ * differing, which is noise. The test is containment of the keyword in the
71
+ * metaclass name, case-folded — deliberately loose, because this is the first
72
+ * derived value compared and a strict mapping table belongs with the canonical
73
+ * IR (Session 3), not here.
74
+ */
75
+ export function derivedValuesAgree(metatype, construct) {
76
+ if (!construct)
77
+ return true;
78
+ return metatype.toLowerCase().includes(construct.toLowerCase());
79
+ }
80
+ function classify(reference, declaredNames, memo) {
81
+ const counts = emptyDifferenceCounts();
82
+ const differences = [];
83
+ // Leaf-name index of what MEMO produced, so a containment-path mismatch is
84
+ // recognised as one rather than counted twice (missing here, extra there).
85
+ const memoByLeaf = new Map();
86
+ for (const element of memo.values()) {
87
+ const key = leaf(memoQualifiedName(element));
88
+ const bucket = memoByLeaf.get(key);
89
+ if (bucket)
90
+ bucket.push(element);
91
+ else
92
+ memoByLeaf.set(key, [element]);
93
+ }
94
+ const pairedByName = new Set();
95
+ for (const [qualifiedName, element] of reference) {
96
+ const mine = memo.get(qualifiedName);
97
+ if (mine) {
98
+ if (!derivedValuesAgree(element.metatype, mine.construct)) {
99
+ counts['differing-derived'] += 1;
100
+ differences.push({
101
+ class: 'differing-derived',
102
+ qualifiedName,
103
+ metatype: element.metatype,
104
+ construct: mine.construct,
105
+ detail: `reference metaclass ${element.metatype}, MEMO construct ${mine.construct}`,
106
+ });
107
+ }
108
+ continue;
109
+ }
110
+ const byLeaf = memoByLeaf.get(element.name)?.filter(candidate => !pairedByName.has(memoQualifiedName(candidate)));
111
+ if (byLeaf && byLeaf.length > 0) {
112
+ pairedByName.add(memoQualifiedName(byLeaf[0]));
113
+ counts['qualified-name'] += 1;
114
+ differences.push({
115
+ class: 'qualified-name',
116
+ qualifiedName,
117
+ metatype: element.metatype,
118
+ construct: byLeaf[0].construct,
119
+ detail: `MEMO names it ${memoQualifiedName(byLeaf[0])}`,
120
+ });
121
+ continue;
122
+ }
123
+ const kind = declaredNames.has(qualifiedName)
124
+ ? 'missing-declared'
125
+ : 'missing-implied';
126
+ counts[kind] += 1;
127
+ differences.push({ class: kind, qualifiedName, metatype: element.metatype });
128
+ }
129
+ for (const element of memo.values()) {
130
+ const qualifiedName = memoQualifiedName(element);
131
+ if (reference.has(qualifiedName) || pairedByName.has(qualifiedName))
132
+ continue;
133
+ counts.extra += 1;
134
+ differences.push({ class: 'extra', qualifiedName, construct: element.construct });
135
+ }
136
+ // Sorted by class then name so two runs of the same corpus produce the same
137
+ // sample, and a baseline diff shows real movement rather than reordering.
138
+ differences.sort((a, b) => DIFFERENCE_CLASSES.indexOf(a.class) - DIFFERENCE_CLASSES.indexOf(b.class)
139
+ || (a.qualifiedName < b.qualifiedName ? -1 : a.qualifiedName > b.qualifiedName ? 1 : 0));
140
+ return { counts, differences: differences.slice(0, SAMPLE_LIMIT) };
141
+ }
142
+ /** Compare one library source against its two XMI counterparts. */
143
+ export async function diffLibrary(source, corpus, options) {
144
+ const registry = options.registry ?? defaultRegistry;
145
+ const declaredPath = xmiCounterpart(corpus, source, LIBRARY_XMI_TREE);
146
+ const impliedPath = xmiCounterpart(corpus, source, LIBRARY_XMI_IMPLIED_TREE);
147
+ const base = {
148
+ source: corpusRelative(corpus, source),
149
+ declaredXmi: declaredPath ? corpusRelative(corpus, declaredPath) : undefined,
150
+ impliedXmi: impliedPath ? corpusRelative(corpus, impliedPath) : undefined,
151
+ referenceDeclared: 0,
152
+ referenceImplied: 0,
153
+ referenceAnonymous: 0,
154
+ memo: 0,
155
+ counts: emptyDifferenceCounts(),
156
+ differences: [],
157
+ };
158
+ if (!impliedPath) {
159
+ return { ...base, failure: 'no sysml.library.xmi.implied counterpart for this source' };
160
+ }
161
+ try {
162
+ const implied = readXmi(impliedPath);
163
+ const declaredNames = declaredPath
164
+ ? new Set(readXmi(declaredPath).byQualifiedName.keys())
165
+ : new Set();
166
+ // One source file, lowered on its own. A library is a compilation unit
167
+ // here, not a project: comparing a whole directory's model against one
168
+ // file's XMI would charge every difference to the wrong file.
169
+ const result = await runLowering({
170
+ config: options.config,
171
+ projectDir: dirname(source),
172
+ files: [source],
173
+ includeDirs: [`${corpus.root}/${LIBRARY_SOURCE_TREE}`],
174
+ registry,
175
+ });
176
+ const memo = new Map();
177
+ for (const element of Object.values(result.ir.model.elements)) {
178
+ memo.set(memoQualifiedName(element), element);
179
+ }
180
+ return {
181
+ ...base,
182
+ referenceDeclared: declaredNames.size,
183
+ referenceImplied: implied.byQualifiedName.size,
184
+ referenceAnonymous: implied.anonymousCount,
185
+ memo: memo.size,
186
+ ...classify(implied.byQualifiedName, declaredNames, memo),
187
+ };
188
+ }
189
+ catch (error) {
190
+ return { ...base, failure: error instanceof Error ? error.message : String(error) };
191
+ }
192
+ }
193
+ /** Library sources named by `--library`, or every one with an XMI counterpart. */
194
+ export function selectLibraries(corpus, selectors) {
195
+ const all = modelSourcesIn(`${corpus.root}/${LIBRARY_SOURCE_TREE}`)
196
+ .filter(source => xmiCounterpart(corpus, source, LIBRARY_XMI_IMPLIED_TREE) !== undefined);
197
+ if (selectors.length === 0)
198
+ return all;
199
+ const selected = new Map();
200
+ for (const selector of selectors) {
201
+ const matches = all.filter(source => {
202
+ const relPath = corpusRelative(corpus, source);
203
+ return relPath === selector
204
+ || relPath === `${LIBRARY_SOURCE_TREE}/${selector}`
205
+ || relPath.endsWith(`/${selector}`)
206
+ || basename(source) === selector;
207
+ });
208
+ if (matches.length === 0) {
209
+ throw new Error(`No library source matches "${selector}". `
210
+ + `Pass a corpus-relative path or a bare filename, e.g. "Parts.sysml".`);
211
+ }
212
+ for (const match of matches)
213
+ selected.set(match, match);
214
+ }
215
+ return [...selected.values()];
216
+ }
217
+ export async function runDiffXmi(options) {
218
+ const corpus = loadCorpus(options.corpusDir);
219
+ if (options.verify !== false) {
220
+ const mismatches = verifyCorpus(corpus, [LIBRARY_SOURCE_TREE]);
221
+ if (mismatches.length > 0) {
222
+ throw new Error(`The vendored library sources do not match the manifest (${mismatches.length} file(s)). `
223
+ + 'Run `node scripts/vendor-corpus.mjs --verify` to see which.');
224
+ }
225
+ }
226
+ const sources = selectLibraries(corpus, options.libraries ?? []);
227
+ const libraries = [];
228
+ for (const [index, source] of sources.entries()) {
229
+ options.onLibrary?.(corpusRelative(corpus, source), index, sources.length);
230
+ libraries.push(await diffLibrary(source, corpus, options));
231
+ }
232
+ const counts = emptyDifferenceCounts();
233
+ for (const library of libraries) {
234
+ for (const key of DIFFERENCE_CLASSES)
235
+ counts[key] += library.counts[key];
236
+ }
237
+ return {
238
+ reportVersion: DIFF_REPORT_VERSION,
239
+ memoVersion: options.memoVersion,
240
+ corpus: { ...provenanceOf(corpus), root: '.' },
241
+ toolchain: { lowering: resolveToolchain(options.config, options.registry ?? defaultRegistry).lowering },
242
+ totals: { libraries: libraries.length, counts },
243
+ libraries,
244
+ };
245
+ }
246
+ export function formatDiffXmiReport(report) {
247
+ const lines = [];
248
+ lines.push('');
249
+ lines.push(`SysML v2 Release ${report.corpus.commit.slice(0, 12)} (${report.corpus.commitDate.slice(0, 10)})`);
250
+ lines.push(`lowering ${report.toolchain.lowering}`);
251
+ lines.push('');
252
+ const width = Math.max(28, ...report.libraries.map(library => library.source.length));
253
+ lines.push(`${'library'.padEnd(width)} ${'ref'.padStart(5)} ${'memo'.padStart(5)} `
254
+ + `${'miss-d'.padStart(6)} ${'miss-i'.padStart(6)} ${'extra'.padStart(5)} `
255
+ + `${'deriv'.padStart(5)} ${'name'.padStart(5)}`);
256
+ for (const library of report.libraries) {
257
+ if (library.failure) {
258
+ lines.push(`${library.source.padEnd(width)} ! ${library.failure}`);
259
+ continue;
260
+ }
261
+ const c = library.counts;
262
+ lines.push(`${library.source.padEnd(width)} ${String(library.referenceImplied).padStart(5)} `
263
+ + `${String(library.memo).padStart(5)} `
264
+ + `${String(c['missing-declared']).padStart(6)} ${String(c['missing-implied']).padStart(6)} `
265
+ + `${String(c.extra).padStart(5)} ${String(c['differing-derived']).padStart(5)} `
266
+ + `${String(c['qualified-name']).padStart(5)}`);
267
+ }
268
+ const t = report.totals.counts;
269
+ lines.push(`${'TOTAL'.padEnd(width)} ${' '.repeat(5)} ${' '.repeat(5)} `
270
+ + `${String(t['missing-declared']).padStart(6)} ${String(t['missing-implied']).padStart(6)} `
271
+ + `${String(t.extra).padStart(5)} ${String(t['differing-derived']).padStart(5)} `
272
+ + `${String(t['qualified-name']).padStart(5)}`);
273
+ lines.push('');
274
+ return lines.join('\n');
275
+ }
276
+ //# sourceMappingURL=diff-xmi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-xmi.js","sourceRoot":"","sources":["../../src/conformance/diff-xmi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const SYSIDE_VERSION = "syside 0.10.2 9e2b7f0e89cc4076f432504c3e4183e9a13b2734";
2
+ export interface SysideRule {
3
+ /** Stable kebab-case code, used verbatim as MEMO's rule code. */
4
+ code: string;
5
+ description: string;
6
+ /** Which of Syside's two rule lists publish it. */
7
+ grammars: ('kerml' | 'sysml')[];
8
+ }
9
+ export declare const SYSIDE_RULES: readonly SysideRule[];
10
+ //# sourceMappingURL=syside-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syside-rules.d.ts","sourceRoot":"","sources":["../../../src/conformance/generated/syside-rules.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,2DAA2D,CAAC;AAEvF,MAAM,WAAW,UAAU;IACvB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;CACnC;AAED,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EA8mC7C,CAAC"}