@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
@@ -8,7 +8,9 @@
8
8
  // ─────────────────────────────────────────────────────────────────────────────
9
9
  import { evaluateConstraintNode } from './constraint-eval.js';
10
10
  import { validateBehavior } from './behavior-validator.js';
11
+ import { validateArchitecture } from './architecture-validator.js';
11
12
  import { validateViews } from './view-validator.js';
13
+ import { BUILTIN_RULE_IDS } from './builtin-rules.js';
12
14
  /**
13
15
  * Full model validation: native constraints + structural checks.
14
16
  * Preferred entry point — combines all validation passes.
@@ -17,21 +19,72 @@ import { validateViews } from './view-validator.js';
17
19
  * (see collectNativeConstraints). Evaluated as native KerML
18
20
  * expressions over each constraint's subject kind.
19
21
  */
20
- export function validateModel(model, nativeConstraints = [], kindRegistry) {
22
+ export function validateModel(model, nativeConstraints = [], kindRegistry, effectiveRules) {
23
+ // Section 10.4: a violation reports the rule's provenance, not just its ID.
24
+ // Keyed by active rule ID, because that is what the violation carries.
25
+ const provenanceByRuleId = new Map();
26
+ for (const rule of effectiveRules ?? []) {
27
+ provenanceByRuleId.set(rule.activeRuleId, {
28
+ activeRuleType: rule.activeRuleType,
29
+ baseRuleId: rule.disposition === 'replaced' ? rule.sourceRuleId : undefined,
30
+ declaredSeverity: rule.declaredSeverity,
31
+ tailoring: rule.tailoring,
32
+ policyChain: rule.policyChain.map(entry => ({
33
+ source: entry.source,
34
+ level: entry.level,
35
+ disposition: entry.policy.disposition ?? 'enabled',
36
+ })),
37
+ rationaleText: rule.rationaleText,
38
+ authority: rule.authority,
39
+ approvalReference: rule.approvalReference,
40
+ sourceFile: rule.sourceFile,
41
+ });
42
+ }
21
43
  const behaviorViolations = validateBehavior(model);
44
+ // AR-IBD-001's subject scope comes from the ontology's own `appliesTo`,
45
+ // so the rule's reach is declared where the rule is declared.
46
+ const ibdScope = nativeConstraints.find(c => c.evaluator === 'architecture')?.appliesToKind;
47
+ const architectureViolations = validateArchitecture(model, ibdScope, kindRegistry);
22
48
  const viewViolations = validateViews(model);
23
49
  const nativeViolations = [];
24
50
  let nativePassed = 0;
51
+ // A constraint carrying a non-native `evaluator` is a first-class rule
52
+ // whose predicate a TypeScript function computes — AR-IBD-001 is the only
53
+ // one today. Its violations come from the built-in validator above, so it
54
+ // is skipped here, but it still has to be counted: skipping it silently
55
+ // meant one rule was evaluated and reported as neither passed nor failed.
56
+ const delegated = [];
25
57
  for (const constraint of nativeConstraints) {
58
+ if (constraint.evaluator && constraint.evaluator !== 'native') {
59
+ delegated.push(constraint.id);
60
+ continue;
61
+ }
26
62
  const violations = evaluateConstraintNode(constraint, constraint.ast, model, kindRegistry);
27
63
  if (violations.length === 0)
28
64
  nativePassed++;
29
65
  nativeViolations.push(...violations);
30
66
  }
67
+ const violations = [...behaviorViolations, ...architectureViolations, ...viewViolations, ...nativeViolations]
68
+ .map(violation => ({
69
+ ...violation,
70
+ provenance: model.elements.get(violation.elementId)?.provenance,
71
+ ruleProvenance: provenanceByRuleId.get(violation.ruleId),
72
+ }));
73
+ // Built-in rules are counted from the enumerated list, not from a literal.
74
+ // The literal said 6; there are 7, and it had no way to stay right. A
75
+ // built-in rule passes when it raised no violation, which is the same
76
+ // definition used for native constraints — previously `rulesPassed`
77
+ // counted only native rules, so "61 evaluated, 32 passed" was reporting
78
+ // two different denominators as though they were one.
79
+ const raisedByBuiltinValidators = new Set([
80
+ ...behaviorViolations, ...architectureViolations, ...viewViolations,
81
+ ].map(violation => violation.ruleId));
82
+ const builtinPassed = BUILTIN_RULE_IDS.filter(id => !raisedByBuiltinValidators.has(id)).length;
83
+ const delegatedPassed = delegated.filter(id => !raisedByBuiltinValidators.has(id)).length;
31
84
  return {
32
- violations: [...behaviorViolations, ...viewViolations, ...nativeViolations],
33
- rulesEvaluated: 5 + nativeConstraints.length,
34
- rulesPassed: nativePassed,
85
+ violations,
86
+ rulesEvaluated: BUILTIN_RULE_IDS.length + nativeConstraints.length,
87
+ rulesPassed: builtinPassed + delegatedPassed + nativePassed,
35
88
  timestamp: Date.now(),
36
89
  };
37
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/validator/rule-engine.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,wEAAwE;AACxE,gFAAgF;AAKhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CACzB,KAAgB,EAChB,oBAA0C,EAAE,EAC5C,YAA2B;IAE3B,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,gBAAgB,GAAgB,EAAE,CAAC;IACzC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,YAAY,EAAE,CAAC;QAC5C,gBAAgB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACH,UAAU,EAAE,CAAC,GAAG,kBAAkB,EAAE,GAAG,cAAc,EAAE,GAAG,gBAAgB,CAAC;QAC3E,cAAc,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM;QAC5C,WAAW,EAAE,YAAY;QACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACxB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/validator/rule-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { SYSIDE_RULES, SYSIDE_VERSION, type SysideRule } from '../conformance/generated/syside-rules.js';
2
+ import type { MemoModelDTO } from '../model/semantic.js';
3
+ export { SYSIDE_RULES, SYSIDE_VERSION };
4
+ /** One violation, in the shape a `sysml`-domain diagnostic is built from. */
5
+ export interface ConstraintViolation {
6
+ /** Syside's code, verbatim. */
7
+ code: string;
8
+ message: string;
9
+ elementId: string;
10
+ file: string;
11
+ }
12
+ export interface SysmlConstraint {
13
+ /** Syside's code, verbatim — never a MEMO-invented identifier. */
14
+ code: string;
15
+ /** Specification clause this implements, e.g. `KerML 8.3.3.1`. */
16
+ clause: string;
17
+ /** Metaclass or MEMO construct the rule ranges over, for reporting. */
18
+ appliesTo: string;
19
+ /**
20
+ * What this implementation does *not* catch, where that is known.
21
+ *
22
+ * A partially-implemented rule reported as "implemented" is worse than an
23
+ * unimplemented one: it converts a gap into false confidence. Stating the
24
+ * limitation in the data means the scoreboard prints it, so the coverage
25
+ * number is never read as more than it is.
26
+ */
27
+ limitation?: string;
28
+ check(model: MemoModelDTO): ConstraintViolation[];
29
+ }
30
+ /** Why a published code has no implementation here. */
31
+ export type UnimplementedReason = 'blocked' | 'out-of-scope' | 'not-yet';
32
+ export interface UnimplementedConstraint {
33
+ code: string;
34
+ reason: UnimplementedReason;
35
+ /** Required: an unexplained gap is indistinguishable from an oversight. */
36
+ detail: string;
37
+ }
38
+ export declare const IMPLEMENTED_CONSTRAINTS: readonly SysmlConstraint[];
39
+ /**
40
+ * The reasons, keyed by prefix rather than enumerated one by one.
41
+ *
42
+ * Most of the 151 fall into a handful of buckets, and a bucket with a reason is
43
+ * more honest than 147 individual "not yet" entries that all mean the same
44
+ * thing. `classifyConstraints` applies these to whatever is not implemented.
45
+ */
46
+ export declare const UNIMPLEMENTED_REASONS: readonly {
47
+ match: RegExp;
48
+ reason: UnimplementedReason;
49
+ detail: string;
50
+ }[];
51
+ export interface ConstraintScore {
52
+ sysideVersion: string;
53
+ total: number;
54
+ implemented: SysmlConstraint[];
55
+ unimplemented: UnimplementedConstraint[];
56
+ /** Implemented codes Syside does not publish — a code MEMO invented. */
57
+ unpublished: string[];
58
+ byReason: Record<UnimplementedReason, number>;
59
+ }
60
+ /** Score the implemented set against the published checklist. */
61
+ export declare function classifyConstraints(implemented?: readonly SysmlConstraint[], published?: readonly SysideRule[]): ConstraintScore;
62
+ /** Evaluate every implemented constraint against one model. */
63
+ export declare function checkSysmlConstraints(model: MemoModelDTO, constraints?: readonly SysmlConstraint[]): ConstraintViolation[];
64
+ //# sourceMappingURL=sysml-constraints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sysml-constraints.d.ts","sourceRoot":"","sources":["../../src/validator/sysml-constraints.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACzG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAExC,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAChC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC5B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,mBAAmB,EAAE,CAAC;CACrD;AAED,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,mBAAmB,CAAC;IAC5B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAClB;AA8BD,eAAO,MAAM,uBAAuB,EAAE,SAAS,eAAe,EA2H7D,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAqB1G,CAAC;AAEF,MAAM,WAAW,eAAe;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,aAAa,EAAE,uBAAuB,EAAE,CAAC;IACzC,wEAAwE;IACxE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;CACjD;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAC/B,WAAW,GAAE,SAAS,eAAe,EAA4B,EACjE,SAAS,GAAE,SAAS,UAAU,EAAiB,GAChD,eAAe,CAqBjB;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,YAAY,EACnB,WAAW,GAAE,SAAS,eAAe,EAA4B,GAClE,mBAAmB,EAAE,CAEvB"}
@@ -0,0 +1,251 @@
1
+ // ─── SysML well-formedness constraints (Track B B4) ──────────────────────────
2
+ //
3
+ // The native reimplementation of the language's own well-formedness rules, as
4
+ // distinct from MEMO's methodology rules. Three commitments shape it, and all
5
+ // three come from the plan rather than from taste:
6
+ //
7
+ // 1. **Syside's codes, verbatim** (§5.1.2). `syside rule list` publishes 151
8
+ // stable kebab-case codes with descriptions. A project that suppresses
9
+ // `association-end-types` today must have that suppression keep working
10
+ // after the engine swap, which it only can if the code string is the same
11
+ // string. No parallel MEMO numbering is invented.
12
+ // 2. **A specification clause per rule.** A constraint whose justification is
13
+ // "Syside checks this" is not reviewable. Each carries the KerML/SysML
14
+ // clause it implements, so a reader can check the rule against the source
15
+ // of truth rather than against another tool.
16
+ // 3. **Scored, not claimed.** `memo conformance rules` reports every one of
17
+ // the 151 codes as implemented, not-yet, or out-of-scope-with-a-reason.
18
+ // Coverage is a number that can only go up by writing a rule.
19
+ //
20
+ // **Where this sits relative to the rest of validation.** MEMO's methodology
21
+ // rules live in the ontology and are evaluated by `validator/rule-engine.ts`;
22
+ // they answer "does this model follow MEMO's method?". These answer "is this
23
+ // well-formed SysML?", which is the `sysml` diagnostic domain (§1), and they
24
+ // are engine code by necessity — the language's rules are not MEMO's content to
25
+ // declare. That is not a hole in the ontology-drives rule; it is the boundary
26
+ // of it.
27
+ //
28
+ // **What limits coverage today, stated once.** Most of the 151 are predicates
29
+ // over *resolved* semantics — inherited features, effective types, imported
30
+ // namespaces. MEMO has no linker and no resolution core yet (B3, B5), so a rule
31
+ // needing one cannot be written honestly, only faked. Those are classified
32
+ // `blocked` with the reason, and the number of them is the real measure of how
33
+ // much B3 and B5 gate B4.
34
+ // ─────────────────────────────────────────────────────────────────────────────
35
+ import { SYSIDE_RULES, SYSIDE_VERSION } from '../conformance/generated/syside-rules.js';
36
+ import { activityNodeType, isControlNode } from '../model/activity-notation.js';
37
+ export { SYSIDE_RULES, SYSIDE_VERSION };
38
+ // ─── Implemented constraints ─────────────────────────────────────────────────
39
+ //
40
+ // Every one of these is a predicate over *declared* structure, which is the
41
+ // whole set that can be written honestly before the resolution core exists.
42
+ // They run over the canonical IR rather than over MEMO's projection, because
43
+ // the IR conserves every declaration — imports, duplicates, unmapped members —
44
+ // and the projection by design does not.
45
+ /** Namespace path of a declaration: its identity path minus the last segment. */
46
+ function namespaceOf(identityId) {
47
+ const hash = identityId.indexOf('#');
48
+ const colon = identityId.lastIndexOf(':');
49
+ const path = identityId.slice(hash + 1, colon);
50
+ const slash = path.lastIndexOf('/');
51
+ return `${identityId.slice(0, hash)}#${slash < 0 ? '' : path.slice(0, slash)}`;
52
+ }
53
+ /** True for a declaration sitting directly in a file's root namespace. */
54
+ function isTopLevel(identityId) {
55
+ const hash = identityId.indexOf('#');
56
+ const colon = identityId.lastIndexOf(':');
57
+ return !identityId.slice(hash + 1, colon).includes('/');
58
+ }
59
+ function declarations(model) {
60
+ return model.sysmlIr?.elements ?? [];
61
+ }
62
+ export const IMPLEMENTED_CONSTRAINTS = [
63
+ {
64
+ code: 'import-explicit-visibility',
65
+ clause: 'KerML 8.2.3.5 — an Import declares its visibility',
66
+ appliesTo: 'Import',
67
+ check(model) {
68
+ const violations = [];
69
+ for (const declaration of declarations(model)) {
70
+ if (declaration.identity.metaclass !== 'ImportDeclaration')
71
+ continue;
72
+ if (declaration.standardProperties.visibility !== undefined)
73
+ continue;
74
+ violations.push({
75
+ code: 'import-explicit-visibility',
76
+ message: `Import of "${String(declaration.standardProperties.path ?? '?')}" has no explicit visibility; declare it \`private\` or \`public\`.`,
77
+ elementId: declaration.identity.id,
78
+ file: declaration.source.file,
79
+ });
80
+ }
81
+ return violations;
82
+ },
83
+ },
84
+ {
85
+ code: 'import-top-level-visibility',
86
+ clause: 'KerML 8.2.3.5 — a root-namespace Import is private',
87
+ appliesTo: 'Import',
88
+ check(model) {
89
+ const violations = [];
90
+ for (const declaration of declarations(model)) {
91
+ if (declaration.identity.metaclass !== 'ImportDeclaration')
92
+ continue;
93
+ if (!isTopLevel(declaration.identity.id))
94
+ continue;
95
+ if (declaration.standardProperties.visibility === 'private')
96
+ continue;
97
+ violations.push({
98
+ code: 'import-top-level-visibility',
99
+ message: 'An import at the root of a file is private; it cannot re-export into the global namespace.',
100
+ elementId: declaration.identity.id,
101
+ file: declaration.source.file,
102
+ });
103
+ }
104
+ return violations;
105
+ },
106
+ },
107
+ {
108
+ code: 'namespace-distinguishability',
109
+ clause: 'KerML 8.2.3.3 — members of a Namespace are distinguishable by name',
110
+ appliesTo: 'Namespace',
111
+ check(model) {
112
+ const seen = new Map();
113
+ const violations = [];
114
+ for (const declaration of declarations(model)) {
115
+ const name = declaration.standardProperties.name;
116
+ if (typeof name !== 'string' || !name)
117
+ continue;
118
+ const key = `${namespaceOf(declaration.identity.id)}::${name}`;
119
+ const first = seen.get(key);
120
+ if (first === undefined) {
121
+ seen.set(key, declaration.identity.id);
122
+ continue;
123
+ }
124
+ violations.push({
125
+ code: 'namespace-distinguishability',
126
+ message: `"${name}" is declared more than once in this namespace; the first is ${first}.`,
127
+ elementId: declaration.identity.id,
128
+ file: declaration.source.file,
129
+ });
130
+ }
131
+ return violations;
132
+ },
133
+ },
134
+ {
135
+ code: 'global-namespace-distinguishability',
136
+ clause: 'KerML 8.2.3.3 — root-namespace members are globally distinguishable',
137
+ appliesTo: 'Namespace',
138
+ // The IR records declarations, and a package is a namespace it recurses
139
+ // *into* rather than an element it records — so two files each opening
140
+ // `package Shared` are invisible here, which is the commonest form of
141
+ // this collision. Closing it means recording package declarations in
142
+ // the IR, which is an ingestion change, not a rule change.
143
+ limitation: 'Sees root-level members other than packages; two files declaring the same top-level package are not caught.',
144
+ check(model) {
145
+ const seen = new Map();
146
+ const violations = [];
147
+ for (const declaration of declarations(model)) {
148
+ const name = declaration.standardProperties.name;
149
+ if (typeof name !== 'string' || !name || !isTopLevel(declaration.identity.id))
150
+ continue;
151
+ // Across files, not within one: the global namespace is the
152
+ // project's, so two files declaring the same root-level name
153
+ // collide even though neither file collides with itself.
154
+ const first = seen.get(name);
155
+ if (first === undefined) {
156
+ seen.set(name, declaration.identity.id);
157
+ continue;
158
+ }
159
+ violations.push({
160
+ code: 'global-namespace-distinguishability',
161
+ message: `"${name}" is declared at the root of more than one file; the first is ${first}.`,
162
+ elementId: declaration.identity.id,
163
+ file: declaration.source.file,
164
+ });
165
+ }
166
+ return violations;
167
+ },
168
+ },
169
+ {
170
+ code: 'control-node-owning-type',
171
+ clause: 'SysML 7.12.4.4 — a ControlNode is owned by an ActionDefinition or ActionUsage',
172
+ appliesTo: 'ControlNode',
173
+ check(model) {
174
+ const violations = [];
175
+ for (const element of Object.values(model.elements)) {
176
+ // Classification comes from the notation module, which resolves
177
+ // it against the generated metamodel — so this rule covers every
178
+ // present and future ControlNode subtype without naming any.
179
+ if (!isControlNode(element, model.registries))
180
+ continue;
181
+ const owner = element.parentAction ? model.elements[element.parentAction] : undefined;
182
+ if (owner && activityNodeType(owner, model.registries) !== undefined)
183
+ continue;
184
+ violations.push({
185
+ code: 'control-node-owning-type',
186
+ message: `Control node "${element.id}" is not owned by an action.`,
187
+ elementId: element.id,
188
+ file: element.file,
189
+ });
190
+ }
191
+ return violations;
192
+ },
193
+ },
194
+ ];
195
+ // ─── Codes deliberately not implemented here ────────────────────────────────
196
+ /**
197
+ * The reasons, keyed by prefix rather than enumerated one by one.
198
+ *
199
+ * Most of the 151 fall into a handful of buckets, and a bucket with a reason is
200
+ * more honest than 147 individual "not yet" entries that all mean the same
201
+ * thing. `classifyConstraints` applies these to whatever is not implemented.
202
+ */
203
+ export const UNIMPLEMENTED_REASONS = [
204
+ {
205
+ match: /specialization|subsetting|redefinition|conjugation|-types?$|feature-typing|inherit/,
206
+ reason: 'blocked',
207
+ detail: 'Needs resolved types and inherited features — the B3 resolution core.',
208
+ },
209
+ {
210
+ match: /import|namespace|qualified|resolve|visibility/,
211
+ reason: 'blocked',
212
+ detail: 'Needs name resolution across a workspace index — B5.',
213
+ },
214
+ {
215
+ match: /expression|evaluat|operator|literal|argument|parameter/,
216
+ reason: 'blocked',
217
+ detail: 'Needs model-level expression evaluation — B3, and `Expression::evaluate` is unsized.',
218
+ },
219
+ {
220
+ match: /.*/,
221
+ reason: 'not-yet',
222
+ detail: 'Implementable on the current model; not written yet.',
223
+ },
224
+ ];
225
+ /** Score the implemented set against the published checklist. */
226
+ export function classifyConstraints(implemented = IMPLEMENTED_CONSTRAINTS, published = SYSIDE_RULES) {
227
+ const done = new Map(implemented.map(constraint => [constraint.code, constraint]));
228
+ const publishedCodes = new Set(published.map(rule => rule.code));
229
+ const unimplemented = [];
230
+ const byReason = { blocked: 0, 'out-of-scope': 0, 'not-yet': 0 };
231
+ for (const rule of published) {
232
+ if (done.has(rule.code))
233
+ continue;
234
+ const bucket = UNIMPLEMENTED_REASONS.find(candidate => candidate.match.test(rule.code));
235
+ unimplemented.push({ code: rule.code, reason: bucket.reason, detail: bucket.detail });
236
+ byReason[bucket.reason] += 1;
237
+ }
238
+ return {
239
+ sysideVersion: SYSIDE_VERSION,
240
+ total: published.length,
241
+ implemented: [...done.values()].filter(constraint => publishedCodes.has(constraint.code)),
242
+ unimplemented,
243
+ unpublished: [...done.keys()].filter(code => !publishedCodes.has(code)).sort(),
244
+ byReason,
245
+ };
246
+ }
247
+ /** Evaluate every implemented constraint against one model. */
248
+ export function checkSysmlConstraints(model, constraints = IMPLEMENTED_CONSTRAINTS) {
249
+ return constraints.flatMap(constraint => constraint.check(model));
250
+ }
251
+ //# sourceMappingURL=sysml-constraints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sysml-constraints.js","sourceRoot":"","sources":["../../src/validator/sysml-constraints.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { SemanticElementProvenance } from '../model/source-provenance.js';
1
2
  /** A single rule violation */
2
3
  export interface Violation {
3
4
  /** Closure rule id, e.g. "CR-MED-001" */
@@ -14,6 +15,38 @@ export interface Violation {
14
15
  elementName: string;
15
16
  /** CoSMA layer */
16
17
  layer: string;
18
+ /** The declaration/classifier provenance of the violating element. */
19
+ provenance?: SemanticElementProvenance;
20
+ /**
21
+ * Where the rule that produced this violation came from, and what was done
22
+ * to it. Section 10.4: a violation names the active rule, the rule it
23
+ * replaced if any, the policy that changed it, the effective severity, and
24
+ * the rationale and approval behind the tailoring. A tailored rule that
25
+ * reports violations without saying it was tailored is not auditable.
26
+ */
27
+ ruleProvenance?: ViolationRuleProvenance;
28
+ }
29
+ /** Rule-side provenance carried on every violation (section 10.4). */
30
+ export interface ViolationRuleProvenance {
31
+ /** Qualified name of the active rule's `constraint def`. */
32
+ activeRuleType: string;
33
+ /** Set when the active rule replaced a different one. */
34
+ baseRuleId?: string;
35
+ /** Severity the ontology authored, before any override. */
36
+ declaredSeverity: 'error' | 'warning' | 'info';
37
+ /** How far the rule may be tailored. */
38
+ tailoring: 'invariant' | 'assurance' | 'methodology';
39
+ /** Which methodology or binding changed it, in application order. */
40
+ policyChain: Array<{
41
+ source: string;
42
+ level: 'methodology' | 'project';
43
+ disposition: 'enabled' | 'disabled' | 'replaced';
44
+ }>;
45
+ rationaleText?: string;
46
+ authority?: string;
47
+ approvalReference?: string;
48
+ /** File declaring the rule. */
49
+ sourceFile?: string;
17
50
  }
18
51
  /** Validation result for the entire model */
19
52
  export interface ValidationResult {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validator/types.ts"],"names":[],"mappings":"AAEA,8BAA8B;AAC9B,MAAM,WAAW,SAAS;IACtB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC7B,2BAA2B;IAC3B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAC9B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IAC/B,6BAA6B;IAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gGAAgG;IAChG,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAChD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validator/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,8BAA8B;AAC9B,MAAM,WAAW,SAAS;IACtB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC5C;AAED,sEAAsE;AACtE,MAAM,WAAW,uBAAuB;IACpC,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/C,wCAAwC;IACxC,SAAS,EAAE,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;IACrD,qEAAqE;IACrE,WAAW,EAAE,KAAK,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;QACjC,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;KACpD,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC7B,2BAA2B;IAC3B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAC9B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IAC/B,6BAA6B;IAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gGAAgG;IAChG,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAChD"}
@@ -0,0 +1,2 @@
1
+ export declare function memoVersion(): string;
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAgBA,wBAAgB,WAAW,IAAI,MAAM,CASpC"}
@@ -0,0 +1,26 @@
1
+ // ─── This build's version ────────────────────────────────────────────────────
2
+ //
3
+ // Read from the package manifest rather than restated as a literal, so it
4
+ // cannot drift from what `scripts/sync-version.mjs` writes.
5
+ //
6
+ // It exists because a conformance result has to say which MEMO produced it —
7
+ // the same reason the result carries the Release commit. A number with no
8
+ // provenance on either side is not comparable to the next one.
9
+ // ─────────────────────────────────────────────────────────────────────────────
10
+ import { readFileSync } from 'node:fs';
11
+ import { dirname, resolve } from 'node:path';
12
+ import { fileURLToPath } from 'node:url';
13
+ let cached;
14
+ export function memoVersion() {
15
+ if (cached)
16
+ return cached;
17
+ try {
18
+ const manifest = resolve(dirname(fileURLToPath(import.meta.url)), '../../../package.json');
19
+ cached = JSON.parse(readFileSync(manifest, 'utf-8')).version ?? 'unknown';
20
+ }
21
+ catch {
22
+ cached = 'unknown';
23
+ }
24
+ return cached;
25
+ }
26
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,4DAA4D;AAC5D,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,+DAA+D;AAC/D,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,IAAI,MAA0B,CAAC;AAE/B,MAAM,UAAU,WAAW;IACvB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC3F,MAAM,GAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAA0B,CAAC,OAAO,IAAI,SAAS,CAAC;IACxG,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,GAAG,SAAS,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}