@memoarchitect/tools 0.6.6 → 0.7.2

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 (478) hide show
  1. package/README.md +54 -11
  2. package/package.json +19 -7
  3. package/packages/tools/lib/analysis-starters.d.ts +4 -0
  4. package/packages/tools/lib/analysis-starters.d.ts.map +1 -0
  5. package/packages/tools/lib/analysis-starters.js +425 -0
  6. package/packages/tools/lib/analysis-starters.js.map +1 -0
  7. package/packages/tools/lib/bin/memo.js +161 -10
  8. package/packages/tools/lib/bin/memo.js.map +1 -1
  9. package/packages/tools/lib/browser/index.d.ts +1 -1
  10. package/packages/tools/lib/browser/index.d.ts.map +1 -1
  11. package/packages/tools/lib/browser/index.js +1 -1
  12. package/packages/tools/lib/browser/index.js.map +1 -1
  13. package/packages/tools/lib/commands/ask.js +1 -1
  14. package/packages/tools/lib/commands/ask.js.map +1 -1
  15. package/packages/tools/lib/commands/check.d.ts.map +1 -1
  16. package/packages/tools/lib/commands/check.js +3 -9
  17. package/packages/tools/lib/commands/check.js.map +1 -1
  18. package/packages/tools/lib/commands/conformance.d.ts +36 -0
  19. package/packages/tools/lib/commands/conformance.d.ts.map +1 -0
  20. package/packages/tools/lib/commands/conformance.js +212 -0
  21. package/packages/tools/lib/commands/conformance.js.map +1 -0
  22. package/packages/tools/lib/commands/convert.d.ts +12 -0
  23. package/packages/tools/lib/commands/convert.d.ts.map +1 -0
  24. package/packages/tools/lib/commands/convert.js +103 -0
  25. package/packages/tools/lib/commands/convert.js.map +1 -0
  26. package/packages/tools/lib/commands/create-package.d.ts +1 -2
  27. package/packages/tools/lib/commands/create-package.d.ts.map +1 -1
  28. package/packages/tools/lib/commands/create-package.js.map +1 -1
  29. package/packages/tools/lib/commands/dev.d.ts +13 -0
  30. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  31. package/packages/tools/lib/commands/dev.js +208 -74
  32. package/packages/tools/lib/commands/dev.js.map +1 -1
  33. package/packages/tools/lib/commands/dhf-draft.js +1 -1
  34. package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
  35. package/packages/tools/lib/commands/dhf-preview.js +1 -1
  36. package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
  37. package/packages/tools/lib/commands/dhf.js +1 -1
  38. package/packages/tools/lib/commands/dhf.js.map +1 -1
  39. package/packages/tools/lib/commands/element.d.ts +34 -0
  40. package/packages/tools/lib/commands/element.d.ts.map +1 -0
  41. package/packages/tools/lib/commands/element.js +174 -0
  42. package/packages/tools/lib/commands/element.js.map +1 -0
  43. package/packages/tools/lib/commands/export.d.ts.map +1 -1
  44. package/packages/tools/lib/commands/export.js +39 -40
  45. package/packages/tools/lib/commands/export.js.map +1 -1
  46. package/packages/tools/lib/commands/generate.d.ts.map +1 -1
  47. package/packages/tools/lib/commands/generate.js +10 -7
  48. package/packages/tools/lib/commands/generate.js.map +1 -1
  49. package/packages/tools/lib/commands/import.d.ts.map +1 -1
  50. package/packages/tools/lib/commands/import.js +25 -12
  51. package/packages/tools/lib/commands/import.js.map +1 -1
  52. package/packages/tools/lib/commands/init.d.ts.map +1 -1
  53. package/packages/tools/lib/commands/init.js +37 -14
  54. package/packages/tools/lib/commands/init.js.map +1 -1
  55. package/packages/tools/lib/commands/inspect.d.ts +5 -0
  56. package/packages/tools/lib/commands/inspect.d.ts.map +1 -0
  57. package/packages/tools/lib/commands/inspect.js +56 -0
  58. package/packages/tools/lib/commands/inspect.js.map +1 -0
  59. package/packages/tools/lib/commands/lock.d.ts.map +1 -1
  60. package/packages/tools/lib/commands/lock.js +7 -2
  61. package/packages/tools/lib/commands/lock.js.map +1 -1
  62. package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
  63. package/packages/tools/lib/commands/ontology.js +69 -116
  64. package/packages/tools/lib/commands/ontology.js.map +1 -1
  65. package/packages/tools/lib/commands/pack.d.ts +1 -1
  66. package/packages/tools/lib/commands/pack.d.ts.map +1 -1
  67. package/packages/tools/lib/commands/pack.js +20 -75
  68. package/packages/tools/lib/commands/pack.js.map +1 -1
  69. package/packages/tools/lib/commands/package.d.ts +10 -0
  70. package/packages/tools/lib/commands/package.d.ts.map +1 -0
  71. package/packages/tools/lib/commands/package.js +113 -0
  72. package/packages/tools/lib/commands/package.js.map +1 -0
  73. package/packages/tools/lib/commands/plugin.js +1 -1
  74. package/packages/tools/lib/commands/plugin.js.map +1 -1
  75. package/packages/tools/lib/commands/rules.d.ts.map +1 -1
  76. package/packages/tools/lib/commands/rules.js +120 -30
  77. package/packages/tools/lib/commands/rules.js.map +1 -1
  78. package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
  79. package/packages/tools/lib/commands/sysand-publish.js +14 -16
  80. package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
  81. package/packages/tools/lib/commands/toolchain.d.ts +8 -0
  82. package/packages/tools/lib/commands/toolchain.d.ts.map +1 -0
  83. package/packages/tools/lib/commands/toolchain.js +64 -0
  84. package/packages/tools/lib/commands/toolchain.js.map +1 -0
  85. package/packages/tools/lib/commands/validate.d.ts +1 -1
  86. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  87. package/packages/tools/lib/commands/validate.js +183 -56
  88. package/packages/tools/lib/commands/validate.js.map +1 -1
  89. package/packages/tools/lib/completeness/tracker.d.ts +10 -2
  90. package/packages/tools/lib/completeness/tracker.d.ts.map +1 -1
  91. package/packages/tools/lib/completeness/tracker.js +16 -21
  92. package/packages/tools/lib/completeness/tracker.js.map +1 -1
  93. package/packages/tools/lib/conformance/baseline.d.ts +26 -0
  94. package/packages/tools/lib/conformance/baseline.d.ts.map +1 -0
  95. package/packages/tools/lib/conformance/baseline.js +170 -0
  96. package/packages/tools/lib/conformance/baseline.js.map +1 -0
  97. package/packages/tools/lib/conformance/bnf.d.ts +84 -0
  98. package/packages/tools/lib/conformance/bnf.d.ts.map +1 -0
  99. package/packages/tools/lib/conformance/bnf.js +166 -0
  100. package/packages/tools/lib/conformance/bnf.js.map +1 -0
  101. package/packages/tools/lib/conformance/corpus.d.ts +125 -0
  102. package/packages/tools/lib/conformance/corpus.d.ts.map +1 -0
  103. package/packages/tools/lib/conformance/corpus.js +190 -0
  104. package/packages/tools/lib/conformance/corpus.js.map +1 -0
  105. package/packages/tools/lib/conformance/diff-xmi.d.ts +118 -0
  106. package/packages/tools/lib/conformance/diff-xmi.d.ts.map +1 -0
  107. package/packages/tools/lib/conformance/diff-xmi.js +276 -0
  108. package/packages/tools/lib/conformance/diff-xmi.js.map +1 -0
  109. package/packages/tools/lib/conformance/generated/syside-rules.d.ts +10 -0
  110. package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +1 -0
  111. package/packages/tools/lib/conformance/generated/syside-rules.js +1142 -0
  112. package/packages/tools/lib/conformance/generated/syside-rules.js.map +1 -0
  113. package/packages/tools/lib/conformance/index.d.ts +7 -0
  114. package/packages/tools/lib/conformance/index.d.ts.map +1 -0
  115. package/packages/tools/lib/conformance/index.js +19 -0
  116. package/packages/tools/lib/conformance/index.js.map +1 -0
  117. package/packages/tools/lib/conformance/run.d.ts +117 -0
  118. package/packages/tools/lib/conformance/run.d.ts.map +1 -0
  119. package/packages/tools/lib/conformance/run.js +0 -0
  120. package/packages/tools/lib/conformance/run.js.map +1 -0
  121. package/packages/tools/lib/conformance/xmi.d.ts +45 -0
  122. package/packages/tools/lib/conformance/xmi.d.ts.map +1 -0
  123. package/packages/tools/lib/conformance/xmi.js +148 -0
  124. package/packages/tools/lib/conformance/xmi.js.map +1 -0
  125. package/packages/tools/lib/dhf/template-resolver.js +1 -1
  126. package/packages/tools/lib/dhf/template-resolver.js.map +1 -1
  127. package/packages/tools/lib/import/column-mapper.d.ts +2 -2
  128. package/packages/tools/lib/import/column-mapper.d.ts.map +1 -1
  129. package/packages/tools/lib/import/column-mapper.js +3 -3
  130. package/packages/tools/lib/import/column-mapper.js.map +1 -1
  131. package/packages/tools/lib/index.d.ts +20 -3
  132. package/packages/tools/lib/index.d.ts.map +1 -1
  133. package/packages/tools/lib/index.js +19 -2
  134. package/packages/tools/lib/index.js.map +1 -1
  135. package/packages/tools/lib/language/generated/ast.d.ts +196 -51
  136. package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
  137. package/packages/tools/lib/language/generated/ast.js +136 -15
  138. package/packages/tools/lib/language/generated/ast.js.map +1 -1
  139. package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
  140. package/packages/tools/lib/language/generated/grammar.js +867 -295
  141. package/packages/tools/lib/language/generated/grammar.js.map +1 -1
  142. package/packages/tools/lib/llm/chat-engine.d.ts +4 -3
  143. package/packages/tools/lib/llm/chat-engine.d.ts.map +1 -1
  144. package/packages/tools/lib/llm/chat-engine.js +15 -12
  145. package/packages/tools/lib/llm/chat-engine.js.map +1 -1
  146. package/packages/tools/lib/llm/generate-engine.d.ts +7 -2
  147. package/packages/tools/lib/llm/generate-engine.d.ts.map +1 -1
  148. package/packages/tools/lib/llm/generate-engine.js +22 -4
  149. package/packages/tools/lib/llm/generate-engine.js.map +1 -1
  150. package/packages/tools/lib/llm/index.d.ts +1 -0
  151. package/packages/tools/lib/llm/index.d.ts.map +1 -1
  152. package/packages/tools/lib/llm/index.js +1 -0
  153. package/packages/tools/lib/llm/index.js.map +1 -1
  154. package/packages/tools/lib/llm/model-context.d.ts +2 -2
  155. package/packages/tools/lib/llm/model-context.d.ts.map +1 -1
  156. package/packages/tools/lib/llm/model-context.js +7 -13
  157. package/packages/tools/lib/llm/model-context.js.map +1 -1
  158. package/packages/tools/lib/llm/sysml-guidance.d.ts +8 -0
  159. package/packages/tools/lib/llm/sysml-guidance.d.ts.map +1 -0
  160. package/packages/tools/lib/llm/sysml-guidance.js +28 -0
  161. package/packages/tools/lib/llm/sysml-guidance.js.map +1 -0
  162. package/packages/tools/lib/lock.d.ts +14 -8
  163. package/packages/tools/lib/lock.d.ts.map +1 -1
  164. package/packages/tools/lib/lock.js +97 -108
  165. package/packages/tools/lib/lock.js.map +1 -1
  166. package/packages/tools/lib/mcp/model-loader.d.ts +5 -1
  167. package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
  168. package/packages/tools/lib/mcp/model-loader.js +16 -27
  169. package/packages/tools/lib/mcp/model-loader.js.map +1 -1
  170. package/packages/tools/lib/mcp/tools.d.ts +3 -0
  171. package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
  172. package/packages/tools/lib/mcp/tools.js +8 -9
  173. package/packages/tools/lib/mcp/tools.js.map +1 -1
  174. package/packages/tools/lib/model/activity-notation.d.ts +54 -0
  175. package/packages/tools/lib/model/activity-notation.d.ts.map +1 -0
  176. package/packages/tools/lib/model/activity-notation.js +208 -0
  177. package/packages/tools/lib/model/activity-notation.js.map +1 -0
  178. package/packages/tools/lib/model/builder.d.ts +3 -0
  179. package/packages/tools/lib/model/builder.d.ts.map +1 -1
  180. package/packages/tools/lib/model/builder.js +264 -26
  181. package/packages/tools/lib/model/builder.js.map +1 -1
  182. package/packages/tools/lib/model/config-loader.d.ts +19 -25
  183. package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
  184. package/packages/tools/lib/model/config-loader.js +51 -233
  185. package/packages/tools/lib/model/config-loader.js.map +1 -1
  186. package/packages/tools/lib/model/config.d.ts +42 -213
  187. package/packages/tools/lib/model/config.d.ts.map +1 -1
  188. package/packages/tools/lib/model/config.js +11 -9
  189. package/packages/tools/lib/model/config.js.map +1 -1
  190. package/packages/tools/lib/model/effective-scope.d.ts +74 -0
  191. package/packages/tools/lib/model/effective-scope.d.ts.map +1 -0
  192. package/packages/tools/lib/model/effective-scope.js +133 -0
  193. package/packages/tools/lib/model/effective-scope.js.map +1 -0
  194. package/packages/tools/lib/model/ir-identity.d.ts +94 -0
  195. package/packages/tools/lib/model/ir-identity.d.ts.map +1 -0
  196. package/packages/tools/lib/model/ir-identity.js +178 -0
  197. package/packages/tools/lib/model/ir-identity.js.map +1 -0
  198. package/packages/tools/lib/model/kind-registry.d.ts +114 -1
  199. package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
  200. package/packages/tools/lib/model/kind-registry.js +148 -4
  201. package/packages/tools/lib/model/kind-registry.js.map +1 -1
  202. package/packages/tools/lib/model/layer-resolver.js +1 -1
  203. package/packages/tools/lib/model/layer-resolver.js.map +1 -1
  204. package/packages/tools/lib/model/methodology-loader.d.ts +19 -24
  205. package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
  206. package/packages/tools/lib/model/methodology-loader.js +179 -176
  207. package/packages/tools/lib/model/methodology-loader.js.map +1 -1
  208. package/packages/tools/lib/model/methodology-resolver.d.ts +115 -0
  209. package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -0
  210. package/packages/tools/lib/model/methodology-resolver.js +317 -0
  211. package/packages/tools/lib/model/methodology-resolver.js.map +1 -0
  212. package/packages/tools/lib/model/native-project.d.ts +130 -0
  213. package/packages/tools/lib/model/native-project.d.ts.map +1 -0
  214. package/packages/tools/lib/model/native-project.js +570 -0
  215. package/packages/tools/lib/model/native-project.js.map +1 -0
  216. package/packages/tools/lib/model/ontology-loader.d.ts +34 -21
  217. package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
  218. package/packages/tools/lib/model/ontology-loader.js +340 -614
  219. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  220. package/packages/tools/lib/model/package-manifest.d.ts +37 -0
  221. package/packages/tools/lib/model/package-manifest.d.ts.map +1 -0
  222. package/packages/tools/lib/model/package-manifest.js +96 -0
  223. package/packages/tools/lib/model/package-manifest.js.map +1 -0
  224. package/packages/tools/lib/model/parser-utils.d.ts +31 -0
  225. package/packages/tools/lib/model/parser-utils.d.ts.map +1 -1
  226. package/packages/tools/lib/model/parser-utils.js +89 -1
  227. package/packages/tools/lib/model/parser-utils.js.map +1 -1
  228. package/packages/tools/lib/model/paths.d.ts +10 -4
  229. package/packages/tools/lib/model/paths.d.ts.map +1 -1
  230. package/packages/tools/lib/model/paths.js +10 -4
  231. package/packages/tools/lib/model/paths.js.map +1 -1
  232. package/packages/tools/lib/model/project-conversion.d.ts +226 -0
  233. package/packages/tools/lib/model/project-conversion.d.ts.map +1 -0
  234. package/packages/tools/lib/model/project-conversion.js +946 -0
  235. package/packages/tools/lib/model/project-conversion.js.map +1 -0
  236. package/packages/tools/lib/model/relationship-legality.d.ts +12 -0
  237. package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
  238. package/packages/tools/lib/model/relationship-legality.js.map +1 -1
  239. package/packages/tools/lib/model/relationship-registry.d.ts +16 -1
  240. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
  241. package/packages/tools/lib/model/relationship-registry.js.map +1 -1
  242. package/packages/tools/lib/model/semantic.d.ts +38 -0
  243. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  244. package/packages/tools/lib/model/semantic.js +3 -0
  245. package/packages/tools/lib/model/semantic.js.map +1 -1
  246. package/packages/tools/lib/model/settings-boundary.d.ts +19 -0
  247. package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -0
  248. package/packages/tools/lib/model/settings-boundary.js +118 -0
  249. package/packages/tools/lib/model/settings-boundary.js.map +1 -0
  250. package/packages/tools/lib/model/short-id.d.ts +8 -7
  251. package/packages/tools/lib/model/short-id.d.ts.map +1 -1
  252. package/packages/tools/lib/model/short-id.js +26 -17
  253. package/packages/tools/lib/model/short-id.js.map +1 -1
  254. package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
  255. package/packages/tools/lib/model/source-graph.js +5 -1
  256. package/packages/tools/lib/model/source-graph.js.map +1 -1
  257. package/packages/tools/lib/model/source-provenance.d.ts +112 -0
  258. package/packages/tools/lib/model/source-provenance.d.ts.map +1 -0
  259. package/packages/tools/lib/model/source-provenance.js +169 -0
  260. package/packages/tools/lib/model/source-provenance.js.map +1 -0
  261. package/packages/tools/lib/model/sysml-files.d.ts +9 -0
  262. package/packages/tools/lib/model/sysml-files.d.ts.map +1 -1
  263. package/packages/tools/lib/model/sysml-files.js +20 -1
  264. package/packages/tools/lib/model/sysml-files.js.map +1 -1
  265. package/packages/tools/lib/model/sysml-ir.d.ts +9 -0
  266. package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -0
  267. package/packages/tools/lib/model/sysml-ir.js +105 -0
  268. package/packages/tools/lib/model/sysml-ir.js.map +1 -0
  269. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  270. package/packages/tools/lib/model/view-deriver.js +60 -6
  271. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  272. package/packages/tools/lib/model/view-kinds.d.ts +2 -0
  273. package/packages/tools/lib/model/view-kinds.d.ts.map +1 -1
  274. package/packages/tools/lib/model/view-kinds.js +11 -0
  275. package/packages/tools/lib/model/view-kinds.js.map +1 -1
  276. package/packages/tools/lib/ontology/owl-exporter.d.ts +2 -2
  277. package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
  278. package/packages/tools/lib/ontology/owl-exporter.js +12 -12
  279. package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
  280. package/packages/tools/lib/operations/ai-authoring.d.ts +24 -0
  281. package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -0
  282. package/packages/tools/lib/operations/ai-authoring.js +77 -0
  283. package/packages/tools/lib/operations/ai-authoring.js.map +1 -0
  284. package/packages/tools/lib/operations/authoring.d.ts +40 -0
  285. package/packages/tools/lib/operations/authoring.d.ts.map +1 -0
  286. package/packages/tools/lib/operations/authoring.js +56 -0
  287. package/packages/tools/lib/operations/authoring.js.map +1 -0
  288. package/packages/tools/lib/operations/index.d.ts +2 -0
  289. package/packages/tools/lib/operations/index.d.ts.map +1 -1
  290. package/packages/tools/lib/operations/index.js +2 -0
  291. package/packages/tools/lib/operations/index.js.map +1 -1
  292. package/packages/tools/lib/operations/project-snapshot.d.ts +28 -3
  293. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  294. package/packages/tools/lib/operations/project-snapshot.js +79 -30
  295. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  296. package/packages/tools/lib/protocol/messages.d.ts +311 -11
  297. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  298. package/packages/tools/lib/serializer/csv-io.d.ts +7 -7
  299. package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
  300. package/packages/tools/lib/serializer/csv-io.js +11 -11
  301. package/packages/tools/lib/serializer/csv-io.js.map +1 -1
  302. package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
  303. package/packages/tools/lib/serializer/sysml-generator.js +34 -2
  304. package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
  305. package/packages/tools/lib/server/config-resolver.d.ts +8 -4
  306. package/packages/tools/lib/server/config-resolver.d.ts.map +1 -1
  307. package/packages/tools/lib/server/config-resolver.js +25 -44
  308. package/packages/tools/lib/server/config-resolver.js.map +1 -1
  309. package/packages/tools/lib/server/conflict-policy.d.ts +44 -0
  310. package/packages/tools/lib/server/conflict-policy.d.ts.map +1 -0
  311. package/packages/tools/lib/server/conflict-policy.js +94 -0
  312. package/packages/tools/lib/server/conflict-policy.js.map +1 -0
  313. package/packages/tools/lib/server/dev-server.d.ts +32 -2
  314. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  315. package/packages/tools/lib/server/dev-server.js +721 -53
  316. package/packages/tools/lib/server/dev-server.js.map +1 -1
  317. package/packages/tools/lib/server/element-writer.d.ts +11 -0
  318. package/packages/tools/lib/server/element-writer.d.ts.map +1 -0
  319. package/packages/tools/lib/server/element-writer.js +123 -0
  320. package/packages/tools/lib/server/element-writer.js.map +1 -0
  321. package/packages/tools/lib/server/file-watcher.d.ts +4 -1
  322. package/packages/tools/lib/server/file-watcher.d.ts.map +1 -1
  323. package/packages/tools/lib/server/file-watcher.js +17 -7
  324. package/packages/tools/lib/server/file-watcher.js.map +1 -1
  325. package/packages/tools/lib/server/mutation-domain.d.ts +22 -0
  326. package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -0
  327. package/packages/tools/lib/server/mutation-domain.js +87 -0
  328. package/packages/tools/lib/server/mutation-domain.js.map +1 -0
  329. package/packages/tools/lib/server/persistor.d.ts +63 -8
  330. package/packages/tools/lib/server/persistor.d.ts.map +1 -1
  331. package/packages/tools/lib/server/persistor.js +152 -44
  332. package/packages/tools/lib/server/persistor.js.map +1 -1
  333. package/packages/tools/lib/server/relationship-writer.d.ts +28 -4
  334. package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
  335. package/packages/tools/lib/server/relationship-writer.js +98 -9
  336. package/packages/tools/lib/server/relationship-writer.js.map +1 -1
  337. package/packages/tools/lib/server/rule-policy-writer.d.ts +40 -0
  338. package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -0
  339. package/packages/tools/lib/server/rule-policy-writer.js +124 -0
  340. package/packages/tools/lib/server/rule-policy-writer.js.map +1 -0
  341. package/packages/tools/lib/server/runtime-budget.d.ts +14 -0
  342. package/packages/tools/lib/server/runtime-budget.d.ts.map +1 -0
  343. package/packages/tools/lib/server/runtime-budget.js +15 -0
  344. package/packages/tools/lib/server/runtime-budget.js.map +1 -0
  345. package/packages/tools/lib/server/sysml-notation.d.ts +36 -0
  346. package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -0
  347. package/packages/tools/lib/server/sysml-notation.js +87 -0
  348. package/packages/tools/lib/server/sysml-notation.js.map +1 -0
  349. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
  350. package/packages/tools/lib/server/view-layout-store.js +2 -0
  351. package/packages/tools/lib/server/view-layout-store.js.map +1 -1
  352. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts +9 -0
  353. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts.map +1 -0
  354. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js +315 -0
  355. package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js.map +1 -0
  356. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts +5206 -0
  357. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts.map +1 -0
  358. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js +1933 -0
  359. package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js.map +1 -0
  360. package/packages/tools/lib/sysml-ir/index.d.ts +3 -0
  361. package/packages/tools/lib/sysml-ir/index.d.ts.map +1 -0
  362. package/packages/tools/lib/sysml-ir/index.js +3 -0
  363. package/packages/tools/lib/sysml-ir/index.js.map +1 -0
  364. package/packages/tools/lib/sysml-ir/ir.d.ts +50 -0
  365. package/packages/tools/lib/sysml-ir/ir.d.ts.map +1 -0
  366. package/packages/tools/lib/sysml-ir/ir.js +2 -0
  367. package/packages/tools/lib/sysml-ir/ir.js.map +1 -0
  368. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +3 -0
  369. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +1 -0
  370. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +97 -0
  371. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +1 -0
  372. package/packages/tools/lib/sysmlc/index.d.ts +2 -0
  373. package/packages/tools/lib/sysmlc/index.d.ts.map +1 -0
  374. package/packages/tools/lib/sysmlc/index.js +7 -0
  375. package/packages/tools/lib/sysmlc/index.js.map +1 -0
  376. package/packages/tools/lib/sysmlc/server.d.ts +29 -0
  377. package/packages/tools/lib/sysmlc/server.d.ts.map +1 -0
  378. package/packages/tools/lib/sysmlc/server.js +168 -0
  379. package/packages/tools/lib/sysmlc/server.js.map +1 -0
  380. package/packages/tools/lib/toolchain/default-registry.d.ts +12 -0
  381. package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -0
  382. package/packages/tools/lib/toolchain/default-registry.js +28 -0
  383. package/packages/tools/lib/toolchain/default-registry.js.map +1 -0
  384. package/packages/tools/lib/toolchain/diagnostic.d.ts +57 -0
  385. package/packages/tools/lib/toolchain/diagnostic.d.ts.map +1 -0
  386. package/packages/tools/lib/toolchain/diagnostic.js +69 -0
  387. package/packages/tools/lib/toolchain/diagnostic.js.map +1 -0
  388. package/packages/tools/lib/toolchain/effective.d.ts +36 -0
  389. package/packages/tools/lib/toolchain/effective.d.ts.map +1 -0
  390. package/packages/tools/lib/toolchain/effective.js +91 -0
  391. package/packages/tools/lib/toolchain/effective.js.map +1 -0
  392. package/packages/tools/lib/toolchain/index.d.ts +11 -0
  393. package/packages/tools/lib/toolchain/index.d.ts.map +1 -0
  394. package/packages/tools/lib/toolchain/index.js +21 -0
  395. package/packages/tools/lib/toolchain/index.js.map +1 -0
  396. package/packages/tools/lib/toolchain/lowering.d.ts +63 -0
  397. package/packages/tools/lib/toolchain/lowering.d.ts.map +1 -0
  398. package/packages/tools/lib/toolchain/lowering.js +100 -0
  399. package/packages/tools/lib/toolchain/lowering.js.map +1 -0
  400. package/packages/tools/lib/toolchain/operations.d.ts +87 -0
  401. package/packages/tools/lib/toolchain/operations.d.ts.map +1 -0
  402. package/packages/tools/lib/toolchain/operations.js +111 -0
  403. package/packages/tools/lib/toolchain/operations.js.map +1 -0
  404. package/packages/tools/lib/toolchain/process.d.ts +45 -0
  405. package/packages/tools/lib/toolchain/process.d.ts.map +1 -0
  406. package/packages/tools/lib/toolchain/process.js +125 -0
  407. package/packages/tools/lib/toolchain/process.js.map +1 -0
  408. package/packages/tools/lib/toolchain/protocol.d.ts +122 -0
  409. package/packages/tools/lib/toolchain/protocol.d.ts.map +1 -0
  410. package/packages/tools/lib/toolchain/protocol.js +74 -0
  411. package/packages/tools/lib/toolchain/protocol.js.map +1 -0
  412. package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts +9 -0
  413. package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts.map +1 -0
  414. package/packages/tools/lib/toolchain/providers/internal-kpar.js +84 -0
  415. package/packages/tools/lib/toolchain/providers/internal-kpar.js.map +1 -0
  416. package/packages/tools/lib/toolchain/providers/internal.d.ts +33 -0
  417. package/packages/tools/lib/toolchain/providers/internal.d.ts.map +1 -0
  418. package/packages/tools/lib/toolchain/providers/internal.js +286 -0
  419. package/packages/tools/lib/toolchain/providers/internal.js.map +1 -0
  420. package/packages/tools/lib/toolchain/providers/sysand.d.ts +12 -0
  421. package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -0
  422. package/packages/tools/lib/toolchain/providers/sysand.js +110 -0
  423. package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -0
  424. package/packages/tools/lib/toolchain/providers/syside.d.ts +24 -0
  425. package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -0
  426. package/packages/tools/lib/toolchain/providers/syside.js +208 -0
  427. package/packages/tools/lib/toolchain/providers/syside.js.map +1 -0
  428. package/packages/tools/lib/toolchain/registry.d.ts +192 -0
  429. package/packages/tools/lib/toolchain/registry.d.ts.map +1 -0
  430. package/packages/tools/lib/toolchain/registry.js +130 -0
  431. package/packages/tools/lib/toolchain/registry.js.map +1 -0
  432. package/packages/tools/lib/toolchain/schema.d.ts +30 -0
  433. package/packages/tools/lib/toolchain/schema.d.ts.map +1 -0
  434. package/packages/tools/lib/toolchain/schema.js +112 -0
  435. package/packages/tools/lib/toolchain/schema.js.map +1 -0
  436. package/packages/tools/lib/toolchain/sysmlc-client.d.ts +77 -0
  437. package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +1 -0
  438. package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
  439. package/packages/tools/lib/toolchain/sysmlc-client.js.map +1 -0
  440. package/packages/tools/lib/validator/architecture-validator.d.ts +17 -0
  441. package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -0
  442. package/packages/tools/lib/validator/architecture-validator.js +101 -0
  443. package/packages/tools/lib/validator/architecture-validator.js.map +1 -0
  444. package/packages/tools/lib/validator/builtin-rules.d.ts +16 -0
  445. package/packages/tools/lib/validator/builtin-rules.d.ts.map +1 -0
  446. package/packages/tools/lib/validator/builtin-rules.js +62 -0
  447. package/packages/tools/lib/validator/builtin-rules.js.map +1 -0
  448. package/packages/tools/lib/validator/constraint-eval.d.ts +15 -0
  449. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  450. package/packages/tools/lib/validator/constraint-eval.js +62 -7
  451. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  452. package/packages/tools/lib/validator/constraint-loader.d.ts +22 -4
  453. package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
  454. package/packages/tools/lib/validator/constraint-loader.js +100 -27
  455. package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
  456. package/packages/tools/lib/validator/rule-engine.d.ts +2 -1
  457. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  458. package/packages/tools/lib/validator/rule-engine.js +57 -4
  459. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  460. package/packages/tools/lib/validator/sysml-constraints.d.ts +64 -0
  461. package/packages/tools/lib/validator/sysml-constraints.d.ts.map +1 -0
  462. package/packages/tools/lib/validator/sysml-constraints.js +251 -0
  463. package/packages/tools/lib/validator/sysml-constraints.js.map +1 -0
  464. package/packages/tools/lib/validator/types.d.ts +33 -0
  465. package/packages/tools/lib/validator/types.d.ts.map +1 -1
  466. package/packages/tools/lib/version.d.ts +2 -0
  467. package/packages/tools/lib/version.d.ts.map +1 -0
  468. package/packages/tools/lib/version.js +26 -0
  469. package/packages/tools/lib/version.js.map +1 -0
  470. package/packages/tools/src/grammar/memo-sysml.langium +104 -18
  471. package/packages/tools/lib/model/dimension-filter.d.ts +0 -33
  472. package/packages/tools/lib/model/dimension-filter.d.ts.map +0 -1
  473. package/packages/tools/lib/model/dimension-filter.js +0 -57
  474. package/packages/tools/lib/model/dimension-filter.js.map +0 -1
  475. package/packages/tools/lib/model/toolchain.d.ts +0 -12
  476. package/packages/tools/lib/model/toolchain.d.ts.map +0 -1
  477. package/packages/tools/lib/model/toolchain.js +0 -92
  478. package/packages/tools/lib/model/toolchain.js.map +0 -1
@@ -0,0 +1,122 @@
1
+ import type { MemoModelDTO, ParseError } from '../model/semantic.js';
2
+ import type { SysmlIR } from '../sysml-ir/index.js';
3
+ /**
4
+ * Protocol version, `major.minor.patch`.
5
+ *
6
+ * Compatibility is by major: a client refuses a server whose major differs,
7
+ * and accepts any minor at or above nothing in particular — new optional fields
8
+ * are a minor bump, a changed or removed field is a major one.
9
+ */
10
+ export declare const SYSMLC_PROTOCOL_VERSION = "1.1.0";
11
+ /**
12
+ * IR payload version, tracked separately from the protocol that carries it.
13
+ *
14
+ * The wire shape and the model shape change for different reasons: Session 3
15
+ * replaces this payload with the canonical IR without touching the request that
16
+ * delivers it. Two numbers, so that change costs one bump rather than a
17
+ * protocol break.
18
+ */
19
+ export declare const SYSMLC_IR_VERSION = "2.0.0";
20
+ /** The one custom request. Everything else on the wire is standard LSP. */
21
+ export declare const EMIT_IR_REQUEST = "memo/emitIr";
22
+ /**
23
+ * Where the server advertises its protocol version.
24
+ *
25
+ * `capabilities.experimental` is LSP's own extension point, so a generic client
26
+ * that knows nothing about MEMO still completes the handshake.
27
+ */
28
+ export declare const PROTOCOL_CAPABILITY_KEY = "memoProtocol";
29
+ export interface ProtocolCapability {
30
+ protocolVersion: string;
31
+ irVersion: string;
32
+ /** Implementation name and version, for diagnostics and probe output. */
33
+ implementation: string;
34
+ implementationVersion?: string;
35
+ }
36
+ export interface EmitIrParams {
37
+ /** Absolute path of the project to lower. */
38
+ projectDir: string;
39
+ /**
40
+ * Client-assigned, strictly increasing per project.
41
+ *
42
+ * This is what makes "a superseded revision never emits a stale result"
43
+ * enforceable: the server compares the revision it is working on against
44
+ * the newest it has been asked for, and refuses to answer with the old one.
45
+ */
46
+ revision: number;
47
+ /** The version the client is speaking, re-stated per request. */
48
+ protocolVersion: string;
49
+ /**
50
+ * The exact sources to lower, instead of the project's own discovery.
51
+ *
52
+ * Added in protocol 1.1.0 — an optional field, so a 1.0.0 server still
53
+ * answers a 1.1.0 client's ordinary request. It exists for callers whose
54
+ * subject is a file set rather than a project: `memo conformance` runs a
55
+ * corpus unit whose files a project walker would not collect, and both
56
+ * transports have to be able to say which files those are or only the
57
+ * in-process one could run a corpus.
58
+ *
59
+ * A server that does not understand it lowers the project instead. That is
60
+ * a visibly different answer, not a silently wrong one — the result names
61
+ * the files it read.
62
+ */
63
+ files?: readonly string[];
64
+ }
65
+ /**
66
+ * What the compiler understood from a revision.
67
+ *
68
+ * `parseErrors` is carried raw and separately from `model.errors`, because
69
+ * domain routing is the *caller's* decision, not the compiler's: the same
70
+ * failure is a `sysml` error when MEMO is the validator and a `memo-ingest`
71
+ * warning when something else was. A compiler that stamped a domain here would
72
+ * be answering a question it was not asked.
73
+ */
74
+ export interface MemoIr {
75
+ irVersion: string;
76
+ model: MemoModelDTO;
77
+ parseErrors: ParseError[];
78
+ /** True when lowering read the revision with no parse failures. */
79
+ accepted: boolean;
80
+ /** Canonical AST-level IR. `model` is its Memo projection for compatibility. */
81
+ sysml: SysmlIR;
82
+ }
83
+ export interface EmitIrResult {
84
+ outcome: 'ir';
85
+ protocolVersion: string;
86
+ revision: number;
87
+ ir: MemoIr;
88
+ }
89
+ /**
90
+ * The answer to a request the world moved past.
91
+ *
92
+ * Returning the computed-but-stale IR would be the worse failure: the canvas
93
+ * would draw a revision the user has already edited away from, with no way to
94
+ * tell. Naming the newer revision lets the client wait for the answer it
95
+ * actually wants.
96
+ */
97
+ export interface EmitIrSuperseded {
98
+ outcome: 'superseded';
99
+ protocolVersion: string;
100
+ revision: number;
101
+ supersededBy: number;
102
+ }
103
+ export type EmitIrResponse = EmitIrResult | EmitIrSuperseded;
104
+ /** One-shot `memo-sysmlc check --format json` / `emit-ir --format json` output. */
105
+ export interface SysmlcCheckOutput {
106
+ protocolVersion: string;
107
+ accepted: boolean;
108
+ parseErrors: ParseError[];
109
+ }
110
+ export interface SysmlcEmitIrOutput {
111
+ protocolVersion: string;
112
+ ir: MemoIr;
113
+ }
114
+ export declare class ProtocolVersionError extends Error {
115
+ readonly expected: string;
116
+ readonly actual: string | undefined;
117
+ constructor(expected: string, actual: string | undefined, where: string);
118
+ }
119
+ /** Same major version, both sides parseable. Anything else is incompatible. */
120
+ export declare function isProtocolCompatible(theirs: string | undefined, ours?: string): boolean;
121
+ export declare function assertProtocolCompatible(theirs: string | undefined, where: string, ours?: string): void;
122
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/toolchain/protocol.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC,2EAA2E;AAC3E,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IACzB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,mEAAmE;IACnE,QAAQ,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAE7D,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;gBAArD,QAAQ,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM;CAO5F;AAMD,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,SAA0B,GAAG,OAAO,CAKxG;AAED,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,EACb,IAAI,SAA0B,GAC/B,IAAI,CAEN"}
@@ -0,0 +1,74 @@
1
+ // ─── The sysmlc protocol ─────────────────────────────────────────────────────
2
+ //
3
+ // MEMO's own compiler is reached the way a third party's would be: as a process
4
+ // speaking a declared protocol. This module is that declaration, and it is the
5
+ // only thing both sides share — the bundled `memo-sysmlc` CLI implements it, the
6
+ // `internal` adapter consumes it, and neither imports the other's internals.
7
+ //
8
+ // The transport is LSP over stdio. That choice is not decoration: it gives
9
+ // cancellation, document synchronisation and lifecycle for free, it is what
10
+ // Sensmetry's own server speaks, and it means any editor can get MEMO
11
+ // diagnostics without a MEMO-specific client. Exactly one request is added to
12
+ // it — `memo/emitIr`, for the thing LSP has no notion of. Resist adding a
13
+ // second; anything that looks like it needs one is probably a document
14
+ // notification LSP already defines.
15
+ //
16
+ // **Versioned from day one.** The point of the boundary is that it outlives any
17
+ // one implementation behind it — Track B's native engine is meant to replace
18
+ // `memo-sysmlc` without the adapter noticing. A boundary whose shape is only ever
19
+ // "whatever the current build emits" cannot do that, so the version is checked
20
+ // on every handshake rather than assumed.
21
+ // ─────────────────────────────────────────────────────────────────────────────
22
+ /**
23
+ * Protocol version, `major.minor.patch`.
24
+ *
25
+ * Compatibility is by major: a client refuses a server whose major differs,
26
+ * and accepts any minor at or above nothing in particular — new optional fields
27
+ * are a minor bump, a changed or removed field is a major one.
28
+ */
29
+ export const SYSMLC_PROTOCOL_VERSION = '1.1.0';
30
+ /**
31
+ * IR payload version, tracked separately from the protocol that carries it.
32
+ *
33
+ * The wire shape and the model shape change for different reasons: Session 3
34
+ * replaces this payload with the canonical IR without touching the request that
35
+ * delivers it. Two numbers, so that change costs one bump rather than a
36
+ * protocol break.
37
+ */
38
+ export const SYSMLC_IR_VERSION = '2.0.0';
39
+ /** The one custom request. Everything else on the wire is standard LSP. */
40
+ export const EMIT_IR_REQUEST = 'memo/emitIr';
41
+ /**
42
+ * Where the server advertises its protocol version.
43
+ *
44
+ * `capabilities.experimental` is LSP's own extension point, so a generic client
45
+ * that knows nothing about MEMO still completes the handshake.
46
+ */
47
+ export const PROTOCOL_CAPABILITY_KEY = 'memoProtocol';
48
+ export class ProtocolVersionError extends Error {
49
+ expected;
50
+ actual;
51
+ constructor(expected, actual, where) {
52
+ super(`${where} speaks protocol ${actual ?? '(none advertised)'}, but this build speaks `
53
+ + `${expected}. Major versions must match. Update the compiler, or pin one that matches.`);
54
+ this.expected = expected;
55
+ this.actual = actual;
56
+ this.name = 'ProtocolVersionError';
57
+ }
58
+ }
59
+ function major(version) {
60
+ return /^(\d+)\./.exec(version)?.[1];
61
+ }
62
+ /** Same major version, both sides parseable. Anything else is incompatible. */
63
+ export function isProtocolCompatible(theirs, ours = SYSMLC_PROTOCOL_VERSION) {
64
+ if (!theirs)
65
+ return false;
66
+ const mine = major(ours);
67
+ const yours = major(theirs);
68
+ return mine !== undefined && mine === yours;
69
+ }
70
+ export function assertProtocolCompatible(theirs, where, ours = SYSMLC_PROTOCOL_VERSION) {
71
+ if (!isProtocolCompatible(theirs, ours))
72
+ throw new ProtocolVersionError(ours, theirs, where);
73
+ }
74
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/toolchain/protocol.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,6EAA6E;AAC7E,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,sEAAsE;AACtE,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,oCAAoC;AACpC,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,kFAAkF;AAClF,+EAA+E;AAC/E,0CAA0C;AAC1C,gFAAgF;AAKhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC;AA+FtD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACtB;IAA2B;IAAhD,YAAqB,QAAgB,EAAW,MAA0B,EAAE,KAAa;QACrF,KAAK,CACD,GAAG,KAAK,oBAAoB,MAAM,IAAI,mBAAmB,0BAA0B;cACjF,GAAG,QAAQ,4EAA4E,CAC5F,CAAC;QAJe,aAAQ,GAAR,QAAQ,CAAQ;QAAW,WAAM,GAAN,MAAM,CAAoB;QAKtE,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACvC,CAAC;CACJ;AAED,SAAS,KAAK,CAAC,OAAe;IAC1B,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,MAA0B,EAAE,IAAI,GAAG,uBAAuB;IAC3F,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACpC,MAA0B,EAC1B,KAAa,EACb,IAAI,GAAG,uBAAuB;IAE9B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACjG,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Write MEMO's private, gzip-tar project bundle.
3
+ *
4
+ * This deliberately is not called a KPAR. A KPAR is an interoperable SysML
5
+ * package and must be produced/consumed by a real KPAR provider; this archive
6
+ * is only a convenient offline MEMO snapshot.
7
+ */
8
+ export declare function writeInternalMemoBundle(projectRoot: string, outputPath: string, projectName: string): Promise<void>;
9
+ //# sourceMappingURL=internal-kpar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-kpar.d.ts","sourceRoot":"","sources":["../../../src/toolchain/providers/internal-kpar.ts"],"names":[],"mappings":"AAgEA;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CACzC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAYf"}
@@ -0,0 +1,84 @@
1
+ // ─── The internal MEMO bundle writer ─────────────────────────────────────────
2
+ //
3
+ // Moved here from `commands/pack.ts` when packaging became a provider role.
4
+ // It used to be the `else` branch of `if (packager === 'internal')`; it is now
5
+ // what the internal package provider does, which is the same code reached
6
+ // through the same interface every other packager is reached through.
7
+ // ─────────────────────────────────────────────────────────────────────────────
8
+ import { createWriteStream, readFileSync, readdirSync } from 'node:fs';
9
+ import { resolve } from 'node:path';
10
+ import { createGzip } from 'node:zlib';
11
+ import { pipeline } from 'node:stream/promises';
12
+ import { Readable } from 'node:stream';
13
+ import { isIgnoredDirectory } from '../../model/sysml-files.js';
14
+ function collectProjectFiles(dir, root) {
15
+ const files = [];
16
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
17
+ // Tool output and vendored dependencies are excluded by the same rule
18
+ // the source walker uses, so a package can never ship (or claim in its
19
+ // manifest) files the rest of the toolchain ignores.
20
+ if (isIgnoredDirectory(entry.name) || entry.name.endsWith('.kpar'))
21
+ continue;
22
+ const full = resolve(dir, entry.name);
23
+ if (entry.isDirectory())
24
+ files.push(...collectProjectFiles(full, root));
25
+ else if (entry.name.endsWith('.sysml') || [
26
+ 'memo.package.yaml', 'memo.config.yaml', '.project.json',
27
+ 'memo.rendering.yaml', 'memo.rules.yaml', 'memo.viewpoints.yaml', 'package.json',
28
+ ].includes(entry.name)) {
29
+ files.push({ path: full.slice(root.length + 1), content: readFileSync(full) });
30
+ }
31
+ }
32
+ return files;
33
+ }
34
+ function writeOctal(buffer, offset, length, value) {
35
+ Buffer.from(value.toString(8).padStart(length - 1, '0') + '\0', 'ascii').copy(buffer, offset);
36
+ }
37
+ function createTar(files) {
38
+ const blocks = [];
39
+ for (const file of files) {
40
+ const header = Buffer.alloc(512);
41
+ Buffer.from(file.path, 'utf-8').copy(header, 0, 0, 100);
42
+ writeOctal(header, 100, 8, 0o644);
43
+ writeOctal(header, 108, 8, 0);
44
+ writeOctal(header, 116, 8, 0);
45
+ writeOctal(header, 124, 12, file.content.length);
46
+ writeOctal(header, 136, 12, Math.floor(Date.now() / 1000));
47
+ header[156] = 0x30;
48
+ Buffer.from('ustar\0', 'ascii').copy(header, 257);
49
+ Buffer.from('00', 'ascii').copy(header, 263);
50
+ header.fill(0x20, 148, 156);
51
+ let checksum = 0;
52
+ for (const byte of header)
53
+ checksum += byte;
54
+ writeOctal(header, 148, 7, checksum);
55
+ header[155] = 0x20;
56
+ blocks.push(header, file.content);
57
+ const remainder = file.content.length % 512;
58
+ if (remainder)
59
+ blocks.push(Buffer.alloc(512 - remainder));
60
+ }
61
+ blocks.push(Buffer.alloc(1024));
62
+ return Buffer.concat(blocks);
63
+ }
64
+ /**
65
+ * Write MEMO's private, gzip-tar project bundle.
66
+ *
67
+ * This deliberately is not called a KPAR. A KPAR is an interoperable SysML
68
+ * package and must be produced/consumed by a real KPAR provider; this archive
69
+ * is only a convenient offline MEMO snapshot.
70
+ */
71
+ export async function writeInternalMemoBundle(projectRoot, outputPath, projectName) {
72
+ const files = collectProjectFiles(projectRoot, projectRoot);
73
+ const manifest = {
74
+ format: 'memo-bundle',
75
+ version: '1.0.0',
76
+ name: projectName,
77
+ createdAt: new Date().toISOString(),
78
+ fileCount: files.length,
79
+ files: files.map(file => file.path),
80
+ };
81
+ files.push({ path: 'manifest.json', content: Buffer.from(JSON.stringify(manifest, null, 2)) });
82
+ await pipeline(Readable.from([createTar(files)]), createGzip({ level: 9 }), createWriteStream(outputPath));
83
+ }
84
+ //# sourceMappingURL=internal-kpar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-kpar.js","sourceRoot":"","sources":["../../../src/toolchain/providers/internal-kpar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { LoweringDescriptor, PackageDescriptor, ProviderContext, Transport, ValidatorDescriptor } from '../registry.js';
2
+ /** The one place this string is written. Everything else reads it from here. */
3
+ export declare const INTERNAL_PROVIDER_ID = "internal";
4
+ /** The binary this adapter speaks to when the transport is `process`. */
5
+ export declare const SYSMLC_COMMAND = "memo-sysmlc";
6
+ export interface InternalToolConfig {
7
+ /** `in-process` (default) or `process`. */
8
+ transport?: Transport;
9
+ /** Path to a `memo-sysmlc` binary. Defaults to the bundled one, then PATH. */
10
+ executable?: string;
11
+ }
12
+ export declare function resolveSysmlcCommand(context: ProviderContext): string;
13
+ /**
14
+ * Validator role — "is this valid SysML?" answered by MEMO's Langium grammar.
15
+ *
16
+ * The grammar is a MEMO subset, so this answers a narrower question than
17
+ * `syside` does. That is exactly why the roles are separate and why a failure
18
+ * here, when another validator accepted the file, is an ingest problem rather
19
+ * than a SysML error.
20
+ */
21
+ export declare const internalValidatorDescriptor: ValidatorDescriptor;
22
+ /**
23
+ * Lowering role — "what can MEMO ingest from this revision?"
24
+ *
25
+ * Its diagnostics are `memo-ingest` by construction: this step is MEMO reading
26
+ * the source, so anything it cannot read is MEMO's limitation to report, not a
27
+ * verdict on the source. When MEMO is also the validator the caller collapses
28
+ * the duplicate, so one failure is still reported once.
29
+ */
30
+ export declare const internalLoweringDescriptor: LoweringDescriptor;
31
+ /** Package role — the built-in gzip-tar MEMO bundle writer. */
32
+ export declare const internalPackageDescriptor: PackageDescriptor;
33
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/toolchain/providers/internal.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAER,kBAAkB,EAElB,iBAAiB,EACjB,eAAe,EAEf,SAAS,EAET,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AAGxB,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C,yEAAyE;AACzE,eAAO,MAAM,cAAc,gBAAgB,CAAC;AA0B5C,MAAM,WAAW,kBAAkB;IAC/B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAoED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAErE;AA6DD;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,EAAE,mBAmCzC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,kBA6BxC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB,EAAE,iBA8BvC,CAAC"}
@@ -0,0 +1,286 @@
1
+ // ─── Adapter: MEMO's own compiler and packager ───────────────────────────────
2
+ //
3
+ // The internal tool is a plugin like any other. It gets no early return, no
4
+ // `if (provider === …)` shortcut, and no privileges the registry does not give
5
+ // every descriptor. The only thing it does claim is `isDefault`, which is a
6
+ // declaration made here in the adapter rather than a `?? 'internal'` written
7
+ // into core code — that is the whole difference between "the default" and "the
8
+ // special case".
9
+ //
10
+ // MEMO's compiler ships inside @memoarchitect/tools, and this adapter can reach
11
+ // its CLI over the same protocol
12
+ // a third party's compiler would speak. Two transports, one interface:
13
+ //
14
+ // in-process call `lowerProject` directly. The fast path, and the default,
15
+ // because it is what a clean install with an empty PATH has.
16
+ // process spawn `memo-sysmlc serve --stdio` and speak the protocol. Slower to
17
+ // start, and the only transport that proves the contract is real
18
+ // — over a pipe you cannot pass an object by reference or skip
19
+ // serialization. CI runs this one.
20
+ //
21
+ // Both call the same `lowerProject`, which is why they can be byte-identical
22
+ // rather than merely intended to agree.
23
+ // ─────────────────────────────────────────────────────────────────────────────
24
+ import { existsSync } from 'node:fs';
25
+ import { dirname } from 'node:path';
26
+ import { fileURLToPath } from 'node:url';
27
+ import { defaultSeverityForDomain } from '../diagnostic.js';
28
+ import { checkProject, lowerProject } from '../lowering.js';
29
+ import { findBundledExecutable, probeVersion, resolveExecutable, whichExecutable } from '../process.js';
30
+ import { getSysmlcClient } from '../sysmlc-client.js';
31
+ import { writeInternalMemoBundle } from './internal-kpar.js';
32
+ import { providerSettings } from '../effective.js';
33
+ /** The one place this string is written. Everything else reads it from here. */
34
+ export const INTERNAL_PROVIDER_ID = 'internal';
35
+ /** The binary this adapter speaks to when the transport is `process`. */
36
+ export const SYSMLC_COMMAND = 'memo-sysmlc';
37
+ const CAPABILITIES = ['check', 'lower', 'emit-ir'];
38
+ /**
39
+ * The transport used when the project configures none.
40
+ *
41
+ * Measured on GPCA (`scripts/measure-transport-latency.mjs`, 2026-08-02):
42
+ * a warm refresh costs 298 ms in-process and 332 ms over the pipe, against a
43
+ * 500 ms refresh budget — so the process transport **makes** budget, and §2.1's
44
+ * "keep in-process if it misses" clause was not triggered.
45
+ *
46
+ * It stays the default anyway, for the cost the warm number hides: the first
47
+ * request pays 632 ms for spawn and handshake, which a one-shot `memo validate`
48
+ * pays in full and never amortises. In-process is strictly cheaper for the
49
+ * commands that run once, and is what a clean install with an empty PATH has.
50
+ * CI exercises the other one, so switching is a config change rather than a
51
+ * project — and this constant is the whole of the switch.
52
+ */
53
+ const DEFAULT_TRANSPORT = 'in-process';
54
+ const TRANSPORTS = ['in-process', 'process'];
55
+ const SETTINGS_SCHEMA = [
56
+ {
57
+ path: `${INTERNAL_PROVIDER_ID}.transport`,
58
+ type: 'enum',
59
+ values: TRANSPORTS,
60
+ description: `How MEMO's own compiler is reached. \`process\` spawns \`${SYSMLC_COMMAND} serve --stdio\` `
61
+ + `and speaks the versioned protocol; \`in-process\` calls it directly. Defaults to `
62
+ + `${DEFAULT_TRANSPORT}.`,
63
+ },
64
+ {
65
+ path: `${INTERNAL_PROVIDER_ID}.executable`,
66
+ type: 'string',
67
+ description: `Path to a \`${SYSMLC_COMMAND}\` binary, for the \`process\` transport. Defaults to the `
68
+ + 'bundled one, and then to PATH.',
69
+ },
70
+ ];
71
+ function settings(context) {
72
+ return providerSettings(context.config, INTERNAL_PROVIDER_ID) ?? {};
73
+ }
74
+ function transport(context) {
75
+ const configured = settings(context).transport;
76
+ return configured && TRANSPORTS.includes(configured) ? configured : DEFAULT_TRANSPORT;
77
+ }
78
+ /** MEMO's own version, reported the way an external tool reports `--version`. */
79
+ function internalVersion() {
80
+ return process.env.MEMO_VERSION;
81
+ }
82
+ /**
83
+ * Where `memo-sysmlc` is, without the user having been asked to do anything.
84
+ *
85
+ * Configured path first, then the binary bundled beside this install, then
86
+ * PATH. The middle step is the one that matters: Architect depends on the
87
+ * compiler package, so an Architect install already has it — resolving it is
88
+ * MEMO's job, not the user's.
89
+ */
90
+ function compilerInvocation(context) {
91
+ const configured = settings(context).executable;
92
+ if (configured)
93
+ return { command: resolveExecutable(configured, SYSMLC_COMMAND, context.projectDir), args: [] };
94
+ const bundled = findBundledExecutable(SYSMLC_COMMAND, [
95
+ context.projectDir,
96
+ dirname(fileURLToPath(import.meta.url)),
97
+ ]);
98
+ if (bundled)
99
+ return { command: bundled, args: [] };
100
+ // A package cannot find its own npm bin link: npm creates that link for
101
+ // consumers. Run the compiled script directly so tools remains its own
102
+ // default compiler, whether installed standalone or as Architect's dep.
103
+ const scripts = [
104
+ // Compiled package: lib/toolchain/providers → lib/sysmlc/bin.
105
+ fileURLToPath(new URL('../../sysmlc/bin/memo-sysmlc.js', import.meta.url)),
106
+ // Source-mode test runner: src/toolchain/providers → lib/sysmlc/bin.
107
+ fileURLToPath(new URL('../../../lib/sysmlc/bin/memo-sysmlc.js', import.meta.url)),
108
+ ];
109
+ const script = scripts.find(existsSync);
110
+ if (script)
111
+ return { command: process.execPath, args: [script] };
112
+ return { command: SYSMLC_COMMAND, args: [] };
113
+ }
114
+ export function resolveSysmlcCommand(context) {
115
+ return compilerInvocation(context).command;
116
+ }
117
+ function client(context) {
118
+ const invocation = compilerInvocation(context);
119
+ return getSysmlcClient({
120
+ ...invocation,
121
+ projectDir: context.projectDir,
122
+ providerId: INTERNAL_PROVIDER_ID,
123
+ });
124
+ }
125
+ function probeFor(context) {
126
+ if (transport(context) === 'in-process') {
127
+ return { available: true, transport: 'in-process', version: internalVersion() };
128
+ }
129
+ const invocation = compilerInvocation(context);
130
+ const executable = whichExecutable(invocation.command);
131
+ if (!executable) {
132
+ return {
133
+ available: false,
134
+ transport: 'process',
135
+ detail: `"${invocation.command}" was not found on PATH or bundled with this install.`,
136
+ };
137
+ }
138
+ return {
139
+ available: true,
140
+ transport: 'process',
141
+ executable,
142
+ version: probeVersion(executable, [...invocation.args, '--version']) ?? internalVersion(),
143
+ };
144
+ }
145
+ /**
146
+ * Normalize parse errors into the caller's domain.
147
+ *
148
+ * `providerVersion` is this process's, never the server's, so the same defect
149
+ * reads identically whichever transport found it. The version of the compiler
150
+ * is worth knowing, and `memo toolchain probe` is where it is reported; a
151
+ * diagnostic list that changed shape with the transport would make the
152
+ * byte-identity test a test of nothing.
153
+ */
154
+ function toDiagnostics(errors, domain) {
155
+ return errors.map(error => ({
156
+ domain,
157
+ provider: INTERNAL_PROVIDER_ID,
158
+ providerVersion: internalVersion(),
159
+ severity: defaultSeverityForDomain(domain),
160
+ message: error.message,
161
+ file: error.file,
162
+ range: error.line !== undefined
163
+ ? { start: { line: error.line, column: error.column ?? 1 } }
164
+ : undefined,
165
+ }));
166
+ }
167
+ async function ir(context) {
168
+ return transport(context) === 'process'
169
+ ? client(context).emitIr(context.files)
170
+ : lowerProject(context.projectDir, { registries: context.registries, files: context.files });
171
+ }
172
+ /**
173
+ * Validator role — "is this valid SysML?" answered by MEMO's Langium grammar.
174
+ *
175
+ * The grammar is a MEMO subset, so this answers a narrower question than
176
+ * `syside` does. That is exactly why the roles are separate and why a failure
177
+ * here, when another validator accepted the file, is an ingest problem rather
178
+ * than a SysML error.
179
+ */
180
+ export const internalValidatorDescriptor = {
181
+ id: INTERNAL_PROVIDER_ID,
182
+ role: 'validator',
183
+ capabilities: ['check'],
184
+ isDefault: true,
185
+ settingsSchema: SETTINGS_SCHEMA,
186
+ probe: probeFor,
187
+ create(context) {
188
+ const mode = transport(context);
189
+ return {
190
+ id: INTERNAL_PROVIDER_ID,
191
+ role: 'validator',
192
+ transport: mode,
193
+ invocation: () => mode === 'process'
194
+ ? (() => { const invocation = compilerInvocation(context); return { command: invocation.command, args: [...invocation.args, 'serve', '--stdio'], provider: INTERNAL_PROVIDER_ID }; })()
195
+ : undefined,
196
+ async run() {
197
+ // Checking needs parse errors and nothing else. Over the process
198
+ // transport it rides on `memo/emitIr` rather than earning a
199
+ // second custom request — the server answers a repeat request
200
+ // for an unchanged revision from cache, so a snapshot that runs
201
+ // both roles still compiles once.
202
+ const { parseErrors } = mode === 'process'
203
+ ? await client(context).emitIr(context.files)
204
+ : await checkProject(context.projectDir, context.files);
205
+ return {
206
+ provider: INTERNAL_PROVIDER_ID,
207
+ providerVersion: internalVersion(),
208
+ transport: mode,
209
+ accepted: parseErrors.length === 0,
210
+ diagnostics: toDiagnostics(parseErrors, 'sysml'),
211
+ };
212
+ },
213
+ };
214
+ },
215
+ };
216
+ /**
217
+ * Lowering role — "what can MEMO ingest from this revision?"
218
+ *
219
+ * Its diagnostics are `memo-ingest` by construction: this step is MEMO reading
220
+ * the source, so anything it cannot read is MEMO's limitation to report, not a
221
+ * verdict on the source. When MEMO is also the validator the caller collapses
222
+ * the duplicate, so one failure is still reported once.
223
+ */
224
+ export const internalLoweringDescriptor = {
225
+ id: INTERNAL_PROVIDER_ID,
226
+ role: 'lowering',
227
+ capabilities: [...CAPABILITIES],
228
+ isDefault: true,
229
+ settingsSchema: SETTINGS_SCHEMA,
230
+ probe: probeFor,
231
+ create(context) {
232
+ const mode = transport(context);
233
+ return {
234
+ id: INTERNAL_PROVIDER_ID,
235
+ role: 'lowering',
236
+ transport: mode,
237
+ invocation: () => mode === 'process'
238
+ ? (() => { const invocation = compilerInvocation(context); return { command: invocation.command, args: [...invocation.args, 'serve', '--stdio'], provider: INTERNAL_PROVIDER_ID }; })()
239
+ : undefined,
240
+ async run() {
241
+ const payload = await ir(context);
242
+ return {
243
+ provider: INTERNAL_PROVIDER_ID,
244
+ providerVersion: internalVersion(),
245
+ transport: mode,
246
+ accepted: payload.accepted,
247
+ diagnostics: toDiagnostics(payload.parseErrors, 'memo-ingest'),
248
+ ir: payload,
249
+ };
250
+ },
251
+ };
252
+ },
253
+ };
254
+ /** Package role — the built-in gzip-tar MEMO bundle writer. */
255
+ export const internalPackageDescriptor = {
256
+ id: INTERNAL_PROVIDER_ID,
257
+ role: 'package',
258
+ capabilities: ['pack'],
259
+ isDefault: true,
260
+ probe: () => ({ available: true, transport: 'in-process', version: internalVersion() }),
261
+ create(context) {
262
+ return {
263
+ id: INTERNAL_PROVIDER_ID,
264
+ role: 'package',
265
+ transport: 'in-process',
266
+ invocation: () => undefined,
267
+ async run() {
268
+ const outputPath = context.outputPath;
269
+ if (!outputPath)
270
+ throw new Error('Packaging requires an output path.');
271
+ await writeInternalMemoBundle(context.projectDir, outputPath, context.config.projectName || 'memo-project');
272
+ if (!existsSync(outputPath)) {
273
+ throw new Error(`${INTERNAL_PROVIDER_ID} completed but did not create ${outputPath}.`);
274
+ }
275
+ return {
276
+ provider: INTERNAL_PROVIDER_ID,
277
+ providerVersion: internalVersion(),
278
+ transport: 'in-process',
279
+ accepted: true,
280
+ diagnostics: [],
281
+ };
282
+ },
283
+ };
284
+ },
285
+ };
286
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/toolchain/providers/internal.ts"],"names":[],"mappings":"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"}