@memoarchitect/tools 0.6.7 → 0.8.7

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 (549) hide show
  1. package/README.md +36 -11
  2. package/corpus/README.md +63 -0
  3. package/corpus/sysml-v2-release/bnf/SysML-graphical-bnf.kgbnf +2264 -0
  4. package/package.json +20 -7
  5. package/packages/tools/lib/analysis/dsm.d.ts +1 -1
  6. package/packages/tools/lib/analysis/dsm.d.ts.map +1 -1
  7. package/packages/tools/lib/analysis/dsm.js +1 -1
  8. package/packages/tools/lib/analysis/dsm.js.map +1 -1
  9. package/packages/tools/lib/bin/memo.js +186 -10
  10. package/packages/tools/lib/bin/memo.js.map +1 -1
  11. package/packages/tools/lib/browser/index.d.ts +3 -1
  12. package/packages/tools/lib/browser/index.d.ts.map +1 -1
  13. package/packages/tools/lib/browser/index.js +2 -1
  14. package/packages/tools/lib/browser/index.js.map +1 -1
  15. package/packages/tools/lib/commands/ask.js +1 -1
  16. package/packages/tools/lib/commands/ask.js.map +1 -1
  17. package/packages/tools/lib/commands/check.d.ts.map +1 -1
  18. package/packages/tools/lib/commands/check.js +3 -9
  19. package/packages/tools/lib/commands/check.js.map +1 -1
  20. package/packages/tools/lib/commands/conformance.d.ts +36 -0
  21. package/packages/tools/lib/commands/conformance.d.ts.map +1 -0
  22. package/packages/tools/lib/commands/conformance.js +212 -0
  23. package/packages/tools/lib/commands/conformance.js.map +1 -0
  24. package/packages/tools/lib/commands/convert.d.ts +12 -0
  25. package/packages/tools/lib/commands/convert.d.ts.map +1 -0
  26. package/packages/tools/lib/commands/convert.js +103 -0
  27. package/packages/tools/lib/commands/convert.js.map +1 -0
  28. package/packages/tools/lib/commands/create-package.d.ts +1 -2
  29. package/packages/tools/lib/commands/create-package.d.ts.map +1 -1
  30. package/packages/tools/lib/commands/create-package.js.map +1 -1
  31. package/packages/tools/lib/commands/dev.d.ts +13 -0
  32. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  33. package/packages/tools/lib/commands/dev.js +245 -89
  34. package/packages/tools/lib/commands/dev.js.map +1 -1
  35. package/packages/tools/lib/commands/dhf-draft.js +1 -1
  36. package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
  37. package/packages/tools/lib/commands/dhf-lint.d.ts +10 -0
  38. package/packages/tools/lib/commands/dhf-lint.d.ts.map +1 -0
  39. package/packages/tools/lib/commands/dhf-lint.js +72 -0
  40. package/packages/tools/lib/commands/dhf-lint.js.map +1 -0
  41. package/packages/tools/lib/commands/dhf-preview.js +1 -1
  42. package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
  43. package/packages/tools/lib/commands/dhf.d.ts.map +1 -1
  44. package/packages/tools/lib/commands/dhf.js +8 -2
  45. package/packages/tools/lib/commands/dhf.js.map +1 -1
  46. package/packages/tools/lib/commands/element.d.ts +34 -0
  47. package/packages/tools/lib/commands/element.d.ts.map +1 -0
  48. package/packages/tools/lib/commands/element.js +174 -0
  49. package/packages/tools/lib/commands/element.js.map +1 -0
  50. package/packages/tools/lib/commands/export.d.ts.map +1 -1
  51. package/packages/tools/lib/commands/export.js +39 -40
  52. package/packages/tools/lib/commands/export.js.map +1 -1
  53. package/packages/tools/lib/commands/generate.d.ts.map +1 -1
  54. package/packages/tools/lib/commands/generate.js +10 -7
  55. package/packages/tools/lib/commands/generate.js.map +1 -1
  56. package/packages/tools/lib/commands/import.d.ts.map +1 -1
  57. package/packages/tools/lib/commands/import.js +25 -12
  58. package/packages/tools/lib/commands/import.js.map +1 -1
  59. package/packages/tools/lib/commands/init.d.ts.map +1 -1
  60. package/packages/tools/lib/commands/init.js +34 -14
  61. package/packages/tools/lib/commands/init.js.map +1 -1
  62. package/packages/tools/lib/commands/inspect.d.ts +5 -0
  63. package/packages/tools/lib/commands/inspect.d.ts.map +1 -0
  64. package/packages/tools/lib/commands/inspect.js +56 -0
  65. package/packages/tools/lib/commands/inspect.js.map +1 -0
  66. package/packages/tools/lib/commands/lock.d.ts.map +1 -1
  67. package/packages/tools/lib/commands/lock.js +7 -2
  68. package/packages/tools/lib/commands/lock.js.map +1 -1
  69. package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
  70. package/packages/tools/lib/commands/ontology.js +69 -116
  71. package/packages/tools/lib/commands/ontology.js.map +1 -1
  72. package/packages/tools/lib/commands/pack.d.ts +1 -1
  73. package/packages/tools/lib/commands/pack.d.ts.map +1 -1
  74. package/packages/tools/lib/commands/pack.js +20 -78
  75. package/packages/tools/lib/commands/pack.js.map +1 -1
  76. package/packages/tools/lib/commands/package.d.ts +10 -0
  77. package/packages/tools/lib/commands/package.d.ts.map +1 -0
  78. package/packages/tools/lib/commands/package.js +113 -0
  79. package/packages/tools/lib/commands/package.js.map +1 -0
  80. package/packages/tools/lib/commands/plugin.js +1 -1
  81. package/packages/tools/lib/commands/plugin.js.map +1 -1
  82. package/packages/tools/lib/commands/rules.d.ts.map +1 -1
  83. package/packages/tools/lib/commands/rules.js +120 -30
  84. package/packages/tools/lib/commands/rules.js.map +1 -1
  85. package/packages/tools/lib/commands/standards.d.ts +28 -0
  86. package/packages/tools/lib/commands/standards.d.ts.map +1 -0
  87. package/packages/tools/lib/commands/standards.js +203 -0
  88. package/packages/tools/lib/commands/standards.js.map +1 -0
  89. package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
  90. package/packages/tools/lib/commands/sysand-publish.js +14 -16
  91. package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
  92. package/packages/tools/lib/commands/toolchain.d.ts +8 -0
  93. package/packages/tools/lib/commands/toolchain.d.ts.map +1 -0
  94. package/packages/tools/lib/commands/toolchain.js +64 -0
  95. package/packages/tools/lib/commands/toolchain.js.map +1 -0
  96. package/packages/tools/lib/commands/validate.d.ts +1 -1
  97. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  98. package/packages/tools/lib/commands/validate.js +194 -56
  99. package/packages/tools/lib/commands/validate.js.map +1 -1
  100. package/packages/tools/lib/completeness/tracker.d.ts +10 -2
  101. package/packages/tools/lib/completeness/tracker.d.ts.map +1 -1
  102. package/packages/tools/lib/completeness/tracker.js +16 -21
  103. package/packages/tools/lib/completeness/tracker.js.map +1 -1
  104. package/packages/tools/lib/conformance/baseline.d.ts +26 -0
  105. package/packages/tools/lib/conformance/baseline.d.ts.map +1 -0
  106. package/packages/tools/lib/conformance/baseline.js +170 -0
  107. package/packages/tools/lib/conformance/baseline.js.map +1 -0
  108. package/packages/tools/lib/conformance/bnf.d.ts +84 -0
  109. package/packages/tools/lib/conformance/bnf.d.ts.map +1 -0
  110. package/packages/tools/lib/conformance/bnf.js +166 -0
  111. package/packages/tools/lib/conformance/bnf.js.map +1 -0
  112. package/packages/tools/lib/conformance/corpus.d.ts +125 -0
  113. package/packages/tools/lib/conformance/corpus.d.ts.map +1 -0
  114. package/packages/tools/lib/conformance/corpus.js +190 -0
  115. package/packages/tools/lib/conformance/corpus.js.map +1 -0
  116. package/packages/tools/lib/conformance/diff-xmi.d.ts +118 -0
  117. package/packages/tools/lib/conformance/diff-xmi.d.ts.map +1 -0
  118. package/packages/tools/lib/conformance/diff-xmi.js +276 -0
  119. package/packages/tools/lib/conformance/diff-xmi.js.map +1 -0
  120. package/packages/tools/lib/conformance/generated/syside-rules.d.ts +10 -0
  121. package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +1 -0
  122. package/packages/tools/lib/conformance/generated/syside-rules.js +1142 -0
  123. package/packages/tools/lib/conformance/generated/syside-rules.js.map +1 -0
  124. package/packages/tools/lib/conformance/index.d.ts +7 -0
  125. package/packages/tools/lib/conformance/index.d.ts.map +1 -0
  126. package/packages/tools/lib/conformance/index.js +19 -0
  127. package/packages/tools/lib/conformance/index.js.map +1 -0
  128. package/packages/tools/lib/conformance/run.d.ts +117 -0
  129. package/packages/tools/lib/conformance/run.d.ts.map +1 -0
  130. package/packages/tools/lib/conformance/run.js +0 -0
  131. package/packages/tools/lib/conformance/run.js.map +1 -0
  132. package/packages/tools/lib/conformance/xmi.d.ts +45 -0
  133. package/packages/tools/lib/conformance/xmi.d.ts.map +1 -0
  134. package/packages/tools/lib/conformance/xmi.js +148 -0
  135. package/packages/tools/lib/conformance/xmi.js.map +1 -0
  136. package/packages/tools/lib/dhf/document-compiler.d.ts.map +1 -1
  137. package/packages/tools/lib/dhf/document-compiler.js +13 -8
  138. package/packages/tools/lib/dhf/document-compiler.js.map +1 -1
  139. package/packages/tools/lib/dhf/document-registry.d.ts +16 -2
  140. package/packages/tools/lib/dhf/document-registry.d.ts.map +1 -1
  141. package/packages/tools/lib/dhf/document-registry.js +74 -23
  142. package/packages/tools/lib/dhf/document-registry.js.map +1 -1
  143. package/packages/tools/lib/dhf/index.d.ts +3 -0
  144. package/packages/tools/lib/dhf/index.d.ts.map +1 -1
  145. package/packages/tools/lib/dhf/index.js +4 -0
  146. package/packages/tools/lib/dhf/index.js.map +1 -1
  147. package/packages/tools/lib/dhf/query-engine.d.ts +12 -1
  148. package/packages/tools/lib/dhf/query-engine.d.ts.map +1 -1
  149. package/packages/tools/lib/dhf/query-engine.js +2 -1
  150. package/packages/tools/lib/dhf/query-engine.js.map +1 -1
  151. package/packages/tools/lib/dhf/query-executor.d.ts +72 -5
  152. package/packages/tools/lib/dhf/query-executor.d.ts.map +1 -1
  153. package/packages/tools/lib/dhf/query-executor.js +471 -81
  154. package/packages/tools/lib/dhf/query-executor.js.map +1 -1
  155. package/packages/tools/lib/dhf/script-runner.js +6 -6
  156. package/packages/tools/lib/dhf/script-runner.js.map +1 -1
  157. package/packages/tools/lib/dhf/standards-block.d.ts +40 -0
  158. package/packages/tools/lib/dhf/standards-block.d.ts.map +1 -0
  159. package/packages/tools/lib/dhf/standards-block.js +223 -0
  160. package/packages/tools/lib/dhf/standards-block.js.map +1 -0
  161. package/packages/tools/lib/dhf/standards-library.d.ts +123 -0
  162. package/packages/tools/lib/dhf/standards-library.d.ts.map +1 -0
  163. package/packages/tools/lib/dhf/standards-library.js +295 -0
  164. package/packages/tools/lib/dhf/standards-library.js.map +1 -0
  165. package/packages/tools/lib/dhf/standards-report.d.ts +189 -0
  166. package/packages/tools/lib/dhf/standards-report.d.ts.map +1 -0
  167. package/packages/tools/lib/dhf/standards-report.js +384 -0
  168. package/packages/tools/lib/dhf/standards-report.js.map +1 -0
  169. package/packages/tools/lib/dhf/template-lint.d.ts +42 -0
  170. package/packages/tools/lib/dhf/template-lint.d.ts.map +1 -0
  171. package/packages/tools/lib/dhf/template-lint.js +421 -0
  172. package/packages/tools/lib/dhf/template-lint.js.map +1 -0
  173. package/packages/tools/lib/dhf/template-resolver.d.ts.map +1 -1
  174. package/packages/tools/lib/dhf/template-resolver.js +18 -6
  175. package/packages/tools/lib/dhf/template-resolver.js.map +1 -1
  176. package/packages/tools/lib/import/column-mapper.d.ts +2 -2
  177. package/packages/tools/lib/import/column-mapper.d.ts.map +1 -1
  178. package/packages/tools/lib/import/column-mapper.js +3 -3
  179. package/packages/tools/lib/import/column-mapper.js.map +1 -1
  180. package/packages/tools/lib/importer/cameo-importer.js +2 -2
  181. package/packages/tools/lib/importer/cameo-importer.js.map +1 -1
  182. package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -1
  183. package/packages/tools/lib/importer/ea-importer.js +4 -3
  184. package/packages/tools/lib/importer/ea-importer.js.map +1 -1
  185. package/packages/tools/lib/importer/owl-importer.d.ts.map +1 -1
  186. package/packages/tools/lib/importer/owl-importer.js +2 -3
  187. package/packages/tools/lib/importer/owl-importer.js.map +1 -1
  188. package/packages/tools/lib/index.d.ts +20 -3
  189. package/packages/tools/lib/index.d.ts.map +1 -1
  190. package/packages/tools/lib/index.js +19 -2
  191. package/packages/tools/lib/index.js.map +1 -1
  192. package/packages/tools/lib/language/generated/ast.d.ts +1344 -99
  193. package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
  194. package/packages/tools/lib/language/generated/ast.js +1066 -32
  195. package/packages/tools/lib/language/generated/ast.js.map +1 -1
  196. package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
  197. package/packages/tools/lib/language/generated/grammar.js +5242 -1454
  198. package/packages/tools/lib/language/generated/grammar.js.map +1 -1
  199. package/packages/tools/lib/llm/chat-engine.d.ts +4 -3
  200. package/packages/tools/lib/llm/chat-engine.d.ts.map +1 -1
  201. package/packages/tools/lib/llm/chat-engine.js +15 -12
  202. package/packages/tools/lib/llm/chat-engine.js.map +1 -1
  203. package/packages/tools/lib/llm/generate-engine.d.ts +7 -2
  204. package/packages/tools/lib/llm/generate-engine.d.ts.map +1 -1
  205. package/packages/tools/lib/llm/generate-engine.js +22 -4
  206. package/packages/tools/lib/llm/generate-engine.js.map +1 -1
  207. package/packages/tools/lib/llm/index.d.ts +1 -0
  208. package/packages/tools/lib/llm/index.d.ts.map +1 -1
  209. package/packages/tools/lib/llm/index.js +1 -0
  210. package/packages/tools/lib/llm/index.js.map +1 -1
  211. package/packages/tools/lib/llm/model-context.d.ts +2 -2
  212. package/packages/tools/lib/llm/model-context.d.ts.map +1 -1
  213. package/packages/tools/lib/llm/model-context.js +7 -13
  214. package/packages/tools/lib/llm/model-context.js.map +1 -1
  215. package/packages/tools/lib/llm/sysml-guidance.d.ts +8 -0
  216. package/packages/tools/lib/llm/sysml-guidance.d.ts.map +1 -0
  217. package/packages/tools/lib/llm/sysml-guidance.js +28 -0
  218. package/packages/tools/lib/llm/sysml-guidance.js.map +1 -0
  219. package/packages/tools/lib/lock.d.ts +14 -8
  220. package/packages/tools/lib/lock.d.ts.map +1 -1
  221. package/packages/tools/lib/lock.js +97 -108
  222. package/packages/tools/lib/lock.js.map +1 -1
  223. package/packages/tools/lib/mcp/model-loader.d.ts +3 -0
  224. package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
  225. package/packages/tools/lib/mcp/model-loader.js +9 -5
  226. package/packages/tools/lib/mcp/model-loader.js.map +1 -1
  227. package/packages/tools/lib/mcp/tools.d.ts +3 -0
  228. package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
  229. package/packages/tools/lib/mcp/tools.js +8 -9
  230. package/packages/tools/lib/mcp/tools.js.map +1 -1
  231. package/packages/tools/lib/model/activity-notation.d.ts +54 -0
  232. package/packages/tools/lib/model/activity-notation.d.ts.map +1 -0
  233. package/packages/tools/lib/model/activity-notation.js +208 -0
  234. package/packages/tools/lib/model/activity-notation.js.map +1 -0
  235. package/packages/tools/lib/model/builder.d.ts +3 -0
  236. package/packages/tools/lib/model/builder.d.ts.map +1 -1
  237. package/packages/tools/lib/model/builder.js +956 -62
  238. package/packages/tools/lib/model/builder.js.map +1 -1
  239. package/packages/tools/lib/model/config-loader.d.ts +19 -25
  240. package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
  241. package/packages/tools/lib/model/config-loader.js +51 -233
  242. package/packages/tools/lib/model/config-loader.js.map +1 -1
  243. package/packages/tools/lib/model/config.d.ts +42 -213
  244. package/packages/tools/lib/model/config.d.ts.map +1 -1
  245. package/packages/tools/lib/model/config.js +11 -9
  246. package/packages/tools/lib/model/config.js.map +1 -1
  247. package/packages/tools/lib/model/effective-scope.d.ts +74 -0
  248. package/packages/tools/lib/model/effective-scope.d.ts.map +1 -0
  249. package/packages/tools/lib/model/effective-scope.js +133 -0
  250. package/packages/tools/lib/model/effective-scope.js.map +1 -0
  251. package/packages/tools/lib/model/ir-identity.d.ts +94 -0
  252. package/packages/tools/lib/model/ir-identity.d.ts.map +1 -0
  253. package/packages/tools/lib/model/ir-identity.js +178 -0
  254. package/packages/tools/lib/model/ir-identity.js.map +1 -0
  255. package/packages/tools/lib/model/kind-registry.d.ts +134 -1
  256. package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
  257. package/packages/tools/lib/model/kind-registry.js +186 -4
  258. package/packages/tools/lib/model/kind-registry.js.map +1 -1
  259. package/packages/tools/lib/model/layer-resolver.js +1 -1
  260. package/packages/tools/lib/model/layer-resolver.js.map +1 -1
  261. package/packages/tools/lib/model/manifest.d.ts +8 -0
  262. package/packages/tools/lib/model/manifest.d.ts.map +1 -1
  263. package/packages/tools/lib/model/manifest.js +3 -0
  264. package/packages/tools/lib/model/manifest.js.map +1 -1
  265. package/packages/tools/lib/model/methodology-loader.d.ts +19 -24
  266. package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
  267. package/packages/tools/lib/model/methodology-loader.js +179 -176
  268. package/packages/tools/lib/model/methodology-loader.js.map +1 -1
  269. package/packages/tools/lib/model/methodology-resolver.d.ts +115 -0
  270. package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -0
  271. package/packages/tools/lib/model/methodology-resolver.js +317 -0
  272. package/packages/tools/lib/model/methodology-resolver.js.map +1 -0
  273. package/packages/tools/lib/model/naming.d.ts +57 -0
  274. package/packages/tools/lib/model/naming.d.ts.map +1 -0
  275. package/packages/tools/lib/model/naming.js +69 -0
  276. package/packages/tools/lib/model/naming.js.map +1 -0
  277. package/packages/tools/lib/model/native-project.d.ts +130 -0
  278. package/packages/tools/lib/model/native-project.d.ts.map +1 -0
  279. package/packages/tools/lib/model/native-project.js +580 -0
  280. package/packages/tools/lib/model/native-project.js.map +1 -0
  281. package/packages/tools/lib/model/ontology-loader.d.ts +34 -21
  282. package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
  283. package/packages/tools/lib/model/ontology-loader.js +343 -614
  284. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  285. package/packages/tools/lib/model/package-manifest.d.ts +37 -0
  286. package/packages/tools/lib/model/package-manifest.d.ts.map +1 -0
  287. package/packages/tools/lib/model/package-manifest.js +96 -0
  288. package/packages/tools/lib/model/package-manifest.js.map +1 -0
  289. package/packages/tools/lib/model/parser-utils.d.ts +31 -0
  290. package/packages/tools/lib/model/parser-utils.d.ts.map +1 -1
  291. package/packages/tools/lib/model/parser-utils.js +89 -1
  292. package/packages/tools/lib/model/parser-utils.js.map +1 -1
  293. package/packages/tools/lib/model/paths.d.ts +10 -4
  294. package/packages/tools/lib/model/paths.d.ts.map +1 -1
  295. package/packages/tools/lib/model/paths.js +10 -4
  296. package/packages/tools/lib/model/paths.js.map +1 -1
  297. package/packages/tools/lib/model/project-conversion.d.ts +226 -0
  298. package/packages/tools/lib/model/project-conversion.d.ts.map +1 -0
  299. package/packages/tools/lib/model/project-conversion.js +946 -0
  300. package/packages/tools/lib/model/project-conversion.js.map +1 -0
  301. package/packages/tools/lib/model/relationship-legality.d.ts +27 -0
  302. package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
  303. package/packages/tools/lib/model/relationship-legality.js.map +1 -1
  304. package/packages/tools/lib/model/relationship-registry.d.ts +93 -1
  305. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
  306. package/packages/tools/lib/model/relationship-registry.js +217 -2
  307. package/packages/tools/lib/model/relationship-registry.js.map +1 -1
  308. package/packages/tools/lib/model/semantic.d.ts +73 -0
  309. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  310. package/packages/tools/lib/model/semantic.js +6 -0
  311. package/packages/tools/lib/model/semantic.js.map +1 -1
  312. package/packages/tools/lib/model/settings-boundary.d.ts +19 -0
  313. package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -0
  314. package/packages/tools/lib/model/settings-boundary.js +118 -0
  315. package/packages/tools/lib/model/settings-boundary.js.map +1 -0
  316. package/packages/tools/lib/model/short-id.js +3 -3
  317. package/packages/tools/lib/model/short-id.js.map +1 -1
  318. package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
  319. package/packages/tools/lib/model/source-graph.js +5 -1
  320. package/packages/tools/lib/model/source-graph.js.map +1 -1
  321. package/packages/tools/lib/model/source-provenance.d.ts +112 -0
  322. package/packages/tools/lib/model/source-provenance.d.ts.map +1 -0
  323. package/packages/tools/lib/model/source-provenance.js +169 -0
  324. package/packages/tools/lib/model/source-provenance.js.map +1 -0
  325. package/packages/tools/lib/model/sysml-ir.d.ts +9 -0
  326. package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -0
  327. package/packages/tools/lib/model/sysml-ir.js +105 -0
  328. package/packages/tools/lib/model/sysml-ir.js.map +1 -0
  329. package/packages/tools/lib/model/view-deriver.d.ts +10 -1
  330. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  331. package/packages/tools/lib/model/view-deriver.js +139 -11
  332. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  333. package/packages/tools/lib/model/view-kinds.d.ts +2 -0
  334. package/packages/tools/lib/model/view-kinds.d.ts.map +1 -1
  335. package/packages/tools/lib/model/view-kinds.js +11 -0
  336. package/packages/tools/lib/model/view-kinds.js.map +1 -1
  337. package/packages/tools/lib/ontology/owl-exporter.d.ts +2 -2
  338. package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
  339. package/packages/tools/lib/ontology/owl-exporter.js +12 -12
  340. package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
  341. package/packages/tools/lib/operations/ai-authoring.d.ts +24 -0
  342. package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -0
  343. package/packages/tools/lib/operations/ai-authoring.js +77 -0
  344. package/packages/tools/lib/operations/ai-authoring.js.map +1 -0
  345. package/packages/tools/lib/operations/authoring.d.ts +40 -0
  346. package/packages/tools/lib/operations/authoring.d.ts.map +1 -0
  347. package/packages/tools/lib/operations/authoring.js +56 -0
  348. package/packages/tools/lib/operations/authoring.js.map +1 -0
  349. package/packages/tools/lib/operations/index.d.ts +2 -0
  350. package/packages/tools/lib/operations/index.d.ts.map +1 -1
  351. package/packages/tools/lib/operations/index.js +2 -0
  352. package/packages/tools/lib/operations/index.js.map +1 -1
  353. package/packages/tools/lib/operations/project-snapshot.d.ts +28 -3
  354. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  355. package/packages/tools/lib/operations/project-snapshot.js +79 -30
  356. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  357. package/packages/tools/lib/protocol/messages.d.ts +381 -12
  358. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  359. package/packages/tools/lib/serializer/csv-io.d.ts +7 -7
  360. package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
  361. package/packages/tools/lib/serializer/csv-io.js +11 -11
  362. package/packages/tools/lib/serializer/csv-io.js.map +1 -1
  363. package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
  364. package/packages/tools/lib/serializer/sysml-generator.js +34 -2
  365. package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
  366. package/packages/tools/lib/server/config-resolver.d.ts +8 -4
  367. package/packages/tools/lib/server/config-resolver.d.ts.map +1 -1
  368. package/packages/tools/lib/server/config-resolver.js +25 -44
  369. package/packages/tools/lib/server/config-resolver.js.map +1 -1
  370. package/packages/tools/lib/server/conflict-policy.d.ts +44 -0
  371. package/packages/tools/lib/server/conflict-policy.d.ts.map +1 -0
  372. package/packages/tools/lib/server/conflict-policy.js +94 -0
  373. package/packages/tools/lib/server/conflict-policy.js.map +1 -0
  374. package/packages/tools/lib/server/dev-server.d.ts +32 -2
  375. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  376. package/packages/tools/lib/server/dev-server.js +875 -54
  377. package/packages/tools/lib/server/dev-server.js.map +1 -1
  378. package/packages/tools/lib/server/element-writer.d.ts +11 -0
  379. package/packages/tools/lib/server/element-writer.d.ts.map +1 -0
  380. package/packages/tools/lib/server/element-writer.js +123 -0
  381. package/packages/tools/lib/server/element-writer.js.map +1 -0
  382. package/packages/tools/lib/server/file-watcher.d.ts +4 -1
  383. package/packages/tools/lib/server/file-watcher.d.ts.map +1 -1
  384. package/packages/tools/lib/server/file-watcher.js +17 -7
  385. package/packages/tools/lib/server/file-watcher.js.map +1 -1
  386. package/packages/tools/lib/server/mutation-domain.d.ts +22 -0
  387. package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -0
  388. package/packages/tools/lib/server/mutation-domain.js +87 -0
  389. package/packages/tools/lib/server/mutation-domain.js.map +1 -0
  390. package/packages/tools/lib/server/package-source.d.ts +26 -0
  391. package/packages/tools/lib/server/package-source.d.ts.map +1 -0
  392. package/packages/tools/lib/server/package-source.js +81 -0
  393. package/packages/tools/lib/server/package-source.js.map +1 -0
  394. package/packages/tools/lib/server/package-writer.d.ts +94 -0
  395. package/packages/tools/lib/server/package-writer.d.ts.map +1 -0
  396. package/packages/tools/lib/server/package-writer.js +317 -0
  397. package/packages/tools/lib/server/package-writer.js.map +1 -0
  398. package/packages/tools/lib/server/persistor.d.ts +81 -6
  399. package/packages/tools/lib/server/persistor.d.ts.map +1 -1
  400. package/packages/tools/lib/server/persistor.js +173 -44
  401. package/packages/tools/lib/server/persistor.js.map +1 -1
  402. package/packages/tools/lib/server/relationship-writer.d.ts +41 -5
  403. package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
  404. package/packages/tools/lib/server/relationship-writer.js +157 -13
  405. package/packages/tools/lib/server/relationship-writer.js.map +1 -1
  406. package/packages/tools/lib/server/rule-policy-writer.d.ts +40 -0
  407. package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -0
  408. package/packages/tools/lib/server/rule-policy-writer.js +124 -0
  409. package/packages/tools/lib/server/rule-policy-writer.js.map +1 -0
  410. package/packages/tools/lib/server/runtime-budget.d.ts +14 -0
  411. package/packages/tools/lib/server/runtime-budget.d.ts.map +1 -0
  412. package/packages/tools/lib/server/runtime-budget.js +15 -0
  413. package/packages/tools/lib/server/runtime-budget.js.map +1 -0
  414. package/packages/tools/lib/server/sysml-notation.d.ts +36 -0
  415. package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -0
  416. package/packages/tools/lib/server/sysml-notation.js +104 -0
  417. package/packages/tools/lib/server/sysml-notation.js.map +1 -0
  418. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
  419. package/packages/tools/lib/server/view-layout-store.js +1 -0
  420. package/packages/tools/lib/server/view-layout-store.js.map +1 -1
  421. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts +9 -0
  422. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts.map +1 -0
  423. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js +315 -0
  424. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js.map +1 -0
  425. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts +5206 -0
  426. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts.map +1 -0
  427. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js +1933 -0
  428. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js.map +1 -0
  429. package/packages/tools/lib/sysml-ir/index.d.ts +3 -0
  430. package/packages/tools/lib/sysml-ir/index.d.ts.map +1 -0
  431. package/packages/tools/lib/sysml-ir/index.js +3 -0
  432. package/packages/tools/lib/sysml-ir/index.js.map +1 -0
  433. package/packages/tools/lib/sysml-ir/ir.d.ts +50 -0
  434. package/packages/tools/lib/sysml-ir/ir.d.ts.map +1 -0
  435. package/packages/tools/lib/sysml-ir/ir.js +2 -0
  436. package/packages/tools/lib/sysml-ir/ir.js.map +1 -0
  437. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +3 -0
  438. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +1 -0
  439. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +97 -0
  440. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +1 -0
  441. package/packages/tools/lib/sysmlc/index.d.ts +2 -0
  442. package/packages/tools/lib/sysmlc/index.d.ts.map +1 -0
  443. package/packages/tools/lib/sysmlc/index.js +7 -0
  444. package/packages/tools/lib/sysmlc/index.js.map +1 -0
  445. package/packages/tools/lib/sysmlc/server.d.ts +29 -0
  446. package/packages/tools/lib/sysmlc/server.d.ts.map +1 -0
  447. package/packages/tools/lib/sysmlc/server.js +168 -0
  448. package/packages/tools/lib/sysmlc/server.js.map +1 -0
  449. package/packages/tools/lib/toolchain/default-registry.d.ts +12 -0
  450. package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -0
  451. package/packages/tools/lib/toolchain/default-registry.js +28 -0
  452. package/packages/tools/lib/toolchain/default-registry.js.map +1 -0
  453. package/packages/tools/lib/toolchain/diagnostic.d.ts +57 -0
  454. package/packages/tools/lib/toolchain/diagnostic.d.ts.map +1 -0
  455. package/packages/tools/lib/toolchain/diagnostic.js +69 -0
  456. package/packages/tools/lib/toolchain/diagnostic.js.map +1 -0
  457. package/packages/tools/lib/toolchain/effective.d.ts +36 -0
  458. package/packages/tools/lib/toolchain/effective.d.ts.map +1 -0
  459. package/packages/tools/lib/toolchain/effective.js +91 -0
  460. package/packages/tools/lib/toolchain/effective.js.map +1 -0
  461. package/packages/tools/lib/toolchain/index.d.ts +11 -0
  462. package/packages/tools/lib/toolchain/index.d.ts.map +1 -0
  463. package/packages/tools/lib/toolchain/index.js +21 -0
  464. package/packages/tools/lib/toolchain/index.js.map +1 -0
  465. package/packages/tools/lib/toolchain/lowering.d.ts +63 -0
  466. package/packages/tools/lib/toolchain/lowering.d.ts.map +1 -0
  467. package/packages/tools/lib/toolchain/lowering.js +100 -0
  468. package/packages/tools/lib/toolchain/lowering.js.map +1 -0
  469. package/packages/tools/lib/toolchain/operations.d.ts +87 -0
  470. package/packages/tools/lib/toolchain/operations.d.ts.map +1 -0
  471. package/packages/tools/lib/toolchain/operations.js +111 -0
  472. package/packages/tools/lib/toolchain/operations.js.map +1 -0
  473. package/packages/tools/lib/toolchain/process.d.ts +45 -0
  474. package/packages/tools/lib/toolchain/process.d.ts.map +1 -0
  475. package/packages/tools/lib/toolchain/process.js +125 -0
  476. package/packages/tools/lib/toolchain/process.js.map +1 -0
  477. package/packages/tools/lib/toolchain/protocol.d.ts +122 -0
  478. package/packages/tools/lib/toolchain/protocol.d.ts.map +1 -0
  479. package/packages/tools/lib/toolchain/protocol.js +74 -0
  480. package/packages/tools/lib/toolchain/protocol.js.map +1 -0
  481. package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts +9 -0
  482. package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts.map +1 -0
  483. package/packages/tools/lib/toolchain/providers/internal-kpar.js +84 -0
  484. package/packages/tools/lib/toolchain/providers/internal-kpar.js.map +1 -0
  485. package/packages/tools/lib/toolchain/providers/internal.d.ts +33 -0
  486. package/packages/tools/lib/toolchain/providers/internal.d.ts.map +1 -0
  487. package/packages/tools/lib/toolchain/providers/internal.js +286 -0
  488. package/packages/tools/lib/toolchain/providers/internal.js.map +1 -0
  489. package/packages/tools/lib/toolchain/providers/sysand.d.ts +12 -0
  490. package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -0
  491. package/packages/tools/lib/toolchain/providers/sysand.js +110 -0
  492. package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -0
  493. package/packages/tools/lib/toolchain/providers/syside.d.ts +24 -0
  494. package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -0
  495. package/packages/tools/lib/toolchain/providers/syside.js +208 -0
  496. package/packages/tools/lib/toolchain/providers/syside.js.map +1 -0
  497. package/packages/tools/lib/toolchain/registry.d.ts +192 -0
  498. package/packages/tools/lib/toolchain/registry.d.ts.map +1 -0
  499. package/packages/tools/lib/toolchain/registry.js +130 -0
  500. package/packages/tools/lib/toolchain/registry.js.map +1 -0
  501. package/packages/tools/lib/toolchain/schema.d.ts +30 -0
  502. package/packages/tools/lib/toolchain/schema.d.ts.map +1 -0
  503. package/packages/tools/lib/toolchain/schema.js +112 -0
  504. package/packages/tools/lib/toolchain/schema.js.map +1 -0
  505. package/packages/tools/lib/toolchain/sysmlc-client.d.ts +77 -0
  506. package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +1 -0
  507. package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
  508. package/packages/tools/lib/toolchain/sysmlc-client.js.map +1 -0
  509. package/packages/tools/lib/validator/architecture-validator.d.ts +8 -1
  510. package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -1
  511. package/packages/tools/lib/validator/architecture-validator.js +25 -1
  512. package/packages/tools/lib/validator/architecture-validator.js.map +1 -1
  513. package/packages/tools/lib/validator/behavior-validator.d.ts +1 -1
  514. package/packages/tools/lib/validator/behavior-validator.js +1 -1
  515. package/packages/tools/lib/validator/builtin-rules.d.ts +16 -0
  516. package/packages/tools/lib/validator/builtin-rules.d.ts.map +1 -0
  517. package/packages/tools/lib/validator/builtin-rules.js +62 -0
  518. package/packages/tools/lib/validator/builtin-rules.js.map +1 -0
  519. package/packages/tools/lib/validator/constraint-eval.d.ts +31 -0
  520. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  521. package/packages/tools/lib/validator/constraint-eval.js +164 -7
  522. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  523. package/packages/tools/lib/validator/constraint-loader.d.ts +22 -4
  524. package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
  525. package/packages/tools/lib/validator/constraint-loader.js +100 -27
  526. package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
  527. package/packages/tools/lib/validator/rule-engine.d.ts +2 -1
  528. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  529. package/packages/tools/lib/validator/rule-engine.js +56 -5
  530. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  531. package/packages/tools/lib/validator/sysml-constraints.d.ts +64 -0
  532. package/packages/tools/lib/validator/sysml-constraints.d.ts.map +1 -0
  533. package/packages/tools/lib/validator/sysml-constraints.js +251 -0
  534. package/packages/tools/lib/validator/sysml-constraints.js.map +1 -0
  535. package/packages/tools/lib/validator/types.d.ts +33 -0
  536. package/packages/tools/lib/validator/types.d.ts.map +1 -1
  537. package/packages/tools/lib/version.d.ts +2 -0
  538. package/packages/tools/lib/version.d.ts.map +1 -0
  539. package/packages/tools/lib/version.js +26 -0
  540. package/packages/tools/lib/version.js.map +1 -0
  541. package/packages/tools/src/grammar/memo-sysml.langium +517 -41
  542. package/packages/tools/lib/model/dimension-filter.d.ts +0 -33
  543. package/packages/tools/lib/model/dimension-filter.d.ts.map +0 -1
  544. package/packages/tools/lib/model/dimension-filter.js +0 -57
  545. package/packages/tools/lib/model/dimension-filter.js.map +0 -1
  546. package/packages/tools/lib/model/toolchain.d.ts +0 -12
  547. package/packages/tools/lib/model/toolchain.d.ts.map +0 -1
  548. package/packages/tools/lib/model/toolchain.js +0 -92
  549. package/packages/tools/lib/model/toolchain.js.map +0 -1
@@ -0,0 +1,317 @@
1
+ // ─── Package write-back ──────────────────────────────────────────────────────
2
+ //
3
+ // Containment in MEMO is package membership. A container in an Architect
4
+ // explorer is therefore a SysML `package` declaration in project source, and
5
+ // creating, renaming, deleting or moving into one is a source edit — not a
6
+ // directory on disk, and not an attribute on a placeholder element.
7
+ //
8
+ // Every operation here follows the same discipline as ./persistor.ts: locate
9
+ // the declaration by parsing (never by matching its name in the file text),
10
+ // splice one range, parse the result before it reaches disk, and write
11
+ // atomically. A package is addressed by its **qualified name** rather than by
12
+ // an IR identity because the IR does not ingest package declarations — it walks
13
+ // through them — so there is no identity to quote. A qualified name is a real
14
+ // address for the same reason the model uses it: two packages cannot share one.
15
+ //
16
+ // What these operations deliberately do NOT do is update references. Renaming
17
+ // or deleting a package changes the qualified name of everything it declares,
18
+ // and rewriting every reference needs workspace-wide name resolution — the
19
+ // linker, which does not exist yet. The caller is told so, in the same words
20
+ // the element rename uses, rather than being handed a broken model presented as
21
+ // a successful edit.
22
+ // ─────────────────────────────────────────────────────────────────────────────
23
+ import { existsSync, readFileSync } from 'node:fs';
24
+ import { resolve } from 'node:path';
25
+ import { parseText } from '../model/parser-utils.js';
26
+ import { requireIrIdentity, resolveDeclarationByIdentity, StaleIrIdentityError, } from '../model/ir-identity.js';
27
+ import { commitSource } from './persistor.js';
28
+ import { dedent, insertIntoBody, locatePackages, removeLine, spliceIndented, } from './package-source.js';
29
+ /**
30
+ * Why a package rename or delete is only a text edit.
31
+ *
32
+ * Said once here so every surface says the same thing, and phrased as what was
33
+ * *not* done: the edit succeeded, and the references it invalidated are the
34
+ * caller's to fix until the linker can do it.
35
+ */
36
+ export const PACKAGE_EDIT_IS_TEXT_ONLY = 'This edits the package declaration only. MEMO cannot yet update qualified names that refer to it or to '
37
+ + 'anything it declares — that needs cross-file name resolution — so those references will not resolve '
38
+ + 'until you update them by hand.';
39
+ /** Names MEMO will write into source. Anything else is refused, not escaped. */
40
+ const PACKAGE_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
41
+ /**
42
+ * Declare a new package.
43
+ *
44
+ * With a parent, the package is nested inside that declaration; without one it
45
+ * is appended at the file's top level. Nesting rather than minting a new file
46
+ * keeps the edit to a single range in a file the caller already named — the
47
+ * catalog's namespace-to-directory mirroring is a project layout decision, not
48
+ * something a right-click in a tree should quietly make.
49
+ */
50
+ export async function createPackage(cwd, request) {
51
+ const { file, parent, name } = request;
52
+ if (!PACKAGE_NAME.test(name)) {
53
+ return { success: false, filePaths: [], error: `"${name}" is not a valid package name.` };
54
+ }
55
+ const qualifiedName = parent ? `${parent}::${name}` : name;
56
+ const absolute = resolve(cwd, file);
57
+ const source = existsSync(absolute) ? readFileSync(absolute, 'utf8') : '';
58
+ const existing = await locatePackages(source);
59
+ if (existing.some(pkg => pkg.qualifiedName === qualifiedName)) {
60
+ return { success: false, filePaths: [], error: `Package "${qualifiedName}" already exists in ${file}.` };
61
+ }
62
+ let updated;
63
+ if (parent) {
64
+ const target = existing.find(pkg => pkg.qualifiedName === parent);
65
+ if (!target) {
66
+ return { success: false, filePaths: [], error: `${file} does not declare package "${parent}".` };
67
+ }
68
+ updated = insertIntoBody(source, target, `package ${name} {\n}\n`);
69
+ }
70
+ else {
71
+ const separator = source && !source.endsWith('\n\n') ? (source.endsWith('\n') ? '\n' : '\n\n') : '';
72
+ updated = `${source}${separator}package ${name} {\n}\n`;
73
+ }
74
+ const committed = await commitSource(absolute, file, updated);
75
+ if (!committed.success)
76
+ return { success: false, filePaths: [], error: committed.error };
77
+ return { success: true, filePaths: [file], qualifiedName };
78
+ }
79
+ /**
80
+ * Rename a package in place.
81
+ *
82
+ * Only the declared name token is replaced; members keep their positions, so
83
+ * the operation cannot reorder or reformat a file around them.
84
+ */
85
+ export async function renamePackage(cwd, request) {
86
+ const { file, qualifiedName, name } = request;
87
+ if (!PACKAGE_NAME.test(name)) {
88
+ return { success: false, filePaths: [], error: `"${name}" is not a valid package name.` };
89
+ }
90
+ const absolute = resolve(cwd, file);
91
+ if (!existsSync(absolute))
92
+ return { success: false, filePaths: [], error: `${file} does not exist.` };
93
+ const source = readFileSync(absolute, 'utf8');
94
+ const packages = await locatePackages(source);
95
+ const target = packages.find(pkg => pkg.qualifiedName === qualifiedName);
96
+ if (!target) {
97
+ return { success: false, filePaths: [], error: `${file} does not declare package "${qualifiedName}".` };
98
+ }
99
+ if (target.name === name)
100
+ return { success: true, filePaths: [], qualifiedName };
101
+ const parent = parentOf(qualifiedName);
102
+ const renamed = parent ? `${parent}::${name}` : name;
103
+ if (packages.some(pkg => pkg.qualifiedName === renamed)) {
104
+ return { success: false, filePaths: [], error: `Package "${renamed}" already exists in ${file}.` };
105
+ }
106
+ const header = source.slice(target.start, target.bodyStart);
107
+ const match = header.match(new RegExp(`(\\bpackage\\s+)(${escapeRegExp(target.name)})\\b`));
108
+ if (!match || match.index === undefined) {
109
+ return { success: false, filePaths: [], error: `Could not find the declared name of "${qualifiedName}".` };
110
+ }
111
+ const nameStart = target.start + match.index + match[1].length;
112
+ const updated = source.slice(0, nameStart) + name + source.slice(nameStart + target.name.length);
113
+ const committed = await commitSource(absolute, file, updated);
114
+ if (!committed.success)
115
+ return { success: false, filePaths: [], error: committed.error };
116
+ return {
117
+ success: true, filePaths: [file], qualifiedName: renamed,
118
+ warnings: [{ code: 'package-edit-is-text-only', message: PACKAGE_EDIT_IS_TEXT_ONLY }],
119
+ };
120
+ }
121
+ /**
122
+ * Re-parent a package: move its whole declaration under another package.
123
+ *
124
+ * The declaration is moved verbatim, so everything it declares moves with it —
125
+ * which is what makes this one operation rather than a move per member. Moving
126
+ * a package into itself or into its own descendant is refused: the result would
127
+ * be a namespace that contains the thing containing it.
128
+ */
129
+ export async function movePackage(cwd, request) {
130
+ const { file, qualifiedName, targetParent, targetFile } = request;
131
+ if (targetParent === qualifiedName || targetParent?.startsWith(`${qualifiedName}::`)) {
132
+ return {
133
+ success: false, filePaths: [],
134
+ error: `"${qualifiedName}" cannot be moved into itself or into a package it declares.`,
135
+ };
136
+ }
137
+ if (targetParent === parentOf(qualifiedName))
138
+ return { success: true, filePaths: [], qualifiedName };
139
+ const absolute = resolve(cwd, file);
140
+ const targetAbsolute = resolve(cwd, targetFile);
141
+ if (!existsSync(absolute))
142
+ return { success: false, filePaths: [], error: `${file} does not exist.` };
143
+ if (!existsSync(targetAbsolute))
144
+ return { success: false, filePaths: [], error: `${targetFile} does not exist.` };
145
+ const source = readFileSync(absolute, 'utf8');
146
+ const target = (await locatePackages(source)).find(pkg => pkg.qualifiedName === qualifiedName);
147
+ if (!target) {
148
+ return { success: false, filePaths: [], error: `${file} does not declare package "${qualifiedName}".` };
149
+ }
150
+ const moved = `${target.name.split('::').pop()}`;
151
+ const renamed = targetParent ? `${targetParent}::${moved}` : moved;
152
+ const declaration = dedent(source.slice(target.start, target.end).replace(/\s+$/, ''));
153
+ const withoutPackage = removeLine(source, target.start, target.end);
154
+ const sameFile = absolute === targetAbsolute;
155
+ const targetSource = sameFile ? withoutPackage : readFileSync(targetAbsolute, 'utf8');
156
+ let updatedTarget;
157
+ if (targetParent) {
158
+ const parent = (await locatePackages(targetSource)).find(pkg => pkg.qualifiedName === targetParent);
159
+ if (!parent) {
160
+ return { success: false, filePaths: [], error: `${targetFile} does not declare package "${targetParent}".` };
161
+ }
162
+ updatedTarget = insertIntoBody(targetSource, parent, `${declaration}\n`);
163
+ }
164
+ else {
165
+ const separator = targetSource.endsWith('\n') ? '' : '\n';
166
+ updatedTarget = `${targetSource}${separator}${declaration}\n`;
167
+ }
168
+ const warnings = [{ code: 'package-edit-is-text-only', message: PACKAGE_EDIT_IS_TEXT_ONLY }];
169
+ if (sameFile) {
170
+ const committed = await commitSource(absolute, file, updatedTarget);
171
+ if (!committed.success)
172
+ return { success: false, filePaths: [], error: committed.error };
173
+ return { success: true, filePaths: [file], qualifiedName: renamed, warnings };
174
+ }
175
+ const committedTarget = await commitSource(targetAbsolute, targetFile, updatedTarget);
176
+ if (!committedTarget.success)
177
+ return { success: false, filePaths: [], error: committedTarget.error };
178
+ const committedSource = await commitSource(absolute, file, withoutPackage);
179
+ if (!committedSource.success) {
180
+ return {
181
+ success: false, filePaths: [targetFile],
182
+ error: `${committedSource.error} "${qualifiedName}" is now declared in both ${file} and ${targetFile}; `
183
+ + 'remove the one you do not want.',
184
+ };
185
+ }
186
+ return { success: true, filePaths: [targetFile, file], qualifiedName: renamed, warnings };
187
+ }
188
+ /**
189
+ * Remove a package declaration, keeping everything it declares.
190
+ *
191
+ * The members are lifted into the enclosing scope rather than deleted: emptying
192
+ * a container is a containment change, and silently deleting a subtree of the
193
+ * model because someone removed a folder would be the most expensive possible
194
+ * reading of that gesture.
195
+ */
196
+ export async function deletePackage(cwd, request) {
197
+ const { file, qualifiedName } = request;
198
+ const absolute = resolve(cwd, file);
199
+ if (!existsSync(absolute))
200
+ return { success: false, filePaths: [], error: `${file} does not exist.` };
201
+ const source = readFileSync(absolute, 'utf8');
202
+ const target = (await locatePackages(source)).find(pkg => pkg.qualifiedName === qualifiedName);
203
+ if (!target) {
204
+ return { success: false, filePaths: [], error: `${file} does not declare package "${qualifiedName}".` };
205
+ }
206
+ if (!parentOf(qualifiedName)) {
207
+ return {
208
+ success: false, filePaths: [],
209
+ error: `"${qualifiedName}" is a top-level package; removing it would leave its members with no `
210
+ + 'namespace. Move or delete its contents first.',
211
+ };
212
+ }
213
+ const body = source.slice(target.bodyStart, target.bodyEnd);
214
+ const lifted = dedent(body.replace(/^\n/, '').replace(/\s+$/, ''));
215
+ const updated = lifted
216
+ ? spliceIndented(source, target.start, target.end, lifted)
217
+ : removeLine(source, target.start, target.end);
218
+ const committed = await commitSource(absolute, file, updated);
219
+ if (!committed.success)
220
+ return { success: false, filePaths: [], error: committed.error };
221
+ return {
222
+ success: true, filePaths: [file], qualifiedName,
223
+ ...(lifted ? { warnings: [{ code: 'package-edit-is-text-only', message: PACKAGE_EDIT_IS_TEXT_ONLY }] } : {}),
224
+ };
225
+ }
226
+ /**
227
+ * Move one element's declaration into another package.
228
+ *
229
+ * The declaration text is moved verbatim — this is a containment change, not a
230
+ * rewrite, so nothing the user authored inside the declaration is regenerated.
231
+ * The element is addressed by IR identity, exactly as an update is, so a move
232
+ * made against a stale revision fails loudly instead of cutting whatever now
233
+ * occupies that position.
234
+ */
235
+ export async function moveElementToPackage(cwd, request, index) {
236
+ const { elementId, irIdentity, sourceFile, targetFile, targetPackage } = request;
237
+ const sourceAbsolute = resolve(cwd, sourceFile);
238
+ const targetAbsolute = resolve(cwd, targetFile);
239
+ if (!existsSync(sourceAbsolute))
240
+ return { success: false, filePaths: [], error: `${sourceFile} does not exist.` };
241
+ if (!existsSync(targetAbsolute))
242
+ return { success: false, filePaths: [], error: `${targetFile} does not exist.` };
243
+ const source = readFileSync(sourceAbsolute, 'utf8');
244
+ let located;
245
+ try {
246
+ located = await locateByIdentity(source, index, irIdentity, elementId);
247
+ }
248
+ catch (e) {
249
+ if (e instanceof StaleIrIdentityError)
250
+ return { success: false, filePaths: [], stale: true, error: e.message };
251
+ return { success: false, filePaths: [], error: String(e) };
252
+ }
253
+ const declaration = dedent(source.slice(located.start, located.end).replace(/\s+$/, ''));
254
+ const withoutElement = removeLine(source, located.start, located.end);
255
+ // A move within one file is one edit to one string. Splitting it into a
256
+ // remove and an insert against the original offsets would place the second
257
+ // splice using positions the first one invalidated.
258
+ const sameFile = sourceAbsolute === targetAbsolute;
259
+ const targetSource = sameFile ? withoutElement : readFileSync(targetAbsolute, 'utf8');
260
+ let updatedTarget;
261
+ if (targetPackage) {
262
+ const target = (await locatePackages(targetSource)).find(pkg => pkg.qualifiedName === targetPackage);
263
+ if (!target) {
264
+ return { success: false, filePaths: [], error: `${targetFile} does not declare package "${targetPackage}".` };
265
+ }
266
+ updatedTarget = insertIntoBody(targetSource, target, `${declaration}\n`);
267
+ }
268
+ else {
269
+ const separator = targetSource.endsWith('\n') ? '' : '\n';
270
+ updatedTarget = `${targetSource}${separator}${declaration}\n`;
271
+ }
272
+ if (sameFile) {
273
+ const committed = await commitSource(targetAbsolute, targetFile, updatedTarget);
274
+ if (!committed.success)
275
+ return { success: false, filePaths: [], error: committed.error };
276
+ return { success: true, filePaths: [targetFile], qualifiedName: targetPackage };
277
+ }
278
+ // Across files, the destination is written first: if it fails, the source
279
+ // file still holds the only copy of the declaration. The reverse order can
280
+ // lose it outright.
281
+ const committedTarget = await commitSource(targetAbsolute, targetFile, updatedTarget);
282
+ if (!committedTarget.success)
283
+ return { success: false, filePaths: [], error: committedTarget.error };
284
+ const committedSource = await commitSource(sourceAbsolute, sourceFile, withoutElement);
285
+ if (!committedSource.success) {
286
+ return {
287
+ success: false, filePaths: [targetFile],
288
+ error: `${committedSource.error} "${elementId}" is now declared in both ${sourceFile} and ${targetFile}; `
289
+ + 'remove the one you do not want.',
290
+ };
291
+ }
292
+ return { success: true, filePaths: [targetFile, sourceFile], qualifiedName: targetPackage };
293
+ }
294
+ // ─── Source location ─────────────────────────────────────────────────────────
295
+ /** Source range of the declaration an IR identity names, in this file's text. */
296
+ async function locateByIdentity(source, index, identityId, elementId) {
297
+ const record = requireIrIdentity(index, identityId, elementId);
298
+ const { document, errors } = await parseText(source);
299
+ if (errors.length > 0) {
300
+ throw new StaleIrIdentityError(identityId, `its file no longer parses (${errors[0].message})`);
301
+ }
302
+ const node = resolveDeclarationByIdentity(document.parseResult.value, record.identity);
303
+ const cst = node.$cstNode;
304
+ if (!cst)
305
+ throw new StaleIrIdentityError(identityId, 'the resolved declaration has no source range');
306
+ return { start: cst.offset, end: cst.offset + cst.length };
307
+ }
308
+ // ─── Text editing ────────────────────────────────────────────────────────────
309
+ /** Qualified name of the declaring package, or undefined at the top level. */
310
+ function parentOf(qualifiedName) {
311
+ const separator = qualifiedName.lastIndexOf('::');
312
+ return separator === -1 ? undefined : qualifiedName.slice(0, separator);
313
+ }
314
+ function escapeRegExp(value) {
315
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
316
+ }
317
+ //# sourceMappingURL=package-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-writer.js","sourceRoot":"","sources":["../../src/server/package-writer.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,87 @@
1
+ import { type IrIdentityIndex } from '../model/ir-identity.js';
2
+ /** Default home for an element the request does not place. */
3
+ export declare const DEFAULT_ELEMENT_FILE = "model/catalog/project.sysml";
4
+ export interface ElementWriteRequest {
5
+ id: string;
6
+ name?: string;
7
+ kind?: string;
8
+ construct?: string;
9
+ layer?: string;
10
+ doc?: string;
11
+ attributes?: Record<string, string>;
12
+ /** Project-relative source file. */
13
+ file?: string;
14
+ /**
15
+ * Qualified name of the package that should declare this element.
16
+ *
17
+ * Creation only — a package change on an existing declaration is a move,
18
+ * which is ./package-writer.ts's job because it has to cut the declaration
19
+ * out of where it currently is. Absent means the file's last package, which
20
+ * is what a request that does not care about placement gets.
21
+ */
22
+ package?: string;
23
+ /**
24
+ * IR identity of the declaration being edited.
25
+ *
26
+ * Required to *update* an existing declaration. Absent means "create":
27
+ * there is no identity to quote for source that does not exist yet.
28
+ */
29
+ irIdentity?: string;
30
+ /**
31
+ * The element ID the quoted identity is expected to name, when this write
32
+ * changes the declaration's own identifier.
33
+ *
34
+ * Without it a rename is indistinguishable from a stale address — both are
35
+ * "the identity names something other than `id`" — and the safe reading of
36
+ * that ambiguity is to refuse. Saying so explicitly is what makes a rename
37
+ * a deliberate act rather than an accident the checker has to tolerate.
38
+ */
39
+ renamedFrom?: string;
40
+ }
41
+ /** Advisory notes about a write that succeeded. */
42
+ export interface ElementWriteWarning {
43
+ code: 'rename-is-text-only';
44
+ message: string;
45
+ }
46
+ export interface ElementWriteResult {
47
+ success: boolean;
48
+ filePath: string;
49
+ /** True when the declaration was replaced rather than appended. */
50
+ replaced?: boolean;
51
+ warnings?: ElementWriteWarning[];
52
+ error?: string;
53
+ /** Set when the failure was a stale identity, so callers can say so. */
54
+ stale?: boolean;
55
+ }
56
+ /**
57
+ * Why a rename is only a text edit, said once here so every surface says the
58
+ * same thing.
59
+ *
60
+ * Updating references would need name resolution across the workspace — the
61
+ * linker, which is Track B B5 and does not exist yet. Silently rewriting the
62
+ * declaration and leaving every reference pointing at the old name would be a
63
+ * broken model presented as a successful edit, so the write succeeds and says
64
+ * what it did not do.
65
+ */
66
+ export declare const RENAME_IS_TEXT_ONLY: string;
1
67
  /**
2
- * Persists an element change back to its source .sysml file.
68
+ * Write one element into project source.
3
69
  *
4
- * If the element is new (no 'file' property), it records it in 'model/generated.sysml'.
5
- * Uses a regex-based usage block replacement for existing elements.
70
+ * `index` is the identity index of the current revision. Passing it is what
71
+ * makes an update identity-addressed; without it only creation is possible,
72
+ * and an update that quotes an identity is refused rather than silently
73
+ * degraded to a name match.
6
74
  */
7
- export declare function saveElementToFile(cwd: string, element: any): {
75
+ export declare function saveElementToFile(cwd: string, element: ElementWriteRequest, index?: IrIdentityIndex): Promise<ElementWriteResult>;
76
+ /**
77
+ * Parse-before-commit, then write atomically.
78
+ *
79
+ * Source that does not parse never reaches disk. The editor model (§1.1) says a
80
+ * *user* may save anything; it does not say a machine-generated splice may
81
+ * corrupt a file the user did not touch.
82
+ */
83
+ export declare function commitSource(absolutePath: string, relativePath: string, updated: string): Promise<{
8
84
  success: boolean;
9
- filePath: string;
10
85
  error?: string;
11
- };
86
+ }>;
12
87
  //# sourceMappingURL=persistor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistor.d.ts","sourceRoot":"","sources":["../../src/server/persistor.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmEnH"}
1
+ {"version":3,"file":"persistor.d.ts","sourceRoot":"","sources":["../../src/server/persistor.ts"],"names":[],"mappings":"AA4BA,OAAO,EAIH,KAAK,eAAe,EACvB,MAAM,yBAAyB,CAAC;AAGjC,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,QAGI,CAAC;AAErC;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,mBAAmB,EAC5B,KAAK,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAyE7B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAC9B,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAC5D,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc/C"}