@memoarchitect/tools 0.13.0 → 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 -267
  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 +129 -30
  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 -3565
  769. package/packages/tools/lib/language/generated/ast.d.ts.map +0 -1
  770. package/packages/tools/lib/language/generated/ast.js +0 -2975
  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 -10643
  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 -2103
  787. package/packages/tools/lib/model/builder.js.map +0 -1
  788. package/packages/tools/lib/model/package-registry.d.ts +0 -62
  789. package/packages/tools/lib/model/package-registry.d.ts.map +0 -1
  790. package/packages/tools/lib/model/package-registry.js +0 -175
  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 -1056
@@ -1,53 +1,39 @@
1
1
  #!/usr/bin/env node
2
- // ─── MEMO CLI Entry Point ────────────────────────────────────────────────────
2
+ // ─── MEMO Tools CLI ────────────────────────────────────────────────────────
3
3
  //
4
- // Commands:
5
- // memo validate — Validate model against closure rules
6
- // memo init — Scaffold a new project
7
- // memo pack — Package the model as a KPAR archive
8
- // memo export json — Export model as JSON
9
- // memo export dot — Export model as Graphviz DOT
10
- // memo ontology show — Show resolved ontology summary
11
- // memo ontology export— Export ontology as OWL/RDF or a SysAnd project
12
- // memo check — Check model compatibility (--sysml-compat)
13
- // memo round-trip — Predict round-trip conformance with external tools
4
+ // Compile a model with the selected SysML compiler, validate it, and pack it.
5
+ // memo compile — is this valid SysML (stage 1)
6
+ // memo validate — the model against the rules, and completeness
7
+ // memo toolchain check — the validator over files that are not a model
8
+ // memo pack — package a model or package (a KPAR, or MEMO's own bundle)
9
+ // memo ship-library — a package's compiled library, for the package to carry
10
+ //
11
+ // Creating a model, authoring, packaging, exporting, settings and the rest
12
+ // are memo-architect's commands. The old names here fail loudly for one
13
+ // release and name where each went.
14
14
  // ─────────────────────────────────────────────────────────────────────────────
15
15
  import { Command } from 'commander';
16
+ import { memoVersion } from '../version.js';
16
17
  import { validateCommand } from '../commands/validate.js';
17
- import { initCommand, listExamplesCommand, listTemplatesCommand } from '../commands/init.js';
18
18
  import { packCommand } from '../commands/pack.js';
19
- import { exportJsonCommand, exportDotCommand } from '../commands/export.js';
20
- import { exportDhfCommand, dhfStatusCommand, dhfSnapshotCommand, dhfDiffCommand, dhfRedlineCommand, dhfReviewPacketCommand, } from '../commands/dhf.js';
21
- import { ontologyShowCommand, ontologyExportOwlCommand, ontologyExportSysandCommand, ontologyAddKindCommand, } from '../commands/ontology.js';
22
- import { importCsvCommand, importRelCsvCommand, importTemplateCommand, importDiffCommand } from '../commands/import.js';
23
- import { importEaCommand, importCameoCommand } from '../commands/import-ea.js';
24
- import { importSysandCommand } from '../commands/import-sysand.js';
25
- import { importKpar, inspectKpar } from '../commands/package.js';
26
- import { importOwlCommand } from '../commands/import-owl.js';
27
19
  import { sysandPublishCommand } from '../commands/sysand-publish.js';
28
- import { lockCommand } from '../commands/lock.js';
29
- import { installCommand } from '../commands/install.js';
30
- import { createPackageCommand } from '../commands/create-package.js';
31
- import { askCommand } from '../commands/ask.js';
32
- import { mcpCommand, mcpInitCommand } from '../commands/mcp.js';
33
- import { generateCommand } from '../commands/generate.js';
34
- import { dhfDraftCommand } from '../commands/dhf-draft.js';
35
- import { dhfLintCommand } from '../commands/dhf-lint.js';
36
- import { dhfInitCommand } from '../commands/dhf-init.js';
37
- import { dhfPreviewCommand } from '../commands/dhf-preview.js';
38
- import { standardsCheckCommand } from '../commands/standards.js';
39
- import { pluginListCommand, pluginCreateCommand, pluginRunCommand } from '../commands/plugin.js';
40
- import { reqNewCommand } from '../commands/req.js';
41
- import { checkCommand } from '../commands/check.js';
42
- import { roundTripCommand } from '../commands/roundtrip.js';
43
- import { rulesListCommand, rulesCheckCommand, rulesExplainCommand, rulesCoverageCommand } from '../commands/rules.js';
44
20
  import { inspectCommand } from '../commands/inspect.js';
45
- import { elementIdentitiesCommand, elementWriteCommand, } from '../commands/element.js';
46
- import { convertCommand } from '../commands/convert.js';
47
- import { configEffectiveCommand, toolchainProbeCommand } from '../commands/toolchain.js';
48
- import { conformanceBnfCommand, conformanceDiffXmiCommand, conformanceRulesCommand, conformanceRunCommand, } from '../commands/conformance.js';
21
+ import { rulesExplainCommand, rulesListCommand } from '../commands/rules.js';
22
+ import { standardsCheckCommand } from '../commands/standards.js';
23
+ import { retiredCommand } from '../commands/retired.js';
24
+ import { configEffectiveCommand, toolchainCheckCommand, toolchainProbeCommand, } from '../commands/toolchain.js';
49
25
  import { applyToolchainCliOptions } from '../toolchain/schema.js';
26
+ import { compileCommand } from '../commands/compile.js';
27
+ import { pinnedTarget } from '../commands/pinned-target.js';
28
+ import { pruneCommand } from '../commands/prune.js';
29
+ import { shipLibraryCommand } from '../commands/ship-library.js';
50
30
  import { defaultRegistry } from '../toolchain/default-registry.js';
31
+ import chalk from 'chalk';
32
+ import { Stage1RejectedError } from '../toolchain/project-model.js';
33
+ import { ToolchainNotConfiguredError } from '../toolchain/effective.js';
34
+ import { ProjectNamesUserSettingError } from '../toolchain/ownership.js';
35
+ import { setCommandLineToolchain } from '../model/config-loader.js';
36
+ import { toolchainOverridesFromCliOptions } from '../toolchain/schema.js';
51
37
  const program = new Command();
52
38
  /**
53
39
  * Add the generated `--toolchain.*` options to a command.
@@ -60,613 +46,176 @@ const withToolchainOptions = (command) => applyToolchainCliOptions(command, defa
60
46
  program
61
47
  .name('memo')
62
48
  .description('MEMO — Model-Based Systems Engineering for Medical Devices')
63
- .version('0.6.7');
49
+ .version(memoVersion());
64
50
  withToolchainOptions(program
65
- .command('validate')
66
- .description('Validate the model against closure rules and show completeness')
67
- .argument('[dir]', 'Project directory', '.')
68
- .option('--format <format>', 'Output format: text, junit, json', 'text')
69
- .option('-o, --output <file>', 'Write output to file instead of stdout')).action(async (dir, opts) => {
70
- await validateCommand(dir, { ...opts, format: opts.format, output: opts.output });
71
- });
72
- program
73
- .command('inspect <id>')
74
- .description('Inspect a model element or relationship')
75
- .option('--provenance', 'Show declaration and classifier provenance only')
76
- .option('-d, --dir <dir>', 'Project directory', '.')
77
- .action(async (id, options) => {
78
- await inspectCommand(id, options);
79
- });
80
- // ─── memo element ───────────────────────────────────────────────────────────
81
- //
82
- // The CLI surface for authoring write-back, so the operation Architect calls is
83
- // scriptable too (§1.2.2 rule 2). Same implementation, same lowering provider.
84
- const elementCmd = program
85
- .command('element')
86
- .description('Author project source through the toolchain');
87
- withToolchainOptions(elementCmd
88
- .command('identities')
89
- .description('Print the IR identity to quote when writing to each element')
90
- .argument('[dir]', 'Project directory', '.')
91
- .option('--id <id>', 'Restrict output to one element')
92
- .option('--format <format>', 'Output format: text, json', 'text')).action(async (dir, opts) => {
93
- await elementIdentitiesCommand(dir, opts);
94
- });
95
- withToolchainOptions(elementCmd
96
- .command('write')
97
- .description('Write one element back to source and recompile')
98
- .argument('[dir]', 'Project directory', '.')
99
- .option('--id <id>', 'Element ID to create or update')
100
- .option('--name <name>', 'Display name')
101
- .option('--kind <kind>', 'Ontology kind')
102
- .option('--construct <construct>', 'SysML construct, e.g. part, action, requirement')
103
- .option('--layer <layer>', 'MEMO layer')
104
- .option('--doc <text>', 'Documentation body')
105
- .option('--attribute <key=value...>', 'Attribute assignment, repeatable')
106
- .option('--file <path>', 'Project-relative source file to write into')
107
- .option('--ir-identity <identity>', 'IR identity of the declaration being updated')
108
- .option('--renamed-from <id>', 'Previous element ID, when this write renames the declaration')
109
- .option('--by-id', 'Resolve the identity from --id instead of quoting one (cannot detect a stale view)')
110
- .option('--request <file>', 'JSON file holding the whole write request')
111
- .option('--format <format>', 'Output format: text, json', 'text')).action(async (dir, opts) => {
112
- await elementWriteCommand(dir, opts);
113
- });
114
- program
115
- .command('init')
116
- .description('Scaffold a new MEMO project')
117
- .argument('[name]', 'Project directory (omit or "." to initialize the current directory)')
118
- .option('-t, --template <id>', 'Create from an ontology template')
119
- .option('--ontology <package>', 'Logical ontology package to use (defaults from the content manifest)')
120
- .option('--example <id>', 'Create from an example project (e.g. gpca)')
121
- .option('--list', 'List installed ontology templates and examples')
122
- .option('--no-install', 'Create the project without running npm install')
123
- .action(async (name, options) => {
124
- await initCommand(name, options);
51
+ .command('ship-library')
52
+ .description("Export a package's library set with the selected compiler, for the package to carry (stage1/)")
53
+ .argument('[dir]', 'Package directory whose manifest offers the library roots', '.')
54
+ .option('--out <dir>', 'Directory to write the shipped files to (default: <dir>/stage1)')).action(async (dir, opts) => {
55
+ await shipLibraryCommand(dir, opts);
125
56
  });
126
- program
127
- .command('convert')
128
- .description('Restructure a project into the native catalog layout (dry run unless --write)')
129
- .argument('[dir]', 'Project directory', '.')
130
- .option('--write', 'Apply the plan. Without it the command only reports what would change.')
131
- .option('--diff', 'Include per-file content hunks in the report')
132
- .option('--json', 'Emit the plan as JSON')
133
- .option('--normalize-names', 'Also rename in-place packages whose names do not mirror their location')
134
- .action(async (dir, options) => {
135
- await convertCommand(dir, options);
57
+ withToolchainOptions(program
58
+ .command('compile')
59
+ .description('Check the model is valid SysML with the selected compiler (stage 1); no MEMO rules')
60
+ .argument('[dir]', 'Model directory', '.')
61
+ .option('--at <ref>', 'Compile the model as it was at this commit, tag or branch (a cached worktree under .memo/pinned)')
62
+ .option('--release <record>', 'Compile the SoS version a release record names: the version\'s commit with each system from its own release\'s commit')
63
+ .option('--strict-ontology', 'With --at or --release: refuse when the commit was made with another ontology version than this run would use')
64
+ .option('--force', 'Compile even when the stage 1 output in .memo/stage1 is fresh')
65
+ .option('--out <file>', 'Write the compiled SysML v2 model (API JSON, diagnostics, element index) to this file')
66
+ .option('--inspect <id>', 'Instead of compiling, show a model element or relationship')
67
+ .option('--provenance', 'With --inspect: only the declaration and classifier provenance')
68
+ .option('--probe', 'Instead of compiling, show which provider fills each role, its executable and version')
69
+ .option('--effective', 'Instead of compiling, print the settings that are in effect, after flags and the environment')
70
+ .option('--format <format>', 'With --probe or --effective: text, json, yaml', undefined)).action(async (dir, opts) => {
71
+ // The read-only reports are flags of compile and validate, not commands of their own.
72
+ if (opts.inspect)
73
+ return inspectCommand(String(opts.inspect), { provenance: opts.provenance === true, dir });
74
+ if (opts.probe)
75
+ return toolchainProbeCommand(dir, { ...opts, format: opts.format });
76
+ if (opts.effective)
77
+ return configEffectiveCommand(dir, { ...opts, format: opts.format ?? 'yaml' });
78
+ const pinned = await pinnedTarget(dir, opts);
79
+ if (pinned)
80
+ console.error(chalk.gray(`(${pinned.label})`));
81
+ await compileCommand(pinned ? pinned.dir : dir, pinned ? { ...opts, at: undefined, release: undefined } : opts);
136
82
  });
137
- program
138
- .command('examples')
139
- .description('List installed worked examples and the IDs accepted by memo init --example')
140
- .action(() => listExamplesCommand());
141
- const packageCmd = program.command('package').description('Inspect and import interoperable KPAR libraries');
142
- packageCmd.command('inspect').argument('<archive>').action((archive) => console.log(JSON.stringify(inspectKpar(archive), null, 2)));
143
- packageCmd.command('import').argument('<archive>').option('-C, --project <dir>', 'Project directory', '.').action((archive, options) => console.log(JSON.stringify(importKpar(options.project, archive), null, 2)));
144
- program
145
- .command('templates')
146
- .description('List installed project templates and the IDs accepted by memo init --template')
147
- .action(() => listTemplatesCommand());
148
83
  withToolchainOptions(program
149
84
  .command('pack')
150
- .description('Package the model as a MEMO bundle (not an interoperable KPAR)')
151
- .option('-o, --output <file>', 'Output .memo-bundle path')).action(async (options) => {
85
+ .description('Package the model or package you are in, with toolchain.packager: a KPAR (sysand) or MEMO\'s own bundle (internal)')
86
+ .option('-o, --output <file>', 'Output file (default: <name>-<version>.kpar for sysand, <name>.memo-bundle otherwise)')).action(async (options) => {
152
87
  await packCommand({ ...options, output: options.output });
153
88
  });
154
- // ─── memo toolchain ─────────────────────────────────────────────────────────
155
- const toolchainCmd = program
156
- .command('toolchain')
157
- .description('Inspect the configured SysML toolchain');
158
- withToolchainOptions(toolchainCmd
159
- .command('probe')
160
- .description('Resolve each role to a provider and report its executable and version')
161
- .argument('[dir]', 'Project directory', '.')
162
- .option('--format <format>', 'Output format: text, json, yaml', 'text')).action(async (dir, opts) => {
163
- await toolchainProbeCommand(dir, { ...opts, format: opts.format });
164
- });
165
- // ─── memo conformance ───────────────────────────────────────────────────────
166
- //
167
- // Its own command, reached no other way. Nothing in `validate`, `dev`, `build`
168
- // or Architect's refresh calls into `conformance/`: a sweep grades MEMO against
169
- // the OMG's published files, which is a question about MEMO and not about the
170
- // project the user is working on.
171
- const conformanceCmd = program
172
- .command('conformance')
173
- .description('Run the toolchain against the pinned SysML v2 Release corpus');
174
- withToolchainOptions(conformanceCmd
175
- .command('run')
176
- .description('Validate and lower the corpus; report diagnostic counts by domain')
177
- .argument('[dir]', 'Project whose toolchain settings select the providers', '.')
178
- .option('--corpus <dir>', 'Corpus directory (defaults to the vendored one)')
179
- .option('--unit <id...>', 'Corpus units to run; a prefix selects a group')
180
- .option('--format <format>', 'Output format: text, json', 'text')
181
- .option('-o, --output <file>', 'Write the report to a file instead of stdout')
182
- .option('--verify <scope>', 'Checksum scope: sources, full, skipped', 'sources')
183
- .option('--baseline [file]', 'Compare against a frozen baseline and fail on any change')
184
- .option('--update-baseline', 'Re-freeze the baseline from this run')).action(async (dir, opts) => {
185
- await conformanceRunCommand(dir, opts);
186
- });
187
- withToolchainOptions(conformanceCmd
188
- .command('diff-xmi')
189
- .description("Compare MEMO's computed semantics against the Release xmi.implied files")
190
- .argument('[dir]', 'Project whose toolchain settings select the lowering provider', '.')
191
- .option('--corpus <dir>', 'Corpus directory (defaults to the vendored one)')
192
- .option('--library <path...>', 'Library sources to compare, e.g. Parts.sysml')
193
- .option('--format <format>', 'Output format: text, json', 'text')
194
- .option('-o, --output <file>', 'Write the report to a file instead of stdout')
195
- .option('--verify <scope>', 'Checksum scope: sources, skipped', 'sources')
196
- .option('--baseline [file]', 'Compare against a frozen baseline and fail on any change')
197
- .option('--update-baseline', 'Re-freeze the baseline from this run')).action(async (dir, opts) => {
198
- await conformanceDiffXmiCommand(dir, opts);
199
- });
200
- conformanceCmd
201
- .command('bnf')
202
- .description("Score the grammar's rule coverage against the normative textual BNF")
203
- .argument('[dir]', 'Unused; accepted so every conformance subcommand takes the same shape', '.')
204
- .option('--corpus <dir>', 'Corpus directory (defaults to the vendored one)')
205
- .option('--grammar <file>', "Grammar to score (defaults to MEMO's)")
206
- .option('--missing', 'List the syntactic productions with no rule')
207
- .option('--format <format>', 'Output format: text, json', 'text')
208
- .option('-o, --output <file>', 'Write the report to a file instead of stdout')
209
- .option('--baseline [file]', 'Compare against a frozen baseline and fail on any change')
210
- .option('--update-baseline', 'Re-freeze the baseline from this run')
211
- .action(async (dir, opts) => {
212
- await conformanceBnfCommand(dir, opts);
213
- });
214
- conformanceCmd
215
- .command('rules')
216
- .description("Score MEMO's well-formedness constraints against Syside's published rule codes")
217
- .argument('[dir]', 'Unused; accepted so every conformance subcommand takes the same shape', '.')
218
- .option('--missing', 'List the codes with no implementation, and why')
219
- .option('--format <format>', 'Output format: text, json', 'text')
220
- .option('-o, --output <file>', 'Write the report to a file instead of stdout')
221
- .action(async (dir, opts) => {
222
- await conformanceRulesCommand(dir, opts);
223
- });
224
- // ─── memo config ────────────────────────────────────────────────────────────
225
- const configCmd = program
226
- .command('config')
227
- .description('Inspect resolved application settings');
228
- withToolchainOptions(configCmd
229
- .command('effective')
230
- .description('Print settings after flags, the deprecated alias, and defaults are applied')
231
- .argument('[dir]', 'Project directory', '.')
232
- .option('--format <format>', 'Output format: yaml, json', 'yaml')).action(async (dir, opts) => {
233
- await configEffectiveCommand(dir, { ...opts, format: opts.format });
234
- });
235
- const exportCmd = program
236
- .command('export')
237
- .description('Export model to various formats');
238
- exportCmd
239
- .command('json')
240
- .description('Export full model as JSON')
241
- .option('-o, --output <file>', 'Output file path', 'memo-model.json')
242
- .option('--no-pretty', 'Minified JSON output')
243
- .action(async (options) => {
244
- await exportJsonCommand(options);
245
- });
246
- exportCmd
247
- .command('dhf')
248
- .description('Export DHF documents (HTML, Markdown, DOCX)')
249
- .option('-o, --output <dir>', 'Output directory', 'dhf-output')
250
- .option('-t, --target <id>', 'Target document ID (e.g., rmp, har, fmea)')
251
- .option('-f, --format <fmt>', 'Output format: html, md, docx', 'html')
252
- .option('-g, --group <group>', 'Document group: risk, design, verification, compliance, all')
253
- .action(async (options) => {
254
- await exportDhfCommand(options);
255
- });
256
- exportCmd
257
- .command('dot')
258
- .description('Export model as Graphviz DOT format')
259
- .option('-o, --output <file>', 'Output file path', 'memo-model.dot')
260
- .option('--viewpoint <id>', 'Filter by viewpoint ID')
261
- .action(async (options) => {
262
- await exportDotCommand(options);
263
- });
264
- program
265
- .command('create-package')
266
- .description('Scaffold a new MEMO package (ontology, profile, or library)')
267
- .argument('<name>', 'Package name (e.g., @myorg/cardiac-ontology)')
268
- .option('-t, --type <type>', 'Package type: ontology, profile, library, device', 'ontology')
269
- .option('-e, --extends <package>', 'Package to extend (auto-set for profiles)')
270
- .option('-d, --description <desc>', 'Package description')
271
- .option('--author <author>', 'Package author')
272
- .option('--license <license>', 'License', 'Apache-2.0')
273
- .option('-o, --output <dir>', 'Output base directory', '.')
274
- .action(async (name, options) => {
275
- await createPackageCommand(name, options);
276
- });
277
- program
278
- .command('install')
279
- .description('Install locked MEMO content, or add a package from git, npm, or a local path')
280
- .argument('[source]', 'Optional package source: git URL, npm package name, or local path')
281
- .option('--mode <mode>', 'Force install mode: git, npm, or local')
282
- .action(async (source, options) => {
283
- await installCommand(source, options);
284
- });
285
- program
286
- .command('lock')
287
- .description('Regenerate memo.lock.yaml from the current ontology')
288
- .action(async () => {
289
- await lockCommand();
290
- });
291
- // ─── memo ontology ──────────────────────────────────────────────────────────
292
- const ontologyCmd = program
293
- .command('ontology')
294
- .description('Ontology management commands');
295
- ontologyCmd
296
- .command('show')
297
- .description('Show resolved ontology summary (kinds, relationships, rules)')
298
- .action(async () => {
299
- await ontologyShowCommand();
300
- });
301
- const ontologyExportCmd = ontologyCmd
302
- .command('export')
303
- .description('Export ontology to standard formats');
304
- ontologyExportCmd
305
- .command('owl')
306
- .description('Export ontology as OWL/RDF (Turtle)')
307
- .option('-o, --output <file>', 'Output file path')
308
- .option('--namespace <uri>', 'Ontology namespace URI', 'https://sysand.dev/ontology/memo#')
309
- .action(async (options) => {
310
- await ontologyExportOwlCommand({ ...options, format: 'turtle' });
311
- });
312
- ontologyExportCmd
313
- .command('xml')
314
- .description('Export ontology as OWL/RDF (XML)')
315
- .option('-o, --output <file>', 'Output file path')
316
- .option('--namespace <uri>', 'Ontology namespace URI', 'https://sysand.dev/ontology/memo#')
317
- .action(async (options) => {
318
- await ontologyExportOwlCommand({ ...options, format: 'xml' });
319
- });
320
- ontologyExportCmd
321
- .command('sysand')
322
- .description('Export ontology dependency stack as a SysAnd project')
323
- .option('-o, --output <dir>', 'Output directory path')
324
- .action(async (options) => {
325
- await ontologyExportSysandCommand(options);
326
- });
327
- ontologyCmd
328
- .command('add-kind <name>')
329
- .description('Write a new SysML kind definition file into the local ontology folder')
330
- .requiredOption('-l, --layer <layer>', 'Ontology layer path (e.g. requirements, architecture/risk)')
331
- .option('-o, --output <dir>', 'Override output directory (default: ontology/<layer>)')
332
- .action((name, options) => {
333
- ontologyAddKindCommand(name, options);
334
- });
335
- // ─── memo import ──────────────────────────────────────────────────────────
336
- const importCmd = program
337
- .command('import')
338
- .description('Import models from CSV, Sparx EA, Cameo, SysAnd, or OWL/JSON-LD');
339
- importCmd
340
- .command('csv')
341
- .description('Import elements from a CSV file (generates .sysml)')
342
- .argument('<file>', 'CSV file path')
343
- .option('-o, --output <file>', 'Output .sysml file path')
344
- .option('--package <name>', 'SysML package name')
345
- .option('--dry-run', 'Preview generated SysML without writing')
346
- .action(async (file, options) => {
347
- await importCsvCommand(file, options);
348
- });
349
- importCmd
350
- .command('csv-rel')
351
- .description('Import relationships from a CSV file (generates .sysml)')
352
- .argument('<file>', 'CSV file path')
353
- .option('-o, --output <file>', 'Output .sysml file path')
354
- .option('--package <name>', 'SysML package name')
355
- .option('--dry-run', 'Preview generated SysML without writing')
356
- .action(async (file, options) => {
357
- await importRelCsvCommand(file, options);
358
- });
359
- importCmd
360
- .command('template')
361
- .description('Generate a template CSV based on the ontology (elements or relationships)')
362
- .argument('<type>', 'Template type: "elements" or "relationships"')
363
- .option('-o, --output <file>', 'Output CSV file path')
364
- .action(async (type, options) => {
365
- await importTemplateCommand(type, options);
366
- });
367
- importCmd
368
- .command('diff')
369
- .description('Preview what a CSV import would change without modifying the model')
370
- .argument('<file>', 'CSV file path')
371
- .option('--detect-removals', 'Also report elements in the model missing from the CSV')
372
- .action(async (file, options) => {
373
- await importDiffCommand(file, options);
374
- });
375
- importCmd
376
- .command('ea')
377
- .description('Import from Sparx EA JSON export (.json)')
378
- .argument('<file>', 'EA JSON export file')
379
- .option('-o, --output <file>', 'Output .sysml file path')
380
- .option('--package <name>', 'SysML package name')
381
- .option('--dry-run', 'Preview generated SysML without writing')
382
- .action(async (file, options) => {
383
- await importEaCommand(file, options);
384
- });
385
- importCmd
386
- .command('cameo')
387
- .description('Import from MagicDraw/Cameo XMI or JSON (.xml/.json)')
388
- .argument('<file>', 'Cameo XMI/XML or JSON file')
389
- .option('-o, --output <file>', 'Output .sysml file path')
390
- .option('--package <name>', 'SysML package name')
391
- .option('--dry-run', 'Preview generated SysML without writing')
392
- .action(async (file, options) => {
393
- await importCameoCommand(file, options);
394
- });
395
- importCmd
396
- .command('sysand')
397
- .description('Import a SysAnd project directory (.project.json + SysML files)')
398
- .argument('<dir>', 'SysAnd project directory')
399
- .option('--verify', 'Verify round-trip against current ontology')
400
- .action(async (dir, options) => {
401
- await importSysandCommand(dir, options);
402
- });
403
- importCmd
404
- .command('owl')
405
- .description('Import an OWL/Turtle or JSON-LD ontology')
406
- .argument('<file>', 'OWL/Turtle (.ttl/.owl) or JSON-LD (.jsonld/.json) file')
407
- .option('-o, --output <file>', 'Output .sysml file path')
408
- .option('--package <name>', 'SysML package name')
409
- .option('--package-dir <dir>', 'Create full ontology package directory')
410
- .option('--dry-run', 'Preview generated SysML without writing')
411
- .action(async (file, options) => {
412
- await importOwlCommand(file, options);
413
- });
414
- // ─── memo ask ────────────────────────────────────────────────────────────────
415
- program
416
- .command('ask')
417
- .description('Ask a question about the model using LLM')
418
- .argument('<question>', 'Natural language question about the model')
419
- .option('--layer <layer>', 'Filter context to a specific layer')
420
- .option('--kind <kind>', 'Filter context to a specific kind')
421
- .action(async (question, options) => {
422
- await askCommand(question, options);
89
+ withToolchainOptions(program
90
+ .command('publish')
91
+ .description('Dry run of publishing the package or model you are in: stages what `memo pack` stages and reports the artifact; writes and uploads nothing')
92
+ .option('-p, --package <name>', 'Check that this is the package named (by name or directory)')).action(async (options) => {
93
+ await sysandPublishCommand({ ...options, dryRun: true });
423
94
  });
424
- // ─── memo mcp ────────────────────────────────────────────────────────────────
425
- // `init` is a positional argument rather than a subcommand: commander binds an
426
- // option declared on both a command and its subcommand to the parent, so
427
- // `memo mcp init --project X` would silently lose --project.
428
- program
429
- .command('mcp')
430
- .description('Serve the model to AI coding tools over the Model Context Protocol')
431
- .argument('[action]', 'Omit to serve; "init" to register the server with Cursor')
432
- .option('--project <dir>', 'Project directory (defaults to the current one)')
433
- .option('--write', 'Enable the model-editing tools (read-only by default)')
434
- .option('--no-rules', 'With "init", skip writing .cursor/rules/memo.mdc')
435
- .action(async (action, options) => {
436
- if (action === 'init') {
437
- await mcpInitCommand({
438
- project: options.project,
439
- write: options.write,
440
- noRules: options.rules === false,
441
- });
95
+ withToolchainOptions(program
96
+ .command('validate')
97
+ .description('Validate the model against closure rules and show completeness')
98
+ .argument('[dir]', 'Model directory', '.')
99
+ .option('--format <format>', 'Output format: text, junit, json', 'text')
100
+ .option('-o, --output <file>', 'Write output to file instead of stdout')
101
+ .option('--no-server', 'Compile here even when `memo dev` is running for the model')
102
+ .option('--at <ref>', 'Validate the model as it was at this commit, tag or branch; writes nothing into the project')
103
+ .option('--release <record>', 'Validate the SoS version a release record names; writes nothing into the project')
104
+ .option('--strict-ontology', 'With --at or --release: refuse when the commit was made with another ontology version than this run would use')
105
+ .option('--workspace <name>', 'Validate one workspace: a System or the SystemOfSystems definition. Rules run on its elements over the whole model')
106
+ .option('--rules', 'Instead of validating, list the consistency rules in effect (--format text or json)')
107
+ .option('--rules-domain <domain>', 'With --rules: modelling, medicalDevice, organisation')
108
+ .option('--rules-obligation <obligation>', 'With --rules: required, recommended, bestPractice')
109
+ .option('--rules-category <category>', 'With --rules: invariant, assurance, methodology')
110
+ .option('--explain-rule <id>', 'Instead of validating, show one rule in detail (e.g. CR-MED-001)')
111
+ .option('--standards', 'Instead of validating, report clause coverage: required, claimed, evidenced')
112
+ .option('--standard <designation>', 'With --standards: only this standard (substring of the designation)')
113
+ .option('--regime <regime...>', 'With --standards: scope to these regimes, overriding what the model declares')
114
+ .option('--gaps-only', 'With --standards: only clauses nothing claims')).action(async (dir, opts) => {
115
+ // The read-only reports are flags of compile and validate, not commands of their own.
116
+ const reportFormat = opts.format === 'json' ? 'json' : 'text';
117
+ if (opts.format === 'junit' && (opts.rules || opts.explainRule || opts.standards)) {
118
+ console.error(chalk.red('✖ the rule and standards reports are text or json, not junit.'));
119
+ process.exitCode = 1;
442
120
  return;
443
121
  }
444
- if (action) {
445
- console.error(`Unknown action "${action}". Use \`memo mcp\` to serve, or \`memo mcp init\`.`);
446
- process.exit(1);
122
+ if (opts.rules)
123
+ return rulesListCommand(dir, { format: reportFormat, category: opts.rulesCategory, domain: opts.rulesDomain, obligation: opts.rulesObligation });
124
+ if (opts.explainRule)
125
+ return rulesExplainCommand(String(opts.explainRule), dir, { format: reportFormat });
126
+ if (opts.standards) {
127
+ return standardsCheckCommand({
128
+ standard: opts.standard, regime: opts.regime,
129
+ gapsOnly: opts.gapsOnly === true, json: reportFormat === 'json',
130
+ });
447
131
  }
448
- // Runs until the client closes stdin; stdout is reserved for JSON-RPC.
449
- await mcpCommand({ project: options.project, write: options.write, version: program.version() });
450
- });
451
- // ─── memo generate ───────────────────────────────────────────────────────────
452
- program
453
- .command('generate')
454
- .description('Generate SysML from a natural language description using LLM')
455
- .argument('<description>', 'Natural language description of what to generate')
456
- .option('-o, --output <file>', 'Output .sysml file path (preview if omitted)')
457
- .option('--dry-run', 'Preview generated SysML without writing')
458
- .action(async (description, options) => {
459
- await generateCommand(description, options);
460
- });
461
- // ─── memo req ────────────────────────────────────────────────────────────────
462
- const reqCmd = program
463
- .command('req')
464
- .description('Requirement authoring helpers');
465
- reqCmd
466
- .command('new')
467
- .description('Generate a requirement stub from an EARS template')
468
- .requiredOption('-t, --template <template>', 'Template: ubi, event, state, opt, unwanted')
469
- .option('-o, --output <file>', 'Write stub to file (stdout if omitted)')
470
- .option('--id <reqId>', 'Requirement ID', 'REQ-001')
471
- .option('--title <title>', 'Requirement title', 'New Requirement')
472
- .action(async (options) => {
473
- await reqNewCommand({
474
- template: options.template,
475
- output: options.output,
476
- id: options.id,
477
- title: options.title,
132
+ const pinned = await pinnedTarget(dir, opts);
133
+ if (pinned)
134
+ console.error(chalk.gray(`(${pinned.label})`));
135
+ await validateCommand(pinned ? pinned.dir : dir, {
136
+ ...opts, at: undefined, release: undefined, readOnly: pinned ? true : undefined,
137
+ format: opts.format, output: opts.output,
478
138
  });
479
139
  });
480
- // ─── memo plugin ─────────────────────────────────────────────────────────────
481
- const pluginCmd = program
482
- .command('plugin')
483
- .description('Plugin management commands');
484
- pluginCmd
485
- .command('list')
486
- .description('List configured plugins')
487
- .action(async () => {
488
- await pluginListCommand();
489
- });
490
- pluginCmd
491
- .command('create')
492
- .description('Scaffold a new plugin')
493
- .argument('<name>', 'Plugin name')
494
- .option('-t, --type <type>', 'Plugin type: export, analysis, validation, generator', 'export')
495
- .option('-d, --description <desc>', 'Plugin description')
496
- .option('-o, --output <dir>', 'Output directory')
497
- .action(async (name, options) => {
498
- await pluginCreateCommand(name, options);
499
- });
500
- pluginCmd
501
- .command('run')
502
- .description('Run a generator or analysis plugin')
503
- .argument('<id>', 'Plugin ID')
504
- .option('--json', 'Output results as JSON')
505
- .action(async (id, options) => {
506
- await pluginRunCommand(id, options);
507
- });
508
- // ─── memo dhf ────────────────────────────────────────────────────────────────
509
- const dhfCmd = program
510
- .command('dhf')
511
- .description('Design History File workbench');
512
- dhfCmd
513
- .command('init')
514
- .description('Scaffold DHF document set for your medical device project (interactive wizard)')
515
- .option('-d, --dir <path>', 'Project directory', '.')
516
- .action(async (options) => {
517
- await dhfInitCommand({ projectDir: options.dir });
518
- });
519
- dhfCmd
520
- .command('preview')
521
- .description('Start local DHF preview server with live reload')
522
- .option('-p, --port <port>', 'Server port', '3001')
523
- .action(async (options) => {
524
- await dhfPreviewCommand({ port: parseInt(options.port, 10) });
525
- });
526
- dhfCmd
527
- .command('lint')
528
- .description('Validate DHF templates against the ontology they query')
529
- .option('-f, --filter <prefix>', 'Only lint templates whose id starts with this prefix')
530
- .option('--structural-only', 'Skip ontology resolution; check frontmatter and query syntax only')
531
- .option('--json', 'Emit JSON for CI')
532
- .action(async (options) => {
533
- await dhfLintCommand(options);
534
- });
535
- dhfCmd
536
- .command('status')
537
- .description('Show DHF document readiness status')
538
- .option('-v, --verbose', 'Show section-level detail')
539
- .option('-t, --target <id>', 'Target document ID')
540
- .action(async (options) => {
541
- await dhfStatusCommand(options);
542
- });
543
- dhfCmd
544
- .command('snapshot')
545
- .description('Create a snapshot of current DHF document state')
546
- .option('-t, --target <id>', 'Target document ID (default: all)')
547
- .option('-l, --label <label>', 'Snapshot label')
548
- .action(async (options) => {
549
- await dhfSnapshotCommand(options);
550
- });
551
- dhfCmd
552
- .command('diff')
553
- .description('Compare current state against latest snapshot')
554
- .requiredOption('-t, --target <id>', 'Target document ID')
555
- .action(async (options) => {
556
- await dhfDiffCommand(options);
557
- });
558
- dhfCmd
559
- .command('redline')
560
- .description('Generate redline document showing changes from last snapshot')
561
- .requiredOption('-t, --target <id>', 'Target document ID')
562
- .option('-f, --format <fmt>', 'Output format: html, md, docx', 'html')
563
- .option('-o, --output <file>', 'Output file path')
564
- .action(async (options) => {
565
- await dhfRedlineCommand(options);
566
- });
567
- dhfCmd
568
- .command('draft')
569
- .description('Use LLM to draft content for gap sections in a DHF document')
570
- .requiredOption('-t, --target <id>', 'Target document ID (e.g., rmp, har, fmea)')
571
- .option('-s, --section <id>', 'Draft only a specific section')
572
- .option('-f, --format <fmt>', 'Output format: html, md, docx', 'html')
573
- .option('-o, --output <dir>', 'Output directory', 'dhf-drafts')
574
- .action(async (options) => {
575
- await dhfDraftCommand(options);
576
- });
577
- dhfCmd
578
- .command('review-packet')
579
- .description('Generate a complete review packet of all DHF documents')
580
- .option('-f, --format <fmt>', 'Output format: html, md, docx', 'html')
581
- .option('-o, --output <dir>', 'Output directory')
582
- .action(async (options) => {
583
- await dhfReviewPacketCommand(options);
584
- });
585
- // ─── memo standards ─────────────────────────────────────────────────────────
586
- const standardsCmd = program
587
- .command('standards')
588
- .description('Regulatory standards conformance');
589
- standardsCmd
140
+ // ─── memo toolchain ─────────────────────────────────────────────────────────
141
+ const toolchainCmd = program
142
+ .command('toolchain')
143
+ .description('Inspect the configured SysML toolchain');
144
+ withToolchainOptions(toolchainCmd
590
145
  .command('check')
591
- .description('Report clause coverage: required, claimed, and evidenced')
592
- .option('-s, --standard <designation>', 'Only this standard (substring of the designation)')
593
- .option('-r, --regime <regime...>', 'Scope to these regimes, overriding the project declaration')
594
- .option('--gaps-only', 'Show only clauses nothing claims')
595
- .option('--json', 'Emit JSON for CI and for the Architect')
596
- .action(async (options) => {
597
- await standardsCheckCommand(options);
598
- });
599
- // ─── memo sysand ────────────────────────────────────────────────────────────
600
- const sysandCmd = program
601
- .command('sysand')
602
- .description('SysAnd tool interop commands');
603
- sysandCmd
604
- .command('publish')
605
- .description('Validate and package ontology for SysAnd registry publication')
606
- .option('--dry-run', 'Validate without writing artifacts (default)')
607
- .option('-p, --package <name>', 'Publish a specific package from the config chain')
608
- .action(async (options) => {
609
- await sysandPublishCommand({ ...options, dryRun: options.dryRun ?? true });
610
- });
611
- // ─── memo check ─────────────────────────────────────────────────────────────
146
+ .description('Run the selected validator over these SysML paths, less the listed exceptions')
147
+ .argument('[paths...]', 'Files or directories, relative to the model directory', [])
148
+ .option('-p, --project <dir>', 'Model directory: settings, exceptions and relative paths', '.')
149
+ .option('--exceptions <file>', 'Exceptions register, relative to the model (default validator-exceptions.json)')).action(async (paths, opts) => {
150
+ await toolchainCheckCommand(paths, opts);
151
+ });
152
+ retiredCommand(toolchainCmd, 'probe', 'memo compile --probe');
153
+ // ─── Retired: conformance ───────────────────────────────────────────────────
154
+ retiredCommand(program, 'conformance', {
155
+ reason: 'it graded MEMO\'s own SysML compiler against the OMG corpus, and that compiler is gone. '
156
+ + 'The selected compiler is the authority on validity: `memo compile`.',
157
+ });
158
+ // ─── Retired: check, round-trip ──────────────────────────────────────────────
159
+ // Heuristic guesses at what external SysML tools accept, from before the
160
+ // selected compiler was the authority on validity; `memo compile` asks it.
161
+ retiredCommand(program, 'check', 'memo compile');
162
+ retiredCommand(program, 'round-trip', 'memo compile');
163
+ // ─── Moved to memo-architect ───────────────────────────────────────────────
164
+ // One way of doing a thing: these are `memo-architect <command>` now. The old
165
+ // names stay for one release, hidden, and fail naming the replacement.
166
+ retiredCommand(program, 'inspect', 'memo compile --inspect <id>');
167
+ retiredCommand(program, 'element', 'memo-architect element');
168
+ retiredCommand(program, 'init', 'memo-architect init');
169
+ retiredCommand(program, 'convert', 'memo-architect convert');
170
+ retiredCommand(program, 'package', 'memo-architect import kpar [--inspect] <archive>');
171
+ retiredCommand(program, 'config', 'memo compile --effective (what is in effect); memo-architect config (to change it)');
172
+ retiredCommand(program, 'export', 'memo-architect export');
173
+ retiredCommand(program, 'create-package', 'memo-architect new package');
174
+ retiredCommand(program, 'install', 'memo-architect install');
612
175
  program
613
- .command('check')
614
- .description('Check model compatibility with SysML v2 tools')
615
- .argument('[dir]', 'Project directory', '.')
616
- .option('--sysml-compat', 'Run SysML v2 standard compatibility check')
617
- .option('--format <format>', 'Output format: text, json', 'text')
618
- .option('-o, --output <file>', 'Write report to file instead of stdout')
176
+ .command('prune')
177
+ .description('Remove the pinned worktrees (.memo/pinned) and assemblies (.memo/assembled) not used lately; both are rebuilt on demand')
178
+ .argument('[dir]', 'Model directory', '.')
179
+ .option('--keep <n>', 'How many of each to keep, most recently used first', '5')
180
+ .option('--dry-run', 'List what would be removed and remove nothing')
619
181
  .action(async (dir, opts) => {
620
- await checkCommand(dir, { sysmlCompat: opts.sysmlCompat, format: opts.format, output: opts.output });
621
- });
622
- // ─── memo round-trip ────────────────────────────────────────────────────────
623
- program
624
- .command('round-trip')
625
- .description('Predict round-trip conformance with external SysML tools')
626
- .argument('[dir]', 'Project directory', '.')
627
- .option('--tool <tool>', 'Target tool: syson, syside, cameo', 'syson')
628
- .option('--format <format>', 'Output format: text, json', 'text')
629
- .option('-o, --output <file>', 'Write report to file instead of stdout')
630
- .action(async (dir, opts) => {
631
- await roundTripCommand(dir, { tool: opts.tool, format: opts.format, output: opts.output });
632
- });
633
- // ─── memo rules ────────────────────────────────────────────────────────────
634
- const rulesCmd = program
635
- .command('rules')
636
- .description('Consistency rule management');
637
- rulesCmd
638
- .command('list')
639
- .description('List all consistency rules')
640
- .argument('[dir]', 'Project directory', '.')
641
- .option('--format <format>', 'Output format: text, json', 'text')
642
- .option('--category <category>', 'Filter by category: closure, coverage, lifecycle, crossLayer, quantitative')
643
- .action(async (dir, opts) => {
644
- await rulesListCommand(dir, { format: opts.format, category: opts.category });
645
- });
646
- rulesCmd
647
- .command('check')
648
- .description('Evaluate rules against the current model')
649
- .argument('[dir]', 'Project directory', '.')
650
- .option('--format <format>', 'Output format: text, json', 'text')
651
- .action(async (dir, opts) => {
652
- await rulesCheckCommand(dir, { format: opts.format });
653
- });
654
- rulesCmd
655
- .command('explain')
656
- .description('Show detailed info for a specific rule')
657
- .argument('<ruleId>', 'Rule ID (e.g., CR-MED-001)')
658
- .argument('[dir]', 'Project directory', '.')
659
- .option('--format <format>', 'Output format: text, json', 'text')
660
- .action(async (ruleId, dir, opts) => {
661
- await rulesExplainCommand(ruleId, dir, { format: opts.format });
662
- });
663
- rulesCmd
664
- .command('coverage')
665
- .description('Show coverage rules grouped by regulatory standard')
666
- .argument('[dir]', 'Project directory', '.')
667
- .option('--format <format>', 'Output format: text, json', 'text')
668
- .action(async (dir, opts) => {
669
- await rulesCoverageCommand(dir, { format: opts.format });
182
+ await pruneCommand(dir, opts);
183
+ });
184
+ retiredCommand(program, 'lock', 'memo-architect lock');
185
+ retiredCommand(program, 'ontology', 'memo-architect ontology');
186
+ retiredCommand(program, 'import', 'memo-architect import');
187
+ retiredCommand(program, 'ask', 'memo-architect ask');
188
+ retiredCommand(program, 'mcp', 'memo-architect mcp');
189
+ retiredCommand(program, 'generate', 'memo-architect generate');
190
+ retiredCommand(program, 'req', 'memo-architect new requirement --pattern <pattern>');
191
+ retiredCommand(program, 'plugin', 'memo-architect plugin');
192
+ retiredCommand(program, 'dhf', 'memo-architect dhf');
193
+ retiredCommand(program, 'standards', 'memo validate --standards');
194
+ retiredCommand(program, 'sysand', 'memo publish');
195
+ retiredCommand(program, 'rules', 'memo validate --rules, --explain-rule <id> (to change them: memo-architect new rule, rules tailor|tailoring)');
196
+ retiredCommand(program, 'examples', 'memo-architect init --list');
197
+ retiredCommand(program, 'templates', 'memo-architect init --list');
198
+ // Every command takes the `--toolchain.*` flags, and the running command's
199
+ // flags apply to whatever settings it loads (model/config-loader.ts).
200
+ const allCommands = (command) => [command, ...command.commands.flatMap(allCommands)];
201
+ for (const command of allCommands(program)) {
202
+ if (command.commands.length > 0 || command === program)
203
+ continue;
204
+ if (!command.options.some(option => option.attributeName() === 'toolchain.compiler'))
205
+ withToolchainOptions(command);
206
+ }
207
+ program.hook('preAction', (_program, action) => {
208
+ setCommandLineToolchain(toolchainOverridesFromCliOptions(action.opts(), defaultRegistry));
209
+ });
210
+ // A stage 1 that rejects the source is a verdict on the model, not a crash:
211
+ // every command that loads one reports its diagnostics and fails, as
212
+ // `memo validate` does. Anything else is still a crash, with its stack.
213
+ program.parseAsync().catch((error) => {
214
+ // So is a project whose settings name no compiler: MEMO chooses none.
215
+ if (error instanceof Stage1RejectedError || error instanceof ToolchainNotConfiguredError || error instanceof ProjectNamesUserSettingError) {
216
+ console.error(chalk.red(`\n❌ ${error.message}\n`));
217
+ process.exit(1);
218
+ }
219
+ throw error;
670
220
  });
671
- program.parse();
672
221
  //# sourceMappingURL=memo.js.map