@memoarchitect/tools 0.6.6 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -11
- package/package.json +19 -7
- package/packages/tools/lib/analysis-starters.d.ts +4 -0
- package/packages/tools/lib/analysis-starters.d.ts.map +1 -0
- package/packages/tools/lib/analysis-starters.js +425 -0
- package/packages/tools/lib/analysis-starters.js.map +1 -0
- package/packages/tools/lib/bin/memo.js +161 -10
- package/packages/tools/lib/bin/memo.js.map +1 -1
- package/packages/tools/lib/browser/index.d.ts +1 -1
- package/packages/tools/lib/browser/index.d.ts.map +1 -1
- package/packages/tools/lib/browser/index.js +1 -1
- package/packages/tools/lib/browser/index.js.map +1 -1
- package/packages/tools/lib/commands/ask.js +1 -1
- package/packages/tools/lib/commands/ask.js.map +1 -1
- package/packages/tools/lib/commands/check.d.ts.map +1 -1
- package/packages/tools/lib/commands/check.js +3 -9
- package/packages/tools/lib/commands/check.js.map +1 -1
- package/packages/tools/lib/commands/conformance.d.ts +36 -0
- package/packages/tools/lib/commands/conformance.d.ts.map +1 -0
- package/packages/tools/lib/commands/conformance.js +212 -0
- package/packages/tools/lib/commands/conformance.js.map +1 -0
- package/packages/tools/lib/commands/convert.d.ts +12 -0
- package/packages/tools/lib/commands/convert.d.ts.map +1 -0
- package/packages/tools/lib/commands/convert.js +103 -0
- package/packages/tools/lib/commands/convert.js.map +1 -0
- package/packages/tools/lib/commands/create-package.d.ts +1 -2
- package/packages/tools/lib/commands/create-package.d.ts.map +1 -1
- package/packages/tools/lib/commands/create-package.js.map +1 -1
- package/packages/tools/lib/commands/dev.d.ts +13 -0
- package/packages/tools/lib/commands/dev.d.ts.map +1 -1
- package/packages/tools/lib/commands/dev.js +208 -74
- package/packages/tools/lib/commands/dev.js.map +1 -1
- package/packages/tools/lib/commands/dhf-draft.js +1 -1
- package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
- package/packages/tools/lib/commands/dhf-preview.js +1 -1
- package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
- package/packages/tools/lib/commands/dhf.js +1 -1
- package/packages/tools/lib/commands/dhf.js.map +1 -1
- package/packages/tools/lib/commands/element.d.ts +34 -0
- package/packages/tools/lib/commands/element.d.ts.map +1 -0
- package/packages/tools/lib/commands/element.js +174 -0
- package/packages/tools/lib/commands/element.js.map +1 -0
- package/packages/tools/lib/commands/export.d.ts.map +1 -1
- package/packages/tools/lib/commands/export.js +39 -40
- package/packages/tools/lib/commands/export.js.map +1 -1
- package/packages/tools/lib/commands/generate.d.ts.map +1 -1
- package/packages/tools/lib/commands/generate.js +10 -7
- package/packages/tools/lib/commands/generate.js.map +1 -1
- package/packages/tools/lib/commands/import.d.ts.map +1 -1
- package/packages/tools/lib/commands/import.js +25 -12
- package/packages/tools/lib/commands/import.js.map +1 -1
- package/packages/tools/lib/commands/init.d.ts.map +1 -1
- package/packages/tools/lib/commands/init.js +37 -14
- package/packages/tools/lib/commands/init.js.map +1 -1
- package/packages/tools/lib/commands/inspect.d.ts +5 -0
- package/packages/tools/lib/commands/inspect.d.ts.map +1 -0
- package/packages/tools/lib/commands/inspect.js +56 -0
- package/packages/tools/lib/commands/inspect.js.map +1 -0
- package/packages/tools/lib/commands/lock.d.ts.map +1 -1
- package/packages/tools/lib/commands/lock.js +7 -2
- package/packages/tools/lib/commands/lock.js.map +1 -1
- package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
- package/packages/tools/lib/commands/ontology.js +69 -116
- package/packages/tools/lib/commands/ontology.js.map +1 -1
- package/packages/tools/lib/commands/pack.d.ts +1 -1
- package/packages/tools/lib/commands/pack.d.ts.map +1 -1
- package/packages/tools/lib/commands/pack.js +20 -75
- package/packages/tools/lib/commands/pack.js.map +1 -1
- package/packages/tools/lib/commands/package.d.ts +10 -0
- package/packages/tools/lib/commands/package.d.ts.map +1 -0
- package/packages/tools/lib/commands/package.js +113 -0
- package/packages/tools/lib/commands/package.js.map +1 -0
- package/packages/tools/lib/commands/plugin.js +1 -1
- package/packages/tools/lib/commands/plugin.js.map +1 -1
- package/packages/tools/lib/commands/rules.d.ts.map +1 -1
- package/packages/tools/lib/commands/rules.js +120 -30
- package/packages/tools/lib/commands/rules.js.map +1 -1
- package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
- package/packages/tools/lib/commands/sysand-publish.js +14 -16
- package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
- package/packages/tools/lib/commands/toolchain.d.ts +8 -0
- package/packages/tools/lib/commands/toolchain.d.ts.map +1 -0
- package/packages/tools/lib/commands/toolchain.js +64 -0
- package/packages/tools/lib/commands/toolchain.js.map +1 -0
- package/packages/tools/lib/commands/validate.d.ts +1 -1
- package/packages/tools/lib/commands/validate.d.ts.map +1 -1
- package/packages/tools/lib/commands/validate.js +183 -56
- package/packages/tools/lib/commands/validate.js.map +1 -1
- package/packages/tools/lib/completeness/tracker.d.ts +10 -2
- package/packages/tools/lib/completeness/tracker.d.ts.map +1 -1
- package/packages/tools/lib/completeness/tracker.js +16 -21
- package/packages/tools/lib/completeness/tracker.js.map +1 -1
- package/packages/tools/lib/conformance/baseline.d.ts +26 -0
- package/packages/tools/lib/conformance/baseline.d.ts.map +1 -0
- package/packages/tools/lib/conformance/baseline.js +170 -0
- package/packages/tools/lib/conformance/baseline.js.map +1 -0
- package/packages/tools/lib/conformance/bnf.d.ts +84 -0
- package/packages/tools/lib/conformance/bnf.d.ts.map +1 -0
- package/packages/tools/lib/conformance/bnf.js +166 -0
- package/packages/tools/lib/conformance/bnf.js.map +1 -0
- package/packages/tools/lib/conformance/corpus.d.ts +125 -0
- package/packages/tools/lib/conformance/corpus.d.ts.map +1 -0
- package/packages/tools/lib/conformance/corpus.js +190 -0
- package/packages/tools/lib/conformance/corpus.js.map +1 -0
- package/packages/tools/lib/conformance/diff-xmi.d.ts +118 -0
- package/packages/tools/lib/conformance/diff-xmi.d.ts.map +1 -0
- package/packages/tools/lib/conformance/diff-xmi.js +276 -0
- package/packages/tools/lib/conformance/diff-xmi.js.map +1 -0
- package/packages/tools/lib/conformance/generated/syside-rules.d.ts +10 -0
- package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +1 -0
- package/packages/tools/lib/conformance/generated/syside-rules.js +1142 -0
- package/packages/tools/lib/conformance/generated/syside-rules.js.map +1 -0
- package/packages/tools/lib/conformance/index.d.ts +7 -0
- package/packages/tools/lib/conformance/index.d.ts.map +1 -0
- package/packages/tools/lib/conformance/index.js +19 -0
- package/packages/tools/lib/conformance/index.js.map +1 -0
- package/packages/tools/lib/conformance/run.d.ts +117 -0
- package/packages/tools/lib/conformance/run.d.ts.map +1 -0
- package/packages/tools/lib/conformance/run.js +0 -0
- package/packages/tools/lib/conformance/run.js.map +1 -0
- package/packages/tools/lib/conformance/xmi.d.ts +45 -0
- package/packages/tools/lib/conformance/xmi.d.ts.map +1 -0
- package/packages/tools/lib/conformance/xmi.js +148 -0
- package/packages/tools/lib/conformance/xmi.js.map +1 -0
- package/packages/tools/lib/dhf/template-resolver.js +1 -1
- package/packages/tools/lib/dhf/template-resolver.js.map +1 -1
- package/packages/tools/lib/import/column-mapper.d.ts +2 -2
- package/packages/tools/lib/import/column-mapper.d.ts.map +1 -1
- package/packages/tools/lib/import/column-mapper.js +3 -3
- package/packages/tools/lib/import/column-mapper.js.map +1 -1
- package/packages/tools/lib/index.d.ts +20 -3
- package/packages/tools/lib/index.d.ts.map +1 -1
- package/packages/tools/lib/index.js +19 -2
- package/packages/tools/lib/index.js.map +1 -1
- package/packages/tools/lib/language/generated/ast.d.ts +196 -51
- package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
- package/packages/tools/lib/language/generated/ast.js +136 -15
- package/packages/tools/lib/language/generated/ast.js.map +1 -1
- package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
- package/packages/tools/lib/language/generated/grammar.js +867 -295
- package/packages/tools/lib/language/generated/grammar.js.map +1 -1
- package/packages/tools/lib/llm/chat-engine.d.ts +4 -3
- package/packages/tools/lib/llm/chat-engine.d.ts.map +1 -1
- package/packages/tools/lib/llm/chat-engine.js +15 -12
- package/packages/tools/lib/llm/chat-engine.js.map +1 -1
- package/packages/tools/lib/llm/generate-engine.d.ts +7 -2
- package/packages/tools/lib/llm/generate-engine.d.ts.map +1 -1
- package/packages/tools/lib/llm/generate-engine.js +22 -4
- package/packages/tools/lib/llm/generate-engine.js.map +1 -1
- package/packages/tools/lib/llm/index.d.ts +1 -0
- package/packages/tools/lib/llm/index.d.ts.map +1 -1
- package/packages/tools/lib/llm/index.js +1 -0
- package/packages/tools/lib/llm/index.js.map +1 -1
- package/packages/tools/lib/llm/model-context.d.ts +2 -2
- package/packages/tools/lib/llm/model-context.d.ts.map +1 -1
- package/packages/tools/lib/llm/model-context.js +7 -13
- package/packages/tools/lib/llm/model-context.js.map +1 -1
- package/packages/tools/lib/llm/sysml-guidance.d.ts +8 -0
- package/packages/tools/lib/llm/sysml-guidance.d.ts.map +1 -0
- package/packages/tools/lib/llm/sysml-guidance.js +28 -0
- package/packages/tools/lib/llm/sysml-guidance.js.map +1 -0
- package/packages/tools/lib/lock.d.ts +14 -8
- package/packages/tools/lib/lock.d.ts.map +1 -1
- package/packages/tools/lib/lock.js +97 -108
- package/packages/tools/lib/lock.js.map +1 -1
- package/packages/tools/lib/mcp/model-loader.d.ts +5 -1
- package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
- package/packages/tools/lib/mcp/model-loader.js +16 -27
- package/packages/tools/lib/mcp/model-loader.js.map +1 -1
- package/packages/tools/lib/mcp/tools.d.ts +3 -0
- package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
- package/packages/tools/lib/mcp/tools.js +8 -9
- package/packages/tools/lib/mcp/tools.js.map +1 -1
- package/packages/tools/lib/model/activity-notation.d.ts +54 -0
- package/packages/tools/lib/model/activity-notation.d.ts.map +1 -0
- package/packages/tools/lib/model/activity-notation.js +208 -0
- package/packages/tools/lib/model/activity-notation.js.map +1 -0
- package/packages/tools/lib/model/builder.d.ts +3 -0
- package/packages/tools/lib/model/builder.d.ts.map +1 -1
- package/packages/tools/lib/model/builder.js +264 -26
- package/packages/tools/lib/model/builder.js.map +1 -1
- package/packages/tools/lib/model/config-loader.d.ts +19 -25
- package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/config-loader.js +51 -233
- package/packages/tools/lib/model/config-loader.js.map +1 -1
- package/packages/tools/lib/model/config.d.ts +42 -213
- package/packages/tools/lib/model/config.d.ts.map +1 -1
- package/packages/tools/lib/model/config.js +11 -9
- package/packages/tools/lib/model/config.js.map +1 -1
- package/packages/tools/lib/model/effective-scope.d.ts +74 -0
- package/packages/tools/lib/model/effective-scope.d.ts.map +1 -0
- package/packages/tools/lib/model/effective-scope.js +133 -0
- package/packages/tools/lib/model/effective-scope.js.map +1 -0
- package/packages/tools/lib/model/ir-identity.d.ts +94 -0
- package/packages/tools/lib/model/ir-identity.d.ts.map +1 -0
- package/packages/tools/lib/model/ir-identity.js +178 -0
- package/packages/tools/lib/model/ir-identity.js.map +1 -0
- package/packages/tools/lib/model/kind-registry.d.ts +114 -1
- package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/kind-registry.js +148 -4
- package/packages/tools/lib/model/kind-registry.js.map +1 -1
- package/packages/tools/lib/model/layer-resolver.js +1 -1
- package/packages/tools/lib/model/layer-resolver.js.map +1 -1
- package/packages/tools/lib/model/methodology-loader.d.ts +19 -24
- package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/methodology-loader.js +179 -176
- package/packages/tools/lib/model/methodology-loader.js.map +1 -1
- package/packages/tools/lib/model/methodology-resolver.d.ts +115 -0
- package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -0
- package/packages/tools/lib/model/methodology-resolver.js +317 -0
- package/packages/tools/lib/model/methodology-resolver.js.map +1 -0
- package/packages/tools/lib/model/native-project.d.ts +130 -0
- package/packages/tools/lib/model/native-project.d.ts.map +1 -0
- package/packages/tools/lib/model/native-project.js +570 -0
- package/packages/tools/lib/model/native-project.js.map +1 -0
- package/packages/tools/lib/model/ontology-loader.d.ts +34 -21
- package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/ontology-loader.js +340 -614
- package/packages/tools/lib/model/ontology-loader.js.map +1 -1
- package/packages/tools/lib/model/package-manifest.d.ts +37 -0
- package/packages/tools/lib/model/package-manifest.d.ts.map +1 -0
- package/packages/tools/lib/model/package-manifest.js +96 -0
- package/packages/tools/lib/model/package-manifest.js.map +1 -0
- package/packages/tools/lib/model/parser-utils.d.ts +31 -0
- package/packages/tools/lib/model/parser-utils.d.ts.map +1 -1
- package/packages/tools/lib/model/parser-utils.js +89 -1
- package/packages/tools/lib/model/parser-utils.js.map +1 -1
- package/packages/tools/lib/model/paths.d.ts +10 -4
- package/packages/tools/lib/model/paths.d.ts.map +1 -1
- package/packages/tools/lib/model/paths.js +10 -4
- package/packages/tools/lib/model/paths.js.map +1 -1
- package/packages/tools/lib/model/project-conversion.d.ts +226 -0
- package/packages/tools/lib/model/project-conversion.d.ts.map +1 -0
- package/packages/tools/lib/model/project-conversion.js +946 -0
- package/packages/tools/lib/model/project-conversion.js.map +1 -0
- package/packages/tools/lib/model/relationship-legality.d.ts +12 -0
- package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
- package/packages/tools/lib/model/relationship-legality.js.map +1 -1
- package/packages/tools/lib/model/relationship-registry.d.ts +16 -1
- package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/relationship-registry.js.map +1 -1
- package/packages/tools/lib/model/semantic.d.ts +38 -0
- package/packages/tools/lib/model/semantic.d.ts.map +1 -1
- package/packages/tools/lib/model/semantic.js +3 -0
- package/packages/tools/lib/model/semantic.js.map +1 -1
- package/packages/tools/lib/model/settings-boundary.d.ts +19 -0
- package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -0
- package/packages/tools/lib/model/settings-boundary.js +118 -0
- package/packages/tools/lib/model/settings-boundary.js.map +1 -0
- package/packages/tools/lib/model/short-id.d.ts +8 -7
- package/packages/tools/lib/model/short-id.d.ts.map +1 -1
- package/packages/tools/lib/model/short-id.js +26 -17
- package/packages/tools/lib/model/short-id.js.map +1 -1
- package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
- package/packages/tools/lib/model/source-graph.js +5 -1
- package/packages/tools/lib/model/source-graph.js.map +1 -1
- package/packages/tools/lib/model/source-provenance.d.ts +112 -0
- package/packages/tools/lib/model/source-provenance.d.ts.map +1 -0
- package/packages/tools/lib/model/source-provenance.js +169 -0
- package/packages/tools/lib/model/source-provenance.js.map +1 -0
- package/packages/tools/lib/model/sysml-files.d.ts +9 -0
- package/packages/tools/lib/model/sysml-files.d.ts.map +1 -1
- package/packages/tools/lib/model/sysml-files.js +20 -1
- package/packages/tools/lib/model/sysml-files.js.map +1 -1
- package/packages/tools/lib/model/sysml-ir.d.ts +9 -0
- package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -0
- package/packages/tools/lib/model/sysml-ir.js +105 -0
- package/packages/tools/lib/model/sysml-ir.js.map +1 -0
- package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
- package/packages/tools/lib/model/view-deriver.js +60 -6
- package/packages/tools/lib/model/view-deriver.js.map +1 -1
- package/packages/tools/lib/model/view-kinds.d.ts +2 -0
- package/packages/tools/lib/model/view-kinds.d.ts.map +1 -1
- package/packages/tools/lib/model/view-kinds.js +11 -0
- package/packages/tools/lib/model/view-kinds.js.map +1 -1
- package/packages/tools/lib/ontology/owl-exporter.d.ts +2 -2
- package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
- package/packages/tools/lib/ontology/owl-exporter.js +12 -12
- package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
- package/packages/tools/lib/operations/ai-authoring.d.ts +24 -0
- package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -0
- package/packages/tools/lib/operations/ai-authoring.js +77 -0
- package/packages/tools/lib/operations/ai-authoring.js.map +1 -0
- package/packages/tools/lib/operations/authoring.d.ts +40 -0
- package/packages/tools/lib/operations/authoring.d.ts.map +1 -0
- package/packages/tools/lib/operations/authoring.js +56 -0
- package/packages/tools/lib/operations/authoring.js.map +1 -0
- package/packages/tools/lib/operations/index.d.ts +2 -0
- package/packages/tools/lib/operations/index.d.ts.map +1 -1
- package/packages/tools/lib/operations/index.js +2 -0
- package/packages/tools/lib/operations/index.js.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.d.ts +28 -3
- package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.js +79 -30
- package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
- package/packages/tools/lib/protocol/messages.d.ts +311 -11
- package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
- package/packages/tools/lib/serializer/csv-io.d.ts +7 -7
- package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
- package/packages/tools/lib/serializer/csv-io.js +11 -11
- package/packages/tools/lib/serializer/csv-io.js.map +1 -1
- package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
- package/packages/tools/lib/serializer/sysml-generator.js +34 -2
- package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
- package/packages/tools/lib/server/config-resolver.d.ts +8 -4
- package/packages/tools/lib/server/config-resolver.d.ts.map +1 -1
- package/packages/tools/lib/server/config-resolver.js +25 -44
- package/packages/tools/lib/server/config-resolver.js.map +1 -1
- package/packages/tools/lib/server/conflict-policy.d.ts +44 -0
- package/packages/tools/lib/server/conflict-policy.d.ts.map +1 -0
- package/packages/tools/lib/server/conflict-policy.js +94 -0
- package/packages/tools/lib/server/conflict-policy.js.map +1 -0
- package/packages/tools/lib/server/dev-server.d.ts +32 -2
- package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.js +721 -53
- package/packages/tools/lib/server/dev-server.js.map +1 -1
- package/packages/tools/lib/server/element-writer.d.ts +11 -0
- package/packages/tools/lib/server/element-writer.d.ts.map +1 -0
- package/packages/tools/lib/server/element-writer.js +123 -0
- package/packages/tools/lib/server/element-writer.js.map +1 -0
- package/packages/tools/lib/server/file-watcher.d.ts +4 -1
- package/packages/tools/lib/server/file-watcher.d.ts.map +1 -1
- package/packages/tools/lib/server/file-watcher.js +17 -7
- package/packages/tools/lib/server/file-watcher.js.map +1 -1
- package/packages/tools/lib/server/mutation-domain.d.ts +22 -0
- package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -0
- package/packages/tools/lib/server/mutation-domain.js +87 -0
- package/packages/tools/lib/server/mutation-domain.js.map +1 -0
- package/packages/tools/lib/server/persistor.d.ts +63 -8
- package/packages/tools/lib/server/persistor.d.ts.map +1 -1
- package/packages/tools/lib/server/persistor.js +152 -44
- package/packages/tools/lib/server/persistor.js.map +1 -1
- package/packages/tools/lib/server/relationship-writer.d.ts +28 -4
- package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/relationship-writer.js +98 -9
- package/packages/tools/lib/server/relationship-writer.js.map +1 -1
- package/packages/tools/lib/server/rule-policy-writer.d.ts +40 -0
- package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -0
- package/packages/tools/lib/server/rule-policy-writer.js +124 -0
- package/packages/tools/lib/server/rule-policy-writer.js.map +1 -0
- package/packages/tools/lib/server/runtime-budget.d.ts +14 -0
- package/packages/tools/lib/server/runtime-budget.d.ts.map +1 -0
- package/packages/tools/lib/server/runtime-budget.js +15 -0
- package/packages/tools/lib/server/runtime-budget.js.map +1 -0
- package/packages/tools/lib/server/sysml-notation.d.ts +36 -0
- package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -0
- package/packages/tools/lib/server/sysml-notation.js +87 -0
- package/packages/tools/lib/server/sysml-notation.js.map +1 -0
- package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
- package/packages/tools/lib/server/view-layout-store.js +2 -0
- package/packages/tools/lib/server/view-layout-store.js.map +1 -1
- package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts +9 -0
- package/packages/tools/lib/sysml-ir/generated/sysml-derivations.d.ts.map +1 -0
- package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js +315 -0
- package/packages/tools/lib/sysml-ir/generated/sysml-derivations.js.map +1 -0
- package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts +5206 -0
- package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.d.ts.map +1 -0
- package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js +1933 -0
- package/packages/tools/lib/sysml-ir/generated/sysml-metamodel.js.map +1 -0
- package/packages/tools/lib/sysml-ir/index.d.ts +3 -0
- package/packages/tools/lib/sysml-ir/index.d.ts.map +1 -0
- package/packages/tools/lib/sysml-ir/index.js +3 -0
- package/packages/tools/lib/sysml-ir/index.js.map +1 -0
- package/packages/tools/lib/sysml-ir/ir.d.ts +50 -0
- package/packages/tools/lib/sysml-ir/ir.d.ts.map +1 -0
- package/packages/tools/lib/sysml-ir/ir.js +2 -0
- package/packages/tools/lib/sysml-ir/ir.js.map +1 -0
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +3 -0
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +1 -0
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +97 -0
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +1 -0
- package/packages/tools/lib/sysmlc/index.d.ts +2 -0
- package/packages/tools/lib/sysmlc/index.d.ts.map +1 -0
- package/packages/tools/lib/sysmlc/index.js +7 -0
- package/packages/tools/lib/sysmlc/index.js.map +1 -0
- package/packages/tools/lib/sysmlc/server.d.ts +29 -0
- package/packages/tools/lib/sysmlc/server.d.ts.map +1 -0
- package/packages/tools/lib/sysmlc/server.js +168 -0
- package/packages/tools/lib/sysmlc/server.js.map +1 -0
- package/packages/tools/lib/toolchain/default-registry.d.ts +12 -0
- package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/default-registry.js +28 -0
- package/packages/tools/lib/toolchain/default-registry.js.map +1 -0
- package/packages/tools/lib/toolchain/diagnostic.d.ts +57 -0
- package/packages/tools/lib/toolchain/diagnostic.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/diagnostic.js +69 -0
- package/packages/tools/lib/toolchain/diagnostic.js.map +1 -0
- package/packages/tools/lib/toolchain/effective.d.ts +36 -0
- package/packages/tools/lib/toolchain/effective.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/effective.js +91 -0
- package/packages/tools/lib/toolchain/effective.js.map +1 -0
- package/packages/tools/lib/toolchain/index.d.ts +11 -0
- package/packages/tools/lib/toolchain/index.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/index.js +21 -0
- package/packages/tools/lib/toolchain/index.js.map +1 -0
- package/packages/tools/lib/toolchain/lowering.d.ts +63 -0
- package/packages/tools/lib/toolchain/lowering.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/lowering.js +100 -0
- package/packages/tools/lib/toolchain/lowering.js.map +1 -0
- package/packages/tools/lib/toolchain/operations.d.ts +87 -0
- package/packages/tools/lib/toolchain/operations.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/operations.js +111 -0
- package/packages/tools/lib/toolchain/operations.js.map +1 -0
- package/packages/tools/lib/toolchain/process.d.ts +45 -0
- package/packages/tools/lib/toolchain/process.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/process.js +125 -0
- package/packages/tools/lib/toolchain/process.js.map +1 -0
- package/packages/tools/lib/toolchain/protocol.d.ts +122 -0
- package/packages/tools/lib/toolchain/protocol.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/protocol.js +74 -0
- package/packages/tools/lib/toolchain/protocol.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts +9 -0
- package/packages/tools/lib/toolchain/providers/internal-kpar.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/internal-kpar.js +84 -0
- package/packages/tools/lib/toolchain/providers/internal-kpar.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/internal.d.ts +33 -0
- package/packages/tools/lib/toolchain/providers/internal.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/internal.js +286 -0
- package/packages/tools/lib/toolchain/providers/internal.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/sysand.d.ts +12 -0
- package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/sysand.js +110 -0
- package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside.d.ts +24 -0
- package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside.js +208 -0
- package/packages/tools/lib/toolchain/providers/syside.js.map +1 -0
- package/packages/tools/lib/toolchain/registry.d.ts +192 -0
- package/packages/tools/lib/toolchain/registry.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/registry.js +130 -0
- package/packages/tools/lib/toolchain/registry.js.map +1 -0
- package/packages/tools/lib/toolchain/schema.d.ts +30 -0
- package/packages/tools/lib/toolchain/schema.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/schema.js +112 -0
- package/packages/tools/lib/toolchain/schema.js.map +1 -0
- package/packages/tools/lib/toolchain/sysmlc-client.d.ts +77 -0
- package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
- package/packages/tools/lib/toolchain/sysmlc-client.js.map +1 -0
- package/packages/tools/lib/validator/architecture-validator.d.ts +17 -0
- package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -0
- package/packages/tools/lib/validator/architecture-validator.js +101 -0
- package/packages/tools/lib/validator/architecture-validator.js.map +1 -0
- package/packages/tools/lib/validator/builtin-rules.d.ts +16 -0
- package/packages/tools/lib/validator/builtin-rules.d.ts.map +1 -0
- package/packages/tools/lib/validator/builtin-rules.js +62 -0
- package/packages/tools/lib/validator/builtin-rules.js.map +1 -0
- package/packages/tools/lib/validator/constraint-eval.d.ts +15 -0
- package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
- package/packages/tools/lib/validator/constraint-eval.js +62 -7
- package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
- package/packages/tools/lib/validator/constraint-loader.d.ts +22 -4
- package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
- package/packages/tools/lib/validator/constraint-loader.js +100 -27
- package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
- package/packages/tools/lib/validator/rule-engine.d.ts +2 -1
- package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
- package/packages/tools/lib/validator/rule-engine.js +57 -4
- package/packages/tools/lib/validator/rule-engine.js.map +1 -1
- package/packages/tools/lib/validator/sysml-constraints.d.ts +64 -0
- package/packages/tools/lib/validator/sysml-constraints.d.ts.map +1 -0
- package/packages/tools/lib/validator/sysml-constraints.js +251 -0
- package/packages/tools/lib/validator/sysml-constraints.js.map +1 -0
- package/packages/tools/lib/validator/types.d.ts +33 -0
- package/packages/tools/lib/validator/types.d.ts.map +1 -1
- package/packages/tools/lib/version.d.ts +2 -0
- package/packages/tools/lib/version.d.ts.map +1 -0
- package/packages/tools/lib/version.js +26 -0
- package/packages/tools/lib/version.js.map +1 -0
- package/packages/tools/src/grammar/memo-sysml.langium +104 -18
- package/packages/tools/lib/model/dimension-filter.d.ts +0 -33
- package/packages/tools/lib/model/dimension-filter.d.ts.map +0 -1
- package/packages/tools/lib/model/dimension-filter.js +0 -57
- package/packages/tools/lib/model/dimension-filter.js.map +0 -1
- package/packages/tools/lib/model/toolchain.d.ts +0 -12
- package/packages/tools/lib/model/toolchain.d.ts.map +0 -1
- package/packages/tools/lib/model/toolchain.js +0 -92
- package/packages/tools/lib/model/toolchain.js.map +0 -1
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { MemoModelDTO, ParseError } from '../model/semantic.js';
|
|
2
|
+
import type { SysmlIR } from '../sysml-ir/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Protocol version, `major.minor.patch`.
|
|
5
|
+
*
|
|
6
|
+
* Compatibility is by major: a client refuses a server whose major differs,
|
|
7
|
+
* and accepts any minor at or above nothing in particular — new optional fields
|
|
8
|
+
* are a minor bump, a changed or removed field is a major one.
|
|
9
|
+
*/
|
|
10
|
+
export declare const SYSMLC_PROTOCOL_VERSION = "1.1.0";
|
|
11
|
+
/**
|
|
12
|
+
* IR payload version, tracked separately from the protocol that carries it.
|
|
13
|
+
*
|
|
14
|
+
* The wire shape and the model shape change for different reasons: Session 3
|
|
15
|
+
* replaces this payload with the canonical IR without touching the request that
|
|
16
|
+
* delivers it. Two numbers, so that change costs one bump rather than a
|
|
17
|
+
* protocol break.
|
|
18
|
+
*/
|
|
19
|
+
export declare const SYSMLC_IR_VERSION = "2.0.0";
|
|
20
|
+
/** The one custom request. Everything else on the wire is standard LSP. */
|
|
21
|
+
export declare const EMIT_IR_REQUEST = "memo/emitIr";
|
|
22
|
+
/**
|
|
23
|
+
* Where the server advertises its protocol version.
|
|
24
|
+
*
|
|
25
|
+
* `capabilities.experimental` is LSP's own extension point, so a generic client
|
|
26
|
+
* that knows nothing about MEMO still completes the handshake.
|
|
27
|
+
*/
|
|
28
|
+
export declare const PROTOCOL_CAPABILITY_KEY = "memoProtocol";
|
|
29
|
+
export interface ProtocolCapability {
|
|
30
|
+
protocolVersion: string;
|
|
31
|
+
irVersion: string;
|
|
32
|
+
/** Implementation name and version, for diagnostics and probe output. */
|
|
33
|
+
implementation: string;
|
|
34
|
+
implementationVersion?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface EmitIrParams {
|
|
37
|
+
/** Absolute path of the project to lower. */
|
|
38
|
+
projectDir: string;
|
|
39
|
+
/**
|
|
40
|
+
* Client-assigned, strictly increasing per project.
|
|
41
|
+
*
|
|
42
|
+
* This is what makes "a superseded revision never emits a stale result"
|
|
43
|
+
* enforceable: the server compares the revision it is working on against
|
|
44
|
+
* the newest it has been asked for, and refuses to answer with the old one.
|
|
45
|
+
*/
|
|
46
|
+
revision: number;
|
|
47
|
+
/** The version the client is speaking, re-stated per request. */
|
|
48
|
+
protocolVersion: string;
|
|
49
|
+
/**
|
|
50
|
+
* The exact sources to lower, instead of the project's own discovery.
|
|
51
|
+
*
|
|
52
|
+
* Added in protocol 1.1.0 — an optional field, so a 1.0.0 server still
|
|
53
|
+
* answers a 1.1.0 client's ordinary request. It exists for callers whose
|
|
54
|
+
* subject is a file set rather than a project: `memo conformance` runs a
|
|
55
|
+
* corpus unit whose files a project walker would not collect, and both
|
|
56
|
+
* transports have to be able to say which files those are or only the
|
|
57
|
+
* in-process one could run a corpus.
|
|
58
|
+
*
|
|
59
|
+
* A server that does not understand it lowers the project instead. That is
|
|
60
|
+
* a visibly different answer, not a silently wrong one — the result names
|
|
61
|
+
* the files it read.
|
|
62
|
+
*/
|
|
63
|
+
files?: readonly string[];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* What the compiler understood from a revision.
|
|
67
|
+
*
|
|
68
|
+
* `parseErrors` is carried raw and separately from `model.errors`, because
|
|
69
|
+
* domain routing is the *caller's* decision, not the compiler's: the same
|
|
70
|
+
* failure is a `sysml` error when MEMO is the validator and a `memo-ingest`
|
|
71
|
+
* warning when something else was. A compiler that stamped a domain here would
|
|
72
|
+
* be answering a question it was not asked.
|
|
73
|
+
*/
|
|
74
|
+
export interface MemoIr {
|
|
75
|
+
irVersion: string;
|
|
76
|
+
model: MemoModelDTO;
|
|
77
|
+
parseErrors: ParseError[];
|
|
78
|
+
/** True when lowering read the revision with no parse failures. */
|
|
79
|
+
accepted: boolean;
|
|
80
|
+
/** Canonical AST-level IR. `model` is its Memo projection for compatibility. */
|
|
81
|
+
sysml: SysmlIR;
|
|
82
|
+
}
|
|
83
|
+
export interface EmitIrResult {
|
|
84
|
+
outcome: 'ir';
|
|
85
|
+
protocolVersion: string;
|
|
86
|
+
revision: number;
|
|
87
|
+
ir: MemoIr;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The answer to a request the world moved past.
|
|
91
|
+
*
|
|
92
|
+
* Returning the computed-but-stale IR would be the worse failure: the canvas
|
|
93
|
+
* would draw a revision the user has already edited away from, with no way to
|
|
94
|
+
* tell. Naming the newer revision lets the client wait for the answer it
|
|
95
|
+
* actually wants.
|
|
96
|
+
*/
|
|
97
|
+
export interface EmitIrSuperseded {
|
|
98
|
+
outcome: 'superseded';
|
|
99
|
+
protocolVersion: string;
|
|
100
|
+
revision: number;
|
|
101
|
+
supersededBy: number;
|
|
102
|
+
}
|
|
103
|
+
export type EmitIrResponse = EmitIrResult | EmitIrSuperseded;
|
|
104
|
+
/** One-shot `memo-sysmlc check --format json` / `emit-ir --format json` output. */
|
|
105
|
+
export interface SysmlcCheckOutput {
|
|
106
|
+
protocolVersion: string;
|
|
107
|
+
accepted: boolean;
|
|
108
|
+
parseErrors: ParseError[];
|
|
109
|
+
}
|
|
110
|
+
export interface SysmlcEmitIrOutput {
|
|
111
|
+
protocolVersion: string;
|
|
112
|
+
ir: MemoIr;
|
|
113
|
+
}
|
|
114
|
+
export declare class ProtocolVersionError extends Error {
|
|
115
|
+
readonly expected: string;
|
|
116
|
+
readonly actual: string | undefined;
|
|
117
|
+
constructor(expected: string, actual: string | undefined, where: string);
|
|
118
|
+
}
|
|
119
|
+
/** Same major version, both sides parseable. Anything else is incompatible. */
|
|
120
|
+
export declare function isProtocolCompatible(theirs: string | undefined, ours?: string): boolean;
|
|
121
|
+
export declare function assertProtocolCompatible(theirs: string | undefined, where: string, ours?: string): void;
|
|
122
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/toolchain/protocol.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC,2EAA2E;AAC3E,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IACzB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,mEAAmE;IACnE,QAAQ,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAE7D,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;gBAArD,QAAQ,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM;CAO5F;AAMD,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,SAA0B,GAAG,OAAO,CAKxG;AAED,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,EACb,IAAI,SAA0B,GAC/B,IAAI,CAEN"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// ─── The sysmlc protocol ─────────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// MEMO's own compiler is reached the way a third party's would be: as a process
|
|
4
|
+
// speaking a declared protocol. This module is that declaration, and it is the
|
|
5
|
+
// only thing both sides share — the bundled `memo-sysmlc` CLI implements it, the
|
|
6
|
+
// `internal` adapter consumes it, and neither imports the other's internals.
|
|
7
|
+
//
|
|
8
|
+
// The transport is LSP over stdio. That choice is not decoration: it gives
|
|
9
|
+
// cancellation, document synchronisation and lifecycle for free, it is what
|
|
10
|
+
// Sensmetry's own server speaks, and it means any editor can get MEMO
|
|
11
|
+
// diagnostics without a MEMO-specific client. Exactly one request is added to
|
|
12
|
+
// it — `memo/emitIr`, for the thing LSP has no notion of. Resist adding a
|
|
13
|
+
// second; anything that looks like it needs one is probably a document
|
|
14
|
+
// notification LSP already defines.
|
|
15
|
+
//
|
|
16
|
+
// **Versioned from day one.** The point of the boundary is that it outlives any
|
|
17
|
+
// one implementation behind it — Track B's native engine is meant to replace
|
|
18
|
+
// `memo-sysmlc` without the adapter noticing. A boundary whose shape is only ever
|
|
19
|
+
// "whatever the current build emits" cannot do that, so the version is checked
|
|
20
|
+
// on every handshake rather than assumed.
|
|
21
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
22
|
+
/**
|
|
23
|
+
* Protocol version, `major.minor.patch`.
|
|
24
|
+
*
|
|
25
|
+
* Compatibility is by major: a client refuses a server whose major differs,
|
|
26
|
+
* and accepts any minor at or above nothing in particular — new optional fields
|
|
27
|
+
* are a minor bump, a changed or removed field is a major one.
|
|
28
|
+
*/
|
|
29
|
+
export const SYSMLC_PROTOCOL_VERSION = '1.1.0';
|
|
30
|
+
/**
|
|
31
|
+
* IR payload version, tracked separately from the protocol that carries it.
|
|
32
|
+
*
|
|
33
|
+
* The wire shape and the model shape change for different reasons: Session 3
|
|
34
|
+
* replaces this payload with the canonical IR without touching the request that
|
|
35
|
+
* delivers it. Two numbers, so that change costs one bump rather than a
|
|
36
|
+
* protocol break.
|
|
37
|
+
*/
|
|
38
|
+
export const SYSMLC_IR_VERSION = '2.0.0';
|
|
39
|
+
/** The one custom request. Everything else on the wire is standard LSP. */
|
|
40
|
+
export const EMIT_IR_REQUEST = 'memo/emitIr';
|
|
41
|
+
/**
|
|
42
|
+
* Where the server advertises its protocol version.
|
|
43
|
+
*
|
|
44
|
+
* `capabilities.experimental` is LSP's own extension point, so a generic client
|
|
45
|
+
* that knows nothing about MEMO still completes the handshake.
|
|
46
|
+
*/
|
|
47
|
+
export const PROTOCOL_CAPABILITY_KEY = 'memoProtocol';
|
|
48
|
+
export class ProtocolVersionError extends Error {
|
|
49
|
+
expected;
|
|
50
|
+
actual;
|
|
51
|
+
constructor(expected, actual, where) {
|
|
52
|
+
super(`${where} speaks protocol ${actual ?? '(none advertised)'}, but this build speaks `
|
|
53
|
+
+ `${expected}. Major versions must match. Update the compiler, or pin one that matches.`);
|
|
54
|
+
this.expected = expected;
|
|
55
|
+
this.actual = actual;
|
|
56
|
+
this.name = 'ProtocolVersionError';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function major(version) {
|
|
60
|
+
return /^(\d+)\./.exec(version)?.[1];
|
|
61
|
+
}
|
|
62
|
+
/** Same major version, both sides parseable. Anything else is incompatible. */
|
|
63
|
+
export function isProtocolCompatible(theirs, ours = SYSMLC_PROTOCOL_VERSION) {
|
|
64
|
+
if (!theirs)
|
|
65
|
+
return false;
|
|
66
|
+
const mine = major(ours);
|
|
67
|
+
const yours = major(theirs);
|
|
68
|
+
return mine !== undefined && mine === yours;
|
|
69
|
+
}
|
|
70
|
+
export function assertProtocolCompatible(theirs, where, ours = SYSMLC_PROTOCOL_VERSION) {
|
|
71
|
+
if (!isProtocolCompatible(theirs, ours))
|
|
72
|
+
throw new ProtocolVersionError(ours, theirs, where);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/toolchain/protocol.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,6EAA6E;AAC7E,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,sEAAsE;AACtE,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,oCAAoC;AACpC,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,kFAAkF;AAClF,+EAA+E;AAC/E,0CAA0C;AAC1C,gFAAgF;AAKhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC;AA+FtD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACtB;IAA2B;IAAhD,YAAqB,QAAgB,EAAW,MAA0B,EAAE,KAAa;QACrF,KAAK,CACD,GAAG,KAAK,oBAAoB,MAAM,IAAI,mBAAmB,0BAA0B;cACjF,GAAG,QAAQ,4EAA4E,CAC5F,CAAC;QAJe,aAAQ,GAAR,QAAQ,CAAQ;QAAW,WAAM,GAAN,MAAM,CAAoB;QAKtE,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACvC,CAAC;CACJ;AAED,SAAS,KAAK,CAAC,OAAe;IAC1B,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,MAA0B,EAAE,IAAI,GAAG,uBAAuB;IAC3F,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACpC,MAA0B,EAC1B,KAAa,EACb,IAAI,GAAG,uBAAuB;IAE9B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write MEMO's private, gzip-tar project bundle.
|
|
3
|
+
*
|
|
4
|
+
* This deliberately is not called a KPAR. A KPAR is an interoperable SysML
|
|
5
|
+
* package and must be produced/consumed by a real KPAR provider; this archive
|
|
6
|
+
* is only a convenient offline MEMO snapshot.
|
|
7
|
+
*/
|
|
8
|
+
export declare function writeInternalMemoBundle(projectRoot: string, outputPath: string, projectName: string): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=internal-kpar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-kpar.d.ts","sourceRoot":"","sources":["../../../src/toolchain/providers/internal-kpar.ts"],"names":[],"mappings":"AAgEA;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CACzC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAYf"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// ─── The internal MEMO bundle writer ─────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Moved here from `commands/pack.ts` when packaging became a provider role.
|
|
4
|
+
// It used to be the `else` branch of `if (packager === 'internal')`; it is now
|
|
5
|
+
// what the internal package provider does, which is the same code reached
|
|
6
|
+
// through the same interface every other packager is reached through.
|
|
7
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
8
|
+
import { createWriteStream, readFileSync, readdirSync } from 'node:fs';
|
|
9
|
+
import { resolve } from 'node:path';
|
|
10
|
+
import { createGzip } from 'node:zlib';
|
|
11
|
+
import { pipeline } from 'node:stream/promises';
|
|
12
|
+
import { Readable } from 'node:stream';
|
|
13
|
+
import { isIgnoredDirectory } from '../../model/sysml-files.js';
|
|
14
|
+
function collectProjectFiles(dir, root) {
|
|
15
|
+
const files = [];
|
|
16
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
17
|
+
// Tool output and vendored dependencies are excluded by the same rule
|
|
18
|
+
// the source walker uses, so a package can never ship (or claim in its
|
|
19
|
+
// manifest) files the rest of the toolchain ignores.
|
|
20
|
+
if (isIgnoredDirectory(entry.name) || entry.name.endsWith('.kpar'))
|
|
21
|
+
continue;
|
|
22
|
+
const full = resolve(dir, entry.name);
|
|
23
|
+
if (entry.isDirectory())
|
|
24
|
+
files.push(...collectProjectFiles(full, root));
|
|
25
|
+
else if (entry.name.endsWith('.sysml') || [
|
|
26
|
+
'memo.package.yaml', 'memo.config.yaml', '.project.json',
|
|
27
|
+
'memo.rendering.yaml', 'memo.rules.yaml', 'memo.viewpoints.yaml', 'package.json',
|
|
28
|
+
].includes(entry.name)) {
|
|
29
|
+
files.push({ path: full.slice(root.length + 1), content: readFileSync(full) });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return files;
|
|
33
|
+
}
|
|
34
|
+
function writeOctal(buffer, offset, length, value) {
|
|
35
|
+
Buffer.from(value.toString(8).padStart(length - 1, '0') + '\0', 'ascii').copy(buffer, offset);
|
|
36
|
+
}
|
|
37
|
+
function createTar(files) {
|
|
38
|
+
const blocks = [];
|
|
39
|
+
for (const file of files) {
|
|
40
|
+
const header = Buffer.alloc(512);
|
|
41
|
+
Buffer.from(file.path, 'utf-8').copy(header, 0, 0, 100);
|
|
42
|
+
writeOctal(header, 100, 8, 0o644);
|
|
43
|
+
writeOctal(header, 108, 8, 0);
|
|
44
|
+
writeOctal(header, 116, 8, 0);
|
|
45
|
+
writeOctal(header, 124, 12, file.content.length);
|
|
46
|
+
writeOctal(header, 136, 12, Math.floor(Date.now() / 1000));
|
|
47
|
+
header[156] = 0x30;
|
|
48
|
+
Buffer.from('ustar\0', 'ascii').copy(header, 257);
|
|
49
|
+
Buffer.from('00', 'ascii').copy(header, 263);
|
|
50
|
+
header.fill(0x20, 148, 156);
|
|
51
|
+
let checksum = 0;
|
|
52
|
+
for (const byte of header)
|
|
53
|
+
checksum += byte;
|
|
54
|
+
writeOctal(header, 148, 7, checksum);
|
|
55
|
+
header[155] = 0x20;
|
|
56
|
+
blocks.push(header, file.content);
|
|
57
|
+
const remainder = file.content.length % 512;
|
|
58
|
+
if (remainder)
|
|
59
|
+
blocks.push(Buffer.alloc(512 - remainder));
|
|
60
|
+
}
|
|
61
|
+
blocks.push(Buffer.alloc(1024));
|
|
62
|
+
return Buffer.concat(blocks);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Write MEMO's private, gzip-tar project bundle.
|
|
66
|
+
*
|
|
67
|
+
* This deliberately is not called a KPAR. A KPAR is an interoperable SysML
|
|
68
|
+
* package and must be produced/consumed by a real KPAR provider; this archive
|
|
69
|
+
* is only a convenient offline MEMO snapshot.
|
|
70
|
+
*/
|
|
71
|
+
export async function writeInternalMemoBundle(projectRoot, outputPath, projectName) {
|
|
72
|
+
const files = collectProjectFiles(projectRoot, projectRoot);
|
|
73
|
+
const manifest = {
|
|
74
|
+
format: 'memo-bundle',
|
|
75
|
+
version: '1.0.0',
|
|
76
|
+
name: projectName,
|
|
77
|
+
createdAt: new Date().toISOString(),
|
|
78
|
+
fileCount: files.length,
|
|
79
|
+
files: files.map(file => file.path),
|
|
80
|
+
};
|
|
81
|
+
files.push({ path: 'manifest.json', content: Buffer.from(JSON.stringify(manifest, null, 2)) });
|
|
82
|
+
await pipeline(Readable.from([createTar(files)]), createGzip({ level: 9 }), createWriteStream(outputPath));
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=internal-kpar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-kpar.js","sourceRoot":"","sources":["../../../src/toolchain/providers/internal-kpar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { LoweringDescriptor, PackageDescriptor, ProviderContext, Transport, ValidatorDescriptor } from '../registry.js';
|
|
2
|
+
/** The one place this string is written. Everything else reads it from here. */
|
|
3
|
+
export declare const INTERNAL_PROVIDER_ID = "internal";
|
|
4
|
+
/** The binary this adapter speaks to when the transport is `process`. */
|
|
5
|
+
export declare const SYSMLC_COMMAND = "memo-sysmlc";
|
|
6
|
+
export interface InternalToolConfig {
|
|
7
|
+
/** `in-process` (default) or `process`. */
|
|
8
|
+
transport?: Transport;
|
|
9
|
+
/** Path to a `memo-sysmlc` binary. Defaults to the bundled one, then PATH. */
|
|
10
|
+
executable?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function resolveSysmlcCommand(context: ProviderContext): string;
|
|
13
|
+
/**
|
|
14
|
+
* Validator role — "is this valid SysML?" answered by MEMO's Langium grammar.
|
|
15
|
+
*
|
|
16
|
+
* The grammar is a MEMO subset, so this answers a narrower question than
|
|
17
|
+
* `syside` does. That is exactly why the roles are separate and why a failure
|
|
18
|
+
* here, when another validator accepted the file, is an ingest problem rather
|
|
19
|
+
* than a SysML error.
|
|
20
|
+
*/
|
|
21
|
+
export declare const internalValidatorDescriptor: ValidatorDescriptor;
|
|
22
|
+
/**
|
|
23
|
+
* Lowering role — "what can MEMO ingest from this revision?"
|
|
24
|
+
*
|
|
25
|
+
* Its diagnostics are `memo-ingest` by construction: this step is MEMO reading
|
|
26
|
+
* the source, so anything it cannot read is MEMO's limitation to report, not a
|
|
27
|
+
* verdict on the source. When MEMO is also the validator the caller collapses
|
|
28
|
+
* the duplicate, so one failure is still reported once.
|
|
29
|
+
*/
|
|
30
|
+
export declare const internalLoweringDescriptor: LoweringDescriptor;
|
|
31
|
+
/** Package role — the built-in gzip-tar MEMO bundle writer. */
|
|
32
|
+
export declare const internalPackageDescriptor: PackageDescriptor;
|
|
33
|
+
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/toolchain/providers/internal.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAER,kBAAkB,EAElB,iBAAiB,EACjB,eAAe,EAEf,SAAS,EAET,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AAGxB,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C,yEAAyE;AACzE,eAAO,MAAM,cAAc,gBAAgB,CAAC;AA0B5C,MAAM,WAAW,kBAAkB;IAC/B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAoED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAErE;AA6DD;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,EAAE,mBAmCzC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,kBA6BxC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB,EAAE,iBA8BvC,CAAC"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
// ─── Adapter: MEMO's own compiler and packager ───────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// The internal tool is a plugin like any other. It gets no early return, no
|
|
4
|
+
// `if (provider === …)` shortcut, and no privileges the registry does not give
|
|
5
|
+
// every descriptor. The only thing it does claim is `isDefault`, which is a
|
|
6
|
+
// declaration made here in the adapter rather than a `?? 'internal'` written
|
|
7
|
+
// into core code — that is the whole difference between "the default" and "the
|
|
8
|
+
// special case".
|
|
9
|
+
//
|
|
10
|
+
// MEMO's compiler ships inside @memoarchitect/tools, and this adapter can reach
|
|
11
|
+
// its CLI over the same protocol
|
|
12
|
+
// a third party's compiler would speak. Two transports, one interface:
|
|
13
|
+
//
|
|
14
|
+
// in-process call `lowerProject` directly. The fast path, and the default,
|
|
15
|
+
// because it is what a clean install with an empty PATH has.
|
|
16
|
+
// process spawn `memo-sysmlc serve --stdio` and speak the protocol. Slower to
|
|
17
|
+
// start, and the only transport that proves the contract is real
|
|
18
|
+
// — over a pipe you cannot pass an object by reference or skip
|
|
19
|
+
// serialization. CI runs this one.
|
|
20
|
+
//
|
|
21
|
+
// Both call the same `lowerProject`, which is why they can be byte-identical
|
|
22
|
+
// rather than merely intended to agree.
|
|
23
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
24
|
+
import { existsSync } from 'node:fs';
|
|
25
|
+
import { dirname } from 'node:path';
|
|
26
|
+
import { fileURLToPath } from 'node:url';
|
|
27
|
+
import { defaultSeverityForDomain } from '../diagnostic.js';
|
|
28
|
+
import { checkProject, lowerProject } from '../lowering.js';
|
|
29
|
+
import { findBundledExecutable, probeVersion, resolveExecutable, whichExecutable } from '../process.js';
|
|
30
|
+
import { getSysmlcClient } from '../sysmlc-client.js';
|
|
31
|
+
import { writeInternalMemoBundle } from './internal-kpar.js';
|
|
32
|
+
import { providerSettings } from '../effective.js';
|
|
33
|
+
/** The one place this string is written. Everything else reads it from here. */
|
|
34
|
+
export const INTERNAL_PROVIDER_ID = 'internal';
|
|
35
|
+
/** The binary this adapter speaks to when the transport is `process`. */
|
|
36
|
+
export const SYSMLC_COMMAND = 'memo-sysmlc';
|
|
37
|
+
const CAPABILITIES = ['check', 'lower', 'emit-ir'];
|
|
38
|
+
/**
|
|
39
|
+
* The transport used when the project configures none.
|
|
40
|
+
*
|
|
41
|
+
* Measured on GPCA (`scripts/measure-transport-latency.mjs`, 2026-08-02):
|
|
42
|
+
* a warm refresh costs 298 ms in-process and 332 ms over the pipe, against a
|
|
43
|
+
* 500 ms refresh budget — so the process transport **makes** budget, and §2.1's
|
|
44
|
+
* "keep in-process if it misses" clause was not triggered.
|
|
45
|
+
*
|
|
46
|
+
* It stays the default anyway, for the cost the warm number hides: the first
|
|
47
|
+
* request pays 632 ms for spawn and handshake, which a one-shot `memo validate`
|
|
48
|
+
* pays in full and never amortises. In-process is strictly cheaper for the
|
|
49
|
+
* commands that run once, and is what a clean install with an empty PATH has.
|
|
50
|
+
* CI exercises the other one, so switching is a config change rather than a
|
|
51
|
+
* project — and this constant is the whole of the switch.
|
|
52
|
+
*/
|
|
53
|
+
const DEFAULT_TRANSPORT = 'in-process';
|
|
54
|
+
const TRANSPORTS = ['in-process', 'process'];
|
|
55
|
+
const SETTINGS_SCHEMA = [
|
|
56
|
+
{
|
|
57
|
+
path: `${INTERNAL_PROVIDER_ID}.transport`,
|
|
58
|
+
type: 'enum',
|
|
59
|
+
values: TRANSPORTS,
|
|
60
|
+
description: `How MEMO's own compiler is reached. \`process\` spawns \`${SYSMLC_COMMAND} serve --stdio\` `
|
|
61
|
+
+ `and speaks the versioned protocol; \`in-process\` calls it directly. Defaults to `
|
|
62
|
+
+ `${DEFAULT_TRANSPORT}.`,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
path: `${INTERNAL_PROVIDER_ID}.executable`,
|
|
66
|
+
type: 'string',
|
|
67
|
+
description: `Path to a \`${SYSMLC_COMMAND}\` binary, for the \`process\` transport. Defaults to the `
|
|
68
|
+
+ 'bundled one, and then to PATH.',
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
function settings(context) {
|
|
72
|
+
return providerSettings(context.config, INTERNAL_PROVIDER_ID) ?? {};
|
|
73
|
+
}
|
|
74
|
+
function transport(context) {
|
|
75
|
+
const configured = settings(context).transport;
|
|
76
|
+
return configured && TRANSPORTS.includes(configured) ? configured : DEFAULT_TRANSPORT;
|
|
77
|
+
}
|
|
78
|
+
/** MEMO's own version, reported the way an external tool reports `--version`. */
|
|
79
|
+
function internalVersion() {
|
|
80
|
+
return process.env.MEMO_VERSION;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Where `memo-sysmlc` is, without the user having been asked to do anything.
|
|
84
|
+
*
|
|
85
|
+
* Configured path first, then the binary bundled beside this install, then
|
|
86
|
+
* PATH. The middle step is the one that matters: Architect depends on the
|
|
87
|
+
* compiler package, so an Architect install already has it — resolving it is
|
|
88
|
+
* MEMO's job, not the user's.
|
|
89
|
+
*/
|
|
90
|
+
function compilerInvocation(context) {
|
|
91
|
+
const configured = settings(context).executable;
|
|
92
|
+
if (configured)
|
|
93
|
+
return { command: resolveExecutable(configured, SYSMLC_COMMAND, context.projectDir), args: [] };
|
|
94
|
+
const bundled = findBundledExecutable(SYSMLC_COMMAND, [
|
|
95
|
+
context.projectDir,
|
|
96
|
+
dirname(fileURLToPath(import.meta.url)),
|
|
97
|
+
]);
|
|
98
|
+
if (bundled)
|
|
99
|
+
return { command: bundled, args: [] };
|
|
100
|
+
// A package cannot find its own npm bin link: npm creates that link for
|
|
101
|
+
// consumers. Run the compiled script directly so tools remains its own
|
|
102
|
+
// default compiler, whether installed standalone or as Architect's dep.
|
|
103
|
+
const scripts = [
|
|
104
|
+
// Compiled package: lib/toolchain/providers → lib/sysmlc/bin.
|
|
105
|
+
fileURLToPath(new URL('../../sysmlc/bin/memo-sysmlc.js', import.meta.url)),
|
|
106
|
+
// Source-mode test runner: src/toolchain/providers → lib/sysmlc/bin.
|
|
107
|
+
fileURLToPath(new URL('../../../lib/sysmlc/bin/memo-sysmlc.js', import.meta.url)),
|
|
108
|
+
];
|
|
109
|
+
const script = scripts.find(existsSync);
|
|
110
|
+
if (script)
|
|
111
|
+
return { command: process.execPath, args: [script] };
|
|
112
|
+
return { command: SYSMLC_COMMAND, args: [] };
|
|
113
|
+
}
|
|
114
|
+
export function resolveSysmlcCommand(context) {
|
|
115
|
+
return compilerInvocation(context).command;
|
|
116
|
+
}
|
|
117
|
+
function client(context) {
|
|
118
|
+
const invocation = compilerInvocation(context);
|
|
119
|
+
return getSysmlcClient({
|
|
120
|
+
...invocation,
|
|
121
|
+
projectDir: context.projectDir,
|
|
122
|
+
providerId: INTERNAL_PROVIDER_ID,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
function probeFor(context) {
|
|
126
|
+
if (transport(context) === 'in-process') {
|
|
127
|
+
return { available: true, transport: 'in-process', version: internalVersion() };
|
|
128
|
+
}
|
|
129
|
+
const invocation = compilerInvocation(context);
|
|
130
|
+
const executable = whichExecutable(invocation.command);
|
|
131
|
+
if (!executable) {
|
|
132
|
+
return {
|
|
133
|
+
available: false,
|
|
134
|
+
transport: 'process',
|
|
135
|
+
detail: `"${invocation.command}" was not found on PATH or bundled with this install.`,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
available: true,
|
|
140
|
+
transport: 'process',
|
|
141
|
+
executable,
|
|
142
|
+
version: probeVersion(executable, [...invocation.args, '--version']) ?? internalVersion(),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Normalize parse errors into the caller's domain.
|
|
147
|
+
*
|
|
148
|
+
* `providerVersion` is this process's, never the server's, so the same defect
|
|
149
|
+
* reads identically whichever transport found it. The version of the compiler
|
|
150
|
+
* is worth knowing, and `memo toolchain probe` is where it is reported; a
|
|
151
|
+
* diagnostic list that changed shape with the transport would make the
|
|
152
|
+
* byte-identity test a test of nothing.
|
|
153
|
+
*/
|
|
154
|
+
function toDiagnostics(errors, domain) {
|
|
155
|
+
return errors.map(error => ({
|
|
156
|
+
domain,
|
|
157
|
+
provider: INTERNAL_PROVIDER_ID,
|
|
158
|
+
providerVersion: internalVersion(),
|
|
159
|
+
severity: defaultSeverityForDomain(domain),
|
|
160
|
+
message: error.message,
|
|
161
|
+
file: error.file,
|
|
162
|
+
range: error.line !== undefined
|
|
163
|
+
? { start: { line: error.line, column: error.column ?? 1 } }
|
|
164
|
+
: undefined,
|
|
165
|
+
}));
|
|
166
|
+
}
|
|
167
|
+
async function ir(context) {
|
|
168
|
+
return transport(context) === 'process'
|
|
169
|
+
? client(context).emitIr(context.files)
|
|
170
|
+
: lowerProject(context.projectDir, { registries: context.registries, files: context.files });
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Validator role — "is this valid SysML?" answered by MEMO's Langium grammar.
|
|
174
|
+
*
|
|
175
|
+
* The grammar is a MEMO subset, so this answers a narrower question than
|
|
176
|
+
* `syside` does. That is exactly why the roles are separate and why a failure
|
|
177
|
+
* here, when another validator accepted the file, is an ingest problem rather
|
|
178
|
+
* than a SysML error.
|
|
179
|
+
*/
|
|
180
|
+
export const internalValidatorDescriptor = {
|
|
181
|
+
id: INTERNAL_PROVIDER_ID,
|
|
182
|
+
role: 'validator',
|
|
183
|
+
capabilities: ['check'],
|
|
184
|
+
isDefault: true,
|
|
185
|
+
settingsSchema: SETTINGS_SCHEMA,
|
|
186
|
+
probe: probeFor,
|
|
187
|
+
create(context) {
|
|
188
|
+
const mode = transport(context);
|
|
189
|
+
return {
|
|
190
|
+
id: INTERNAL_PROVIDER_ID,
|
|
191
|
+
role: 'validator',
|
|
192
|
+
transport: mode,
|
|
193
|
+
invocation: () => mode === 'process'
|
|
194
|
+
? (() => { const invocation = compilerInvocation(context); return { command: invocation.command, args: [...invocation.args, 'serve', '--stdio'], provider: INTERNAL_PROVIDER_ID }; })()
|
|
195
|
+
: undefined,
|
|
196
|
+
async run() {
|
|
197
|
+
// Checking needs parse errors and nothing else. Over the process
|
|
198
|
+
// transport it rides on `memo/emitIr` rather than earning a
|
|
199
|
+
// second custom request — the server answers a repeat request
|
|
200
|
+
// for an unchanged revision from cache, so a snapshot that runs
|
|
201
|
+
// both roles still compiles once.
|
|
202
|
+
const { parseErrors } = mode === 'process'
|
|
203
|
+
? await client(context).emitIr(context.files)
|
|
204
|
+
: await checkProject(context.projectDir, context.files);
|
|
205
|
+
return {
|
|
206
|
+
provider: INTERNAL_PROVIDER_ID,
|
|
207
|
+
providerVersion: internalVersion(),
|
|
208
|
+
transport: mode,
|
|
209
|
+
accepted: parseErrors.length === 0,
|
|
210
|
+
diagnostics: toDiagnostics(parseErrors, 'sysml'),
|
|
211
|
+
};
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Lowering role — "what can MEMO ingest from this revision?"
|
|
218
|
+
*
|
|
219
|
+
* Its diagnostics are `memo-ingest` by construction: this step is MEMO reading
|
|
220
|
+
* the source, so anything it cannot read is MEMO's limitation to report, not a
|
|
221
|
+
* verdict on the source. When MEMO is also the validator the caller collapses
|
|
222
|
+
* the duplicate, so one failure is still reported once.
|
|
223
|
+
*/
|
|
224
|
+
export const internalLoweringDescriptor = {
|
|
225
|
+
id: INTERNAL_PROVIDER_ID,
|
|
226
|
+
role: 'lowering',
|
|
227
|
+
capabilities: [...CAPABILITIES],
|
|
228
|
+
isDefault: true,
|
|
229
|
+
settingsSchema: SETTINGS_SCHEMA,
|
|
230
|
+
probe: probeFor,
|
|
231
|
+
create(context) {
|
|
232
|
+
const mode = transport(context);
|
|
233
|
+
return {
|
|
234
|
+
id: INTERNAL_PROVIDER_ID,
|
|
235
|
+
role: 'lowering',
|
|
236
|
+
transport: mode,
|
|
237
|
+
invocation: () => mode === 'process'
|
|
238
|
+
? (() => { const invocation = compilerInvocation(context); return { command: invocation.command, args: [...invocation.args, 'serve', '--stdio'], provider: INTERNAL_PROVIDER_ID }; })()
|
|
239
|
+
: undefined,
|
|
240
|
+
async run() {
|
|
241
|
+
const payload = await ir(context);
|
|
242
|
+
return {
|
|
243
|
+
provider: INTERNAL_PROVIDER_ID,
|
|
244
|
+
providerVersion: internalVersion(),
|
|
245
|
+
transport: mode,
|
|
246
|
+
accepted: payload.accepted,
|
|
247
|
+
diagnostics: toDiagnostics(payload.parseErrors, 'memo-ingest'),
|
|
248
|
+
ir: payload,
|
|
249
|
+
};
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
/** Package role — the built-in gzip-tar MEMO bundle writer. */
|
|
255
|
+
export const internalPackageDescriptor = {
|
|
256
|
+
id: INTERNAL_PROVIDER_ID,
|
|
257
|
+
role: 'package',
|
|
258
|
+
capabilities: ['pack'],
|
|
259
|
+
isDefault: true,
|
|
260
|
+
probe: () => ({ available: true, transport: 'in-process', version: internalVersion() }),
|
|
261
|
+
create(context) {
|
|
262
|
+
return {
|
|
263
|
+
id: INTERNAL_PROVIDER_ID,
|
|
264
|
+
role: 'package',
|
|
265
|
+
transport: 'in-process',
|
|
266
|
+
invocation: () => undefined,
|
|
267
|
+
async run() {
|
|
268
|
+
const outputPath = context.outputPath;
|
|
269
|
+
if (!outputPath)
|
|
270
|
+
throw new Error('Packaging requires an output path.');
|
|
271
|
+
await writeInternalMemoBundle(context.projectDir, outputPath, context.config.projectName || 'memo-project');
|
|
272
|
+
if (!existsSync(outputPath)) {
|
|
273
|
+
throw new Error(`${INTERNAL_PROVIDER_ID} completed but did not create ${outputPath}.`);
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
provider: INTERNAL_PROVIDER_ID,
|
|
277
|
+
providerVersion: internalVersion(),
|
|
278
|
+
transport: 'in-process',
|
|
279
|
+
accepted: true,
|
|
280
|
+
diagnostics: [],
|
|
281
|
+
};
|
|
282
|
+
},
|
|
283
|
+
};
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/toolchain/providers/internal.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,iBAAiB;AACjB,EAAE;AACF,gFAAgF;AAChF,iCAAiC;AACjC,uEAAuE;AACvE,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,qFAAqF;AACrF,gFAAgF;AAChF,8EAA8E;AAC9E,kDAAkD;AAClD,EAAE;AACF,6EAA6E;AAC7E,wCAAwC;AACxC,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAA0C,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAY7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,gFAAgF;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAE/C,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAO5C,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,iBAAiB,GAAc,YAAY,CAAC;AASlD,MAAM,UAAU,GAAyB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAEnE,MAAM,eAAe,GAAmC;IACpD;QACI,IAAI,EAAE,GAAG,oBAAoB,YAAY;QACzC,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,UAAU;QAClB,WAAW,EACP,4DAA4D,cAAc,mBAAmB;cAC3F,mFAAmF;cACnF,GAAG,iBAAiB,GAAG;KAChC;IACD;QACI,IAAI,EAAE,GAAG,oBAAoB,aAAa;QAC1C,IAAI,EAAE,QAAQ;QACd,WAAW,EACP,eAAe,cAAc,4DAA4D;cACvF,gCAAgC;KACzC;CACJ,CAAC;AAEF,SAAS,QAAQ,CAAC,OAAwB;IACtC,OAAO,gBAAgB,CAAqB,OAAO,CAAC,MAAM,EAAE,oBAAoB,CAAC,IAAI,EAAE,CAAC;AAC5F,CAAC;AAED,SAAS,SAAS,CAAC,OAAwB;IACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;IAC/C,OAAO,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;AAC1F,CAAC;AAED,iFAAiF;AACjF,SAAS,eAAe;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,OAAwB;IAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAChD,IAAI,UAAU;QAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAChH,MAAM,OAAO,GAAG,qBAAqB,CAAC,cAAc,EAAE;QAClD,OAAO,CAAC,UAAU;QAClB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1C,CAAC,CAAC;IACH,IAAI,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAEnD,wEAAwE;IACxE,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,OAAO,GAAG;QACZ,8DAA8D;QAC9D,aAAa,CAAC,IAAI,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,qEAAqE;QACrE,aAAa,CAAC,IAAI,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpF,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IACjE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IACzD,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAC/C,CAAC;AAED,SAAS,MAAM,CAAC,OAAwB;IACpC,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,eAAe,CAAC;QACnB,GAAG,UAAU;QACb,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU,EAAE,oBAAoB;KACnC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,QAAQ,CAAC,OAAwB;IACtC,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,YAAY,EAAE,CAAC;QACtC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC;IACpF,CAAC;IACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;YACH,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,IAAI,UAAU,CAAC,OAAO,uDAAuD;SACxF,CAAC;IACN,CAAC;IACD,OAAO;QACH,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,SAAS;QACpB,UAAU;QACV,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,eAAe,EAAE;KAC5F,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,MAA6B,EAAE,MAAwB;IAC1E,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM;QACN,QAAQ,EAAE,oBAAoB;QAC9B,eAAe,EAAE,eAAe,EAAE;QAClC,QAAQ,EAAE,wBAAwB,CAAC,MAAM,CAAC;QAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE;YAC5D,CAAC,CAAC,SAAS;KAClB,CAAC,CAAC,CAAC;AACR,CAAC;AAED,KAAK,UAAU,EAAE,CAAC,OAAwB;IACtC,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,SAAS;QACnC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AACrG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAwB;IAC5D,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,WAAW;IACjB,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,eAAe;IAC/B,KAAK,EAAE,QAAQ;IACf,MAAM,CAAC,OAAwB;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO;YACH,EAAE,EAAE,oBAAoB;YACxB,IAAI,EAAE,WAAoB;YAC1B,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,SAAS;gBAChC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBACvL,CAAC,CAAC,SAAS;YACf,KAAK,CAAC,GAAG;gBACL,iEAAiE;gBACjE,4DAA4D;gBAC5D,8DAA8D;gBAC9D,gEAAgE;gBAChE,kCAAkC;gBAClC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,KAAK,SAAS;oBACtC,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC7C,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5D,OAAO;oBACH,QAAQ,EAAE,oBAAoB;oBAC9B,eAAe,EAAE,eAAe,EAAE;oBAClC,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;oBAClC,WAAW,EAAE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD,CAAC;YACN,CAAC;SACJ,CAAC;IACN,CAAC;CACJ,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAuB;IAC1D,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;IAC/B,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,eAAe;IAC/B,KAAK,EAAE,QAAQ;IACf,MAAM,CAAC,OAAwB;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO;YACH,EAAE,EAAE,oBAAoB;YACxB,IAAI,EAAE,UAAmB;YACzB,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,SAAS;gBAChC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBACvL,CAAC,CAAC,SAAS;YACf,KAAK,CAAC,GAAG;gBACL,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;gBAClC,OAAO;oBACH,QAAQ,EAAE,oBAAoB;oBAC9B,eAAe,EAAE,eAAe,EAAE;oBAClC,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC;oBAC9D,EAAE,EAAE,OAAO;iBACd,CAAC;YACN,CAAC;SACJ,CAAC;IACN,CAAC;CACJ,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IACxD,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,CAAC,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC;IACvF,MAAM,CAAC,OAAwB;QAC3B,OAAO;YACH,EAAE,EAAE,oBAAoB;YACxB,IAAI,EAAE,SAAkB;YACxB,SAAS,EAAE,YAAqB;YAChC,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS;YAC3B,KAAK,CAAC,GAAG;gBACL,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;gBACtC,IAAI,CAAC,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACvE,MAAM,uBAAuB,CACzB,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,cAAc,CAAC,CAAC;gBAClF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,GAAG,oBAAoB,iCAAiC,UAAU,GAAG,CAAC,CAAC;gBAC3F,CAAC;gBACD,OAAO;oBACH,QAAQ,EAAE,oBAAoB;oBAC9B,eAAe,EAAE,eAAe,EAAE;oBAClC,SAAS,EAAE,YAAY;oBACvB,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,EAAE;iBAClB,CAAC;YACN,CAAC;SACJ,CAAC;IACN,CAAC;CACJ,CAAC"}
|