@memoarchitect/tools 0.13.2 → 0.15.1

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 (825) hide show
  1. package/README.md +40 -26
  2. package/corpus/README.md +20 -36
  3. package/package.json +9 -10
  4. package/packages/tools/lib/analysis/impact.d.ts +30 -0
  5. package/packages/tools/lib/analysis/impact.d.ts.map +1 -1
  6. package/packages/tools/lib/analysis/impact.js +47 -74
  7. package/packages/tools/lib/analysis/impact.js.map +1 -1
  8. package/packages/tools/lib/analysis/interfaces-between.d.ts +36 -0
  9. package/packages/tools/lib/analysis/interfaces-between.d.ts.map +1 -0
  10. package/packages/tools/lib/analysis/interfaces-between.js +66 -0
  11. package/packages/tools/lib/analysis/interfaces-between.js.map +1 -0
  12. package/packages/tools/lib/analysis/suspect-links.d.ts +45 -0
  13. package/packages/tools/lib/analysis/suspect-links.d.ts.map +1 -0
  14. package/packages/tools/lib/analysis/suspect-links.js +66 -0
  15. package/packages/tools/lib/analysis/suspect-links.js.map +1 -0
  16. package/packages/tools/lib/analysis-starters.d.ts +2 -0
  17. package/packages/tools/lib/analysis-starters.d.ts.map +1 -1
  18. package/packages/tools/lib/analysis-starters.js +73 -68
  19. package/packages/tools/lib/analysis-starters.js.map +1 -1
  20. package/packages/tools/lib/authoring/outline-identity.d.ts +34 -0
  21. package/packages/tools/lib/authoring/outline-identity.d.ts.map +1 -0
  22. package/packages/tools/lib/authoring/outline-identity.js +95 -0
  23. package/packages/tools/lib/authoring/outline-identity.js.map +1 -0
  24. package/packages/tools/lib/authoring/outline-source.d.ts +57 -0
  25. package/packages/tools/lib/authoring/outline-source.d.ts.map +1 -0
  26. package/packages/tools/lib/authoring/outline-source.js +203 -0
  27. package/packages/tools/lib/authoring/outline-source.js.map +1 -0
  28. package/packages/tools/lib/authoring/source-outline.d.ts +82 -0
  29. package/packages/tools/lib/authoring/source-outline.d.ts.map +1 -0
  30. package/packages/tools/lib/authoring/source-outline.js +267 -0
  31. package/packages/tools/lib/authoring/source-outline.js.map +1 -0
  32. package/packages/tools/lib/bin/memo.js +181 -632
  33. package/packages/tools/lib/bin/memo.js.map +1 -1
  34. package/packages/tools/lib/browser/index.d.ts +12 -0
  35. package/packages/tools/lib/browser/index.d.ts.map +1 -1
  36. package/packages/tools/lib/browser/index.js +8 -0
  37. package/packages/tools/lib/browser/index.js.map +1 -1
  38. package/packages/tools/lib/cli/project-commands.d.ts +3 -0
  39. package/packages/tools/lib/cli/project-commands.d.ts.map +1 -0
  40. package/packages/tools/lib/cli/project-commands.js +577 -0
  41. package/packages/tools/lib/cli/project-commands.js.map +1 -0
  42. package/packages/tools/lib/commands/ask.d.ts.map +1 -1
  43. package/packages/tools/lib/commands/ask.js +10 -18
  44. package/packages/tools/lib/commands/ask.js.map +1 -1
  45. package/packages/tools/lib/commands/compile.d.ts +18 -0
  46. package/packages/tools/lib/commands/compile.d.ts.map +1 -0
  47. package/packages/tools/lib/commands/compile.js +122 -0
  48. package/packages/tools/lib/commands/compile.js.map +1 -0
  49. package/packages/tools/lib/commands/convert.js +2 -2
  50. package/packages/tools/lib/commands/convert.js.map +1 -1
  51. package/packages/tools/lib/commands/create-package.js +4 -4
  52. package/packages/tools/lib/commands/create-package.js.map +1 -1
  53. package/packages/tools/lib/commands/dev.d.ts +20 -2
  54. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  55. package/packages/tools/lib/commands/dev.js +386 -97
  56. package/packages/tools/lib/commands/dev.js.map +1 -1
  57. package/packages/tools/lib/commands/dhf-draft.d.ts.map +1 -1
  58. package/packages/tools/lib/commands/dhf-draft.js +7 -16
  59. package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
  60. package/packages/tools/lib/commands/dhf-init.js +3 -3
  61. package/packages/tools/lib/commands/dhf-init.js.map +1 -1
  62. package/packages/tools/lib/commands/dhf-lint.d.ts.map +1 -1
  63. package/packages/tools/lib/commands/dhf-lint.js +4 -3
  64. package/packages/tools/lib/commands/dhf-lint.js.map +1 -1
  65. package/packages/tools/lib/commands/dhf-preview.d.ts.map +1 -1
  66. package/packages/tools/lib/commands/dhf-preview.js +5 -26
  67. package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
  68. package/packages/tools/lib/commands/dhf.d.ts +4 -0
  69. package/packages/tools/lib/commands/dhf.d.ts.map +1 -1
  70. package/packages/tools/lib/commands/dhf.js +77 -31
  71. package/packages/tools/lib/commands/dhf.js.map +1 -1
  72. package/packages/tools/lib/commands/element.d.ts.map +1 -1
  73. package/packages/tools/lib/commands/element.js +44 -6
  74. package/packages/tools/lib/commands/element.js.map +1 -1
  75. package/packages/tools/lib/commands/export.d.ts +1 -1
  76. package/packages/tools/lib/commands/export.d.ts.map +1 -1
  77. package/packages/tools/lib/commands/export.js +25 -18
  78. package/packages/tools/lib/commands/export.js.map +1 -1
  79. package/packages/tools/lib/commands/generate.d.ts.map +1 -1
  80. package/packages/tools/lib/commands/generate.js +10 -30
  81. package/packages/tools/lib/commands/generate.js.map +1 -1
  82. package/packages/tools/lib/commands/ids-rebase.d.ts +15 -0
  83. package/packages/tools/lib/commands/ids-rebase.d.ts.map +1 -0
  84. package/packages/tools/lib/commands/ids-rebase.js +133 -0
  85. package/packages/tools/lib/commands/ids-rebase.js.map +1 -0
  86. package/packages/tools/lib/commands/import-ea.d.ts +3 -3
  87. package/packages/tools/lib/commands/import-ea.d.ts.map +1 -1
  88. package/packages/tools/lib/commands/import-ea.js +12 -9
  89. package/packages/tools/lib/commands/import-ea.js.map +1 -1
  90. package/packages/tools/lib/commands/import-owl.d.ts +1 -1
  91. package/packages/tools/lib/commands/import-owl.js +2 -2
  92. package/packages/tools/lib/commands/import-owl.js.map +1 -1
  93. package/packages/tools/lib/commands/import-sysand.d.ts +1 -1
  94. package/packages/tools/lib/commands/import-sysand.d.ts.map +1 -1
  95. package/packages/tools/lib/commands/import-sysand.js +15 -6
  96. package/packages/tools/lib/commands/import-sysand.js.map +1 -1
  97. package/packages/tools/lib/commands/import.d.ts +13 -0
  98. package/packages/tools/lib/commands/import.d.ts.map +1 -1
  99. package/packages/tools/lib/commands/import.js +89 -29
  100. package/packages/tools/lib/commands/import.js.map +1 -1
  101. package/packages/tools/lib/commands/init.d.ts +0 -8
  102. package/packages/tools/lib/commands/init.d.ts.map +1 -1
  103. package/packages/tools/lib/commands/init.js +56 -51
  104. package/packages/tools/lib/commands/init.js.map +1 -1
  105. package/packages/tools/lib/commands/inspect.d.ts.map +1 -1
  106. package/packages/tools/lib/commands/inspect.js +22 -15
  107. package/packages/tools/lib/commands/inspect.js.map +1 -1
  108. package/packages/tools/lib/commands/install.d.ts.map +1 -1
  109. package/packages/tools/lib/commands/install.js +9 -6
  110. package/packages/tools/lib/commands/install.js.map +1 -1
  111. package/packages/tools/lib/commands/interfaces.d.ts +8 -0
  112. package/packages/tools/lib/commands/interfaces.d.ts.map +1 -0
  113. package/packages/tools/lib/commands/interfaces.js +71 -0
  114. package/packages/tools/lib/commands/interfaces.js.map +1 -0
  115. package/packages/tools/lib/commands/lock.d.ts.map +1 -1
  116. package/packages/tools/lib/commands/lock.js +13 -6
  117. package/packages/tools/lib/commands/lock.js.map +1 -1
  118. package/packages/tools/lib/commands/mcp.js +7 -7
  119. package/packages/tools/lib/commands/mcp.js.map +1 -1
  120. package/packages/tools/lib/commands/migrate-layout.d.ts +5 -0
  121. package/packages/tools/lib/commands/migrate-layout.d.ts.map +1 -0
  122. package/packages/tools/lib/commands/migrate-layout.js +90 -0
  123. package/packages/tools/lib/commands/migrate-layout.js.map +1 -0
  124. package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
  125. package/packages/tools/lib/commands/ontology.js +26 -22
  126. package/packages/tools/lib/commands/ontology.js.map +1 -1
  127. package/packages/tools/lib/commands/pack.d.ts.map +1 -1
  128. package/packages/tools/lib/commands/pack.js +14 -9
  129. package/packages/tools/lib/commands/pack.js.map +1 -1
  130. package/packages/tools/lib/commands/pinned-target.d.ts +12 -0
  131. package/packages/tools/lib/commands/pinned-target.d.ts.map +1 -0
  132. package/packages/tools/lib/commands/pinned-target.js +74 -0
  133. package/packages/tools/lib/commands/pinned-target.js.map +1 -0
  134. package/packages/tools/lib/commands/plugin.d.ts.map +1 -1
  135. package/packages/tools/lib/commands/plugin.js +13 -22
  136. package/packages/tools/lib/commands/plugin.js.map +1 -1
  137. package/packages/tools/lib/commands/prune.d.ts +5 -0
  138. package/packages/tools/lib/commands/prune.d.ts.map +1 -0
  139. package/packages/tools/lib/commands/prune.js +27 -0
  140. package/packages/tools/lib/commands/prune.js.map +1 -0
  141. package/packages/tools/lib/commands/retired.d.ts +10 -0
  142. package/packages/tools/lib/commands/retired.d.ts.map +1 -0
  143. package/packages/tools/lib/commands/retired.js +35 -0
  144. package/packages/tools/lib/commands/retired.js.map +1 -0
  145. package/packages/tools/lib/commands/rules.d.ts +49 -5
  146. package/packages/tools/lib/commands/rules.d.ts.map +1 -1
  147. package/packages/tools/lib/commands/rules.js +340 -172
  148. package/packages/tools/lib/commands/rules.js.map +1 -1
  149. package/packages/tools/lib/commands/ship-library.d.ts +4 -0
  150. package/packages/tools/lib/commands/ship-library.d.ts.map +1 -0
  151. package/packages/tools/lib/commands/ship-library.js +45 -0
  152. package/packages/tools/lib/commands/ship-library.js.map +1 -0
  153. package/packages/tools/lib/commands/standards.d.ts +2 -2
  154. package/packages/tools/lib/commands/standards.d.ts.map +1 -1
  155. package/packages/tools/lib/commands/standards.js +78 -33
  156. package/packages/tools/lib/commands/standards.js.map +1 -1
  157. package/packages/tools/lib/commands/sysand-publish.d.ts +16 -1
  158. package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
  159. package/packages/tools/lib/commands/sysand-publish.js +75 -193
  160. package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
  161. package/packages/tools/lib/commands/toolchain.d.ts +5 -0
  162. package/packages/tools/lib/commands/toolchain.d.ts.map +1 -1
  163. package/packages/tools/lib/commands/toolchain.js +50 -1
  164. package/packages/tools/lib/commands/toolchain.js.map +1 -1
  165. package/packages/tools/lib/commands/validate-client.d.ts +11 -0
  166. package/packages/tools/lib/commands/validate-client.d.ts.map +1 -0
  167. package/packages/tools/lib/commands/validate-client.js +54 -0
  168. package/packages/tools/lib/commands/validate-client.js.map +1 -0
  169. package/packages/tools/lib/commands/validate.d.ts +33 -2
  170. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  171. package/packages/tools/lib/commands/validate.js +432 -186
  172. package/packages/tools/lib/commands/validate.js.map +1 -1
  173. package/packages/tools/lib/dhf/device-dhf.d.ts +57 -0
  174. package/packages/tools/lib/dhf/device-dhf.d.ts.map +1 -0
  175. package/packages/tools/lib/dhf/device-dhf.js +152 -0
  176. package/packages/tools/lib/dhf/device-dhf.js.map +1 -0
  177. package/packages/tools/lib/dhf/dhf-config-v2.d.ts +1 -1
  178. package/packages/tools/lib/dhf/dhf-config-v2.d.ts.map +1 -1
  179. package/packages/tools/lib/dhf/query-engine.d.ts +9 -2
  180. package/packages/tools/lib/dhf/query-engine.d.ts.map +1 -1
  181. package/packages/tools/lib/dhf/query-engine.js +29 -25
  182. package/packages/tools/lib/dhf/query-engine.js.map +1 -1
  183. package/packages/tools/lib/dhf/query-executor.d.ts +1 -1
  184. package/packages/tools/lib/dhf/query-executor.js +1 -1
  185. package/packages/tools/lib/dhf/query-executor.js.map +1 -1
  186. package/packages/tools/lib/dhf/standards-block.js +1 -1
  187. package/packages/tools/lib/dhf/standards-block.js.map +1 -1
  188. package/packages/tools/lib/dhf/standards-library.d.ts.map +1 -1
  189. package/packages/tools/lib/dhf/standards-library.js +16 -9
  190. package/packages/tools/lib/dhf/standards-library.js.map +1 -1
  191. package/packages/tools/lib/dhf/standards-report.d.ts +11 -3
  192. package/packages/tools/lib/dhf/standards-report.d.ts.map +1 -1
  193. package/packages/tools/lib/dhf/standards-report.js +43 -13
  194. package/packages/tools/lib/dhf/standards-report.js.map +1 -1
  195. package/packages/tools/lib/dhf/template-engine.d.ts +2 -0
  196. package/packages/tools/lib/dhf/template-engine.d.ts.map +1 -1
  197. package/packages/tools/lib/dhf/template-engine.js +5 -5
  198. package/packages/tools/lib/dhf/template-engine.js.map +1 -1
  199. package/packages/tools/lib/import/import-diff.d.ts +31 -1
  200. package/packages/tools/lib/import/import-diff.d.ts.map +1 -1
  201. package/packages/tools/lib/import/import-diff.js +91 -19
  202. package/packages/tools/lib/import/import-diff.js.map +1 -1
  203. package/packages/tools/lib/import/import-sources.d.ts +21 -0
  204. package/packages/tools/lib/import/import-sources.d.ts.map +1 -0
  205. package/packages/tools/lib/import/import-sources.js +36 -0
  206. package/packages/tools/lib/import/import-sources.js.map +1 -0
  207. package/packages/tools/lib/import/reqif.d.ts +23 -0
  208. package/packages/tools/lib/import/reqif.d.ts.map +1 -0
  209. package/packages/tools/lib/import/reqif.js +151 -0
  210. package/packages/tools/lib/import/reqif.js.map +1 -0
  211. package/packages/tools/lib/import/source-import.d.ts +128 -0
  212. package/packages/tools/lib/import/source-import.d.ts.map +1 -0
  213. package/packages/tools/lib/import/source-import.js +305 -0
  214. package/packages/tools/lib/import/source-import.js.map +1 -0
  215. package/packages/tools/lib/importer/cameo-importer.d.ts.map +1 -1
  216. package/packages/tools/lib/importer/cameo-importer.js +4 -1
  217. package/packages/tools/lib/importer/cameo-importer.js.map +1 -1
  218. package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -1
  219. package/packages/tools/lib/importer/ea-importer.js +4 -1
  220. package/packages/tools/lib/importer/ea-importer.js.map +1 -1
  221. package/packages/tools/lib/importer/sysand-importer.d.ts +2 -1
  222. package/packages/tools/lib/importer/sysand-importer.d.ts.map +1 -1
  223. package/packages/tools/lib/importer/sysand-importer.js +27 -10
  224. package/packages/tools/lib/importer/sysand-importer.js.map +1 -1
  225. package/packages/tools/lib/index.d.ts +20 -6
  226. package/packages/tools/lib/index.d.ts.map +1 -1
  227. package/packages/tools/lib/index.js +22 -8
  228. package/packages/tools/lib/index.js.map +1 -1
  229. package/packages/tools/lib/llm/draft-engine.js +1 -1
  230. package/packages/tools/lib/llm/draft-engine.js.map +1 -1
  231. package/packages/tools/lib/llm/model-context.js +1 -1
  232. package/packages/tools/lib/llm/model-context.js.map +1 -1
  233. package/packages/tools/lib/lock.d.ts +37 -2
  234. package/packages/tools/lib/lock.d.ts.map +1 -1
  235. package/packages/tools/lib/lock.js +93 -8
  236. package/packages/tools/lib/lock.js.map +1 -1
  237. package/packages/tools/lib/mcp/index.js +1 -1
  238. package/packages/tools/lib/mcp/index.js.map +1 -1
  239. package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
  240. package/packages/tools/lib/mcp/model-loader.js +6 -18
  241. package/packages/tools/lib/mcp/model-loader.js.map +1 -1
  242. package/packages/tools/lib/mcp/server.js +2 -2
  243. package/packages/tools/lib/mcp/server.js.map +1 -1
  244. package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
  245. package/packages/tools/lib/mcp/tools.js +5 -4
  246. package/packages/tools/lib/mcp/tools.js.map +1 -1
  247. package/packages/tools/lib/methodology/guide-service.d.ts +28 -0
  248. package/packages/tools/lib/methodology/guide-service.d.ts.map +1 -0
  249. package/packages/tools/lib/methodology/guide-service.js +32 -0
  250. package/packages/tools/lib/methodology/guide-service.js.map +1 -0
  251. package/packages/tools/lib/methodology/guide.d.ts +56 -0
  252. package/packages/tools/lib/methodology/guide.d.ts.map +1 -0
  253. package/packages/tools/lib/methodology/guide.js +80 -0
  254. package/packages/tools/lib/methodology/guide.js.map +1 -0
  255. package/packages/tools/lib/model/census-projects.d.ts +26 -0
  256. package/packages/tools/lib/model/census-projects.d.ts.map +1 -0
  257. package/packages/tools/lib/model/census-projects.js +53 -0
  258. package/packages/tools/lib/model/census-projects.js.map +1 -0
  259. package/packages/tools/lib/model/census.d.ts +103 -0
  260. package/packages/tools/lib/model/census.d.ts.map +1 -0
  261. package/packages/tools/lib/model/census.js +229 -0
  262. package/packages/tools/lib/model/census.js.map +1 -0
  263. package/packages/tools/lib/model/complete-model.d.ts +52 -0
  264. package/packages/tools/lib/model/complete-model.d.ts.map +1 -0
  265. package/packages/tools/lib/model/complete-model.js +333 -0
  266. package/packages/tools/lib/model/complete-model.js.map +1 -0
  267. package/packages/tools/lib/model/config-loader.d.ts +8 -3
  268. package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
  269. package/packages/tools/lib/model/config-loader.js +37 -6
  270. package/packages/tools/lib/model/config-loader.js.map +1 -1
  271. package/packages/tools/lib/model/config.d.ts +21 -7
  272. package/packages/tools/lib/model/config.d.ts.map +1 -1
  273. package/packages/tools/lib/model/effective-scope.d.ts +55 -28
  274. package/packages/tools/lib/model/effective-scope.d.ts.map +1 -1
  275. package/packages/tools/lib/model/effective-scope.js +96 -35
  276. package/packages/tools/lib/model/effective-scope.js.map +1 -1
  277. package/packages/tools/lib/model/element-index.d.ts +207 -0
  278. package/packages/tools/lib/model/element-index.d.ts.map +1 -0
  279. package/packages/tools/lib/model/element-index.js +316 -0
  280. package/packages/tools/lib/model/element-index.js.map +1 -0
  281. package/packages/tools/lib/model/id-rebase.d.ts +35 -0
  282. package/packages/tools/lib/model/id-rebase.d.ts.map +1 -0
  283. package/packages/tools/lib/model/id-rebase.js +199 -0
  284. package/packages/tools/lib/model/id-rebase.js.map +1 -0
  285. package/packages/tools/lib/model/identity-registry.d.ts +34 -3
  286. package/packages/tools/lib/model/identity-registry.d.ts.map +1 -1
  287. package/packages/tools/lib/model/identity-registry.js +40 -7
  288. package/packages/tools/lib/model/identity-registry.js.map +1 -1
  289. package/packages/tools/lib/model/impact.d.ts +75 -0
  290. package/packages/tools/lib/model/impact.d.ts.map +1 -0
  291. package/packages/tools/lib/model/impact.js +167 -0
  292. package/packages/tools/lib/model/impact.js.map +1 -0
  293. package/packages/tools/lib/model/ir-identity.d.ts +3 -51
  294. package/packages/tools/lib/model/ir-identity.d.ts.map +1 -1
  295. package/packages/tools/lib/model/ir-identity.js +14 -121
  296. package/packages/tools/lib/model/ir-identity.js.map +1 -1
  297. package/packages/tools/lib/model/kind-registry.d.ts +66 -22
  298. package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
  299. package/packages/tools/lib/model/kind-registry.js +104 -145
  300. package/packages/tools/lib/model/kind-registry.js.map +1 -1
  301. package/packages/tools/lib/model/manifest.d.ts +2 -2
  302. package/packages/tools/lib/model/manifest.d.ts.map +1 -1
  303. package/packages/tools/lib/model/manifest.js +5 -4
  304. package/packages/tools/lib/model/manifest.js.map +1 -1
  305. package/packages/tools/lib/model/methodology-loader.d.ts +11 -2
  306. package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
  307. package/packages/tools/lib/model/methodology-loader.js +24 -130
  308. package/packages/tools/lib/model/methodology-loader.js.map +1 -1
  309. package/packages/tools/lib/model/methodology-resolver.d.ts +71 -6
  310. package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -1
  311. package/packages/tools/lib/model/methodology-resolver.js +210 -24
  312. package/packages/tools/lib/model/methodology-resolver.js.map +1 -1
  313. package/packages/tools/lib/model/model-diff.d.ts +73 -0
  314. package/packages/tools/lib/model/model-diff.d.ts.map +1 -0
  315. package/packages/tools/lib/model/model-diff.js +91 -0
  316. package/packages/tools/lib/model/model-diff.js.map +1 -0
  317. package/packages/tools/lib/model/narrow-model.d.ts +9 -0
  318. package/packages/tools/lib/model/narrow-model.d.ts.map +1 -0
  319. package/packages/tools/lib/model/narrow-model.js +54 -0
  320. package/packages/tools/lib/model/narrow-model.js.map +1 -0
  321. package/packages/tools/lib/model/native-project.d.ts +92 -11
  322. package/packages/tools/lib/model/native-project.d.ts.map +1 -1
  323. package/packages/tools/lib/model/native-project.js +163 -269
  324. package/packages/tools/lib/model/native-project.js.map +1 -1
  325. package/packages/tools/lib/model/ontology-loader.d.ts +10 -61
  326. package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
  327. package/packages/tools/lib/model/ontology-loader.js +11 -512
  328. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  329. package/packages/tools/lib/model/package-manifest.d.ts +8 -2
  330. package/packages/tools/lib/model/package-manifest.d.ts.map +1 -1
  331. package/packages/tools/lib/model/package-manifest.js +14 -2
  332. package/packages/tools/lib/model/package-manifest.js.map +1 -1
  333. package/packages/tools/lib/model/pinned.d.ts +216 -0
  334. package/packages/tools/lib/model/pinned.d.ts.map +1 -0
  335. package/packages/tools/lib/model/pinned.js +481 -0
  336. package/packages/tools/lib/model/pinned.js.map +1 -0
  337. package/packages/tools/lib/model/project-conversion.d.ts +3 -2
  338. package/packages/tools/lib/model/project-conversion.d.ts.map +1 -1
  339. package/packages/tools/lib/model/project-conversion.js +55 -10
  340. package/packages/tools/lib/model/project-conversion.js.map +1 -1
  341. package/packages/tools/lib/model/project-settings.d.ts +10 -0
  342. package/packages/tools/lib/model/project-settings.d.ts.map +1 -0
  343. package/packages/tools/lib/model/project-settings.js +48 -0
  344. package/packages/tools/lib/model/project-settings.js.map +1 -0
  345. package/packages/tools/lib/model/relation-selection.d.ts +25 -0
  346. package/packages/tools/lib/model/relation-selection.d.ts.map +1 -0
  347. package/packages/tools/lib/model/relation-selection.js +65 -0
  348. package/packages/tools/lib/model/relation-selection.js.map +1 -0
  349. package/packages/tools/lib/model/relationship-legality.d.ts +6 -0
  350. package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
  351. package/packages/tools/lib/model/relationship-legality.js.map +1 -1
  352. package/packages/tools/lib/model/relationship-registry.d.ts +21 -8
  353. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
  354. package/packages/tools/lib/model/relationship-registry.js +77 -129
  355. package/packages/tools/lib/model/relationship-registry.js.map +1 -1
  356. package/packages/tools/lib/model/relationship-subjects.d.ts +28 -0
  357. package/packages/tools/lib/model/relationship-subjects.d.ts.map +1 -0
  358. package/packages/tools/lib/model/relationship-subjects.js +126 -0
  359. package/packages/tools/lib/model/relationship-subjects.js.map +1 -0
  360. package/packages/tools/lib/model/release-target.d.ts +12 -0
  361. package/packages/tools/lib/model/release-target.d.ts.map +1 -0
  362. package/packages/tools/lib/model/release-target.js +35 -0
  363. package/packages/tools/lib/model/release-target.js.map +1 -0
  364. package/packages/tools/lib/model/selector-vocabulary.d.ts +47 -0
  365. package/packages/tools/lib/model/selector-vocabulary.d.ts.map +1 -0
  366. package/packages/tools/lib/model/selector-vocabulary.js +181 -0
  367. package/packages/tools/lib/model/selector-vocabulary.js.map +1 -0
  368. package/packages/tools/lib/model/semantic.d.ts +99 -7
  369. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  370. package/packages/tools/lib/model/semantic.js +13 -1
  371. package/packages/tools/lib/model/semantic.js.map +1 -1
  372. package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -1
  373. package/packages/tools/lib/model/settings-boundary.js +9 -8
  374. package/packages/tools/lib/model/settings-boundary.js.map +1 -1
  375. package/packages/tools/lib/model/short-id.d.ts +2 -0
  376. package/packages/tools/lib/model/short-id.d.ts.map +1 -1
  377. package/packages/tools/lib/model/short-id.js +9 -0
  378. package/packages/tools/lib/model/short-id.js.map +1 -1
  379. package/packages/tools/lib/model/source-graph.d.ts +9 -7
  380. package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
  381. package/packages/tools/lib/model/source-graph.js +19 -24
  382. package/packages/tools/lib/model/source-graph.js.map +1 -1
  383. package/packages/tools/lib/model/source-provenance.d.ts +5 -1
  384. package/packages/tools/lib/model/source-provenance.d.ts.map +1 -1
  385. package/packages/tools/lib/model/source-provenance.js.map +1 -1
  386. package/packages/tools/lib/model/sysml-files.js +1 -1
  387. package/packages/tools/lib/model/sysml-ir.d.ts +2 -5
  388. package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -1
  389. package/packages/tools/lib/model/sysml-ir.js +1 -100
  390. package/packages/tools/lib/model/sysml-ir.js.map +1 -1
  391. package/packages/tools/lib/model/toolchain-merge.d.ts +4 -0
  392. package/packages/tools/lib/model/toolchain-merge.d.ts.map +1 -0
  393. package/packages/tools/lib/model/toolchain-merge.js +34 -0
  394. package/packages/tools/lib/model/toolchain-merge.js.map +1 -0
  395. package/packages/tools/lib/model/user-settings.d.ts +13 -0
  396. package/packages/tools/lib/model/user-settings.d.ts.map +1 -0
  397. package/packages/tools/lib/model/user-settings.js +83 -0
  398. package/packages/tools/lib/model/user-settings.js.map +1 -0
  399. package/packages/tools/lib/model/variability.d.ts +56 -0
  400. package/packages/tools/lib/model/variability.d.ts.map +1 -0
  401. package/packages/tools/lib/model/variability.js +116 -0
  402. package/packages/tools/lib/model/variability.js.map +1 -0
  403. package/packages/tools/lib/model/version-range.d.ts +2 -0
  404. package/packages/tools/lib/model/version-range.d.ts.map +1 -0
  405. package/packages/tools/lib/model/version-range.js +37 -0
  406. package/packages/tools/lib/model/version-range.js.map +1 -0
  407. package/packages/tools/lib/model/view-deriver.d.ts +16 -0
  408. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  409. package/packages/tools/lib/model/view-deriver.js +100 -26
  410. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  411. package/packages/tools/lib/model/view-layout-block.d.ts +81 -0
  412. package/packages/tools/lib/model/view-layout-block.d.ts.map +1 -0
  413. package/packages/tools/lib/model/view-layout-block.js +525 -0
  414. package/packages/tools/lib/model/view-layout-block.js.map +1 -0
  415. package/packages/tools/lib/model/view-layout-migration.d.ts +54 -0
  416. package/packages/tools/lib/model/view-layout-migration.d.ts.map +1 -0
  417. package/packages/tools/lib/model/view-layout-migration.js +156 -0
  418. package/packages/tools/lib/model/view-layout-migration.js.map +1 -0
  419. package/packages/tools/lib/model/workspace-membership.d.ts +99 -0
  420. package/packages/tools/lib/model/workspace-membership.d.ts.map +1 -0
  421. package/packages/tools/lib/model/workspace-membership.js +281 -0
  422. package/packages/tools/lib/model/workspace-membership.js.map +1 -0
  423. package/packages/tools/lib/ontology/owl-exporter.d.ts +1 -1
  424. package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
  425. package/packages/tools/lib/ontology/owl-exporter.js +1 -1
  426. package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
  427. package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -1
  428. package/packages/tools/lib/operations/ai-authoring.js +7 -5
  429. package/packages/tools/lib/operations/ai-authoring.js.map +1 -1
  430. package/packages/tools/lib/operations/authoring.d.ts +10 -4
  431. package/packages/tools/lib/operations/authoring.d.ts.map +1 -1
  432. package/packages/tools/lib/operations/authoring.js +27 -11
  433. package/packages/tools/lib/operations/authoring.js.map +1 -1
  434. package/packages/tools/lib/operations/index.d.ts +2 -0
  435. package/packages/tools/lib/operations/index.d.ts.map +1 -1
  436. package/packages/tools/lib/operations/index.js +1 -0
  437. package/packages/tools/lib/operations/index.js.map +1 -1
  438. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  439. package/packages/tools/lib/operations/project-snapshot.js +7 -13
  440. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  441. package/packages/tools/lib/plugin/plugin-scaffold.js +2 -2
  442. package/packages/tools/lib/plugin/plugin-scaffold.js.map +1 -1
  443. package/packages/tools/lib/protocol/messages.d.ts +375 -7
  444. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  445. package/packages/tools/lib/serializer/csv-io.d.ts +37 -29
  446. package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
  447. package/packages/tools/lib/serializer/csv-io.js +64 -31
  448. package/packages/tools/lib/serializer/csv-io.js.map +1 -1
  449. package/packages/tools/lib/serializer/sysml-generator.d.ts +15 -2
  450. package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
  451. package/packages/tools/lib/serializer/sysml-generator.js +45 -17
  452. package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
  453. package/packages/tools/lib/server/conflict-policy.js +1 -1
  454. package/packages/tools/lib/server/conflict-policy.js.map +1 -1
  455. package/packages/tools/lib/server/dashboard-store.d.ts +1 -7
  456. package/packages/tools/lib/server/dashboard-store.d.ts.map +1 -1
  457. package/packages/tools/lib/server/dashboard-store.js +3 -14
  458. package/packages/tools/lib/server/dashboard-store.js.map +1 -1
  459. package/packages/tools/lib/server/dev-server.d.ts +48 -1
  460. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  461. package/packages/tools/lib/server/dev-server.js +529 -80
  462. package/packages/tools/lib/server/dev-server.js.map +1 -1
  463. package/packages/tools/lib/server/dev-validate.d.ts +30 -0
  464. package/packages/tools/lib/server/dev-validate.d.ts.map +1 -0
  465. package/packages/tools/lib/server/dev-validate.js +82 -0
  466. package/packages/tools/lib/server/dev-validate.js.map +1 -0
  467. package/packages/tools/lib/server/element-writer.d.ts +4 -1
  468. package/packages/tools/lib/server/element-writer.d.ts.map +1 -1
  469. package/packages/tools/lib/server/element-writer.js +56 -35
  470. package/packages/tools/lib/server/element-writer.js.map +1 -1
  471. package/packages/tools/lib/server/mutation-domain.d.ts +10 -0
  472. package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -1
  473. package/packages/tools/lib/server/mutation-domain.js +45 -8
  474. package/packages/tools/lib/server/mutation-domain.js.map +1 -1
  475. package/packages/tools/lib/server/package-source.d.ts +13 -3
  476. package/packages/tools/lib/server/package-source.d.ts.map +1 -1
  477. package/packages/tools/lib/server/package-source.js +31 -39
  478. package/packages/tools/lib/server/package-source.js.map +1 -1
  479. package/packages/tools/lib/server/package-writer.d.ts +19 -6
  480. package/packages/tools/lib/server/package-writer.d.ts.map +1 -1
  481. package/packages/tools/lib/server/package-writer.js +90 -39
  482. package/packages/tools/lib/server/package-writer.js.map +1 -1
  483. package/packages/tools/lib/server/persistor.d.ts +33 -7
  484. package/packages/tools/lib/server/persistor.d.ts.map +1 -1
  485. package/packages/tools/lib/server/persistor.js +63 -48
  486. package/packages/tools/lib/server/persistor.js.map +1 -1
  487. package/packages/tools/lib/server/project-gitignore.d.ts +9 -0
  488. package/packages/tools/lib/server/project-gitignore.d.ts.map +1 -0
  489. package/packages/tools/lib/server/project-gitignore.js +27 -0
  490. package/packages/tools/lib/server/project-gitignore.js.map +1 -0
  491. package/packages/tools/lib/server/relationship-writer.d.ts +31 -2
  492. package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
  493. package/packages/tools/lib/server/relationship-writer.js +255 -95
  494. package/packages/tools/lib/server/relationship-writer.js.map +1 -1
  495. package/packages/tools/lib/server/release-writer.d.ts +46 -0
  496. package/packages/tools/lib/server/release-writer.d.ts.map +1 -0
  497. package/packages/tools/lib/server/release-writer.js +133 -0
  498. package/packages/tools/lib/server/release-writer.js.map +1 -0
  499. package/packages/tools/lib/server/rule-policy-writer.d.ts +17 -4
  500. package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -1
  501. package/packages/tools/lib/server/rule-policy-writer.js +92 -7
  502. package/packages/tools/lib/server/rule-policy-writer.js.map +1 -1
  503. package/packages/tools/lib/server/rule-service.d.ts +50 -0
  504. package/packages/tools/lib/server/rule-service.d.ts.map +1 -0
  505. package/packages/tools/lib/server/rule-service.js +89 -0
  506. package/packages/tools/lib/server/rule-service.js.map +1 -0
  507. package/packages/tools/lib/server/rule-writer.d.ts +87 -0
  508. package/packages/tools/lib/server/rule-writer.d.ts.map +1 -0
  509. package/packages/tools/lib/server/rule-writer.js +165 -0
  510. package/packages/tools/lib/server/rule-writer.js.map +1 -0
  511. package/packages/tools/lib/server/suspect-review.d.ts +11 -0
  512. package/packages/tools/lib/server/suspect-review.d.ts.map +1 -0
  513. package/packages/tools/lib/server/suspect-review.js +28 -0
  514. package/packages/tools/lib/server/suspect-review.js.map +1 -0
  515. package/packages/tools/lib/server/sysml-notation.d.ts +1 -1
  516. package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -1
  517. package/packages/tools/lib/server/sysml-notation.js +5 -0
  518. package/packages/tools/lib/server/sysml-notation.js.map +1 -1
  519. package/packages/tools/lib/server/user-preferences.d.ts +8 -0
  520. package/packages/tools/lib/server/user-preferences.d.ts.map +1 -0
  521. package/packages/tools/lib/server/user-preferences.js +47 -0
  522. package/packages/tools/lib/server/user-preferences.js.map +1 -0
  523. package/packages/tools/lib/server/version-servers.d.ts +60 -0
  524. package/packages/tools/lib/server/version-servers.d.ts.map +1 -0
  525. package/packages/tools/lib/server/version-servers.js +106 -0
  526. package/packages/tools/lib/server/version-servers.js.map +1 -0
  527. package/packages/tools/lib/server/view-layout-store.d.ts +28 -13
  528. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
  529. package/packages/tools/lib/server/view-layout-store.js +106 -106
  530. package/packages/tools/lib/server/view-layout-store.js.map +1 -1
  531. package/packages/tools/lib/server/view-writer.d.ts +22 -2
  532. package/packages/tools/lib/server/view-writer.d.ts.map +1 -1
  533. package/packages/tools/lib/server/view-writer.js +99 -44
  534. package/packages/tools/lib/server/view-writer.js.map +1 -1
  535. package/packages/tools/lib/server/write-guard.d.ts +7 -0
  536. package/packages/tools/lib/server/write-guard.d.ts.map +1 -0
  537. package/packages/tools/lib/server/write-guard.js +77 -0
  538. package/packages/tools/lib/server/write-guard.js.map +1 -0
  539. package/packages/tools/lib/stage2/api-model.d.ts +160 -0
  540. package/packages/tools/lib/stage2/api-model.d.ts.map +1 -0
  541. package/packages/tools/lib/stage2/api-model.js +341 -0
  542. package/packages/tools/lib/stage2/api-model.js.map +1 -0
  543. package/packages/tools/lib/stage2/build-from-api.d.ts +47 -0
  544. package/packages/tools/lib/stage2/build-from-api.d.ts.map +1 -0
  545. package/packages/tools/lib/stage2/build-from-api.js +1462 -0
  546. package/packages/tools/lib/stage2/build-from-api.js.map +1 -0
  547. package/packages/tools/lib/stage2/guide-from-api.d.ts +38 -0
  548. package/packages/tools/lib/stage2/guide-from-api.d.ts.map +1 -0
  549. package/packages/tools/lib/stage2/guide-from-api.js +97 -0
  550. package/packages/tools/lib/stage2/guide-from-api.js.map +1 -0
  551. package/packages/tools/lib/stage2/handoff-files.d.ts +13 -0
  552. package/packages/tools/lib/stage2/handoff-files.d.ts.map +1 -0
  553. package/packages/tools/lib/stage2/handoff-files.js +32 -0
  554. package/packages/tools/lib/stage2/handoff-files.js.map +1 -0
  555. package/packages/tools/lib/stage2/methodology-from-api.d.ts +10 -0
  556. package/packages/tools/lib/stage2/methodology-from-api.d.ts.map +1 -0
  557. package/packages/tools/lib/stage2/methodology-from-api.js +109 -0
  558. package/packages/tools/lib/stage2/methodology-from-api.js.map +1 -0
  559. package/packages/tools/lib/stage2/package-metadata-from-api.d.ts +15 -0
  560. package/packages/tools/lib/stage2/package-metadata-from-api.d.ts.map +1 -0
  561. package/packages/tools/lib/stage2/package-metadata-from-api.js +238 -0
  562. package/packages/tools/lib/stage2/package-metadata-from-api.js.map +1 -0
  563. package/packages/tools/lib/stage2/project-from-api.d.ts +60 -0
  564. package/packages/tools/lib/stage2/project-from-api.d.ts.map +1 -0
  565. package/packages/tools/lib/stage2/project-from-api.js +328 -0
  566. package/packages/tools/lib/stage2/project-from-api.js.map +1 -0
  567. package/packages/tools/lib/stage2/registries-from-api.d.ts +68 -0
  568. package/packages/tools/lib/stage2/registries-from-api.d.ts.map +1 -0
  569. package/packages/tools/lib/stage2/registries-from-api.js +313 -0
  570. package/packages/tools/lib/stage2/registries-from-api.js.map +1 -0
  571. package/packages/tools/lib/stage2/stage2-from-handoff.d.ts +26 -0
  572. package/packages/tools/lib/stage2/stage2-from-handoff.d.ts.map +1 -0
  573. package/packages/tools/lib/stage2/stage2-from-handoff.js +34 -0
  574. package/packages/tools/lib/stage2/stage2-from-handoff.js.map +1 -0
  575. package/packages/tools/lib/stage2/sysml-names.d.ts +9 -0
  576. package/packages/tools/lib/stage2/sysml-names.d.ts.map +1 -0
  577. package/packages/tools/lib/stage2/sysml-names.js +39 -0
  578. package/packages/tools/lib/stage2/sysml-names.js.map +1 -0
  579. package/packages/tools/lib/toolchain/default-registry.d.ts +2 -2
  580. package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -1
  581. package/packages/tools/lib/toolchain/default-registry.js +9 -5
  582. package/packages/tools/lib/toolchain/default-registry.js.map +1 -1
  583. package/packages/tools/lib/toolchain/diagnostic.d.ts +2 -2
  584. package/packages/tools/lib/toolchain/diagnostic.js +1 -1
  585. package/packages/tools/lib/toolchain/diagnostic.js.map +1 -1
  586. package/packages/tools/lib/toolchain/effective.d.ts +25 -17
  587. package/packages/tools/lib/toolchain/effective.d.ts.map +1 -1
  588. package/packages/tools/lib/toolchain/effective.js +45 -40
  589. package/packages/tools/lib/toolchain/effective.js.map +1 -1
  590. package/packages/tools/lib/toolchain/exceptions.d.ts +27 -0
  591. package/packages/tools/lib/toolchain/exceptions.d.ts.map +1 -0
  592. package/packages/tools/lib/toolchain/exceptions.js +77 -0
  593. package/packages/tools/lib/toolchain/exceptions.js.map +1 -0
  594. package/packages/tools/lib/toolchain/index.d.ts +2 -2
  595. package/packages/tools/lib/toolchain/index.d.ts.map +1 -1
  596. package/packages/tools/lib/toolchain/index.js +2 -2
  597. package/packages/tools/lib/toolchain/index.js.map +1 -1
  598. package/packages/tools/lib/toolchain/operations.d.ts +45 -10
  599. package/packages/tools/lib/toolchain/operations.d.ts.map +1 -1
  600. package/packages/tools/lib/toolchain/operations.js +107 -8
  601. package/packages/tools/lib/toolchain/operations.js.map +1 -1
  602. package/packages/tools/lib/toolchain/ownership.d.ts +13 -0
  603. package/packages/tools/lib/toolchain/ownership.d.ts.map +1 -0
  604. package/packages/tools/lib/toolchain/ownership.js +57 -0
  605. package/packages/tools/lib/toolchain/ownership.js.map +1 -0
  606. package/packages/tools/lib/toolchain/process.d.ts +2 -2
  607. package/packages/tools/lib/toolchain/process.js +2 -2
  608. package/packages/tools/lib/toolchain/project-config.d.ts +4 -0
  609. package/packages/tools/lib/toolchain/project-config.d.ts.map +1 -0
  610. package/packages/tools/lib/toolchain/project-config.js +13 -0
  611. package/packages/tools/lib/toolchain/project-config.js.map +1 -0
  612. package/packages/tools/lib/toolchain/project-model.d.ts +75 -0
  613. package/packages/tools/lib/toolchain/project-model.d.ts.map +1 -0
  614. package/packages/tools/lib/toolchain/project-model.js +92 -0
  615. package/packages/tools/lib/toolchain/project-model.js.map +1 -0
  616. package/packages/tools/lib/toolchain/providers/internal-package.d.ts +6 -0
  617. package/packages/tools/lib/toolchain/providers/internal-package.d.ts.map +1 -0
  618. package/packages/tools/lib/toolchain/providers/internal-package.js +47 -0
  619. package/packages/tools/lib/toolchain/providers/internal-package.js.map +1 -0
  620. package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts +20 -0
  621. package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts.map +1 -0
  622. package/packages/tools/lib/toolchain/providers/opensysml-check.js +95 -0
  623. package/packages/tools/lib/toolchain/providers/opensysml-check.js.map +1 -0
  624. package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts +17 -0
  625. package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts.map +1 -0
  626. package/packages/tools/lib/toolchain/providers/opensysml-compact.js +69 -0
  627. package/packages/tools/lib/toolchain/providers/opensysml-compact.js.map +1 -0
  628. package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts +50 -0
  629. package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts.map +1 -0
  630. package/packages/tools/lib/toolchain/providers/opensysml-lowering.js +646 -0
  631. package/packages/tools/lib/toolchain/providers/opensysml-lowering.js.map +1 -0
  632. package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts +16 -0
  633. package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts.map +1 -0
  634. package/packages/tools/lib/toolchain/providers/opensysml-names.js +37 -0
  635. package/packages/tools/lib/toolchain/providers/opensysml-names.js.map +1 -0
  636. package/packages/tools/lib/toolchain/providers/opensysml.d.ts +88 -0
  637. package/packages/tools/lib/toolchain/providers/opensysml.d.ts.map +1 -0
  638. package/packages/tools/lib/toolchain/providers/opensysml.js +178 -0
  639. package/packages/tools/lib/toolchain/providers/opensysml.js.map +1 -0
  640. package/packages/tools/lib/toolchain/providers/recommended.d.ts +2 -0
  641. package/packages/tools/lib/toolchain/providers/recommended.d.ts.map +1 -0
  642. package/packages/tools/lib/toolchain/providers/recommended.js +13 -0
  643. package/packages/tools/lib/toolchain/providers/recommended.js.map +1 -0
  644. package/packages/tools/lib/toolchain/providers/sysand-project.d.ts +60 -0
  645. package/packages/tools/lib/toolchain/providers/sysand-project.d.ts.map +1 -0
  646. package/packages/tools/lib/toolchain/providers/sysand-project.js +160 -0
  647. package/packages/tools/lib/toolchain/providers/sysand-project.js.map +1 -0
  648. package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -1
  649. package/packages/tools/lib/toolchain/providers/sysand.js +26 -2
  650. package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -1
  651. package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts +29 -0
  652. package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts.map +1 -0
  653. package/packages/tools/lib/toolchain/providers/syside-lowering.js +497 -0
  654. package/packages/tools/lib/toolchain/providers/syside-lowering.js.map +1 -0
  655. package/packages/tools/lib/toolchain/providers/syside-python.d.ts +9 -0
  656. package/packages/tools/lib/toolchain/providers/syside-python.d.ts.map +1 -0
  657. package/packages/tools/lib/toolchain/providers/syside-python.js +69 -0
  658. package/packages/tools/lib/toolchain/providers/syside-python.js.map +1 -0
  659. package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -1
  660. package/packages/tools/lib/toolchain/providers/syside.js +2 -0
  661. package/packages/tools/lib/toolchain/providers/syside.js.map +1 -1
  662. package/packages/tools/lib/toolchain/registry.d.ts +118 -21
  663. package/packages/tools/lib/toolchain/registry.d.ts.map +1 -1
  664. package/packages/tools/lib/toolchain/registry.js +18 -24
  665. package/packages/tools/lib/toolchain/registry.js.map +1 -1
  666. package/packages/tools/lib/toolchain/schema.d.ts +6 -5
  667. package/packages/tools/lib/toolchain/schema.d.ts.map +1 -1
  668. package/packages/tools/lib/toolchain/schema.js +8 -13
  669. package/packages/tools/lib/toolchain/schema.js.map +1 -1
  670. package/packages/tools/lib/toolchain/shipped-library.d.ts +28 -0
  671. package/packages/tools/lib/toolchain/shipped-library.d.ts.map +1 -0
  672. package/packages/tools/lib/toolchain/shipped-library.js +120 -0
  673. package/packages/tools/lib/toolchain/shipped-library.js.map +1 -0
  674. package/packages/tools/lib/toolchain/source-fingerprint.d.ts +2 -0
  675. package/packages/tools/lib/toolchain/source-fingerprint.d.ts.map +1 -0
  676. package/packages/tools/lib/toolchain/source-fingerprint.js +30 -0
  677. package/packages/tools/lib/toolchain/source-fingerprint.js.map +1 -0
  678. package/packages/tools/lib/toolchain/user-settings-status.d.ts +51 -0
  679. package/packages/tools/lib/toolchain/user-settings-status.d.ts.map +1 -0
  680. package/packages/tools/lib/toolchain/user-settings-status.js +104 -0
  681. package/packages/tools/lib/toolchain/user-settings-status.js.map +1 -0
  682. package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -1
  683. package/packages/tools/lib/validator/architecture-validator.js +2 -1
  684. package/packages/tools/lib/validator/architecture-validator.js.map +1 -1
  685. package/packages/tools/lib/validator/behavior-validator.js +1 -1
  686. package/packages/tools/lib/validator/behavior-validator.js.map +1 -1
  687. package/packages/tools/lib/validator/builtin-rules.js +1 -1
  688. package/packages/tools/lib/validator/builtin-rules.js.map +1 -1
  689. package/packages/tools/lib/validator/constraint-eval.d.ts +30 -4
  690. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  691. package/packages/tools/lib/validator/constraint-eval.js +101 -59
  692. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  693. package/packages/tools/lib/validator/constraint-loader-api.d.ts +22 -0
  694. package/packages/tools/lib/validator/constraint-loader-api.d.ts.map +1 -0
  695. package/packages/tools/lib/validator/constraint-loader-api.js +160 -0
  696. package/packages/tools/lib/validator/constraint-loader-api.js.map +1 -0
  697. package/packages/tools/lib/validator/constraint-loader.d.ts +22 -18
  698. package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
  699. package/packages/tools/lib/validator/constraint-loader.js +33 -141
  700. package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
  701. package/packages/tools/lib/validator/rule-clauses.d.ts +51 -0
  702. package/packages/tools/lib/validator/rule-clauses.d.ts.map +1 -0
  703. package/packages/tools/lib/validator/rule-clauses.js +87 -0
  704. package/packages/tools/lib/validator/rule-clauses.js.map +1 -0
  705. package/packages/tools/lib/validator/rule-engine.d.ts +9 -1
  706. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  707. package/packages/tools/lib/validator/rule-engine.js +50 -6
  708. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  709. package/packages/tools/lib/validator/rule-registry.d.ts +4 -8
  710. package/packages/tools/lib/validator/rule-registry.d.ts.map +1 -1
  711. package/packages/tools/lib/validator/rule-registry.js +42 -79
  712. package/packages/tools/lib/validator/rule-registry.js.map +1 -1
  713. package/packages/tools/lib/validator/rule-tailoring.d.ts +62 -0
  714. package/packages/tools/lib/validator/rule-tailoring.d.ts.map +1 -0
  715. package/packages/tools/lib/validator/rule-tailoring.js +85 -0
  716. package/packages/tools/lib/validator/rule-tailoring.js.map +1 -0
  717. package/packages/tools/lib/validator/types.d.ts +12 -1
  718. package/packages/tools/lib/validator/types.d.ts.map +1 -1
  719. package/packages/tools/lib/validator/workspace-boundary-validator.d.ts +9 -0
  720. package/packages/tools/lib/validator/workspace-boundary-validator.d.ts.map +1 -0
  721. package/packages/tools/lib/validator/workspace-boundary-validator.js +28 -0
  722. package/packages/tools/lib/validator/workspace-boundary-validator.js.map +1 -0
  723. package/packages/tools/python/memo_model.py +243 -0
  724. package/packages/tools/python/memo_stage1_syside.py +389 -0
  725. package/packages/tools/lib/commands/check.d.ts +0 -6
  726. package/packages/tools/lib/commands/check.d.ts.map +0 -1
  727. package/packages/tools/lib/commands/check.js +0 -191
  728. package/packages/tools/lib/commands/check.js.map +0 -1
  729. package/packages/tools/lib/commands/conformance.d.ts +0 -36
  730. package/packages/tools/lib/commands/conformance.d.ts.map +0 -1
  731. package/packages/tools/lib/commands/conformance.js +0 -212
  732. package/packages/tools/lib/commands/conformance.js.map +0 -1
  733. package/packages/tools/lib/commands/roundtrip.d.ts +0 -6
  734. package/packages/tools/lib/commands/roundtrip.d.ts.map +0 -1
  735. package/packages/tools/lib/commands/roundtrip.js +0 -145
  736. package/packages/tools/lib/commands/roundtrip.js.map +0 -1
  737. package/packages/tools/lib/conformance/baseline.d.ts +0 -26
  738. package/packages/tools/lib/conformance/baseline.d.ts.map +0 -1
  739. package/packages/tools/lib/conformance/baseline.js +0 -170
  740. package/packages/tools/lib/conformance/baseline.js.map +0 -1
  741. package/packages/tools/lib/conformance/bnf.d.ts +0 -84
  742. package/packages/tools/lib/conformance/bnf.d.ts.map +0 -1
  743. package/packages/tools/lib/conformance/bnf.js +0 -166
  744. package/packages/tools/lib/conformance/bnf.js.map +0 -1
  745. package/packages/tools/lib/conformance/corpus.d.ts +0 -125
  746. package/packages/tools/lib/conformance/corpus.d.ts.map +0 -1
  747. package/packages/tools/lib/conformance/corpus.js +0 -190
  748. package/packages/tools/lib/conformance/corpus.js.map +0 -1
  749. package/packages/tools/lib/conformance/diff-xmi.d.ts +0 -118
  750. package/packages/tools/lib/conformance/diff-xmi.d.ts.map +0 -1
  751. package/packages/tools/lib/conformance/diff-xmi.js +0 -276
  752. package/packages/tools/lib/conformance/diff-xmi.js.map +0 -1
  753. package/packages/tools/lib/conformance/generated/syside-rules.d.ts +0 -10
  754. package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +0 -1
  755. package/packages/tools/lib/conformance/generated/syside-rules.js +0 -1142
  756. package/packages/tools/lib/conformance/generated/syside-rules.js.map +0 -1
  757. package/packages/tools/lib/conformance/index.d.ts +0 -7
  758. package/packages/tools/lib/conformance/index.d.ts.map +0 -1
  759. package/packages/tools/lib/conformance/index.js +0 -19
  760. package/packages/tools/lib/conformance/index.js.map +0 -1
  761. package/packages/tools/lib/conformance/run.d.ts +0 -117
  762. package/packages/tools/lib/conformance/run.d.ts.map +0 -1
  763. package/packages/tools/lib/conformance/run.js +0 -0
  764. package/packages/tools/lib/conformance/run.js.map +0 -1
  765. package/packages/tools/lib/conformance/xmi.d.ts +0 -45
  766. package/packages/tools/lib/conformance/xmi.d.ts.map +0 -1
  767. package/packages/tools/lib/conformance/xmi.js +0 -148
  768. package/packages/tools/lib/conformance/xmi.js.map +0 -1
  769. package/packages/tools/lib/language/generated/ast.d.ts +0 -3571
  770. package/packages/tools/lib/language/generated/ast.d.ts.map +0 -1
  771. package/packages/tools/lib/language/generated/ast.js +0 -2980
  772. package/packages/tools/lib/language/generated/ast.js.map +0 -1
  773. package/packages/tools/lib/language/generated/grammar.d.ts +0 -7
  774. package/packages/tools/lib/language/generated/grammar.d.ts.map +0 -1
  775. package/packages/tools/lib/language/generated/grammar.js +0 -10687
  776. package/packages/tools/lib/language/generated/grammar.js.map +0 -1
  777. package/packages/tools/lib/language/generated/module.d.ts +0 -14
  778. package/packages/tools/lib/language/generated/module.d.ts.map +0 -1
  779. package/packages/tools/lib/language/generated/module.js +0 -21
  780. package/packages/tools/lib/language/generated/module.js.map +0 -1
  781. package/packages/tools/lib/language/memo-sysml-module.d.ts +0 -24
  782. package/packages/tools/lib/language/memo-sysml-module.d.ts.map +0 -1
  783. package/packages/tools/lib/language/memo-sysml-module.js +0 -20
  784. package/packages/tools/lib/language/memo-sysml-module.js.map +0 -1
  785. package/packages/tools/lib/model/builder.d.ts +0 -27
  786. package/packages/tools/lib/model/builder.d.ts.map +0 -1
  787. package/packages/tools/lib/model/builder.js +0 -2112
  788. package/packages/tools/lib/model/builder.js.map +0 -1
  789. package/packages/tools/lib/model/package-registry.d.ts +0 -64
  790. package/packages/tools/lib/model/package-registry.d.ts.map +0 -1
  791. package/packages/tools/lib/model/package-registry.js +0 -184
  792. package/packages/tools/lib/model/package-registry.js.map +0 -1
  793. package/packages/tools/lib/model/parser-utils.d.ts +0 -65
  794. package/packages/tools/lib/model/parser-utils.d.ts.map +0 -1
  795. package/packages/tools/lib/model/parser-utils.js +0 -201
  796. package/packages/tools/lib/model/parser-utils.js.map +0 -1
  797. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +0 -3
  798. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +0 -1
  799. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +0 -97
  800. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +0 -1
  801. package/packages/tools/lib/sysmlc/index.d.ts +0 -2
  802. package/packages/tools/lib/sysmlc/index.d.ts.map +0 -1
  803. package/packages/tools/lib/sysmlc/index.js +0 -7
  804. package/packages/tools/lib/sysmlc/index.js.map +0 -1
  805. package/packages/tools/lib/sysmlc/server.d.ts +0 -29
  806. package/packages/tools/lib/sysmlc/server.d.ts.map +0 -1
  807. package/packages/tools/lib/sysmlc/server.js +0 -168
  808. package/packages/tools/lib/sysmlc/server.js.map +0 -1
  809. package/packages/tools/lib/toolchain/lowering.d.ts +0 -63
  810. package/packages/tools/lib/toolchain/lowering.d.ts.map +0 -1
  811. package/packages/tools/lib/toolchain/lowering.js +0 -100
  812. package/packages/tools/lib/toolchain/lowering.js.map +0 -1
  813. package/packages/tools/lib/toolchain/providers/internal.d.ts +0 -33
  814. package/packages/tools/lib/toolchain/providers/internal.d.ts.map +0 -1
  815. package/packages/tools/lib/toolchain/providers/internal.js +0 -286
  816. package/packages/tools/lib/toolchain/providers/internal.js.map +0 -1
  817. package/packages/tools/lib/toolchain/sysmlc-client.d.ts +0 -77
  818. package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +0 -1
  819. package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
  820. package/packages/tools/lib/toolchain/sysmlc-client.js.map +0 -1
  821. package/packages/tools/lib/validator/sysml-constraints.d.ts +0 -64
  822. package/packages/tools/lib/validator/sysml-constraints.d.ts.map +0 -1
  823. package/packages/tools/lib/validator/sysml-constraints.js +0 -251
  824. package/packages/tools/lib/validator/sysml-constraints.js.map +0 -1
  825. package/packages/tools/src/grammar/memo-sysml.langium +0 -1064
@@ -1,1064 +0,0 @@
1
- // =============================================================================
2
- // MEMO SysML v2 Grammar — Langium definition
3
- //
4
- // Covers the SysML v2 subset needed for MEMO systems engineering modeling:
5
- // package, part def, requirement def, action def, item def, port def,
6
- // interface def, connection def, attribute def, enum def,
7
- // viewpoint def, view def, import, specialization (:>),
8
- // typed connections, doc comments
9
- //
10
- // Behavior constructs (Phase 5):
11
- // action def with in/out/inout parameters, action usage (composite),
12
- // flow connection usage, succession usage, allocate usage, item def
13
- //
14
- // Design notes:
15
- // - DOC_COMMENT is a non-hidden terminal that captures `doc /* ... */`
16
- // as a single token, preventing the hidden ML_COMMENT from consuming it
17
- // - FeatureName allows 'part' keyword as identifier in end/connection contexts
18
- // (SysML v2 uses `end part[0..*]` in connection defs)
19
- // - QualifiedName is a data type rule returning string; cross-references
20
- // are resolved programmatically in the semantic model layer
21
- // =============================================================================
22
-
23
- grammar MemoSysML
24
-
25
- // ─── Entry point ─────────────────────────────────────────────────────────────
26
-
27
- entry Model:
28
- members+=NamespaceMember*;
29
-
30
- // The root namespace accepts definitions, not only packages. SysML v2 permits
31
- // members at the root of a file and SysIDE accepts `part def X;` standing alone,
32
- // so rejecting it here was a MEMO-only restriction: valid source failed to
33
- // parse, and the AST-based loaders then reported the file as contributing
34
- // nothing. MEMO's own content still nests everything in packages — the
35
- // portability gate requires that for qualified naming — but the grammar must
36
- // not reject source the compiler of record accepts.
37
- NamespaceMember:
38
- PackageDeclaration
39
- | ImportDeclaration
40
- | AliasDeclaration
41
- | DefinitionMember
42
- | UseCaseDeclaration
43
- | Dependency
44
- | DocComment;
45
-
46
- // ─── Package ─────────────────────────────────────────────────────────────────
47
-
48
- // Standard SysML v2: a package DECLARATION takes a single-identifier name.
49
- // Qualified names (`::`) are for references only; deep namespaces are expressed by
50
- // NESTING packages (`package memo { package arch { … } }`). The model builder
51
- // reconstructs the full FQN from the nesting (builder.ts: parentPackage::pkg.name).
52
- // `standard` comes from the normative `LibraryPackage` production
53
- // (`bnf/KerML-textual-bnf.kebnf:1446`), where it is the flag that marks a
54
- // library package as part of the standard library rather than a user one. Every
55
- // one of the 94 vendored normative library files opens with `standard library
56
- // package`, so without it the parser fails on line 1 of the entire corpus.
57
- PackageDeclaration:
58
- isStandard?='standard'? isLibrary?='library'? 'package' name=ID '{'
59
- members+=PackageMember*
60
- '}';
61
-
62
- // Flows and successions are legal package members, not only usage-body members:
63
- // a flow between two action usages declared side by side in a package has no
64
- // enclosing action to sit inside. SysIDE accepts them here, so the grammar does.
65
- PackageMember:
66
- PackageDeclaration
67
- | AliasDeclaration
68
- | ImportDeclaration
69
- | DefinitionMember
70
- | UsageMember
71
- | ItemUsage
72
- | AttributeMember
73
- | UseCaseDeclaration
74
- | FlowConnectionUsage
75
- | SuccessionUsage
76
- | AbstractConnectionUsage
77
- | ConnectionUsage
78
- | SatisfyRequirementUsage
79
- // Contributes AllocateUsage along with the thirteen other native
80
- // mechanisms. MEMO declares its actors, stakeholders and concerns as
81
- // PACKAGE members (`part usrClinician : User;`), so their native spellings
82
- // have to be legal in the same place or the migration could not be a
83
- // spelling change.
84
- | ArcadiaMember
85
- | Dependency
86
- | MetadataApplication
87
- | BindingUsage
88
- | DocComment;
89
-
90
- // `bind a = b;` — the native spelling of port delegation, where an enclosing
91
- // port and a nested part's port are the same feature. MEMO wrote these as
92
- // flows, which SysIDE rejects: a flow's source must be an output, and a
93
- // delegation runs `in` to `in`.
94
- BindingUsage:
95
- 'bind' source=ReferenceName '=' target=ReferenceName ';';
96
-
97
- // Namespace indirection used by the canonical memo::* facade. Each source file
98
- // owns a unique package for reliable SysIDE indexing; aliases reconstruct the
99
- // user-facing hierarchy without reopening packages across documents.
100
- AliasDeclaration:
101
- 'alias' name=AliasName 'for' target=QualifiedName ';';
102
-
103
- // UNRESTRICTED_NAME carries the facade segments SysIDE reserves as keywords
104
- // (`'analysis'`, `'verification'`), which is how SysML v2 spells them.
105
- AliasName returns string:
106
- ID | UNRESTRICTED_NAME | 'verification';
107
-
108
- // ─── Import ──────────────────────────────────────────────────────────────────
109
-
110
- ImportDeclaration:
111
- visibility=('private' | 'public')? 'import' path=ImportPath ';';
112
-
113
- // Separate rule to handle wildcard imports (e.g. `import MEMO_Ontology_Medical::*`)
114
- // without LL parser ambiguity on `::` lookahead in QualifiedName. `::**` is
115
- // SysML v2's recursive import (members, and members of members, all the way
116
- // down) — `public import subsystem::**;` re-exports parts nested in a part.
117
- ImportPath returns string:
118
- ID ('::' ID)* ('::' ('*' | '**'))?;
119
-
120
- // ─── Definitions ─────────────────────────────────────────────────────────────
121
-
122
- DefinitionMember:
123
- PartDefinition
124
- | RequirementDefinition
125
- | VerificationDefinition
126
- | StateDefinition
127
- | ActionDefinition
128
- | ItemDefinition
129
- | PortDefinition
130
- | InterfaceDefinition
131
- | ConnectionDefinition
132
- | AllocationDefinition
133
- | ConcernDefinition
134
- | AttributeDefinition
135
- | ConstraintDefinition
136
- | EnumDefinition
137
- | ViewpointDefinition
138
- | ViewDefinition
139
- | MetadataDefinition;
140
-
141
- // SysML v2 semantic-metadata definition — the standard, portable mechanism for
142
- // extending the ontology with domain semantics. Applied to elements via `@Name`.
143
- // The optional `<shortName>` is SysML v2's Identification short name, and for a
144
- // SemanticMetadata it is the KEYWORD the metadata introduces — `<derive>` in the
145
- // OMG's own `metadata def <derive> DerivedRequirementMetadata :> SemanticMetadata`
146
- // (Domain Libraries/Requirement Derivation/RequirementDerivation.sysml). Without
147
- // it a metadata def cannot say which word it defines, which is most of the point.
148
- //
149
- // The short name is lexed as ONE token rather than as `'<' ID '>'`, because the
150
- // word it introduces is almost always already a keyword — `<allocate>` and
151
- // `<derive>` both fail an ID match. A keyword is exactly what a metadata def
152
- // exists to introduce, so the production must not be restricted to non-keywords.
153
- MetadataDefinition:
154
- 'metadata' 'def' shortName=SHORT_NAME? name=ID specialization=Specialization?
155
- ('{' body+=DefinitionBodyMember* '}' | ';');
156
-
157
- // Metadata application: `@AnnotationType;` or `@AnnotationType { redefinitions }`
158
- // applies a metadata def to the enclosing element (standard SysML v2 `@` annotation).
159
- MetadataApplication:
160
- '@' type=QualifiedName ('{' body+=MetadataBodyMember* '}' | ';');
161
-
162
- // Inside a metadata body the `attribute` keyword is NOT accepted — SysIDE's
163
- // own expected-token list at that position offers `:>>` and `redefines` but
164
- // not `attribute`, because the members of a metadata usage are already
165
- // features of its definition. So the bare redefinition is the conforming
166
- // spelling here and `attribute :>> x = …` is the error, the reverse of every
167
- // other body in this grammar. Measured against `syside check`, which is the
168
- // compiler of record.
169
- MetadataBodyMember:
170
- MetadataFeatureMember | UsageBodyMember;
171
-
172
- MetadataFeatureMember:
173
- redefines?=('redefines' | ':>>') name=MemberName '=' value=AttributeValue ';';
174
-
175
- // `isVariation` is the second half of the normative `BasicDefinitionPrefix`
176
- // (`isAbstract ?= 'abstract' | isVariation ?= 'variation'`,
177
- // SysML-textual-bnf.kebnf:224). A variation definition is a CHOICE POINT: its
178
- // `variant` members are the alternatives, exactly one of which a configuration
179
- // picks. That is the construct ARCADIA configurations and situations need, and
180
- // the one AADL mode-conditioned configuration needs (plan §C4); MEMO could not
181
- // express either. It is declared on part / attribute / item, which is where a
182
- // choice point can occur in MEMO's content — not on every definition, because a
183
- // production nobody can reach is not coverage.
184
- PartDefinition:
185
- isAbstract?='abstract'? isVariation?='variation'? 'part' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
186
- ('{' body+=DefinitionBodyMember* '}' | ';');
187
-
188
- RequirementDefinition:
189
- isAbstract?='abstract'? 'requirement' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
190
- ('{' body+=DefinitionBodyMember* '}' | ';');
191
-
192
- // SysML v2 verification case definition (VerificationCases::VerificationCase).
193
- // A behaviour, so it may not specialize a part-based MEMO base.
194
- VerificationDefinition:
195
- isAbstract?='abstract'? 'verification' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
196
- ('{' body+=DefinitionBodyMember* '}' | ';');
197
-
198
- // SysML v2 state definition (States::StateAction) — a behaviour. MEMO uses it
199
- // for state machines and their mode states; transitions stay part-based.
200
- StateDefinition:
201
- isAbstract?='abstract'? 'state' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
202
- ('{' body+=DefinitionBodyMember* '}' | ';');
203
-
204
- ActionDefinition:
205
- isAbstract?='abstract'? behaviorKind=('action' | 'operator' | 'function') 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
206
- ('{' body+=ActionDefBodyMember* '}' | ';');
207
-
208
- ItemDefinition:
209
- isAbstract?='abstract'? isVariation?='variation'? 'item' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
210
- ('{' body+=DefinitionBodyMember* '}' | ';');
211
-
212
- PortDefinition:
213
- isAbstract?='abstract'? 'port' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
214
- ('{' body+=DefinitionBodyMember* '}' | ';');
215
-
216
- // Interface defs, like connection defs, may declare `end` features naming the
217
- // two sides of the interface (e.g. end providerPort / end consumerPort).
218
- InterfaceDefinition:
219
- isAbstract?='abstract'? 'interface' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
220
- ('{' body+=ConnectionBodyMember* '}' | ';');
221
-
222
- ConnectionDefinition:
223
- isAbstract?='abstract'? 'connection' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
224
- ('{' body+=ConnectionBodyMember* '}' | ';');
225
-
226
- // SysML v2 allocation definition (`AllocationDefinition = OccurrenceDefinitionPrefix
227
- // 'allocation' 'def' Definition`, SysML-textual-bnf.kebnf:792). An allocation IS a
228
- // connection — `Allocations::Allocation :> BinaryConnection` — so it takes the same
229
- // body as a connection def, and `allocation def X :> Allocations::Allocation` is
230
- // what lets MEMO's AllocatedTo / DeploysTo / BuildsInto root on the standard's
231
- // allocation base instead of standing beside it (plan B2).
232
- AllocationDefinition:
233
- isAbstract?='abstract'? 'allocation' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
234
- ('{' body+=ConnectionBodyMember* '}' | ';');
235
-
236
- // SysML v2 concern definition (`ConcernDefinition = OccurrenceDefinitionPrefix
237
- // 'concern' 'def' DefinitionDeclaration RequirementBody`, :1493). ISO 42010's
238
- // concern, which MEMO spells `part def Concern`. Its body is a requirement body,
239
- // so it may carry `subject`, `stakeholder`, and `frame` members. Those reach it
240
- // through DefinitionBodyMember rather than through a concern-only body rule —
241
- // the same choice the grammar already makes for `verify`, and for the same
242
- // reason: SysIDE is the compiler of record for where a member is legal, and a
243
- // per-construct body rule here would only duplicate that judgement less well.
244
- ConcernDefinition:
245
- isAbstract?='abstract'? 'concern' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
246
- ('{' body+=DefinitionBodyMember* '}' | ';');
247
-
248
- AttributeDefinition:
249
- isAbstract?='abstract'? isVariation?='variation'? 'attribute' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
250
- ('{' body+=DefinitionBodyMember* '}' | ';');
251
-
252
- ConstraintDefinition:
253
- isAbstract?='abstract'? 'constraint' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
254
- ('{' body+=DefinitionBodyMember* '}' | ';');
255
-
256
- // An enum body may carry doc comments between its literals. SysIDE accepts
257
- // them and MEMO did not, so a documented enumeration — which is the only place
258
- // the meaning of a literal can be written down — failed to parse. `literals`
259
- // keeps its name and its contents so every existing consumer is unaffected.
260
- EnumDefinition:
261
- 'enum' 'def' name=ID '{'
262
- (literals+=EnumLiteral | docs+=DocComment)*
263
- '}';
264
-
265
- ViewpointDefinition:
266
- isAbstract?='abstract'? 'viewpoint' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
267
- ('{' body+=DefinitionBodyMember* '}' | ';');
268
-
269
- ViewDefinition:
270
- isAbstract?='abstract'? 'view' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
271
- ('{' body+=DefinitionBodyMember* '}' | ';');
272
-
273
- // ─── Connection definition body ─────────────────────────────────────────────
274
-
275
- ConnectionBodyMember:
276
- EndDeclaration | FlowConnectionUsage | DefinitionBodyMember;
277
-
278
- // An end may redefine the inherited end of its supertype — in MEMO every
279
- // relation binds its two ends to Connections::BinaryConnection::source and
280
- // ::target, so the ends of a MEMO relation are readable as ordinary SysML
281
- // connection ends by any conforming tool.
282
- EndDeclaration:
283
- 'end' name=FeatureName (':' isConjugated?='~'? type=QualifiedName)? multiplicity=Multiplicity?
284
- (redefines?=(':>>' | 'redefines') redefinedEnd=QualifiedName)? ';';
285
-
286
- Multiplicity:
287
- '[' lower=INT '..' (upper=INT | unbounded?='*') ']'
288
- | '[' unbounded?='*' ']'
289
- | '[' exact=INT ']';
290
-
291
- // ─── Enum literal ────────────────────────────────────────────────────────────
292
-
293
- EnumLiteral:
294
- 'enum' name=EnumLiteralName ';';
295
-
296
- EnumLiteralName returns string:
297
- ID | UNRESTRICTED_NAME
298
- | 'in' | 'out' | 'inout' | 'part' | 'requirement' | 'action' | 'item' | 'port'
299
- | 'interface' | 'connection' | 'attribute' | 'constraint' | 'enum' | 'view' | 'viewpoint'
300
- | 'ref' | 'import' | 'package' | 'flow' | 'first' | 'allocate' | 'library' | 'private' | 'public' | 'state' | 'verification'
301
- | 'satisfy' | 'verify'
302
- | 'use' | 'fork' | 'join';
303
-
304
- // ─── Usages (instances) ─────────────────────────────────────────────────────
305
-
306
- UsageMember:
307
- PartUsage
308
- | MessageUsage
309
- | RequirementUsage
310
- | VerificationUsage
311
- | StateUsage
312
- | InterfaceUsage
313
- | ActionUsage
314
- | PortUsage
315
- | ViewUsage
316
- | ViewpointUsage;
317
-
318
- PartUsage:
319
- isVariation?='variation'? 'part' name=ID (':' type=QualifiedName multiplicity=Multiplicity?)?
320
- ('{' body+=UsageBodyMember* '}' | ';');
321
-
322
- MessageUsage:
323
- 'message' name=ID? 'of' itemType=QualifiedName 'from' source=FlowEnd 'to' target=FlowEnd
324
- ('{' body+=UsageBodyMember* '}' | ';');
325
-
326
- // SysML v2 `use case def` / `use case` share a single leading `use case` token
327
- // pair. Branching inside one rule keeps the def-vs-usage decision local instead
328
- // of forcing cross-alternative lookahead past the `case` keyword.
329
- UseCaseDeclaration:
330
- isAbstract?='abstract'? 'use' 'case'
331
- ( isDefinition?='def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
332
- ('{' body+=DefinitionBodyMember* '}' | ';')
333
- | name=ID (':' type=QualifiedName)?
334
- ('{' usageBody+=UsageBodyMember* '}' | ';')
335
- );
336
-
337
- // Item usage: standalone (`item x : T { … }`), directioned port payload
338
- // (`in item reading : T;` / `out item command : T;`), or a bound feature value.
339
- ItemUsage:
340
- direction=('in' | 'out' | 'inout')? 'item' name=MemberName preMultiplicity=Multiplicity?
341
- (':' type=QualifiedName multiplicity=Multiplicity?)?
342
- ('=' boundRef=QualifiedName)?
343
- ('{' body+=UsageBodyMember* '}' | ';');
344
-
345
- RequirementUsage:
346
- 'requirement' name=ID ':' type=QualifiedName
347
- ('{' body+=UsageBodyMember* '}' | ';');
348
-
349
- // SysML v2 verification case usage: `verification vc : SomeCase { … }`.
350
- VerificationUsage:
351
- 'verification' name=ID ':' type=QualifiedName
352
- ('{' body+=UsageBodyMember* '}' | ';');
353
-
354
- // SysML v2 state usage: `state modeIdle : ModeState { … }`.
355
- StateUsage:
356
- 'state' name=ID ':' type=QualifiedName
357
- ('{' body+=UsageBodyMember* '}' | ';');
358
-
359
- // SysML v2 interface usage, including the normative typed-connect form:
360
- // `interface fuel : FuelInterface connect tank.port to engine.port { … }`.
361
- InterfaceUsage:
362
- 'interface' name=ID (':' type=QualifiedName)?
363
- ( 'connect' source=ReferenceName 'to' target=ReferenceName
364
- ('{' body+=UsageBodyMember* '}' | ';')
365
- | ('{' body+=UsageBodyMember* '}' | ';')
366
- );
367
-
368
- // ActionUsage supports both typed (action name : Type;) and composite
369
- // (action name { nested-actions, flows, successions }) forms.
370
- ActionUsage:
371
- behaviorKind=('action' | 'operator' | 'function') name=ActionName (':' type=QualifiedName)?
372
- ('{' body+=ActionUsageBodyMember* '}' | ';');
373
-
374
- // Activity actions use their own concrete forms. Keep the payload and endpoint
375
- // references structural: they are semantic inputs for lowering, not display text.
376
- AcceptActionUsage:
377
- 'action' name=ActionName 'accept' payloadName=ID ':' payloadType=QualifiedName ';';
378
-
379
- // `then` on a body member is a succession from the member before it, so it is
380
- // captured rather than consumed — a discarded `then` leaves the node floating
381
- // with no incoming control flow.
382
- SendActionUsage:
383
- followsPrevious?='then'? 'action' name=ActionName 'send' receiver=FeatureReference 'to' target=ReferenceName ';';
384
-
385
- FeatureReference:
386
- segments+=ID ('.' segments+=ID)*;
387
-
388
- ActionName returns string:
389
- ID | 'accept' | 'send' | 'terminate';
390
-
391
- // SysML v2 terminate actions may be anonymous (`terminate;`, `then terminate;`)
392
- // or named (`action rejected terminate;`). A name is important in diagrams
393
- // with several distinct activity-final outcomes because it supplies the label
394
- // and a stable identity for each final node.
395
- TerminateUsage:
396
- {infer TerminateUsage} followsPrevious?='then'?
397
- (('action' name=ID)? 'terminate') ';';
398
-
399
- PortUsage:
400
- direction=('in' | 'out' | 'inout')? 'port' isConjugated?='~'? name=ID ':' type=QualifiedName
401
- ('{' body+=UsageBodyMember* '}' | ';');
402
-
403
- ViewUsage:
404
- 'view' name=ID (':' type=QualifiedName)?
405
- ('{' body+=ViewBodyMember* '}' | ';');
406
-
407
- // `ViewpointUsage = OccurrenceUsagePrefix 'viewpoint' ConstraintUsageDeclaration
408
- // RequirementBody` (SysML :1640). The definition form was here and the usage
409
- // form was not, so `viewpoint vpModelContent : MemoViewpoint { … }` could not
410
- // parse — and that is how the ontology's whole viewpoint catalog is written.
411
- // Same definition/usage pairing as ViewDefinition/ViewUsage above.
412
- ViewpointUsage:
413
- 'viewpoint' name=ID (':' type=QualifiedName)?
414
- ('{' body+=UsageBodyMember* '}' | ';');
415
-
416
- ViewBodyMember:
417
- UsageBodyMember | ExposeMember;
418
-
419
- // `expose subsystem::*[@SysML::PortUsage];` — a SysML v2 filter condition on
420
- // the exposed members. Only metaclass classification (`@Metaclass`) is read;
421
- // it is what selects a part's own ports without naming each one.
422
- ExposeMember:
423
- 'expose' path=ExposePath ('[' '@' filter=QualifiedName ']')? ';';
424
-
425
- ExposePath returns string:
426
- ID (('::' | '.') ID)* ('::' ('*' | '**'))?;
427
-
428
- // ─── Connection usage (typed relationship instances) ─────────────────────────
429
- // Syntax: connection : Type connect end1 ::> ref1 to end2 ::> ref2 ;
430
-
431
- // A connection usage may carry a name. Named connections get a stable
432
- // relationship ID that survives rebuilds, which authoring needs for
433
- // inspection, deletion, and deep links.
434
- ConnectionUsage:
435
- 'connection' name=ID? (':' type=QualifiedName)?
436
- ( 'connect' source=ConnectionEnd 'to' target=ConnectionEnd
437
- ('{' body+=UsageBodyMember* '}' | ';')
438
- | '{' body+=UsageBodyMember*
439
- 'connect' source=ConnectionEnd 'to' target=ConnectionEnd ';'
440
- '}'
441
- );
442
-
443
- // The end NAME is optional. `connect a to b` is the normative binary-connector
444
- // shorthand — SysIDE accepts it and, since the compiler of record wins, so must
445
- // this grammar. Requiring `endName ::>` here rejected every untyped `connect`,
446
- // which is the form a relation migrated to native `connect` now takes.
447
- ConnectionEnd:
448
- (endName=FeatureName '::>')? ref=ReferenceName;
449
-
450
- // The BASE FEATURE of a connection definition — `abstract connection derivations
451
- // : Derivation[*];` in the OMG's DerivationConnections. It is not a link; it is
452
- // the feature every usage of that definition subsets, and it is what a
453
- // SemanticMetadata's `baseType` has to point at. Without one, `baseType` has
454
- // nothing to name.
455
- //
456
- // The leading `abstract` is what keeps this out of ConnectionUsage's way: that
457
- // rule always continues to `connect` or `{`, this one always ends at `;`.
458
- AbstractConnectionUsage:
459
- isAbstract?='abstract' 'connection' name=ID ':' type=QualifiedName multiplicity=Multiplicity? ';';
460
-
461
- // ─── Behavior: Action definition body ───────────────────────────────────────
462
- // Action defs can have in/out/inout parameters plus regular body members
463
-
464
- ActionDefBodyMember:
465
- ActionParameterMember | TerminateUsage | ActionUsage | AcceptActionUsage | SendActionUsage | ControlNodeUsage | RequireConstraintMember | UsageBodyMember;
466
-
467
- ActionParameterMember:
468
- direction=('in' | 'out' | 'inout') name=ID ':' type=QualifiedName ';';
469
-
470
- // ─── Behavior: Action usage body ────────────────────────────────────────────
471
- // Composite actions contain nested actions, flow connections, successions
472
-
473
- // FlowConnectionUsage / SuccessionUsage / ConnectionUsage are contributed by
474
- // UsageBodyMember; listing them again here would make the alternatives ambiguous.
475
- ActionUsageBodyMember:
476
- ActionParameterMember | TerminateUsage | ActionUsage | AcceptActionUsage | SendActionUsage | ControlNodeUsage | UsageBodyMember;
477
-
478
- // ─── Behavior: Control nodes (fork / join) ──────────────────────────────────
479
- // SysML v2 activity control nodes. A `fork` splits one incoming control flow
480
- // into concurrent outgoing flows; a `join` synchronizes concurrent flows back
481
- // into a single flow. They carry no parameters — ordering and the branches
482
- // they split/merge are expressed by the surrounding succession usages that
483
- // reference the node by name.
484
- // fork parallelPrep;
485
- // first verify then parallelPrep;
486
- // first parallelPrep then prime;
487
- // first parallelPrep then selfTest;
488
- ControlNodeUsage:
489
- controlKind=('fork' | 'join' | 'decide' | 'merge') name=ID ';';
490
-
491
- // ─── Behavior: Flow connection usage ────────────────────────────────────────
492
- // Syntax: flow of ItemType from source.port to target.port ;
493
-
494
- // A flow usage may carry a NAME and a BODY, both of which this production used
495
- // to drop. The normative grammar is
496
- // `FlowUsage = OccurrenceUsagePrefix 'flow' FlowDeclaration DefinitionBody`
497
- // with `FlowDeclaration : UsageDeclaration ValuePart? ('of' …)`
498
- // (SysML-textual-bnf.kebnf:829, :837) — so a conforming flow takes a name from
499
- // its UsageDeclaration and owns attributes in its body like any other usage.
500
- //
501
- // Dropping them was a MEMO divergence, not a language limit, and it was
502
- // load-bearing: an anonymous, attribute-less flow can carry no `id`, hold no
503
- // latency budget, and be referred to by nothing, which is irreconcilable with
504
- // the identification core every MEMO element rests on. That is the whole reason
505
- // FunctionalExchange and ComponentExchange exist as part defs beside the flows
506
- // they stand in for.
507
- // `of <itemType>` is OPTIONAL, because it is optional in SysML v2. The pinned
508
- // corpus writes untyped flows throughout — `flow from focus.image to
509
- // shoot.image;` — and `syside check`, the compiler of record, accepts them
510
- // (measured 2026-08-12). Requiring the item type here did not reject such a
511
- // model: it failed to match the production, so the flow parsed to nothing and
512
- // was dropped without a diagnostic. A relationship that silently does not
513
- // exist is worse than one that fails loudly.
514
- // The two-end shorthand — `flow supplierPort.fuelSupply to
515
- // consumerPort.fuelSupply;` — drops `from` as well. The corpus uses it for
516
- // port-to-port wiring, where naming the ends twice adds nothing. It takes no
517
- // name and no item type: those forms all spell `from`, which is what keeps the
518
- // two branches distinguishable.
519
- FlowConnectionUsage:
520
- 'flow' (
521
- name=ID? ('of' itemType=QualifiedName)? 'from' source=FlowEnd
522
- | source=FlowEnd
523
- ) 'to' target=FlowEnd
524
- ('{' body+=UsageBodyMember* '}' | ';');
525
-
526
- FlowEnd:
527
- ref=DottedName;
528
-
529
- // Dot-separated qualified name for flow endpoints (e.g. receive.prescription)
530
- DottedName returns string:
531
- DottedNameSegment ('.' DottedNameSegment)*;
532
-
533
- DottedNameSegment returns string:
534
- ID | 'accept' | 'send' | 'terminate';
535
-
536
- // ─── Behavior: Succession usage ─────────────────────────────────────────────
537
- // Syntax: first start then action1 then action2 then done ;
538
-
539
- // KerML `SuccessionDeclaration` (:845) is
540
- // ( 'first' ConnectorEndMember 'then' ConnectorEndMember )?
541
- // — exactly ONE `then`. A chain is written as consecutive pairwise statements,
542
- // `first a then b; first b then c;`, which is how every succession in the
543
- // ontology and its examples is already written.
544
- //
545
- // This used to be `('then' …)+`, which accepted `first a then b then c;`. That
546
- // is not valid SysML and SysIDE — the compiler of record — rejects it, so the
547
- // permissive form let a model parse here and fail the gate that matters.
548
- SuccessionUsage:
549
- 'succession'? 'first' steps+=SuccessionStep 'then' steps+=SuccessionStep ';';
550
-
551
- SuccessionStep:
552
- ref=SuccessionRef ('if' guard=OrExpr)?;
553
-
554
- SuccessionRef returns string:
555
- 'start' | 'done' | ID;
556
-
557
- // ─── Behavior: Allocate usage ───────────────────────────────────────────────
558
- // Syntax: allocate actionUsage to partUsage ;
559
- //
560
- // The `allocation` prefix is the TYPED form — `AllocationUsage = 'allocation'
561
- // UsageDeclaration UsageBody` (SysML-textual-bnf.kebnf:794), written in the
562
- // corpus as
563
- //
564
- // allocation torqueGenAlloc : LogicalToPhysical allocate torqueGenerator to powerTrain;
565
- //
566
- // It is the same statement as bare `allocate` plus a name and an `allocation
567
- // def` to type it, which is what carries MEMO's per-allocation distinctions
568
- // (function allocation vs. deployment vs. build) without a private connection
569
- // def per case. Folded into this rule rather than added as a sibling, because
570
- // both forms end in the same `allocate … to …` and splitting them would make
571
- // the alternatives ambiguous.
572
- AllocateUsage:
573
- ('allocation' name=ID? (':' type=QualifiedName)?)?
574
- 'allocate' source=ReferenceName 'to' target=ReferenceName
575
- ('{' body+=UsageBodyMember* '}' | ';');
576
-
577
- // ─── Requirements: native satisfaction and verification ─────────────────────
578
- //
579
- // The two relations SysML v2 already provides for requirement traceability.
580
- // MEMO spells them today as the `SatisfiedBy` / `VerifiedBy` connection defs;
581
- // the language spells them as usages, and every conforming tool reads the
582
- // language spelling. Both parse, and the model builder projects both onto the
583
- // same trace edge, so a model may use either while the migration runs.
584
- //
585
- // `SatisfyRequirementUsage` (SysML-textual-bnf.kebnf:1470) declares the
586
- // assertion prefix as `'assert' ('not')?`. The normative training files write
587
- // the bare form — `satisfy vehicleSpecification by vehicle_design;`
588
- // ("32. Requirements/Requirement Satisfaction.sysml") — so the prefix is
589
- // optional here and `isNegated` records a negative satisfaction claim, which
590
- // is the property a `connection def` cannot express at all.
591
- //
592
- // The `by` part is optional in the normative grammar: inside a requirement
593
- // body the satisfying subject is inherited rather than restated.
594
- SatisfyRequirementUsage:
595
- (isAsserted?='assert' isNegated?='not'?)? 'satisfy' requirement=ReferenceName
596
- ('by' satisfyingFeature=ReferenceName)?
597
- ('{' body+=UsageBodyMember* '}' | ';');
598
-
599
- // `RequirementVerificationMember` (SysML-textual-bnf.kebnf:1551) is a member of
600
- // a requirement body — in practice the `objective` of a verification case:
601
- //
602
- // verification def VehicleMassTest {
603
- // objective { verify vehicleMassRequirement; }
604
- // }
605
- //
606
- // The verifying case is the enclosing element, not a written end, so the
607
- // builder takes it from the containment.
608
- RequirementVerificationMember:
609
- 'verify' requirement=ReferenceName
610
- ('{' body+=UsageBodyMember* '}' | ';');
611
-
612
- // ─── ARCADIA mechanisms the language already spells ─────────────────────────
613
- //
614
- // Fourteen keywords MEMO had no production for, each one a mechanism MEMO
615
- // spells privately as a `connection def` or a `part def` (plan §4). Every form
616
- // below is taken from the normative BNF and checked against the training files
617
- // that use it; none is a MEMO extension. Each has a builder path projecting the
618
- // native usage onto the SAME trace edge MEMO's connection produces, so both
619
- // spellings mean one thing while the migration runs.
620
-
621
- // `PerformActionUsage = OccurrenceUsagePrefix 'perform' PerformActionUsageDeclaration
622
- // ActionBody` (:948). One end is written, the other is the owner — the same
623
- // shape as `verify`, with the ends swapped: `verify` names its source and owns
624
- // its target, `perform` owns its source (the performer) and names its target.
625
- //
626
- // part actorPrescriber { perform oaPrescribe; }
627
- // part camera { perform action takePhoto references takePicture; }
628
- PerformActionUsage:
629
- 'perform' (isAction?='action' name=ID (':' type=QualifiedName)? ('references' performed=ReferenceName)?
630
- | performed=ReferenceName)
631
- ('{' body+=UsageBodyMember* '}' | ';');
632
-
633
- // `IncludeUseCaseUsage = OccurrenceUsagePrefix 'include' …` (:1572). A use case
634
- // includes a sub-case; MEMO spells it `IncludesStep` / `Includes`.
635
- IncludeUseCaseUsage:
636
- 'include' (isUseCase?='use' 'case' name=ID (':' type=QualifiedName)?
637
- | included=ReferenceName)
638
- ('{' body+=UsageBodyMember* '}' | ';');
639
-
640
- // `ExhibitStateUsage = OccurrenceUsagePrefix 'exhibit' …` (:1272). A component
641
- // exhibits a state or mode; MEMO spells it `ExhibitsMode`.
642
- ExhibitStateUsage:
643
- 'exhibit' (isState?='state' name=ID (':' type=QualifiedName)?
644
- | exhibited=ReferenceName)
645
- ('{' body+=UsageBodyMember* '}' | ';');
646
-
647
- // `SubjectUsage : ReferenceUsage = 'subject' UsageExtensionKeyword* Usage`
648
- // (:1423) and `ObjectiveMember … 'objective' ObjectiveRequirementUsage` (:1523).
649
- //
650
- // The pair is what the standard uses instead of a verification link to a
651
- // non-requirement: the verified thing becomes the case's SUBJECT and the
652
- // requirement its OBJECTIVE, as in "34. Verification":
653
- //
654
- // verification def VehicleMassTest {
655
- // subject testVehicle : Vehicle;
656
- // objective { verify vehicleMassRequirement; }
657
- // }
658
- //
659
- // That is what memo-native-requirement-relations decision 1 remodels 61 of 99
660
- // VerifiedBy links onto, and it is also what makes that training file parse.
661
- SubjectMember:
662
- // `redefines?` comes BEFORE the name, as in RefMember and AttributeMember.
663
- // Without it, `subject :>> supportingSystem = X;` — an unnamed usage that
664
- // redefines an inherited subject — cannot parse, because `name` was
665
- // mandatory. `Identification` (KerML :152) makes BOTH name parts optional,
666
- // so the unnamed redefining form is well-formed SysML and SysIDE accepts
667
- // it. Any UseCase specialization that binds the inherited
668
- // `subject supportingSystem` hits this.
669
- 'subject' (redefines?=(':>>' | 'redefines'))? name=MemberName (':' type=QualifiedName multiplicity=Multiplicity?)?
670
- (bindingOp=('=' | ':>' | ':>>')
671
- ('(' boundRefs+=ReferenceName (',' boundRefs+=ReferenceName)* ')'
672
- | boundRefs+=ReferenceName))?
673
- ('{' body+=UsageBodyMember* '}' | ';');
674
-
675
- ObjectiveMember:
676
- 'objective' name=ID? (':' type=QualifiedName)?
677
- ('{' body+=UsageBodyMember* '}' | ';');
678
-
679
- // `ActorUsage : PartUsage = 'actor' UsageExtensionKeyword* Usage` (:1454) and
680
- // `StakeholderUsage : PartUsage = 'stakeholder' …` (:1460). ARCADIA operational
681
- // analysis and ISO 42010; MEMO spells them `part def User` / `Actor` and
682
- // `part def Stakeholder`.
683
- ActorMember:
684
- 'actor' name=MemberName (':' type=QualifiedName multiplicity=Multiplicity?)?
685
- (bindingOp=('=' | ':>' | ':>>') boundRef=ReferenceName)?
686
- ('{' body+=UsageBodyMember* '}' | ';');
687
-
688
- StakeholderMember:
689
- 'stakeholder' name=MemberName (':' type=QualifiedName multiplicity=Multiplicity?)?
690
- (bindingOp=('=' | ':>' | ':>>') boundRef=ReferenceName)?
691
- ('{' body+=UsageBodyMember* '}' | ';');
692
-
693
- // `ConcernUsage = OccurrenceUsagePrefix 'concern' ConstraintUsageDeclaration
694
- // RequirementBody` (:1497) and `FramedConcernMember … 'frame' FramedConcernUsage`
695
- // (:1441). A viewpoint FRAMES a concern; MEMO spells that `FramesConcern` and
696
- // `HasConcern`.
697
- ConcernUsage:
698
- 'concern' name=ID (':' type=QualifiedName)?
699
- ('{' body+=UsageBodyMember* '}' | ';');
700
-
701
- FramedConcernMember:
702
- 'frame' (isConcern?='concern' name=ID (':' type=QualifiedName)?
703
- | framed=ReferenceName)
704
- ('{' body+=UsageBodyMember* '}' | ';');
705
-
706
- // `Dependency = ( PrefixMetadataAnnotation )* 'dependency' DependencyDeclaration
707
- // RelationshipBody` (:51), with `DependencyDeclaration = ( Identification 'from' )?
708
- // client ( ',' client )* 'to' supplier ( ',' supplier )*` (:56).
709
- //
710
- // THIS ONE CHANGES METACLASS. A dependency is a Relationship, not a Connection:
711
- // it has no ends to redefine, it takes n clients and n suppliers rather than a
712
- // source and a target, and it is annotated by a PREFIX metadata (`#refinement`)
713
- // rather than by a connection def's `metadata def`. So `Realizes` does not
714
- // become an allocation-shaped row — it becomes `#refinement dependency a to b;`,
715
- // and the registry and serializer both have to treat it differently.
716
- //
717
- // `Identification` may be empty, which is why `dependency from a to b;` and
718
- // `dependency Named from a to b;` are both the same alternative, and
719
- // `dependency a to b;` is the one without it.
720
- Dependency:
721
- (prefixMetadata+=PrefixMetadataAnnotation)*
722
- 'dependency' (name=ID? 'from')?
723
- clients+=ReferenceName (',' clients+=ReferenceName)*
724
- 'to' suppliers+=ReferenceName (',' suppliers+=ReferenceName)*
725
- ('{' body+=DocComment* '}' | ';');
726
-
727
- // `#Name` — the standard's prefix form of a metadata application, distinct from
728
- // the `@Name` postfix form MetadataApplication already covers. A dependency can
729
- // only be annotated this way, and `#refinement` (ModelingMetadata.sysml:132) is
730
- // the annotation that makes a dependency a refinement.
731
- PrefixMetadataAnnotation:
732
- '#' type=QualifiedName;
733
-
734
- // `TransitionUsage = 'transition' ( UsageDeclaration 'first' )? FeatureChainMember
735
- // … 'then' TransitionSuccessionMember ActionBody` (:1281). MEMO models this as
736
- // `part def Transition` with String pseudo-references; the language puts it
737
- // inside a `state def`, where source and target really are the states.
738
- //
739
- // The name is only writable with `first`, which is what disambiguates
740
- // `transition initial then off;` (no name, `initial` is the source) from
741
- // `transition off_to_starting first off … then starting;`.
742
- // The optional type comes from `UsageDeclaration = Identification
743
- // FeatureSpecializationPart?`, so `transition tStart : Transition first …` is
744
- // the normative spelling of a transition classified by a definition. MEMO needs
745
- // it: the builder resolves an element's kind from its written type and from
746
- // nothing else, so an untyped transition would have to be given the kind
747
- // `Transition` by a hardcoded name in TypeScript — which is the thing
748
- // [memo-tools-interprets-ontology-drives] forbids.
749
- TransitionUsage:
750
- 'transition' (name=ID (':' type=QualifiedName)? 'first')? source=ReferenceName
751
- ('accept' trigger=ReferenceName)?
752
- ('if' guard=OrExpr)?
753
- ('do' effect=ReferenceName)?
754
- 'then' target=ReferenceName
755
- ('{' body+=UsageBodyMember* '}' | ';');
756
-
757
- // `VariantUsageMember : VariantMembership = MemberPrefix 'variant'
758
- // VariantUsageElement` (:254). One alternative of a `variation` choice point —
759
- // either a nested usage (`variant part transmissionManual : TransmissionManual;`)
760
- // or a reference to an existing one (`variant manualTransmission;`).
761
- VariantMember:
762
- 'variant' (usageKind=('part' | 'attribute' | 'item' | 'action' | 'port' | 'ref'))? name=MemberName
763
- (':' type=QualifiedName multiplicity=Multiplicity?)?
764
- ('=' value=AttributeValue)?
765
- ('{' body+=UsageBodyMember* '}' | ';');
766
-
767
- // Element references may be package-qualified (`a::b`) or feature-qualified
768
- // (`action.step`). Both forms occur in standard SysML relationship ends.
769
- ReferenceName returns string:
770
- ID (('::' | '.') ID)*;
771
-
772
- // ─── Body members ────────────────────────────────────────────────────────────
773
-
774
- DefinitionBodyMember:
775
- AttributeMember | PartMember | PortUsage | ItemUsage | ViewUsage | ViewpointUsage | RefMember | FeatureMembershipMember | RequireConstraintMember | RequirementVerificationMember | ArcadiaMember | MetadataApplication | DocComment;
776
-
777
- // The fourteen native mechanisms, gathered once so both body rules stay
778
- // readable and neither can drift out of step with the other.
779
- ArcadiaMember:
780
- PerformActionUsage
781
- | IncludeUseCaseUsage
782
- | ExhibitStateUsage
783
- | SubjectMember
784
- | ObjectiveMember
785
- | ActorMember
786
- | StakeholderMember
787
- | ConcernUsage
788
- | FramedConcernMember
789
- | TransitionUsage
790
- | VariantMember
791
- | AllocateUsage;
792
-
793
- // ─── Constraint expression (KerML boolean subset — ADR-1-18) ─────────────────
794
- // Authored inside constraint def / requirement def bodies as:
795
- // require constraint { <boolean expr> }
796
- // assert constraint { <boolean expr> }
797
- // Precedence (loosest→tightest): or < and < cmp < add < mul < not < postfix(->) < primary.
798
-
799
- RequireConstraintMember:
800
- kind=('require' | 'assert')? 'constraint' '{' expression=OrExpr '}';
801
-
802
- OrExpr infers ConstraintExpr:
803
- AndExpr ({infer BinaryExpr.left=current} op='or' right=AndExpr)*;
804
-
805
- AndExpr infers ConstraintExpr:
806
- CmpExpr ({infer BinaryExpr.left=current} op='and' right=CmpExpr)*;
807
-
808
- CmpExpr infers ConstraintExpr:
809
- AddExpr ({infer BinaryExpr.left=current} op=('==' | '!=' | '>=' | '<=' | '>' | '<') right=AddExpr)?;
810
-
811
- AddExpr infers ConstraintExpr:
812
- MulExpr ({infer BinaryExpr.left=current} op=('+' | '-') right=MulExpr)*;
813
-
814
- MulExpr infers ConstraintExpr:
815
- UnaryExpr ({infer BinaryExpr.left=current} op=('*' | '/') right=UnaryExpr)*;
816
-
817
- UnaryExpr infers ConstraintExpr:
818
- {infer UnaryExpr} op='not' operand=UnaryExpr
819
- | PostfixExpr;
820
-
821
- PostfixExpr infers ConstraintExpr:
822
- PrimaryExpr ({infer CollectionOp.target=current} '->' op=ID '(' (argument=OrExpr)? ')')*;
823
-
824
- PrimaryExpr infers ConstraintExpr:
825
- {infer LiteralExpr} intValue=INT
826
- | {infer LiteralExpr} strValue=STRING
827
- | {infer LiteralExpr} boolValue=('true' | 'false')
828
- | {infer FeatureChain} segments+=ID ('.' segments+=ID)*
829
- | '(' OrExpr ')';
830
-
831
- // Standard SysML v2 requires a redefinition operator (`redefines` / `:>>`) to bind a
832
- // value — the bare `name = value;` shorthand is non-standard and is not accepted.
833
- // Use `attribute redefines name = value;` (the form the serializer emits).
834
- // StateUsage is a body member because a SysML v2 state machine OWNS its
835
- // substates — nesting is the containment. MEMO could not parse a nested state
836
- // while transitions were a part def wired to flat states by Composes edges;
837
- // it landed when that reinvention was retired. TransitionUsage is NOT listed
838
- // here: it already arrives through ArcadiaMember, and naming it twice makes
839
- // the alternation ambiguous.
840
- // `PackageDeclaration` is a legal usage-body member: SysIDE accepts
841
- // `part scrHome : UIElement { package grpHeader { part btnBack : UIElement; } }`
842
- // and the grammar rejected it. Grouping UI elements inside a screen is the case
843
- // that needed it — a package groups without asserting the part decomposition a
844
- // nested part would.
845
- UsageBodyMember:
846
- AttributeMember | PartMember | PortUsage | ItemUsage | RefMember | ViewUsage | ViewpointUsage | FlowConnectionUsage | MessageUsage | SuccessionUsage | ConnectionUsage | SatisfyRequirementUsage | RequirementVerificationMember | ArcadiaMember | Dependency | MetadataApplication | StateUsage | PackageDeclaration | DocComment;
847
-
848
- // ─── Attribute member ────────────────────────────────────────────────────────
849
- // Three forms:
850
- // attribute name : Type ; (type declaration)
851
- // attribute redefines name = value ; (value assignment / redefinition)
852
- // attribute redefines name { … } (structured value: nested redefinitions)
853
- //
854
- // The third form is how a value of an `attribute def` with several features is
855
- // assigned — you cannot write it with `=`, because the value is not a literal.
856
- // It is what SysIDE accepts for e.g. a RegionBounds:
857
- //
858
- // attribute :>> bounds { attribute :>> x = 0.1; attribute :>> width = 0.4; }
859
-
860
- // A fourth form is a TYPED attribute carrying a default:
861
- //
862
- // attribute id : String = "CR-MED-040";
863
- //
864
- // SysIDE accepts it and MEMO rejected it, which session 1 logged as a grammar
865
- // gap and section 18.2 deliverable 8 assigned to session 2. It stopped being
866
- // theoretical once rules and policies started declaring typed attributes with
867
- // defaults. SysIDE is the compiler of record, so the grammar follows it.
868
-
869
- // A fifth form is `default`, which supplies an overridable initial value where
870
- // a bare `=` BINDS one. The difference is not cosmetic: a bound value cannot be
871
- // redefined by a usage, so `= x` in a definition forbids every specialization
872
- // from disagreeing. Any attribute a subtype may legitimately override has to be
873
- // spelled `default`.
874
- AttributeMember:
875
- isVariation?='variation'? 'attribute' redefines?=('redefines' | ':>>')? name=MemberName
876
- (':' type=QualifiedName multiplicity=Multiplicity?
877
- (isDefault?='default'? '=' value=AttributeValue ';' | isDefault?='default' value=AttributeValue ';' | '{' body+=UsageBodyMember* '}' | ';')
878
- | isDefault?='default'? '=' value=AttributeValue ';'
879
- | isDefault?='default' value=AttributeValue ';'
880
- | '{' body+=UsageBodyMember* '}');
881
-
882
- AttributeValue:
883
- StringValue | RealValue | IntValue | BooleanValue | SetLiteral | EnumValue;
884
-
885
- StringValue:
886
- value=STRING;
887
-
888
- // Real (rational) literal, e.g. 20.0 — must precede IntValue so the lexer
889
- // prefers REAL over INT for the integral part.
890
- RealValue:
891
- value=REAL;
892
-
893
- IntValue:
894
- value=INT;
895
-
896
- BooleanValue:
897
- value=('true' | 'false');
898
-
899
- SetLiteral:
900
- ('{' elements+=SetElement (',' elements+=SetElement)* '}'
901
- | '(' elements+=SetElement (',' elements+=SetElement)* ')');
902
-
903
- SetElement:
904
- value=QualifiedName | stringValue=STRING;
905
-
906
- // Enum literal reference (e.g. SeverityLevel::Catastrophic), or a metaclass
907
- // cast. `x meta SysML::Usage` is the standard's MetadataAccessExpression: it
908
- // yields the metaobject of `x` as an instance of the named metaclass, and it is
909
- // how a SemanticMetadata binds its required `baseType`
910
- // (`:>> baseType = derivations meta SysML::Usage`). Folded into this rule
911
- // rather than added as a sibling alternative, because both start with a
912
- // QualifiedName and only the trailing `meta` tells them apart.
913
- // Also the bare feature-reference value (`ref :>> activeMode = a.b.c;`). A
914
- // nested state is reached by a dotted path, so a value that names one needs
915
- // the `.` tail; `::` alone only reaches package members, which is all MEMO
916
- // needed while every state sat flat in a package.
917
- EnumValue:
918
- enumRef=QualifiedName ('.' tail+=ID)* ('meta' metaclass=QualifiedName)?;
919
-
920
- // ─── Nested part member ──────────────────────────────────────────────────────
921
- // Four forms:
922
- // part subsystems : Subsystem[0..*]; (typed nested part)
923
- // part requirement = reqSingleMode; (feature value binding to a reference)
924
- // part protectedAsset :> therapyAsset; (subsetting an existing element)
925
- // part vpLogical :> viewpointDefinition = logicalArchitectureViewpoint;
926
- // (subsetting AND supplying a value)
927
- // The binding forms carry the source/target ends of semantic *Link instances,
928
- // which the model builder projects into navigable relationships.
929
- //
930
- // The fourth form is how a MULTI-VALUED feature takes several values. Repeating
931
- // `part :>> viewpointDefinition = x;` redefines the same feature each time and
932
- // SysIDE rejects it as shadowing, so each value has to subset the feature under
933
- // its own member name. `viewpointDefinition : Viewpoint[1..*]` is exactly that
934
- // case: a view governed by three viewpoints needs three members.
935
- //
936
- // SysIDE accepts this and the MEMO grammar did not, which is the wrong way
937
- // round — SysIDE is the compiler of record, so the grammar follows it.
938
- // `subsetValue` holds the value; `boundRef` keeps meaning the subsetted
939
- // feature, so every existing `:>` consumer is unaffected.
940
-
941
- PartMember:
942
- isVariation?='variation'? 'part'
943
- (bindingOp=':>>' name=MemberName ('=' boundRef=QualifiedName)?
944
- | name=MemberName
945
- (':' type=QualifiedName multiplicity=Multiplicity?)?
946
- (bindingOp=('=' | ':>') boundRef=QualifiedName ('=' subsetValue=QualifiedName)?)?)
947
- ('{' body+=UsageBodyMember* '}' | ';');
948
-
949
- // ─── Reference member ───────────────────────────────────────────────────────
950
- // Forms:
951
- // ref subject : TraceableElement[*]; (typed reference feature)
952
- // ref function : SystemFunction[0..1]; (keyword-named reference)
953
- // ref item exchangedItem : ExchangeItem; (item-typed reference payload)
954
- // ref :>> definition = syringeDef; (redefining a reference to a value)
955
- // ref vpLogical :> viewpointDefinition = logicalArchitectureViewpoint;
956
- // (subset a feature and bind its value)
957
- //
958
- // The last form is the native spelling used by document views. `ref` is a
959
- // reference feature, so it must support the same subsetting-and-value shape as
960
- // `part`; accepting only the latter made the in-browser parser reject SysIDE-
961
- // valid view declarations at `:>`.
962
-
963
- // The multiplicity does not need a type: `ref referenceElement[1];` is an
964
- // untyped reference with exactly one value, which is how the ontology spans
965
- // metaclasses it cannot name a common root for.
966
- RefMember:
967
- 'ref' (isItem?='item')? (redefines?=':>>')? name=FeatureName
968
- (':' isConjugated?='~'? type=QualifiedName)? multiplicity=Multiplicity?
969
- ( (bindingOp=':>' boundRef=QualifiedName ('=' subsetValue=QualifiedName)?)
970
- | ('=' value=AttributeValue)
971
- )?
972
- ';';
973
-
974
- // ─── Bare feature-membership member ──────────────────────────────────────────
975
- // SysML v2 lets a definition body subset or redefine an inherited feature
976
- // without restating its metaclass keyword. The standard library's own metadata
977
- // defs are written that way and cannot be written any other way:
978
- //
979
- // :> annotatedElement : SysML::ConnectionDefinition;
980
- // :>> baseType = derivations meta SysML::Usage;
981
- //
982
- // MEMO accepted only `attribute :>> name = value`, which covers redefinition of
983
- // an attribute and nothing else — not subsetting, and not a non-attribute
984
- // feature. `:>` is the form that matters here: `annotatedElement` is declared
985
- // once per accepted metaclass, so it must SUBSET rather than redefine, or the
986
- // second declaration would shadow the first.
987
-
988
- FeatureMembershipMember:
989
- (isRedefinition?=':>>' | ':>') feature=QualifiedName
990
- (':' type=QualifiedName)? multiplicity=Multiplicity?
991
- ('=' value=AttributeValue)? ';';
992
-
993
- // ─── Doc comment ─────────────────────────────────────────────────────────────
994
- // Captured as a single terminal to prevent hidden ML_COMMENT from consuming it
995
-
996
- DocComment:
997
- content=DOC_COMMENT;
998
-
999
- // ─── Specialization ──────────────────────────────────────────────────────────
1000
-
1001
- Specialization:
1002
- (':>' | 'specializes') superType=QualifiedName;
1003
-
1004
- // ─── Qualified name (data type rule → returns string) ────────────────────────
1005
-
1006
- QualifiedName returns string:
1007
- QualifiedNameSegment ('::' QualifiedNameTailSegment)*;
1008
-
1009
- QualifiedNameSegment returns string:
1010
- ID | 'library' | 'standard';
1011
-
1012
- // Non-first segments may be keywords so enum literals declared via
1013
- // EnumLiteralName (e.g. DirectionKind::in, UseErrorCategoryKind::action)
1014
- // are referenceable in attribute values. The first segment stays strict to
1015
- // avoid ambiguity with usage prefixes at statement start.
1016
- QualifiedNameTailSegment returns string:
1017
- QualifiedNameSegment
1018
- | UNRESTRICTED_NAME
1019
- | 'in' | 'out' | 'inout' | 'part' | 'requirement' | 'action' | 'item' | 'port'
1020
- | 'interface' | 'connection' | 'attribute' | 'constraint' | 'enum' | 'view' | 'viewpoint'
1021
- | 'ref' | 'import' | 'package' | 'flow' | 'first' | 'allocate' | 'private' | 'public' | 'state' | 'verification'
1022
- | 'use' | 'fork' | 'join';
1023
-
1024
- // Allow keywords as identifiers in member/feature contexts
1025
- // `standard` joins these for the same reason the others are here: making it a
1026
- // keyword for `standard library package` would otherwise stop it being a name,
1027
- // and MEMO's compliance ontology declares `attribute standard : String`.
1028
- MemberName returns string:
1029
- ID | 'requirement' | 'action' | 'item' | 'port' | 'interface' | 'connection'
1030
- | 'attribute' | 'constraint' | 'view' | 'viewpoint' | 'ref' | 'part' | 'state' | 'verification'
1031
- | 'standard';
1032
-
1033
- FeatureName returns string:
1034
- ID | 'part' | 'requirement' | 'action' | 'item' | 'port' | 'interface'
1035
- | 'connection' | 'flow' | 'view' | 'viewpoint' | 'attribute' | 'constraint'
1036
- | 'ref' | 'allocate' | 'end' | 'enum' | 'function' | 'operator' | 'state' | 'verification'
1037
- | 'standard';
1038
-
1039
- // ─── Hidden terminals (skipped by lexer) ─────────────────────────────────────
1040
-
1041
- hidden terminal WS: /\s+/;
1042
- hidden terminal SL_COMMENT: /\/\/[^\n\r]*/;
1043
- hidden terminal ML_COMMENT: /\/\*[\s\S]*?\*\//;
1044
-
1045
- // ─── Visible terminals ──────────────────────────────────────────────────────
1046
-
1047
- // DOC_COMMENT captures `doc /* ... */` as a single token.
1048
- // The `doc\s+` prefix ensures it only matches when preceded by the `doc` keyword,
1049
- // preventing conflict with ML_COMMENT for standalone /* ... */ comments.
1050
- terminal DOC_COMMENT: /doc\s+\/\*[\s\S]*?\*\//;
1051
-
1052
- // A bracketed short name, e.g. `<derive>`. Whole-token so the inner word may be
1053
- // a keyword. Cannot collide with the comparison operators: `<=` does not match
1054
- // (a letter must follow `<`), and `a<b>c` is not valid MEMO in any position.
1055
- terminal SHORT_NAME: /<[a-zA-Z_][a-zA-Z0-9_]*>/;
1056
- terminal ID: /[a-zA-Z_][a-zA-Z0-9_]*/;
1057
- // SysML v2 unrestricted name: any text in single quotes, used when a name would
1058
- // otherwise collide with a reserved word (e.g. enum 'verification';).
1059
- terminal UNRESTRICTED_NAME: /'(?:[^'\\]|\\.)*'/;
1060
- terminal STRING: /"(?:[^"\\]|\\.)*"/;
1061
- // REAL must be declared before INT so the longest-match lexer emits a single
1062
- // REAL token for `20.0` rather than INT `.` INT.
1063
- terminal REAL: /[0-9]+\.[0-9]+/;
1064
- terminal INT: /[0-9]+/;