@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
@@ -0,0 +1,646 @@
1
+ // ─── OpenSysML as a stage 1 compiler ─────────────────────────────────────────
2
+ //
3
+ // The lowering half of `toolchain.compiler: opensysml`
4
+ // (plans/memo-compiler-stages-opensysml.md). OpenSysML's service parses the
5
+ // project and the library roots its resolution selects as one model
6
+ // (`ParseSources`) and, only when that model is clean, converts it to the OMG
7
+ // API JSON (`Convert` of the model hash). This module turns that JSON into the
8
+ // same `memo-stage1/1` handoff every external compiler's provider writes, and stage 2
9
+ // builds the MEMO model from it (`stage2/build-from-api.ts`); MEMO's own
10
+ // parser is not involved.
11
+ //
12
+ // What the handoff's index needs and the JSON states:
13
+ // - each element's document: `sysx:sourceDocument` on the root it is owned
14
+ // under, reached through its owner;
15
+ // - its position: `sysx:sourceLine`/`sourceColumn`/`sourceEndLine`/
16
+ // `sourceEndColumn`, 1-based with byte columns and an exclusive end, from
17
+ // which the byte offsets are computed against the document's bytes;
18
+ // - a standard library element it references: the element written under its
19
+ // normative id, marked `isLibraryElement` and named by `qualifiedName`,
20
+ // which becomes a `standard` index entry and is not exported.
21
+ //
22
+ // The validator half is the existing OpenSysML validator, so `memo validate`
23
+ // runs the service once: stage 1's diagnostics are the validator's verdict.
24
+ // ─────────────────────────────────────────────────────────────────────────────
25
+ import { createHash } from 'node:crypto';
26
+ import { gunzipSync, gzipSync } from 'node:zlib';
27
+ import { closeSharedOpenSysMLConnection, sharedOpenSysMLConnection } from './opensysml-check.js';
28
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
29
+ import { join, relative, resolve, sep } from 'node:path';
30
+ import { modelToDTO } from '../../model/semantic.js';
31
+ import { findSysmlFiles } from '../../model/sysml-files.js';
32
+ import { SYSML_IR_VERSION } from '../../model/sysml-ir.js';
33
+ import { stage2FromHandoff } from '../../stage2/stage2-from-handoff.js';
34
+ import { ApiModel, STAGE1_FORMAT } from '../../stage2/api-model.js';
35
+ import { CONVERT_COMPACT, KEPT_DERIVED_PROPERTIES, parseApiJson } from './opensysml-compact.js';
36
+ import { SYSMLC_IR_VERSION } from '../protocol.js';
37
+ import { OPENSYSML_PROVIDER_ID, openSysMLSettingsKey, probeOpenSysML, toDiagnostic, } from './opensysml.js';
38
+ import { discoverProjectSources } from '../../model/native-project.js';
39
+ import { findShipped, readShipped, shippedLibraryKey, writeShipped } from '../shipped-library.js';
40
+ const refs = (value) => (Array.isArray(value) ? value : [value]).map(item => ref(item)).filter((id) => id !== undefined);
41
+ const ref = (value) => typeof value === 'object' && value !== null && typeof value['@id'] === 'string'
42
+ ? value['@id'] : undefined;
43
+ const OWNER_PROPERTIES = ['owner', 'owningRelatedElement', 'owningRelationship', 'owningMembership', 'owningNamespace'];
44
+ /**
45
+ * The `memo-stage1/1` handoff for OpenSysML's API JSON of a clean model: the
46
+ * elements grouped by the document each is owned under, and the index of what
47
+ * the standard JSON does not carry.
48
+ */
49
+ export function openSysMLHandoff(elements, options) {
50
+ const byId = new Map(elements.map(element => [element['@id'], element]));
51
+ const libraryRoots = options.libraryDirs.map(dir => resolve(dir));
52
+ const projectDir = resolve(options.projectDir);
53
+ const place = (path) => {
54
+ const absolute = resolve(projectDir, path);
55
+ const root = libraryRoots.find(dir => absolute === dir || absolute.startsWith(dir + sep));
56
+ return root
57
+ ? { file: relative(root, absolute), role: 'library', root }
58
+ : { file: relative(projectDir, absolute), role: 'project', root: projectDir };
59
+ };
60
+ const isLibraryReference = (element) => (element.isLibraryElement === true || element.isLibraryElement === 'true')
61
+ && OWNER_PROPERTIES.every(property => ref(element[property]) === undefined);
62
+ // The document an element is owned under, through its owners; a membership
63
+ // owning a document's root (the root namespace's) goes with that root.
64
+ const documentOf = new Map();
65
+ const findDocument = (element) => {
66
+ const trail = [];
67
+ let current = element;
68
+ let found;
69
+ while (current) {
70
+ const known = documentOf.get(current['@id']);
71
+ if (known !== undefined || documentOf.has(current['@id'])) {
72
+ found = known;
73
+ break;
74
+ }
75
+ trail.push(current['@id']);
76
+ const stated = current['sysx:sourceDocument'];
77
+ if (typeof stated === 'string') {
78
+ found = stated;
79
+ break;
80
+ }
81
+ const owner = OWNER_PROPERTIES.map(property => ref(current[property])).find(id => id !== undefined);
82
+ current = owner ? byId.get(owner) : undefined;
83
+ }
84
+ if (found === undefined) {
85
+ const member = byId.get(ref(element.memberElement) ?? '');
86
+ const memberDocument = member?.['sysx:sourceDocument'];
87
+ if (typeof memberDocument === 'string')
88
+ found = memberDocument;
89
+ }
90
+ for (const id of trail)
91
+ documentOf.set(id, found);
92
+ return found;
93
+ };
94
+ const index = {};
95
+ const grouped = new Map();
96
+ const unplaced = [];
97
+ for (const element of elements) {
98
+ if (isLibraryReference(element)) {
99
+ const qualifiedName = element.qualifiedName;
100
+ index[element['@id']] = {
101
+ role: 'standard',
102
+ ...(typeof qualifiedName === 'string' ? { qualifiedName } : {}),
103
+ };
104
+ continue;
105
+ }
106
+ // A model of one document states none: everything but the root namespace,
107
+ // which owns the document's roots and has no owner, is in that document.
108
+ const hasOwner = OWNER_PROPERTIES.some(property => ref(element[property]) !== undefined);
109
+ const document = options.soleDocument !== undefined
110
+ ? (hasOwner ? options.soleDocument : undefined)
111
+ : findDocument(element);
112
+ if (document === undefined) {
113
+ unplaced.push(element);
114
+ continue;
115
+ }
116
+ const list = grouped.get(document) ?? [];
117
+ list.push(element);
118
+ grouped.set(document, list);
119
+ }
120
+ // The model's root namespace owns every document's roots and names nothing.
121
+ // A handoff gives each document a root namespace of its own, owning that
122
+ // document's roots, which is how stage 2 tells the project's packages from
123
+ // the library's: each document gets a copy owning the memberships of its
124
+ // roots, in the order the model's namespace lists them.
125
+ for (const wrapper of unplaced) {
126
+ const memberships = refs(wrapper.ownedRelationship);
127
+ const byDocument = new Map();
128
+ for (const id of memberships) {
129
+ const membership = byId.get(id);
130
+ const document = !membership ? undefined : options.soleDocument ?? findDocument(membership);
131
+ if (document === undefined)
132
+ continue;
133
+ const list = byDocument.get(document) ?? [];
134
+ list.push(id);
135
+ byDocument.set(document, list);
136
+ }
137
+ if (byDocument.size === 0)
138
+ continue;
139
+ let n = 0;
140
+ for (const [document, owned] of byDocument) {
141
+ const id = `${wrapper['@id']}.${n++}`;
142
+ grouped.get(document)?.push({
143
+ '@type': wrapper['@type'],
144
+ '@id': id,
145
+ elementId: id,
146
+ ownedRelationship: owned.map(member => ({ '@id': member })),
147
+ });
148
+ }
149
+ }
150
+ const documents = [];
151
+ for (const [path, list] of grouped) {
152
+ const where = place(path);
153
+ documents.push({ file: where.file, role: where.role, root: where.root, elements: list });
154
+ const lineStarts = lineStartsOf(options.source(path));
155
+ for (const element of list) {
156
+ const entry = { file: where.file, role: where.role, root: where.root };
157
+ const qualifiedName = element.qualifiedName;
158
+ if (typeof qualifiedName === 'string')
159
+ entry.qualifiedName = qualifiedName;
160
+ const line = numberOf(element['sysx:sourceLine']);
161
+ const column = numberOf(element['sysx:sourceColumn']);
162
+ if (line !== undefined && column !== undefined) {
163
+ entry.line = line;
164
+ entry.column = column;
165
+ const endLine = numberOf(element['sysx:sourceEndLine']);
166
+ const endColumn = numberOf(element['sysx:sourceEndColumn']);
167
+ const start = byteOffset(lineStarts, line, column);
168
+ const end = endLine !== undefined && endColumn !== undefined ? byteOffset(lineStarts, endLine, endColumn) : undefined;
169
+ if (start !== undefined && end !== undefined && end >= start) {
170
+ entry.startByte = start;
171
+ entry.endByte = end;
172
+ }
173
+ }
174
+ index[element['@id']] = entry;
175
+ }
176
+ }
177
+ return {
178
+ format: STAGE1_FORMAT,
179
+ provider: OPENSYSML_PROVIDER_ID,
180
+ ...(options.providerVersion ? { providerVersion: options.providerVersion } : {}),
181
+ clean: true,
182
+ documents,
183
+ index,
184
+ };
185
+ }
186
+ function numberOf(value) {
187
+ if (typeof value === 'number' && Number.isFinite(value))
188
+ return value;
189
+ if (typeof value === 'string' && /^\d+$/.test(value))
190
+ return Number(value);
191
+ return undefined;
192
+ }
193
+ /** The byte offset each line starts at, for a document's bytes. */
194
+ function lineStartsOf(bytes) {
195
+ if (!bytes)
196
+ return undefined;
197
+ const starts = [0];
198
+ for (let i = 0; i < bytes.length; i++)
199
+ if (bytes[i] === 0x0a)
200
+ starts.push(i + 1);
201
+ return starts;
202
+ }
203
+ /** The byte offset of a 1-based line and byte column, or undefined outside the document. */
204
+ function byteOffset(lineStarts, line, column) {
205
+ if (!lineStarts || line < 1 || line > lineStarts.length || column < 1)
206
+ return undefined;
207
+ return lineStarts[line - 1] + column - 1;
208
+ }
209
+ /**
210
+ * Everything an OpenSysML stage 1 result depends on: how the service is
211
+ * reached and the content of every SysML file it loads. A result is reused
212
+ * only while this is unchanged; a service upgrade at the same path is not
213
+ * seen, which is what `memo compile --force` is for.
214
+ */
215
+ export function openSysMLInputKey(config, documents) {
216
+ const hash = createHash('sha256');
217
+ hash.update(`${OPENSYSML_PROVIDER_ID}\0${openSysMLSettingsKey(config)}\0`);
218
+ for (const file of [...new Set(documents)].sort()) {
219
+ hash.update(`\0${file}\0`);
220
+ hash.update(readFileSync(file));
221
+ }
222
+ return hash.digest('hex');
223
+ }
224
+ /**
225
+ * Stage 1 through OpenSysML, then stage 2. A stage 1 that reports an error
226
+ * yields no model: stage 2 never runs on a failed stage 1 (plan, Decisions).
227
+ */
228
+ export async function compileWithOpenSysML(options) {
229
+ const projectDir = resolve(options.projectDir);
230
+ const { libraryDirs, projectFiles, registries, filePackages } = options;
231
+ const libraryFiles = libraryDirs.flatMap(dir => findSysmlFiles(dir)).map(file => resolve(file));
232
+ const documents = [...new Set([...libraryFiles, ...[...projectFiles].map(file => resolve(projectDir, file))])];
233
+ const key = openSysMLInputKey(options.config, documents);
234
+ const handoffOptions = openSysMLHandoffOptions(projectDir, libraryDirs, documents);
235
+ let handoff;
236
+ let reused = false;
237
+ if (options.cacheDir && !options.force) {
238
+ handoff = readStoredStage1(options.cacheDir, key, handoffOptions);
239
+ reused = Boolean(handoff);
240
+ }
241
+ if (!handoff) {
242
+ const run = await runStage1(options.config, projectDir, libraryDirs, documents, libraryFiles, options.cacheDir);
243
+ handoff = run.handoff;
244
+ if (options.cacheDir)
245
+ storeStage1(options.cacheDir, key, run);
246
+ }
247
+ const diagnostics = handoff.diagnostics ?? [];
248
+ if (!handoff.clean)
249
+ return { accepted: false, diagnostics, providerVersion: handoff.providerVersion, cached: reused };
250
+ const api = new ApiModel(handoff);
251
+ // The ontology is the handoff's, not MEMO's parse of it.
252
+ const stage2 = stage2FromHandoff(api, {
253
+ config: options.config, projectDir, projectFiles, resolveProject: options.resolveProject, provenance: options.provenance, registries, filePackages,
254
+ });
255
+ return { accepted: true, diagnostics, providerVersion: handoff.providerVersion, ...stage2, api, cached: reused };
256
+ }
257
+ /** How a handoff is built from the service's conversion of these documents. */
258
+ function openSysMLHandoffOptions(projectDir, libraryDirs, documents) {
259
+ return {
260
+ projectDir, libraryDirs,
261
+ source: (path) => (existsSync(path) ? readFileSync(path) : undefined),
262
+ ...(documents.length === 1 ? { soleDocument: documents[0] } : {}),
263
+ };
264
+ }
265
+ const sessions = new Map();
266
+ /** What the last compile that reached the service converted: of the project's documents, how many. */
267
+ export const openSysMLLastConversion = { converted: 0, of: 0, incremental: false };
268
+ const sessionKeyOf = (config, projectDir) => `${projectDir}\0${openSysMLSettingsKey(config)}`;
269
+ /** Drop what this process remembers of a project's compile (tests, and a service that failed). */
270
+ export function forgetOpenSysMLSession() {
271
+ sessions.clear();
272
+ }
273
+ const STORED = `${OPENSYSML_PROVIDER_ID}.stage1.json`;
274
+ const CONTENT = `${OPENSYSML_PROVIDER_ID}.api.json.gz`;
275
+ const KEY = `${OPENSYSML_PROVIDER_ID}.json.key`;
276
+ /** The directory of the per-document pieces. */
277
+ const PIECES = `${OPENSYSML_PROVIDER_ID}-documents`;
278
+ const STANDARD = '_standard.json.gz';
279
+ const pieceFileOf = (path) => `${createHash('sha1').update(path).digest('hex').slice(0, 20)}.json.gz`;
280
+ /**
281
+ * The stage 1 store's data files are gzipped at the fastest level: the JSON of
282
+ * a large project is mostly repeated ids and keys, so a file is a fraction of
283
+ * its size for a few tens of milliseconds, and the store is written and read
284
+ * far more often than it is looked at.
285
+ */
286
+ const writePacked = (file, text) => writeFileSync(file, gzipSync(text, { level: 1 }));
287
+ const readPacked = (file) => gunzipSync(readFileSync(file)).toString('utf8');
288
+ /** Write the pieces a compile converted, drop the files of documents that are gone, and the standard entries when they grew. */
289
+ function storePieces(cacheDir, run) {
290
+ const dir = join(cacheDir, PIECES);
291
+ mkdirSync(dir, { recursive: true });
292
+ const keep = new Set(run.stored.pieces?.map(piece => piece.file));
293
+ keep.add(STANDARD);
294
+ for (const name of readdirSync(dir))
295
+ if (!keep.has(name))
296
+ rmSync(join(dir, name), { force: true });
297
+ for (const [path, piece] of run.pieces ?? []) {
298
+ const file = join(dir, pieceFileOf(path));
299
+ if (run.written === undefined || run.written.has(path) || !existsSync(file))
300
+ writePacked(file, JSON.stringify(piece));
301
+ }
302
+ const standard = join(dir, STANDARD);
303
+ // A conversion only adds to the standard entries, so a file with as many is the same.
304
+ const count = Object.keys(run.standard ?? {}).length;
305
+ if (run.written === undefined || !existsSync(standard) || JSON.parse(readPacked(standard)).length !== count) {
306
+ writePacked(standard, JSON.stringify(Object.entries(run.standard ?? {})));
307
+ }
308
+ }
309
+ function libraryFileOf(cacheDir, libraryKey) {
310
+ return join(cacheDir, `${OPENSYSML_PROVIDER_ID}-library-${libraryKey.slice(0, 16)}.json.gz`);
311
+ }
312
+ function storeStage1(cacheDir, key, run) {
313
+ mkdirSync(cacheDir, { recursive: true });
314
+ // Tool output, never authored content: the directory ignores
315
+ // itself, so no project has to know to add it to its .gitignore.
316
+ const ignore = join(cacheDir, '.gitignore');
317
+ if (!existsSync(ignore))
318
+ writeFileSync(ignore, '*\n');
319
+ // The handoff an earlier version stored whole, which nothing reads now.
320
+ rmSync(join(cacheDir, `${OPENSYSML_PROVIDER_ID}.json`), { force: true });
321
+ rmSync(join(cacheDir, KEY), { force: true });
322
+ // The whole conversion an earlier version stored unpacked.
323
+ rmSync(join(cacheDir, `${OPENSYSML_PROVIDER_ID}.api.json`), { force: true });
324
+ if (run.content !== undefined)
325
+ writePacked(join(cacheDir, CONTENT), run.content);
326
+ else
327
+ rmSync(join(cacheDir, CONTENT), { force: true });
328
+ if (run.pieces)
329
+ storePieces(cacheDir, run);
330
+ else if (run.stored.clean)
331
+ rmSync(join(cacheDir, PIECES), { recursive: true, force: true });
332
+ writeFileSync(join(cacheDir, STORED), JSON.stringify(run.stored));
333
+ // Written last: a key on disk means everything it keys was written.
334
+ writeFileSync(join(cacheDir, KEY), key);
335
+ }
336
+ /** The stage 1 a compile stored under key, rebuilt; undefined when anything it needs is missing. */
337
+ function readStoredStage1(cacheDir, key, options) {
338
+ const keyFile = join(cacheDir, KEY);
339
+ if (!existsSync(keyFile) || readFileSync(keyFile, 'utf8') !== key || !existsSync(join(cacheDir, STORED)))
340
+ return undefined;
341
+ const stored = JSON.parse(readFileSync(join(cacheDir, STORED), 'utf8'));
342
+ if (!stored.clean) {
343
+ return { format: STAGE1_FORMAT, provider: OPENSYSML_PROVIDER_ID, providerVersion: stored.providerVersion, clean: false, diagnostics: stored.diagnostics };
344
+ }
345
+ let library;
346
+ if (stored.converted === 'documents') {
347
+ library = stored.libraryKey ? libraryHandoffs.get(stored.libraryKey) : undefined;
348
+ const file = stored.libraryKey ? libraryFileOf(cacheDir, stored.libraryKey) : undefined;
349
+ if (!library && file && existsSync(file))
350
+ library = JSON.parse(readPacked(file));
351
+ if (!library)
352
+ return undefined;
353
+ libraryHandoffs.set(stored.libraryKey, library);
354
+ const dir = join(cacheDir, PIECES);
355
+ if (!existsSync(join(dir, STANDARD)))
356
+ return undefined;
357
+ const pieces = new Map();
358
+ for (const { path, file } of stored.pieces ?? []) {
359
+ if (!existsSync(join(dir, file)))
360
+ return undefined;
361
+ pieces.set(path, JSON.parse(readPacked(join(dir, file))));
362
+ }
363
+ const standard = Object.fromEntries(JSON.parse(readPacked(join(dir, STANDARD))));
364
+ return { ...overLibrary(library, projectOf(pieces, standard, stored.providerVersion)), diagnostics: stored.diagnostics };
365
+ }
366
+ if (stored.converted !== 'whole' || !existsSync(join(cacheDir, CONTENT)))
367
+ return undefined;
368
+ const elements = parseApiJson(readPacked(join(cacheDir, CONTENT)));
369
+ return { ...openSysMLHandoff(elements, { ...options, providerVersion: stored.providerVersion }), diagnostics: stored.diagnostics };
370
+ }
371
+ /** The project's handoff from its documents' pieces. */
372
+ function projectOf(pieces, standard, providerVersion) {
373
+ const index = { ...standard };
374
+ const documents = [];
375
+ for (const piece of pieces.values()) {
376
+ documents.push(piece.document);
377
+ Object.assign(index, piece.index);
378
+ }
379
+ return { format: STAGE1_FORMAT, provider: OPENSYSML_PROVIDER_ID, ...(providerVersion ? { providerVersion } : {}), clean: true, documents, index };
380
+ }
381
+ /** The project's handoff over the libraries': their documents and indexes together. */
382
+ function overLibrary(library, project) {
383
+ return {
384
+ ...project,
385
+ documents: [...(library.documents ?? []), ...(project.documents ?? [])],
386
+ index: { ...library.index, ...project.index },
387
+ };
388
+ }
389
+ /** The capability that limits a conversion to named documents. */
390
+ const CONVERT_DOCUMENTS = 'convert_documents';
391
+ /** The capability that answers which documents an edit reached, against a previous model. */
392
+ const PARSE_SOURCES_AFFECTED = 'parse_sources_affected';
393
+ /**
394
+ * The libraries' handoffs of this process, by what they depend on: the
395
+ * settings that reach the service and the content of every library file. A
396
+ * session pays for converting the libraries once.
397
+ */
398
+ const libraryHandoffs = new Map();
399
+ function libraryKeyOf(config, libraryFiles) {
400
+ const hash = createHash('sha256');
401
+ hash.update(`${OPENSYSML_PROVIDER_ID}-library\0${openSysMLSettingsKey(config)}\0`);
402
+ for (const file of [...new Set(libraryFiles)].sort()) {
403
+ hash.update(`\0${file}\0`);
404
+ hash.update(readFileSync(file));
405
+ }
406
+ return hash.digest('hex');
407
+ }
408
+ /** What a shipped export of the libraries is keyed by, besides their content. */
409
+ function shippedKeyOf(serviceVersion, libraryDirs) {
410
+ return shippedLibraryKey(OPENSYSML_PROVIDER_ID, `${serviceVersion ?? 'unknown'}\0qualified`, libraryDirs.map(dir => ({ dir, files: findSysmlFiles(dir) })));
411
+ }
412
+ /**
413
+ * Convert the library set once and write it as the shipped file a package
414
+ * carries (`memo ship-library`): the handoff `runStage1` would keep for it.
415
+ */
416
+ export async function shipOpenSysMLLibrary(config, libraryDirs, outDir) {
417
+ const files = [...new Set(libraryDirs.flatMap(dir => findSysmlFiles(dir)).map(file => resolve(file)))];
418
+ const connection = await sharedOpenSysMLConnection(config);
419
+ try {
420
+ const version = connection.info?.version;
421
+ const parsed = await connection.rpc.parseSources({ documents: files.map(file => ({ source: { case: 'filePath', value: file } })) });
422
+ const errors = [...parsed.diagnostics.map(d => toDiagnostic(d, version)), ...(parsed.error ? [{ message: parsed.error, severity: 'error' }] : [])]
423
+ .filter(d => d.severity === 'error');
424
+ if (errors.length > 0) {
425
+ throw new Error(`OpenSysML did not accept the libraries, so there is nothing to ship:\n${errors.map(d => d.message).join('\n')}`);
426
+ }
427
+ const converted = await connection.rpc.convert({ source: { case: 'modelHash', value: parsed.modelHash }, toFormat: 'api-json' });
428
+ if (converted.error)
429
+ throw new Error(`OpenSysML could not convert the libraries: ${converted.error}`);
430
+ const handoff = openSysMLHandoff(JSON.parse(converted.content), {
431
+ projectDir: resolve(libraryDirs[0] ?? '.'), libraryDirs, providerVersion: version,
432
+ source: path => (existsSync(path) ? readFileSync(path) : undefined),
433
+ });
434
+ return [writeShipped(outDir, OPENSYSML_PROVIDER_ID, shippedKeyOf(version, libraryDirs), JSON.stringify(handoff), libraryDirs)];
435
+ }
436
+ catch (error) {
437
+ closeSharedOpenSysMLConnection();
438
+ throw error;
439
+ }
440
+ }
441
+ /** Parse the model in the service and, when it is clean, convert it to the handoff. */
442
+ async function runStage1(config, projectDir, libraryDirs, documents, libraryFiles = [], cacheDir) {
443
+ // The session's service: a rebuild in `memo dev` does not start another,
444
+ // and the service's parse cache serves the documents that did not change.
445
+ const connection = await sharedOpenSysMLConnection(config);
446
+ try {
447
+ const version = connection.info?.version;
448
+ // Converting only what an edit reached needs both capabilities, and the
449
+ // libraries' handoff being the one the last compile built over.
450
+ const byDocument = Boolean(connection.info?.has?.(CONVERT_DOCUMENTS)) && libraryFiles.length > 0;
451
+ const libraryKey = byDocument ? libraryKeyOf(config, libraryFiles) : undefined;
452
+ const sessionKey = sessionKeyOf(config, projectDir);
453
+ let session = sessions.get(sessionKey);
454
+ if (session && (!byDocument || session.libraryKey !== libraryKey || documents.length === 1))
455
+ session = undefined;
456
+ const asking = session !== undefined && Boolean(connection.info?.has?.(PARSE_SOURCES_AFFECTED));
457
+ const parsed = await connection.rpc.parseSources({
458
+ documents: documents.map(file => ({ source: { case: 'filePath', value: file } })),
459
+ ...(asking ? { baseModelHash: session.modelHash } : {}),
460
+ });
461
+ const diagnostics = parsed.diagnostics.map(d => toDiagnostic(d, version));
462
+ if (parsed.error) {
463
+ diagnostics.push({ domain: 'sysml', provider: OPENSYSML_PROVIDER_ID, providerVersion: version, severity: 'error', message: parsed.error });
464
+ }
465
+ const failed = () => ({
466
+ handoff: { format: STAGE1_FORMAT, provider: OPENSYSML_PROVIDER_ID, providerVersion: version, clean: false, diagnostics },
467
+ stored: { providerVersion: version, clean: false, diagnostics },
468
+ });
469
+ if (diagnostics.some(d => d.severity === 'error'))
470
+ return failed();
471
+ const handoffOptions = { ...openSysMLHandoffOptions(projectDir, libraryDirs, documents), providerVersion: version };
472
+ // The conversion's text as the service wrote it, kept for the stage 1 store.
473
+ let content;
474
+ // The compact document would be far fewer bytes to read, but OpenSysML
475
+ // 0.10.0 writes a LiteralString's `value` as `{}` in it for a project
476
+ // that converts whole (measured 2026-10-11: `attribute a = "x";` in a
477
+ // one-file project; the same conversion without `compact` is right), so
478
+ // the binding's name reads "[object Object]". Request it again once a
479
+ // release writes the value; the reader and the capability check stay.
480
+ const compact = false && Boolean(connection.info?.has?.(CONVERT_COMPACT));
481
+ const convert = async (named) => {
482
+ const converted = await connection.rpc.convert({
483
+ source: { case: 'modelHash', value: parsed.modelHash }, toFormat: 'api-json',
484
+ ...(named ? { documents: named } : {}),
485
+ ...(compact ? { compact: true, omitDerived: true, keepDerived: [...KEPT_DERIVED_PROPERTIES] } : {}),
486
+ });
487
+ if (converted.error) {
488
+ diagnostics.push(...converted.diagnostics.map(d => toDiagnostic(d, version)));
489
+ diagnostics.push({
490
+ domain: 'sysml', provider: OPENSYSML_PROVIDER_ID, providerVersion: version, severity: 'error',
491
+ message: `OpenSysML could not convert the model: ${converted.error}`,
492
+ });
493
+ return undefined;
494
+ }
495
+ content = converted.content;
496
+ return parseApiJson(converted.content);
497
+ };
498
+ if (!connection.info?.has?.(CONVERT_DOCUMENTS) || libraryFiles.length === 0) {
499
+ const elements = await convert();
500
+ if (!elements)
501
+ return failed();
502
+ return {
503
+ handoff: { ...openSysMLHandoff(elements, handoffOptions), diagnostics },
504
+ stored: { providerVersion: version, clean: true, diagnostics, converted: 'whole' },
505
+ content,
506
+ };
507
+ }
508
+ // The libraries are converted once per library content; each compile
509
+ // converts the project's documents the edit reached, and the libraries'
510
+ // elements they reference keep the ids those were written under.
511
+ let library = libraryHandoffs.get(libraryKey);
512
+ const stored = cacheDir ? libraryFileOf(cacheDir, libraryKey) : undefined;
513
+ if (!library && stored && existsSync(stored))
514
+ library = JSON.parse(readPacked(stored));
515
+ if (!library) {
516
+ // The package that carries the libraries may carry their export.
517
+ const shipped = findShipped(OPENSYSML_PROVIDER_ID, shippedKeyOf(version, libraryDirs), libraryDirs);
518
+ if (shipped)
519
+ library = JSON.parse(readShipped(shipped, libraryDirs));
520
+ }
521
+ if (!library) {
522
+ const elements = await convert([...new Set(libraryFiles)]);
523
+ if (!elements)
524
+ return failed();
525
+ library = openSysMLHandoff(elements, handoffOptions);
526
+ if (stored && cacheDir) {
527
+ mkdirSync(cacheDir, { recursive: true });
528
+ const prefix = `${OPENSYSML_PROVIDER_ID}-library-`;
529
+ for (const name of readdirSync(cacheDir))
530
+ if (name.startsWith(prefix))
531
+ rmSync(join(cacheDir, name), { force: true });
532
+ writePacked(stored, JSON.stringify(library));
533
+ }
534
+ }
535
+ libraryHandoffs.set(libraryKey, library);
536
+ const libraryPaths = new Set(libraryFiles);
537
+ // An empty list would write every document: a project with none of its own converts nothing.
538
+ const own = documents.filter(file => !libraryPaths.has(file));
539
+ // The documents the service says the edit reached, and any it holds no piece of.
540
+ // A library document among them means the libraries' handoff is not the base's.
541
+ const reached = asking && parsed.affected ? new Set(parsed.affected.map(name => resolve(projectDir, name))) : undefined;
542
+ if (session && reached && [...reached].some(file => libraryPaths.has(file)))
543
+ session = undefined;
544
+ const previous = session && reached ? session : undefined;
545
+ const toConvert = own.filter(file => !previous || reached.has(file) || !previous.pieces.has(file));
546
+ Object.assign(openSysMLLastConversion, { converted: toConvert.length, of: own.length, incremental: previous !== undefined });
547
+ const pieces = new Map();
548
+ const written = new Map();
549
+ const standard = { ...(previous?.standard ?? {}) };
550
+ if (toConvert.length > 0) {
551
+ const projectElements = await convert(toConvert);
552
+ if (!projectElements)
553
+ return failed();
554
+ const converted = openSysMLHandoff(projectElements, handoffOptions);
555
+ for (const [id, entry] of Object.entries(converted.index ?? {}))
556
+ if (entry.role === 'standard')
557
+ standard[id] = entry;
558
+ for (const document of converted.documents ?? []) {
559
+ const index = {};
560
+ for (const element of document.elements) {
561
+ const entry = converted.index?.[element['@id']];
562
+ if (entry)
563
+ index[element['@id']] = entry;
564
+ }
565
+ written.set(resolve(document.root ?? projectDir, document.file), { document, index });
566
+ }
567
+ }
568
+ for (const file of own) {
569
+ const piece = written.get(file) ?? previous?.pieces.get(file);
570
+ if (piece)
571
+ pieces.set(file, piece);
572
+ }
573
+ content = undefined;
574
+ sessions.set(sessionKey, { libraryKey: libraryKey, modelHash: parsed.modelHash, pieces, standard });
575
+ return {
576
+ handoff: { ...overLibrary(library, projectOf(pieces, standard, version)), diagnostics },
577
+ stored: {
578
+ providerVersion: version, clean: true, diagnostics, converted: 'documents', libraryKey,
579
+ pieces: [...pieces.keys()].map(path => ({ path, file: pieceFileOf(path) })),
580
+ },
581
+ pieces, written: previous ? written : undefined, standard,
582
+ };
583
+ }
584
+ catch (error) {
585
+ // A service that failed mid-call is not kept for the next one.
586
+ closeSharedOpenSysMLConnection();
587
+ throw error;
588
+ }
589
+ }
590
+ export const openSysMLLoweringDescriptor = {
591
+ id: OPENSYSML_PROVIDER_ID,
592
+ role: 'lowering',
593
+ capabilities: ['lower'],
594
+ compileModel: compileWithOpenSysML,
595
+ shipLibrary: shipOpenSysMLLibrary,
596
+ // ParseSources reports what the OpenSysML validator does over the same
597
+ // documents, so a compile is the validator's verdict too.
598
+ compileServesValidator() {
599
+ return true;
600
+ },
601
+ probe(context) {
602
+ return probeOpenSysML(context.config);
603
+ },
604
+ create(context) {
605
+ return {
606
+ id: OPENSYSML_PROVIDER_ID,
607
+ role: 'lowering',
608
+ transport: 'process',
609
+ invocation: () => undefined,
610
+ async run() {
611
+ // Every library root a locator offers, the project resolved from
612
+ // what was compiled: what each command compiles, so MEMO parses
613
+ // nothing and `.memo/stage1/` is shared with them.
614
+ const sources = discoverProjectSources(context.projectDir);
615
+ const result = await compileWithOpenSysML({
616
+ config: context.config,
617
+ projectDir: context.projectDir,
618
+ libraryDirs: [...new Set(sources.libraryRoots.map(root => root.sysmlDir))],
619
+ projectFiles: new Set(sources.projectFiles.map(file => relative(context.projectDir, file))),
620
+ resolveProject: true,
621
+ cacheDir: join(context.projectDir, '.memo', 'stage1'),
622
+ });
623
+ const model = result.model
624
+ ? modelToDTO(result.model)
625
+ : { elements: {}, relationships: [], errors: [], packages: [] };
626
+ return {
627
+ provider: OPENSYSML_PROVIDER_ID,
628
+ providerVersion: result.providerVersion,
629
+ transport: 'process',
630
+ accepted: result.accepted,
631
+ diagnostics: result.diagnostics,
632
+ registries: result.registries,
633
+ ir: {
634
+ irVersion: SYSMLC_IR_VERSION,
635
+ model,
636
+ parseErrors: [],
637
+ accepted: result.accepted,
638
+ // Stage 2 has no syntax tree to record; the standard JSON is the record.
639
+ sysml: { irVersion: SYSML_IR_VERSION, elements: [], diagnostics: [] },
640
+ },
641
+ };
642
+ },
643
+ };
644
+ },
645
+ };
646
+ //# sourceMappingURL=opensysml-lowering.js.map