@memoarchitect/tools 0.13.2 → 0.15.0

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 (824) 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 +287 -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.map +1 -1
  376. package/packages/tools/lib/model/short-id.js +4 -0
  377. package/packages/tools/lib/model/short-id.js.map +1 -1
  378. package/packages/tools/lib/model/source-graph.d.ts +9 -7
  379. package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
  380. package/packages/tools/lib/model/source-graph.js +19 -24
  381. package/packages/tools/lib/model/source-graph.js.map +1 -1
  382. package/packages/tools/lib/model/source-provenance.d.ts +5 -1
  383. package/packages/tools/lib/model/source-provenance.d.ts.map +1 -1
  384. package/packages/tools/lib/model/source-provenance.js.map +1 -1
  385. package/packages/tools/lib/model/sysml-files.js +1 -1
  386. package/packages/tools/lib/model/sysml-ir.d.ts +2 -5
  387. package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -1
  388. package/packages/tools/lib/model/sysml-ir.js +1 -100
  389. package/packages/tools/lib/model/sysml-ir.js.map +1 -1
  390. package/packages/tools/lib/model/toolchain-merge.d.ts +4 -0
  391. package/packages/tools/lib/model/toolchain-merge.d.ts.map +1 -0
  392. package/packages/tools/lib/model/toolchain-merge.js +34 -0
  393. package/packages/tools/lib/model/toolchain-merge.js.map +1 -0
  394. package/packages/tools/lib/model/user-settings.d.ts +13 -0
  395. package/packages/tools/lib/model/user-settings.d.ts.map +1 -0
  396. package/packages/tools/lib/model/user-settings.js +83 -0
  397. package/packages/tools/lib/model/user-settings.js.map +1 -0
  398. package/packages/tools/lib/model/variability.d.ts +56 -0
  399. package/packages/tools/lib/model/variability.d.ts.map +1 -0
  400. package/packages/tools/lib/model/variability.js +116 -0
  401. package/packages/tools/lib/model/variability.js.map +1 -0
  402. package/packages/tools/lib/model/version-range.d.ts +2 -0
  403. package/packages/tools/lib/model/version-range.d.ts.map +1 -0
  404. package/packages/tools/lib/model/version-range.js +37 -0
  405. package/packages/tools/lib/model/version-range.js.map +1 -0
  406. package/packages/tools/lib/model/view-deriver.d.ts +16 -0
  407. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  408. package/packages/tools/lib/model/view-deriver.js +100 -26
  409. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  410. package/packages/tools/lib/model/view-layout-block.d.ts +81 -0
  411. package/packages/tools/lib/model/view-layout-block.d.ts.map +1 -0
  412. package/packages/tools/lib/model/view-layout-block.js +525 -0
  413. package/packages/tools/lib/model/view-layout-block.js.map +1 -0
  414. package/packages/tools/lib/model/view-layout-migration.d.ts +54 -0
  415. package/packages/tools/lib/model/view-layout-migration.d.ts.map +1 -0
  416. package/packages/tools/lib/model/view-layout-migration.js +156 -0
  417. package/packages/tools/lib/model/view-layout-migration.js.map +1 -0
  418. package/packages/tools/lib/model/workspace-membership.d.ts +99 -0
  419. package/packages/tools/lib/model/workspace-membership.d.ts.map +1 -0
  420. package/packages/tools/lib/model/workspace-membership.js +281 -0
  421. package/packages/tools/lib/model/workspace-membership.js.map +1 -0
  422. package/packages/tools/lib/ontology/owl-exporter.d.ts +1 -1
  423. package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
  424. package/packages/tools/lib/ontology/owl-exporter.js +1 -1
  425. package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
  426. package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -1
  427. package/packages/tools/lib/operations/ai-authoring.js +7 -5
  428. package/packages/tools/lib/operations/ai-authoring.js.map +1 -1
  429. package/packages/tools/lib/operations/authoring.d.ts +10 -4
  430. package/packages/tools/lib/operations/authoring.d.ts.map +1 -1
  431. package/packages/tools/lib/operations/authoring.js +27 -11
  432. package/packages/tools/lib/operations/authoring.js.map +1 -1
  433. package/packages/tools/lib/operations/index.d.ts +2 -0
  434. package/packages/tools/lib/operations/index.d.ts.map +1 -1
  435. package/packages/tools/lib/operations/index.js +1 -0
  436. package/packages/tools/lib/operations/index.js.map +1 -1
  437. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  438. package/packages/tools/lib/operations/project-snapshot.js +7 -13
  439. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  440. package/packages/tools/lib/plugin/plugin-scaffold.js +2 -2
  441. package/packages/tools/lib/plugin/plugin-scaffold.js.map +1 -1
  442. package/packages/tools/lib/protocol/messages.d.ts +375 -7
  443. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  444. package/packages/tools/lib/serializer/csv-io.d.ts +37 -29
  445. package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
  446. package/packages/tools/lib/serializer/csv-io.js +64 -31
  447. package/packages/tools/lib/serializer/csv-io.js.map +1 -1
  448. package/packages/tools/lib/serializer/sysml-generator.d.ts +15 -2
  449. package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
  450. package/packages/tools/lib/serializer/sysml-generator.js +45 -17
  451. package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
  452. package/packages/tools/lib/server/conflict-policy.js +1 -1
  453. package/packages/tools/lib/server/conflict-policy.js.map +1 -1
  454. package/packages/tools/lib/server/dashboard-store.d.ts +1 -7
  455. package/packages/tools/lib/server/dashboard-store.d.ts.map +1 -1
  456. package/packages/tools/lib/server/dashboard-store.js +3 -14
  457. package/packages/tools/lib/server/dashboard-store.js.map +1 -1
  458. package/packages/tools/lib/server/dev-server.d.ts +48 -1
  459. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  460. package/packages/tools/lib/server/dev-server.js +529 -80
  461. package/packages/tools/lib/server/dev-server.js.map +1 -1
  462. package/packages/tools/lib/server/dev-validate.d.ts +30 -0
  463. package/packages/tools/lib/server/dev-validate.d.ts.map +1 -0
  464. package/packages/tools/lib/server/dev-validate.js +82 -0
  465. package/packages/tools/lib/server/dev-validate.js.map +1 -0
  466. package/packages/tools/lib/server/element-writer.d.ts +4 -1
  467. package/packages/tools/lib/server/element-writer.d.ts.map +1 -1
  468. package/packages/tools/lib/server/element-writer.js +56 -35
  469. package/packages/tools/lib/server/element-writer.js.map +1 -1
  470. package/packages/tools/lib/server/mutation-domain.d.ts +10 -0
  471. package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -1
  472. package/packages/tools/lib/server/mutation-domain.js +45 -8
  473. package/packages/tools/lib/server/mutation-domain.js.map +1 -1
  474. package/packages/tools/lib/server/package-source.d.ts +13 -3
  475. package/packages/tools/lib/server/package-source.d.ts.map +1 -1
  476. package/packages/tools/lib/server/package-source.js +31 -39
  477. package/packages/tools/lib/server/package-source.js.map +1 -1
  478. package/packages/tools/lib/server/package-writer.d.ts +19 -6
  479. package/packages/tools/lib/server/package-writer.d.ts.map +1 -1
  480. package/packages/tools/lib/server/package-writer.js +90 -39
  481. package/packages/tools/lib/server/package-writer.js.map +1 -1
  482. package/packages/tools/lib/server/persistor.d.ts +33 -7
  483. package/packages/tools/lib/server/persistor.d.ts.map +1 -1
  484. package/packages/tools/lib/server/persistor.js +63 -48
  485. package/packages/tools/lib/server/persistor.js.map +1 -1
  486. package/packages/tools/lib/server/project-gitignore.d.ts +9 -0
  487. package/packages/tools/lib/server/project-gitignore.d.ts.map +1 -0
  488. package/packages/tools/lib/server/project-gitignore.js +27 -0
  489. package/packages/tools/lib/server/project-gitignore.js.map +1 -0
  490. package/packages/tools/lib/server/relationship-writer.d.ts +31 -2
  491. package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
  492. package/packages/tools/lib/server/relationship-writer.js +255 -95
  493. package/packages/tools/lib/server/relationship-writer.js.map +1 -1
  494. package/packages/tools/lib/server/release-writer.d.ts +46 -0
  495. package/packages/tools/lib/server/release-writer.d.ts.map +1 -0
  496. package/packages/tools/lib/server/release-writer.js +133 -0
  497. package/packages/tools/lib/server/release-writer.js.map +1 -0
  498. package/packages/tools/lib/server/rule-policy-writer.d.ts +17 -4
  499. package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -1
  500. package/packages/tools/lib/server/rule-policy-writer.js +92 -7
  501. package/packages/tools/lib/server/rule-policy-writer.js.map +1 -1
  502. package/packages/tools/lib/server/rule-service.d.ts +50 -0
  503. package/packages/tools/lib/server/rule-service.d.ts.map +1 -0
  504. package/packages/tools/lib/server/rule-service.js +89 -0
  505. package/packages/tools/lib/server/rule-service.js.map +1 -0
  506. package/packages/tools/lib/server/rule-writer.d.ts +87 -0
  507. package/packages/tools/lib/server/rule-writer.d.ts.map +1 -0
  508. package/packages/tools/lib/server/rule-writer.js +165 -0
  509. package/packages/tools/lib/server/rule-writer.js.map +1 -0
  510. package/packages/tools/lib/server/suspect-review.d.ts +11 -0
  511. package/packages/tools/lib/server/suspect-review.d.ts.map +1 -0
  512. package/packages/tools/lib/server/suspect-review.js +28 -0
  513. package/packages/tools/lib/server/suspect-review.js.map +1 -0
  514. package/packages/tools/lib/server/sysml-notation.d.ts +1 -1
  515. package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -1
  516. package/packages/tools/lib/server/sysml-notation.js +5 -0
  517. package/packages/tools/lib/server/sysml-notation.js.map +1 -1
  518. package/packages/tools/lib/server/user-preferences.d.ts +8 -0
  519. package/packages/tools/lib/server/user-preferences.d.ts.map +1 -0
  520. package/packages/tools/lib/server/user-preferences.js +47 -0
  521. package/packages/tools/lib/server/user-preferences.js.map +1 -0
  522. package/packages/tools/lib/server/version-servers.d.ts +60 -0
  523. package/packages/tools/lib/server/version-servers.d.ts.map +1 -0
  524. package/packages/tools/lib/server/version-servers.js +106 -0
  525. package/packages/tools/lib/server/version-servers.js.map +1 -0
  526. package/packages/tools/lib/server/view-layout-store.d.ts +28 -13
  527. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
  528. package/packages/tools/lib/server/view-layout-store.js +106 -106
  529. package/packages/tools/lib/server/view-layout-store.js.map +1 -1
  530. package/packages/tools/lib/server/view-writer.d.ts +22 -2
  531. package/packages/tools/lib/server/view-writer.d.ts.map +1 -1
  532. package/packages/tools/lib/server/view-writer.js +99 -44
  533. package/packages/tools/lib/server/view-writer.js.map +1 -1
  534. package/packages/tools/lib/server/write-guard.d.ts +7 -0
  535. package/packages/tools/lib/server/write-guard.d.ts.map +1 -0
  536. package/packages/tools/lib/server/write-guard.js +77 -0
  537. package/packages/tools/lib/server/write-guard.js.map +1 -0
  538. package/packages/tools/lib/stage2/api-model.d.ts +160 -0
  539. package/packages/tools/lib/stage2/api-model.d.ts.map +1 -0
  540. package/packages/tools/lib/stage2/api-model.js +341 -0
  541. package/packages/tools/lib/stage2/api-model.js.map +1 -0
  542. package/packages/tools/lib/stage2/build-from-api.d.ts +47 -0
  543. package/packages/tools/lib/stage2/build-from-api.d.ts.map +1 -0
  544. package/packages/tools/lib/stage2/build-from-api.js +1462 -0
  545. package/packages/tools/lib/stage2/build-from-api.js.map +1 -0
  546. package/packages/tools/lib/stage2/guide-from-api.d.ts +38 -0
  547. package/packages/tools/lib/stage2/guide-from-api.d.ts.map +1 -0
  548. package/packages/tools/lib/stage2/guide-from-api.js +97 -0
  549. package/packages/tools/lib/stage2/guide-from-api.js.map +1 -0
  550. package/packages/tools/lib/stage2/handoff-files.d.ts +13 -0
  551. package/packages/tools/lib/stage2/handoff-files.d.ts.map +1 -0
  552. package/packages/tools/lib/stage2/handoff-files.js +32 -0
  553. package/packages/tools/lib/stage2/handoff-files.js.map +1 -0
  554. package/packages/tools/lib/stage2/methodology-from-api.d.ts +10 -0
  555. package/packages/tools/lib/stage2/methodology-from-api.d.ts.map +1 -0
  556. package/packages/tools/lib/stage2/methodology-from-api.js +109 -0
  557. package/packages/tools/lib/stage2/methodology-from-api.js.map +1 -0
  558. package/packages/tools/lib/stage2/package-metadata-from-api.d.ts +15 -0
  559. package/packages/tools/lib/stage2/package-metadata-from-api.d.ts.map +1 -0
  560. package/packages/tools/lib/stage2/package-metadata-from-api.js +238 -0
  561. package/packages/tools/lib/stage2/package-metadata-from-api.js.map +1 -0
  562. package/packages/tools/lib/stage2/project-from-api.d.ts +60 -0
  563. package/packages/tools/lib/stage2/project-from-api.d.ts.map +1 -0
  564. package/packages/tools/lib/stage2/project-from-api.js +328 -0
  565. package/packages/tools/lib/stage2/project-from-api.js.map +1 -0
  566. package/packages/tools/lib/stage2/registries-from-api.d.ts +68 -0
  567. package/packages/tools/lib/stage2/registries-from-api.d.ts.map +1 -0
  568. package/packages/tools/lib/stage2/registries-from-api.js +313 -0
  569. package/packages/tools/lib/stage2/registries-from-api.js.map +1 -0
  570. package/packages/tools/lib/stage2/stage2-from-handoff.d.ts +26 -0
  571. package/packages/tools/lib/stage2/stage2-from-handoff.d.ts.map +1 -0
  572. package/packages/tools/lib/stage2/stage2-from-handoff.js +34 -0
  573. package/packages/tools/lib/stage2/stage2-from-handoff.js.map +1 -0
  574. package/packages/tools/lib/stage2/sysml-names.d.ts +9 -0
  575. package/packages/tools/lib/stage2/sysml-names.d.ts.map +1 -0
  576. package/packages/tools/lib/stage2/sysml-names.js +39 -0
  577. package/packages/tools/lib/stage2/sysml-names.js.map +1 -0
  578. package/packages/tools/lib/toolchain/default-registry.d.ts +2 -2
  579. package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -1
  580. package/packages/tools/lib/toolchain/default-registry.js +9 -5
  581. package/packages/tools/lib/toolchain/default-registry.js.map +1 -1
  582. package/packages/tools/lib/toolchain/diagnostic.d.ts +2 -2
  583. package/packages/tools/lib/toolchain/diagnostic.js +1 -1
  584. package/packages/tools/lib/toolchain/diagnostic.js.map +1 -1
  585. package/packages/tools/lib/toolchain/effective.d.ts +25 -17
  586. package/packages/tools/lib/toolchain/effective.d.ts.map +1 -1
  587. package/packages/tools/lib/toolchain/effective.js +45 -40
  588. package/packages/tools/lib/toolchain/effective.js.map +1 -1
  589. package/packages/tools/lib/toolchain/exceptions.d.ts +27 -0
  590. package/packages/tools/lib/toolchain/exceptions.d.ts.map +1 -0
  591. package/packages/tools/lib/toolchain/exceptions.js +77 -0
  592. package/packages/tools/lib/toolchain/exceptions.js.map +1 -0
  593. package/packages/tools/lib/toolchain/index.d.ts +2 -2
  594. package/packages/tools/lib/toolchain/index.d.ts.map +1 -1
  595. package/packages/tools/lib/toolchain/index.js +2 -2
  596. package/packages/tools/lib/toolchain/index.js.map +1 -1
  597. package/packages/tools/lib/toolchain/operations.d.ts +45 -10
  598. package/packages/tools/lib/toolchain/operations.d.ts.map +1 -1
  599. package/packages/tools/lib/toolchain/operations.js +107 -8
  600. package/packages/tools/lib/toolchain/operations.js.map +1 -1
  601. package/packages/tools/lib/toolchain/ownership.d.ts +13 -0
  602. package/packages/tools/lib/toolchain/ownership.d.ts.map +1 -0
  603. package/packages/tools/lib/toolchain/ownership.js +57 -0
  604. package/packages/tools/lib/toolchain/ownership.js.map +1 -0
  605. package/packages/tools/lib/toolchain/process.d.ts +2 -2
  606. package/packages/tools/lib/toolchain/process.js +2 -2
  607. package/packages/tools/lib/toolchain/project-config.d.ts +4 -0
  608. package/packages/tools/lib/toolchain/project-config.d.ts.map +1 -0
  609. package/packages/tools/lib/toolchain/project-config.js +13 -0
  610. package/packages/tools/lib/toolchain/project-config.js.map +1 -0
  611. package/packages/tools/lib/toolchain/project-model.d.ts +75 -0
  612. package/packages/tools/lib/toolchain/project-model.d.ts.map +1 -0
  613. package/packages/tools/lib/toolchain/project-model.js +92 -0
  614. package/packages/tools/lib/toolchain/project-model.js.map +1 -0
  615. package/packages/tools/lib/toolchain/providers/internal-package.d.ts +6 -0
  616. package/packages/tools/lib/toolchain/providers/internal-package.d.ts.map +1 -0
  617. package/packages/tools/lib/toolchain/providers/internal-package.js +47 -0
  618. package/packages/tools/lib/toolchain/providers/internal-package.js.map +1 -0
  619. package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts +20 -0
  620. package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts.map +1 -0
  621. package/packages/tools/lib/toolchain/providers/opensysml-check.js +95 -0
  622. package/packages/tools/lib/toolchain/providers/opensysml-check.js.map +1 -0
  623. package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts +17 -0
  624. package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts.map +1 -0
  625. package/packages/tools/lib/toolchain/providers/opensysml-compact.js +69 -0
  626. package/packages/tools/lib/toolchain/providers/opensysml-compact.js.map +1 -0
  627. package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts +50 -0
  628. package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts.map +1 -0
  629. package/packages/tools/lib/toolchain/providers/opensysml-lowering.js +646 -0
  630. package/packages/tools/lib/toolchain/providers/opensysml-lowering.js.map +1 -0
  631. package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts +16 -0
  632. package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts.map +1 -0
  633. package/packages/tools/lib/toolchain/providers/opensysml-names.js +37 -0
  634. package/packages/tools/lib/toolchain/providers/opensysml-names.js.map +1 -0
  635. package/packages/tools/lib/toolchain/providers/opensysml.d.ts +88 -0
  636. package/packages/tools/lib/toolchain/providers/opensysml.d.ts.map +1 -0
  637. package/packages/tools/lib/toolchain/providers/opensysml.js +178 -0
  638. package/packages/tools/lib/toolchain/providers/opensysml.js.map +1 -0
  639. package/packages/tools/lib/toolchain/providers/recommended.d.ts +2 -0
  640. package/packages/tools/lib/toolchain/providers/recommended.d.ts.map +1 -0
  641. package/packages/tools/lib/toolchain/providers/recommended.js +13 -0
  642. package/packages/tools/lib/toolchain/providers/recommended.js.map +1 -0
  643. package/packages/tools/lib/toolchain/providers/sysand-project.d.ts +60 -0
  644. package/packages/tools/lib/toolchain/providers/sysand-project.d.ts.map +1 -0
  645. package/packages/tools/lib/toolchain/providers/sysand-project.js +160 -0
  646. package/packages/tools/lib/toolchain/providers/sysand-project.js.map +1 -0
  647. package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -1
  648. package/packages/tools/lib/toolchain/providers/sysand.js +26 -2
  649. package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -1
  650. package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts +29 -0
  651. package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts.map +1 -0
  652. package/packages/tools/lib/toolchain/providers/syside-lowering.js +497 -0
  653. package/packages/tools/lib/toolchain/providers/syside-lowering.js.map +1 -0
  654. package/packages/tools/lib/toolchain/providers/syside-python.d.ts +9 -0
  655. package/packages/tools/lib/toolchain/providers/syside-python.d.ts.map +1 -0
  656. package/packages/tools/lib/toolchain/providers/syside-python.js +69 -0
  657. package/packages/tools/lib/toolchain/providers/syside-python.js.map +1 -0
  658. package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -1
  659. package/packages/tools/lib/toolchain/providers/syside.js +2 -0
  660. package/packages/tools/lib/toolchain/providers/syside.js.map +1 -1
  661. package/packages/tools/lib/toolchain/registry.d.ts +118 -21
  662. package/packages/tools/lib/toolchain/registry.d.ts.map +1 -1
  663. package/packages/tools/lib/toolchain/registry.js +18 -24
  664. package/packages/tools/lib/toolchain/registry.js.map +1 -1
  665. package/packages/tools/lib/toolchain/schema.d.ts +6 -5
  666. package/packages/tools/lib/toolchain/schema.d.ts.map +1 -1
  667. package/packages/tools/lib/toolchain/schema.js +8 -13
  668. package/packages/tools/lib/toolchain/schema.js.map +1 -1
  669. package/packages/tools/lib/toolchain/shipped-library.d.ts +28 -0
  670. package/packages/tools/lib/toolchain/shipped-library.d.ts.map +1 -0
  671. package/packages/tools/lib/toolchain/shipped-library.js +120 -0
  672. package/packages/tools/lib/toolchain/shipped-library.js.map +1 -0
  673. package/packages/tools/lib/toolchain/source-fingerprint.d.ts +2 -0
  674. package/packages/tools/lib/toolchain/source-fingerprint.d.ts.map +1 -0
  675. package/packages/tools/lib/toolchain/source-fingerprint.js +30 -0
  676. package/packages/tools/lib/toolchain/source-fingerprint.js.map +1 -0
  677. package/packages/tools/lib/toolchain/user-settings-status.d.ts +51 -0
  678. package/packages/tools/lib/toolchain/user-settings-status.d.ts.map +1 -0
  679. package/packages/tools/lib/toolchain/user-settings-status.js +104 -0
  680. package/packages/tools/lib/toolchain/user-settings-status.js.map +1 -0
  681. package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -1
  682. package/packages/tools/lib/validator/architecture-validator.js +2 -1
  683. package/packages/tools/lib/validator/architecture-validator.js.map +1 -1
  684. package/packages/tools/lib/validator/behavior-validator.js +1 -1
  685. package/packages/tools/lib/validator/behavior-validator.js.map +1 -1
  686. package/packages/tools/lib/validator/builtin-rules.js +1 -1
  687. package/packages/tools/lib/validator/builtin-rules.js.map +1 -1
  688. package/packages/tools/lib/validator/constraint-eval.d.ts +30 -4
  689. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  690. package/packages/tools/lib/validator/constraint-eval.js +101 -59
  691. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  692. package/packages/tools/lib/validator/constraint-loader-api.d.ts +22 -0
  693. package/packages/tools/lib/validator/constraint-loader-api.d.ts.map +1 -0
  694. package/packages/tools/lib/validator/constraint-loader-api.js +160 -0
  695. package/packages/tools/lib/validator/constraint-loader-api.js.map +1 -0
  696. package/packages/tools/lib/validator/constraint-loader.d.ts +22 -18
  697. package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
  698. package/packages/tools/lib/validator/constraint-loader.js +33 -141
  699. package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
  700. package/packages/tools/lib/validator/rule-clauses.d.ts +51 -0
  701. package/packages/tools/lib/validator/rule-clauses.d.ts.map +1 -0
  702. package/packages/tools/lib/validator/rule-clauses.js +87 -0
  703. package/packages/tools/lib/validator/rule-clauses.js.map +1 -0
  704. package/packages/tools/lib/validator/rule-engine.d.ts +9 -1
  705. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  706. package/packages/tools/lib/validator/rule-engine.js +50 -6
  707. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  708. package/packages/tools/lib/validator/rule-registry.d.ts +4 -8
  709. package/packages/tools/lib/validator/rule-registry.d.ts.map +1 -1
  710. package/packages/tools/lib/validator/rule-registry.js +42 -79
  711. package/packages/tools/lib/validator/rule-registry.js.map +1 -1
  712. package/packages/tools/lib/validator/rule-tailoring.d.ts +62 -0
  713. package/packages/tools/lib/validator/rule-tailoring.d.ts.map +1 -0
  714. package/packages/tools/lib/validator/rule-tailoring.js +85 -0
  715. package/packages/tools/lib/validator/rule-tailoring.js.map +1 -0
  716. package/packages/tools/lib/validator/types.d.ts +12 -1
  717. package/packages/tools/lib/validator/types.d.ts.map +1 -1
  718. package/packages/tools/lib/validator/workspace-boundary-validator.d.ts +9 -0
  719. package/packages/tools/lib/validator/workspace-boundary-validator.d.ts.map +1 -0
  720. package/packages/tools/lib/validator/workspace-boundary-validator.js +28 -0
  721. package/packages/tools/lib/validator/workspace-boundary-validator.js.map +1 -0
  722. package/packages/tools/python/memo_model.py +243 -0
  723. package/packages/tools/python/memo_stage1_syside.py +389 -0
  724. package/packages/tools/lib/commands/check.d.ts +0 -6
  725. package/packages/tools/lib/commands/check.d.ts.map +0 -1
  726. package/packages/tools/lib/commands/check.js +0 -191
  727. package/packages/tools/lib/commands/check.js.map +0 -1
  728. package/packages/tools/lib/commands/conformance.d.ts +0 -36
  729. package/packages/tools/lib/commands/conformance.d.ts.map +0 -1
  730. package/packages/tools/lib/commands/conformance.js +0 -212
  731. package/packages/tools/lib/commands/conformance.js.map +0 -1
  732. package/packages/tools/lib/commands/roundtrip.d.ts +0 -6
  733. package/packages/tools/lib/commands/roundtrip.d.ts.map +0 -1
  734. package/packages/tools/lib/commands/roundtrip.js +0 -145
  735. package/packages/tools/lib/commands/roundtrip.js.map +0 -1
  736. package/packages/tools/lib/conformance/baseline.d.ts +0 -26
  737. package/packages/tools/lib/conformance/baseline.d.ts.map +0 -1
  738. package/packages/tools/lib/conformance/baseline.js +0 -170
  739. package/packages/tools/lib/conformance/baseline.js.map +0 -1
  740. package/packages/tools/lib/conformance/bnf.d.ts +0 -84
  741. package/packages/tools/lib/conformance/bnf.d.ts.map +0 -1
  742. package/packages/tools/lib/conformance/bnf.js +0 -166
  743. package/packages/tools/lib/conformance/bnf.js.map +0 -1
  744. package/packages/tools/lib/conformance/corpus.d.ts +0 -125
  745. package/packages/tools/lib/conformance/corpus.d.ts.map +0 -1
  746. package/packages/tools/lib/conformance/corpus.js +0 -190
  747. package/packages/tools/lib/conformance/corpus.js.map +0 -1
  748. package/packages/tools/lib/conformance/diff-xmi.d.ts +0 -118
  749. package/packages/tools/lib/conformance/diff-xmi.d.ts.map +0 -1
  750. package/packages/tools/lib/conformance/diff-xmi.js +0 -276
  751. package/packages/tools/lib/conformance/diff-xmi.js.map +0 -1
  752. package/packages/tools/lib/conformance/generated/syside-rules.d.ts +0 -10
  753. package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +0 -1
  754. package/packages/tools/lib/conformance/generated/syside-rules.js +0 -1142
  755. package/packages/tools/lib/conformance/generated/syside-rules.js.map +0 -1
  756. package/packages/tools/lib/conformance/index.d.ts +0 -7
  757. package/packages/tools/lib/conformance/index.d.ts.map +0 -1
  758. package/packages/tools/lib/conformance/index.js +0 -19
  759. package/packages/tools/lib/conformance/index.js.map +0 -1
  760. package/packages/tools/lib/conformance/run.d.ts +0 -117
  761. package/packages/tools/lib/conformance/run.d.ts.map +0 -1
  762. package/packages/tools/lib/conformance/run.js +0 -0
  763. package/packages/tools/lib/conformance/run.js.map +0 -1
  764. package/packages/tools/lib/conformance/xmi.d.ts +0 -45
  765. package/packages/tools/lib/conformance/xmi.d.ts.map +0 -1
  766. package/packages/tools/lib/conformance/xmi.js +0 -148
  767. package/packages/tools/lib/conformance/xmi.js.map +0 -1
  768. package/packages/tools/lib/language/generated/ast.d.ts +0 -3571
  769. package/packages/tools/lib/language/generated/ast.d.ts.map +0 -1
  770. package/packages/tools/lib/language/generated/ast.js +0 -2980
  771. package/packages/tools/lib/language/generated/ast.js.map +0 -1
  772. package/packages/tools/lib/language/generated/grammar.d.ts +0 -7
  773. package/packages/tools/lib/language/generated/grammar.d.ts.map +0 -1
  774. package/packages/tools/lib/language/generated/grammar.js +0 -10687
  775. package/packages/tools/lib/language/generated/grammar.js.map +0 -1
  776. package/packages/tools/lib/language/generated/module.d.ts +0 -14
  777. package/packages/tools/lib/language/generated/module.d.ts.map +0 -1
  778. package/packages/tools/lib/language/generated/module.js +0 -21
  779. package/packages/tools/lib/language/generated/module.js.map +0 -1
  780. package/packages/tools/lib/language/memo-sysml-module.d.ts +0 -24
  781. package/packages/tools/lib/language/memo-sysml-module.d.ts.map +0 -1
  782. package/packages/tools/lib/language/memo-sysml-module.js +0 -20
  783. package/packages/tools/lib/language/memo-sysml-module.js.map +0 -1
  784. package/packages/tools/lib/model/builder.d.ts +0 -27
  785. package/packages/tools/lib/model/builder.d.ts.map +0 -1
  786. package/packages/tools/lib/model/builder.js +0 -2112
  787. package/packages/tools/lib/model/builder.js.map +0 -1
  788. package/packages/tools/lib/model/package-registry.d.ts +0 -64
  789. package/packages/tools/lib/model/package-registry.d.ts.map +0 -1
  790. package/packages/tools/lib/model/package-registry.js +0 -184
  791. package/packages/tools/lib/model/package-registry.js.map +0 -1
  792. package/packages/tools/lib/model/parser-utils.d.ts +0 -65
  793. package/packages/tools/lib/model/parser-utils.d.ts.map +0 -1
  794. package/packages/tools/lib/model/parser-utils.js +0 -201
  795. package/packages/tools/lib/model/parser-utils.js.map +0 -1
  796. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +0 -3
  797. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +0 -1
  798. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +0 -97
  799. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +0 -1
  800. package/packages/tools/lib/sysmlc/index.d.ts +0 -2
  801. package/packages/tools/lib/sysmlc/index.d.ts.map +0 -1
  802. package/packages/tools/lib/sysmlc/index.js +0 -7
  803. package/packages/tools/lib/sysmlc/index.js.map +0 -1
  804. package/packages/tools/lib/sysmlc/server.d.ts +0 -29
  805. package/packages/tools/lib/sysmlc/server.d.ts.map +0 -1
  806. package/packages/tools/lib/sysmlc/server.js +0 -168
  807. package/packages/tools/lib/sysmlc/server.js.map +0 -1
  808. package/packages/tools/lib/toolchain/lowering.d.ts +0 -63
  809. package/packages/tools/lib/toolchain/lowering.d.ts.map +0 -1
  810. package/packages/tools/lib/toolchain/lowering.js +0 -100
  811. package/packages/tools/lib/toolchain/lowering.js.map +0 -1
  812. package/packages/tools/lib/toolchain/providers/internal.d.ts +0 -33
  813. package/packages/tools/lib/toolchain/providers/internal.d.ts.map +0 -1
  814. package/packages/tools/lib/toolchain/providers/internal.js +0 -286
  815. package/packages/tools/lib/toolchain/providers/internal.js.map +0 -1
  816. package/packages/tools/lib/toolchain/sysmlc-client.d.ts +0 -77
  817. package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +0 -1
  818. package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
  819. package/packages/tools/lib/toolchain/sysmlc-client.js.map +0 -1
  820. package/packages/tools/lib/validator/sysml-constraints.d.ts +0 -64
  821. package/packages/tools/lib/validator/sysml-constraints.d.ts.map +0 -1
  822. package/packages/tools/lib/validator/sysml-constraints.js +0 -251
  823. package/packages/tools/lib/validator/sysml-constraints.js.map +0 -1
  824. package/packages/tools/src/grammar/memo-sysml.langium +0 -1064
@@ -0,0 +1,45 @@
1
+ import type { MemoElement, MemoRelationship } from '../model/semantic.js';
2
+ export type SuspectReason = 'revision-moved' | 'source-withdrawn';
3
+ export interface SuspectLink {
4
+ relationshipId: string;
5
+ relationshipType: string;
6
+ /** The imported element the link is suspect about. */
7
+ elementId: string;
8
+ /** Which end of the link that element is. */
9
+ end: 'source' | 'target';
10
+ /** The revision the link was made against. */
11
+ baseline: string;
12
+ /** The element's revision now; undefined when the source no longer carries it. */
13
+ current: string | undefined;
14
+ reason: SuspectReason;
15
+ }
16
+ /** What a baseline says: the revision a link was made against, and the record it belongs to. */
17
+ export interface Baseline {
18
+ sourceRevision: string;
19
+ /** The imported element the revision belongs to; absent, every imported end is compared. */
20
+ sourceIdentifier?: string;
21
+ }
22
+ /** An imported element as the comparison sees it. */
23
+ export interface ImportedRecord {
24
+ identifier: string;
25
+ revision: string | undefined;
26
+ withdrawn: boolean;
27
+ }
28
+ /** The baseline a link carries, if it carries one. */
29
+ export declare function baselineOf(attributes: Record<string, string> | undefined): Baseline | undefined;
30
+ /** The imported record an element is, if it is one. */
31
+ export declare function importedRecordOf(element: MemoElement | undefined): ImportedRecord | undefined;
32
+ /**
33
+ * Whether a baseline is suspect against one imported record. The one predicate:
34
+ * the queue (`computeSuspectLinks`) and an import's preview both ask it, so what
35
+ * the preview says it will mark is what the queue then shows.
36
+ */
37
+ export declare function suspectReason(baseline: Baseline, record: ImportedRecord): SuspectReason | undefined;
38
+ /** A model the computation can read: a built one, or the DTO a client holds. */
39
+ export interface SuspectModel {
40
+ relationships: readonly MemoRelationship[];
41
+ elements: ReadonlyMap<string, MemoElement> | Readonly<Record<string, MemoElement>>;
42
+ }
43
+ /** Every baselined link whose imported end has moved or been withdrawn. */
44
+ export declare function computeSuspectLinks(model: SuspectModel): SuspectLink[];
45
+ //# sourceMappingURL=suspect-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suspect-links.d.ts","sourceRoot":"","sources":["../../src/analysis/suspect-links.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAElE,MAAM,WAAW,WAAW;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;CACzB;AAKD,gGAAgG;AAChG,MAAM,WAAW,QAAQ;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,4FAA4F;IAC5F,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAK/F;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAI7F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAG,aAAa,GAAG,SAAS,CAInG;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAY;IACzB,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACtF;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,EAAE,CAqBtE"}
@@ -0,0 +1,66 @@
1
+ // ─── Suspect links ────────────────────────────────────────────────────────────
2
+ //
3
+ // A MEMO-authored link to an imported element records the revision of that
4
+ // element it was made against (`@TraceBaseline { sourceRevision }`). The link
5
+ // is suspect when the element has since moved on. Status is derived here from
6
+ // attributes alone and never stored, so there is no flag to go stale; reviewing
7
+ // a link means rewriting its baseline to the element's current revision.
8
+ //
9
+ // Nothing here knows a kind or a relation type: an imported element is one that
10
+ // carries an `externalReference`, a baselined link is one that carries a
11
+ // `sourceRevision`.
12
+ // ─────────────────────────────────────────────────────────────────────────────
13
+ const REVISION = 'externalReference.revision';
14
+ const IDENTIFIER = 'externalReference.identifier';
15
+ /** The baseline a link carries, if it carries one. */
16
+ export function baselineOf(attributes) {
17
+ const sourceRevision = attributes?.['sourceRevision'];
18
+ if (sourceRevision === undefined)
19
+ return undefined;
20
+ const sourceIdentifier = attributes?.['sourceIdentifier'];
21
+ return sourceIdentifier === undefined ? { sourceRevision } : { sourceRevision, sourceIdentifier };
22
+ }
23
+ /** The imported record an element is, if it is one. */
24
+ export function importedRecordOf(element) {
25
+ const identifier = element?.attributes[IDENTIFIER];
26
+ if (!element || identifier === undefined)
27
+ return undefined;
28
+ return { identifier, revision: element.attributes[REVISION], withdrawn: element.attributes['sourceWithdrawn'] === 'true' };
29
+ }
30
+ /**
31
+ * Whether a baseline is suspect against one imported record. The one predicate:
32
+ * the queue (`computeSuspectLinks`) and an import's preview both ask it, so what
33
+ * the preview says it will mark is what the queue then shows.
34
+ */
35
+ export function suspectReason(baseline, record) {
36
+ if (baseline.sourceIdentifier !== undefined && baseline.sourceIdentifier !== record.identifier)
37
+ return undefined;
38
+ if (record.withdrawn)
39
+ return 'source-withdrawn';
40
+ return record.revision !== baseline.sourceRevision ? 'revision-moved' : undefined;
41
+ }
42
+ /** Every baselined link whose imported end has moved or been withdrawn. */
43
+ export function computeSuspectLinks(model) {
44
+ const elementOf = (id) => model.elements instanceof Map ? model.elements.get(id) : model.elements[id];
45
+ const suspects = [];
46
+ for (const relationship of model.relationships) {
47
+ const baseline = baselineOf(relationship.attributes);
48
+ if (!baseline)
49
+ continue;
50
+ for (const end of ['source', 'target']) {
51
+ const elementId = end === 'source' ? relationship.sourceId : relationship.targetId;
52
+ const record = importedRecordOf(elementOf(elementId));
53
+ if (!record)
54
+ continue;
55
+ const reason = suspectReason(baseline, record);
56
+ if (reason) {
57
+ suspects.push({
58
+ relationshipId: relationship.id, relationshipType: relationship.type, elementId, end,
59
+ baseline: baseline.sourceRevision, current: record.revision, reason,
60
+ });
61
+ }
62
+ }
63
+ }
64
+ return suspects;
65
+ }
66
+ //# sourceMappingURL=suspect-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suspect-links.js","sourceRoot":"","sources":["../../src/analysis/suspect-links.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ /** The notebooks' model access, shipped beside the compiled library. */
2
+ export declare const MEMO_MODEL_MODULE: string;
1
3
  /** Add model-independent Jupyter samples to a newly initialized project. */
2
4
  export declare function scaffoldAnalysisSamples(projectDir: string): void;
3
5
  export declare const analysisSampleNames: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"analysis-starters.d.ts","sourceRoot":"","sources":["../src/analysis-starters.ts"],"names":[],"mappings":"AAibA,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAShE;AAED,eAAO,MAAM,mBAAmB,UAA4C,CAAC"}
1
+ {"version":3,"file":"analysis-starters.d.ts","sourceRoot":"","sources":["../src/analysis-starters.ts"],"names":[],"mappings":"AAibA,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,QAAqE,CAAC;AAEpG,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAWhE;AAED,eAAO,MAAM,mBAAmB,UAA4C,CAAC"}
@@ -1,41 +1,44 @@
1
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
1
+ import { copyFileSync, existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
- const LOAD_MODEL = `from pathlib import Path
3
+ import { fileURLToPath } from 'node:url';
4
+ const LOAD_MODEL = `import sys
5
+ from pathlib import Path
4
6
  from collections import Counter, defaultdict
5
- import syside
6
-
7
- def find_sysml_root(start=Path.cwd()):
8
- """Find the nearest model/ or src/ folder containing textual SysML."""
9
- for directory in (start, *start.parents):
10
- for folder_name in ('model', 'src'):
11
- candidate = directory / folder_name
12
- if candidate.is_dir() and next(candidate.rglob('*.sysml'), None):
13
- return candidate
14
- raise FileNotFoundError('No model/ or src/ directory containing .sysml files was found')
15
-
16
- SYSML_ROOT = find_sysml_root()
17
- SYSML_FILES = sorted(SYSML_ROOT.rglob('*.sysml'))
18
- model, diagnostics = syside.try_load_model([str(path) for path in SYSML_FILES])
19
- print(f'Loaded {len(SYSML_FILES)} SysML files from {SYSML_ROOT}')`;
7
+
8
+ # memo_model.py sits in the project's analysis/ folder, above this notebook.
9
+ sys.path.insert(0, str(next(d for d in (Path.cwd(), *Path.cwd().parents) if (d / 'memo_model.py').is_file())))
10
+ import memo_model
11
+
12
+ # Compiled by the project's selected compiler (toolchain.compiler), as every
13
+ # MEMO command is: change the setting and this notebook follows.
14
+ model = memo_model.load()
15
+ diagnostics = model.diagnostics
16
+ SYSML_FILES = model.documents
17
+ print(f'Loaded {len(SYSML_FILES)} SysML files, compiled by {model.compiler} {model.compiler_version or ""}')`;
20
18
  const SAMPLES_README = `# MEMO analysis samples
21
19
 
22
- These notebooks are created by \`memo init\` and are designed to work with any
23
- MEMO textual SysML v2 project. They locate the nearest \`model/\` or \`src/\`
24
- directory automatically and query it through the typed Syside API.
20
+ These notebooks are created by \`memo-architect init\` and work with any MEMO textual
21
+ SysML v2 project. Each one reads the model through \`analysis/memo_model.py\`,
22
+ which compiles the project with the compiler its settings select
23
+ (\`toolchain.compiler\`), exactly as \`memo compile\` does. Changing the
24
+ project's compiler changes what every notebook analyses.
25
25
 
26
26
  ## Prerequisites
27
27
 
28
- Use Python 3.12 or newer with JupyterLab and Syside installed and licensed:
28
+ - Python 3.12 or newer with JupyterLab.
29
+ - The \`memo\` command on \`PATH\`, or \`MEMO_CLI\` set to the command that runs it.
30
+ - What the selected compiler needs, as \`memo compile --probe\` reports. A
31
+ compiler that builds no SysML v2 model of its own (\`internal\`) cannot serve
32
+ the notebooks; \`memo_model.load()\` says so.
29
33
 
30
34
  \`\`\`bash
31
35
  python -m venv analysis/.venv
32
36
  source analysis/.venv/bin/activate
33
- python -m pip install jupyterlab syside
37
+ python -m pip install jupyterlab
34
38
  cd analysis
35
39
  jupyter lab --port 8888
36
40
  \`\`\`
37
41
 
38
- Configure the Syside license using its supported keyring or environment setup.
39
42
  MEMO Architect's **Analysis → Jupyter Notebooks** menu opens the local server at
40
43
  \`http://127.0.0.1:8888\`.
41
44
 
@@ -51,9 +54,10 @@ MEMO Architect's **Analysis → Jupyter Notebooks** menu opens the local server
51
54
  | \`06-ownership-graph.ipynb\` | SVG network graph of model ownership relationships. |
52
55
  | \`07-model-inventory-table.ipynb\` | Filterable inventory parameters, HTML table, and CSV export. |
53
56
 
54
- The notebooks use \`syside.try_load_model()\`, so partial analysis remains
55
- available while the project contains parser or semantic diagnostics. Review the
56
- reported diagnostics before treating analysis results as release evidence.
57
+ A model loads only once the compiler accepts it: \`memo_model.load()\` raises
58
+ with the compiler's errors otherwise. Compilers can differ in the elements they
59
+ write for the same text (anonymous features in particular), so counts can
60
+ differ slightly from one compiler to another.
57
61
  `;
58
62
  const STARTERS = [
59
63
  {
@@ -71,9 +75,7 @@ semantic_types = [
71
75
  ]
72
76
  counts = {}
73
77
  for type_name in semantic_types:
74
- node_type = getattr(syside, type_name, None)
75
- if node_type is not None:
76
- counts[type_name] = len(list(model.elements(node_type)))
78
+ counts[type_name] = len(model.elements(type_name))
77
79
 
78
80
  largest = max(counts.values(), default=1)
79
81
  rows = ''.join(
@@ -84,9 +86,9 @@ display(HTML(f'<h3>Semantic inventory</h3><table><tr><th>Element type</th><th>Co
84
86
 
85
87
  {
86
88
  'SysML files': len(SYSML_FILES),
87
- 'Errors': len(list(diagnostics.errors)),
88
- 'Warnings': len(list(diagnostics.warnings)),
89
- 'Information': len(list(diagnostics.infos)),
89
+ 'Errors': len(diagnostics.errors),
90
+ 'Warnings': len(diagnostics.warnings),
91
+ 'Information': len(diagnostics.infos),
90
92
  }`,
91
93
  ],
92
94
  },
@@ -98,8 +100,8 @@ display(HTML(f'<h3>Semantic inventory</h3><table><tr><th>Element type</th><th>Co
98
100
  `from IPython.display import display
99
101
 
100
102
  semantic_elements = (
101
- list(model.elements(syside.Usage, include_subtypes=True))
102
- + list(model.elements(syside.Definition, include_subtypes=True))
103
+ model.elements('Usage', include_subtypes=True)
104
+ + model.elements('Definition', include_subtypes=True)
103
105
  )
104
106
 
105
107
  def safe_name(element):
@@ -116,21 +118,21 @@ def ownership_depth(element):
116
118
 
117
119
  containers = []
118
120
  for element in semantic_elements:
119
- children = [child for child in element.owned_elements if isinstance(child, (syside.Usage, syside.Definition))]
121
+ children = [child for child in element.owned_elements if child.is_a('Usage', 'Definition')]
120
122
  if children:
121
- containers.append((len(children), type(element).__name__, safe_name(element)))
123
+ containers.append((len(children), element.type, safe_name(element)))
122
124
 
123
125
  print('Top containers by directly owned semantic elements')
124
126
  display(sorted(containers, reverse=True)[:25])
125
127
 
126
128
  print('Deepest ownership paths')
127
129
  display(sorted(
128
- ((ownership_depth(item), type(item).__name__, safe_name(item)) for item in semantic_elements),
130
+ ((ownership_depth(item), item.type, safe_name(item)) for item in semantic_elements),
129
131
  reverse=True,
130
132
  )[:25])
131
133
 
132
134
  print('Most common semantic types')
133
- Counter(type(item).__name__ for item in semantic_elements).most_common(30)`,
135
+ Counter(item.type for item in semantic_elements).most_common(30)`,
134
136
  ],
135
137
  },
136
138
  {
@@ -140,8 +142,8 @@ Counter(type(item).__name__ for item in semantic_elements).most_common(30)`,
140
142
  codeCells: [
141
143
  `from IPython.display import display
142
144
 
143
- usages = list(model.elements(syside.Usage, include_subtypes=True))
144
- definitions = list(model.elements(syside.Definition, include_subtypes=True))
145
+ usages = model.elements('Usage', include_subtypes=True)
146
+ definitions = model.elements('Definition', include_subtypes=True)
145
147
  semantic_elements = usages + definitions
146
148
 
147
149
  unnamed = [item for item in semantic_elements if not (item.name or item.declared_name)]
@@ -151,15 +153,15 @@ for item in semantic_elements:
151
153
  name = str(value) if value else None
152
154
  if name:
153
155
  by_name[name].append(item)
154
- duplicates = [(name, len(items), sorted({type(item).__name__ for item in items})) for name, items in by_name.items() if len(items) > 1]
156
+ duplicates = [(name, len(items), sorted({item.type for item in items})) for name, items in by_name.items() if len(items) > 1]
155
157
  empty_definitions = [
156
158
  item for item in definitions
157
- if not any(isinstance(child, (syside.Usage, syside.Definition)) for child in item.owned_elements)
159
+ if not any(child.is_a('Usage', 'Definition') for child in item.owned_elements)
158
160
  ]
159
161
 
160
162
  display({
161
- 'parser/semantic errors': len(list(diagnostics.errors)),
162
- 'warnings': len(list(diagnostics.warnings)),
163
+ 'parser/semantic errors': len(diagnostics.errors),
164
+ 'warnings': len(diagnostics.warnings),
163
165
  'unnamed usages or definitions': len(unnamed),
164
166
  'repeated qualified names': len(duplicates),
165
167
  'definitions with no owned usages/definitions': len(empty_definitions),
@@ -169,9 +171,9 @@ print('Repeated qualified names (first 30)')
169
171
  display(sorted(duplicates, key=lambda item: item[1], reverse=True)[:30])
170
172
 
171
173
  print('Empty definition candidates (first 30)')
172
- [(type(item).__name__, item.qualified_name or item.name) for item in empty_definitions[:30]]`,
174
+ [(item.type, item.qualified_name or item.name) for item in empty_definitions[:30]]`,
173
175
  `print('First diagnostics to investigate')
174
- for diagnostic in list(diagnostics.errors)[:20] + list(diagnostics.warnings)[:20]:
176
+ for diagnostic in diagnostics.errors[:20] + diagnostics.warnings[:20]:
175
177
  print(diagnostic)`,
176
178
  ],
177
179
  },
@@ -183,8 +185,8 @@ for diagnostic in list(diagnostics.errors)[:20] + list(diagnostics.warnings)[:20
183
185
  `QUERY = '' # Example: 'pump', 'controller', 'safety', or a requirement name
184
186
 
185
187
  semantic_elements = (
186
- list(model.elements(syside.Usage, include_subtypes=True))
187
- + list(model.elements(syside.Definition, include_subtypes=True))
188
+ model.elements('Usage', include_subtypes=True)
189
+ + model.elements('Definition', include_subtypes=True)
188
190
  )
189
191
 
190
192
  def label(element):
@@ -200,20 +202,20 @@ else:
200
202
  matches = [item for item in semantic_elements if QUERY.casefold() in label(item).casefold()]
201
203
  print(f'{len(matches)} match(es) for {QUERY!r}')
202
204
 
203
- [(type(item).__name__, label(item)) for item in matches[:100]]`,
205
+ [(item.type, label(item)) for item in matches[:100]]`,
204
206
  `def neighborhood(element):
205
207
  owner = getattr(element, 'owner', None)
206
- children = [child for child in element.owned_elements if isinstance(child, (syside.Usage, syside.Definition))]
208
+ children = [child for child in element.owned_elements if child.is_a('Usage', 'Definition')]
207
209
  related = []
208
210
  for relationship in element.owned_relationships:
209
211
  for candidate in relationship.related_elements:
210
212
  if candidate is not element:
211
213
  related.append(candidate)
212
214
  return {
213
- 'selected': (type(element).__name__, label(element)),
214
- 'owner': None if owner is None else (type(owner).__name__, label(owner)),
215
- 'children': [(type(child).__name__, label(child)) for child in children[:50]],
216
- 'directly related': [(type(item).__name__, label(item)) for item in related[:50]],
215
+ 'selected': (element.type, label(element)),
216
+ 'owner': None if owner is None else (owner.type, label(owner)),
217
+ 'children': [(child.type, label(child)) for child in children[:50]],
218
+ 'directly related': [(item.type, label(item)) for item in related[:50]],
217
219
  }
218
220
 
219
221
  [neighborhood(item) for item in matches[:10]]`,
@@ -234,9 +236,7 @@ type_names = [
234
236
  ]
235
237
  counts = {}
236
238
  for type_name in type_names:
237
- node_type = getattr(syside, type_name, None)
238
- if node_type is not None:
239
- counts[type_name] = len(list(model.elements(node_type)))
239
+ counts[type_name] = len(model.elements(type_name))
240
240
 
241
241
  palette = ['#2d8d70', '#3887c7', '#e58a2b', '#8357b6', '#cf5c62', '#4f9d9d']
242
242
  largest = max(counts.values(), default=1)
@@ -248,9 +248,9 @@ for index, (name, count) in enumerate(sorted(counts.items(), key=lambda item: it
248
248
  <div>{escape(name)}</div><div style="background:#edf2f4;border-radius:6px;overflow:hidden"><div style="width:{width:.1f}%;height:20px;background:{color}"></div></div><strong>{count:,}</strong>
249
249
  </div>''')
250
250
 
251
- error_count = len(list(diagnostics.errors))
252
- warning_count = len(list(diagnostics.warnings))
253
- info_count = len(list(diagnostics.infos))
251
+ error_count = len(diagnostics.errors)
252
+ warning_count = len(diagnostics.warnings)
253
+ info_count = len(diagnostics.infos)
254
254
  total_diagnostics = max(1, error_count + warning_count + info_count)
255
255
  diagnostic_gradient = (
256
256
  f'#cf5c62 0 {error_count / total_diagnostics * 100:.1f}%, '
@@ -279,8 +279,8 @@ display(HTML(f'''<div style="font-family:system-ui;max-width:900px">
279
279
  from IPython.display import SVG, display
280
280
 
281
281
  semantic_elements = (
282
- list(model.elements(syside.Usage, include_subtypes=True))
283
- + list(model.elements(syside.Definition, include_subtypes=True))
282
+ model.elements('Usage', include_subtypes=True)
283
+ + model.elements('Definition', include_subtypes=True)
284
284
  )
285
285
 
286
286
  def node_name(element):
@@ -290,7 +290,7 @@ def node_name(element):
290
290
  # Prefer named elements with semantic children, then fill with other named elements.
291
291
  ranked = sorted(
292
292
  (item for item in semantic_elements if item.name or item.declared_name),
293
- key=lambda item: sum(isinstance(child, (syside.Usage, syside.Definition)) for child in item.owned_elements),
293
+ key=lambda item: sum(child.is_a('Usage', 'Definition') for child in item.owned_elements),
294
294
  reverse=True,
295
295
  )
296
296
  selected = ranked[:60]
@@ -322,7 +322,7 @@ for item in selected:
322
322
  if owner is not None and id(owner) in selected_ids:
323
323
  ox, oy = positions[id(owner)]
324
324
  edges.append(f'<path d="M {ox + 190} {oy + 20} C {ox + 215} {oy + 20}, {x - 25} {y + 20}, {x} {y + 20}" fill="none" stroke="#91a7b3" stroke-width="1.5"/>')
325
- kind = type(item).__name__
325
+ kind = item.type
326
326
  fill = colors.get(kind, '#f4f6f7')
327
327
  label = escape(node_name(item)[:27])
328
328
  nodes.append(f'<g><rect x="{x}" y="{y}" width="190" height="40" rx="7" fill="{fill}" stroke="#547180"/><text x="{x + 9}" y="{y + 17}" font-size="11" font-weight="700">{label}</text><text x="{x + 9}" y="{y + 32}" font-size="9" fill="#587487">{kind}</text></g>')
@@ -345,8 +345,8 @@ NAME_FILTER = '' # Case-insensitive name fragment
345
345
  ROW_LIMIT = 250
346
346
 
347
347
  semantic_elements = (
348
- list(model.elements(syside.Usage, include_subtypes=True))
349
- + list(model.elements(syside.Definition, include_subtypes=True))
348
+ model.elements('Usage', include_subtypes=True)
349
+ + model.elements('Definition', include_subtypes=True)
350
350
  )
351
351
 
352
352
  def text(value):
@@ -354,7 +354,7 @@ def text(value):
354
354
 
355
355
  records = []
356
356
  for item in semantic_elements:
357
- kind = type(item).__name__
357
+ kind = item.type
358
358
  name = text(item.name or item.declared_name)
359
359
  qualified_name = text(item.qualified_name)
360
360
  owner = getattr(item, 'owner', None)
@@ -388,7 +388,7 @@ function markdownCell(starter) {
388
388
  return {
389
389
  cell_type: 'markdown',
390
390
  metadata: {},
391
- source: [`# ${starter.title}\n\n${starter.description}\n\nThis sample uses only standard SysML v2 concepts and automatically discovers the project's \`model/\` or \`src/\` directory.`],
391
+ source: [`# ${starter.title}\n\n${starter.description}\n\nThis sample uses only standard SysML v2 concepts and reads the model through \`memo_model.py\`, compiled by the project's selected compiler.`],
392
392
  };
393
393
  }
394
394
  function codeCell(source) {
@@ -408,10 +408,15 @@ function notebook(starter) {
408
408
  nbformat_minor: 5,
409
409
  };
410
410
  }
411
+ /** The notebooks' model access, shipped beside the compiled library. */
412
+ export const MEMO_MODEL_MODULE = fileURLToPath(new URL('../python/memo_model.py', import.meta.url));
411
413
  /** Add model-independent Jupyter samples to a newly initialized project. */
412
414
  export function scaffoldAnalysisSamples(projectDir) {
413
415
  const samplesDir = resolve(projectDir, 'analysis', 'Samples');
414
416
  mkdirSync(samplesDir, { recursive: true });
417
+ const modulePath = resolve(projectDir, 'analysis', 'memo_model.py');
418
+ if (!existsSync(modulePath))
419
+ copyFileSync(MEMO_MODEL_MODULE, modulePath);
415
420
  const readmePath = resolve(samplesDir, 'README.md');
416
421
  if (!existsSync(readmePath))
417
422
  writeFileSync(readmePath, SAMPLES_README);
@@ -1 +1 @@
1
- {"version":3,"file":"analysis-starters.js","sourceRoot":"","sources":["../src/analysis-starters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysis-starters.js","sourceRoot":"","sources":["../src/analysis-starters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type OutlineNode, type SourceOutline } from './source-outline.js';
2
+ /** `file#key:metaclass`. */
3
+ export declare function outlineIdentity(file: string, node: Pick<OutlineNode, 'key' | 'metaclass'>): string;
4
+ /** An identity's parts, or undefined for a string that is not one. */
5
+ export declare function parseOutlineIdentity(identity: string): {
6
+ file: string;
7
+ key: string;
8
+ metaclass: string;
9
+ } | undefined;
10
+ /**
11
+ * Every declaration of the outlines with an identity, by identity. A key that
12
+ * two declarations of one file share addresses neither, so it is left out
13
+ * rather than resolving to whichever came first.
14
+ */
15
+ export declare function outlineIdentities(outlines: Iterable<SourceOutline>): Map<string, {
16
+ outline: SourceOutline;
17
+ node: OutlineNode;
18
+ }>;
19
+ /**
20
+ * The element id → identity table a model update ships: an element is the
21
+ * declaration whose key is its id, in its file.
22
+ */
23
+ export declare function outlineIdentityTable(outlines: Iterable<SourceOutline>, elements: Iterable<{
24
+ id: string;
25
+ file?: string;
26
+ }>,
27
+ /** An element's file is absolute from some builders; the outline's is project-relative. */
28
+ projectRoot?: string): Record<string, string>;
29
+ /**
30
+ * The declaration an identity names in the file's current outline, or a
31
+ * `StaleIrIdentityError` saying why there is none.
32
+ */
33
+ export declare function resolveOutlineIdentity(outline: SourceOutline, identity: string): OutlineNode;
34
+ //# sourceMappingURL=outline-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outline-identity.d.ts","sourceRoot":"","sources":["../../src/authoring/outline-identity.ts"],"names":[],"mappings":"AAaA,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzF,4BAA4B;AAC5B,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,MAAM,CAElG;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAKnH;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAY/H;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,EACjC,QAAQ,EAAE,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACjD,2FAA2F;AAC3F,WAAW,CAAC,EAAE,MAAM,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAc5F"}
@@ -0,0 +1,95 @@
1
+ // ─── Identities from the source outline ──────────────────────────────────────
2
+ //
3
+ // An authoring write names its target by an identity: the file, the
4
+ // declaration's key in it and its metaclass —
5
+ // `model/methodology/project.sysml#Plant::pump:PartUsage`
6
+ // (plans/memo-write-back-from-handoff.md). It is minted from a source outline,
7
+ // so it reads the same whether a stage 1 handoff or MEMO's parse built the
8
+ // outline, and it survives an insertion elsewhere in the file. A rename or a
9
+ // deletion makes it stale, and resolving a stale identity fails loudly rather
10
+ // than editing a neighbour.
11
+ // ─────────────────────────────────────────────────────────────────────────────
12
+ import { isAbsolute, relative } from 'node:path';
13
+ import { outlineNodes } from './source-outline.js';
14
+ import { StaleIrIdentityError } from '../model/ir-identity.js';
15
+ /** `file#key:metaclass`. */
16
+ export function outlineIdentity(file, node) {
17
+ return `${file.replaceAll('\\', '/')}#${node.key}:${node.metaclass}`;
18
+ }
19
+ /** An identity's parts, or undefined for a string that is not one. */
20
+ export function parseOutlineIdentity(identity) {
21
+ const hash = identity.indexOf('#');
22
+ const colon = identity.lastIndexOf(':');
23
+ if (hash <= 0 || colon <= hash + 1 || identity[colon - 1] === ':')
24
+ return undefined;
25
+ return { file: identity.slice(0, hash), key: identity.slice(hash + 1, colon), metaclass: identity.slice(colon + 1) };
26
+ }
27
+ /**
28
+ * Every declaration of the outlines with an identity, by identity. A key that
29
+ * two declarations of one file share addresses neither, so it is left out
30
+ * rather than resolving to whichever came first.
31
+ */
32
+ export function outlineIdentities(outlines) {
33
+ const found = new Map();
34
+ const ambiguous = new Set();
35
+ for (const outline of outlines) {
36
+ for (const node of outlineNodes(outline)) {
37
+ const identity = outlineIdentity(outline.file, node);
38
+ if (found.has(identity))
39
+ ambiguous.add(identity);
40
+ else
41
+ found.set(identity, { outline, node });
42
+ }
43
+ }
44
+ for (const identity of ambiguous)
45
+ found.delete(identity);
46
+ return found;
47
+ }
48
+ /**
49
+ * The element id → identity table a model update ships: an element is the
50
+ * declaration whose key is its id, in its file.
51
+ */
52
+ export function outlineIdentityTable(outlines, elements,
53
+ /** An element's file is absolute from some builders; the outline's is project-relative. */
54
+ projectRoot) {
55
+ const byFileKey = new Map();
56
+ for (const identity of outlineIdentities(outlines).keys()) {
57
+ const parts = parseOutlineIdentity(identity);
58
+ const fileKey = `${parts.file}#${parts.key}`;
59
+ // One file and key with two metaclasses is no address either.
60
+ byFileKey.set(fileKey, byFileKey.has(fileKey) ? '' : identity);
61
+ }
62
+ const table = {};
63
+ for (const element of elements) {
64
+ if (!element.file)
65
+ continue;
66
+ const file = projectRoot && isAbsolute(element.file) ? relative(projectRoot, element.file) : element.file;
67
+ const identity = byFileKey.get(`${file.replaceAll('\\', '/')}#${element.id}`);
68
+ if (identity)
69
+ table[element.id] = identity;
70
+ }
71
+ return table;
72
+ }
73
+ /**
74
+ * The declaration an identity names in the file's current outline, or a
75
+ * `StaleIrIdentityError` saying why there is none.
76
+ */
77
+ export function resolveOutlineIdentity(outline, identity) {
78
+ const parts = parseOutlineIdentity(identity);
79
+ if (!parts)
80
+ throw new StaleIrIdentityError(identity, 'it is not an identity this revision minted');
81
+ if (parts.file !== outline.file.replaceAll('\\', '/')) {
82
+ throw new StaleIrIdentityError(identity, `it names ${parts.file}, not ${outline.file}`);
83
+ }
84
+ const matches = [...outlineNodes(outline)].filter(node => node.key === parts.key);
85
+ if (matches.length === 0)
86
+ throw new StaleIrIdentityError(identity, 'no declaration in the file has that name now');
87
+ if (matches.length > 1)
88
+ throw new StaleIrIdentityError(identity, 'more than one declaration in the file has that name');
89
+ const node = matches[0];
90
+ if (node.metaclass !== parts.metaclass) {
91
+ throw new StaleIrIdentityError(identity, `it now names a ${node.metaclass}, not a ${parts.metaclass}`);
92
+ }
93
+ return node;
94
+ }
95
+ //# sourceMappingURL=outline-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outline-identity.js","sourceRoot":"","sources":["../../src/authoring/outline-identity.ts"],"names":[],"mappings":"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"}