@memoarchitect/tools 0.8.7 → 0.10.8

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 (89) hide show
  1. package/README.md +1 -1
  2. package/package.json +3 -3
  3. package/packages/tools/lib/commands/export.js +1 -1
  4. package/packages/tools/lib/commands/export.js.map +1 -1
  5. package/packages/tools/lib/commands/init.d.ts.map +1 -1
  6. package/packages/tools/lib/commands/init.js +16 -5
  7. package/packages/tools/lib/commands/init.js.map +1 -1
  8. package/packages/tools/lib/commands/rules.d.ts.map +1 -1
  9. package/packages/tools/lib/commands/rules.js +3 -2
  10. package/packages/tools/lib/commands/rules.js.map +1 -1
  11. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  12. package/packages/tools/lib/commands/validate.js +71 -4
  13. package/packages/tools/lib/commands/validate.js.map +1 -1
  14. package/packages/tools/lib/dhf/document-registry.js +1 -1
  15. package/packages/tools/lib/dhf/document-registry.js.map +1 -1
  16. package/packages/tools/lib/dhf/standards-library.d.ts.map +1 -1
  17. package/packages/tools/lib/dhf/standards-library.js +53 -10
  18. package/packages/tools/lib/dhf/standards-library.js.map +1 -1
  19. package/packages/tools/lib/language/generated/ast.d.ts +93 -34
  20. package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
  21. package/packages/tools/lib/language/generated/ast.js +51 -2
  22. package/packages/tools/lib/language/generated/ast.js.map +1 -1
  23. package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
  24. package/packages/tools/lib/language/generated/grammar.js +578 -393
  25. package/packages/tools/lib/language/generated/grammar.js.map +1 -1
  26. package/packages/tools/lib/model/builder.d.ts +2 -0
  27. package/packages/tools/lib/model/builder.d.ts.map +1 -1
  28. package/packages/tools/lib/model/builder.js +157 -41
  29. package/packages/tools/lib/model/builder.js.map +1 -1
  30. package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
  31. package/packages/tools/lib/model/config-loader.js +7 -1
  32. package/packages/tools/lib/model/config-loader.js.map +1 -1
  33. package/packages/tools/lib/model/config.d.ts +9 -0
  34. package/packages/tools/lib/model/config.d.ts.map +1 -1
  35. package/packages/tools/lib/model/identity-registry.d.ts +39 -0
  36. package/packages/tools/lib/model/identity-registry.d.ts.map +1 -0
  37. package/packages/tools/lib/model/identity-registry.js +118 -0
  38. package/packages/tools/lib/model/identity-registry.js.map +1 -0
  39. package/packages/tools/lib/model/native-project.d.ts +16 -7
  40. package/packages/tools/lib/model/native-project.d.ts.map +1 -1
  41. package/packages/tools/lib/model/native-project.js +72 -21
  42. package/packages/tools/lib/model/native-project.js.map +1 -1
  43. package/packages/tools/lib/model/package-manifest.d.ts +4 -0
  44. package/packages/tools/lib/model/package-manifest.d.ts.map +1 -1
  45. package/packages/tools/lib/model/package-manifest.js +2 -0
  46. package/packages/tools/lib/model/package-manifest.js.map +1 -1
  47. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
  48. package/packages/tools/lib/model/relationship-registry.js +22 -0
  49. package/packages/tools/lib/model/relationship-registry.js.map +1 -1
  50. package/packages/tools/lib/model/semantic.d.ts +10 -0
  51. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  52. package/packages/tools/lib/model/semantic.js.map +1 -1
  53. package/packages/tools/lib/model/settings-boundary.js +1 -1
  54. package/packages/tools/lib/model/settings-boundary.js.map +1 -1
  55. package/packages/tools/lib/model/short-id.d.ts +22 -4
  56. package/packages/tools/lib/model/short-id.d.ts.map +1 -1
  57. package/packages/tools/lib/model/short-id.js +46 -7
  58. package/packages/tools/lib/model/short-id.js.map +1 -1
  59. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  60. package/packages/tools/lib/model/view-deriver.js +7 -3
  61. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  62. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  63. package/packages/tools/lib/operations/project-snapshot.js +24 -2
  64. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  65. package/packages/tools/lib/protocol/messages.d.ts +29 -0
  66. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  67. package/packages/tools/lib/server/config-resolver.d.ts.map +1 -1
  68. package/packages/tools/lib/server/config-resolver.js +6 -1
  69. package/packages/tools/lib/server/config-resolver.js.map +1 -1
  70. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  71. package/packages/tools/lib/server/dev-server.js +5 -2
  72. package/packages/tools/lib/server/dev-server.js.map +1 -1
  73. package/packages/tools/lib/server/dhf-doc-store.d.ts.map +1 -1
  74. package/packages/tools/lib/server/dhf-doc-store.js +10 -2
  75. package/packages/tools/lib/server/dhf-doc-store.js.map +1 -1
  76. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
  77. package/packages/tools/lib/server/view-layout-store.js +6 -3
  78. package/packages/tools/lib/server/view-layout-store.js.map +1 -1
  79. package/packages/tools/lib/validator/constraint-eval.d.ts +39 -2
  80. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  81. package/packages/tools/lib/validator/constraint-eval.js +100 -4
  82. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  83. package/packages/tools/lib/validator/constraint-loader.js +37 -2
  84. package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
  85. package/packages/tools/lib/validator/rule-engine.d.ts +3 -1
  86. package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
  87. package/packages/tools/lib/validator/rule-engine.js +4 -2
  88. package/packages/tools/lib/validator/rule-engine.js.map +1 -1
  89. package/packages/tools/src/grammar/memo-sysml.langium +51 -7
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../src/language/generated/grammar.ts"],"names":[],"mappings":"AAAA;;;gFAGgF;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,IAAI,sBAA2C,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAY,EAAE,CAAC,sBAAsB,IAAI,CAAC,sBAAsB,GAAG,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAktUrH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../src/language/generated/grammar.ts"],"names":[],"mappings":"AAAA;;;gFAGgF;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,IAAI,sBAA2C,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAY,EAAE,CAAC,sBAAsB,IAAI,CAAC,sBAAsB,GAAG,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA24UrH,CAAC,CAAC,CAAC"}
@@ -22,4 +22,6 @@ export interface BuilderRegistries {
22
22
  * Optionally accepts registries for dual-mode resolution (registry-first, config-fallback).
23
23
  */
24
24
  export declare function buildMemoModel(documents: ParsedDocument[], config: MEMOConfig, parseErrors?: ParseError[], registries?: BuilderRegistries): MemoModel;
25
+ /** The kind a nested grouping package becomes, distinct from a namespace package. */
26
+ export declare const ELEMENT_PACKAGE_KIND = "ElementPackage";
25
27
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/model/builder.ts"],"names":[],"mappings":"AAgGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAGR,SAAS,EAET,UAAU,EAGb,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,KAAK,EAAE,eAAe,EAA6B,MAAM,wBAAwB,CAAC;AAGzF;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,uDAAuD;IACvD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC;AAsGD;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,SAAS,EAAE,cAAc,EAAE,EAC3B,MAAM,EAAE,UAAU,EAClB,WAAW,GAAE,UAAU,EAAO,EAC9B,UAAU,CAAC,EAAE,iBAAiB,GAC/B,SAAS,CA8MX"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/model/builder.ts"],"names":[],"mappings":"AAgGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAGR,SAAS,EAET,UAAU,EAGb,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,KAAK,EAAE,eAAe,EAA6B,MAAM,wBAAwB,CAAC;AAGzF;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,uDAAuD;IACvD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC;AAsGD;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,SAAS,EAAE,cAAc,EAAE,EAC3B,MAAM,EAAE,UAAU,EAClB,WAAW,GAAE,UAAU,EAAO,EAC9B,UAAU,CAAC,EAAE,iBAAiB,GAC/B,SAAS,CA+NX;AAqxBD,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,mBAAmB,CAAC"}
@@ -37,6 +37,7 @@ import { AstUtils } from 'langium';
37
37
  import { isRequirementVerificationMember, isSatisfyRequirementUsage, isPerformActionUsage, isIncludeUseCaseUsage, isExhibitStateUsage, isFramedConcernMember, isSubjectMember, isDependency, isVariantMember, isActorMember, } from '../language/generated/ast.js';
38
38
  import { PackageRegistry } from './package-registry.js';
39
39
  import { assignSequentialShortIds, kindToPrefix } from './short-id.js';
40
+ import { identityKey, priorShortIds } from './identity-registry.js';
40
41
  import { LANGUAGE_NATIVE_RELATIONS, REFINEMENT_METADATA, pascalToCamelCase } from './relationship-registry.js';
41
42
  import { indexKinds, kindConformsTo } from './relationship-legality.js';
42
43
  import { CONTROL_KIND_METACLASS } from './activity-notation.js';
@@ -142,12 +143,13 @@ export function buildMemoModel(documents, config, parseErrors = [], registries)
142
143
  // so emit one per nesting. A model that nests natively then looks identical
143
144
  // to one that wrote `Composes`, which is what lets R10-S7 delete the
144
145
  // relationship without the containment vanishing. Ports carry `owner` too,
145
- // so this is confined to part-to-part nesting.
146
+ // so this covers part and item nesting, and nothing else.
147
+ const CONTAINING_CONSTRUCTS = new Set(['part', 'item']);
146
148
  for (const el of elements.values()) {
147
- if (el.construct !== 'part' || !el.owner)
149
+ if (!CONTAINING_CONSTRUCTS.has(el.construct) || !el.owner)
148
150
  continue;
149
151
  const parent = elements.get(el.owner);
150
- if (!parent || parent.construct !== 'part')
152
+ if (!parent || !CONTAINING_CONSTRUCTS.has(parent.construct))
151
153
  continue;
152
154
  relationships.push({
153
155
  id: `rel-${++relationshipCounter}`,
@@ -215,20 +217,32 @@ export function buildMemoModel(documents, config, parseErrors = [], registries)
215
217
  prefixElements.push(element);
216
218
  elementsByPrefix.set(prefix, prefixElements);
217
219
  }
220
+ // Identities assigned on earlier builds win. Both of these are quoted
221
+ // outside the model, so recomputing them from current content — which is
222
+ // what happened before `memo.identity.yaml` — silently repointed every
223
+ // external reference whenever a file moved or an element was inserted.
224
+ const priorIdentities = config.priorIdentities ?? {};
225
+ const priorShortIdsByElement = priorShortIds(priorIdentities);
218
226
  for (const [prefix, prefixElements] of elementsByPrefix) {
219
- const idToShortId = assignSequentialShortIds(prefix, prefixElements.map(e => e.id));
227
+ const idToShortId = assignSequentialShortIds(prefix, prefixElements.map(e => e.id), priorShortIdsByElement);
220
228
  for (const el of prefixElements) {
221
229
  el.shortId = idToShortId.get(el.id);
222
230
  // `uuid` is part of the ontology's identification core, so a model
223
231
  // may author it. An authored value wins: it is the whole point of
224
232
  // writing one — the element keeps its identity across a file move
225
233
  // or an id change, which the derived hash cannot survive.
226
- el.uuid = el.attributes.uuid?.trim() || stableElementUuid(el);
234
+ // Precedence: an authored uuid, then the one this project already
235
+ // assigned, then a fresh derivation. The middle term is what makes a
236
+ // uuid survive a file move — the derivation hashes the file path, so
237
+ // without it the same element gets a new identity when it moves.
238
+ el.uuid = el.attributes.uuid?.trim()
239
+ || priorIdentities[identityKey(el)]?.uuid
240
+ || stableElementUuid(el);
227
241
  }
228
242
  }
229
243
  // Phase 4: Validate relationship end types (warnings only).
230
244
  // A kind conforms to an end type if it equals it or specializes it
231
- // (transitively) — e.g. HardwareAssembly conforms to ArchitectureElement.
245
+ // (transitively) — e.g. HardwareAssembly conforms to MemoPart.
232
246
  if (registries?.relationshipRegistry) {
233
247
  // Same resolver the authoring UI and the server persistence path use,
234
248
  // so a link the panel offers is a link the builder accepts.
@@ -529,22 +543,22 @@ function extractUsage(usage, construct, filePath, packageName, config, elements,
529
543
  attributes['expose'] = exposePaths.join(',');
530
544
  }
531
545
  }
532
- // Nested part members that are view METADATA, not containment: reference
533
- // bindings (`part viewpoint :> vp;`) and the `:>>` redefinition of an
546
+ // Nested part/reference members that are view METADATA, not containment:
547
+ // bindings (`part/ref viewpoint :> vp;`) and the `:>>` redefinition of an
534
548
  // inherited feature whose body is attributes (`part :>> selectionQuery
535
549
  // { ... }`). These are flattened onto the owner as plain / prefixed
536
550
  // attributes so SysML-modelled views expose their viewpoint binding and
537
551
  // selection-query metadata to consumers. A typed nested part is NOT metadata
538
552
  // — it is real containment and is extracted as its own element below.
539
553
  for (const member of usage.body || []) {
540
- if (member.$type !== 'PartMember')
554
+ if (member.$type !== 'PartMember' && member.$type !== 'RefMember')
541
555
  continue;
542
556
  const pm = member;
543
557
  if (pm.boundRef && pm.name) {
544
- // Two shapes land here. `part viewpointDefinition :> vp;` names the
545
- // feature in `name` and the value in `boundRef`. The subsetting
558
+ // Two shapes land here. `part/ref viewpointDefinition :> vp;` names
559
+ // the feature in `name` and the value in `boundRef`. The subsetting
546
560
  // form for a multi-valued feature —
547
- // `part vpLogical :> viewpointDefinition = someViewpoint;` — puts
561
+ // `part/ref vpLogical :> viewpointDefinition = someViewpoint;` — puts
548
562
  // the FEATURE in `boundRef` and the value in `subsetValue`, and its
549
563
  // member name is arbitrary. Attribute it to the feature it subsets,
550
564
  // or a view governed by three viewpoints would surface as three
@@ -625,8 +639,12 @@ function extractUsage(usage, construct, filePath, packageName, config, elements,
625
639
  // Without this, an inline-authored port silently has no element: it
626
640
  // parses, every relationship endpoint referencing it resolves to a
627
641
  // dangling id, and nothing downstream reports why.
628
- if (construct === 'part') {
642
+ // Items nest too — a standard contains its clauses — so the nested-usage
643
+ // walk runs for both. Ports stay part-only: an item has no boundary.
644
+ if (construct === 'part' || construct === 'item') {
629
645
  extractNestedParts(usage, filePath, packageName, config, elements, registry, registries);
646
+ }
647
+ if (construct === 'part') {
630
648
  extractDefinitionPorts(usage, filePath, packageName, config, elements, registry, registries);
631
649
  }
632
650
  // A native `transition` lives inside the state machine that owns it, which
@@ -849,8 +867,8 @@ function extractDefinitionPorts(def, filePath, packageName, config, elements, re
849
867
  }
850
868
  }
851
869
  /**
852
- * Walk a part usage's body to extract nested parts as owned elements, setting
853
- * `owner` on each child.
870
+ * Walk a usage's body to extract nested parts AND items as owned elements,
871
+ * setting `owner` on each child.
854
872
  *
855
873
  * `extractUsage` flattens the `PartMember` shapes that are view metadata — a
856
874
  * reference binding (`part viewpoint :> vp;`) and an untyped body
@@ -864,21 +882,85 @@ function extractDefinitionPorts(def, filePath, packageName, config, elements, re
864
882
  function extractNestedParts(owner, filePath, packageName, config, elements, registry, registries) {
865
883
  const ownerId = owner.name;
866
884
  for (const member of owner.body || []) {
867
- if (member.$type !== 'PartMember')
868
- continue;
869
885
  const pm = member;
870
- // Only a TYPED nested part is containment. Untyped bodies (view
886
+ const isPart = pm.$type === 'PartMember';
887
+ // A nested ITEM is containment too — `item iec62304 { item clause4 …}`
888
+ // is how every standard declares its clauses. Without this branch the
889
+ // child parses cleanly in both parsers and never becomes an element at
890
+ // all: not a missing edge, a missing element. That is the
891
+ // BindingUsage / ExposeMember / untyped-flow shape again.
892
+ //
893
+ // A DIRECTED item is excluded: `in item payload : BubbleSignal;` is a
894
+ // port's payload parameter, not something the port contains. The same
895
+ // `direction` test already separates the two at the action-parameter
896
+ // and flow sites.
897
+ const isItem = pm.$type === 'ItemUsage' && !pm.direction;
898
+ if (!isPart && !isItem)
899
+ continue;
900
+ // Only a TYPED nested usage is containment. Untyped bodies (view
871
901
  // selectionQuery) and reference bindings are view metadata, flattened
872
902
  // to attributes in extractUsage — skip them here or a view's metadata
873
903
  // becomes a phantom element and its selection query is lost.
874
904
  if (!pm.type || pm.boundRef || !pm.name)
875
905
  continue;
876
- extractUsage({ name: pm.name, type: pm.type, body: pm.body }, 'part', filePath, packageName, config, elements, registry, registries);
906
+ extractUsage({ name: pm.name, type: pm.type, body: pm.body }, isPart ? 'part' : 'item', filePath, packageName, config, elements, registry, registries);
877
907
  const childEl = elements.get(pm.name);
878
908
  if (childEl)
879
909
  childEl.owner = ownerId;
880
910
  }
911
+ extractNestedPackages(owner, filePath, packageName, config, elements, registry, registries);
881
912
  }
913
+ /**
914
+ * A `package` nested inside a usage body — `part scrHome : UIElement { package
915
+ * grpHeader { part btnBack : UIElement; } }`.
916
+ *
917
+ * A package GROUPS; it does not decompose. So the group becomes an element (the
918
+ * explorer needs a node to render, and the user asked to create these to
919
+ * organise a screen or a leaf of the model), but the things inside it stay
920
+ * contained by the OWNER — putting them under the package would assert a part
921
+ * decomposition the author did not write, and would make the containment
922
+ * family rules see a package "containing" software.
923
+ *
924
+ * Without this the package and everything in it parses in both parsers and
925
+ * never becomes an element: the BindingUsage / ExposeMember / nested-item shape
926
+ * for the fourth time.
927
+ */
928
+ function extractNestedPackages(owner, filePath, packageName, config, elements, registry, registries) {
929
+ for (const member of owner.body || []) {
930
+ const pm = member;
931
+ if (pm.$type !== 'PackageDeclaration' || !pm.name)
932
+ continue;
933
+ elements.set(pm.name, {
934
+ id: pm.name,
935
+ name: pm.name,
936
+ kind: ELEMENT_PACKAGE_KIND,
937
+ construct: 'package',
938
+ layer: elements.get(owner.name)?.layer ?? 'unknown',
939
+ file: filePath,
940
+ package: packageName,
941
+ attributes: {},
942
+ owner: owner.name,
943
+ });
944
+ for (const grouped of pm.members ?? []) {
945
+ const gm = grouped;
946
+ const isPart = gm.$type === 'PartMember';
947
+ const isItem = gm.$type === 'ItemUsage' && !gm.direction;
948
+ if (!isPart && !isItem)
949
+ continue;
950
+ if (!gm.type || gm.boundRef || !gm.name)
951
+ continue;
952
+ extractUsage({ name: gm.name, type: gm.type, body: gm.body }, isPart ? 'part' : 'item', filePath, packageName, config, elements, registry, registries);
953
+ const childEl = elements.get(gm.name);
954
+ if (childEl) {
955
+ // Contained by the OWNER; the package only labels the grouping.
956
+ childEl.owner = owner.name;
957
+ childEl.attributes['elementPackage'] = pm.name;
958
+ }
959
+ }
960
+ }
961
+ }
962
+ /** The kind a nested grouping package becomes, distinct from a namespace package. */
963
+ export const ELEMENT_PACKAGE_KIND = 'ElementPackage';
882
964
  /**
883
965
  * Extract an ActionUsage, including nested actions, flows, and successions.
884
966
  * Supports both typed (action name : Type;) and composite (action name { ... }) forms.
@@ -1001,14 +1083,18 @@ function resolveConnection(conn, filePath, packageName, config, elements, relati
1001
1083
  return;
1002
1084
  // A named connection usage carries its own stable ID; anonymous ones fall
1003
1085
  // back to a positional counter that shifts whenever the file changes.
1004
- const attributes = { ...extractAttributes(conn.body), ...extractRelationshipMetadata(conn.body) };
1086
+ // `extractAttributes` lifts metadata applications itself now, so the
1087
+ // connection path no longer needs its own second pass.
1088
+ const attributes = extractAttributes(conn.body);
1005
1089
  const rel = {
1006
1090
  id: conn.name || `rel-${++relationshipCounter}`,
1007
1091
  type: normalizedType,
1008
1092
  sourceId,
1009
- sourceEnd: conn.source.endName,
1093
+ // `connect a to b` omits the end names; the ends are then the inherited
1094
+ // `source`/`target` participants. csv-io already defaults the same way.
1095
+ sourceEnd: conn.source.endName ?? 'source',
1010
1096
  targetId,
1011
- targetEnd: conn.target.endName,
1097
+ targetEnd: conn.target.endName ?? 'target',
1012
1098
  file: filePath,
1013
1099
  sourceRange: conn.$cstNode
1014
1100
  ? { offset: conn.$cstNode.offset, length: conn.$cstNode.length }
@@ -1125,7 +1211,13 @@ function resolveFlowConnection(flow, filePath, packageName, parentActionId, rela
1125
1211
  }
1126
1212
  /**
1127
1213
  * Resolve a succession usage into pairs of MemoRelationships.
1128
- * "first start then A then B then done" → (start→A), (A→B), (B→done)
1214
+ * "first A then B" → (A→B).
1215
+ *
1216
+ * The grammar admits exactly one `then` per statement, matching KerML
1217
+ * `SuccessionDeclaration` (:845), so `steps` is always a pair here. The loop
1218
+ * below is still written over the whole array: it costs nothing, and it keeps
1219
+ * this function correct for the chained input the deferred-succession path at
1220
+ * the call site synthesizes.
1129
1221
  */
1130
1222
  function resolveSuccession(succession, filePath, packageName, parentActionId, relationships, allElementIds) {
1131
1223
  const steps = succession.steps || [];
@@ -1408,8 +1500,9 @@ function resolveActorParticipation(actor, filePath, relationships, registry, all
1408
1500
  * name/doc, not in a relationship type.
1409
1501
  */
1410
1502
  function resolveDependency(dependency, filePath, relationships, registry, allElementIds) {
1411
- const isRefinement = (dependency.prefixMetadata ?? [])
1412
- .some(annotation => annotation.type?.split('::').pop() === REFINEMENT_METADATA);
1503
+ const prefixes = (dependency.prefixMetadata ?? [])
1504
+ .map(annotation => annotation.type?.split('::').pop());
1505
+ const isRefinement = prefixes.includes(REFINEMENT_METADATA);
1413
1506
  const { packageName } = nativeUsageContext(dependency);
1414
1507
  for (const client of dependency.clients ?? []) {
1415
1508
  const sourceId = resolveEndpointId(client, packageName, registry, allElementIds);
@@ -1547,33 +1640,56 @@ function extractAttributes(body) {
1547
1640
  }
1548
1641
  }
1549
1642
  }
1643
+ // Metadata applications last, so an annotation overrides a directly declared
1644
+ // attribute of the same name. That order is what R10-S5 established for
1645
+ // connections and it is preserved here rather than re-litigated: while the
1646
+ // identification core is migrating off the base defs, an element may carry
1647
+ // both spellings, and the annotation is the newer statement of intent.
1648
+ Object.assign(attrs, extractMetadataApplications(body));
1550
1649
  return attrs;
1551
1650
  }
1552
1651
  /**
1553
- * Read the standard `Rationale`/`StatusInfo` metadata (ModelingMetadata.sysml)
1554
- * off a connection usage's body into the same flat attribute keys the deleted
1555
- * `MemoRelationship.rationale`/`.status` used to occupy (R10-S5, 2026-08-13).
1652
+ * Standard metadata whose field name differs from the flat key MEMO reads.
1653
+ * Everything else lifts under its own field name, which is what makes one
1654
+ * `metadata def` usable as a carrier for any element.
1655
+ */
1656
+ const METADATA_KEY_ALIASES = {
1657
+ Rationale: { text: 'rationale' },
1658
+ };
1659
+ /**
1660
+ * Lift every `@Foo { ... }` metadata application in a body into the flat
1661
+ * attribute map, under each field's own name.
1662
+ *
1663
+ * `extractAttributes`'s member walk covers `AttributeMember`/`RefMember`/
1664
+ * `MetadataFeatureMember`; a `MetadataApplication` is a different node type and
1665
+ * is invisible to it, so without this an annotation parses cleanly in both
1666
+ * parsers and then silently vanishes from the model — the BindingUsage /
1667
+ * ExposeMember / untyped-flow shape this codebase has already hit three times.
1556
1668
  *
1557
- * `extractAttributes` only walks `AttributeMember`/`RefMember`/
1558
- * `MetadataFeatureMember`; a `MetadataApplication` in a usage body (the `@Foo
1559
- * {...}` form) is invisible to it, so without this a `@Rationale`/`@StatusInfo`
1560
- * annotation would parse and silently vanish from the model — the same
1561
- * BindingUsage/ExposeMember shape this epic exists to stop repeating.
1669
+ * This started (R10-S5, 2026-08-13) as a connection-only reader hardcoded to
1670
+ * `Rationale.text` and `StatusInfo.status`, because those were the two base-type
1671
+ * attributes being deleted at the time. It is general now for one reason: a
1672
+ * `metadata def` is the only carrier in SysML v2 that attaches to ANY metaclass,
1673
+ * so it is how MEMO can hold common fields (`id`, `uuid`, `sourceReference`, …)
1674
+ * without re-declaring them per metaclass. A carrier the builder cannot read is
1675
+ * not a carrier, so the reader has to be as general as the mechanism.
1676
+ *
1677
+ * Fields lift under their own names; `METADATA_KEY_ALIASES` covers the standard
1678
+ * definitions whose field name differs from the key MEMO reads.
1562
1679
  */
1563
- function extractRelationshipMetadata(body) {
1680
+ function extractMetadataApplications(body) {
1564
1681
  if (!body)
1565
1682
  return {};
1566
1683
  const attrs = {};
1567
1684
  for (const member of body) {
1568
1685
  if (member.$type !== 'MetadataApplication')
1569
1686
  continue;
1570
- const metadataType = member.type?.split('::').pop();
1571
- const fields = extractAttributes(member.body);
1572
- if (metadataType === 'Rationale' && fields.text) {
1573
- attrs.rationale = fields.text;
1574
- }
1575
- else if (metadataType === 'StatusInfo' && fields.status) {
1576
- attrs.status = fields.status;
1687
+ const metadataType = member.type?.split('::').pop() ?? '';
1688
+ const aliases = METADATA_KEY_ALIASES[metadataType] ?? {};
1689
+ for (const [field, value] of Object.entries(extractAttributes(member.body))) {
1690
+ if (value === '')
1691
+ continue;
1692
+ attrs[aliases[field] ?? field] = value;
1577
1693
  }
1578
1694
  }
1579
1695
  return attrs;