@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,130 @@
|
|
|
1
|
+
// ─── Provider descriptors, factory and registry ──────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Every tool MEMO runs is a plugin, including MEMO's own. There is no branch on
|
|
4
|
+
// a provider name anywhere in this file, and no union type enumerating the
|
|
5
|
+
// roster: a provider ID is a plain string, and the set of legal values is
|
|
6
|
+
// whatever has been registered.
|
|
7
|
+
//
|
|
8
|
+
// The rule that keeps it honest: *nothing outside an adapter module knows a
|
|
9
|
+
// provider's name.* Defaults are declared by the adapter (`isDefault`), not
|
|
10
|
+
// hardcoded here — otherwise `?? 'internal'` reintroduces the special case this
|
|
11
|
+
// module exists to remove. A grep test enforces the rule.
|
|
12
|
+
//
|
|
13
|
+
// Adding a provider is one new file plus one `register(...)` line.
|
|
14
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
|
+
export const PROVIDER_ROLES = ['validator', 'lowering', 'package'];
|
|
16
|
+
export class MissingToolError extends Error {
|
|
17
|
+
provider;
|
|
18
|
+
command;
|
|
19
|
+
constructor(provider, command, detail) {
|
|
20
|
+
super(`Provider "${provider}" is selected but its executable could not be run: ${detail}. `
|
|
21
|
+
+ `Configure toolchain.${provider}.executable or put "${command}" on PATH. `
|
|
22
|
+
+ `MEMO does not silently fall back to another provider.`);
|
|
23
|
+
this.provider = provider;
|
|
24
|
+
this.command = command;
|
|
25
|
+
this.name = 'MissingToolError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class UnknownProviderError extends Error {
|
|
29
|
+
constructor(role, id, registered) {
|
|
30
|
+
super(`Unknown ${role} provider "${id}". Registered ${role} providers: `
|
|
31
|
+
+ `${registered.length > 0 ? registered.join(', ') : '(none)'}.`);
|
|
32
|
+
this.name = 'UnknownProviderError';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class ProviderRegistry {
|
|
36
|
+
byRole = new Map();
|
|
37
|
+
register(descriptor) {
|
|
38
|
+
const role = this.byRole.get(descriptor.role) ?? new Map();
|
|
39
|
+
const existing = role.get(descriptor.id);
|
|
40
|
+
if (existing) {
|
|
41
|
+
throw new Error(`Provider "${descriptor.id}" is already registered for role "${descriptor.role}".`);
|
|
42
|
+
}
|
|
43
|
+
if (descriptor.isDefault) {
|
|
44
|
+
const claimed = [...role.values()].find(d => d.isDefault);
|
|
45
|
+
if (claimed) {
|
|
46
|
+
throw new Error(`Role "${descriptor.role}" already has a default provider ("${claimed.id}"); `
|
|
47
|
+
+ `"${descriptor.id}" cannot also claim it.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
role.set(descriptor.id, descriptor);
|
|
51
|
+
this.byRole.set(descriptor.role, role);
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
descriptors(role) {
|
|
55
|
+
return [...(this.byRole.get(role)?.values() ?? [])];
|
|
56
|
+
}
|
|
57
|
+
/** Every descriptor, in registration order, across all roles. */
|
|
58
|
+
all() {
|
|
59
|
+
return PROVIDER_ROLES.flatMap(role => this.descriptors(role));
|
|
60
|
+
}
|
|
61
|
+
ids(role) {
|
|
62
|
+
return this.descriptors(role).map(d => d.id);
|
|
63
|
+
}
|
|
64
|
+
/** Distinct provider IDs across every role. */
|
|
65
|
+
allIds() {
|
|
66
|
+
return [...new Set(this.all().map(d => d.id))];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The ID used when the project selects nothing for this role.
|
|
70
|
+
*
|
|
71
|
+
* Comes from whichever adapter declared `isDefault`, so core code never
|
|
72
|
+
* writes a provider name.
|
|
73
|
+
*/
|
|
74
|
+
defaultId(role) {
|
|
75
|
+
return this.descriptors(role).find(d => d.isDefault)?.id;
|
|
76
|
+
}
|
|
77
|
+
descriptor(role, id) {
|
|
78
|
+
const found = this.byRole.get(role)?.get(id);
|
|
79
|
+
if (!found)
|
|
80
|
+
throw new UnknownProviderError(role, id, this.ids(role));
|
|
81
|
+
return found;
|
|
82
|
+
}
|
|
83
|
+
has(role, id) {
|
|
84
|
+
return this.byRole.get(role)?.has(id) === true;
|
|
85
|
+
}
|
|
86
|
+
resolveValidator(id, context) {
|
|
87
|
+
return this.descriptor('validator', id).create(context);
|
|
88
|
+
}
|
|
89
|
+
resolveLowering(id, context) {
|
|
90
|
+
return this.descriptor('lowering', id).create(context);
|
|
91
|
+
}
|
|
92
|
+
resolvePackager(id, context) {
|
|
93
|
+
return this.descriptor('package', id).create(context);
|
|
94
|
+
}
|
|
95
|
+
/** Every configurable leaf, role selection first, then per-provider settings. */
|
|
96
|
+
schema() {
|
|
97
|
+
const leaves = PROVIDER_ROLES.map(role => ({
|
|
98
|
+
path: ROLE_SETTING[role],
|
|
99
|
+
type: 'enum',
|
|
100
|
+
values: this.ids(role),
|
|
101
|
+
description: `Provider for the ${role} role.`,
|
|
102
|
+
}));
|
|
103
|
+
leaves.push({
|
|
104
|
+
path: DEPRECATED_COMPILER_SETTING,
|
|
105
|
+
type: 'enum',
|
|
106
|
+
values: this.ids('validator'),
|
|
107
|
+
description: 'Deprecated alias. Sets both toolchain.validator and toolchain.lowering.',
|
|
108
|
+
deprecated: `Use toolchain.${ROLE_SETTING.validator} and toolchain.${ROLE_SETTING.lowering}.`,
|
|
109
|
+
});
|
|
110
|
+
const seen = new Set();
|
|
111
|
+
for (const descriptor of this.all()) {
|
|
112
|
+
for (const leaf of descriptor.settingsSchema ?? []) {
|
|
113
|
+
if (seen.has(leaf.path))
|
|
114
|
+
continue;
|
|
115
|
+
seen.add(leaf.path);
|
|
116
|
+
leaves.push({ ...leaf, provider: leaf.provider ?? descriptor.id });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return leaves;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** Settings key naming each role. Roles are MEMO's own vocabulary, not a tool's. */
|
|
123
|
+
export const ROLE_SETTING = {
|
|
124
|
+
validator: 'validator',
|
|
125
|
+
lowering: 'lowering',
|
|
126
|
+
package: 'packager',
|
|
127
|
+
};
|
|
128
|
+
/** Kept readable by every command that reports the deprecation. */
|
|
129
|
+
export const DEPRECATED_COMPILER_SETTING = 'compiler';
|
|
130
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/toolchain/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Command } from 'commander';
|
|
2
|
+
import type { MEMOConfig, ToolchainConfig } from '../model/config.js';
|
|
3
|
+
import type { ProviderRegistry, ToolchainSchemaLeaf } from './registry.js';
|
|
4
|
+
/** `toolchain.syside.executable` — the option name and the settings path. */
|
|
5
|
+
export declare function toolchainOptionName(leaf: ToolchainSchemaLeaf): string;
|
|
6
|
+
/** The flag string commander is given, e.g. `--toolchain.syside.executable <value>`. */
|
|
7
|
+
export declare function toolchainOptionFlag(leaf: ToolchainSchemaLeaf): string;
|
|
8
|
+
/**
|
|
9
|
+
* Add every generated option to a command.
|
|
10
|
+
*
|
|
11
|
+
* Commander stores an option whose name contains dots under that exact key —
|
|
12
|
+
* it only camel-cases across dashes — so `opts()['toolchain.syside.executable']`
|
|
13
|
+
* is what comes back, and the settings path is recoverable without a lookup
|
|
14
|
+
* table that could drift from the schema.
|
|
15
|
+
*/
|
|
16
|
+
export declare function applyToolchainCliOptions(command: Command, registry: ProviderRegistry): Command;
|
|
17
|
+
export declare class ToolchainOptionError extends Error {
|
|
18
|
+
}
|
|
19
|
+
/** Turn parsed CLI options into a partial `toolchain` block. */
|
|
20
|
+
export declare function toolchainOverridesFromCliOptions(options: Record<string, unknown>, registry: ProviderRegistry): ToolchainConfig;
|
|
21
|
+
/**
|
|
22
|
+
* Apply overrides on top of loaded settings.
|
|
23
|
+
*
|
|
24
|
+
* A flag beats the settings file leaf by leaf, so `--toolchain.syside.diagnose`
|
|
25
|
+
* does not discard a configured `--toolchain.syside.executable`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function applyToolchainOverrides(config: MEMOConfig, overrides: ToolchainConfig): MEMOConfig;
|
|
28
|
+
/** Convenience for a command: read its options, merge, hand back settings. */
|
|
29
|
+
export declare function withToolchainOverrides(config: MEMOConfig, options: Record<string, unknown>, registry: ProviderRegistry): MEMOConfig;
|
|
30
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/toolchain/schema.ts"],"names":[],"mappings":"AAYA,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE3E,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAErE;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAKrE;AAQD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAY9F;AAED,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAkBlD,gEAAgE;AAChE,wBAAgB,gCAAgC,CAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,gBAAgB,GAC3B,eAAe,CAQjB;AAaD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,GAAG,UAAU,CAUlG;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,gBAAgB,GAC3B,UAAU,CAEZ"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// ─── `--toolchain.*` options, generated from the schema ──────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Every leaf under `toolchain.*` gets a CLI option, and it gets it by being in
|
|
4
|
+
// the schema — not by someone remembering to add a flag. A provider that
|
|
5
|
+
// contributes a settings leaf gets its flag for free, which is what makes
|
|
6
|
+
// "adding a provider touches one file" true of the CLI as well.
|
|
7
|
+
//
|
|
8
|
+
// Deliberately *only* the toolchain subtree. Whole-config CLI generation, an
|
|
9
|
+
// env-var layer, `--unset`, and array append/replace policy are all out of
|
|
10
|
+
// scope here.
|
|
11
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
12
|
+
import { Option } from 'commander';
|
|
13
|
+
/** `toolchain.syside.executable` — the option name and the settings path. */
|
|
14
|
+
export function toolchainOptionName(leaf) {
|
|
15
|
+
return `toolchain.${leaf.path}`;
|
|
16
|
+
}
|
|
17
|
+
/** The flag string commander is given, e.g. `--toolchain.syside.executable <value>`. */
|
|
18
|
+
export function toolchainOptionFlag(leaf) {
|
|
19
|
+
const placeholder = leaf.type === 'boolean' ? '<true|false>'
|
|
20
|
+
: leaf.type === 'enum' ? `<${(leaf.values ?? []).join('|') || 'value'}>`
|
|
21
|
+
: '<value>';
|
|
22
|
+
return `--${toolchainOptionName(leaf)} ${placeholder}`;
|
|
23
|
+
}
|
|
24
|
+
function optionDescription(leaf) {
|
|
25
|
+
const parts = [leaf.description];
|
|
26
|
+
if (leaf.deprecated)
|
|
27
|
+
parts.push(`(deprecated: ${leaf.deprecated})`);
|
|
28
|
+
return parts.join(' ');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Add every generated option to a command.
|
|
32
|
+
*
|
|
33
|
+
* Commander stores an option whose name contains dots under that exact key —
|
|
34
|
+
* it only camel-cases across dashes — so `opts()['toolchain.syside.executable']`
|
|
35
|
+
* is what comes back, and the settings path is recoverable without a lookup
|
|
36
|
+
* table that could drift from the schema.
|
|
37
|
+
*/
|
|
38
|
+
export function applyToolchainCliOptions(command, registry) {
|
|
39
|
+
for (const leaf of registry.schema()) {
|
|
40
|
+
const option = new Option(toolchainOptionFlag(leaf), optionDescription(leaf));
|
|
41
|
+
// Let commander reject a bad value at parse time, with its own message
|
|
42
|
+
// and exit code. The roster it prints comes from the registry, so
|
|
43
|
+
// `--toolchain.validator=nope` lists what is actually registered rather
|
|
44
|
+
// than a stack trace or a copy of the roster written down here.
|
|
45
|
+
const choices = leaf.type === 'boolean' ? ['true', 'false'] : leaf.values;
|
|
46
|
+
if (choices)
|
|
47
|
+
option.choices([...choices]);
|
|
48
|
+
command.addOption(option);
|
|
49
|
+
}
|
|
50
|
+
return command;
|
|
51
|
+
}
|
|
52
|
+
export class ToolchainOptionError extends Error {
|
|
53
|
+
}
|
|
54
|
+
function coerce(leaf, raw) {
|
|
55
|
+
if (leaf.type === 'boolean') {
|
|
56
|
+
if (raw === 'true')
|
|
57
|
+
return true;
|
|
58
|
+
if (raw === 'false')
|
|
59
|
+
return false;
|
|
60
|
+
throw new ToolchainOptionError(`--${toolchainOptionName(leaf)} expects true or false, got "${raw}".`);
|
|
61
|
+
}
|
|
62
|
+
if (leaf.type === 'enum' && leaf.values && !leaf.values.includes(raw)) {
|
|
63
|
+
// A role leaf's values are the registered providers, so this message is
|
|
64
|
+
// the live roster and not a copy of one.
|
|
65
|
+
throw new ToolchainOptionError(`--${toolchainOptionName(leaf)} expects one of ${leaf.values.join(', ')}, got "${raw}".`);
|
|
66
|
+
}
|
|
67
|
+
return raw;
|
|
68
|
+
}
|
|
69
|
+
/** Turn parsed CLI options into a partial `toolchain` block. */
|
|
70
|
+
export function toolchainOverridesFromCliOptions(options, registry) {
|
|
71
|
+
const overrides = {};
|
|
72
|
+
for (const leaf of registry.schema()) {
|
|
73
|
+
const raw = options[toolchainOptionName(leaf)];
|
|
74
|
+
if (raw === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
setPath(overrides, leaf.path, coerce(leaf, String(raw)));
|
|
77
|
+
}
|
|
78
|
+
return overrides;
|
|
79
|
+
}
|
|
80
|
+
function setPath(target, path, value) {
|
|
81
|
+
const segments = path.split('.');
|
|
82
|
+
let cursor = target;
|
|
83
|
+
for (const segment of segments.slice(0, -1)) {
|
|
84
|
+
const next = cursor[segment];
|
|
85
|
+
cursor[segment] = next && typeof next === 'object' ? next : {};
|
|
86
|
+
cursor = cursor[segment];
|
|
87
|
+
}
|
|
88
|
+
cursor[segments[segments.length - 1]] = value;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Apply overrides on top of loaded settings.
|
|
92
|
+
*
|
|
93
|
+
* A flag beats the settings file leaf by leaf, so `--toolchain.syside.diagnose`
|
|
94
|
+
* does not discard a configured `--toolchain.syside.executable`.
|
|
95
|
+
*/
|
|
96
|
+
export function applyToolchainOverrides(config, overrides) {
|
|
97
|
+
if (Object.keys(overrides).length === 0)
|
|
98
|
+
return config;
|
|
99
|
+
const merged = { ...(config.toolchain ?? {}) };
|
|
100
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
101
|
+
const existing = merged[key];
|
|
102
|
+
merged[key] = value && typeof value === 'object' && existing && typeof existing === 'object'
|
|
103
|
+
? { ...existing, ...value }
|
|
104
|
+
: value;
|
|
105
|
+
}
|
|
106
|
+
return { ...config, toolchain: merged };
|
|
107
|
+
}
|
|
108
|
+
/** Convenience for a command: read its options, merge, hand back settings. */
|
|
109
|
+
export function withToolchainOverrides(config, options, registry) {
|
|
110
|
+
return applyToolchainOverrides(config, toolchainOverridesFromCliOptions(options, registry));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/toolchain/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type MemoIr, type ProtocolCapability } from './protocol.js';
|
|
2
|
+
export interface SysmlcClientOptions {
|
|
3
|
+
/** Executable to run, already resolved by the adapter. */
|
|
4
|
+
command: string;
|
|
5
|
+
/** Extra arguments before `serve --stdio`, e.g. a node script path. */
|
|
6
|
+
args?: readonly string[];
|
|
7
|
+
projectDir: string;
|
|
8
|
+
/** Provider ID, used only to make a missing-tool error name the right thing. */
|
|
9
|
+
providerId: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A live compiler process.
|
|
13
|
+
*
|
|
14
|
+
* The handshake is standard LSP. The one thing checked beyond it is the
|
|
15
|
+
* protocol version the server advertises, because a boundary that is not
|
|
16
|
+
* checked is a boundary that silently is not one.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SysmlcClient {
|
|
19
|
+
private readonly options;
|
|
20
|
+
private child?;
|
|
21
|
+
private connection?;
|
|
22
|
+
private starting?;
|
|
23
|
+
private revision;
|
|
24
|
+
/**
|
|
25
|
+
* In-flight requests, with the source selector each one asked about.
|
|
26
|
+
*
|
|
27
|
+
* The selector is not bookkeeping: supersession resolves by waiting for a
|
|
28
|
+
* newer in-flight request, and that is only the same answer when the newer
|
|
29
|
+
* request asked the same question. Two requests against one project with
|
|
30
|
+
* different file sets are different questions.
|
|
31
|
+
*/
|
|
32
|
+
private readonly pending;
|
|
33
|
+
private capability?;
|
|
34
|
+
private disposed;
|
|
35
|
+
constructor(options: SysmlcClientOptions);
|
|
36
|
+
/** What the server said about itself, once the handshake has happened. */
|
|
37
|
+
get serverCapability(): ProtocolCapability | undefined;
|
|
38
|
+
private start;
|
|
39
|
+
private spawnAndHandshake;
|
|
40
|
+
private forget;
|
|
41
|
+
/**
|
|
42
|
+
* Keep the event loop alive only while a request is outstanding.
|
|
43
|
+
*
|
|
44
|
+
* Without this a one-shot `memo` command would hang on a server that is
|
|
45
|
+
* perfectly healthy and simply still running. The server survives between
|
|
46
|
+
* commands within one process — which is the point — but it never becomes
|
|
47
|
+
* the reason the process will not exit.
|
|
48
|
+
*/
|
|
49
|
+
private idle;
|
|
50
|
+
private active;
|
|
51
|
+
/**
|
|
52
|
+
* Child stdio are pipes, and a pipe holds the event loop open. Node types
|
|
53
|
+
* them as plain streams, so the ref/unref every pipe actually has is
|
|
54
|
+
* reached by feature test rather than by cast.
|
|
55
|
+
*/
|
|
56
|
+
private holdStreams;
|
|
57
|
+
/**
|
|
58
|
+
* Ask for the IR of the current revision.
|
|
59
|
+
*
|
|
60
|
+
* Every call takes a new revision token. If a newer one overtakes it while
|
|
61
|
+
* the server is working, the server refuses to answer with the older result
|
|
62
|
+
* and says which revision superseded it — and this method then waits for
|
|
63
|
+
* *that* answer. The caller cannot be handed a stale model; the worst case
|
|
64
|
+
* is that it waits slightly longer for a fresher one.
|
|
65
|
+
*
|
|
66
|
+
* `files` narrows the request to an explicit source list (protocol 1.1.0).
|
|
67
|
+
* Omitted, the server lowers the project — which is what every caller but
|
|
68
|
+
* conformance wants.
|
|
69
|
+
*/
|
|
70
|
+
emitIr(files?: readonly string[]): Promise<MemoIr>;
|
|
71
|
+
private send;
|
|
72
|
+
dispose(): Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
export declare function getSysmlcClient(options: SysmlcClientOptions): SysmlcClient;
|
|
75
|
+
/** Shut every pooled server down. Long-running hosts call this on teardown. */
|
|
76
|
+
export declare function disposeSysmlcClients(): Promise<void>;
|
|
77
|
+
//# sourceMappingURL=sysmlc-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sysmlc-client.d.ts","sourceRoot":"","sources":["../../src/toolchain/sysmlc-client.ts"],"names":[],"mappings":"AAqBA,OAAO,EAMH,KAAK,MAAM,EACX,KAAK,kBAAkB,EAC1B,MAAM,eAAe,CAAC;AA8BvB,MAAM,WAAW,mBAAmB;IAChC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IAiBT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhBpC,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,UAAU,CAAC,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,CAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAK;IACrB;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoE;IAC5F,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAS;gBAEI,OAAO,EAAE,mBAAmB;IAEzD,0EAA0E;IAC1E,IAAI,gBAAgB,IAAI,kBAAkB,GAAG,SAAS,CAErD;IAED,OAAO,CAAC,KAAK;YASC,iBAAiB;IAkD/B,OAAO,CAAC,MAAM;IAMd;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,MAAM;IAKd;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAa1C,IAAI;IAqBZ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAkBjC;AAQD,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAO1E;AAED,+EAA+E;AAC/E,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1D"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sysmlc-client.js","sourceRoot":"","sources":["../../src/toolchain/sysmlc-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MemoModel } from '../model/semantic.js';
|
|
2
|
+
import type { Violation } from './types.js';
|
|
3
|
+
import type { KindRegistry } from '../model/kind-registry.js';
|
|
4
|
+
/**
|
|
5
|
+
* Warn on a structural part nested in another part when neither it nor a
|
|
6
|
+
* descendant has a modeled IBD connector. A warning, rather than an error,
|
|
7
|
+
* preserves legitimate passive or intentionally isolated components while
|
|
8
|
+
* making omitted interfaces visible in Memo Architect's Problems panel.
|
|
9
|
+
*
|
|
10
|
+
* The SUBJECT SCOPE is ontology-driven: `appliesToKind` is the rule's declared
|
|
11
|
+
* `appliesTo` from AR-IBD-001 in the ontology, and only kinds conforming to it
|
|
12
|
+
* are judged. Narrowing or widening the rule is therefore an ontology edit, not
|
|
13
|
+
* a code edit — this file holds the graph walk, never the list of kinds it
|
|
14
|
+
* applies to. Omitting the argument judges every part.
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateArchitecture(model: MemoModel, appliesToKind?: string, kindRegistry?: KindRegistry): Violation[];
|
|
17
|
+
//# sourceMappingURL=architecture-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture-validator.d.ts","sourceRoot":"","sources":["../../src/validator/architecture-validator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAQ9D;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,SAAS,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,YAAY,CAAC,EAAE,YAAY,GAC5B,SAAS,EAAE,CAuEb"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// ─── Architecture Validator ─────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Graph rules for structural parts. These sit beside the native constraint
|
|
4
|
+
// evaluator because they need to inspect containment and connector topology
|
|
5
|
+
// together — a single-subject KerML navigation cannot tell a composition edge
|
|
6
|
+
// from a connector owned by one of a part's descendants.
|
|
7
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
8
|
+
const COMPOSITION_TYPES = new Set(['composes', 'composedof', 'decomposedby', 'aggregation']);
|
|
9
|
+
// These are interface/flow relations. Trace, allocation, deployment, and
|
|
10
|
+
// satisfaction links are meaningful model relations, but do not make a block
|
|
11
|
+
// connected in an internal block diagram.
|
|
12
|
+
const CONNECTOR_TYPES = new Set(['exchangeswith', 'flow', 'logicalexchange', 'logicalconnector', 'connectsto', 'itemflow']);
|
|
13
|
+
/**
|
|
14
|
+
* Warn on a structural part nested in another part when neither it nor a
|
|
15
|
+
* descendant has a modeled IBD connector. A warning, rather than an error,
|
|
16
|
+
* preserves legitimate passive or intentionally isolated components while
|
|
17
|
+
* making omitted interfaces visible in Memo Architect's Problems panel.
|
|
18
|
+
*
|
|
19
|
+
* The SUBJECT SCOPE is ontology-driven: `appliesToKind` is the rule's declared
|
|
20
|
+
* `appliesTo` from AR-IBD-001 in the ontology, and only kinds conforming to it
|
|
21
|
+
* are judged. Narrowing or widening the rule is therefore an ontology edit, not
|
|
22
|
+
* a code edit — this file holds the graph walk, never the list of kinds it
|
|
23
|
+
* applies to. Omitting the argument judges every part.
|
|
24
|
+
*/
|
|
25
|
+
export function validateArchitecture(model, appliesToKind, kindRegistry) {
|
|
26
|
+
// Kinds conforming to the ontology-declared subject, walked through the
|
|
27
|
+
// registry's supertype chain. Unresolvable scope falls back to every part
|
|
28
|
+
// rather than silently judging nothing.
|
|
29
|
+
const inScope = (element) => {
|
|
30
|
+
if (!appliesToKind || !kindRegistry)
|
|
31
|
+
return true;
|
|
32
|
+
let name = element.kind;
|
|
33
|
+
const seen = new Set();
|
|
34
|
+
while (name && !seen.has(name)) {
|
|
35
|
+
if (name === appliesToKind)
|
|
36
|
+
return true;
|
|
37
|
+
seen.add(name);
|
|
38
|
+
name = kindRegistry.getKind(name)?.superType;
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
};
|
|
42
|
+
const parentOf = new Map();
|
|
43
|
+
for (const rel of model.relationships) {
|
|
44
|
+
if (COMPOSITION_TYPES.has(rel.type.toLowerCase()))
|
|
45
|
+
parentOf.set(rel.targetId, rel.sourceId);
|
|
46
|
+
}
|
|
47
|
+
const partOfEndpoint = (id) => {
|
|
48
|
+
let current = model.elements.get(id);
|
|
49
|
+
const seen = new Set();
|
|
50
|
+
while (current && !seen.has(current.id)) {
|
|
51
|
+
if (current.construct === 'part')
|
|
52
|
+
return current.id;
|
|
53
|
+
seen.add(current.id);
|
|
54
|
+
current = model.elements.get(current.owner ?? parentOf.get(current.id) ?? '');
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
};
|
|
58
|
+
const connected = new Set();
|
|
59
|
+
const markAncestors = (partId) => {
|
|
60
|
+
let current = partId;
|
|
61
|
+
const seen = new Set();
|
|
62
|
+
while (current && !seen.has(current)) {
|
|
63
|
+
connected.add(current);
|
|
64
|
+
seen.add(current);
|
|
65
|
+
current = parentOf.get(current);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
for (const rel of model.relationships) {
|
|
69
|
+
if (!CONNECTOR_TYPES.has(rel.type.toLowerCase()))
|
|
70
|
+
continue;
|
|
71
|
+
const sourcePart = partOfEndpoint(rel.sourceId);
|
|
72
|
+
const targetPart = partOfEndpoint(rel.targetId);
|
|
73
|
+
if (!sourcePart || !targetPart || sourcePart === targetPart)
|
|
74
|
+
continue;
|
|
75
|
+
markAncestors(sourcePart);
|
|
76
|
+
markAncestors(targetPart);
|
|
77
|
+
}
|
|
78
|
+
const violations = [];
|
|
79
|
+
for (const element of model.elements.values()) {
|
|
80
|
+
if (element.construct !== 'part')
|
|
81
|
+
continue;
|
|
82
|
+
if (!inScope(element))
|
|
83
|
+
continue;
|
|
84
|
+
// The root context block has no owning part, and therefore cannot be
|
|
85
|
+
// judged for isolation within a parent composition.
|
|
86
|
+
const parentId = parentOf.get(element.id);
|
|
87
|
+
if (!parentId || !model.elements.get(parentId) || connected.has(element.id))
|
|
88
|
+
continue;
|
|
89
|
+
violations.push({
|
|
90
|
+
ruleId: 'AR-IBD-001',
|
|
91
|
+
description: `Part "${element.name}" has no modeled interface connector within "${model.elements.get(parentId).name}"`,
|
|
92
|
+
severity: 'warning',
|
|
93
|
+
elementId: element.id,
|
|
94
|
+
elementKind: element.kind,
|
|
95
|
+
elementName: element.name,
|
|
96
|
+
layer: element.layer,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return violations;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=architecture-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture-validator.js","sourceRoot":"","sources":["../../src/validator/architecture-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { RuleSeverity } from '../model/methodology-resolver.js';
|
|
2
|
+
export interface BuiltinRule {
|
|
3
|
+
id: string;
|
|
4
|
+
/** What the rule is called, for parity with a `constraint def` name. */
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
severity: RuleSeverity;
|
|
8
|
+
/** Which built-in validator implements it. */
|
|
9
|
+
validator: 'behavior' | 'architecture' | 'views';
|
|
10
|
+
/** Always false: a policy cannot reference a rule that has no def name. */
|
|
11
|
+
tailorable: false;
|
|
12
|
+
}
|
|
13
|
+
export declare const BUILTIN_RULES: readonly BuiltinRule[];
|
|
14
|
+
/** Rule IDs the built-in validators can raise. */
|
|
15
|
+
export declare const BUILTIN_RULE_IDS: readonly string[];
|
|
16
|
+
//# sourceMappingURL=builtin-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-rules.d.ts","sourceRoot":"","sources":["../../src/validator/builtin-rules.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,8CAA8C;IAC9C,SAAS,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IACjD,2EAA2E;IAC3E,UAAU,EAAE,KAAK,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EA+B/C,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAAuC,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// ─── Built-in rules ───────────────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// The rules implemented in TypeScript rather than declared as `constraint def`.
|
|
4
|
+
//
|
|
5
|
+
// They exist because their predicates are not expressible in the KerML subset
|
|
6
|
+
// the constraint grammar accepts — which is the section 4.1 Option P boundary,
|
|
7
|
+
// not a shortcut. What they are NOT is invisible: a rule that evaluates against
|
|
8
|
+
// a user's model and can raise a violation has to be nameable, countable, and
|
|
9
|
+
// reportable next to every other rule.
|
|
10
|
+
//
|
|
11
|
+
// This list is the single source of that truth. `rulesEvaluated` was
|
|
12
|
+
// `6 + nativeConstraints.length` — a literal with no way to stay correct — and
|
|
13
|
+
// `memo rules list` did not know these rules existed at all, so the two
|
|
14
|
+
// commands reported different totals for the same project.
|
|
15
|
+
//
|
|
16
|
+
// Built-in rules are NOT tailorable. A `RulePolicy` references a rule by its
|
|
17
|
+
// `constraint def` name and these have none, so they cannot be disabled,
|
|
18
|
+
// replaced, or severity-overridden by a methodology. That is a real limitation,
|
|
19
|
+
// reported rather than hidden: see `tailorable: false` below.
|
|
20
|
+
//
|
|
21
|
+
// AR-IBD-001 is deliberately NOT here. It is declared as a `constraint def` in
|
|
22
|
+
// the ontology and carries `evaluator = "architecture"`, so a TypeScript
|
|
23
|
+
// function computes its predicate while the rule itself remains a first-class,
|
|
24
|
+
// tailorable member of the native set. "Evaluated by a built-in function" and
|
|
25
|
+
// "has no declaration to tailor" are different properties, and only the second
|
|
26
|
+
// puts a rule on this list. Conflating them double-counted it.
|
|
27
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
28
|
+
export const BUILTIN_RULES = [
|
|
29
|
+
{
|
|
30
|
+
id: 'BV-001', name: 'ActionAllocatedRule', validator: 'behavior', severity: 'warning',
|
|
31
|
+
tailorable: false,
|
|
32
|
+
description: 'An action usage is allocated to a structural element.',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: 'BV-002', name: 'ActionSequencedRule', validator: 'behavior', severity: 'warning',
|
|
36
|
+
tailorable: false,
|
|
37
|
+
description: 'An action participates in a succession or flow.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'BV-003', name: 'BehaviorReferenceResolvableRule', validator: 'behavior', severity: 'error',
|
|
41
|
+
tailorable: false,
|
|
42
|
+
description: 'A succession or flow references an action that exists.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: 'VW-001', name: 'ViewExposesContentRule', validator: 'views', severity: 'warning',
|
|
46
|
+
tailorable: false,
|
|
47
|
+
description: 'A view exposes at least one model element.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: 'VW-002', name: 'ViewRenderableRule', validator: 'views', severity: 'warning',
|
|
51
|
+
tailorable: false,
|
|
52
|
+
description: 'A view declares enough presentation metadata to render.',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: 'VW-003', name: 'ViewConformsToViewpointRule', validator: 'views', severity: 'error',
|
|
56
|
+
tailorable: false,
|
|
57
|
+
description: 'A view conforms to at least one viewpoint through viewpointDefinition.',
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
/** Rule IDs the built-in validators can raise. */
|
|
61
|
+
export const BUILTIN_RULE_IDS = BUILTIN_RULES.map(rule => rule.id);
|
|
62
|
+
//# sourceMappingURL=builtin-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-rules.js","sourceRoot":"","sources":["../../src/validator/builtin-rules.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,uCAAuC;AACvC,EAAE;AACF,qEAAqE;AACrE,+EAA+E;AAC/E,wEAAwE;AACxE,2DAA2D;AAC3D,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,gFAAgF;AAChF,8DAA8D;AAC9D,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,+DAA+D;AAC/D,gFAAgF;AAgBhF,MAAM,CAAC,MAAM,aAAa,GAA2B;IACjD;QACI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS;QACrF,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,uDAAuD;KACvE;IACD;QACI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS;QACrF,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,iDAAiD;KACjE;IACD;QACI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,iCAAiC,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO;QAC/F,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,wDAAwD;KACxE;IACD;QACI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS;QACrF,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,4CAA4C;KAC5D;IACD;QACI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS;QACjF,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,yDAAyD;KACzE;IACD;QACI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,6BAA6B,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;QACxF,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,wEAAwE;KACxF;CACJ,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAsB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC"}
|