@memoarchitect/tools 0.13.2 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (825) hide show
  1. package/README.md +40 -26
  2. package/corpus/README.md +20 -36
  3. package/package.json +9 -10
  4. package/packages/tools/lib/analysis/impact.d.ts +30 -0
  5. package/packages/tools/lib/analysis/impact.d.ts.map +1 -1
  6. package/packages/tools/lib/analysis/impact.js +47 -74
  7. package/packages/tools/lib/analysis/impact.js.map +1 -1
  8. package/packages/tools/lib/analysis/interfaces-between.d.ts +36 -0
  9. package/packages/tools/lib/analysis/interfaces-between.d.ts.map +1 -0
  10. package/packages/tools/lib/analysis/interfaces-between.js +66 -0
  11. package/packages/tools/lib/analysis/interfaces-between.js.map +1 -0
  12. package/packages/tools/lib/analysis/suspect-links.d.ts +45 -0
  13. package/packages/tools/lib/analysis/suspect-links.d.ts.map +1 -0
  14. package/packages/tools/lib/analysis/suspect-links.js +66 -0
  15. package/packages/tools/lib/analysis/suspect-links.js.map +1 -0
  16. package/packages/tools/lib/analysis-starters.d.ts +2 -0
  17. package/packages/tools/lib/analysis-starters.d.ts.map +1 -1
  18. package/packages/tools/lib/analysis-starters.js +73 -68
  19. package/packages/tools/lib/analysis-starters.js.map +1 -1
  20. package/packages/tools/lib/authoring/outline-identity.d.ts +34 -0
  21. package/packages/tools/lib/authoring/outline-identity.d.ts.map +1 -0
  22. package/packages/tools/lib/authoring/outline-identity.js +95 -0
  23. package/packages/tools/lib/authoring/outline-identity.js.map +1 -0
  24. package/packages/tools/lib/authoring/outline-source.d.ts +57 -0
  25. package/packages/tools/lib/authoring/outline-source.d.ts.map +1 -0
  26. package/packages/tools/lib/authoring/outline-source.js +203 -0
  27. package/packages/tools/lib/authoring/outline-source.js.map +1 -0
  28. package/packages/tools/lib/authoring/source-outline.d.ts +82 -0
  29. package/packages/tools/lib/authoring/source-outline.d.ts.map +1 -0
  30. package/packages/tools/lib/authoring/source-outline.js +267 -0
  31. package/packages/tools/lib/authoring/source-outline.js.map +1 -0
  32. package/packages/tools/lib/bin/memo.js +181 -632
  33. package/packages/tools/lib/bin/memo.js.map +1 -1
  34. package/packages/tools/lib/browser/index.d.ts +12 -0
  35. package/packages/tools/lib/browser/index.d.ts.map +1 -1
  36. package/packages/tools/lib/browser/index.js +8 -0
  37. package/packages/tools/lib/browser/index.js.map +1 -1
  38. package/packages/tools/lib/cli/project-commands.d.ts +3 -0
  39. package/packages/tools/lib/cli/project-commands.d.ts.map +1 -0
  40. package/packages/tools/lib/cli/project-commands.js +577 -0
  41. package/packages/tools/lib/cli/project-commands.js.map +1 -0
  42. package/packages/tools/lib/commands/ask.d.ts.map +1 -1
  43. package/packages/tools/lib/commands/ask.js +10 -18
  44. package/packages/tools/lib/commands/ask.js.map +1 -1
  45. package/packages/tools/lib/commands/compile.d.ts +18 -0
  46. package/packages/tools/lib/commands/compile.d.ts.map +1 -0
  47. package/packages/tools/lib/commands/compile.js +122 -0
  48. package/packages/tools/lib/commands/compile.js.map +1 -0
  49. package/packages/tools/lib/commands/convert.js +2 -2
  50. package/packages/tools/lib/commands/convert.js.map +1 -1
  51. package/packages/tools/lib/commands/create-package.js +4 -4
  52. package/packages/tools/lib/commands/create-package.js.map +1 -1
  53. package/packages/tools/lib/commands/dev.d.ts +20 -2
  54. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  55. package/packages/tools/lib/commands/dev.js +386 -97
  56. package/packages/tools/lib/commands/dev.js.map +1 -1
  57. package/packages/tools/lib/commands/dhf-draft.d.ts.map +1 -1
  58. package/packages/tools/lib/commands/dhf-draft.js +7 -16
  59. package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
  60. package/packages/tools/lib/commands/dhf-init.js +3 -3
  61. package/packages/tools/lib/commands/dhf-init.js.map +1 -1
  62. package/packages/tools/lib/commands/dhf-lint.d.ts.map +1 -1
  63. package/packages/tools/lib/commands/dhf-lint.js +4 -3
  64. package/packages/tools/lib/commands/dhf-lint.js.map +1 -1
  65. package/packages/tools/lib/commands/dhf-preview.d.ts.map +1 -1
  66. package/packages/tools/lib/commands/dhf-preview.js +5 -26
  67. package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
  68. package/packages/tools/lib/commands/dhf.d.ts +4 -0
  69. package/packages/tools/lib/commands/dhf.d.ts.map +1 -1
  70. package/packages/tools/lib/commands/dhf.js +77 -31
  71. package/packages/tools/lib/commands/dhf.js.map +1 -1
  72. package/packages/tools/lib/commands/element.d.ts.map +1 -1
  73. package/packages/tools/lib/commands/element.js +44 -6
  74. package/packages/tools/lib/commands/element.js.map +1 -1
  75. package/packages/tools/lib/commands/export.d.ts +1 -1
  76. package/packages/tools/lib/commands/export.d.ts.map +1 -1
  77. package/packages/tools/lib/commands/export.js +25 -18
  78. package/packages/tools/lib/commands/export.js.map +1 -1
  79. package/packages/tools/lib/commands/generate.d.ts.map +1 -1
  80. package/packages/tools/lib/commands/generate.js +10 -30
  81. package/packages/tools/lib/commands/generate.js.map +1 -1
  82. package/packages/tools/lib/commands/ids-rebase.d.ts +15 -0
  83. package/packages/tools/lib/commands/ids-rebase.d.ts.map +1 -0
  84. package/packages/tools/lib/commands/ids-rebase.js +133 -0
  85. package/packages/tools/lib/commands/ids-rebase.js.map +1 -0
  86. package/packages/tools/lib/commands/import-ea.d.ts +3 -3
  87. package/packages/tools/lib/commands/import-ea.d.ts.map +1 -1
  88. package/packages/tools/lib/commands/import-ea.js +12 -9
  89. package/packages/tools/lib/commands/import-ea.js.map +1 -1
  90. package/packages/tools/lib/commands/import-owl.d.ts +1 -1
  91. package/packages/tools/lib/commands/import-owl.js +2 -2
  92. package/packages/tools/lib/commands/import-owl.js.map +1 -1
  93. package/packages/tools/lib/commands/import-sysand.d.ts +1 -1
  94. package/packages/tools/lib/commands/import-sysand.d.ts.map +1 -1
  95. package/packages/tools/lib/commands/import-sysand.js +15 -6
  96. package/packages/tools/lib/commands/import-sysand.js.map +1 -1
  97. package/packages/tools/lib/commands/import.d.ts +13 -0
  98. package/packages/tools/lib/commands/import.d.ts.map +1 -1
  99. package/packages/tools/lib/commands/import.js +89 -29
  100. package/packages/tools/lib/commands/import.js.map +1 -1
  101. package/packages/tools/lib/commands/init.d.ts +0 -8
  102. package/packages/tools/lib/commands/init.d.ts.map +1 -1
  103. package/packages/tools/lib/commands/init.js +56 -51
  104. package/packages/tools/lib/commands/init.js.map +1 -1
  105. package/packages/tools/lib/commands/inspect.d.ts.map +1 -1
  106. package/packages/tools/lib/commands/inspect.js +22 -15
  107. package/packages/tools/lib/commands/inspect.js.map +1 -1
  108. package/packages/tools/lib/commands/install.d.ts.map +1 -1
  109. package/packages/tools/lib/commands/install.js +9 -6
  110. package/packages/tools/lib/commands/install.js.map +1 -1
  111. package/packages/tools/lib/commands/interfaces.d.ts +8 -0
  112. package/packages/tools/lib/commands/interfaces.d.ts.map +1 -0
  113. package/packages/tools/lib/commands/interfaces.js +71 -0
  114. package/packages/tools/lib/commands/interfaces.js.map +1 -0
  115. package/packages/tools/lib/commands/lock.d.ts.map +1 -1
  116. package/packages/tools/lib/commands/lock.js +13 -6
  117. package/packages/tools/lib/commands/lock.js.map +1 -1
  118. package/packages/tools/lib/commands/mcp.js +7 -7
  119. package/packages/tools/lib/commands/mcp.js.map +1 -1
  120. package/packages/tools/lib/commands/migrate-layout.d.ts +5 -0
  121. package/packages/tools/lib/commands/migrate-layout.d.ts.map +1 -0
  122. package/packages/tools/lib/commands/migrate-layout.js +90 -0
  123. package/packages/tools/lib/commands/migrate-layout.js.map +1 -0
  124. package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
  125. package/packages/tools/lib/commands/ontology.js +26 -22
  126. package/packages/tools/lib/commands/ontology.js.map +1 -1
  127. package/packages/tools/lib/commands/pack.d.ts.map +1 -1
  128. package/packages/tools/lib/commands/pack.js +14 -9
  129. package/packages/tools/lib/commands/pack.js.map +1 -1
  130. package/packages/tools/lib/commands/pinned-target.d.ts +12 -0
  131. package/packages/tools/lib/commands/pinned-target.d.ts.map +1 -0
  132. package/packages/tools/lib/commands/pinned-target.js +74 -0
  133. package/packages/tools/lib/commands/pinned-target.js.map +1 -0
  134. package/packages/tools/lib/commands/plugin.d.ts.map +1 -1
  135. package/packages/tools/lib/commands/plugin.js +13 -22
  136. package/packages/tools/lib/commands/plugin.js.map +1 -1
  137. package/packages/tools/lib/commands/prune.d.ts +5 -0
  138. package/packages/tools/lib/commands/prune.d.ts.map +1 -0
  139. package/packages/tools/lib/commands/prune.js +27 -0
  140. package/packages/tools/lib/commands/prune.js.map +1 -0
  141. package/packages/tools/lib/commands/retired.d.ts +10 -0
  142. package/packages/tools/lib/commands/retired.d.ts.map +1 -0
  143. package/packages/tools/lib/commands/retired.js +35 -0
  144. package/packages/tools/lib/commands/retired.js.map +1 -0
  145. package/packages/tools/lib/commands/rules.d.ts +49 -5
  146. package/packages/tools/lib/commands/rules.d.ts.map +1 -1
  147. package/packages/tools/lib/commands/rules.js +340 -172
  148. package/packages/tools/lib/commands/rules.js.map +1 -1
  149. package/packages/tools/lib/commands/ship-library.d.ts +4 -0
  150. package/packages/tools/lib/commands/ship-library.d.ts.map +1 -0
  151. package/packages/tools/lib/commands/ship-library.js +45 -0
  152. package/packages/tools/lib/commands/ship-library.js.map +1 -0
  153. package/packages/tools/lib/commands/standards.d.ts +2 -2
  154. package/packages/tools/lib/commands/standards.d.ts.map +1 -1
  155. package/packages/tools/lib/commands/standards.js +78 -33
  156. package/packages/tools/lib/commands/standards.js.map +1 -1
  157. package/packages/tools/lib/commands/sysand-publish.d.ts +16 -1
  158. package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
  159. package/packages/tools/lib/commands/sysand-publish.js +75 -193
  160. package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
  161. package/packages/tools/lib/commands/toolchain.d.ts +5 -0
  162. package/packages/tools/lib/commands/toolchain.d.ts.map +1 -1
  163. package/packages/tools/lib/commands/toolchain.js +50 -1
  164. package/packages/tools/lib/commands/toolchain.js.map +1 -1
  165. package/packages/tools/lib/commands/validate-client.d.ts +11 -0
  166. package/packages/tools/lib/commands/validate-client.d.ts.map +1 -0
  167. package/packages/tools/lib/commands/validate-client.js +54 -0
  168. package/packages/tools/lib/commands/validate-client.js.map +1 -0
  169. package/packages/tools/lib/commands/validate.d.ts +33 -2
  170. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  171. package/packages/tools/lib/commands/validate.js +432 -186
  172. package/packages/tools/lib/commands/validate.js.map +1 -1
  173. package/packages/tools/lib/dhf/device-dhf.d.ts +57 -0
  174. package/packages/tools/lib/dhf/device-dhf.d.ts.map +1 -0
  175. package/packages/tools/lib/dhf/device-dhf.js +152 -0
  176. package/packages/tools/lib/dhf/device-dhf.js.map +1 -0
  177. package/packages/tools/lib/dhf/dhf-config-v2.d.ts +1 -1
  178. package/packages/tools/lib/dhf/dhf-config-v2.d.ts.map +1 -1
  179. package/packages/tools/lib/dhf/query-engine.d.ts +9 -2
  180. package/packages/tools/lib/dhf/query-engine.d.ts.map +1 -1
  181. package/packages/tools/lib/dhf/query-engine.js +29 -25
  182. package/packages/tools/lib/dhf/query-engine.js.map +1 -1
  183. package/packages/tools/lib/dhf/query-executor.d.ts +1 -1
  184. package/packages/tools/lib/dhf/query-executor.js +1 -1
  185. package/packages/tools/lib/dhf/query-executor.js.map +1 -1
  186. package/packages/tools/lib/dhf/standards-block.js +1 -1
  187. package/packages/tools/lib/dhf/standards-block.js.map +1 -1
  188. package/packages/tools/lib/dhf/standards-library.d.ts.map +1 -1
  189. package/packages/tools/lib/dhf/standards-library.js +16 -9
  190. package/packages/tools/lib/dhf/standards-library.js.map +1 -1
  191. package/packages/tools/lib/dhf/standards-report.d.ts +11 -3
  192. package/packages/tools/lib/dhf/standards-report.d.ts.map +1 -1
  193. package/packages/tools/lib/dhf/standards-report.js +43 -13
  194. package/packages/tools/lib/dhf/standards-report.js.map +1 -1
  195. package/packages/tools/lib/dhf/template-engine.d.ts +2 -0
  196. package/packages/tools/lib/dhf/template-engine.d.ts.map +1 -1
  197. package/packages/tools/lib/dhf/template-engine.js +5 -5
  198. package/packages/tools/lib/dhf/template-engine.js.map +1 -1
  199. package/packages/tools/lib/import/import-diff.d.ts +31 -1
  200. package/packages/tools/lib/import/import-diff.d.ts.map +1 -1
  201. package/packages/tools/lib/import/import-diff.js +91 -19
  202. package/packages/tools/lib/import/import-diff.js.map +1 -1
  203. package/packages/tools/lib/import/import-sources.d.ts +21 -0
  204. package/packages/tools/lib/import/import-sources.d.ts.map +1 -0
  205. package/packages/tools/lib/import/import-sources.js +36 -0
  206. package/packages/tools/lib/import/import-sources.js.map +1 -0
  207. package/packages/tools/lib/import/reqif.d.ts +23 -0
  208. package/packages/tools/lib/import/reqif.d.ts.map +1 -0
  209. package/packages/tools/lib/import/reqif.js +151 -0
  210. package/packages/tools/lib/import/reqif.js.map +1 -0
  211. package/packages/tools/lib/import/source-import.d.ts +128 -0
  212. package/packages/tools/lib/import/source-import.d.ts.map +1 -0
  213. package/packages/tools/lib/import/source-import.js +305 -0
  214. package/packages/tools/lib/import/source-import.js.map +1 -0
  215. package/packages/tools/lib/importer/cameo-importer.d.ts.map +1 -1
  216. package/packages/tools/lib/importer/cameo-importer.js +4 -1
  217. package/packages/tools/lib/importer/cameo-importer.js.map +1 -1
  218. package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -1
  219. package/packages/tools/lib/importer/ea-importer.js +4 -1
  220. package/packages/tools/lib/importer/ea-importer.js.map +1 -1
  221. package/packages/tools/lib/importer/sysand-importer.d.ts +2 -1
  222. package/packages/tools/lib/importer/sysand-importer.d.ts.map +1 -1
  223. package/packages/tools/lib/importer/sysand-importer.js +27 -10
  224. package/packages/tools/lib/importer/sysand-importer.js.map +1 -1
  225. package/packages/tools/lib/index.d.ts +20 -6
  226. package/packages/tools/lib/index.d.ts.map +1 -1
  227. package/packages/tools/lib/index.js +22 -8
  228. package/packages/tools/lib/index.js.map +1 -1
  229. package/packages/tools/lib/llm/draft-engine.js +1 -1
  230. package/packages/tools/lib/llm/draft-engine.js.map +1 -1
  231. package/packages/tools/lib/llm/model-context.js +1 -1
  232. package/packages/tools/lib/llm/model-context.js.map +1 -1
  233. package/packages/tools/lib/lock.d.ts +37 -2
  234. package/packages/tools/lib/lock.d.ts.map +1 -1
  235. package/packages/tools/lib/lock.js +93 -8
  236. package/packages/tools/lib/lock.js.map +1 -1
  237. package/packages/tools/lib/mcp/index.js +1 -1
  238. package/packages/tools/lib/mcp/index.js.map +1 -1
  239. package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
  240. package/packages/tools/lib/mcp/model-loader.js +6 -18
  241. package/packages/tools/lib/mcp/model-loader.js.map +1 -1
  242. package/packages/tools/lib/mcp/server.js +2 -2
  243. package/packages/tools/lib/mcp/server.js.map +1 -1
  244. package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
  245. package/packages/tools/lib/mcp/tools.js +5 -4
  246. package/packages/tools/lib/mcp/tools.js.map +1 -1
  247. package/packages/tools/lib/methodology/guide-service.d.ts +28 -0
  248. package/packages/tools/lib/methodology/guide-service.d.ts.map +1 -0
  249. package/packages/tools/lib/methodology/guide-service.js +32 -0
  250. package/packages/tools/lib/methodology/guide-service.js.map +1 -0
  251. package/packages/tools/lib/methodology/guide.d.ts +56 -0
  252. package/packages/tools/lib/methodology/guide.d.ts.map +1 -0
  253. package/packages/tools/lib/methodology/guide.js +80 -0
  254. package/packages/tools/lib/methodology/guide.js.map +1 -0
  255. package/packages/tools/lib/model/census-projects.d.ts +26 -0
  256. package/packages/tools/lib/model/census-projects.d.ts.map +1 -0
  257. package/packages/tools/lib/model/census-projects.js +53 -0
  258. package/packages/tools/lib/model/census-projects.js.map +1 -0
  259. package/packages/tools/lib/model/census.d.ts +103 -0
  260. package/packages/tools/lib/model/census.d.ts.map +1 -0
  261. package/packages/tools/lib/model/census.js +229 -0
  262. package/packages/tools/lib/model/census.js.map +1 -0
  263. package/packages/tools/lib/model/complete-model.d.ts +52 -0
  264. package/packages/tools/lib/model/complete-model.d.ts.map +1 -0
  265. package/packages/tools/lib/model/complete-model.js +333 -0
  266. package/packages/tools/lib/model/complete-model.js.map +1 -0
  267. package/packages/tools/lib/model/config-loader.d.ts +8 -3
  268. package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
  269. package/packages/tools/lib/model/config-loader.js +37 -6
  270. package/packages/tools/lib/model/config-loader.js.map +1 -1
  271. package/packages/tools/lib/model/config.d.ts +21 -7
  272. package/packages/tools/lib/model/config.d.ts.map +1 -1
  273. package/packages/tools/lib/model/effective-scope.d.ts +55 -28
  274. package/packages/tools/lib/model/effective-scope.d.ts.map +1 -1
  275. package/packages/tools/lib/model/effective-scope.js +96 -35
  276. package/packages/tools/lib/model/effective-scope.js.map +1 -1
  277. package/packages/tools/lib/model/element-index.d.ts +207 -0
  278. package/packages/tools/lib/model/element-index.d.ts.map +1 -0
  279. package/packages/tools/lib/model/element-index.js +316 -0
  280. package/packages/tools/lib/model/element-index.js.map +1 -0
  281. package/packages/tools/lib/model/id-rebase.d.ts +35 -0
  282. package/packages/tools/lib/model/id-rebase.d.ts.map +1 -0
  283. package/packages/tools/lib/model/id-rebase.js +199 -0
  284. package/packages/tools/lib/model/id-rebase.js.map +1 -0
  285. package/packages/tools/lib/model/identity-registry.d.ts +34 -3
  286. package/packages/tools/lib/model/identity-registry.d.ts.map +1 -1
  287. package/packages/tools/lib/model/identity-registry.js +40 -7
  288. package/packages/tools/lib/model/identity-registry.js.map +1 -1
  289. package/packages/tools/lib/model/impact.d.ts +75 -0
  290. package/packages/tools/lib/model/impact.d.ts.map +1 -0
  291. package/packages/tools/lib/model/impact.js +167 -0
  292. package/packages/tools/lib/model/impact.js.map +1 -0
  293. package/packages/tools/lib/model/ir-identity.d.ts +3 -51
  294. package/packages/tools/lib/model/ir-identity.d.ts.map +1 -1
  295. package/packages/tools/lib/model/ir-identity.js +14 -121
  296. package/packages/tools/lib/model/ir-identity.js.map +1 -1
  297. package/packages/tools/lib/model/kind-registry.d.ts +66 -22
  298. package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
  299. package/packages/tools/lib/model/kind-registry.js +104 -145
  300. package/packages/tools/lib/model/kind-registry.js.map +1 -1
  301. package/packages/tools/lib/model/manifest.d.ts +2 -2
  302. package/packages/tools/lib/model/manifest.d.ts.map +1 -1
  303. package/packages/tools/lib/model/manifest.js +5 -4
  304. package/packages/tools/lib/model/manifest.js.map +1 -1
  305. package/packages/tools/lib/model/methodology-loader.d.ts +11 -2
  306. package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
  307. package/packages/tools/lib/model/methodology-loader.js +24 -130
  308. package/packages/tools/lib/model/methodology-loader.js.map +1 -1
  309. package/packages/tools/lib/model/methodology-resolver.d.ts +71 -6
  310. package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -1
  311. package/packages/tools/lib/model/methodology-resolver.js +210 -24
  312. package/packages/tools/lib/model/methodology-resolver.js.map +1 -1
  313. package/packages/tools/lib/model/model-diff.d.ts +73 -0
  314. package/packages/tools/lib/model/model-diff.d.ts.map +1 -0
  315. package/packages/tools/lib/model/model-diff.js +91 -0
  316. package/packages/tools/lib/model/model-diff.js.map +1 -0
  317. package/packages/tools/lib/model/narrow-model.d.ts +9 -0
  318. package/packages/tools/lib/model/narrow-model.d.ts.map +1 -0
  319. package/packages/tools/lib/model/narrow-model.js +54 -0
  320. package/packages/tools/lib/model/narrow-model.js.map +1 -0
  321. package/packages/tools/lib/model/native-project.d.ts +92 -11
  322. package/packages/tools/lib/model/native-project.d.ts.map +1 -1
  323. package/packages/tools/lib/model/native-project.js +163 -269
  324. package/packages/tools/lib/model/native-project.js.map +1 -1
  325. package/packages/tools/lib/model/ontology-loader.d.ts +10 -61
  326. package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
  327. package/packages/tools/lib/model/ontology-loader.js +11 -512
  328. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  329. package/packages/tools/lib/model/package-manifest.d.ts +8 -2
  330. package/packages/tools/lib/model/package-manifest.d.ts.map +1 -1
  331. package/packages/tools/lib/model/package-manifest.js +14 -2
  332. package/packages/tools/lib/model/package-manifest.js.map +1 -1
  333. package/packages/tools/lib/model/pinned.d.ts +216 -0
  334. package/packages/tools/lib/model/pinned.d.ts.map +1 -0
  335. package/packages/tools/lib/model/pinned.js +481 -0
  336. package/packages/tools/lib/model/pinned.js.map +1 -0
  337. package/packages/tools/lib/model/project-conversion.d.ts +3 -2
  338. package/packages/tools/lib/model/project-conversion.d.ts.map +1 -1
  339. package/packages/tools/lib/model/project-conversion.js +55 -10
  340. package/packages/tools/lib/model/project-conversion.js.map +1 -1
  341. package/packages/tools/lib/model/project-settings.d.ts +10 -0
  342. package/packages/tools/lib/model/project-settings.d.ts.map +1 -0
  343. package/packages/tools/lib/model/project-settings.js +48 -0
  344. package/packages/tools/lib/model/project-settings.js.map +1 -0
  345. package/packages/tools/lib/model/relation-selection.d.ts +25 -0
  346. package/packages/tools/lib/model/relation-selection.d.ts.map +1 -0
  347. package/packages/tools/lib/model/relation-selection.js +65 -0
  348. package/packages/tools/lib/model/relation-selection.js.map +1 -0
  349. package/packages/tools/lib/model/relationship-legality.d.ts +6 -0
  350. package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
  351. package/packages/tools/lib/model/relationship-legality.js.map +1 -1
  352. package/packages/tools/lib/model/relationship-registry.d.ts +21 -8
  353. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
  354. package/packages/tools/lib/model/relationship-registry.js +77 -129
  355. package/packages/tools/lib/model/relationship-registry.js.map +1 -1
  356. package/packages/tools/lib/model/relationship-subjects.d.ts +28 -0
  357. package/packages/tools/lib/model/relationship-subjects.d.ts.map +1 -0
  358. package/packages/tools/lib/model/relationship-subjects.js +126 -0
  359. package/packages/tools/lib/model/relationship-subjects.js.map +1 -0
  360. package/packages/tools/lib/model/release-target.d.ts +12 -0
  361. package/packages/tools/lib/model/release-target.d.ts.map +1 -0
  362. package/packages/tools/lib/model/release-target.js +35 -0
  363. package/packages/tools/lib/model/release-target.js.map +1 -0
  364. package/packages/tools/lib/model/selector-vocabulary.d.ts +47 -0
  365. package/packages/tools/lib/model/selector-vocabulary.d.ts.map +1 -0
  366. package/packages/tools/lib/model/selector-vocabulary.js +181 -0
  367. package/packages/tools/lib/model/selector-vocabulary.js.map +1 -0
  368. package/packages/tools/lib/model/semantic.d.ts +99 -7
  369. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  370. package/packages/tools/lib/model/semantic.js +13 -1
  371. package/packages/tools/lib/model/semantic.js.map +1 -1
  372. package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -1
  373. package/packages/tools/lib/model/settings-boundary.js +9 -8
  374. package/packages/tools/lib/model/settings-boundary.js.map +1 -1
  375. package/packages/tools/lib/model/short-id.d.ts +2 -0
  376. package/packages/tools/lib/model/short-id.d.ts.map +1 -1
  377. package/packages/tools/lib/model/short-id.js +9 -0
  378. package/packages/tools/lib/model/short-id.js.map +1 -1
  379. package/packages/tools/lib/model/source-graph.d.ts +9 -7
  380. package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
  381. package/packages/tools/lib/model/source-graph.js +19 -24
  382. package/packages/tools/lib/model/source-graph.js.map +1 -1
  383. package/packages/tools/lib/model/source-provenance.d.ts +5 -1
  384. package/packages/tools/lib/model/source-provenance.d.ts.map +1 -1
  385. package/packages/tools/lib/model/source-provenance.js.map +1 -1
  386. package/packages/tools/lib/model/sysml-files.js +1 -1
  387. package/packages/tools/lib/model/sysml-ir.d.ts +2 -5
  388. package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -1
  389. package/packages/tools/lib/model/sysml-ir.js +1 -100
  390. package/packages/tools/lib/model/sysml-ir.js.map +1 -1
  391. package/packages/tools/lib/model/toolchain-merge.d.ts +4 -0
  392. package/packages/tools/lib/model/toolchain-merge.d.ts.map +1 -0
  393. package/packages/tools/lib/model/toolchain-merge.js +34 -0
  394. package/packages/tools/lib/model/toolchain-merge.js.map +1 -0
  395. package/packages/tools/lib/model/user-settings.d.ts +13 -0
  396. package/packages/tools/lib/model/user-settings.d.ts.map +1 -0
  397. package/packages/tools/lib/model/user-settings.js +83 -0
  398. package/packages/tools/lib/model/user-settings.js.map +1 -0
  399. package/packages/tools/lib/model/variability.d.ts +56 -0
  400. package/packages/tools/lib/model/variability.d.ts.map +1 -0
  401. package/packages/tools/lib/model/variability.js +116 -0
  402. package/packages/tools/lib/model/variability.js.map +1 -0
  403. package/packages/tools/lib/model/version-range.d.ts +2 -0
  404. package/packages/tools/lib/model/version-range.d.ts.map +1 -0
  405. package/packages/tools/lib/model/version-range.js +37 -0
  406. package/packages/tools/lib/model/version-range.js.map +1 -0
  407. package/packages/tools/lib/model/view-deriver.d.ts +16 -0
  408. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  409. package/packages/tools/lib/model/view-deriver.js +100 -26
  410. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  411. package/packages/tools/lib/model/view-layout-block.d.ts +81 -0
  412. package/packages/tools/lib/model/view-layout-block.d.ts.map +1 -0
  413. package/packages/tools/lib/model/view-layout-block.js +525 -0
  414. package/packages/tools/lib/model/view-layout-block.js.map +1 -0
  415. package/packages/tools/lib/model/view-layout-migration.d.ts +54 -0
  416. package/packages/tools/lib/model/view-layout-migration.d.ts.map +1 -0
  417. package/packages/tools/lib/model/view-layout-migration.js +156 -0
  418. package/packages/tools/lib/model/view-layout-migration.js.map +1 -0
  419. package/packages/tools/lib/model/workspace-membership.d.ts +99 -0
  420. package/packages/tools/lib/model/workspace-membership.d.ts.map +1 -0
  421. package/packages/tools/lib/model/workspace-membership.js +281 -0
  422. package/packages/tools/lib/model/workspace-membership.js.map +1 -0
  423. package/packages/tools/lib/ontology/owl-exporter.d.ts +1 -1
  424. package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
  425. package/packages/tools/lib/ontology/owl-exporter.js +1 -1
  426. package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
  427. package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -1
  428. package/packages/tools/lib/operations/ai-authoring.js +7 -5
  429. package/packages/tools/lib/operations/ai-authoring.js.map +1 -1
  430. package/packages/tools/lib/operations/authoring.d.ts +10 -4
  431. package/packages/tools/lib/operations/authoring.d.ts.map +1 -1
  432. package/packages/tools/lib/operations/authoring.js +27 -11
  433. package/packages/tools/lib/operations/authoring.js.map +1 -1
  434. package/packages/tools/lib/operations/index.d.ts +2 -0
  435. package/packages/tools/lib/operations/index.d.ts.map +1 -1
  436. package/packages/tools/lib/operations/index.js +1 -0
  437. package/packages/tools/lib/operations/index.js.map +1 -1
  438. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  439. package/packages/tools/lib/operations/project-snapshot.js +7 -13
  440. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  441. package/packages/tools/lib/plugin/plugin-scaffold.js +2 -2
  442. package/packages/tools/lib/plugin/plugin-scaffold.js.map +1 -1
  443. package/packages/tools/lib/protocol/messages.d.ts +375 -7
  444. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  445. package/packages/tools/lib/serializer/csv-io.d.ts +37 -29
  446. package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
  447. package/packages/tools/lib/serializer/csv-io.js +64 -31
  448. package/packages/tools/lib/serializer/csv-io.js.map +1 -1
  449. package/packages/tools/lib/serializer/sysml-generator.d.ts +15 -2
  450. package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
  451. package/packages/tools/lib/serializer/sysml-generator.js +45 -17
  452. package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
  453. package/packages/tools/lib/server/conflict-policy.js +1 -1
  454. package/packages/tools/lib/server/conflict-policy.js.map +1 -1
  455. package/packages/tools/lib/server/dashboard-store.d.ts +1 -7
  456. package/packages/tools/lib/server/dashboard-store.d.ts.map +1 -1
  457. package/packages/tools/lib/server/dashboard-store.js +3 -14
  458. package/packages/tools/lib/server/dashboard-store.js.map +1 -1
  459. package/packages/tools/lib/server/dev-server.d.ts +48 -1
  460. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  461. package/packages/tools/lib/server/dev-server.js +529 -80
  462. package/packages/tools/lib/server/dev-server.js.map +1 -1
  463. package/packages/tools/lib/server/dev-validate.d.ts +30 -0
  464. package/packages/tools/lib/server/dev-validate.d.ts.map +1 -0
  465. package/packages/tools/lib/server/dev-validate.js +82 -0
  466. package/packages/tools/lib/server/dev-validate.js.map +1 -0
  467. package/packages/tools/lib/server/element-writer.d.ts +4 -1
  468. package/packages/tools/lib/server/element-writer.d.ts.map +1 -1
  469. package/packages/tools/lib/server/element-writer.js +56 -35
  470. package/packages/tools/lib/server/element-writer.js.map +1 -1
  471. package/packages/tools/lib/server/mutation-domain.d.ts +10 -0
  472. package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -1
  473. package/packages/tools/lib/server/mutation-domain.js +45 -8
  474. package/packages/tools/lib/server/mutation-domain.js.map +1 -1
  475. package/packages/tools/lib/server/package-source.d.ts +13 -3
  476. package/packages/tools/lib/server/package-source.d.ts.map +1 -1
  477. package/packages/tools/lib/server/package-source.js +31 -39
  478. package/packages/tools/lib/server/package-source.js.map +1 -1
  479. package/packages/tools/lib/server/package-writer.d.ts +19 -6
  480. package/packages/tools/lib/server/package-writer.d.ts.map +1 -1
  481. package/packages/tools/lib/server/package-writer.js +90 -39
  482. package/packages/tools/lib/server/package-writer.js.map +1 -1
  483. package/packages/tools/lib/server/persistor.d.ts +33 -7
  484. package/packages/tools/lib/server/persistor.d.ts.map +1 -1
  485. package/packages/tools/lib/server/persistor.js +63 -48
  486. package/packages/tools/lib/server/persistor.js.map +1 -1
  487. package/packages/tools/lib/server/project-gitignore.d.ts +9 -0
  488. package/packages/tools/lib/server/project-gitignore.d.ts.map +1 -0
  489. package/packages/tools/lib/server/project-gitignore.js +27 -0
  490. package/packages/tools/lib/server/project-gitignore.js.map +1 -0
  491. package/packages/tools/lib/server/relationship-writer.d.ts +31 -2
  492. package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
  493. package/packages/tools/lib/server/relationship-writer.js +255 -95
  494. package/packages/tools/lib/server/relationship-writer.js.map +1 -1
  495. package/packages/tools/lib/server/release-writer.d.ts +46 -0
  496. package/packages/tools/lib/server/release-writer.d.ts.map +1 -0
  497. package/packages/tools/lib/server/release-writer.js +133 -0
  498. package/packages/tools/lib/server/release-writer.js.map +1 -0
  499. package/packages/tools/lib/server/rule-policy-writer.d.ts +17 -4
  500. package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -1
  501. package/packages/tools/lib/server/rule-policy-writer.js +92 -7
  502. package/packages/tools/lib/server/rule-policy-writer.js.map +1 -1
  503. package/packages/tools/lib/server/rule-service.d.ts +50 -0
  504. package/packages/tools/lib/server/rule-service.d.ts.map +1 -0
  505. package/packages/tools/lib/server/rule-service.js +89 -0
  506. package/packages/tools/lib/server/rule-service.js.map +1 -0
  507. package/packages/tools/lib/server/rule-writer.d.ts +87 -0
  508. package/packages/tools/lib/server/rule-writer.d.ts.map +1 -0
  509. package/packages/tools/lib/server/rule-writer.js +165 -0
  510. package/packages/tools/lib/server/rule-writer.js.map +1 -0
  511. package/packages/tools/lib/server/suspect-review.d.ts +11 -0
  512. package/packages/tools/lib/server/suspect-review.d.ts.map +1 -0
  513. package/packages/tools/lib/server/suspect-review.js +28 -0
  514. package/packages/tools/lib/server/suspect-review.js.map +1 -0
  515. package/packages/tools/lib/server/sysml-notation.d.ts +1 -1
  516. package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -1
  517. package/packages/tools/lib/server/sysml-notation.js +5 -0
  518. package/packages/tools/lib/server/sysml-notation.js.map +1 -1
  519. package/packages/tools/lib/server/user-preferences.d.ts +8 -0
  520. package/packages/tools/lib/server/user-preferences.d.ts.map +1 -0
  521. package/packages/tools/lib/server/user-preferences.js +47 -0
  522. package/packages/tools/lib/server/user-preferences.js.map +1 -0
  523. package/packages/tools/lib/server/version-servers.d.ts +60 -0
  524. package/packages/tools/lib/server/version-servers.d.ts.map +1 -0
  525. package/packages/tools/lib/server/version-servers.js +106 -0
  526. package/packages/tools/lib/server/version-servers.js.map +1 -0
  527. package/packages/tools/lib/server/view-layout-store.d.ts +28 -13
  528. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
  529. package/packages/tools/lib/server/view-layout-store.js +106 -106
  530. package/packages/tools/lib/server/view-layout-store.js.map +1 -1
  531. package/packages/tools/lib/server/view-writer.d.ts +22 -2
  532. package/packages/tools/lib/server/view-writer.d.ts.map +1 -1
  533. package/packages/tools/lib/server/view-writer.js +99 -44
  534. package/packages/tools/lib/server/view-writer.js.map +1 -1
  535. package/packages/tools/lib/server/write-guard.d.ts +7 -0
  536. package/packages/tools/lib/server/write-guard.d.ts.map +1 -0
  537. package/packages/tools/lib/server/write-guard.js +77 -0
  538. package/packages/tools/lib/server/write-guard.js.map +1 -0
  539. package/packages/tools/lib/stage2/api-model.d.ts +160 -0
  540. package/packages/tools/lib/stage2/api-model.d.ts.map +1 -0
  541. package/packages/tools/lib/stage2/api-model.js +341 -0
  542. package/packages/tools/lib/stage2/api-model.js.map +1 -0
  543. package/packages/tools/lib/stage2/build-from-api.d.ts +47 -0
  544. package/packages/tools/lib/stage2/build-from-api.d.ts.map +1 -0
  545. package/packages/tools/lib/stage2/build-from-api.js +1462 -0
  546. package/packages/tools/lib/stage2/build-from-api.js.map +1 -0
  547. package/packages/tools/lib/stage2/guide-from-api.d.ts +38 -0
  548. package/packages/tools/lib/stage2/guide-from-api.d.ts.map +1 -0
  549. package/packages/tools/lib/stage2/guide-from-api.js +97 -0
  550. package/packages/tools/lib/stage2/guide-from-api.js.map +1 -0
  551. package/packages/tools/lib/stage2/handoff-files.d.ts +13 -0
  552. package/packages/tools/lib/stage2/handoff-files.d.ts.map +1 -0
  553. package/packages/tools/lib/stage2/handoff-files.js +32 -0
  554. package/packages/tools/lib/stage2/handoff-files.js.map +1 -0
  555. package/packages/tools/lib/stage2/methodology-from-api.d.ts +10 -0
  556. package/packages/tools/lib/stage2/methodology-from-api.d.ts.map +1 -0
  557. package/packages/tools/lib/stage2/methodology-from-api.js +109 -0
  558. package/packages/tools/lib/stage2/methodology-from-api.js.map +1 -0
  559. package/packages/tools/lib/stage2/package-metadata-from-api.d.ts +15 -0
  560. package/packages/tools/lib/stage2/package-metadata-from-api.d.ts.map +1 -0
  561. package/packages/tools/lib/stage2/package-metadata-from-api.js +238 -0
  562. package/packages/tools/lib/stage2/package-metadata-from-api.js.map +1 -0
  563. package/packages/tools/lib/stage2/project-from-api.d.ts +60 -0
  564. package/packages/tools/lib/stage2/project-from-api.d.ts.map +1 -0
  565. package/packages/tools/lib/stage2/project-from-api.js +328 -0
  566. package/packages/tools/lib/stage2/project-from-api.js.map +1 -0
  567. package/packages/tools/lib/stage2/registries-from-api.d.ts +68 -0
  568. package/packages/tools/lib/stage2/registries-from-api.d.ts.map +1 -0
  569. package/packages/tools/lib/stage2/registries-from-api.js +313 -0
  570. package/packages/tools/lib/stage2/registries-from-api.js.map +1 -0
  571. package/packages/tools/lib/stage2/stage2-from-handoff.d.ts +26 -0
  572. package/packages/tools/lib/stage2/stage2-from-handoff.d.ts.map +1 -0
  573. package/packages/tools/lib/stage2/stage2-from-handoff.js +34 -0
  574. package/packages/tools/lib/stage2/stage2-from-handoff.js.map +1 -0
  575. package/packages/tools/lib/stage2/sysml-names.d.ts +9 -0
  576. package/packages/tools/lib/stage2/sysml-names.d.ts.map +1 -0
  577. package/packages/tools/lib/stage2/sysml-names.js +39 -0
  578. package/packages/tools/lib/stage2/sysml-names.js.map +1 -0
  579. package/packages/tools/lib/toolchain/default-registry.d.ts +2 -2
  580. package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -1
  581. package/packages/tools/lib/toolchain/default-registry.js +9 -5
  582. package/packages/tools/lib/toolchain/default-registry.js.map +1 -1
  583. package/packages/tools/lib/toolchain/diagnostic.d.ts +2 -2
  584. package/packages/tools/lib/toolchain/diagnostic.js +1 -1
  585. package/packages/tools/lib/toolchain/diagnostic.js.map +1 -1
  586. package/packages/tools/lib/toolchain/effective.d.ts +25 -17
  587. package/packages/tools/lib/toolchain/effective.d.ts.map +1 -1
  588. package/packages/tools/lib/toolchain/effective.js +45 -40
  589. package/packages/tools/lib/toolchain/effective.js.map +1 -1
  590. package/packages/tools/lib/toolchain/exceptions.d.ts +27 -0
  591. package/packages/tools/lib/toolchain/exceptions.d.ts.map +1 -0
  592. package/packages/tools/lib/toolchain/exceptions.js +77 -0
  593. package/packages/tools/lib/toolchain/exceptions.js.map +1 -0
  594. package/packages/tools/lib/toolchain/index.d.ts +2 -2
  595. package/packages/tools/lib/toolchain/index.d.ts.map +1 -1
  596. package/packages/tools/lib/toolchain/index.js +2 -2
  597. package/packages/tools/lib/toolchain/index.js.map +1 -1
  598. package/packages/tools/lib/toolchain/operations.d.ts +45 -10
  599. package/packages/tools/lib/toolchain/operations.d.ts.map +1 -1
  600. package/packages/tools/lib/toolchain/operations.js +107 -8
  601. package/packages/tools/lib/toolchain/operations.js.map +1 -1
  602. package/packages/tools/lib/toolchain/ownership.d.ts +13 -0
  603. package/packages/tools/lib/toolchain/ownership.d.ts.map +1 -0
  604. package/packages/tools/lib/toolchain/ownership.js +57 -0
  605. package/packages/tools/lib/toolchain/ownership.js.map +1 -0
  606. package/packages/tools/lib/toolchain/process.d.ts +2 -2
  607. package/packages/tools/lib/toolchain/process.js +2 -2
  608. package/packages/tools/lib/toolchain/project-config.d.ts +4 -0
  609. package/packages/tools/lib/toolchain/project-config.d.ts.map +1 -0
  610. package/packages/tools/lib/toolchain/project-config.js +13 -0
  611. package/packages/tools/lib/toolchain/project-config.js.map +1 -0
  612. package/packages/tools/lib/toolchain/project-model.d.ts +75 -0
  613. package/packages/tools/lib/toolchain/project-model.d.ts.map +1 -0
  614. package/packages/tools/lib/toolchain/project-model.js +92 -0
  615. package/packages/tools/lib/toolchain/project-model.js.map +1 -0
  616. package/packages/tools/lib/toolchain/providers/internal-package.d.ts +6 -0
  617. package/packages/tools/lib/toolchain/providers/internal-package.d.ts.map +1 -0
  618. package/packages/tools/lib/toolchain/providers/internal-package.js +47 -0
  619. package/packages/tools/lib/toolchain/providers/internal-package.js.map +1 -0
  620. package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts +20 -0
  621. package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts.map +1 -0
  622. package/packages/tools/lib/toolchain/providers/opensysml-check.js +95 -0
  623. package/packages/tools/lib/toolchain/providers/opensysml-check.js.map +1 -0
  624. package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts +17 -0
  625. package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts.map +1 -0
  626. package/packages/tools/lib/toolchain/providers/opensysml-compact.js +69 -0
  627. package/packages/tools/lib/toolchain/providers/opensysml-compact.js.map +1 -0
  628. package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts +50 -0
  629. package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts.map +1 -0
  630. package/packages/tools/lib/toolchain/providers/opensysml-lowering.js +646 -0
  631. package/packages/tools/lib/toolchain/providers/opensysml-lowering.js.map +1 -0
  632. package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts +16 -0
  633. package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts.map +1 -0
  634. package/packages/tools/lib/toolchain/providers/opensysml-names.js +37 -0
  635. package/packages/tools/lib/toolchain/providers/opensysml-names.js.map +1 -0
  636. package/packages/tools/lib/toolchain/providers/opensysml.d.ts +88 -0
  637. package/packages/tools/lib/toolchain/providers/opensysml.d.ts.map +1 -0
  638. package/packages/tools/lib/toolchain/providers/opensysml.js +178 -0
  639. package/packages/tools/lib/toolchain/providers/opensysml.js.map +1 -0
  640. package/packages/tools/lib/toolchain/providers/recommended.d.ts +2 -0
  641. package/packages/tools/lib/toolchain/providers/recommended.d.ts.map +1 -0
  642. package/packages/tools/lib/toolchain/providers/recommended.js +13 -0
  643. package/packages/tools/lib/toolchain/providers/recommended.js.map +1 -0
  644. package/packages/tools/lib/toolchain/providers/sysand-project.d.ts +60 -0
  645. package/packages/tools/lib/toolchain/providers/sysand-project.d.ts.map +1 -0
  646. package/packages/tools/lib/toolchain/providers/sysand-project.js +160 -0
  647. package/packages/tools/lib/toolchain/providers/sysand-project.js.map +1 -0
  648. package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -1
  649. package/packages/tools/lib/toolchain/providers/sysand.js +26 -2
  650. package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -1
  651. package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts +29 -0
  652. package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts.map +1 -0
  653. package/packages/tools/lib/toolchain/providers/syside-lowering.js +497 -0
  654. package/packages/tools/lib/toolchain/providers/syside-lowering.js.map +1 -0
  655. package/packages/tools/lib/toolchain/providers/syside-python.d.ts +9 -0
  656. package/packages/tools/lib/toolchain/providers/syside-python.d.ts.map +1 -0
  657. package/packages/tools/lib/toolchain/providers/syside-python.js +69 -0
  658. package/packages/tools/lib/toolchain/providers/syside-python.js.map +1 -0
  659. package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -1
  660. package/packages/tools/lib/toolchain/providers/syside.js +2 -0
  661. package/packages/tools/lib/toolchain/providers/syside.js.map +1 -1
  662. package/packages/tools/lib/toolchain/registry.d.ts +118 -21
  663. package/packages/tools/lib/toolchain/registry.d.ts.map +1 -1
  664. package/packages/tools/lib/toolchain/registry.js +18 -24
  665. package/packages/tools/lib/toolchain/registry.js.map +1 -1
  666. package/packages/tools/lib/toolchain/schema.d.ts +6 -5
  667. package/packages/tools/lib/toolchain/schema.d.ts.map +1 -1
  668. package/packages/tools/lib/toolchain/schema.js +8 -13
  669. package/packages/tools/lib/toolchain/schema.js.map +1 -1
  670. package/packages/tools/lib/toolchain/shipped-library.d.ts +28 -0
  671. package/packages/tools/lib/toolchain/shipped-library.d.ts.map +1 -0
  672. package/packages/tools/lib/toolchain/shipped-library.js +120 -0
  673. package/packages/tools/lib/toolchain/shipped-library.js.map +1 -0
  674. package/packages/tools/lib/toolchain/source-fingerprint.d.ts +2 -0
  675. package/packages/tools/lib/toolchain/source-fingerprint.d.ts.map +1 -0
  676. package/packages/tools/lib/toolchain/source-fingerprint.js +30 -0
  677. package/packages/tools/lib/toolchain/source-fingerprint.js.map +1 -0
  678. package/packages/tools/lib/toolchain/user-settings-status.d.ts +51 -0
  679. package/packages/tools/lib/toolchain/user-settings-status.d.ts.map +1 -0
  680. package/packages/tools/lib/toolchain/user-settings-status.js +104 -0
  681. package/packages/tools/lib/toolchain/user-settings-status.js.map +1 -0
  682. package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -1
  683. package/packages/tools/lib/validator/architecture-validator.js +2 -1
  684. package/packages/tools/lib/validator/architecture-validator.js.map +1 -1
  685. package/packages/tools/lib/validator/behavior-validator.js +1 -1
  686. package/packages/tools/lib/validator/behavior-validator.js.map +1 -1
  687. package/packages/tools/lib/validator/builtin-rules.js +1 -1
  688. package/packages/tools/lib/validator/builtin-rules.js.map +1 -1
  689. package/packages/tools/lib/validator/constraint-eval.d.ts +30 -4
  690. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  691. package/packages/tools/lib/validator/constraint-eval.js +101 -59
  692. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  693. package/packages/tools/lib/validator/constraint-loader-api.d.ts +22 -0
  694. package/packages/tools/lib/validator/constraint-loader-api.d.ts.map +1 -0
  695. package/packages/tools/lib/validator/constraint-loader-api.js +160 -0
  696. package/packages/tools/lib/validator/constraint-loader-api.js.map +1 -0
  697. package/packages/tools/lib/validator/constraint-loader.d.ts +22 -18
  698. package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
  699. package/packages/tools/lib/validator/constraint-loader.js +33 -141
  700. package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
  701. package/packages/tools/lib/validator/rule-clauses.d.ts +51 -0
  702. package/packages/tools/lib/validator/rule-clauses.d.ts.map +1 -0
  703. package/packages/tools/lib/validator/rule-clauses.js +87 -0
  704. package/packages/tools/lib/validator/rule-clauses.js.map +1 -0
  705. package/packages/tools/lib/validator/rule-engine.d.ts +9 -1
  706. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  707. package/packages/tools/lib/validator/rule-engine.js +50 -6
  708. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  709. package/packages/tools/lib/validator/rule-registry.d.ts +4 -8
  710. package/packages/tools/lib/validator/rule-registry.d.ts.map +1 -1
  711. package/packages/tools/lib/validator/rule-registry.js +42 -79
  712. package/packages/tools/lib/validator/rule-registry.js.map +1 -1
  713. package/packages/tools/lib/validator/rule-tailoring.d.ts +62 -0
  714. package/packages/tools/lib/validator/rule-tailoring.d.ts.map +1 -0
  715. package/packages/tools/lib/validator/rule-tailoring.js +85 -0
  716. package/packages/tools/lib/validator/rule-tailoring.js.map +1 -0
  717. package/packages/tools/lib/validator/types.d.ts +12 -1
  718. package/packages/tools/lib/validator/types.d.ts.map +1 -1
  719. package/packages/tools/lib/validator/workspace-boundary-validator.d.ts +9 -0
  720. package/packages/tools/lib/validator/workspace-boundary-validator.d.ts.map +1 -0
  721. package/packages/tools/lib/validator/workspace-boundary-validator.js +28 -0
  722. package/packages/tools/lib/validator/workspace-boundary-validator.js.map +1 -0
  723. package/packages/tools/python/memo_model.py +243 -0
  724. package/packages/tools/python/memo_stage1_syside.py +389 -0
  725. package/packages/tools/lib/commands/check.d.ts +0 -6
  726. package/packages/tools/lib/commands/check.d.ts.map +0 -1
  727. package/packages/tools/lib/commands/check.js +0 -191
  728. package/packages/tools/lib/commands/check.js.map +0 -1
  729. package/packages/tools/lib/commands/conformance.d.ts +0 -36
  730. package/packages/tools/lib/commands/conformance.d.ts.map +0 -1
  731. package/packages/tools/lib/commands/conformance.js +0 -212
  732. package/packages/tools/lib/commands/conformance.js.map +0 -1
  733. package/packages/tools/lib/commands/roundtrip.d.ts +0 -6
  734. package/packages/tools/lib/commands/roundtrip.d.ts.map +0 -1
  735. package/packages/tools/lib/commands/roundtrip.js +0 -145
  736. package/packages/tools/lib/commands/roundtrip.js.map +0 -1
  737. package/packages/tools/lib/conformance/baseline.d.ts +0 -26
  738. package/packages/tools/lib/conformance/baseline.d.ts.map +0 -1
  739. package/packages/tools/lib/conformance/baseline.js +0 -170
  740. package/packages/tools/lib/conformance/baseline.js.map +0 -1
  741. package/packages/tools/lib/conformance/bnf.d.ts +0 -84
  742. package/packages/tools/lib/conformance/bnf.d.ts.map +0 -1
  743. package/packages/tools/lib/conformance/bnf.js +0 -166
  744. package/packages/tools/lib/conformance/bnf.js.map +0 -1
  745. package/packages/tools/lib/conformance/corpus.d.ts +0 -125
  746. package/packages/tools/lib/conformance/corpus.d.ts.map +0 -1
  747. package/packages/tools/lib/conformance/corpus.js +0 -190
  748. package/packages/tools/lib/conformance/corpus.js.map +0 -1
  749. package/packages/tools/lib/conformance/diff-xmi.d.ts +0 -118
  750. package/packages/tools/lib/conformance/diff-xmi.d.ts.map +0 -1
  751. package/packages/tools/lib/conformance/diff-xmi.js +0 -276
  752. package/packages/tools/lib/conformance/diff-xmi.js.map +0 -1
  753. package/packages/tools/lib/conformance/generated/syside-rules.d.ts +0 -10
  754. package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +0 -1
  755. package/packages/tools/lib/conformance/generated/syside-rules.js +0 -1142
  756. package/packages/tools/lib/conformance/generated/syside-rules.js.map +0 -1
  757. package/packages/tools/lib/conformance/index.d.ts +0 -7
  758. package/packages/tools/lib/conformance/index.d.ts.map +0 -1
  759. package/packages/tools/lib/conformance/index.js +0 -19
  760. package/packages/tools/lib/conformance/index.js.map +0 -1
  761. package/packages/tools/lib/conformance/run.d.ts +0 -117
  762. package/packages/tools/lib/conformance/run.d.ts.map +0 -1
  763. package/packages/tools/lib/conformance/run.js +0 -0
  764. package/packages/tools/lib/conformance/run.js.map +0 -1
  765. package/packages/tools/lib/conformance/xmi.d.ts +0 -45
  766. package/packages/tools/lib/conformance/xmi.d.ts.map +0 -1
  767. package/packages/tools/lib/conformance/xmi.js +0 -148
  768. package/packages/tools/lib/conformance/xmi.js.map +0 -1
  769. package/packages/tools/lib/language/generated/ast.d.ts +0 -3571
  770. package/packages/tools/lib/language/generated/ast.d.ts.map +0 -1
  771. package/packages/tools/lib/language/generated/ast.js +0 -2980
  772. package/packages/tools/lib/language/generated/ast.js.map +0 -1
  773. package/packages/tools/lib/language/generated/grammar.d.ts +0 -7
  774. package/packages/tools/lib/language/generated/grammar.d.ts.map +0 -1
  775. package/packages/tools/lib/language/generated/grammar.js +0 -10687
  776. package/packages/tools/lib/language/generated/grammar.js.map +0 -1
  777. package/packages/tools/lib/language/generated/module.d.ts +0 -14
  778. package/packages/tools/lib/language/generated/module.d.ts.map +0 -1
  779. package/packages/tools/lib/language/generated/module.js +0 -21
  780. package/packages/tools/lib/language/generated/module.js.map +0 -1
  781. package/packages/tools/lib/language/memo-sysml-module.d.ts +0 -24
  782. package/packages/tools/lib/language/memo-sysml-module.d.ts.map +0 -1
  783. package/packages/tools/lib/language/memo-sysml-module.js +0 -20
  784. package/packages/tools/lib/language/memo-sysml-module.js.map +0 -1
  785. package/packages/tools/lib/model/builder.d.ts +0 -27
  786. package/packages/tools/lib/model/builder.d.ts.map +0 -1
  787. package/packages/tools/lib/model/builder.js +0 -2112
  788. package/packages/tools/lib/model/builder.js.map +0 -1
  789. package/packages/tools/lib/model/package-registry.d.ts +0 -64
  790. package/packages/tools/lib/model/package-registry.d.ts.map +0 -1
  791. package/packages/tools/lib/model/package-registry.js +0 -184
  792. package/packages/tools/lib/model/package-registry.js.map +0 -1
  793. package/packages/tools/lib/model/parser-utils.d.ts +0 -65
  794. package/packages/tools/lib/model/parser-utils.d.ts.map +0 -1
  795. package/packages/tools/lib/model/parser-utils.js +0 -201
  796. package/packages/tools/lib/model/parser-utils.js.map +0 -1
  797. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +0 -3
  798. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +0 -1
  799. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +0 -97
  800. package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +0 -1
  801. package/packages/tools/lib/sysmlc/index.d.ts +0 -2
  802. package/packages/tools/lib/sysmlc/index.d.ts.map +0 -1
  803. package/packages/tools/lib/sysmlc/index.js +0 -7
  804. package/packages/tools/lib/sysmlc/index.js.map +0 -1
  805. package/packages/tools/lib/sysmlc/server.d.ts +0 -29
  806. package/packages/tools/lib/sysmlc/server.d.ts.map +0 -1
  807. package/packages/tools/lib/sysmlc/server.js +0 -168
  808. package/packages/tools/lib/sysmlc/server.js.map +0 -1
  809. package/packages/tools/lib/toolchain/lowering.d.ts +0 -63
  810. package/packages/tools/lib/toolchain/lowering.d.ts.map +0 -1
  811. package/packages/tools/lib/toolchain/lowering.js +0 -100
  812. package/packages/tools/lib/toolchain/lowering.js.map +0 -1
  813. package/packages/tools/lib/toolchain/providers/internal.d.ts +0 -33
  814. package/packages/tools/lib/toolchain/providers/internal.d.ts.map +0 -1
  815. package/packages/tools/lib/toolchain/providers/internal.js +0 -286
  816. package/packages/tools/lib/toolchain/providers/internal.js.map +0 -1
  817. package/packages/tools/lib/toolchain/sysmlc-client.d.ts +0 -77
  818. package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +0 -1
  819. package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
  820. package/packages/tools/lib/toolchain/sysmlc-client.js.map +0 -1
  821. package/packages/tools/lib/validator/sysml-constraints.d.ts +0 -64
  822. package/packages/tools/lib/validator/sysml-constraints.d.ts.map +0 -1
  823. package/packages/tools/lib/validator/sysml-constraints.js +0 -251
  824. package/packages/tools/lib/validator/sysml-constraints.js.map +0 -1
  825. package/packages/tools/src/grammar/memo-sysml.langium +0 -1064
@@ -1,5 +1,4 @@
1
- import type { ParsedDocument } from '../model/parser-utils.js';
2
- import type { CompiledConstraint } from './constraint-eval.js';
1
+ import type { CompiledConstraint, ConstraintNode, RuleDomain, RuleObligation } from './constraint-eval.js';
3
2
  /** A rule that could not be loaded, or that conflicts with another rule. */
4
3
  export interface ConstraintDiagnostic {
5
4
  kind: 'compile-failed' | 'duplicate-id';
@@ -7,22 +6,27 @@ export interface ConstraintDiagnostic {
7
6
  file: string;
8
7
  message: string;
9
8
  }
9
+ /** The rule's domain, or undefined when it states none (an enumeration literal as `Kind::member` or the bare member). */
10
+ export declare function mapDomain(raw?: string): RuleDomain | undefined;
11
+ /** The rule's obligation, or undefined when it states none (`Kind::member` or the bare member). */
12
+ export declare function mapObligation(raw?: string): RuleObligation | undefined;
10
13
  /**
11
- * Walk all parsed documents and compile every native constraint def found.
12
- *
13
- * De-duplication by rule id is legitimate for the SAME rule seen twice: the
14
- * same ontology file appears in both the ontology load and the project parse.
15
- * Two DIFFERENT rules sharing an id is a defect, and is reported rather than
16
- * silently resolved by document order.
17
- *
18
- * A rule whose predicate fails to compile is skipped and reported. It used to
19
- * throw, which took down the entire command: one malformed
20
- * `predicateExpression` anywhere in a resolved dependency meant `memo validate`
21
- * exited with a stack trace and validated nothing. A broken rule must be loud,
22
- * but it must not be fatal — the other rules still have work to do.
23
- *
24
- * Callers are expected to surface `diagnostics`; a skipped rule that nobody
25
- * reports is a silently disabled check, which is worse than a crash.
14
+ * What a rule definition states, however it was read: from MEMO's parse
15
+ * (`collectNativeConstraints`) or from stage 1's API JSON
16
+ * (`collectApiConstraints`). Both compile through `compileRuleDefinition`, so
17
+ * the two paths cannot drift apart.
26
18
  */
27
- export declare function collectNativeConstraints(docs: ParsedDocument[], diagnostics?: ConstraintDiagnostic[]): CompiledConstraint[];
19
+ export interface RuleDefinitionParts {
20
+ typeName: string;
21
+ /** Attribute values, an enumeration literal as its bare member name (`error`). */
22
+ attrs: Record<string, string>;
23
+ doc?: string;
24
+ file?: string;
25
+ /** The boolean body, in evaluator form; absent when the definition states none. */
26
+ body?: ConstraintNode;
27
+ /** Qualified names of the clauses the rule enforces, when the reader found them. */
28
+ enforces?: string[];
29
+ }
30
+ /** Compile one rule definition, or undefined when it is no rule (no id, no body or coverage target). */
31
+ export declare function compileRuleDefinition(parts: RuleDefinitionParts): CompiledConstraint | undefined;
28
32
  //# sourceMappingURL=constraint-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-loader.d.ts","sourceRoot":"","sources":["../../src/validator/constraint-loader.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACpC,IAAI,EAAE,cAAc,EAAE,EACtB,WAAW,CAAC,EAAE,oBAAoB,EAAE,GACrC,kBAAkB,EAAE,CA0BtB"}
1
+ {"version":3,"file":"constraint-loader.d.ts","sourceRoot":"","sources":["../../src/validator/constraint-loader.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3G,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,yHAAyH;AACzH,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAG9D;AAED,mGAAmG;AACnG,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAGtE;AA0BD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wGAAwG;AACxG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,SAAS,CAiDhG"}
@@ -1,7 +1,7 @@
1
1
  // ─── Native Constraint Loader (Epic EE-3) ─────────────────────────────────────
2
2
  //
3
- // Discovers native `constraint def` / `requirement def` declarations from parsed
4
- // SysML documents and compiles each `require`/`assert constraint { … }` body into
3
+ // Compiles the native `constraint def` / `requirement def` declarations a stage 1
4
+ // handoff states (`collectApiConstraints`) and compiles each `require`/`assert constraint { … }` body into
5
5
  // an evaluator AST. Rules can use a directly parseable KerML body, or keep a
6
6
  // portable `true` body and provide `predicateExpression` for MEMO semantic-model
7
7
  // navigation. Model-level coverage targets are compiled into extent predicates.
@@ -15,75 +15,19 @@
15
15
  // require constraint { mitigatesHazard->size() >= 1 }
16
16
  // }
17
17
  // ──────────────────────────────────────────────────────────────────────────────
18
- import { langiumExprToNode, parseConstraintExpression } from './constraint-eval.js';
19
- /**
20
- * Walk all parsed documents and compile every native constraint def found.
21
- *
22
- * De-duplication by rule id is legitimate for the SAME rule seen twice: the
23
- * same ontology file appears in both the ontology load and the project parse.
24
- * Two DIFFERENT rules sharing an id is a defect, and is reported rather than
25
- * silently resolved by document order.
26
- *
27
- * A rule whose predicate fails to compile is skipped and reported. It used to
28
- * throw, which took down the entire command: one malformed
29
- * `predicateExpression` anywhere in a resolved dependency meant `memo validate`
30
- * exited with a stack trace and validated nothing. A broken rule must be loud,
31
- * but it must not be fatal — the other rules still have work to do.
32
- *
33
- * Callers are expected to surface `diagnostics`; a skipped rule that nobody
34
- * reports is a silently disabled check, which is worse than a crash.
35
- */
36
- export function collectNativeConstraints(docs, diagnostics) {
37
- const byId = new Map();
38
- const sourceById = new Map();
39
- for (const doc of docs) {
40
- const model = doc.document.parseResult?.value;
41
- if (!model)
42
- continue;
43
- const found = [];
44
- for (const member of model.members ?? []) {
45
- walk(member, found, doc.filePath, diagnostics);
46
- }
47
- for (const c of found) {
48
- const previous = sourceById.get(c.id);
49
- if (previous !== undefined && previous !== doc.filePath) {
50
- diagnostics?.push({
51
- kind: 'duplicate-id',
52
- ruleId: c.id,
53
- file: doc.filePath,
54
- message: `Rule id ${c.id} is declared in both ${previous} and ${doc.filePath}. `
55
- + `Rule ids must be unique; which definition wins currently depends on load order.`,
56
- });
57
- }
58
- sourceById.set(c.id, doc.filePath);
59
- byId.set(c.id, c);
60
- }
61
- }
62
- return [...byId.values()];
18
+ import { parseConstraintExpression } from './constraint-eval.js';
19
+ /** The rule's domain, or undefined when it states none (an enumeration literal as `Kind::member` or the bare member). */
20
+ export function mapDomain(raw) {
21
+ const member = raw?.includes('::') ? raw.slice(raw.lastIndexOf('::') + 2) : raw;
22
+ return member === 'modelling' || member === 'medicalDevice' || member === 'organisation' ? member : undefined;
63
23
  }
64
- function walk(node, out, file, diagnostics) {
65
- if (!node)
66
- return;
67
- if (node.$type === 'PackageDeclaration') {
68
- for (const member of node.members ?? [])
69
- walk(member, out, file, diagnostics);
70
- }
71
- else if (node.$type === 'ConstraintDefinition' || node.$type === 'RequirementDefinition') {
72
- try {
73
- const compiled = tryCompile(node, file);
74
- if (compiled)
75
- out.push(compiled);
76
- }
77
- catch (error) {
78
- diagnostics?.push({
79
- kind: 'compile-failed',
80
- ruleId: authoredId(extractAttributes(node.body ?? [])) ?? '(unknown)',
81
- file,
82
- message: error instanceof Error ? error.message : String(error),
83
- });
84
- }
85
- }
24
+ /** The rule's obligation, or undefined when it states none (`Kind::member` or the bare member). */
25
+ export function mapObligation(raw) {
26
+ const member = raw?.includes('::') ? raw.slice(raw.lastIndexOf('::') + 2) : raw;
27
+ return member === 'required' || member === 'recommended' || member === 'bestPractice' ? member : undefined;
86
28
  }
29
+ /** What a rule that states no severity takes from its obligation. */
30
+ const OBLIGATION_SEVERITY = { required: 'error', recommended: 'warning', bestPractice: 'info' };
87
31
  function mapTailoring(raw) {
88
32
  // A rule with no declared class is treated as `assurance`: tailorable with
89
33
  // rationale. Defaulting to `invariant` would silently make every
@@ -102,19 +46,17 @@ function mapTailoring(raw) {
102
46
  function authoredId(attrs) {
103
47
  return attrs['providedId'] || attrs['id'] || undefined;
104
48
  }
105
- function tryCompile(def, file) {
106
- const body = def.body ?? [];
107
- const attrs = extractAttributes(body);
49
+ /** Compile one rule definition, or undefined when it is no rule (no id, no body or coverage target). */
50
+ export function compileRuleDefinition(parts) {
51
+ const { attrs } = parts;
108
52
  const id = authoredId(attrs);
109
53
  if (!id)
110
54
  return undefined;
111
- // The boolean body: first require/assert constraint member.
112
- const requireMember = body.find(m => m.$type === 'RequireConstraintMember' && m.expression);
113
55
  let ast;
114
56
  let appliesToKind = attrs['appliesTo'] ?? '';
115
- if (requireMember) {
116
- ast = langiumExprToNode(requireMember.expression);
117
- if (ast.kind === 'bool' && ast.value && attrs['predicateExpression'] && attrs['evaluator'] !== 'architecture') {
57
+ if (parts.body) {
58
+ ast = parts.body;
59
+ if (ast.kind === 'bool' && ast.value && attrs['predicateExpression'] && (!attrs['evaluator'] || attrs['evaluator'] === 'native')) {
118
60
  // Portable constraint bodies remain `true` where SysML tools cannot
119
61
  // resolve MEMO's semantic-model navigation. The executable predicate
120
62
  // is still ontology-owned and is compiled here.
@@ -139,13 +81,21 @@ function tryCompile(def, file) {
139
81
  }
140
82
  return {
141
83
  id,
142
- description: attrs['description'] || attrs['rationaleText'] || id,
84
+ // Native `doc` first: the bases stopped declaring `description`, so a
85
+ // rule written today states its prose as a doc comment. `description`
86
+ // stays ahead of `rationaleText` for a rule that still carries the old
87
+ // attribute — a rationale is why the rule exists, not what it checks,
88
+ // and it is the last resort rather than an equivalent.
89
+ description: parts.doc || attrs['description'] || attrs['rationaleText'] || id,
143
90
  appliesToKind,
144
- severity: mapSeverity(attrs['severity']),
91
+ severity: mapSeverity(attrs['severity'], mapObligation(attrs['obligation'])),
145
92
  evaluator: attrs['evaluator'] || undefined,
146
- typeName: def.name,
93
+ typeName: parts.typeName,
147
94
  tailoring: mapTailoring(attrs['tailoring']),
148
- sourceFile: file,
95
+ sourceFile: parts.file,
96
+ ...(mapDomain(attrs['domain']) ? { domain: mapDomain(attrs['domain']) } : {}),
97
+ ...(mapObligation(attrs['obligation']) ? { obligation: mapObligation(attrs['obligation']) } : {}),
98
+ ...(parts.enforces && parts.enforces.length > 0 ? { enforces: parts.enforces } : {}),
149
99
  ast,
150
100
  };
151
101
  }
@@ -155,67 +105,9 @@ function parseScope(scope) {
155
105
  throw new Error(`Unsupported coverage target '${scope}'.`);
156
106
  return { kind: match[1], attribute: match[2], value: match[3] };
157
107
  }
158
- /**
159
- * The rule loader's own attribute reader.
160
- *
161
- * Deliberately separate from the builder's: rules are compiled before a model
162
- * exists, so this walks the raw AST. It must stay in step with the builder on
163
- * one point — a `MetadataApplication` (`@Foo { … }`) is a different node type
164
- * from an `AttributeMember`, so a reader that only walks the latter sees
165
- * nothing on an annotated definition. That is how every A0 rule silently
166
- * stopped compiling when the authored ids moved onto `@MemoIdentity`:
167
- * `tryCompile` returns undefined without an id, the rule is skipped, and the
168
- * engine enforces nothing while the suite stays green.
169
- */
170
- function extractAttributes(body) {
171
- const attrs = {};
172
- for (const member of body) {
173
- if (member.$type === 'AttributeMember' && member.value) {
174
- attrs[member.name] = extractValue(member.value);
175
- }
176
- }
177
- // Metadata last, so an annotation wins over a directly declared attribute
178
- // of the same name — the precedence the builder uses.
179
- for (const member of body) {
180
- if (member.$type !== 'MetadataApplication')
181
- continue;
182
- for (const field of member.body ?? []) {
183
- if (!field?.name || !field.value)
184
- continue;
185
- attrs[field.name] = extractValue(field.value);
186
- }
187
- }
188
- return attrs;
189
- }
190
- function extractValue(value) {
191
- if (!value)
192
- return '';
193
- switch (value.$type) {
194
- case 'StringValue':
195
- try {
196
- return JSON.parse(value.value ?? '""');
197
- }
198
- catch {
199
- return value.value?.replace(/^"|"$/g, '') ?? '';
200
- }
201
- case 'IntValue':
202
- case 'RealValue':
203
- return String(value.value);
204
- case 'BooleanValue':
205
- return String(value.value);
206
- case 'EnumValue': {
207
- // "RuleSeverityKind::error" → "error"
208
- const ref = value.enumRef ?? '';
209
- const colonIdx = ref.lastIndexOf('::');
210
- return colonIdx >= 0 ? ref.slice(colonIdx + 2) : ref;
211
- }
212
- default:
213
- return String(value);
214
- }
215
- }
216
- function mapSeverity(severity) {
108
+ function mapSeverity(severity, obligation) {
217
109
  if (severity === 'error' || severity === 'warning' || severity === 'info')
218
110
  return severity;
219
- return 'warning';
111
+ return obligation ? OBLIGATION_SEVERITY[obligation] : 'warning';
220
112
  }
221
113
  //# sourceMappingURL=constraint-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-loader.js","sourceRoot":"","sources":["../../src/validator/constraint-loader.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,iFAAiF;AACjF,kFAAkF;AAClF,6EAA6E;AAC7E,iFAAiF;AACjF,gFAAgF;AAChF,EAAE;AACF,wEAAwE;AACxE,2CAA2C;AAC3C,qCAAqC;AACrC,wCAAwC;AACxC,sDAAsD;AACtD,sFAAsF;AACtF,4DAA4D;AAC5D,MAAM;AACN,iFAAiF;AAIjF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAUpF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,wBAAwB,CACpC,IAAsB,EACtB,WAAoC;IAEpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8B,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAY,CAAC;QACrD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,KAAK,GAAyB,EAAE,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACtD,WAAW,EAAE,IAAI,CAAC;oBACd,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,CAAC,CAAC,EAAE;oBACZ,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,wBAAwB,QAAQ,QAAQ,GAAG,CAAC,QAAQ,IAAI;0BAC1E,iFAAiF;iBAC1F,CAAC,CAAC;YACP,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,IAAI,CACT,IAAS,EACT,GAAyB,EACzB,IAAY,EACZ,WAAoC;IAEpC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,EAAE,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE;YAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,KAAK,sBAAsB,IAAI,IAAI,CAAC,KAAK,KAAK,uBAAuB,EAAE,CAAC;QACzF,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,QAAQ;gBAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,WAAW,EAAE,IAAI,CAAC;gBACd,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,WAAW;gBACrE,IAAI;gBACJ,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAClE,CAAC,CAAC;QACP,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAC9B,2EAA2E;IAC3E,iEAAiE;IACjE,yEAAyE;IACzE,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;AAC5E,CAAC;AAGD;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,KAA6B;IAC7C,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ,EAAE,IAAa;IACvC,MAAM,IAAI,GAAU,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAE1B,4DAA4D;IAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,yBAAyB,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5F,IAAI,GAAG,CAAC;IACR,IAAI,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,aAAa,EAAE,CAAC;QAChB,GAAG,GAAG,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,cAAc,EAAE,CAAC;YAC5G,oEAAoE;YACpE,qEAAqE;YACrE,gDAAgD;YAChD,IAAI,CAAC;gBACD,GAAG,GAAG,yBAAyB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjL,CAAC;QACL,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS;YAC3B,CAAC,CAAC,uBAAuB,MAAM,CAAC,SAAS,QAAQ,MAAM,CAAC,KAAK,IAAI;YACjE,CAAC,CAAC,cAAc,CAAC;QACrB,GAAG,GAAG,yBAAyB,CAAC,cAAc,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;QACxE,aAAa,GAAG,OAAO,CAAC;IAC5B,CAAC;SAAM,CAAC;QACJ,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO;QACH,EAAE;QACF,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE;QACjE,aAAa;QACb,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACxC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,SAAS;QAC1C,QAAQ,EAAE,GAAG,CAAC,IAAI;QAClB,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,UAAU,EAAE,IAAI;QAChB,GAAG;KACN,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,MAAM,KAAK,GAAG,kDAAkD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7E,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,IAAI,CAAC,CAAC;IACvE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,iBAAiB,CAAC,IAAW;IAClC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,KAAK,KAAK,iBAAiB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACrD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IACD,0EAA0E;IAC1E,sDAAsD;IACtD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,KAAK,KAAK,qBAAqB;YAAE,SAAS;QACrD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,SAAS;YAC3C,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,KAAU;IAC5B,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,aAAa;YACd,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACpD,CAAC;QACL,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACZ,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,cAAc;YACf,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,sCAAsC;YACtC,MAAM,GAAG,GAAW,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACzD,CAAC;QACD;YACI,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,QAAiB;IAClC,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC3F,OAAO,SAAS,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"constraint-loader.js","sourceRoot":"","sources":["../../src/validator/constraint-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { ApiModel } from '../stage2/api-model.js';
2
+ import type { EffectiveRule } from '../model/methodology-resolver.js';
3
+ /** One clause of a standard or guidance, as the model carries it. */
4
+ export interface ClauseFact {
5
+ qualifiedName: string;
6
+ /** The standard's designation (`IEC 62304:2006+AMD1:2015`). */
7
+ standard: string;
8
+ /** The standard's qualified name: what a policy that selects by standard names. */
9
+ standardName: string;
10
+ clauseNumber: string;
11
+ /** A MEMO-authored scope phrase, not the standard's wording. */
12
+ title?: string;
13
+ }
14
+ /** The clauses the model declares, with the standard each belongs to. */
15
+ export declare function readClauseFacts(api: ApiModel): ClauseFact[];
16
+ /** `IEC 62304:2006+AMD1:2015 §5.2`, or the qualified name when the clause is unknown. */
17
+ export declare function clauseLabel(facts: readonly ClauseFact[], qualifiedName: string): string;
18
+ export interface RuleClauseCoverage {
19
+ standards: {
20
+ designation: string;
21
+ clauses: number;
22
+ enforced: number;
23
+ }[];
24
+ /** Every clause some enabled rule enforces, with the rules that do. */
25
+ enforcedClauses: (ClauseFact & {
26
+ rules: string[];
27
+ })[];
28
+ /**
29
+ * Rules that name no clause. A rule need not trace to a standard (the ontology's modelling rules
30
+ * and a user's own rules usually do not), so this is information about the rule set, not a gap.
31
+ */
32
+ untracedRules: {
33
+ id: string;
34
+ typeName: string;
35
+ domain?: string;
36
+ }[];
37
+ /** How many rules name at least one clause, however many. */
38
+ tracedRules: number;
39
+ /** A rule that enforces a clause the model does not carry, which should not happen. */
40
+ unknownClauses: {
41
+ ruleId: string;
42
+ clause: string;
43
+ }[];
44
+ byDomain: Record<string, number>;
45
+ }
46
+ /**
47
+ * Coverage of the clauses by the rules. Only a rule that is enabled counts as
48
+ * enforcing: one a user disabled or replaced no longer checks anything.
49
+ */
50
+ export declare function computeRuleClauseCoverage(clauses: readonly ClauseFact[], rules: readonly Pick<EffectiveRule, 'sourceRuleId' | 'sourceRuleType' | 'disposition' | 'domain' | 'enforces'>[]): RuleClauseCoverage;
51
+ //# sourceMappingURL=rule-clauses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-clauses.d.ts","sourceRoot":"","sources":["../../src/validator/rule-clauses.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,UAAU,EAAE,CA2B3D;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAGvF;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxE,uEAAuE;IACvE,eAAe,EAAE,CAAC,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,EAAE,CAAC;IACtD;;;OAGG;IACH,aAAa,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnE,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,cAAc,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACrC,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,cAAc,GAAG,gBAAgB,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC,EAAE,GACjH,kBAAkB,CAgCpB"}
@@ -0,0 +1,87 @@
1
+ // ─── Which rules enforce which clauses ───────────────────────────────────────
2
+ //
3
+ // A rule names the clauses it enforces (`#EnforcesClause dependency from <rule> to <clause>`), and the compiler has
4
+ // checked that each exists. This reads the clauses a model carries from the
5
+ // stage 1 handoff and answers the two questions an assurance reader asks:
6
+ // what does this rule enforce, and what enforces this clause
7
+ // (plans/memo-rules-domain-trace-and-editor.md).
8
+ //
9
+ // The coverage is a REPORT. A clause with no rule is the normal state of a
10
+ // library that carries more clauses than MEMO has rules; it is not a defect.
11
+ // ─────────────────────────────────────────────────────────────────────────────
12
+ import { apiDefinitionFacts } from '../stage2/build-from-api.js';
13
+ /** The clauses the model declares, with the standard each belongs to. */
14
+ export function readClauseFacts(api) {
15
+ const typedBy = (id, suffix) => api.types(id).some(type => api.qualifiedName(type['@id'])?.endsWith(`::${suffix}`));
16
+ const standardOf = (id) => {
17
+ for (let owner = api.owner(id); owner; owner = api.owner(owner['@id'])) {
18
+ if (owner['@type'] === 'PartUsage' && typedBy(owner['@id'], 'RegulatoryStandard')) {
19
+ const designation = apiDefinitionFacts(api, owner).attributes['designation'];
20
+ const name = api.qualifiedName(owner['@id']);
21
+ return designation && name ? { designation, name } : undefined;
22
+ }
23
+ }
24
+ return undefined;
25
+ };
26
+ const facts = [];
27
+ for (const usage of api.ofType('PartUsage')) {
28
+ if (!typedBy(usage['@id'], 'StandardClause'))
29
+ continue;
30
+ const qualifiedName = api.qualifiedName(usage['@id']);
31
+ if (!qualifiedName)
32
+ continue;
33
+ const attributes = apiDefinitionFacts(api, usage).attributes;
34
+ const standard = standardOf(usage['@id']);
35
+ if (!standard || !attributes['clauseNumber'])
36
+ continue;
37
+ facts.push({
38
+ qualifiedName, standard: standard.designation, standardName: standard.name, clauseNumber: attributes['clauseNumber'],
39
+ ...(attributes['title'] ? { title: attributes['title'] } : {}),
40
+ });
41
+ }
42
+ return facts;
43
+ }
44
+ /** `IEC 62304:2006+AMD1:2015 §5.2`, or the qualified name when the clause is unknown. */
45
+ export function clauseLabel(facts, qualifiedName) {
46
+ const fact = facts.find(f => f.qualifiedName === qualifiedName);
47
+ return fact ? `${fact.standard} §${fact.clauseNumber}` : qualifiedName;
48
+ }
49
+ /**
50
+ * Coverage of the clauses by the rules. Only a rule that is enabled counts as
51
+ * enforcing: one a user disabled or replaced no longer checks anything.
52
+ */
53
+ export function computeRuleClauseCoverage(clauses, rules) {
54
+ const byClause = new Map();
55
+ const known = new Set(clauses.map(c => c.qualifiedName));
56
+ const unknownClauses = [];
57
+ const byDomain = {};
58
+ const untracedRules = [];
59
+ let tracedRules = 0;
60
+ for (const rule of rules) {
61
+ byDomain[rule.domain ?? 'unstated'] = (byDomain[rule.domain ?? 'unstated'] ?? 0) + 1;
62
+ const enforced = rule.enforces ?? [];
63
+ if (enforced.length === 0)
64
+ untracedRules.push({ id: rule.sourceRuleId, typeName: rule.sourceRuleType, ...(rule.domain ? { domain: rule.domain } : {}) });
65
+ else
66
+ tracedRules++;
67
+ for (const clause of enforced) {
68
+ if (!known.has(clause)) {
69
+ unknownClauses.push({ ruleId: rule.sourceRuleId, clause });
70
+ continue;
71
+ }
72
+ if (rule.disposition !== 'enabled')
73
+ continue;
74
+ byClause.set(clause, [...(byClause.get(clause) ?? []), rule.sourceRuleId]);
75
+ }
76
+ }
77
+ const enforcedClauses = clauses
78
+ .filter(c => byClause.has(c.qualifiedName))
79
+ .map(c => ({ ...c, rules: [...new Set(byClause.get(c.qualifiedName))].sort() }));
80
+ const standards = [...new Set(clauses.map(c => c.standard))].sort().map(designation => ({
81
+ designation,
82
+ clauses: clauses.filter(c => c.standard === designation).length,
83
+ enforced: enforcedClauses.filter(c => c.standard === designation).length,
84
+ }));
85
+ return { standards, enforcedClauses, untracedRules, tracedRules, unknownClauses, byDomain };
86
+ }
87
+ //# sourceMappingURL=rule-clauses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-clauses.js","sourceRoot":"","sources":["../../src/validator/rule-clauses.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,13 @@ import type { KindRegistry } from '../model/kind-registry.js';
13
13
  */
14
14
  export declare function validateModel(model: MemoModel, nativeConstraints?: CompiledConstraint[], kindRegistry?: KindRegistry, effectiveRules?: EffectiveRule[],
15
15
  /** Methodology scope: which elements a rule may be evaluated ON. */
16
- inScope?: (element: import('../model/semantic.js').MemoElement) => boolean): ValidationResult;
16
+ inScope?: (element: import('../model/semantic.js').MemoElement) => boolean,
17
+ /**
18
+ * A workspace chosen with `--workspace`. Unlike methodology scope it is a view, not tailoring, so
19
+ * it narrows the subjects of EVERY rule, invariants included; the graph stays whole and only the
20
+ * evidence from another system's elements stops counting (see `WorkspaceScope`).
21
+ */
22
+ workspace?: Pick<import('../model/workspace-membership.js').WorkspaceScope, 'subjects' | 'foreign'>,
23
+ /** What each workspace holds. Without it a rule that judges workspace boundaries has no subject. */
24
+ membership?: import('../model/workspace-membership.js').WorkspaceMembership): ValidationResult;
17
25
  //# sourceMappingURL=rule-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../../src/validator/rule-engine.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAa,gBAAgB,EAA2B,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D;;;;;;;GAOG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,SAAS,EAChB,iBAAiB,GAAE,kBAAkB,EAAO,EAC5C,YAAY,CAAC,EAAE,YAAY,EAC3B,cAAc,CAAC,EAAE,aAAa,EAAE;AAChC,oEAAoE;AACpE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,sBAAsB,EAAE,WAAW,KAAK,OAAO,GAC3E,gBAAgB,CAgFlB"}
1
+ {"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../../src/validator/rule-engine.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAa,gBAAgB,EAA2B,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D;;;;;;;GAOG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,SAAS,EAChB,iBAAiB,GAAE,kBAAkB,EAAO,EAC5C,YAAY,CAAC,EAAE,YAAY,EAC3B,cAAc,CAAC,EAAE,aAAa,EAAE;AAChC,oEAAoE;AACpE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,sBAAsB,EAAE,WAAW,KAAK,OAAO;AAC1E;;;;GAIG;AACH,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,kCAAkC,EAAE,cAAc,EAAE,UAAU,GAAG,SAAS,CAAC;AACnG,oGAAoG;AACpG,UAAU,CAAC,EAAE,OAAO,kCAAkC,EAAE,mBAAmB,GAC5E,gBAAgB,CAmHlB"}
@@ -6,9 +6,10 @@
6
6
  // expression evaluator (constraint-eval.ts). Structural behavior checks run
7
7
  // alongside. The proprietary ClosureRule path was removed in Epic EE-4.
8
8
  // ─────────────────────────────────────────────────────────────────────────────
9
- import { evaluateConstraintNode } from './constraint-eval.js';
9
+ import { evaluateConstraintSubjects } from './constraint-eval.js';
10
10
  import { validateBehavior } from './behavior-validator.js';
11
11
  import { validateArchitecture } from './architecture-validator.js';
12
+ import { validateWorkspaceBoundaries } from './workspace-boundary-validator.js';
12
13
  import { validateViews } from './view-validator.js';
13
14
  import { BUILTIN_RULE_IDS } from './builtin-rules.js';
14
15
  /**
@@ -21,7 +22,15 @@ import { BUILTIN_RULE_IDS } from './builtin-rules.js';
21
22
  */
22
23
  export function validateModel(model, nativeConstraints = [], kindRegistry, effectiveRules,
23
24
  /** Methodology scope: which elements a rule may be evaluated ON. */
24
- inScope) {
25
+ inScope,
26
+ /**
27
+ * A workspace chosen with `--workspace`. Unlike methodology scope it is a view, not tailoring, so
28
+ * it narrows the subjects of EVERY rule, invariants included; the graph stays whole and only the
29
+ * evidence from another system's elements stops counting (see `WorkspaceScope`).
30
+ */
31
+ workspace,
32
+ /** What each workspace holds. Without it a rule that judges workspace boundaries has no subject. */
33
+ membership) {
25
34
  // Section 10.4: a violation reports the rule's provenance, not just its ID.
26
35
  // Keyed by active rule ID, because that is what the violation carries.
27
36
  const provenanceByRuleId = new Map();
@@ -55,8 +64,16 @@ inScope) {
55
64
  const ibdScope = nativeConstraints.find(c => c.evaluator === 'architecture')?.appliesToKind;
56
65
  const architectureViolations = validateArchitecture(model, ibdScope, kindRegistry);
57
66
  const viewViolations = validateViews(model);
67
+ // The built-in validators take no subject predicate, so a workspace keeps their findings by the
68
+ // element they are about. A model-wide finding (`__model__`) belongs to no element and stays.
69
+ // A dependency's elements are another package's: the rules judge this model's own
70
+ // content, and that package is validated where it is developed.
71
+ const isDependency = (id) => model.elements.get(id)?.provenance?.declaration.origin === 'dependency';
72
+ const inWorkspace = (violation) => !isDependency(violation.elementId)
73
+ && (!workspace || violation.elementId === '__model__' || workspace.subjects.has(violation.elementId));
58
74
  const nativeViolations = [];
59
75
  let nativePassed = 0;
76
+ let nativeVacuous = 0;
60
77
  // A constraint carrying a non-native `evaluator` is a first-class rule
61
78
  // whose predicate a TypeScript function computes — AR-IBD-001 is the only
62
79
  // one today. Its violations come from the built-in validator above, so it
@@ -64,16 +81,42 @@ inScope) {
64
81
  // meant one rule was evaluated and reported as neither passed nor failed.
65
82
  const delegated = [];
66
83
  for (const constraint of nativeConstraints) {
84
+ if (constraint.evaluator === 'workspace') {
85
+ // A model with no System has no boundary to judge: the rule ran on nothing, which is not a pass.
86
+ if (!membership || membership.missingSystem) {
87
+ nativeVacuous++;
88
+ continue;
89
+ }
90
+ const found = validateWorkspaceBoundaries(model, membership, constraint).filter(inWorkspace);
91
+ if (found.length === 0)
92
+ nativePassed++;
93
+ nativeViolations.push(...found);
94
+ continue;
95
+ }
67
96
  if (constraint.evaluator && constraint.evaluator !== 'native') {
68
97
  delegated.push(constraint.id);
69
98
  continue;
70
99
  }
71
- const violations = evaluateConstraintNode(constraint, constraint.ast, model, kindRegistry, inScope);
72
- if (violations.length === 0)
100
+ // An invariant runs on every subject of its kind, in scope or not. It
101
+ // holds the ontology's own consistency, which a methodology may not
102
+ // tailor — and leaving an element out of the rule's subjects is
103
+ // tailoring it, just without a policy to show for it.
104
+ const methodologyScope = constraint.tailoring === 'invariant' ? undefined : inScope;
105
+ const own = (element) => element.provenance?.declaration.origin !== 'dependency';
106
+ const subjectScope = workspace
107
+ ? (element) => own(element) && workspace.subjects.has(element.id) && (!methodologyScope || methodologyScope(element))
108
+ : (element) => own(element) && (!methodologyScope || methodologyScope(element));
109
+ const { violations, subjectCount } = evaluateConstraintSubjects(constraint, constraint.ast, model, kindRegistry, subjectScope, workspace?.foreign);
110
+ if (subjectCount === 0)
111
+ nativeVacuous++;
112
+ else if (violations.length === 0)
73
113
  nativePassed++;
74
114
  nativeViolations.push(...violations);
75
115
  }
76
- const violations = [...unresolvedViolations, ...behaviorViolations, ...architectureViolations, ...viewViolations, ...nativeViolations]
116
+ const violations = [
117
+ ...[...unresolvedViolations, ...behaviorViolations, ...architectureViolations, ...viewViolations].filter(inWorkspace),
118
+ ...nativeViolations,
119
+ ]
77
120
  .map(violation => ({
78
121
  ...violation,
79
122
  provenance: model.elements.get(violation.elementId)?.provenance,
@@ -87,13 +130,14 @@ inScope) {
87
130
  // two different denominators as though they were one.
88
131
  const raisedByBuiltinValidators = new Set([
89
132
  ...unresolvedViolations, ...behaviorViolations, ...architectureViolations, ...viewViolations,
90
- ].map(violation => violation.ruleId));
133
+ ].filter(inWorkspace).map(violation => violation.ruleId));
91
134
  const builtinPassed = BUILTIN_RULE_IDS.filter(id => !raisedByBuiltinValidators.has(id)).length;
92
135
  const delegatedPassed = delegated.filter(id => !raisedByBuiltinValidators.has(id)).length;
93
136
  return {
94
137
  violations,
95
138
  rulesEvaluated: BUILTIN_RULE_IDS.length + nativeConstraints.length,
96
139
  rulesPassed: builtinPassed + delegatedPassed + nativePassed,
140
+ rulesVacuous: nativeVacuous,
97
141
  timestamp: Date.now(),
98
142
  };
99
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/validator/rule-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/validator/rule-engine.ts"],"names":[],"mappings":"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"}