@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
|
@@ -11,20 +11,42 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
11
11
|
import { createHash } from 'node:crypto';
|
|
12
12
|
import { execSync } from 'node:child_process';
|
|
13
13
|
import chalk from 'chalk';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { modelToDTO, apiPackageMetadata, loadMethodologyDescriptor, deriveModelViews, collectApiConstraints, loadProjectSettings, } from '@memoarchitect/tools';
|
|
15
|
+
import { sourceGraphToDTO, viewSourceFiles } from '@memoarchitect/tools';
|
|
16
|
+
import { buildSourceGraphFromPackages } from '../model/source-graph.js';
|
|
17
|
+
import { computeWorkspaceMembership, selectWorkspace, workspaceMembershipToDTO } from '../model/workspace-membership.js';
|
|
16
18
|
import { validateModel } from '@memoarchitect/tools';
|
|
17
19
|
import { computeCompleteness } from '@memoarchitect/tools';
|
|
18
20
|
import { createDevServer } from '../server/dev-server.js';
|
|
19
21
|
import { createProjectWatcher, createOntologyWatcher } from '../server/file-watcher.js';
|
|
20
|
-
import {
|
|
22
|
+
import { layoutBlindRevision } from '../model/view-layout-block.js';
|
|
23
|
+
import { setReadOnlyRoots } from '../server/write-guard.js';
|
|
24
|
+
import { readLegacyLayouts } from '../model/view-layout-migration.js';
|
|
25
|
+
import { checkLockFile, lockableDependencies } from '../lock.js';
|
|
21
26
|
import { findSysmlFiles } from '../model/sysml-files.js';
|
|
22
27
|
import { enforceRuntimeBudget } from '../server/runtime-budget.js';
|
|
23
28
|
import { withToolchainOverrides } from '../toolchain/schema.js';
|
|
29
|
+
import { format } from 'node:util';
|
|
30
|
+
import { sourceFingerprint } from '../toolchain/source-fingerprint.js';
|
|
31
|
+
import { newToken, removeDevServerRecord, writeDevServerRecord } from '../server/dev-validate.js';
|
|
32
|
+
import { createVersionServers } from '../server/version-servers.js';
|
|
33
|
+
import { compileDeviceDhf } from '../dhf/device-dhf.js';
|
|
34
|
+
import { evaluateWorkspaceGuide } from '../methodology/guide-service.js';
|
|
35
|
+
import { computeChangeImpact } from '../model/impact.js';
|
|
36
|
+
import { runValidation, validationExitCode } from './validate.js';
|
|
37
|
+
import { compileResolvedProject } from '../toolchain/operations.js';
|
|
24
38
|
import { resolveToolchain } from '../toolchain/effective.js';
|
|
25
39
|
import { defaultRegistry } from '../toolchain/default-registry.js';
|
|
26
40
|
import { computeStandardsReport, readDeclaredRegimes } from '../dhf/standards-report.js';
|
|
27
41
|
import { loadStandardsLibrary } from '../dhf/standards-library.js';
|
|
42
|
+
import { loadProjectModel, stage1CacheDir } from '../toolchain/project-model.js';
|
|
43
|
+
import { apiEnumerations, apiProjectSourcePackages, resolutionLoads } from '../stage2/project-from-api.js';
|
|
44
|
+
import { outlinesFromHandoff } from '../authoring/outline-source.js';
|
|
45
|
+
import { outlineIdentityTable } from '../authoring/outline-identity.js';
|
|
46
|
+
import { discoverProjectSources } from '../model/native-project.js';
|
|
47
|
+
import { isRulePackageInScope, resolveProjectRules, scopedSubjectIds } from '../model/effective-scope.js';
|
|
48
|
+
import { isProjectSource } from '../stage2/project-from-api.js';
|
|
49
|
+
import { readClauseFacts } from '../validator/rule-clauses.js';
|
|
28
50
|
/** Gather git info for model metadata */
|
|
29
51
|
function getGitInfo(cwd) {
|
|
30
52
|
const git = (cmd) => {
|
|
@@ -48,21 +70,6 @@ function getGitInfo(cwd) {
|
|
|
48
70
|
gitDirty: porcelain ? true : undefined,
|
|
49
71
|
};
|
|
50
72
|
}
|
|
51
|
-
/** Presentation enums are model facts, so ship their literal sets to the canvas. */
|
|
52
|
-
function collectEnumerations(documents) {
|
|
53
|
-
const found = new Map();
|
|
54
|
-
const visit = (member) => {
|
|
55
|
-
if (member?.$type === 'EnumDefinition' && member.name) {
|
|
56
|
-
found.set(member.name, { name: member.name, literals: (member.literals ?? []).map((literal) => literal.name).filter(Boolean) });
|
|
57
|
-
}
|
|
58
|
-
for (const child of member?.members ?? [])
|
|
59
|
-
visit(child);
|
|
60
|
-
};
|
|
61
|
-
for (const document of documents)
|
|
62
|
-
for (const member of document.document.parseResult.value.members)
|
|
63
|
-
visit(member);
|
|
64
|
-
return [...found.values()];
|
|
65
|
-
}
|
|
66
73
|
/**
|
|
67
74
|
* Strip stale relationship types from user diagrams, warn on any dropped.
|
|
68
75
|
* Diagrams themselves are kept — only their stale relationshipType filter entries are removed.
|
|
@@ -100,7 +107,7 @@ function computeOntologyHash(registries) {
|
|
|
100
107
|
export async function devCommand(options) {
|
|
101
108
|
const bootstrapStartedAt = performance.now();
|
|
102
109
|
const cwd = process.cwd();
|
|
103
|
-
const port = options.port || 3000;
|
|
110
|
+
const port = options.readOnly ? (options.port ?? 0) : (options.port || 3000);
|
|
104
111
|
const host = '127.0.0.1';
|
|
105
112
|
console.log(chalk.bold('\n🚀 MEMO Dev Server\n'));
|
|
106
113
|
// ── bootstrap: runs once ───────────────────────────────────────────────────
|
|
@@ -109,18 +116,32 @@ export async function devCommand(options) {
|
|
|
109
116
|
const toolchain = resolveToolchain(config, defaultRegistry);
|
|
110
117
|
const gitInfo = getGitInfo(cwd);
|
|
111
118
|
let buildCount = 0;
|
|
112
|
-
console.log(chalk.gray(`
|
|
113
|
-
console.log(chalk.gray(`Toolchain:
|
|
114
|
-
+ `packager=${toolchain.packager}`));
|
|
119
|
+
console.log(chalk.gray(`Model: ${config.modelName}`));
|
|
120
|
+
console.log(chalk.gray(`Toolchain: ${toolchain.selections.map(s => `${s.role === 'package' ? 'packager' : s.role}=${s.provider}`).join(' ')}`));
|
|
115
121
|
for (const note of toolchain.deprecations)
|
|
116
122
|
console.log(chalk.yellow(` ⚠ ${note}`));
|
|
117
|
-
|
|
123
|
+
// The compiler resolves the project from what it compiled, so MEMO parses
|
|
124
|
+
// neither the ontology nor the closure; a stage 1 that reports an error
|
|
125
|
+
// stops here, as it stops `memo validate`.
|
|
126
|
+
let compiled;
|
|
127
|
+
try {
|
|
128
|
+
compiled = await loadProjectModel({ projectRoot: cwd, config });
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.error(chalk.red(`\n❌ ${error instanceof Error ? error.message : error}\n`));
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
console.log(chalk.gray(`Stage 1: ${toolchain.lowering} ${compiled.providerVersion ?? ''}${compiled.cached ? ' (reused .memo/stage1)' : ''}`));
|
|
135
|
+
const nativeResolution = compiled.resolution ?? (() => {
|
|
136
|
+
console.error(chalk.red(`\n❌ ${toolchain.lowering} resolved no project: no entrypoint was compiled.\n`));
|
|
137
|
+
return process.exit(1);
|
|
138
|
+
})();
|
|
118
139
|
for (const d of nativeResolution.diagnostics) {
|
|
119
140
|
console.log(chalk.yellow(` ⚠ ${d.code}: ${d.message}`));
|
|
120
141
|
}
|
|
121
142
|
const lockCheck = checkLockFile(cwd, nativeResolution.selectedRoots.map(root => ({
|
|
122
143
|
...root, origin: 'ontology', importDepth: 1,
|
|
123
|
-
})));
|
|
144
|
+
})), lockableDependencies(nativeResolution.dependencies));
|
|
124
145
|
if (!lockCheck.ok) {
|
|
125
146
|
console.error(chalk.red(`\n❌ ${lockCheck.message}\n`));
|
|
126
147
|
process.exit(1);
|
|
@@ -132,38 +153,26 @@ export async function devCommand(options) {
|
|
|
132
153
|
let ontologyRegistries;
|
|
133
154
|
let ontologyRoots = [];
|
|
134
155
|
let provenance;
|
|
135
|
-
let ontologyDocuments = [];
|
|
136
156
|
let ontologyHash = '';
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
ontologyDocuments = loadResult.parsedDocuments;
|
|
149
|
-
if (ontologyRegistries.kindRegistry)
|
|
150
|
-
Object.freeze(ontologyRegistries.kindRegistry);
|
|
151
|
-
if (ontologyRegistries.relationshipRegistry)
|
|
152
|
-
Object.freeze(ontologyRegistries.relationshipRegistry);
|
|
153
|
-
ontologyHash = computeOntologyHash(ontologyRegistries);
|
|
154
|
-
const kr = loadResult.registries.kindRegistry;
|
|
155
|
-
const rr = loadResult.registries.relationshipRegistry;
|
|
156
|
-
console.log(chalk.gray(`Ontology: ${kr?.size ?? 0} kinds, ${rr?.size ?? 0} relationships ` +
|
|
157
|
-
`(from ${loadResult.fileCount} SysML files)`));
|
|
158
|
-
}
|
|
157
|
+
if (compiled.registries) {
|
|
158
|
+
ontologyRegistries = compiled.registries;
|
|
159
|
+
ontologyRoots = [...new Set(nativeResolution.selectedRoots.map(root => root.sysmlDir))];
|
|
160
|
+
provenance = compiled.registries.provenance;
|
|
161
|
+
if (ontologyRegistries.kindRegistry)
|
|
162
|
+
Object.freeze(ontologyRegistries.kindRegistry);
|
|
163
|
+
if (ontologyRegistries.relationshipRegistry)
|
|
164
|
+
Object.freeze(ontologyRegistries.relationshipRegistry);
|
|
165
|
+
ontologyHash = computeOntologyHash(ontologyRegistries);
|
|
166
|
+
console.log(chalk.gray(`Ontology: ${ontologyRegistries.kindRegistry?.size ?? 0} kinds, `
|
|
167
|
+
+ `${ontologyRegistries.relationshipRegistry?.size ?? 0} relationships (from ${toolchain.lowering}'s handoff)`));
|
|
159
168
|
}
|
|
160
|
-
|
|
161
|
-
console.log(chalk.yellow(` ⚠
|
|
169
|
+
else {
|
|
170
|
+
console.log(chalk.yellow(` ⚠ ${toolchain.lowering}'s handoff stated no ontology registries`));
|
|
162
171
|
}
|
|
163
172
|
// Phase B — methodology descriptor (data-only; no UI consumer yet)
|
|
164
173
|
let methodologyDescriptor = { folders: [], errors: [] };
|
|
165
174
|
try {
|
|
166
|
-
methodologyDescriptor = await loadMethodologyDescriptor(cwd, nativeResolution);
|
|
175
|
+
methodologyDescriptor = await loadMethodologyDescriptor(cwd, nativeResolution, compiled.api);
|
|
167
176
|
const folderCount = methodologyDescriptor.folders.length;
|
|
168
177
|
const totalParts = methodologyDescriptor.folders.reduce((s, f) => s + Object.values(f.parts).reduce((a, p) => a + p.length, 0), 0);
|
|
169
178
|
const totalDefs = methodologyDescriptor.folders.reduce((s, f) => s + f.partDefs.length, 0);
|
|
@@ -187,42 +196,130 @@ export async function devCommand(options) {
|
|
|
187
196
|
}
|
|
188
197
|
// ── end bootstrap ──────────────────────────────────────────────────────────
|
|
189
198
|
// ── rebuildProject: hot path — no ontology reload ─────────────────────────
|
|
190
|
-
const projectParser = new IncrementalProjectParser(cwd);
|
|
191
199
|
/** Revision of the newest rebuild that parsed — what a client is still showing. */
|
|
192
200
|
let lastGoodRevision = 0;
|
|
201
|
+
/**
|
|
202
|
+
* What the last accepted stage 1 built: a rejected edit leaves the model,
|
|
203
|
+
* its identities, rules and registries where the last valid revision put
|
|
204
|
+
* them. There is no second opinion to fall back on.
|
|
205
|
+
*/
|
|
206
|
+
/** The project as last built, for previewing and writing a user's rule. */
|
|
207
|
+
let ruleContext;
|
|
208
|
+
let latestClauses = [];
|
|
209
|
+
let lastPackages = [];
|
|
210
|
+
let lastAccepted;
|
|
211
|
+
// The newest compile, with the fingerprint of the sources it read (taken
|
|
212
|
+
// before it ran): what `memo validate` is answered from while the
|
|
213
|
+
// fingerprint still matches the files on disk.
|
|
214
|
+
let latestCompile;
|
|
215
|
+
/** The layout-blind revision of every source file as of the last rebuild. */
|
|
216
|
+
let lastSourceHashes = {};
|
|
193
217
|
async function rebuildProject(changedFiles) {
|
|
194
218
|
const rebuildStartedAt = performance.now();
|
|
195
219
|
buildCount++;
|
|
220
|
+
const sysmlFiles = findSysmlFiles(cwd);
|
|
221
|
+
let errors = [];
|
|
222
|
+
// `toolchain.compiler` decides where the model comes from. A stage 1
|
|
223
|
+
// that reports errors makes this build incoherent, so a client keeps
|
|
224
|
+
// showing the last good one.
|
|
225
|
+
// The same resolved compile every command runs, reusing `.memo/stage1/`.
|
|
226
|
+
const fingerprint = sourceFingerprint(cwd);
|
|
227
|
+
const stage1 = await compileResolvedProject({ config, projectDir: cwd, cacheDir: stage1CacheDir(cwd) });
|
|
228
|
+
latestCompile = { fingerprint, stage1 };
|
|
229
|
+
// The methodology follows the project's imports, which an edit can
|
|
230
|
+
// change: from the compiled resolution.
|
|
196
231
|
try {
|
|
197
|
-
|
|
232
|
+
if (stage1.api)
|
|
233
|
+
methodologyDescriptor = await loadMethodologyDescriptor(cwd, stage1.resolution, stage1.api);
|
|
198
234
|
}
|
|
199
235
|
catch {
|
|
200
236
|
// keep last good descriptor on transient parse failure
|
|
201
237
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
238
|
+
if (!stage1.accepted || !stage1.model) {
|
|
239
|
+
errors = [...errors, ...stage1.diagnostics.filter(d => d.severity === 'error').map(d => ({
|
|
240
|
+
file: d.file ?? '', line: d.range?.start.line, message: d.message, code: d.code,
|
|
241
|
+
}))];
|
|
242
|
+
}
|
|
243
|
+
const accepted = stage1.accepted && stage1.model && stage1.api;
|
|
244
|
+
const kept = !accepted ? lastAccepted : undefined;
|
|
245
|
+
// A rejected first build has nothing to keep: the dev server starts only
|
|
246
|
+
// from a valid project, so `lastAccepted` is set by the bootstrap compile.
|
|
247
|
+
if (!accepted && !kept)
|
|
248
|
+
throw new Error('No accepted build to show');
|
|
249
|
+
const model = accepted ? stage1.model : kept.model;
|
|
250
|
+
// Identities for the authoring write-back: each element's declaration in
|
|
251
|
+
// its file's outline (plans/memo-write-back-from-handoff.md), read from
|
|
252
|
+
// the handoff stage 1 built the model from.
|
|
253
|
+
const irIdentities = kept?.irIdentities ?? outlineIdentityTable(outlinesFromHandoff(resolve(cwd), stage1.api), model.elements.values(), resolve(cwd));
|
|
254
|
+
// An accepted stage 1 carries the ontology it resolved, rules included,
|
|
255
|
+
// so they are read from its handoff rather than from MEMO's own parse.
|
|
256
|
+
// The rules resolution loads, and the project's own: a rule the project
|
|
257
|
+
// wrote in a file nothing imports still runs, as in `memo validate`.
|
|
258
|
+
const resolutionOf = stage1.resolution ?? nativeResolution;
|
|
259
|
+
const ruleFileLoaded = resolutionOf
|
|
260
|
+
? (file) => resolutionLoads(resolutionOf)(file) || isProjectSource(resolutionOf)(file)
|
|
261
|
+
: undefined;
|
|
262
|
+
// No write may land in a package the model depends on: it is shown, linked to, and changed elsewhere.
|
|
263
|
+
setReadOnlyRoots([...(resolutionOf?.closure.values() ?? [])]
|
|
264
|
+
.filter(pkg => pkg.origin === 'dependency' && pkg.root)
|
|
265
|
+
.flatMap(pkg => [pkg.root.dir, pkg.root.sysmlDir]));
|
|
266
|
+
const nativeConstraints = accepted
|
|
267
|
+
? collectApiConstraints(stage1.api, undefined, stage1.resolution?.filePackages, ruleFileLoaded)
|
|
268
|
+
: kept.constraints;
|
|
269
|
+
// An accepted stage 1 states the ontology with the project's own kinds.
|
|
270
|
+
const stage2Registries = accepted && stage1.registries
|
|
271
|
+
? stage1.registries
|
|
272
|
+
: kept?.registries;
|
|
273
|
+
// The effective rule set, activated and tailored as `memo validate` and
|
|
274
|
+
// `memo validate --rules` do it (`resolveProjectRules`), so Architect reports
|
|
275
|
+
// the rule set they do. Rule resolution must never take the rebuild down:
|
|
276
|
+
// a bad policy is a diagnostic about the methodology, not a reason the
|
|
277
|
+
// model cannot be shown.
|
|
278
|
+
let validation;
|
|
279
|
+
// Which workspace holds each element; also validated per workspace below, so a client shows a
|
|
280
|
+
// workspace's problems from the same computation `memo validate --workspace` runs.
|
|
281
|
+
const membership = stage2Registries?.kindRegistry && stage2Registries.relationshipRegistry
|
|
282
|
+
? computeWorkspaceMembership(model, stage2Registries)
|
|
209
283
|
: undefined;
|
|
210
|
-
const
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
284
|
+
const validateWorkspaces = (run) => {
|
|
285
|
+
if (!membership || membership.missingSystem)
|
|
286
|
+
return;
|
|
287
|
+
const byWorkspace = {};
|
|
288
|
+
for (const workspace of membership.workspaces) {
|
|
289
|
+
const selection = selectWorkspace(model, membership, workspace.root);
|
|
290
|
+
if (selection.ok)
|
|
291
|
+
byWorkspace[workspace.root] = run(selection.scope);
|
|
292
|
+
}
|
|
293
|
+
validation.byWorkspace = byWorkspace;
|
|
294
|
+
};
|
|
217
295
|
const effectiveRuleSet = (() => {
|
|
218
296
|
try {
|
|
219
|
-
const
|
|
297
|
+
const kindRegistry = stage2Registries?.kindRegistry;
|
|
298
|
+
const filePackages = resolutionOf?.filePackages ?? new Map();
|
|
299
|
+
const { rules: resolved, scope } = resolveProjectRules({
|
|
300
|
+
constraints: nativeConstraints,
|
|
301
|
+
effective: methodologyDescriptor.effective,
|
|
302
|
+
filePackages,
|
|
303
|
+
kindSourceFile: kind => kindRegistry?.getKind(kind)?.sourceFile,
|
|
304
|
+
isOwnFile: resolutionOf ? isProjectSource(resolutionOf) : undefined,
|
|
305
|
+
});
|
|
306
|
+
// Scope decides which elements rules RUN ON, not the model they navigate.
|
|
307
|
+
const inScopeIds = scope && scope.mode !== 'allAvailable'
|
|
308
|
+
? scopedSubjectIds(model, kind => {
|
|
309
|
+
const sourceFile = kindRegistry?.getKind(kind)?.sourceFile;
|
|
310
|
+
const declaringPackage = sourceFile ? filePackages.get(sourceFile) : undefined;
|
|
311
|
+
return !declaringPackage || isRulePackageInScope(scope, declaringPackage);
|
|
312
|
+
})
|
|
313
|
+
: undefined;
|
|
314
|
+
const runRules = (workspace) => validateModel(model, resolved.activeConstraints, kindRegistry, resolved.rules, inScopeIds && (element => inScopeIds.has(element.id)), workspace, membership);
|
|
315
|
+
validation = runRules();
|
|
316
|
+
validateWorkspaces(runRules);
|
|
220
317
|
return { rules: resolved.rules, diagnostics: resolved.diagnostics };
|
|
221
318
|
}
|
|
222
319
|
catch (error) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
320
|
+
const runNative = (workspace) => validateModel(model, nativeConstraints, stage2Registries?.kindRegistry, undefined, undefined, workspace, membership);
|
|
321
|
+
validation = runNative();
|
|
322
|
+
validateWorkspaces(runNative);
|
|
226
323
|
return {
|
|
227
324
|
rules: [],
|
|
228
325
|
diagnostics: [{
|
|
@@ -232,6 +329,18 @@ export async function devCommand(options) {
|
|
|
232
329
|
};
|
|
233
330
|
}
|
|
234
331
|
})();
|
|
332
|
+
// The clauses the model carries, to name and choose what a rule enforces.
|
|
333
|
+
// Only an accepted stage 1 states them; a rejected edit keeps the last.
|
|
334
|
+
if (accepted)
|
|
335
|
+
latestClauses = readClauseFacts(stage1.api);
|
|
336
|
+
const projectSourceFiles = discoverProjectSources(cwd).projectFiles;
|
|
337
|
+
effectiveRuleSet.clauses = latestClauses;
|
|
338
|
+
effectiveRuleSet.projectFiles = projectSourceFiles
|
|
339
|
+
.map(file => relative(cwd, file).replaceAll('\\', '/')).sort();
|
|
340
|
+
ruleContext = {
|
|
341
|
+
projectRoot: cwd, config, model, kindRegistry: stage2Registries?.kindRegistry,
|
|
342
|
+
constraints: nativeConstraints, clauses: latestClauses, projectFiles: new Set(projectSourceFiles.map(file => resolve(file))),
|
|
343
|
+
};
|
|
235
344
|
const completeness = computeCompleteness(model, validation);
|
|
236
345
|
console.log(chalk.cyan(` ${model.elements.size} elements, ${model.relationships.length} relationships, ` +
|
|
237
346
|
`${validation.violations.length} violations, ${completeness.overall}% complete`));
|
|
@@ -241,7 +350,7 @@ export async function devCommand(options) {
|
|
|
241
350
|
const viewpoints = [];
|
|
242
351
|
// Views modelled in SysML (DiagramView/DocumentView usages) surface as
|
|
243
352
|
// viewpoint-grouped auto diagrams.
|
|
244
|
-
const derivedViews = deriveModelViews(model,
|
|
353
|
+
const derivedViews = deriveModelViews(model, stage2Registries?.kindRegistry);
|
|
245
354
|
viewpoints.push(...derivedViews.viewpoints);
|
|
246
355
|
const diagrams = [];
|
|
247
356
|
diagrams.push(...derivedViews.diagrams);
|
|
@@ -250,7 +359,8 @@ export async function devCommand(options) {
|
|
|
250
359
|
const architectureLayers = undefined;
|
|
251
360
|
const baseVersion = nativeResolution.selectedRoots[0]?.packageVersion || '0.1.0';
|
|
252
361
|
const metadata = {
|
|
253
|
-
|
|
362
|
+
modelName: config.modelName,
|
|
363
|
+
projectName: config.modelName, // deprecated alias, deleted in 0.15.0
|
|
254
364
|
version: `${baseVersion}-dev.${buildCount}`,
|
|
255
365
|
...gitInfo,
|
|
256
366
|
};
|
|
@@ -258,8 +368,8 @@ export async function devCommand(options) {
|
|
|
258
368
|
if (existsSync(userDiagramsPath)) {
|
|
259
369
|
try {
|
|
260
370
|
const rawUserDiagrams = JSON.parse(readFileSync(userDiagramsPath, 'utf8'));
|
|
261
|
-
const validUserDiagrams =
|
|
262
|
-
? validateDiagramsAgainstOntology(rawUserDiagrams,
|
|
371
|
+
const validUserDiagrams = stage2Registries
|
|
372
|
+
? validateDiagramsAgainstOntology(rawUserDiagrams, stage2Registries)
|
|
263
373
|
: rawUserDiagrams;
|
|
264
374
|
diagrams.push(...validUserDiagrams);
|
|
265
375
|
}
|
|
@@ -269,37 +379,49 @@ export async function devCommand(options) {
|
|
|
269
379
|
}
|
|
270
380
|
// Ship the ontology registries with the model so the client resolves
|
|
271
381
|
// relationship legality from the ontology, not a hardcoded table.
|
|
272
|
-
const registriesDTO =
|
|
382
|
+
const registriesDTO = stage2Registries
|
|
273
383
|
? {
|
|
274
|
-
relationships:
|
|
275
|
-
kinds:
|
|
384
|
+
relationships: stage2Registries.relationshipRegistry?.toDefinitionDTOs() ?? [],
|
|
385
|
+
kinds: stage2Registries.kindRegistry?.toDefinitionDTOs() ?? [],
|
|
276
386
|
}
|
|
277
387
|
: undefined;
|
|
278
388
|
// Which files can change what each view renders. Computed once per
|
|
279
389
|
// rebuild so every client can answer "does this change affect me?"
|
|
280
390
|
// locally, without a round trip per changed file.
|
|
281
|
-
|
|
391
|
+
// From the handoff stage 1 built the model from.
|
|
392
|
+
const sourceGraph = accepted
|
|
393
|
+
? (() => {
|
|
394
|
+
const { packages, files } = apiProjectSourcePackages(stage1.api, resolve(cwd));
|
|
395
|
+
return buildSourceGraphFromPackages(packages, files);
|
|
396
|
+
})()
|
|
397
|
+
: kept.sourceGraph;
|
|
398
|
+
const enumerations = accepted ? apiEnumerations(stage1.api) : kept.enumerations;
|
|
399
|
+
if (accepted) {
|
|
400
|
+
lastAccepted = { model, irIdentities, constraints: nativeConstraints, registries: stage2Registries, sourceGraph, enumerations, api: stage1.api };
|
|
401
|
+
}
|
|
282
402
|
for (const diagram of diagrams) {
|
|
283
403
|
diagram.sourceFiles = viewSourceFiles(diagram, model.elements, sourceGraph);
|
|
284
404
|
}
|
|
405
|
+
lastSourceHashes = Object.fromEntries(sysmlFiles.map(file => [
|
|
406
|
+
relative(cwd, file).replaceAll('\\', '/'),
|
|
407
|
+
layoutBlindRevision(readFileSync(file, 'utf8')),
|
|
408
|
+
]));
|
|
285
409
|
const dto = modelToDTO(model, {
|
|
286
410
|
viewpoints, architectureLayers, diagrams, registries: registriesDTO,
|
|
287
411
|
revision: buildCount,
|
|
288
412
|
sourceGraph: sourceGraphToDTO(sourceGraph),
|
|
289
413
|
irIdentities,
|
|
290
|
-
sourceHashes:
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
])),
|
|
294
|
-
enumerations: collectEnumerations(documents),
|
|
414
|
+
sourceHashes: lastSourceHashes,
|
|
415
|
+
enumerations,
|
|
416
|
+
workspaceMembership: membership ? workspaceMembershipToDTO(membership, model) : undefined,
|
|
295
417
|
});
|
|
296
418
|
// Compute the clause coverage report and attach it to the model DTO
|
|
297
419
|
// so the Architect can badge document cards with gap counts without a
|
|
298
|
-
// second request. Same computation as `memo standards
|
|
420
|
+
// second request. Same computation as `memo validate --standards`.
|
|
299
421
|
try {
|
|
300
422
|
const library = loadStandardsLibrary(cwd);
|
|
301
|
-
const kindRegistry =
|
|
302
|
-
const declared = readDeclaredRegimes(model);
|
|
423
|
+
const kindRegistry = stage2Registries?.kindRegistry;
|
|
424
|
+
const declared = readDeclaredRegimes(model, kindRegistry);
|
|
303
425
|
dto.standardsReport = computeStandardsReport({
|
|
304
426
|
library,
|
|
305
427
|
model,
|
|
@@ -314,7 +436,11 @@ export async function devCommand(options) {
|
|
|
314
436
|
}
|
|
315
437
|
dto.metadata = metadata;
|
|
316
438
|
dto.ontologyHash = ontologyHash;
|
|
317
|
-
|
|
439
|
+
// The packages of the last accepted build: a rejected edit keeps them.
|
|
440
|
+
if (accepted) {
|
|
441
|
+
lastPackages = apiPackageMetadata(stage1.api, cwd, new Set(nativeResolution.selectedRoots.map(root => root.dir)), resolutionOf?.filePackages);
|
|
442
|
+
}
|
|
443
|
+
const ontologyPackages = lastPackages;
|
|
318
444
|
if (errors.length === 0)
|
|
319
445
|
lastGoodRevision = buildCount;
|
|
320
446
|
const result = {
|
|
@@ -346,11 +472,20 @@ export async function devCommand(options) {
|
|
|
346
472
|
if (sysmlCount === 0) {
|
|
347
473
|
console.log(chalk.yellow(' ⚠ No .sysml files found in this directory.'));
|
|
348
474
|
console.log(chalk.gray(' Create model files in a model/ subdirectory, or run:'));
|
|
349
|
-
console.log(chalk.gray(' memo init <project-name>'));
|
|
350
|
-
console.log(chalk.gray(' memo import template elements\n'));
|
|
475
|
+
console.log(chalk.gray(' memo-architect init <project-name>'));
|
|
476
|
+
console.log(chalk.gray(' memo-architect import template elements\n'));
|
|
351
477
|
}
|
|
352
478
|
console.log(chalk.gray(' Building model...'));
|
|
353
479
|
const initial = await rebuildProject();
|
|
480
|
+
// Layouts moved into their views; a sidecar left behind is no longer read.
|
|
481
|
+
try {
|
|
482
|
+
const leftover = readLegacyLayouts(cwd);
|
|
483
|
+
if (leftover.length > 0) {
|
|
484
|
+
console.log(chalk.yellow(` ⚠ ${leftover.length} diagram layout(s) in .viewlayout files are no longer read. `
|
|
485
|
+
+ 'Run `memo-architect migrate-layout` to move them into their views.'));
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
catch { /* a warning, never a reason not to serve */ }
|
|
354
489
|
let shuttingDown = false;
|
|
355
490
|
let idleShutdownTimer;
|
|
356
491
|
let projectWatcher;
|
|
@@ -362,19 +497,116 @@ export async function devCommand(options) {
|
|
|
362
497
|
if (idleShutdownTimer)
|
|
363
498
|
clearTimeout(idleShutdownTimer);
|
|
364
499
|
console.log(chalk.gray(`\n ${reason}`));
|
|
500
|
+
if (layoutSettleTimer)
|
|
501
|
+
clearTimeout(layoutSettleTimer);
|
|
365
502
|
projectWatcher?.close();
|
|
366
503
|
ontologyWatcher?.close();
|
|
504
|
+
versions?.close();
|
|
505
|
+
removeDevServerRecord(cwd);
|
|
367
506
|
server.close();
|
|
368
507
|
process.exit(0);
|
|
369
508
|
};
|
|
509
|
+
// Compiles run one at a time, whether a save or a `memo validate` asked.
|
|
510
|
+
let compileChain = Promise.resolve();
|
|
511
|
+
const serialized = (run) => {
|
|
512
|
+
const next = compileChain.then(run, run);
|
|
513
|
+
compileChain = next.then(() => undefined, () => undefined);
|
|
514
|
+
return next;
|
|
515
|
+
};
|
|
516
|
+
// `memo validate`, answered from the model held here (server/dev-validate.ts).
|
|
517
|
+
// The settings are read once, at startup: changed since, this process is
|
|
518
|
+
// not the one to validate them, and the caller validates on its own.
|
|
519
|
+
const settingsAtStart = JSON.stringify(loadProjectSettings(cwd));
|
|
520
|
+
const validateToken = newToken();
|
|
521
|
+
const validateHere = (validateOptions) => serialized(async () => {
|
|
522
|
+
if (JSON.stringify(loadProjectSettings(cwd)) !== settingsAtStart) {
|
|
523
|
+
throw new Error('the project settings changed since memo dev started');
|
|
524
|
+
}
|
|
525
|
+
if (latestCompile?.fingerprint !== sourceFingerprint(cwd))
|
|
526
|
+
await rebuildAndPublish([]);
|
|
527
|
+
const held = latestCompile;
|
|
528
|
+
if (!held)
|
|
529
|
+
throw new Error('memo dev holds no compile');
|
|
530
|
+
let stdout = '';
|
|
531
|
+
let stderr = '';
|
|
532
|
+
const io = {
|
|
533
|
+
out: (...args) => { stdout += format(...args) + '\n'; },
|
|
534
|
+
err: (...args) => { stderr += format(...args) + '\n'; },
|
|
535
|
+
write: text => { stdout += text; },
|
|
536
|
+
};
|
|
537
|
+
const exitCode = await validationExitCode(() => runValidation(cwd, validateOptions, io, async () => held.stage1));
|
|
538
|
+
return { exitCode, stdout, stderr };
|
|
539
|
+
});
|
|
370
540
|
// Start dev server
|
|
541
|
+
const versions = options.versionChild && !options.readOnly
|
|
542
|
+
? createVersionServers({
|
|
543
|
+
projectRoot: cwd, entry: options.versionChild.entry, args: options.versionChild.args,
|
|
544
|
+
workingModel: () => lastAccepted?.model, workingUrl: () => `http://${host}:${workingPort}`,
|
|
545
|
+
toolchain: config.toolchain,
|
|
546
|
+
})
|
|
547
|
+
: undefined;
|
|
548
|
+
let workingPort = port;
|
|
549
|
+
const devices = options.readOnly ? undefined : {
|
|
550
|
+
generate: (device) => {
|
|
551
|
+
if (!lastAccepted)
|
|
552
|
+
throw new Error('the working model is not built yet');
|
|
553
|
+
return compileDeviceDhf({
|
|
554
|
+
projectRoot: cwd, working: { model: lastAccepted.model, registries: lastAccepted.registries },
|
|
555
|
+
device, outputDir: resolve(cwd, 'dhf-output'), config: { toolchain: config.toolchain },
|
|
556
|
+
});
|
|
557
|
+
},
|
|
558
|
+
};
|
|
559
|
+
// Where the model stands against its method, for one workspace. Read-only: it writes nothing.
|
|
560
|
+
const guide = {
|
|
561
|
+
evaluate: (workspace) => {
|
|
562
|
+
if (!lastAccepted?.api || !lastAccepted.registries)
|
|
563
|
+
throw new Error('the working model is not built yet');
|
|
564
|
+
const packages = (methodologyDescriptor.effective?.chain ?? []).map(m => m.packageQualifiedName).filter((p) => !!p);
|
|
565
|
+
return evaluateWorkspaceGuide({
|
|
566
|
+
api: lastAccepted.api, model: lastAccepted.model, registries: lastAccepted.registries,
|
|
567
|
+
constraints: lastAccepted.constraints, packages, workspace,
|
|
568
|
+
});
|
|
569
|
+
},
|
|
570
|
+
};
|
|
571
|
+
// What the working tree's change reaches, measured from the commit it branched from (T11).
|
|
572
|
+
const impact = options.readOnly ? undefined : {
|
|
573
|
+
compute: (target) => {
|
|
574
|
+
if (!lastAccepted?.api || !lastAccepted.registries)
|
|
575
|
+
throw new Error('the working model is not built yet');
|
|
576
|
+
const packages = (methodologyDescriptor.effective?.chain ?? []).map(m => m.packageQualifiedName).filter((p) => !!p);
|
|
577
|
+
return computeChangeImpact({
|
|
578
|
+
projectRoot: cwd, target,
|
|
579
|
+
head: { model: lastAccepted.model, registries: lastAccepted.registries, api: lastAccepted.api, constraints: lastAccepted.constraints, packages },
|
|
580
|
+
build: { config: { toolchain: config.toolchain } },
|
|
581
|
+
});
|
|
582
|
+
},
|
|
583
|
+
};
|
|
371
584
|
const server = await createDevServer({
|
|
585
|
+
memoModel: () => lastAccepted?.model,
|
|
586
|
+
workspaceScope: root => {
|
|
587
|
+
if (!lastAccepted?.registries?.kindRegistry || !lastAccepted.registries.relationshipRegistry)
|
|
588
|
+
return undefined;
|
|
589
|
+
const membership = computeWorkspaceMembership(lastAccepted.model, lastAccepted.registries);
|
|
590
|
+
const selection = selectWorkspace(lastAccepted.model, membership, root);
|
|
591
|
+
return selection.ok ? selection.scope : undefined;
|
|
592
|
+
},
|
|
593
|
+
impact,
|
|
594
|
+
guide,
|
|
595
|
+
devices,
|
|
596
|
+
versions,
|
|
597
|
+
readOnly: options.readOnly,
|
|
598
|
+
pinned: options.pinned,
|
|
599
|
+
preferencesRoot: options.preferencesRoot,
|
|
600
|
+
validate: validateHere,
|
|
601
|
+
validateToken,
|
|
372
602
|
port,
|
|
373
603
|
projectRoot: cwd,
|
|
374
604
|
webPackagePath: options.clientRoot,
|
|
375
605
|
initialMessages: initial.messages,
|
|
606
|
+
ruleContext: () => ruleContext,
|
|
376
607
|
ontologyRegistries,
|
|
377
608
|
ontologyRoots,
|
|
609
|
+
packageMetadata: () => lastPackages,
|
|
378
610
|
relationshipFiles: config.relationshipFiles,
|
|
379
611
|
canonicalRelationshipFile: config.canonicalRelationshipFile,
|
|
380
612
|
transformClientHtml: options.transformClientHtml,
|
|
@@ -396,6 +628,14 @@ export async function devCommand(options) {
|
|
|
396
628
|
}
|
|
397
629
|
},
|
|
398
630
|
});
|
|
631
|
+
// Say where `memo validate` can find this model. Not when this run names a
|
|
632
|
+
// toolchain of its own: a plain `memo validate` would then be answered by
|
|
633
|
+
// another compiler than the settings select.
|
|
634
|
+
const ownToolchain = Object.values(options.toolchainOptions ?? {}).some(value => value !== undefined);
|
|
635
|
+
if (!ownToolchain && !options.readOnly) {
|
|
636
|
+
writeDevServerRecord({ pid: process.pid, url: `http://${host}:${port}`, token: validateToken, projectRoot: cwd });
|
|
637
|
+
process.once('exit', () => removeDevServerRecord(cwd));
|
|
638
|
+
}
|
|
399
639
|
if (!initial.coherent) {
|
|
400
640
|
// Starting on a project that does not parse is allowed — the user
|
|
401
641
|
// opened Architect precisely to see and fix it. There is no last good
|
|
@@ -417,7 +657,15 @@ export async function devCommand(options) {
|
|
|
417
657
|
: performance.now() - bootstrapStartedAt;
|
|
418
658
|
const runtimeBudget = enforceRuntimeBudget(budgetPath, elapsed);
|
|
419
659
|
console.log(chalk.gray(` ${budgetPath}: ${runtimeBudget.elapsedMs.toFixed(0)}ms / ${runtimeBudget.budgetMs}ms`));
|
|
420
|
-
|
|
660
|
+
const boundPort = options.readOnly ? server.port : port;
|
|
661
|
+
workingPort = boundPort;
|
|
662
|
+
console.log(chalk.green(`\n ➜ http://${host}:${boundPort}\n`));
|
|
663
|
+
// A pinned server is a child of the server that opened it: it tells that parent where it is, and
|
|
664
|
+
// goes when the parent does.
|
|
665
|
+
if (options.readOnly && process.send) {
|
|
666
|
+
process.send({ type: 'memo:read-only-ready', url: `http://${host}:${boundPort}` });
|
|
667
|
+
process.once('disconnect', () => process.exit(0));
|
|
668
|
+
}
|
|
421
669
|
// ── notifyRestartRequired: ontology watcher callback ───────────────────────
|
|
422
670
|
// Declared after server so it can reference server directly.
|
|
423
671
|
function notifyRestartRequired(reason, changedFile) {
|
|
@@ -447,7 +695,8 @@ export async function devCommand(options) {
|
|
|
447
695
|
}, 50);
|
|
448
696
|
}
|
|
449
697
|
}
|
|
450
|
-
// Project watcher — hot reload.
|
|
698
|
+
// Project watcher — hot reload. Not in a read-only server: the directory is a pinned commit and
|
|
699
|
+
// does not change under it.
|
|
451
700
|
//
|
|
452
701
|
// The rebuild is broadcast together with the list of files that caused it,
|
|
453
702
|
// so open editors and views can tell whether the change was theirs instead
|
|
@@ -482,7 +731,7 @@ export async function devCommand(options) {
|
|
|
482
731
|
})),
|
|
483
732
|
lastGoodRevision,
|
|
484
733
|
});
|
|
485
|
-
console.log(chalk.yellow(` ⚠ ${result.firstErrorFile ?? 'project source'} does not
|
|
734
|
+
console.log(chalk.yellow(` ⚠ ${result.firstErrorFile ?? 'project source'} does not compile — showing the last good model`
|
|
486
735
|
+ ` (revision ${lastGoodRevision}). Mutations are held until it does.`));
|
|
487
736
|
return;
|
|
488
737
|
}
|
|
@@ -496,8 +745,17 @@ export async function devCommand(options) {
|
|
|
496
745
|
},
|
|
497
746
|
}]);
|
|
498
747
|
};
|
|
499
|
-
|
|
500
|
-
|
|
748
|
+
// A layout is saved at the end of a drag, into the view that declares it. Such a
|
|
749
|
+
// write changes no model fact, so it does not rebuild at once: the clients that
|
|
750
|
+
// did not make it are given the new layout, and one rebuild follows when the
|
|
751
|
+
// saves stop. That rebuild is not for the model's sake but for the source
|
|
752
|
+
// ranges the compile recorded, which a block of statements shifts for every
|
|
753
|
+
// declaration after it in the file.
|
|
754
|
+
const LAYOUT_SETTLE_MS = 2500;
|
|
755
|
+
let layoutSettleTimer;
|
|
756
|
+
const settlingLayoutFiles = new Set();
|
|
757
|
+
const runRebuilds = async (files) => {
|
|
758
|
+
for (const file of files)
|
|
501
759
|
pendingRebuildFiles.add(file);
|
|
502
760
|
if (rebuildInFlight)
|
|
503
761
|
return;
|
|
@@ -506,15 +764,46 @@ export async function devCommand(options) {
|
|
|
506
764
|
while (pendingRebuildFiles.size > 0) {
|
|
507
765
|
const nextFiles = [...pendingRebuildFiles].sort();
|
|
508
766
|
pendingRebuildFiles.clear();
|
|
509
|
-
await rebuildAndPublish(nextFiles);
|
|
767
|
+
await serialized(() => rebuildAndPublish(nextFiles));
|
|
510
768
|
}
|
|
511
769
|
}
|
|
512
770
|
finally {
|
|
513
771
|
rebuildInFlight = false;
|
|
514
772
|
}
|
|
515
|
-
}
|
|
773
|
+
};
|
|
774
|
+
if (!options.readOnly)
|
|
775
|
+
projectWatcher = createProjectWatcher(cwd, async (changedFiles) => {
|
|
776
|
+
const layoutOnly = changedFiles.filter(file => {
|
|
777
|
+
const known = lastSourceHashes[file.replaceAll('\\', '/')];
|
|
778
|
+
const path = resolve(cwd, file);
|
|
779
|
+
return known !== undefined && existsSync(path) && layoutBlindRevision(readFileSync(path, 'utf8')) === known;
|
|
780
|
+
});
|
|
781
|
+
const rest = changedFiles.filter(file => !layoutOnly.includes(file));
|
|
782
|
+
if (layoutOnly.length > 0) {
|
|
783
|
+
const mine = server.consumeWriteTransactions(layoutOnly).matched;
|
|
784
|
+
const outside = layoutOnly.filter(file => !(file.replaceAll('\\', '/') in mine));
|
|
785
|
+
if (outside.length > 0)
|
|
786
|
+
server.refreshLayouts(outside);
|
|
787
|
+
// Whatever else changed in the same burst rebuilds anyway, and that
|
|
788
|
+
// rebuild covers these files; otherwise settle first.
|
|
789
|
+
if (rest.length === 0) {
|
|
790
|
+
for (const file of layoutOnly)
|
|
791
|
+
settlingLayoutFiles.add(file);
|
|
792
|
+
if (layoutSettleTimer)
|
|
793
|
+
clearTimeout(layoutSettleTimer);
|
|
794
|
+
layoutSettleTimer = setTimeout(() => {
|
|
795
|
+
const files = [...settlingLayoutFiles];
|
|
796
|
+
settlingLayoutFiles.clear();
|
|
797
|
+
void runRebuilds(files);
|
|
798
|
+
}, LAYOUT_SETTLE_MS);
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
await runRebuilds(rest.length > 0 ? changedFiles : []);
|
|
803
|
+
}, 300, false, { ontologyRoots, provenance });
|
|
516
804
|
// Ontology watcher — restart notification only, no registry reload
|
|
517
|
-
|
|
805
|
+
if (!options.readOnly)
|
|
806
|
+
ontologyWatcher = createOntologyWatcher(cwd, ontologyRoots, (changedFile) => notifyRestartRequired('ontology-source-changed', changedFile), 300, provenance);
|
|
518
807
|
// Open browser
|
|
519
808
|
if (options.open !== false) {
|
|
520
809
|
const openModule = await import('open');
|