@memoarchitect/tools 0.13.0 → 0.15.0
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 +40 -26
- package/corpus/README.md +20 -36
- package/package.json +9 -10
- package/packages/tools/lib/analysis/impact.d.ts +30 -0
- package/packages/tools/lib/analysis/impact.d.ts.map +1 -1
- package/packages/tools/lib/analysis/impact.js +47 -74
- package/packages/tools/lib/analysis/impact.js.map +1 -1
- package/packages/tools/lib/analysis/interfaces-between.d.ts +36 -0
- package/packages/tools/lib/analysis/interfaces-between.d.ts.map +1 -0
- package/packages/tools/lib/analysis/interfaces-between.js +66 -0
- package/packages/tools/lib/analysis/interfaces-between.js.map +1 -0
- package/packages/tools/lib/analysis/suspect-links.d.ts +45 -0
- package/packages/tools/lib/analysis/suspect-links.d.ts.map +1 -0
- package/packages/tools/lib/analysis/suspect-links.js +66 -0
- package/packages/tools/lib/analysis/suspect-links.js.map +1 -0
- package/packages/tools/lib/analysis-starters.d.ts +2 -0
- package/packages/tools/lib/analysis-starters.d.ts.map +1 -1
- package/packages/tools/lib/analysis-starters.js +73 -68
- package/packages/tools/lib/analysis-starters.js.map +1 -1
- package/packages/tools/lib/authoring/outline-identity.d.ts +34 -0
- package/packages/tools/lib/authoring/outline-identity.d.ts.map +1 -0
- package/packages/tools/lib/authoring/outline-identity.js +95 -0
- package/packages/tools/lib/authoring/outline-identity.js.map +1 -0
- package/packages/tools/lib/authoring/outline-source.d.ts +57 -0
- package/packages/tools/lib/authoring/outline-source.d.ts.map +1 -0
- package/packages/tools/lib/authoring/outline-source.js +203 -0
- package/packages/tools/lib/authoring/outline-source.js.map +1 -0
- package/packages/tools/lib/authoring/source-outline.d.ts +82 -0
- package/packages/tools/lib/authoring/source-outline.d.ts.map +1 -0
- package/packages/tools/lib/authoring/source-outline.js +267 -0
- package/packages/tools/lib/authoring/source-outline.js.map +1 -0
- package/packages/tools/lib/bin/memo.js +181 -632
- package/packages/tools/lib/bin/memo.js.map +1 -1
- package/packages/tools/lib/browser/index.d.ts +12 -0
- package/packages/tools/lib/browser/index.d.ts.map +1 -1
- package/packages/tools/lib/browser/index.js +8 -0
- package/packages/tools/lib/browser/index.js.map +1 -1
- package/packages/tools/lib/cli/project-commands.d.ts +3 -0
- package/packages/tools/lib/cli/project-commands.d.ts.map +1 -0
- package/packages/tools/lib/cli/project-commands.js +577 -0
- package/packages/tools/lib/cli/project-commands.js.map +1 -0
- package/packages/tools/lib/commands/ask.d.ts.map +1 -1
- package/packages/tools/lib/commands/ask.js +10 -18
- package/packages/tools/lib/commands/ask.js.map +1 -1
- package/packages/tools/lib/commands/compile.d.ts +18 -0
- package/packages/tools/lib/commands/compile.d.ts.map +1 -0
- package/packages/tools/lib/commands/compile.js +122 -0
- package/packages/tools/lib/commands/compile.js.map +1 -0
- package/packages/tools/lib/commands/convert.js +2 -2
- package/packages/tools/lib/commands/convert.js.map +1 -1
- package/packages/tools/lib/commands/create-package.js +4 -4
- package/packages/tools/lib/commands/create-package.js.map +1 -1
- package/packages/tools/lib/commands/dev.d.ts +20 -2
- package/packages/tools/lib/commands/dev.d.ts.map +1 -1
- package/packages/tools/lib/commands/dev.js +386 -97
- package/packages/tools/lib/commands/dev.js.map +1 -1
- package/packages/tools/lib/commands/dhf-draft.d.ts.map +1 -1
- package/packages/tools/lib/commands/dhf-draft.js +7 -16
- package/packages/tools/lib/commands/dhf-draft.js.map +1 -1
- package/packages/tools/lib/commands/dhf-init.js +3 -3
- package/packages/tools/lib/commands/dhf-init.js.map +1 -1
- package/packages/tools/lib/commands/dhf-lint.d.ts.map +1 -1
- package/packages/tools/lib/commands/dhf-lint.js +4 -3
- package/packages/tools/lib/commands/dhf-lint.js.map +1 -1
- package/packages/tools/lib/commands/dhf-preview.d.ts.map +1 -1
- package/packages/tools/lib/commands/dhf-preview.js +5 -26
- package/packages/tools/lib/commands/dhf-preview.js.map +1 -1
- package/packages/tools/lib/commands/dhf.d.ts +4 -0
- package/packages/tools/lib/commands/dhf.d.ts.map +1 -1
- package/packages/tools/lib/commands/dhf.js +77 -31
- package/packages/tools/lib/commands/dhf.js.map +1 -1
- package/packages/tools/lib/commands/element.d.ts.map +1 -1
- package/packages/tools/lib/commands/element.js +44 -6
- package/packages/tools/lib/commands/element.js.map +1 -1
- package/packages/tools/lib/commands/export.d.ts +1 -1
- package/packages/tools/lib/commands/export.d.ts.map +1 -1
- package/packages/tools/lib/commands/export.js +25 -18
- 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 -30
- package/packages/tools/lib/commands/generate.js.map +1 -1
- package/packages/tools/lib/commands/ids-rebase.d.ts +15 -0
- package/packages/tools/lib/commands/ids-rebase.d.ts.map +1 -0
- package/packages/tools/lib/commands/ids-rebase.js +133 -0
- package/packages/tools/lib/commands/ids-rebase.js.map +1 -0
- package/packages/tools/lib/commands/import-ea.d.ts +3 -3
- package/packages/tools/lib/commands/import-ea.d.ts.map +1 -1
- package/packages/tools/lib/commands/import-ea.js +12 -9
- package/packages/tools/lib/commands/import-ea.js.map +1 -1
- package/packages/tools/lib/commands/import-owl.d.ts +1 -1
- package/packages/tools/lib/commands/import-owl.js +2 -2
- package/packages/tools/lib/commands/import-owl.js.map +1 -1
- package/packages/tools/lib/commands/import-sysand.d.ts +1 -1
- package/packages/tools/lib/commands/import-sysand.d.ts.map +1 -1
- package/packages/tools/lib/commands/import-sysand.js +15 -6
- package/packages/tools/lib/commands/import-sysand.js.map +1 -1
- package/packages/tools/lib/commands/import.d.ts +13 -0
- package/packages/tools/lib/commands/import.d.ts.map +1 -1
- package/packages/tools/lib/commands/import.js +89 -29
- package/packages/tools/lib/commands/import.js.map +1 -1
- package/packages/tools/lib/commands/init.d.ts +0 -8
- package/packages/tools/lib/commands/init.d.ts.map +1 -1
- package/packages/tools/lib/commands/init.js +56 -51
- package/packages/tools/lib/commands/init.js.map +1 -1
- package/packages/tools/lib/commands/inspect.d.ts.map +1 -1
- package/packages/tools/lib/commands/inspect.js +22 -15
- package/packages/tools/lib/commands/inspect.js.map +1 -1
- package/packages/tools/lib/commands/install.d.ts.map +1 -1
- package/packages/tools/lib/commands/install.js +9 -6
- package/packages/tools/lib/commands/install.js.map +1 -1
- package/packages/tools/lib/commands/interfaces.d.ts +8 -0
- package/packages/tools/lib/commands/interfaces.d.ts.map +1 -0
- package/packages/tools/lib/commands/interfaces.js +71 -0
- package/packages/tools/lib/commands/interfaces.js.map +1 -0
- package/packages/tools/lib/commands/lock.d.ts.map +1 -1
- package/packages/tools/lib/commands/lock.js +13 -6
- package/packages/tools/lib/commands/lock.js.map +1 -1
- package/packages/tools/lib/commands/mcp.js +7 -7
- package/packages/tools/lib/commands/mcp.js.map +1 -1
- package/packages/tools/lib/commands/migrate-layout.d.ts +5 -0
- package/packages/tools/lib/commands/migrate-layout.d.ts.map +1 -0
- package/packages/tools/lib/commands/migrate-layout.js +90 -0
- package/packages/tools/lib/commands/migrate-layout.js.map +1 -0
- package/packages/tools/lib/commands/ontology.d.ts.map +1 -1
- package/packages/tools/lib/commands/ontology.js +26 -22
- package/packages/tools/lib/commands/ontology.js.map +1 -1
- package/packages/tools/lib/commands/pack.d.ts.map +1 -1
- package/packages/tools/lib/commands/pack.js +14 -9
- package/packages/tools/lib/commands/pack.js.map +1 -1
- package/packages/tools/lib/commands/pinned-target.d.ts +12 -0
- package/packages/tools/lib/commands/pinned-target.d.ts.map +1 -0
- package/packages/tools/lib/commands/pinned-target.js +74 -0
- package/packages/tools/lib/commands/pinned-target.js.map +1 -0
- package/packages/tools/lib/commands/plugin.d.ts.map +1 -1
- package/packages/tools/lib/commands/plugin.js +13 -22
- package/packages/tools/lib/commands/plugin.js.map +1 -1
- package/packages/tools/lib/commands/prune.d.ts +5 -0
- package/packages/tools/lib/commands/prune.d.ts.map +1 -0
- package/packages/tools/lib/commands/prune.js +27 -0
- package/packages/tools/lib/commands/prune.js.map +1 -0
- package/packages/tools/lib/commands/retired.d.ts +10 -0
- package/packages/tools/lib/commands/retired.d.ts.map +1 -0
- package/packages/tools/lib/commands/retired.js +35 -0
- package/packages/tools/lib/commands/retired.js.map +1 -0
- package/packages/tools/lib/commands/rules.d.ts +49 -5
- package/packages/tools/lib/commands/rules.d.ts.map +1 -1
- package/packages/tools/lib/commands/rules.js +340 -172
- package/packages/tools/lib/commands/rules.js.map +1 -1
- package/packages/tools/lib/commands/ship-library.d.ts +4 -0
- package/packages/tools/lib/commands/ship-library.d.ts.map +1 -0
- package/packages/tools/lib/commands/ship-library.js +45 -0
- package/packages/tools/lib/commands/ship-library.js.map +1 -0
- package/packages/tools/lib/commands/standards.d.ts +2 -2
- package/packages/tools/lib/commands/standards.d.ts.map +1 -1
- package/packages/tools/lib/commands/standards.js +78 -33
- package/packages/tools/lib/commands/standards.js.map +1 -1
- package/packages/tools/lib/commands/sysand-publish.d.ts +16 -1
- package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -1
- package/packages/tools/lib/commands/sysand-publish.js +75 -193
- package/packages/tools/lib/commands/sysand-publish.js.map +1 -1
- package/packages/tools/lib/commands/toolchain.d.ts +5 -0
- package/packages/tools/lib/commands/toolchain.d.ts.map +1 -1
- package/packages/tools/lib/commands/toolchain.js +50 -1
- package/packages/tools/lib/commands/toolchain.js.map +1 -1
- package/packages/tools/lib/commands/validate-client.d.ts +11 -0
- package/packages/tools/lib/commands/validate-client.d.ts.map +1 -0
- package/packages/tools/lib/commands/validate-client.js +54 -0
- package/packages/tools/lib/commands/validate-client.js.map +1 -0
- package/packages/tools/lib/commands/validate.d.ts +33 -2
- package/packages/tools/lib/commands/validate.d.ts.map +1 -1
- package/packages/tools/lib/commands/validate.js +432 -186
- package/packages/tools/lib/commands/validate.js.map +1 -1
- package/packages/tools/lib/dhf/device-dhf.d.ts +57 -0
- package/packages/tools/lib/dhf/device-dhf.d.ts.map +1 -0
- package/packages/tools/lib/dhf/device-dhf.js +152 -0
- package/packages/tools/lib/dhf/device-dhf.js.map +1 -0
- package/packages/tools/lib/dhf/dhf-config-v2.d.ts +1 -1
- package/packages/tools/lib/dhf/dhf-config-v2.d.ts.map +1 -1
- package/packages/tools/lib/dhf/query-engine.d.ts +9 -2
- package/packages/tools/lib/dhf/query-engine.d.ts.map +1 -1
- package/packages/tools/lib/dhf/query-engine.js +29 -25
- package/packages/tools/lib/dhf/query-engine.js.map +1 -1
- package/packages/tools/lib/dhf/query-executor.d.ts +1 -1
- package/packages/tools/lib/dhf/query-executor.js +1 -1
- package/packages/tools/lib/dhf/query-executor.js.map +1 -1
- package/packages/tools/lib/dhf/standards-block.js +1 -1
- package/packages/tools/lib/dhf/standards-block.js.map +1 -1
- package/packages/tools/lib/dhf/standards-library.d.ts.map +1 -1
- package/packages/tools/lib/dhf/standards-library.js +16 -9
- package/packages/tools/lib/dhf/standards-library.js.map +1 -1
- package/packages/tools/lib/dhf/standards-report.d.ts +11 -3
- package/packages/tools/lib/dhf/standards-report.d.ts.map +1 -1
- package/packages/tools/lib/dhf/standards-report.js +43 -13
- package/packages/tools/lib/dhf/standards-report.js.map +1 -1
- package/packages/tools/lib/dhf/template-engine.d.ts +2 -0
- package/packages/tools/lib/dhf/template-engine.d.ts.map +1 -1
- package/packages/tools/lib/dhf/template-engine.js +5 -5
- package/packages/tools/lib/dhf/template-engine.js.map +1 -1
- package/packages/tools/lib/import/import-diff.d.ts +31 -1
- package/packages/tools/lib/import/import-diff.d.ts.map +1 -1
- package/packages/tools/lib/import/import-diff.js +91 -19
- package/packages/tools/lib/import/import-diff.js.map +1 -1
- package/packages/tools/lib/import/import-sources.d.ts +21 -0
- package/packages/tools/lib/import/import-sources.d.ts.map +1 -0
- package/packages/tools/lib/import/import-sources.js +36 -0
- package/packages/tools/lib/import/import-sources.js.map +1 -0
- package/packages/tools/lib/import/reqif.d.ts +23 -0
- package/packages/tools/lib/import/reqif.d.ts.map +1 -0
- package/packages/tools/lib/import/reqif.js +151 -0
- package/packages/tools/lib/import/reqif.js.map +1 -0
- package/packages/tools/lib/import/source-import.d.ts +128 -0
- package/packages/tools/lib/import/source-import.d.ts.map +1 -0
- package/packages/tools/lib/import/source-import.js +305 -0
- package/packages/tools/lib/import/source-import.js.map +1 -0
- package/packages/tools/lib/importer/cameo-importer.d.ts.map +1 -1
- package/packages/tools/lib/importer/cameo-importer.js +4 -1
- package/packages/tools/lib/importer/cameo-importer.js.map +1 -1
- package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -1
- package/packages/tools/lib/importer/ea-importer.js +4 -1
- package/packages/tools/lib/importer/ea-importer.js.map +1 -1
- package/packages/tools/lib/importer/sysand-importer.d.ts +2 -1
- package/packages/tools/lib/importer/sysand-importer.d.ts.map +1 -1
- package/packages/tools/lib/importer/sysand-importer.js +27 -10
- package/packages/tools/lib/importer/sysand-importer.js.map +1 -1
- package/packages/tools/lib/index.d.ts +20 -6
- package/packages/tools/lib/index.d.ts.map +1 -1
- package/packages/tools/lib/index.js +22 -8
- package/packages/tools/lib/index.js.map +1 -1
- package/packages/tools/lib/llm/draft-engine.js +1 -1
- package/packages/tools/lib/llm/draft-engine.js.map +1 -1
- package/packages/tools/lib/llm/model-context.js +1 -1
- package/packages/tools/lib/llm/model-context.js.map +1 -1
- package/packages/tools/lib/lock.d.ts +37 -2
- package/packages/tools/lib/lock.d.ts.map +1 -1
- package/packages/tools/lib/lock.js +93 -8
- package/packages/tools/lib/lock.js.map +1 -1
- package/packages/tools/lib/mcp/index.js +1 -1
- package/packages/tools/lib/mcp/index.js.map +1 -1
- package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -1
- package/packages/tools/lib/mcp/model-loader.js +6 -18
- package/packages/tools/lib/mcp/model-loader.js.map +1 -1
- package/packages/tools/lib/mcp/server.js +2 -2
- package/packages/tools/lib/mcp/server.js.map +1 -1
- package/packages/tools/lib/mcp/tools.d.ts.map +1 -1
- package/packages/tools/lib/mcp/tools.js +5 -4
- package/packages/tools/lib/mcp/tools.js.map +1 -1
- package/packages/tools/lib/methodology/guide-service.d.ts +28 -0
- package/packages/tools/lib/methodology/guide-service.d.ts.map +1 -0
- package/packages/tools/lib/methodology/guide-service.js +32 -0
- package/packages/tools/lib/methodology/guide-service.js.map +1 -0
- package/packages/tools/lib/methodology/guide.d.ts +56 -0
- package/packages/tools/lib/methodology/guide.d.ts.map +1 -0
- package/packages/tools/lib/methodology/guide.js +80 -0
- package/packages/tools/lib/methodology/guide.js.map +1 -0
- package/packages/tools/lib/model/census-projects.d.ts +26 -0
- package/packages/tools/lib/model/census-projects.d.ts.map +1 -0
- package/packages/tools/lib/model/census-projects.js +53 -0
- package/packages/tools/lib/model/census-projects.js.map +1 -0
- package/packages/tools/lib/model/census.d.ts +103 -0
- package/packages/tools/lib/model/census.d.ts.map +1 -0
- package/packages/tools/lib/model/census.js +229 -0
- package/packages/tools/lib/model/census.js.map +1 -0
- package/packages/tools/lib/model/complete-model.d.ts +52 -0
- package/packages/tools/lib/model/complete-model.d.ts.map +1 -0
- package/packages/tools/lib/model/complete-model.js +287 -0
- package/packages/tools/lib/model/complete-model.js.map +1 -0
- package/packages/tools/lib/model/config-loader.d.ts +8 -3
- package/packages/tools/lib/model/config-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/config-loader.js +37 -6
- package/packages/tools/lib/model/config-loader.js.map +1 -1
- package/packages/tools/lib/model/config.d.ts +21 -7
- package/packages/tools/lib/model/config.d.ts.map +1 -1
- package/packages/tools/lib/model/effective-scope.d.ts +55 -28
- package/packages/tools/lib/model/effective-scope.d.ts.map +1 -1
- package/packages/tools/lib/model/effective-scope.js +96 -35
- package/packages/tools/lib/model/effective-scope.js.map +1 -1
- package/packages/tools/lib/model/element-index.d.ts +207 -0
- package/packages/tools/lib/model/element-index.d.ts.map +1 -0
- package/packages/tools/lib/model/element-index.js +316 -0
- package/packages/tools/lib/model/element-index.js.map +1 -0
- package/packages/tools/lib/model/id-rebase.d.ts +35 -0
- package/packages/tools/lib/model/id-rebase.d.ts.map +1 -0
- package/packages/tools/lib/model/id-rebase.js +199 -0
- package/packages/tools/lib/model/id-rebase.js.map +1 -0
- package/packages/tools/lib/model/identity-registry.d.ts +34 -3
- package/packages/tools/lib/model/identity-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/identity-registry.js +40 -7
- package/packages/tools/lib/model/identity-registry.js.map +1 -1
- package/packages/tools/lib/model/impact.d.ts +75 -0
- package/packages/tools/lib/model/impact.d.ts.map +1 -0
- package/packages/tools/lib/model/impact.js +167 -0
- package/packages/tools/lib/model/impact.js.map +1 -0
- package/packages/tools/lib/model/ir-identity.d.ts +3 -51
- package/packages/tools/lib/model/ir-identity.d.ts.map +1 -1
- package/packages/tools/lib/model/ir-identity.js +14 -121
- package/packages/tools/lib/model/ir-identity.js.map +1 -1
- package/packages/tools/lib/model/kind-registry.d.ts +66 -22
- package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/kind-registry.js +104 -145
- package/packages/tools/lib/model/kind-registry.js.map +1 -1
- package/packages/tools/lib/model/manifest.d.ts +2 -2
- package/packages/tools/lib/model/manifest.d.ts.map +1 -1
- package/packages/tools/lib/model/manifest.js +5 -4
- package/packages/tools/lib/model/manifest.js.map +1 -1
- package/packages/tools/lib/model/methodology-loader.d.ts +11 -2
- package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/methodology-loader.js +24 -130
- package/packages/tools/lib/model/methodology-loader.js.map +1 -1
- package/packages/tools/lib/model/methodology-resolver.d.ts +71 -6
- package/packages/tools/lib/model/methodology-resolver.d.ts.map +1 -1
- package/packages/tools/lib/model/methodology-resolver.js +210 -24
- package/packages/tools/lib/model/methodology-resolver.js.map +1 -1
- package/packages/tools/lib/model/model-diff.d.ts +73 -0
- package/packages/tools/lib/model/model-diff.d.ts.map +1 -0
- package/packages/tools/lib/model/model-diff.js +91 -0
- package/packages/tools/lib/model/model-diff.js.map +1 -0
- package/packages/tools/lib/model/narrow-model.d.ts +9 -0
- package/packages/tools/lib/model/narrow-model.d.ts.map +1 -0
- package/packages/tools/lib/model/narrow-model.js +54 -0
- package/packages/tools/lib/model/narrow-model.js.map +1 -0
- package/packages/tools/lib/model/native-project.d.ts +92 -11
- package/packages/tools/lib/model/native-project.d.ts.map +1 -1
- package/packages/tools/lib/model/native-project.js +163 -267
- package/packages/tools/lib/model/native-project.js.map +1 -1
- package/packages/tools/lib/model/ontology-loader.d.ts +10 -61
- package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/ontology-loader.js +11 -512
- package/packages/tools/lib/model/ontology-loader.js.map +1 -1
- package/packages/tools/lib/model/package-manifest.d.ts +8 -2
- package/packages/tools/lib/model/package-manifest.d.ts.map +1 -1
- package/packages/tools/lib/model/package-manifest.js +14 -2
- package/packages/tools/lib/model/package-manifest.js.map +1 -1
- package/packages/tools/lib/model/pinned.d.ts +216 -0
- package/packages/tools/lib/model/pinned.d.ts.map +1 -0
- package/packages/tools/lib/model/pinned.js +481 -0
- package/packages/tools/lib/model/pinned.js.map +1 -0
- package/packages/tools/lib/model/project-conversion.d.ts +3 -2
- package/packages/tools/lib/model/project-conversion.d.ts.map +1 -1
- package/packages/tools/lib/model/project-conversion.js +55 -10
- package/packages/tools/lib/model/project-conversion.js.map +1 -1
- package/packages/tools/lib/model/project-settings.d.ts +10 -0
- package/packages/tools/lib/model/project-settings.d.ts.map +1 -0
- package/packages/tools/lib/model/project-settings.js +48 -0
- package/packages/tools/lib/model/project-settings.js.map +1 -0
- package/packages/tools/lib/model/relation-selection.d.ts +25 -0
- package/packages/tools/lib/model/relation-selection.d.ts.map +1 -0
- package/packages/tools/lib/model/relation-selection.js +65 -0
- package/packages/tools/lib/model/relation-selection.js.map +1 -0
- package/packages/tools/lib/model/relationship-legality.d.ts +6 -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 +21 -8
- package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/relationship-registry.js +77 -129
- package/packages/tools/lib/model/relationship-registry.js.map +1 -1
- package/packages/tools/lib/model/relationship-subjects.d.ts +28 -0
- package/packages/tools/lib/model/relationship-subjects.d.ts.map +1 -0
- package/packages/tools/lib/model/relationship-subjects.js +126 -0
- package/packages/tools/lib/model/relationship-subjects.js.map +1 -0
- package/packages/tools/lib/model/release-target.d.ts +12 -0
- package/packages/tools/lib/model/release-target.d.ts.map +1 -0
- package/packages/tools/lib/model/release-target.js +35 -0
- package/packages/tools/lib/model/release-target.js.map +1 -0
- package/packages/tools/lib/model/selector-vocabulary.d.ts +47 -0
- package/packages/tools/lib/model/selector-vocabulary.d.ts.map +1 -0
- package/packages/tools/lib/model/selector-vocabulary.js +181 -0
- package/packages/tools/lib/model/selector-vocabulary.js.map +1 -0
- package/packages/tools/lib/model/semantic.d.ts +99 -7
- package/packages/tools/lib/model/semantic.d.ts.map +1 -1
- package/packages/tools/lib/model/semantic.js +13 -1
- package/packages/tools/lib/model/semantic.js.map +1 -1
- package/packages/tools/lib/model/settings-boundary.d.ts.map +1 -1
- package/packages/tools/lib/model/settings-boundary.js +9 -8
- package/packages/tools/lib/model/settings-boundary.js.map +1 -1
- package/packages/tools/lib/model/short-id.d.ts.map +1 -1
- package/packages/tools/lib/model/short-id.js +4 -0
- package/packages/tools/lib/model/short-id.js.map +1 -1
- package/packages/tools/lib/model/source-graph.d.ts +9 -7
- package/packages/tools/lib/model/source-graph.d.ts.map +1 -1
- package/packages/tools/lib/model/source-graph.js +19 -24
- package/packages/tools/lib/model/source-graph.js.map +1 -1
- package/packages/tools/lib/model/source-provenance.d.ts +5 -1
- package/packages/tools/lib/model/source-provenance.d.ts.map +1 -1
- package/packages/tools/lib/model/source-provenance.js.map +1 -1
- package/packages/tools/lib/model/sysml-files.js +1 -1
- package/packages/tools/lib/model/sysml-ir.d.ts +2 -5
- package/packages/tools/lib/model/sysml-ir.d.ts.map +1 -1
- package/packages/tools/lib/model/sysml-ir.js +1 -100
- package/packages/tools/lib/model/sysml-ir.js.map +1 -1
- package/packages/tools/lib/model/toolchain-merge.d.ts +4 -0
- package/packages/tools/lib/model/toolchain-merge.d.ts.map +1 -0
- package/packages/tools/lib/model/toolchain-merge.js +34 -0
- package/packages/tools/lib/model/toolchain-merge.js.map +1 -0
- package/packages/tools/lib/model/user-settings.d.ts +13 -0
- package/packages/tools/lib/model/user-settings.d.ts.map +1 -0
- package/packages/tools/lib/model/user-settings.js +83 -0
- package/packages/tools/lib/model/user-settings.js.map +1 -0
- package/packages/tools/lib/model/variability.d.ts +56 -0
- package/packages/tools/lib/model/variability.d.ts.map +1 -0
- package/packages/tools/lib/model/variability.js +116 -0
- package/packages/tools/lib/model/variability.js.map +1 -0
- package/packages/tools/lib/model/version-range.d.ts +2 -0
- package/packages/tools/lib/model/version-range.d.ts.map +1 -0
- package/packages/tools/lib/model/version-range.js +37 -0
- package/packages/tools/lib/model/version-range.js.map +1 -0
- package/packages/tools/lib/model/view-deriver.d.ts +16 -0
- package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
- package/packages/tools/lib/model/view-deriver.js +129 -30
- package/packages/tools/lib/model/view-deriver.js.map +1 -1
- package/packages/tools/lib/model/view-layout-block.d.ts +81 -0
- package/packages/tools/lib/model/view-layout-block.d.ts.map +1 -0
- package/packages/tools/lib/model/view-layout-block.js +525 -0
- package/packages/tools/lib/model/view-layout-block.js.map +1 -0
- package/packages/tools/lib/model/view-layout-migration.d.ts +54 -0
- package/packages/tools/lib/model/view-layout-migration.d.ts.map +1 -0
- package/packages/tools/lib/model/view-layout-migration.js +156 -0
- package/packages/tools/lib/model/view-layout-migration.js.map +1 -0
- package/packages/tools/lib/model/workspace-membership.d.ts +99 -0
- package/packages/tools/lib/model/workspace-membership.d.ts.map +1 -0
- package/packages/tools/lib/model/workspace-membership.js +281 -0
- package/packages/tools/lib/model/workspace-membership.js.map +1 -0
- package/packages/tools/lib/ontology/owl-exporter.d.ts +1 -1
- package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -1
- package/packages/tools/lib/ontology/owl-exporter.js +1 -1
- package/packages/tools/lib/ontology/owl-exporter.js.map +1 -1
- package/packages/tools/lib/operations/ai-authoring.d.ts.map +1 -1
- package/packages/tools/lib/operations/ai-authoring.js +7 -5
- package/packages/tools/lib/operations/ai-authoring.js.map +1 -1
- package/packages/tools/lib/operations/authoring.d.ts +10 -4
- package/packages/tools/lib/operations/authoring.d.ts.map +1 -1
- package/packages/tools/lib/operations/authoring.js +27 -11
- package/packages/tools/lib/operations/authoring.js.map +1 -1
- 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 +1 -0
- package/packages/tools/lib/operations/index.js.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.js +7 -13
- package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
- package/packages/tools/lib/plugin/plugin-scaffold.js +2 -2
- package/packages/tools/lib/plugin/plugin-scaffold.js.map +1 -1
- package/packages/tools/lib/protocol/messages.d.ts +375 -7
- package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
- package/packages/tools/lib/serializer/csv-io.d.ts +37 -29
- package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -1
- package/packages/tools/lib/serializer/csv-io.js +64 -31
- package/packages/tools/lib/serializer/csv-io.js.map +1 -1
- package/packages/tools/lib/serializer/sysml-generator.d.ts +15 -2
- package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -1
- package/packages/tools/lib/serializer/sysml-generator.js +45 -17
- package/packages/tools/lib/serializer/sysml-generator.js.map +1 -1
- package/packages/tools/lib/server/conflict-policy.js +1 -1
- package/packages/tools/lib/server/conflict-policy.js.map +1 -1
- package/packages/tools/lib/server/dashboard-store.d.ts +1 -7
- package/packages/tools/lib/server/dashboard-store.d.ts.map +1 -1
- package/packages/tools/lib/server/dashboard-store.js +3 -14
- package/packages/tools/lib/server/dashboard-store.js.map +1 -1
- package/packages/tools/lib/server/dev-server.d.ts +48 -1
- package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.js +529 -80
- package/packages/tools/lib/server/dev-server.js.map +1 -1
- package/packages/tools/lib/server/dev-validate.d.ts +30 -0
- package/packages/tools/lib/server/dev-validate.d.ts.map +1 -0
- package/packages/tools/lib/server/dev-validate.js +82 -0
- package/packages/tools/lib/server/dev-validate.js.map +1 -0
- package/packages/tools/lib/server/element-writer.d.ts +4 -1
- package/packages/tools/lib/server/element-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/element-writer.js +56 -35
- package/packages/tools/lib/server/element-writer.js.map +1 -1
- package/packages/tools/lib/server/mutation-domain.d.ts +10 -0
- package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -1
- package/packages/tools/lib/server/mutation-domain.js +45 -8
- package/packages/tools/lib/server/mutation-domain.js.map +1 -1
- package/packages/tools/lib/server/package-source.d.ts +13 -3
- package/packages/tools/lib/server/package-source.d.ts.map +1 -1
- package/packages/tools/lib/server/package-source.js +31 -39
- package/packages/tools/lib/server/package-source.js.map +1 -1
- package/packages/tools/lib/server/package-writer.d.ts +19 -6
- package/packages/tools/lib/server/package-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/package-writer.js +90 -39
- package/packages/tools/lib/server/package-writer.js.map +1 -1
- package/packages/tools/lib/server/persistor.d.ts +33 -7
- package/packages/tools/lib/server/persistor.d.ts.map +1 -1
- package/packages/tools/lib/server/persistor.js +63 -48
- package/packages/tools/lib/server/persistor.js.map +1 -1
- package/packages/tools/lib/server/project-gitignore.d.ts +9 -0
- package/packages/tools/lib/server/project-gitignore.d.ts.map +1 -0
- package/packages/tools/lib/server/project-gitignore.js +27 -0
- package/packages/tools/lib/server/project-gitignore.js.map +1 -0
- package/packages/tools/lib/server/relationship-writer.d.ts +31 -2
- package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/relationship-writer.js +255 -95
- package/packages/tools/lib/server/relationship-writer.js.map +1 -1
- package/packages/tools/lib/server/release-writer.d.ts +46 -0
- package/packages/tools/lib/server/release-writer.d.ts.map +1 -0
- package/packages/tools/lib/server/release-writer.js +133 -0
- package/packages/tools/lib/server/release-writer.js.map +1 -0
- package/packages/tools/lib/server/rule-policy-writer.d.ts +17 -4
- package/packages/tools/lib/server/rule-policy-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/rule-policy-writer.js +92 -7
- package/packages/tools/lib/server/rule-policy-writer.js.map +1 -1
- package/packages/tools/lib/server/rule-service.d.ts +50 -0
- package/packages/tools/lib/server/rule-service.d.ts.map +1 -0
- package/packages/tools/lib/server/rule-service.js +89 -0
- package/packages/tools/lib/server/rule-service.js.map +1 -0
- package/packages/tools/lib/server/rule-writer.d.ts +87 -0
- package/packages/tools/lib/server/rule-writer.d.ts.map +1 -0
- package/packages/tools/lib/server/rule-writer.js +165 -0
- package/packages/tools/lib/server/rule-writer.js.map +1 -0
- package/packages/tools/lib/server/suspect-review.d.ts +11 -0
- package/packages/tools/lib/server/suspect-review.d.ts.map +1 -0
- package/packages/tools/lib/server/suspect-review.js +28 -0
- package/packages/tools/lib/server/suspect-review.js.map +1 -0
- package/packages/tools/lib/server/sysml-notation.d.ts +1 -1
- package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -1
- package/packages/tools/lib/server/sysml-notation.js +5 -0
- package/packages/tools/lib/server/sysml-notation.js.map +1 -1
- package/packages/tools/lib/server/user-preferences.d.ts +8 -0
- package/packages/tools/lib/server/user-preferences.d.ts.map +1 -0
- package/packages/tools/lib/server/user-preferences.js +47 -0
- package/packages/tools/lib/server/user-preferences.js.map +1 -0
- package/packages/tools/lib/server/version-servers.d.ts +60 -0
- package/packages/tools/lib/server/version-servers.d.ts.map +1 -0
- package/packages/tools/lib/server/version-servers.js +106 -0
- package/packages/tools/lib/server/version-servers.js.map +1 -0
- package/packages/tools/lib/server/view-layout-store.d.ts +28 -13
- package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
- package/packages/tools/lib/server/view-layout-store.js +106 -106
- package/packages/tools/lib/server/view-layout-store.js.map +1 -1
- package/packages/tools/lib/server/view-writer.d.ts +22 -2
- package/packages/tools/lib/server/view-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/view-writer.js +99 -44
- package/packages/tools/lib/server/view-writer.js.map +1 -1
- package/packages/tools/lib/server/write-guard.d.ts +7 -0
- package/packages/tools/lib/server/write-guard.d.ts.map +1 -0
- package/packages/tools/lib/server/write-guard.js +77 -0
- package/packages/tools/lib/server/write-guard.js.map +1 -0
- package/packages/tools/lib/stage2/api-model.d.ts +160 -0
- package/packages/tools/lib/stage2/api-model.d.ts.map +1 -0
- package/packages/tools/lib/stage2/api-model.js +341 -0
- package/packages/tools/lib/stage2/api-model.js.map +1 -0
- package/packages/tools/lib/stage2/build-from-api.d.ts +47 -0
- package/packages/tools/lib/stage2/build-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/build-from-api.js +1462 -0
- package/packages/tools/lib/stage2/build-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/guide-from-api.d.ts +38 -0
- package/packages/tools/lib/stage2/guide-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/guide-from-api.js +97 -0
- package/packages/tools/lib/stage2/guide-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/handoff-files.d.ts +13 -0
- package/packages/tools/lib/stage2/handoff-files.d.ts.map +1 -0
- package/packages/tools/lib/stage2/handoff-files.js +32 -0
- package/packages/tools/lib/stage2/handoff-files.js.map +1 -0
- package/packages/tools/lib/stage2/methodology-from-api.d.ts +10 -0
- package/packages/tools/lib/stage2/methodology-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/methodology-from-api.js +109 -0
- package/packages/tools/lib/stage2/methodology-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/package-metadata-from-api.d.ts +15 -0
- package/packages/tools/lib/stage2/package-metadata-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/package-metadata-from-api.js +238 -0
- package/packages/tools/lib/stage2/package-metadata-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/project-from-api.d.ts +60 -0
- package/packages/tools/lib/stage2/project-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/project-from-api.js +328 -0
- package/packages/tools/lib/stage2/project-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/registries-from-api.d.ts +68 -0
- package/packages/tools/lib/stage2/registries-from-api.d.ts.map +1 -0
- package/packages/tools/lib/stage2/registries-from-api.js +313 -0
- package/packages/tools/lib/stage2/registries-from-api.js.map +1 -0
- package/packages/tools/lib/stage2/stage2-from-handoff.d.ts +26 -0
- package/packages/tools/lib/stage2/stage2-from-handoff.d.ts.map +1 -0
- package/packages/tools/lib/stage2/stage2-from-handoff.js +34 -0
- package/packages/tools/lib/stage2/stage2-from-handoff.js.map +1 -0
- package/packages/tools/lib/stage2/sysml-names.d.ts +9 -0
- package/packages/tools/lib/stage2/sysml-names.d.ts.map +1 -0
- package/packages/tools/lib/stage2/sysml-names.js +39 -0
- package/packages/tools/lib/stage2/sysml-names.js.map +1 -0
- package/packages/tools/lib/toolchain/default-registry.d.ts +2 -2
- package/packages/tools/lib/toolchain/default-registry.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/default-registry.js +9 -5
- package/packages/tools/lib/toolchain/default-registry.js.map +1 -1
- package/packages/tools/lib/toolchain/diagnostic.d.ts +2 -2
- package/packages/tools/lib/toolchain/diagnostic.js +1 -1
- package/packages/tools/lib/toolchain/diagnostic.js.map +1 -1
- package/packages/tools/lib/toolchain/effective.d.ts +25 -17
- package/packages/tools/lib/toolchain/effective.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/effective.js +45 -40
- package/packages/tools/lib/toolchain/effective.js.map +1 -1
- package/packages/tools/lib/toolchain/exceptions.d.ts +27 -0
- package/packages/tools/lib/toolchain/exceptions.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/exceptions.js +77 -0
- package/packages/tools/lib/toolchain/exceptions.js.map +1 -0
- package/packages/tools/lib/toolchain/index.d.ts +2 -2
- package/packages/tools/lib/toolchain/index.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/index.js +2 -2
- package/packages/tools/lib/toolchain/index.js.map +1 -1
- package/packages/tools/lib/toolchain/operations.d.ts +45 -10
- package/packages/tools/lib/toolchain/operations.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/operations.js +107 -8
- package/packages/tools/lib/toolchain/operations.js.map +1 -1
- package/packages/tools/lib/toolchain/ownership.d.ts +13 -0
- package/packages/tools/lib/toolchain/ownership.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/ownership.js +57 -0
- package/packages/tools/lib/toolchain/ownership.js.map +1 -0
- package/packages/tools/lib/toolchain/process.d.ts +2 -2
- package/packages/tools/lib/toolchain/process.js +2 -2
- package/packages/tools/lib/toolchain/project-config.d.ts +4 -0
- package/packages/tools/lib/toolchain/project-config.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/project-config.js +13 -0
- package/packages/tools/lib/toolchain/project-config.js.map +1 -0
- package/packages/tools/lib/toolchain/project-model.d.ts +75 -0
- package/packages/tools/lib/toolchain/project-model.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/project-model.js +92 -0
- package/packages/tools/lib/toolchain/project-model.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/internal-package.d.ts +6 -0
- package/packages/tools/lib/toolchain/providers/internal-package.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/internal-package.js +47 -0
- package/packages/tools/lib/toolchain/providers/internal-package.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts +20 -0
- package/packages/tools/lib/toolchain/providers/opensysml-check.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-check.js +95 -0
- package/packages/tools/lib/toolchain/providers/opensysml-check.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts +17 -0
- package/packages/tools/lib/toolchain/providers/opensysml-compact.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-compact.js +69 -0
- package/packages/tools/lib/toolchain/providers/opensysml-compact.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts +50 -0
- package/packages/tools/lib/toolchain/providers/opensysml-lowering.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-lowering.js +646 -0
- package/packages/tools/lib/toolchain/providers/opensysml-lowering.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts +16 -0
- package/packages/tools/lib/toolchain/providers/opensysml-names.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml-names.js +37 -0
- package/packages/tools/lib/toolchain/providers/opensysml-names.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml.d.ts +88 -0
- package/packages/tools/lib/toolchain/providers/opensysml.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/opensysml.js +178 -0
- package/packages/tools/lib/toolchain/providers/opensysml.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/recommended.d.ts +2 -0
- package/packages/tools/lib/toolchain/providers/recommended.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/recommended.js +13 -0
- package/packages/tools/lib/toolchain/providers/recommended.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/sysand-project.d.ts +60 -0
- package/packages/tools/lib/toolchain/providers/sysand-project.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/sysand-project.js +160 -0
- package/packages/tools/lib/toolchain/providers/sysand-project.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/sysand.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/providers/sysand.js +26 -2
- package/packages/tools/lib/toolchain/providers/sysand.js.map +1 -1
- package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts +29 -0
- package/packages/tools/lib/toolchain/providers/syside-lowering.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside-lowering.js +497 -0
- package/packages/tools/lib/toolchain/providers/syside-lowering.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside-python.d.ts +9 -0
- package/packages/tools/lib/toolchain/providers/syside-python.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside-python.js +69 -0
- package/packages/tools/lib/toolchain/providers/syside-python.js.map +1 -0
- package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/providers/syside.js +2 -0
- package/packages/tools/lib/toolchain/providers/syside.js.map +1 -1
- package/packages/tools/lib/toolchain/registry.d.ts +118 -21
- package/packages/tools/lib/toolchain/registry.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/registry.js +18 -24
- package/packages/tools/lib/toolchain/registry.js.map +1 -1
- package/packages/tools/lib/toolchain/schema.d.ts +6 -5
- package/packages/tools/lib/toolchain/schema.d.ts.map +1 -1
- package/packages/tools/lib/toolchain/schema.js +8 -13
- package/packages/tools/lib/toolchain/schema.js.map +1 -1
- package/packages/tools/lib/toolchain/shipped-library.d.ts +28 -0
- package/packages/tools/lib/toolchain/shipped-library.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/shipped-library.js +120 -0
- package/packages/tools/lib/toolchain/shipped-library.js.map +1 -0
- package/packages/tools/lib/toolchain/source-fingerprint.d.ts +2 -0
- package/packages/tools/lib/toolchain/source-fingerprint.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/source-fingerprint.js +30 -0
- package/packages/tools/lib/toolchain/source-fingerprint.js.map +1 -0
- package/packages/tools/lib/toolchain/user-settings-status.d.ts +51 -0
- package/packages/tools/lib/toolchain/user-settings-status.d.ts.map +1 -0
- package/packages/tools/lib/toolchain/user-settings-status.js +104 -0
- package/packages/tools/lib/toolchain/user-settings-status.js.map +1 -0
- package/packages/tools/lib/validator/architecture-validator.d.ts.map +1 -1
- package/packages/tools/lib/validator/architecture-validator.js +2 -1
- package/packages/tools/lib/validator/architecture-validator.js.map +1 -1
- package/packages/tools/lib/validator/behavior-validator.js +1 -1
- package/packages/tools/lib/validator/behavior-validator.js.map +1 -1
- package/packages/tools/lib/validator/builtin-rules.js +1 -1
- package/packages/tools/lib/validator/builtin-rules.js.map +1 -1
- package/packages/tools/lib/validator/constraint-eval.d.ts +30 -4
- package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
- package/packages/tools/lib/validator/constraint-eval.js +101 -59
- package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
- package/packages/tools/lib/validator/constraint-loader-api.d.ts +22 -0
- package/packages/tools/lib/validator/constraint-loader-api.d.ts.map +1 -0
- package/packages/tools/lib/validator/constraint-loader-api.js +160 -0
- package/packages/tools/lib/validator/constraint-loader-api.js.map +1 -0
- package/packages/tools/lib/validator/constraint-loader.d.ts +22 -18
- package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -1
- package/packages/tools/lib/validator/constraint-loader.js +33 -141
- package/packages/tools/lib/validator/constraint-loader.js.map +1 -1
- package/packages/tools/lib/validator/rule-clauses.d.ts +51 -0
- package/packages/tools/lib/validator/rule-clauses.d.ts.map +1 -0
- package/packages/tools/lib/validator/rule-clauses.js +87 -0
- package/packages/tools/lib/validator/rule-clauses.js.map +1 -0
- package/packages/tools/lib/validator/rule-engine.d.ts +9 -1
- package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -1
- package/packages/tools/lib/validator/rule-engine.js +50 -6
- package/packages/tools/lib/validator/rule-engine.js.map +1 -1
- package/packages/tools/lib/validator/rule-registry.d.ts +4 -8
- package/packages/tools/lib/validator/rule-registry.d.ts.map +1 -1
- package/packages/tools/lib/validator/rule-registry.js +42 -79
- package/packages/tools/lib/validator/rule-registry.js.map +1 -1
- package/packages/tools/lib/validator/rule-tailoring.d.ts +62 -0
- package/packages/tools/lib/validator/rule-tailoring.d.ts.map +1 -0
- package/packages/tools/lib/validator/rule-tailoring.js +85 -0
- package/packages/tools/lib/validator/rule-tailoring.js.map +1 -0
- package/packages/tools/lib/validator/types.d.ts +12 -1
- package/packages/tools/lib/validator/types.d.ts.map +1 -1
- package/packages/tools/lib/validator/workspace-boundary-validator.d.ts +9 -0
- package/packages/tools/lib/validator/workspace-boundary-validator.d.ts.map +1 -0
- package/packages/tools/lib/validator/workspace-boundary-validator.js +28 -0
- package/packages/tools/lib/validator/workspace-boundary-validator.js.map +1 -0
- package/packages/tools/python/memo_model.py +243 -0
- package/packages/tools/python/memo_stage1_syside.py +389 -0
- package/packages/tools/lib/commands/check.d.ts +0 -6
- package/packages/tools/lib/commands/check.d.ts.map +0 -1
- package/packages/tools/lib/commands/check.js +0 -191
- package/packages/tools/lib/commands/check.js.map +0 -1
- package/packages/tools/lib/commands/conformance.d.ts +0 -36
- package/packages/tools/lib/commands/conformance.d.ts.map +0 -1
- package/packages/tools/lib/commands/conformance.js +0 -212
- package/packages/tools/lib/commands/conformance.js.map +0 -1
- package/packages/tools/lib/commands/roundtrip.d.ts +0 -6
- package/packages/tools/lib/commands/roundtrip.d.ts.map +0 -1
- package/packages/tools/lib/commands/roundtrip.js +0 -145
- package/packages/tools/lib/commands/roundtrip.js.map +0 -1
- package/packages/tools/lib/conformance/baseline.d.ts +0 -26
- package/packages/tools/lib/conformance/baseline.d.ts.map +0 -1
- package/packages/tools/lib/conformance/baseline.js +0 -170
- package/packages/tools/lib/conformance/baseline.js.map +0 -1
- package/packages/tools/lib/conformance/bnf.d.ts +0 -84
- package/packages/tools/lib/conformance/bnf.d.ts.map +0 -1
- package/packages/tools/lib/conformance/bnf.js +0 -166
- package/packages/tools/lib/conformance/bnf.js.map +0 -1
- package/packages/tools/lib/conformance/corpus.d.ts +0 -125
- package/packages/tools/lib/conformance/corpus.d.ts.map +0 -1
- package/packages/tools/lib/conformance/corpus.js +0 -190
- package/packages/tools/lib/conformance/corpus.js.map +0 -1
- package/packages/tools/lib/conformance/diff-xmi.d.ts +0 -118
- package/packages/tools/lib/conformance/diff-xmi.d.ts.map +0 -1
- package/packages/tools/lib/conformance/diff-xmi.js +0 -276
- package/packages/tools/lib/conformance/diff-xmi.js.map +0 -1
- package/packages/tools/lib/conformance/generated/syside-rules.d.ts +0 -10
- package/packages/tools/lib/conformance/generated/syside-rules.d.ts.map +0 -1
- package/packages/tools/lib/conformance/generated/syside-rules.js +0 -1142
- package/packages/tools/lib/conformance/generated/syside-rules.js.map +0 -1
- package/packages/tools/lib/conformance/index.d.ts +0 -7
- package/packages/tools/lib/conformance/index.d.ts.map +0 -1
- package/packages/tools/lib/conformance/index.js +0 -19
- package/packages/tools/lib/conformance/index.js.map +0 -1
- package/packages/tools/lib/conformance/run.d.ts +0 -117
- package/packages/tools/lib/conformance/run.d.ts.map +0 -1
- package/packages/tools/lib/conformance/run.js +0 -0
- package/packages/tools/lib/conformance/run.js.map +0 -1
- package/packages/tools/lib/conformance/xmi.d.ts +0 -45
- package/packages/tools/lib/conformance/xmi.d.ts.map +0 -1
- package/packages/tools/lib/conformance/xmi.js +0 -148
- package/packages/tools/lib/conformance/xmi.js.map +0 -1
- package/packages/tools/lib/language/generated/ast.d.ts +0 -3565
- package/packages/tools/lib/language/generated/ast.d.ts.map +0 -1
- package/packages/tools/lib/language/generated/ast.js +0 -2975
- package/packages/tools/lib/language/generated/ast.js.map +0 -1
- package/packages/tools/lib/language/generated/grammar.d.ts +0 -7
- package/packages/tools/lib/language/generated/grammar.d.ts.map +0 -1
- package/packages/tools/lib/language/generated/grammar.js +0 -10643
- package/packages/tools/lib/language/generated/grammar.js.map +0 -1
- package/packages/tools/lib/language/generated/module.d.ts +0 -14
- package/packages/tools/lib/language/generated/module.d.ts.map +0 -1
- package/packages/tools/lib/language/generated/module.js +0 -21
- package/packages/tools/lib/language/generated/module.js.map +0 -1
- package/packages/tools/lib/language/memo-sysml-module.d.ts +0 -24
- package/packages/tools/lib/language/memo-sysml-module.d.ts.map +0 -1
- package/packages/tools/lib/language/memo-sysml-module.js +0 -20
- package/packages/tools/lib/language/memo-sysml-module.js.map +0 -1
- package/packages/tools/lib/model/builder.d.ts +0 -27
- package/packages/tools/lib/model/builder.d.ts.map +0 -1
- package/packages/tools/lib/model/builder.js +0 -2103
- package/packages/tools/lib/model/builder.js.map +0 -1
- package/packages/tools/lib/model/package-registry.d.ts +0 -62
- package/packages/tools/lib/model/package-registry.d.ts.map +0 -1
- package/packages/tools/lib/model/package-registry.js +0 -175
- package/packages/tools/lib/model/package-registry.js.map +0 -1
- package/packages/tools/lib/model/parser-utils.d.ts +0 -65
- package/packages/tools/lib/model/parser-utils.d.ts.map +0 -1
- package/packages/tools/lib/model/parser-utils.js +0 -201
- package/packages/tools/lib/model/parser-utils.js.map +0 -1
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts +0 -3
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.d.ts.map +0 -1
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js +0 -97
- package/packages/tools/lib/sysmlc/bin/memo-sysmlc.js.map +0 -1
- package/packages/tools/lib/sysmlc/index.d.ts +0 -2
- package/packages/tools/lib/sysmlc/index.d.ts.map +0 -1
- package/packages/tools/lib/sysmlc/index.js +0 -7
- package/packages/tools/lib/sysmlc/index.js.map +0 -1
- package/packages/tools/lib/sysmlc/server.d.ts +0 -29
- package/packages/tools/lib/sysmlc/server.d.ts.map +0 -1
- package/packages/tools/lib/sysmlc/server.js +0 -168
- package/packages/tools/lib/sysmlc/server.js.map +0 -1
- package/packages/tools/lib/toolchain/lowering.d.ts +0 -63
- package/packages/tools/lib/toolchain/lowering.d.ts.map +0 -1
- package/packages/tools/lib/toolchain/lowering.js +0 -100
- package/packages/tools/lib/toolchain/lowering.js.map +0 -1
- package/packages/tools/lib/toolchain/providers/internal.d.ts +0 -33
- package/packages/tools/lib/toolchain/providers/internal.d.ts.map +0 -1
- package/packages/tools/lib/toolchain/providers/internal.js +0 -286
- package/packages/tools/lib/toolchain/providers/internal.js.map +0 -1
- package/packages/tools/lib/toolchain/sysmlc-client.d.ts +0 -77
- package/packages/tools/lib/toolchain/sysmlc-client.d.ts.map +0 -1
- package/packages/tools/lib/toolchain/sysmlc-client.js +0 -0
- package/packages/tools/lib/toolchain/sysmlc-client.js.map +0 -1
- package/packages/tools/lib/validator/sysml-constraints.d.ts +0 -64
- package/packages/tools/lib/validator/sysml-constraints.d.ts.map +0 -1
- package/packages/tools/lib/validator/sysml-constraints.js +0 -251
- package/packages/tools/lib/validator/sysml-constraints.js.map +0 -1
- package/packages/tools/src/grammar/memo-sysml.langium +0 -1056
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"""The project's SysML v2 model, for analysis notebooks.
|
|
2
|
+
|
|
3
|
+
`load()` compiles the project with the compiler its settings select
|
|
4
|
+
(`toolchain.compiler`, as every MEMO command does) by running
|
|
5
|
+
`memo compile --out`, and reads the result: each document's SysML v2 API JSON,
|
|
6
|
+
the compiler's diagnostics, and an index of where each element is declared.
|
|
7
|
+
A notebook reads the model through this module alone, so changing the
|
|
8
|
+
project's compiler changes what every notebook analyses, with nothing else to
|
|
9
|
+
edit.
|
|
10
|
+
|
|
11
|
+
The `memo` command is found as `$MEMO_CLI` (a command line, for example
|
|
12
|
+
`node /path/to/memo.js`) or as `memo` on `PATH`.
|
|
13
|
+
|
|
14
|
+
import memo_model
|
|
15
|
+
model = memo_model.load()
|
|
16
|
+
parts = model.elements('PartUsage')
|
|
17
|
+
usages = model.elements('Usage', include_subtypes=True)
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
from __future__ import annotations
|
|
21
|
+
|
|
22
|
+
import json
|
|
23
|
+
import os
|
|
24
|
+
import shlex
|
|
25
|
+
import shutil
|
|
26
|
+
import subprocess
|
|
27
|
+
import tempfile
|
|
28
|
+
from dataclasses import dataclass
|
|
29
|
+
from pathlib import Path
|
|
30
|
+
|
|
31
|
+
FORMAT = "memo-compiled-model/1"
|
|
32
|
+
|
|
33
|
+
# Properties that hold an element's ownership, as the API JSON states them.
|
|
34
|
+
_OWNING_RELATIONSHIP = "owningRelationship"
|
|
35
|
+
_OWNED_RELATIONSHIP = "ownedRelationship"
|
|
36
|
+
_OWNED_RELATED_ELEMENT = "ownedRelatedElement"
|
|
37
|
+
_OWNING_RELATED_ELEMENT = "owningRelatedElement"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class ModelError(Exception):
|
|
41
|
+
"""The project could not be compiled into a model."""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@dataclass(frozen=True)
|
|
45
|
+
class Diagnostic:
|
|
46
|
+
severity: str
|
|
47
|
+
message: str
|
|
48
|
+
code: str | None = None
|
|
49
|
+
file: str | None = None
|
|
50
|
+
line: int | None = None
|
|
51
|
+
column: int | None = None
|
|
52
|
+
|
|
53
|
+
def __str__(self) -> str:
|
|
54
|
+
where = f"{self.file or ''}:{self.line or '?'}:{self.column or '?'}"
|
|
55
|
+
code = f" ({self.code})" if self.code else ""
|
|
56
|
+
return f"{where} {self.severity}{code}: {self.message}"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class Diagnostics:
|
|
60
|
+
"""What the compiler reported, by severity."""
|
|
61
|
+
|
|
62
|
+
def __init__(self, items: list[Diagnostic]):
|
|
63
|
+
self.all = items
|
|
64
|
+
self.errors = [d for d in items if d.severity == "error"]
|
|
65
|
+
self.warnings = [d for d in items if d.severity == "warning"]
|
|
66
|
+
self.infos = [d for d in items if d.severity not in ("error", "warning")]
|
|
67
|
+
|
|
68
|
+
def __len__(self) -> int:
|
|
69
|
+
return len(self.all)
|
|
70
|
+
|
|
71
|
+
def __iter__(self):
|
|
72
|
+
return iter(self.all)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _references(value) -> list[str]:
|
|
76
|
+
if isinstance(value, dict) and "@id" in value:
|
|
77
|
+
return [value["@id"]]
|
|
78
|
+
if isinstance(value, list):
|
|
79
|
+
return [item["@id"] for item in value if isinstance(item, dict) and "@id" in item]
|
|
80
|
+
return []
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class Element:
|
|
84
|
+
"""One element of the model, as its API JSON states it."""
|
|
85
|
+
|
|
86
|
+
def __init__(self, model: Model, data: dict, role: str):
|
|
87
|
+
self._model = model
|
|
88
|
+
self.data = data
|
|
89
|
+
self.role = role
|
|
90
|
+
|
|
91
|
+
def __repr__(self) -> str:
|
|
92
|
+
return f"<{self.type} {self.qualified_name or self.name or self.id}>"
|
|
93
|
+
|
|
94
|
+
@property
|
|
95
|
+
def id(self) -> str:
|
|
96
|
+
return self.data["@id"]
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def type(self) -> str:
|
|
100
|
+
"""The element's metaclass, for example `PartUsage`."""
|
|
101
|
+
return self.data["@type"]
|
|
102
|
+
|
|
103
|
+
def is_a(self, *metaclasses: str) -> bool:
|
|
104
|
+
"""Whether the element's metaclass is, or specializes, one of these."""
|
|
105
|
+
own = self._model._supertypes.get(self.type, [])
|
|
106
|
+
return any(name == self.type or name in own for name in metaclasses)
|
|
107
|
+
|
|
108
|
+
@property
|
|
109
|
+
def declared_name(self) -> str | None:
|
|
110
|
+
return self.data.get("declaredName")
|
|
111
|
+
|
|
112
|
+
@property
|
|
113
|
+
def name(self) -> str | None:
|
|
114
|
+
return self.data.get("name") or self.declared_name
|
|
115
|
+
|
|
116
|
+
@property
|
|
117
|
+
def qualified_name(self) -> str | None:
|
|
118
|
+
return self.data.get("qualifiedName") or self._model._index.get(self.id, {}).get("qualifiedName")
|
|
119
|
+
|
|
120
|
+
@property
|
|
121
|
+
def file(self) -> str | None:
|
|
122
|
+
return self._model._index.get(self.id, {}).get("file")
|
|
123
|
+
|
|
124
|
+
@property
|
|
125
|
+
def line(self) -> int | None:
|
|
126
|
+
return self._model._index.get(self.id, {}).get("line")
|
|
127
|
+
|
|
128
|
+
@property
|
|
129
|
+
def owner(self) -> Element | None:
|
|
130
|
+
"""The element that owns this one: a relationship's owning element, or
|
|
131
|
+
the element owning the relationship that owns this one."""
|
|
132
|
+
owning = _references(self.data.get(_OWNING_RELATED_ELEMENT))
|
|
133
|
+
if owning:
|
|
134
|
+
return self._model.element(owning[0])
|
|
135
|
+
relationship = _references(self.data.get(_OWNING_RELATIONSHIP))
|
|
136
|
+
if relationship:
|
|
137
|
+
owning_relationship = self._model.element(relationship[0])
|
|
138
|
+
if owning_relationship is not None:
|
|
139
|
+
owners = _references(owning_relationship.data.get(_OWNING_RELATED_ELEMENT))
|
|
140
|
+
if owners:
|
|
141
|
+
return self._model.element(owners[0])
|
|
142
|
+
return None
|
|
143
|
+
|
|
144
|
+
@property
|
|
145
|
+
def owned_relationships(self) -> list[Element]:
|
|
146
|
+
return self._model._resolve(_references(self.data.get(_OWNED_RELATIONSHIP)))
|
|
147
|
+
|
|
148
|
+
@property
|
|
149
|
+
def owned_elements(self) -> list[Element]:
|
|
150
|
+
"""The elements this one owns, through the relationships it owns."""
|
|
151
|
+
owned: list[Element] = []
|
|
152
|
+
for relationship in self.owned_relationships:
|
|
153
|
+
owned.extend(self._model._resolve(_references(relationship.data.get(_OWNED_RELATED_ELEMENT))))
|
|
154
|
+
return owned
|
|
155
|
+
|
|
156
|
+
@property
|
|
157
|
+
def related_elements(self) -> list[Element]:
|
|
158
|
+
"""For a relationship, every other element it references; the model's
|
|
159
|
+
elements only, not the standard library's."""
|
|
160
|
+
related: list[Element] = []
|
|
161
|
+
for key, value in self.data.items():
|
|
162
|
+
if key in (_OWNING_RELATED_ELEMENT, _OWNING_RELATIONSHIP, _OWNED_RELATIONSHIP) or key.startswith("@"):
|
|
163
|
+
continue
|
|
164
|
+
related.extend(self._model._resolve(_references(value)))
|
|
165
|
+
return [element for element in related if element.id != self.id]
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class Model:
|
|
169
|
+
"""The compiled model: its documents, elements and diagnostics."""
|
|
170
|
+
|
|
171
|
+
def __init__(self, compiled: dict):
|
|
172
|
+
if compiled.get("format") != FORMAT:
|
|
173
|
+
raise ModelError(f"memo compile wrote {compiled.get('format')!r}, expected {FORMAT!r}")
|
|
174
|
+
self.compiler: str = compiled["compiler"]
|
|
175
|
+
self.compiler_version: str | None = compiled.get("compilerVersion")
|
|
176
|
+
self.diagnostics = Diagnostics([Diagnostic(**d) for d in compiled.get("diagnostics", [])])
|
|
177
|
+
self._index: dict[str, dict] = compiled.get("index", {})
|
|
178
|
+
self._supertypes: dict[str, list[str]] = compiled.get("supertypes", {})
|
|
179
|
+
self.documents = [d["file"] for d in compiled.get("documents", []) if d["role"] == "project"]
|
|
180
|
+
self._elements: dict[str, Element] = {}
|
|
181
|
+
for document in compiled.get("documents", []):
|
|
182
|
+
for data in document["elements"]:
|
|
183
|
+
self._elements[data["@id"]] = Element(self, data, document["role"])
|
|
184
|
+
|
|
185
|
+
def element(self, element_id: str) -> Element | None:
|
|
186
|
+
return self._elements.get(element_id)
|
|
187
|
+
|
|
188
|
+
def _resolve(self, ids: list[str]) -> list[Element]:
|
|
189
|
+
return [self._elements[i] for i in ids if i in self._elements]
|
|
190
|
+
|
|
191
|
+
def elements(self, metaclass: str | None = None, include_subtypes: bool = False,
|
|
192
|
+
libraries: bool = False) -> list[Element]:
|
|
193
|
+
"""The project's elements of a metaclass (every one when None); with
|
|
194
|
+
`include_subtypes`, of its specializations too; with `libraries`, the
|
|
195
|
+
libraries' elements as well as the project's."""
|
|
196
|
+
found = []
|
|
197
|
+
for element in self._elements.values():
|
|
198
|
+
if not libraries and element.role != "project":
|
|
199
|
+
continue
|
|
200
|
+
if metaclass is None or element.type == metaclass or (include_subtypes and element.is_a(metaclass)):
|
|
201
|
+
found.append(element)
|
|
202
|
+
return found
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def find_project(start: Path | None = None) -> Path:
|
|
206
|
+
"""The nearest directory holding a MEMO project (`memo.package.yaml`)."""
|
|
207
|
+
start = (start or Path.cwd()).resolve()
|
|
208
|
+
for directory in (start, *start.parents):
|
|
209
|
+
if (directory / "memo.package.yaml").is_file():
|
|
210
|
+
return directory
|
|
211
|
+
raise ModelError(f"No MEMO project (memo.package.yaml) above {start}")
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def _memo_command() -> list[str]:
|
|
215
|
+
configured = os.environ.get("MEMO_CLI")
|
|
216
|
+
if configured:
|
|
217
|
+
return shlex.split(configured)
|
|
218
|
+
found = shutil.which("memo")
|
|
219
|
+
if found:
|
|
220
|
+
return [found]
|
|
221
|
+
raise ModelError("The memo command was not found. Put it on PATH, or set MEMO_CLI to the command that runs it.")
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def load(project: str | Path | None = None, force: bool = False) -> Model:
|
|
225
|
+
"""Compile the project with its selected compiler and read the model.
|
|
226
|
+
|
|
227
|
+
A project the compiler rejects raises ModelError with its errors; MEMO
|
|
228
|
+
analyses a model only once it is valid SysML."""
|
|
229
|
+
root = Path(project).resolve() if project else find_project()
|
|
230
|
+
with tempfile.TemporaryDirectory(prefix="memo-model-") as scratch:
|
|
231
|
+
out = Path(scratch) / "model.json"
|
|
232
|
+
command = [*_memo_command(), "compile", str(root), "--out", str(out)]
|
|
233
|
+
if force:
|
|
234
|
+
command.append("--force")
|
|
235
|
+
run = subprocess.run(command, capture_output=True, text=True)
|
|
236
|
+
if not out.exists():
|
|
237
|
+
detail = (run.stderr or run.stdout).strip() or f"exit status {run.returncode}"
|
|
238
|
+
raise ModelError(f"memo compile wrote no model: {detail}")
|
|
239
|
+
model = Model(json.loads(out.read_text(encoding="utf-8")))
|
|
240
|
+
if model.diagnostics.errors:
|
|
241
|
+
listed = "\n".join(str(d) for d in model.diagnostics.errors[:20])
|
|
242
|
+
raise ModelError(f"{model.compiler} reports {len(model.diagnostics.errors)} error(s):\n{listed}")
|
|
243
|
+
return model
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
"""Stage 1 export for the SysIDE provider.
|
|
2
|
+
|
|
3
|
+
Loads a project with SysIDE's Python API and, only when the load is clean,
|
|
4
|
+
writes what stage 2 consumes: the OMG SysML v2 API JSON of every document, and an
|
|
5
|
+
element index that the standard JSON does not carry (each element's qualified
|
|
6
|
+
name and source position). A load with errors writes nothing but the
|
|
7
|
+
diagnostics and exits 1, because stage 2 never runs on a failed stage 1.
|
|
8
|
+
|
|
9
|
+
Usage:
|
|
10
|
+
python memo_stage1_syside.py --out stage1.json --library DIR [--library DIR ...] PROJECT_DIR
|
|
11
|
+
python memo_stage1_syside.py --serve
|
|
12
|
+
|
|
13
|
+
`--library` directories (MEMO's ontology) are loaded and exported like the
|
|
14
|
+
project, but marked `"role": "library"` so stage 2 and a cache can tell them
|
|
15
|
+
apart. Files under `.venv` or `site-packages` are skipped: an analysis
|
|
16
|
+
environment may hold a copy of SysIDE's standard library.
|
|
17
|
+
|
|
18
|
+
`--serve` answers one JSON request per line on standard input, one JSON
|
|
19
|
+
response per line on standard output, until input ends. It keeps the libraries
|
|
20
|
+
loaded as a SysIDE environment between requests and writes their export once,
|
|
21
|
+
so a request costs the project alone, and it sends a project document again
|
|
22
|
+
only when that document's export changed (plans/memo-incremental-stage1.md):
|
|
23
|
+
|
|
24
|
+
{"project": DIR, "libraries": [DIR, ...], "libraryKey": KEY, "libraryOut": PATH}
|
|
25
|
+
|
|
26
|
+
`libraryKey` names the libraries' content; the caller computes it. The
|
|
27
|
+
libraries' handoff is written to `libraryOut` when that file does not exist.
|
|
28
|
+
The response is the project's handoff (`documents` and `index` of the project
|
|
29
|
+
alone, `diagnostics` of the libraries and the project), with `"library":
|
|
30
|
+
{"path": PATH}` naming the libraries' handoff, or `{"error": TEXT}`.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
from __future__ import annotations
|
|
34
|
+
|
|
35
|
+
import argparse
|
|
36
|
+
import json
|
|
37
|
+
import os
|
|
38
|
+
import re
|
|
39
|
+
import sys
|
|
40
|
+
import time
|
|
41
|
+
from pathlib import Path
|
|
42
|
+
|
|
43
|
+
import syside
|
|
44
|
+
import _syside
|
|
45
|
+
|
|
46
|
+
FORMAT = "memo-stage1/1"
|
|
47
|
+
ANSI = re.compile(r"\x1b\[[0-9;]*m")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
SKIPPED_DIRECTORIES = {".venv", "site-packages", "node_modules", ".git", "output"}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def sysml_files(root: Path) -> list[Path]:
|
|
54
|
+
# Pruned while walking: an analysis environment under the project can hold
|
|
55
|
+
# thousands of files, none of them the project's.
|
|
56
|
+
found = []
|
|
57
|
+
for directory, subdirectories, files in os.walk(root):
|
|
58
|
+
subdirectories[:] = [d for d in subdirectories if d not in SKIPPED_DIRECTORIES]
|
|
59
|
+
found.extend(Path(directory, f) for f in files if f.endswith(".sysml"))
|
|
60
|
+
return sorted(found)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def read_elements(text: str, referenced: set[str]) -> list:
|
|
64
|
+
"""A document's API JSON, read in one pass that drops `@uri` from references
|
|
65
|
+
and collects the ids they name. `@uri` locates the target's document by a
|
|
66
|
+
path relative to this machine's install, which stage 2 never reads (the
|
|
67
|
+
element index says where each element is) and which would make the output
|
|
68
|
+
differ from one machine to the next."""
|
|
69
|
+
def stripped(value: dict) -> dict:
|
|
70
|
+
value.pop("@uri", None)
|
|
71
|
+
if len(value) == 1 and "@id" in value:
|
|
72
|
+
referenced.add(value["@id"])
|
|
73
|
+
return value
|
|
74
|
+
return json.loads(text, object_hook=stripped)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def severity_of(diagnostic) -> str:
|
|
78
|
+
return str(getattr(diagnostic, "severity", "")).rsplit(".", 1)[-1].lower()
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def classify(project_root: Path, library_roots: list[Path], files: list[str] | None = None) -> tuple[list[Path], list[Path]]:
|
|
82
|
+
"""The library files and the project files, each loaded once. `files` are the
|
|
83
|
+
project's files as the caller resolved them (an `include` root may sit outside
|
|
84
|
+
the project directory); without them the project directory is walked."""
|
|
85
|
+
# Roots may nest (`src` and `src/methodology`): each file is loaded once.
|
|
86
|
+
library_files = list(dict.fromkeys(f for root in library_roots for f in sysml_files(root)))
|
|
87
|
+
# A library root may sit inside the project (a project's own methodology):
|
|
88
|
+
# its files load once, as library, or every namespace in them is declared twice.
|
|
89
|
+
in_library = set(library_files)
|
|
90
|
+
candidates = sorted(dict.fromkeys(Path(f).resolve() for f in files)) if files is not None else sysml_files(project_root)
|
|
91
|
+
project_files = [f for f in candidates if f not in in_library]
|
|
92
|
+
return library_files, project_files
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def reported(diagnostics) -> list[dict]:
|
|
96
|
+
out = []
|
|
97
|
+
for diagnostic in diagnostics.all:
|
|
98
|
+
# The full message is what `syside check` prints: the snippet with its
|
|
99
|
+
# carets (the span's width) and any related note. Colour is stripped.
|
|
100
|
+
text = ANSI.sub("", diagnostic.full_message).rstrip()
|
|
101
|
+
out.append({"severity": severity_of(diagnostic), "text": text})
|
|
102
|
+
return out
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def has_errors(diagnostics: list[dict]) -> bool:
|
|
106
|
+
return any(d["severity"] == "error" for d in diagnostics)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
OPTIONS = None
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def serialized(document) -> str:
|
|
113
|
+
"""A document's API JSON as SysIDE writes it: the cheapest part of an export."""
|
|
114
|
+
global OPTIONS
|
|
115
|
+
if OPTIONS is None:
|
|
116
|
+
OPTIONS = syside.SerializationOptions.minimal().with_options(use_standard_names=True)
|
|
117
|
+
return _syside.json.dumps(document.root_node, OPTIONS)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def export_document(document, role: str, base: Path, raw: str | None = None) -> tuple[dict, dict[str, dict], set[str]]:
|
|
121
|
+
"""One document's API JSON, the index of the elements it declares, and the
|
|
122
|
+
ids its references name. `raw` is its serialization, when already made."""
|
|
123
|
+
path = Path(document.url.path).resolve()
|
|
124
|
+
relative = os.path.relpath(path, base)
|
|
125
|
+
referenced: set[str] = set()
|
|
126
|
+
elements = read_elements(raw if raw is not None else serialized(document), referenced)
|
|
127
|
+
exported_ids = {element["@id"] for element in elements}
|
|
128
|
+
index: dict[str, dict] = {}
|
|
129
|
+
for element in document.all_nodes(syside.Element):
|
|
130
|
+
if str(element.element_id) not in exported_ids:
|
|
131
|
+
continue
|
|
132
|
+
entry = {"file": relative, "role": role, "root": str(base)}
|
|
133
|
+
qualified = element.qualified_name
|
|
134
|
+
if qualified:
|
|
135
|
+
entry["qualifiedName"] = str(qualified)
|
|
136
|
+
cst = element.cst_node
|
|
137
|
+
if cst is not None:
|
|
138
|
+
point = cst.start_point
|
|
139
|
+
entry.update(startByte=cst.start_byte, endByte=cst.end_byte,
|
|
140
|
+
line=point.line + 1, column=point.character + 1)
|
|
141
|
+
index[str(element.element_id)] = entry
|
|
142
|
+
return {"file": relative, "role": role, "root": str(base), "elements": elements}, index, referenced
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def base_of(path: Path, role: str, project_root: Path, library_roots: list[Path]) -> Path:
|
|
146
|
+
return project_root if role == "project" else next(
|
|
147
|
+
(root for root in library_roots if root in path.parents), path.parent)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def export(model, files: list[Path], role: str, project_root: Path, library_roots: list[Path],
|
|
151
|
+
standard: dict[str, str | None], carried: frozenset[str] = frozenset()):
|
|
152
|
+
"""The API JSON of the model's documents among `files`, all of one role,
|
|
153
|
+
with the element index of what they declare and of the standard library
|
|
154
|
+
elements they reference (`standard`, id to qualified name). `carried` are
|
|
155
|
+
the ids another handoff (the libraries') indexes, left to it."""
|
|
156
|
+
wanted_files = {str(f) for f in files}
|
|
157
|
+
referenced: set[str] = set()
|
|
158
|
+
documents = []
|
|
159
|
+
index: dict[str, dict] = {}
|
|
160
|
+
for shared in model.user_docs:
|
|
161
|
+
with shared.lock() as document:
|
|
162
|
+
path = Path(document.url.path).resolve()
|
|
163
|
+
if str(path) not in wanted_files:
|
|
164
|
+
continue
|
|
165
|
+
exported, entries, names = export_document(document, role, base_of(path, role, project_root, library_roots))
|
|
166
|
+
documents.append(exported)
|
|
167
|
+
index.update(entries)
|
|
168
|
+
referenced |= names
|
|
169
|
+
index_standard_references(documents, index, referenced, standard, carried)
|
|
170
|
+
return documents, index
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def standard_names(model) -> dict[str, str | None]:
|
|
174
|
+
"""Each standard library element's qualified name (None for an unnamed one),
|
|
175
|
+
by id: read once, since walking the library is most of an export's cost."""
|
|
176
|
+
names: dict[str, str | None] = {}
|
|
177
|
+
for shared in model.stdlib_docs:
|
|
178
|
+
with shared.lock() as document:
|
|
179
|
+
for element in document.all_nodes(syside.Element):
|
|
180
|
+
qualified = element.qualified_name
|
|
181
|
+
names[str(element.element_id)] = str(qualified) if qualified else None
|
|
182
|
+
return names
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def index_standard_references(documents: list[dict], index: dict[str, dict], referenced: set[str],
|
|
186
|
+
standard: dict[str, str | None], carried: frozenset[str]) -> None:
|
|
187
|
+
"""Index the standard library elements the documents reference but the
|
|
188
|
+
handoff does not carry, by qualified name, so stage 2 can name a type such
|
|
189
|
+
as ScalarValues::Boolean."""
|
|
190
|
+
exported_ids = {e["@id"] for d in documents for e in d["elements"]}
|
|
191
|
+
for element_id in referenced - exported_ids - carried - set(index):
|
|
192
|
+
if element_id in standard:
|
|
193
|
+
qualified = standard[element_id]
|
|
194
|
+
index[element_id] = {"role": "standard", **({"qualifiedName": qualified} if qualified else {})}
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def handoff(clean: bool, diagnostics: list[dict], **rest) -> dict:
|
|
198
|
+
return {"format": FORMAT, "provider": "syside", "providerVersion": syside.__version__,
|
|
199
|
+
"clean": clean, "diagnostics": diagnostics, **rest}
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def main() -> int:
|
|
203
|
+
parser = argparse.ArgumentParser(description=__doc__.split("\n\n")[0])
|
|
204
|
+
parser.add_argument("project", type=Path, nargs="?")
|
|
205
|
+
parser.add_argument("--library", type=Path, action="append", default=[])
|
|
206
|
+
parser.add_argument("--out", type=Path)
|
|
207
|
+
parser.add_argument("--serve", action="store_true")
|
|
208
|
+
args = parser.parse_args()
|
|
209
|
+
if args.serve:
|
|
210
|
+
return serve()
|
|
211
|
+
if args.project is None or args.out is None:
|
|
212
|
+
parser.error("PROJECT_DIR and --out are required unless --serve")
|
|
213
|
+
|
|
214
|
+
project_root = args.project.resolve()
|
|
215
|
+
library_roots = [lib.resolve() for lib in args.library]
|
|
216
|
+
library_files, project_files = classify(project_root, library_roots)
|
|
217
|
+
|
|
218
|
+
started = time.perf_counter()
|
|
219
|
+
model, diagnostics = syside.try_load_model([str(f) for f in library_files + project_files])
|
|
220
|
+
loaded = time.perf_counter()
|
|
221
|
+
|
|
222
|
+
found = reported(diagnostics)
|
|
223
|
+
if has_errors(found):
|
|
224
|
+
json.dump(handoff(False, found), args.out.open("w"))
|
|
225
|
+
for d in found:
|
|
226
|
+
if d["severity"] == "error":
|
|
227
|
+
print(d["text"], file=sys.stderr)
|
|
228
|
+
return 1
|
|
229
|
+
|
|
230
|
+
standard = standard_names(model)
|
|
231
|
+
documents, index = export(model, library_files, "library", project_root, library_roots, standard)
|
|
232
|
+
project_documents, project_index = export(model, project_files, "project", project_root, library_roots, standard)
|
|
233
|
+
documents += project_documents
|
|
234
|
+
index.update(project_index)
|
|
235
|
+
exported = time.perf_counter()
|
|
236
|
+
|
|
237
|
+
json.dump(handoff(True, found, documents=documents, index=index,
|
|
238
|
+
timings={"loadSeconds": round(loaded - started, 3),
|
|
239
|
+
"exportSeconds": round(exported - loaded, 3)}),
|
|
240
|
+
args.out.open("w"))
|
|
241
|
+
return 0
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class Libraries:
|
|
245
|
+
"""The libraries loaded once, as an environment a project loads over."""
|
|
246
|
+
|
|
247
|
+
def __init__(self, key: str, roots: list[Path], files: list[Path]):
|
|
248
|
+
self.key = key
|
|
249
|
+
self.roots = roots
|
|
250
|
+
self.files = files
|
|
251
|
+
model, diagnostics = syside.try_load_model([str(f) for f in files])
|
|
252
|
+
self.model = model
|
|
253
|
+
self.diagnostics = reported(diagnostics)
|
|
254
|
+
self.environment = None if has_errors(self.diagnostics) else model.to_environment()
|
|
255
|
+
self.standard = standard_names(model)
|
|
256
|
+
self.carried: frozenset[str] | None = None
|
|
257
|
+
|
|
258
|
+
def write(self, out: Path, project_root: Path) -> None:
|
|
259
|
+
"""The libraries' handoff, written once per content (`libraryKey`), and
|
|
260
|
+
beside it the ids it indexes, which a project's handoff leaves to it."""
|
|
261
|
+
ids = out.with_name(out.name + ".ids")
|
|
262
|
+
if self.carried is not None and out.exists():
|
|
263
|
+
return
|
|
264
|
+
if out.exists() and ids.exists():
|
|
265
|
+
self.carried = frozenset(ids.read_text().split())
|
|
266
|
+
return
|
|
267
|
+
documents, index = export(self.model, self.files, "library", project_root, self.roots, self.standard)
|
|
268
|
+
self.carried = frozenset(index)
|
|
269
|
+
out.parent.mkdir(parents=True, exist_ok=True)
|
|
270
|
+
partial = f".{os.getpid()}.partial"
|
|
271
|
+
written = out.with_name(out.name + partial)
|
|
272
|
+
json.dump(handoff(True, self.diagnostics, documents=documents, index=index), written.open("w"))
|
|
273
|
+
listed = ids.with_name(ids.name + partial)
|
|
274
|
+
listed.write_text("\n".join(sorted(self.carried)))
|
|
275
|
+
listed.replace(ids)
|
|
276
|
+
written.replace(out)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
class Exported:
|
|
280
|
+
"""A project document's export as last sent: its text, its serialization,
|
|
281
|
+
export and index, and the ids it references."""
|
|
282
|
+
|
|
283
|
+
def __init__(self, text: bytes, raw: str, document: dict, index: dict[str, dict], referenced: set[str]):
|
|
284
|
+
self.text = text
|
|
285
|
+
self.raw = raw
|
|
286
|
+
self.document = document
|
|
287
|
+
self.index = index
|
|
288
|
+
self.referenced = referenced
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
class Project:
|
|
292
|
+
"""A project's documents as this worker last exported them, so a request
|
|
293
|
+
sends again only the documents whose export changed. A document whose text
|
|
294
|
+
changed is exported again; one whose text did not is serialized and compared
|
|
295
|
+
with what was sent, since an edit elsewhere can change what it resolves to.
|
|
296
|
+
`token` names what was last sent: a caller holding it may be sent
|
|
297
|
+
`{"kept": true}` for a document it already has."""
|
|
298
|
+
|
|
299
|
+
def __init__(self):
|
|
300
|
+
self.exported: dict[str, Exported] = {}
|
|
301
|
+
self.libraries_key: str | None = None
|
|
302
|
+
self.token = 0
|
|
303
|
+
|
|
304
|
+
def answer(self, model, project_files: list[Path], project_root: Path, libraries: Libraries, known) -> tuple[list[dict], dict]:
|
|
305
|
+
texts = {str(f): f.read_bytes() for f in project_files}
|
|
306
|
+
reusable = known == self.token and self.libraries_key == libraries.key and set(texts) == set(self.exported)
|
|
307
|
+
if not reusable:
|
|
308
|
+
self.exported = {}
|
|
309
|
+
sent: set[str] = set()
|
|
310
|
+
for shared in model.user_docs:
|
|
311
|
+
with shared.lock() as document:
|
|
312
|
+
path = str(Path(document.url.path).resolve())
|
|
313
|
+
if path not in texts:
|
|
314
|
+
continue
|
|
315
|
+
previous = self.exported.get(path)
|
|
316
|
+
if previous is not None and previous.text == texts[path]:
|
|
317
|
+
raw = serialized(document)
|
|
318
|
+
if raw == previous.raw:
|
|
319
|
+
continue
|
|
320
|
+
else:
|
|
321
|
+
raw = None
|
|
322
|
+
raw = raw if raw is not None else serialized(document)
|
|
323
|
+
exported, index, referenced = export_document(document, "project", project_root, raw)
|
|
324
|
+
self.exported[path] = Exported(texts[path], raw, exported, index, referenced)
|
|
325
|
+
sent.add(path)
|
|
326
|
+
self.libraries_key = libraries.key
|
|
327
|
+
self.token += 1
|
|
328
|
+
documents = []
|
|
329
|
+
referenced: set[str] = set()
|
|
330
|
+
declared: set[str] = set()
|
|
331
|
+
for f in project_files:
|
|
332
|
+
entry = self.exported[str(f)]
|
|
333
|
+
referenced |= entry.referenced
|
|
334
|
+
declared |= entry.index.keys()
|
|
335
|
+
if str(f) in sent:
|
|
336
|
+
documents.append({**entry.document, "index": entry.index})
|
|
337
|
+
else:
|
|
338
|
+
documents.append({"file": entry.document["file"], "kept": True})
|
|
339
|
+
standard: dict[str, dict] = {}
|
|
340
|
+
for element_id in referenced - declared - (libraries.carried or frozenset()):
|
|
341
|
+
if element_id in libraries.standard:
|
|
342
|
+
qualified = libraries.standard[element_id]
|
|
343
|
+
standard[element_id] = {"role": "standard", **({"qualifiedName": qualified} if qualified else {})}
|
|
344
|
+
return documents, standard
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
def answer(request: dict, libraries: Libraries | None, project: Project) -> tuple[dict, Libraries | None]:
|
|
348
|
+
project_root = Path(request["project"]).resolve()
|
|
349
|
+
library_roots = [Path(root).resolve() for root in request.get("libraries", [])]
|
|
350
|
+
library_files, project_files = classify(project_root, library_roots, request.get("files"))
|
|
351
|
+
started = time.perf_counter()
|
|
352
|
+
if libraries is None or libraries.key != request["libraryKey"] or libraries.files != library_files:
|
|
353
|
+
libraries = Libraries(request["libraryKey"], library_roots, library_files)
|
|
354
|
+
loaded_libraries = time.perf_counter()
|
|
355
|
+
if libraries.environment is None:
|
|
356
|
+
return handoff(False, libraries.diagnostics), libraries
|
|
357
|
+
out = Path(request["libraryOut"])
|
|
358
|
+
libraries.write(out, project_root)
|
|
359
|
+
model, diagnostics = syside.try_load_model([str(f) for f in project_files], environment=libraries.environment)
|
|
360
|
+
loaded = time.perf_counter()
|
|
361
|
+
found = libraries.diagnostics + reported(diagnostics)
|
|
362
|
+
if has_errors(found):
|
|
363
|
+
return handoff(False, found), libraries
|
|
364
|
+
documents, standard = project.answer(model, project_files, project_root, libraries, request.get("known"))
|
|
365
|
+
exported = time.perf_counter()
|
|
366
|
+
return handoff(True, found, documents=documents, index=standard, library={"path": str(out)},
|
|
367
|
+
token=project.token,
|
|
368
|
+
timings={"librarySeconds": round(loaded_libraries - started, 3),
|
|
369
|
+
"loadSeconds": round(loaded - loaded_libraries, 3),
|
|
370
|
+
"exportSeconds": round(exported - loaded, 3)}), libraries
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
def serve() -> int:
|
|
374
|
+
libraries: Libraries | None = None
|
|
375
|
+
project = Project()
|
|
376
|
+
for line in sys.stdin:
|
|
377
|
+
if not line.strip():
|
|
378
|
+
continue
|
|
379
|
+
try:
|
|
380
|
+
response, libraries = answer(json.loads(line), libraries, project)
|
|
381
|
+
except Exception as error: # reported to the caller, the worker stays up
|
|
382
|
+
response = {"error": f"{type(error).__name__}: {error}"}
|
|
383
|
+
sys.stdout.write(json.dumps(response) + "\n")
|
|
384
|
+
sys.stdout.flush()
|
|
385
|
+
return 0
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
if __name__ == "__main__":
|
|
389
|
+
sys.exit(main())
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAgIA,wBAAsB,YAAY,CAC9B,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/E,OAAO,CAAC,IAAI,CAAC,CAwGf"}
|