@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
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
// ─── memo rules ──────────────────────────────────────────────────────────────
|
|
2
2
|
//
|
|
3
3
|
// CLI subcommands for consistency rule management:
|
|
4
|
-
// memo rules
|
|
5
|
-
// memo
|
|
6
|
-
//
|
|
7
|
-
//
|
|
4
|
+
// memo validate --rules — list all rules with category and severity
|
|
5
|
+
// memo validate --explain-rule — show detailed info for a specific rule
|
|
6
|
+
// `memo validate` evaluates the rules; `memo validate --standards` reports which
|
|
7
|
+
// clauses they enforce.
|
|
8
8
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
9
|
-
import { resolve } from 'node:path';
|
|
9
|
+
import { isAbsolute, relative, resolve, sep } from 'node:path';
|
|
10
10
|
import chalk from 'chalk';
|
|
11
|
-
import { findConfigFile, findProjectRoot, loadProjectSettings,
|
|
12
|
-
import {
|
|
11
|
+
import { findConfigFile, findProjectRoot, loadProjectSettings, RuleRegistry, loadMethodologyDescriptor, BUILTIN_RULES, } from '@memoarchitect/tools';
|
|
12
|
+
import { loadProjectModel, projectConstraints } from '../toolchain/project-model.js';
|
|
13
|
+
import { handoffFileOf } from '../stage2/handoff-files.js';
|
|
14
|
+
import { clauseLabel, readClauseFacts } from '../validator/rule-clauses.js';
|
|
15
|
+
import { inactiveRules, resolveProjectRules } from '../model/effective-scope.js';
|
|
16
|
+
import { isProjectSource } from '../stage2/project-from-api.js';
|
|
17
|
+
import { bulkDecisions, tailoringRecord } from '../validator/rule-tailoring.js';
|
|
18
|
+
import { checkNewRule, dryRunRule, insertRule, resolveClauseReference } from '../server/rule-writer.js';
|
|
19
|
+
import { commitSource } from '../server/persistor.js';
|
|
20
|
+
import { checkRulePolicy, insertRulePolicy, renderRulePolicy, resolveStandardReference, } from '../server/rule-policy-writer.js';
|
|
21
|
+
import { rulesSelectedBy } from '../model/methodology-resolver.js';
|
|
22
|
+
import { selectedOutlineSource } from '../authoring/outline-source.js';
|
|
23
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
24
|
+
const RULE_DOMAINS = ['modelling', 'medicalDevice', 'organisation'];
|
|
25
|
+
const RULE_OBLIGATIONS = ['required', 'recommended', 'bestPractice'];
|
|
26
|
+
import { resolutionLoads } from '../stage2/project-from-api.js';
|
|
13
27
|
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
14
|
-
async function loadContext(projectDir) {
|
|
28
|
+
export async function loadContext(projectDir) {
|
|
15
29
|
const cwd = resolve(projectDir || process.cwd());
|
|
16
30
|
// The loader resolves a PROJECT ROOT, not a settings file. Passing the
|
|
17
|
-
// config path resolved no documents, so `memo rules
|
|
31
|
+
// config path resolved no documents, so `memo validate --rules` reported "No
|
|
18
32
|
// rules found" on a project `memo validate` was evaluating 61 rules
|
|
19
33
|
// against. The two commands must agree about what the effective rule set
|
|
20
34
|
// is — that is the whole point of section 10.4.
|
|
@@ -22,33 +36,32 @@ async function loadContext(projectDir) {
|
|
|
22
36
|
if (!projectRoot) {
|
|
23
37
|
console.error(chalk.red('❌ No MEMO project found. A project is located by the `entrypoint` in its '
|
|
24
38
|
+ '`memo.package.yaml`, which names the SysML file declaring its identity '
|
|
25
|
-
+ 'and method binding — run `memo init` to scaffold one.'));
|
|
39
|
+
+ 'and method binding — run `memo-architect init` to scaffold one.'));
|
|
26
40
|
process.exit(1);
|
|
27
41
|
}
|
|
28
42
|
// A package descriptor is an optional LOCATOR, not a requirement. Demanding
|
|
29
|
-
// one made `memo rules
|
|
43
|
+
// one made `memo validate --rules` refuse to run on a project `memo validate`
|
|
30
44
|
// handles fine — GPCA has no `memo.package.yaml` and does not need one,
|
|
31
45
|
// because the entrypoint and the binding decide what the model contains.
|
|
32
46
|
const configPath = findConfigFile(projectRoot);
|
|
33
47
|
const config = loadProjectSettings(projectRoot);
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
// Ontology loading optional
|
|
48
|
+
// The project as every command loads it, from the selected compiler:
|
|
49
|
+
// the model, the registries, the resolution and the rule definitions.
|
|
50
|
+
const project = await loadProjectModel({ projectRoot, config });
|
|
51
|
+
const ontologyRegistries = project.registries;
|
|
52
|
+
const filePackages = project.resolution?.filePackages ?? new Map();
|
|
53
|
+
const constraints = projectConstraints(project);
|
|
54
|
+
// The rule catalogue: the rule parts the project's closure declares, from
|
|
55
|
+
// the compiler's handoff.
|
|
56
|
+
const ruleRegistry = new RuleRegistry();
|
|
57
|
+
{
|
|
58
|
+
const loads = project.resolution ? resolutionLoads(project.resolution) : () => true;
|
|
59
|
+
const fileOf = handoffFileOf(project.api, project.resolution?.filePackages);
|
|
60
|
+
const catalogue = new RuleRegistry();
|
|
61
|
+
catalogue.populateFromApi(project.api, fileOf);
|
|
62
|
+
for (const entry of catalogue.entries())
|
|
63
|
+
if (loads(entry.file))
|
|
64
|
+
ruleRegistry.register(entry);
|
|
52
65
|
}
|
|
53
66
|
// The EFFECTIVE rule set, resolved exactly as `memo validate` and the dev
|
|
54
67
|
// server resolve it. `ruleRegistry` above is a discovery catalogue of
|
|
@@ -57,33 +70,37 @@ async function loadContext(projectDir) {
|
|
|
57
70
|
// with `validate` about how many rules exist.
|
|
58
71
|
let effectiveRules = [];
|
|
59
72
|
let ruleDiagnostics = [];
|
|
73
|
+
let inactive = [];
|
|
60
74
|
try {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
const scope = descriptor.effective
|
|
70
|
-
? buildEffectiveScope(descriptor.effective)
|
|
71
|
-
: undefined;
|
|
75
|
+
const descriptor = await loadMethodologyDescriptor(projectRoot, project.resolution, project.api);
|
|
76
|
+
// The same activation `memo validate` and the dev server apply
|
|
77
|
+
// (`resolveProjectRules`). Reporting every resolved constraint instead
|
|
78
|
+
// would describe a rule set the project does not have: GPCA's methodology
|
|
79
|
+
// excludes cybersecurity, and listing its rules as effective is the exact
|
|
80
|
+
// claim the scope work exists to stop. A rule the project wrote in its own
|
|
81
|
+
// files always counts; the rules the methodology leaves out are listed
|
|
82
|
+
// with the reason, so an absent rule is never mistaken for a passing one.
|
|
72
83
|
const kindRegistry = ontologyRegistries?.kindRegistry;
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
const kindSourceFile = (kindName) => kindRegistry?.getKind(kindName)?.sourceFile;
|
|
85
|
+
const isOwnFile = project.resolution ? isProjectSource(project.resolution) : () => false;
|
|
86
|
+
const { rules: resolved, scope } = resolveProjectRules({
|
|
87
|
+
constraints, effective: descriptor.effective, filePackages, kindSourceFile, isOwnFile,
|
|
88
|
+
});
|
|
77
89
|
effectiveRules = resolved.rules;
|
|
78
90
|
ruleDiagnostics = resolved.diagnostics;
|
|
91
|
+
if (scope)
|
|
92
|
+
inactive = inactiveRules(constraints, scope, filePackages, kindSourceFile, isOwnFile);
|
|
79
93
|
}
|
|
80
94
|
catch {
|
|
81
95
|
// Rule resolution is reported, not fatal: a bad policy is a diagnostic
|
|
82
96
|
// about the methodology, not a reason the command cannot run.
|
|
83
97
|
}
|
|
98
|
+
// The clauses the model carries, to name what a rule enforces. Only a
|
|
99
|
+
// compiler that builds the model states them.
|
|
100
|
+
const clauseFacts = project.api ? readClauseFacts(project.api) : [];
|
|
84
101
|
return {
|
|
85
|
-
cwd, configPath, config, ontologyRegistries, ruleRegistry,
|
|
86
|
-
effectiveRules, ruleDiagnostics,
|
|
102
|
+
cwd, projectRoot, configPath, config, ontologyRegistries, ruleRegistry, constraints, model: project.model,
|
|
103
|
+
effectiveRules, ruleDiagnostics, inactive, clauseFacts,
|
|
87
104
|
};
|
|
88
105
|
}
|
|
89
106
|
function severityIcon(severity) {
|
|
@@ -94,21 +111,49 @@ function severityIcon(severity) {
|
|
|
94
111
|
default: return ' ';
|
|
95
112
|
}
|
|
96
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Where a rule is written: in this project (a rule its users made), or in a library it imports
|
|
116
|
+
* (the ontology, a methodology). Both kinds are rules; only the first is the project's to edit.
|
|
117
|
+
*/
|
|
118
|
+
function originOf(rule, projectRoot) {
|
|
119
|
+
if (!rule.sourceFile)
|
|
120
|
+
return 'library';
|
|
121
|
+
const relativePath = relative(projectRoot, resolve(projectRoot, rule.sourceFile));
|
|
122
|
+
return relativePath.startsWith('..') || isAbsolute(relativePath) || relativePath.split(sep).includes('node_modules')
|
|
123
|
+
? 'library' : 'project';
|
|
124
|
+
}
|
|
97
125
|
export async function rulesListCommand(projectDir, options) {
|
|
98
126
|
const format = options?.format || 'text';
|
|
99
|
-
const { effectiveRules, ruleDiagnostics } = await loadContext(projectDir);
|
|
127
|
+
const { effectiveRules, ruleDiagnostics, inactive, clauseFacts } = await loadContext(projectDir);
|
|
128
|
+
const projectRoot = resolve(projectDir ?? process.cwd());
|
|
129
|
+
if (options?.domain && !RULE_DOMAINS.includes(options.domain)) {
|
|
130
|
+
console.error(chalk.red(`❌ --domain expects one of ${RULE_DOMAINS.join(', ')}, got "${options.domain}".`));
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
if (options?.obligation && !RULE_OBLIGATIONS.includes(options.obligation)) {
|
|
134
|
+
console.error(chalk.red(`❌ --rules-obligation expects one of ${RULE_OBLIGATIONS.join(', ')}, got "${options.obligation}".`));
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
100
137
|
// Section 19 asks that the effective rule SET be auditable: identity,
|
|
101
138
|
// disposition, severity, and policy chain. That is what this reports —
|
|
102
139
|
// governance, not evidence that anything was validated (section 10.4).
|
|
103
|
-
const filteredRules =
|
|
104
|
-
|
|
105
|
-
|
|
140
|
+
const filteredRules = effectiveRules
|
|
141
|
+
.filter(r => !options?.category || r.tailoring === options.category)
|
|
142
|
+
.filter(r => !options?.domain || r.domain === options.domain)
|
|
143
|
+
.filter(r => !options?.obligation || r.obligation === options.obligation);
|
|
144
|
+
// A domain filter narrows to MEMO's tailorable rules: the built-in ones state no domain.
|
|
145
|
+
const narrowed = Boolean(options?.category || options?.domain || options?.obligation);
|
|
106
146
|
if (format === 'json') {
|
|
107
147
|
console.log(JSON.stringify({
|
|
108
|
-
tailorable: filteredRules
|
|
109
|
-
|
|
110
|
-
|
|
148
|
+
tailorable: filteredRules.map(rule => ({
|
|
149
|
+
...rule,
|
|
150
|
+
clauses: (rule.enforces ?? []).map(clause => ({ qualifiedName: clause, label: clauseLabel(clauseFacts, clause) })),
|
|
151
|
+
origin: originOf(rule, projectRoot),
|
|
152
|
+
})),
|
|
153
|
+
builtin: narrowed ? [] : BUILTIN_RULES,
|
|
154
|
+
total: filteredRules.length + (narrowed ? 0 : BUILTIN_RULES.length),
|
|
111
155
|
diagnostics: ruleDiagnostics,
|
|
156
|
+
inactive,
|
|
112
157
|
}, null, 2));
|
|
113
158
|
return;
|
|
114
159
|
}
|
|
@@ -135,11 +180,18 @@ export async function rulesListCommand(projectDir, options) {
|
|
|
135
180
|
? '' : chalk.yellow(` [${rule.disposition}]`);
|
|
136
181
|
const overridden = rule.effectiveSeverity !== rule.declaredSeverity
|
|
137
182
|
? chalk.gray(` (declared ${rule.declaredSeverity})`) : '';
|
|
183
|
+
const own = originOf(rule, projectRoot) === 'project' ? chalk.green(' [this project\'s own]') : '';
|
|
184
|
+
const domain = rule.domain === 'medicalDevice'
|
|
185
|
+
? chalk.magenta(' [medical device]') : rule.domain === 'organisation' ? chalk.blue(' [organisation]') : '';
|
|
186
|
+
const obligation = rule.obligation ? chalk.gray(` [${rule.obligation}]`) : '';
|
|
138
187
|
console.log(` ${icon} ${chalk.white(rule.sourceRuleId)} ${rule.sourceRuleType}`
|
|
139
|
-
+ `${disposition}${overridden}`);
|
|
188
|
+
+ `${domain}${obligation}${own}${disposition}${overridden}`);
|
|
140
189
|
if (rule.rationaleText) {
|
|
141
190
|
console.log(` ${chalk.gray(rule.rationaleText)}`);
|
|
142
191
|
}
|
|
192
|
+
for (const clause of rule.enforces ?? []) {
|
|
193
|
+
console.log(` ${chalk.gray(`enforces ${clauseLabel(clauseFacts, clause)}`)}`);
|
|
194
|
+
}
|
|
143
195
|
if (rule.authority) {
|
|
144
196
|
console.log(` ${chalk.gray(`authority: ${rule.authority}`)}`);
|
|
145
197
|
}
|
|
@@ -151,7 +203,7 @@ export async function rulesListCommand(projectDir, options) {
|
|
|
151
203
|
// none. Listing them here is what makes this command's total reconcile
|
|
152
204
|
// with `memo validate` — the two used to report different numbers because
|
|
153
205
|
// only one of them knew these rules existed.
|
|
154
|
-
if (!
|
|
206
|
+
if (!narrowed) {
|
|
155
207
|
console.log(chalk.bold.cyan(` BUILT-IN — not tailorable (${BUILTIN_RULES.length})`));
|
|
156
208
|
for (const rule of BUILTIN_RULES) {
|
|
157
209
|
console.log(` ${severityIcon(rule.severity)} ${chalk.white(rule.id)} ${rule.name}`);
|
|
@@ -170,78 +222,22 @@ export async function rulesListCommand(projectDir, options) {
|
|
|
170
222
|
for (const diagnostic of ruleDiagnostics) {
|
|
171
223
|
console.log(chalk.yellow(` [${diagnostic.code}] ${diagnostic.message}`));
|
|
172
224
|
}
|
|
173
|
-
|
|
174
|
-
//
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const sysmlFiles = findSysmlFiles(cwd);
|
|
180
|
-
if (sysmlFiles.length === 0) {
|
|
181
|
-
console.error(chalk.red('❌ No .sysml files found.'));
|
|
182
|
-
process.exit(1);
|
|
183
|
-
}
|
|
184
|
-
const parseResult = await parseFiles(sysmlFiles);
|
|
185
|
-
const model = buildMemoModel(parseResult.documents, config, parseResult.errors, ontologyRegistries);
|
|
186
|
-
// Evaluate native `constraint def` bodies (KerML expressions) across ontology + project docs.
|
|
187
|
-
const constraints = collectNativeConstraints([...ontologyDocuments, ...parseResult.documents]);
|
|
188
|
-
let rulesPassed = 0;
|
|
189
|
-
const violations = [];
|
|
190
|
-
for (const constraint of constraints) {
|
|
191
|
-
const ruleViolations = constraint.evaluator === 'architecture'
|
|
192
|
-
? validateArchitecture(model, constraint.appliesToKind, ontologyRegistries?.kindRegistry)
|
|
193
|
-
: constraint.evaluator && constraint.evaluator !== 'native'
|
|
194
|
-
? []
|
|
195
|
-
: evaluateConstraintNode(constraint, constraint.ast, model, ontologyRegistries?.kindRegistry);
|
|
196
|
-
if (ruleViolations.length === 0)
|
|
197
|
-
rulesPassed++;
|
|
198
|
-
violations.push(...ruleViolations);
|
|
199
|
-
}
|
|
200
|
-
const result = {
|
|
201
|
-
rulesEvaluated: constraints.length,
|
|
202
|
-
rulesPassed,
|
|
203
|
-
violations,
|
|
204
|
-
timestamp: Date.now(),
|
|
205
|
-
};
|
|
206
|
-
if (format === 'json') {
|
|
207
|
-
console.log(JSON.stringify(result, null, 2));
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
console.log(chalk.bold('\n📋 Rule Check Results\n'));
|
|
211
|
-
console.log(chalk.gray(` Rules evaluated: ${result.rulesEvaluated}`));
|
|
212
|
-
console.log(chalk.gray(` Rules passed: ${result.rulesPassed}`));
|
|
213
|
-
console.log(chalk.gray(` Violations: ${result.violations.length}`));
|
|
214
|
-
console.log();
|
|
215
|
-
if (result.violations.length === 0) {
|
|
216
|
-
console.log(chalk.green(' ✅ All rules passed!'));
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
// Group violations by rule
|
|
220
|
-
const byRule = new Map();
|
|
221
|
-
for (const v of result.violations) {
|
|
222
|
-
if (!byRule.has(v.ruleId))
|
|
223
|
-
byRule.set(v.ruleId, []);
|
|
224
|
-
byRule.get(v.ruleId).push(v);
|
|
225
|
-
}
|
|
226
|
-
for (const [ruleId, violations] of byRule) {
|
|
227
|
-
const first = violations[0];
|
|
228
|
-
const icon = severityIcon(first.severity);
|
|
229
|
-
console.log(` ${icon} ${chalk.white(ruleId)}: ${first.description} (${violations.length} violations)`);
|
|
230
|
-
for (const v of violations.slice(0, 5)) {
|
|
231
|
-
console.log(` ${chalk.gray('→')} ${v.elementKind}/${v.elementName} ${chalk.gray(`(${v.elementId})`)}`);
|
|
232
|
-
}
|
|
233
|
-
if (violations.length > 5) {
|
|
234
|
-
console.log(chalk.gray(` ... and ${violations.length - 5} more`));
|
|
225
|
+
// A rule that does not run for this project says so, with the reason: a rule
|
|
226
|
+
// that is silently absent reads as one that passed.
|
|
227
|
+
if (!narrowed && inactive.length > 0) {
|
|
228
|
+
console.log(chalk.bold.cyan(`\n NOT RUNNING IN THIS PROJECT (${inactive.length})`));
|
|
229
|
+
for (const rule of inactive) {
|
|
230
|
+
console.log(chalk.gray(` ${rule.id} ${rule.typeName ?? ''} — ${rule.detail}`));
|
|
235
231
|
}
|
|
236
232
|
}
|
|
237
233
|
}
|
|
238
|
-
// ─── memo
|
|
234
|
+
// ─── memo validate --explain-rule ──────────────────────────────────────────────────────
|
|
239
235
|
export async function rulesExplainCommand(ruleId, projectDir, options) {
|
|
240
236
|
const format = options?.format || 'text';
|
|
241
|
-
const { ruleRegistry,
|
|
237
|
+
const { ruleRegistry, constraints } = await loadContext(projectDir);
|
|
242
238
|
// Look up in registry first (catalog metadata), then in native constraint defs.
|
|
243
239
|
const registryEntry = ruleRegistry?.getRule(ruleId);
|
|
244
|
-
const constraint =
|
|
240
|
+
const constraint = constraints.find(c => c.id === ruleId);
|
|
245
241
|
if (!registryEntry && !constraint) {
|
|
246
242
|
console.error(chalk.red(`❌ Rule "${ruleId}" not found.`));
|
|
247
243
|
process.exit(1);
|
|
@@ -291,65 +287,237 @@ export async function rulesExplainCommand(ruleId, projectDir, options) {
|
|
|
291
287
|
console.log(` ${chalk.cyan('Source:')} native constraint def`);
|
|
292
288
|
}
|
|
293
289
|
}
|
|
294
|
-
// ─── memo rules
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
const
|
|
307
|
-
|
|
308
|
-
const count = model ? [...model.elements.values()].filter((e) => e.kind === target).length : 0;
|
|
309
|
-
return { rule, passed: count > 0, count };
|
|
310
|
-
});
|
|
290
|
+
// ─── memo-architect rules tailoring ────────────────────────────────────────────────────
|
|
291
|
+
//
|
|
292
|
+
// The record of every rule this project's policies switched off, downgraded or
|
|
293
|
+
// replaced, with who decided and why. A user may tailor any rule; what the
|
|
294
|
+
// project owes is this record, and it belongs in the DHF.
|
|
295
|
+
export async function rulesTailoringCommand(projectDir, options) {
|
|
296
|
+
const { effectiveRules, ruleDiagnostics } = await loadContext(projectDir);
|
|
297
|
+
const entries = tailoringRecord(effectiveRules);
|
|
298
|
+
const decisions = bulkDecisions(entries);
|
|
299
|
+
const describe = (d) => d.selection.standard ? `every rule of the standard ${d.selection.standard}` : `every rule on the layer ${d.selection.category}`;
|
|
300
|
+
// A policy whose target is not in the project's rule set changes nothing,
|
|
301
|
+
// but the decision it states is still the project's record.
|
|
302
|
+
const inert = ruleDiagnostics.filter(d => d.code === 'missing-target');
|
|
303
|
+
const format = options?.format ?? 'text';
|
|
311
304
|
if (format === 'json') {
|
|
312
|
-
|
|
313
|
-
for (const r of results) {
|
|
314
|
-
const std = r.rule.attributes['standard'] || 'unspecified';
|
|
315
|
-
if (!grouped[std])
|
|
316
|
-
grouped[std] = [];
|
|
317
|
-
grouped[std].push({ id: r.rule.id, name: r.rule.name, passed: r.passed, count: r.count });
|
|
318
|
-
}
|
|
319
|
-
const totalPassed = results.filter(r => r.passed).length;
|
|
320
|
-
const pct = results.length > 0 ? Math.round((totalPassed / results.length) * 100) : 0;
|
|
321
|
-
console.log(JSON.stringify({ total: results.length, passed: totalPassed, percentage: pct, byStandard: grouped }, null, 2));
|
|
305
|
+
console.log(JSON.stringify({ tailored: entries, total: entries.length, decisions, inertPolicies: inert }, null, 2));
|
|
322
306
|
return;
|
|
323
307
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
308
|
+
if (format === 'markdown') {
|
|
309
|
+
console.log('# Rule tailoring record\n');
|
|
310
|
+
if (entries.length === 0)
|
|
311
|
+
console.log('No rule has been switched off, downgraded or replaced.');
|
|
312
|
+
if (decisions.length > 0) {
|
|
313
|
+
console.log('## Decisions that reached several rules\n');
|
|
314
|
+
for (const d of decisions) {
|
|
315
|
+
console.log(`### ${d.policy}: ${describe(d)}\n`);
|
|
316
|
+
console.log(`- ${d.disposition ?? 'enabled'}${d.severityOverride ? `, severity ${d.severityOverride}` : ''} (${d.level}, ${d.source}): ${d.rationaleText ?? '*no rationale*'}`);
|
|
317
|
+
console.log(`- Authority: ${d.authority ?? '*none*'}; approval: ${d.approvalReference ?? '*none*'}`);
|
|
318
|
+
console.log(`- Reached ${d.ruleIds.length} rule(s): ${d.ruleIds.join(', ')}\n`);
|
|
319
|
+
}
|
|
320
|
+
console.log('## Rules\n');
|
|
321
|
+
}
|
|
322
|
+
for (const entry of entries) {
|
|
323
|
+
console.log(`## ${entry.ruleId} ${entry.ruleType}${entry.domain === 'medicalDevice' ? ' (medical device)' : ''}\n`);
|
|
324
|
+
console.log(`- Disposition: ${entry.disposition}${entry.activeRuleId ? ` → ${entry.activeRuleId}` : ''}`);
|
|
325
|
+
console.log(`- Severity: ${entry.declaredSeverity} → ${entry.effectiveSeverity}`);
|
|
326
|
+
for (const change of entry.changes) {
|
|
327
|
+
console.log(`- ${change.policy} (${change.level}, ${change.source}): ${change.rationaleText ?? '*no rationale*'}`);
|
|
328
|
+
console.log(` - Authority: ${change.authority ?? '*none*'}; approval: ${change.approvalReference ?? '*none*'}`
|
|
329
|
+
+ `${change.approvedBy ? `; approved by ${change.approvedBy}` : ''}${change.approvedOn ? ` on ${change.approvedOn}` : ''}`);
|
|
330
|
+
}
|
|
331
|
+
if (entry.gaps.length > 0)
|
|
332
|
+
console.log(`- **Record incomplete:** ${entry.gaps.join(', ')}`);
|
|
333
|
+
console.log();
|
|
334
|
+
}
|
|
335
|
+
if (inert.length > 0) {
|
|
336
|
+
console.log('## Policies that target a rule outside the project\'s rule set\n');
|
|
337
|
+
for (const d of inert)
|
|
338
|
+
console.log(`- ${d.policy}: ${d.message}`);
|
|
339
|
+
}
|
|
327
340
|
return;
|
|
328
341
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
342
|
+
console.log(chalk.bold('\n📝 Rule tailoring record\n'));
|
|
343
|
+
if (entries.length === 0) {
|
|
344
|
+
console.log(chalk.gray(' No rule has been switched off, downgraded or replaced.\n'));
|
|
345
|
+
}
|
|
346
|
+
for (const d of decisions) {
|
|
347
|
+
console.log(` ${chalk.bold(d.policy)} — ${chalk.yellow(`${d.disposition ?? 'enabled'}${d.severityOverride ? ` at ${d.severityOverride}` : ''} ${describe(d)}`)}`);
|
|
348
|
+
console.log(chalk.gray(` ${d.rationaleText ?? 'no rationale'}`));
|
|
349
|
+
console.log(chalk.gray(` authority: ${d.authority ?? 'none'}; approval: ${d.approvalReference ?? 'none'}`));
|
|
350
|
+
console.log(chalk.gray(` reached ${d.ruleIds.length} rule(s): ${d.ruleIds.join(', ')}`));
|
|
351
|
+
}
|
|
352
|
+
if (decisions.length > 0)
|
|
353
|
+
console.log();
|
|
354
|
+
for (const entry of entries) {
|
|
355
|
+
const medical = entry.domain === 'medicalDevice' ? chalk.magenta(' [medical device]') : '';
|
|
356
|
+
const state = entry.disposition === 'enabled'
|
|
357
|
+
? `severity ${entry.declaredSeverity} → ${entry.effectiveSeverity}`
|
|
358
|
+
: entry.disposition === 'replaced' ? `replaced by ${entry.activeRuleId}` : 'disabled';
|
|
359
|
+
console.log(` ${chalk.white(entry.ruleId)} ${entry.ruleType}${medical} — ${chalk.yellow(state)}`);
|
|
360
|
+
for (const change of entry.changes) {
|
|
361
|
+
console.log(chalk.gray(` ${change.policy} (${change.level}): ${change.rationaleText ?? 'no rationale'}`));
|
|
362
|
+
console.log(chalk.gray(` authority: ${change.authority ?? 'none'}; approval: ${change.approvalReference ?? 'none'}`
|
|
363
|
+
+ `${change.approvedBy ? `; approved by ${change.approvedBy}` : ''}${change.approvedOn ? ` on ${change.approvedOn}` : ''}`));
|
|
364
|
+
}
|
|
365
|
+
if (entry.gaps.length > 0)
|
|
366
|
+
console.log(chalk.yellow(` record incomplete: ${entry.gaps.join(', ')}`));
|
|
367
|
+
}
|
|
368
|
+
if (entries.length > 0)
|
|
369
|
+
console.log(chalk.gray(`\n ${entries.length} rule(s) tailored.\n`));
|
|
370
|
+
if (inert.length > 0) {
|
|
371
|
+
console.log(chalk.bold(' Policies that target a rule outside this project\'s rule set (they change nothing)\n'));
|
|
372
|
+
for (const d of inert)
|
|
373
|
+
console.log(chalk.gray(` ${d.policy}: ${d.message}`));
|
|
374
|
+
console.log();
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
export async function rulesNewCommand(projectDir, options) {
|
|
378
|
+
const missing = ['id', 'type', 'appliesTo', 'predicate', 'rationale', 'file'].filter(key => !options[key]);
|
|
379
|
+
if (missing.length > 0) {
|
|
380
|
+
console.error(chalk.red(`❌ Missing: ${missing.map(m => `--${m.replace(/[A-Z]/g, c => `-${c.toLowerCase()}`)}`).join(', ')}`));
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
if (options.obligation && !RULE_OBLIGATIONS.includes(options.obligation)) {
|
|
384
|
+
console.error(chalk.red(`❌ --obligation expects one of ${RULE_OBLIGATIONS.join(', ')}, got "${options.obligation}".`));
|
|
385
|
+
process.exit(1);
|
|
386
|
+
}
|
|
387
|
+
const { projectRoot, config, constraints, model, ontologyRegistries, clauseFacts } = await loadContext(projectDir);
|
|
388
|
+
const enforces = [];
|
|
389
|
+
for (const text of options.enforces ?? []) {
|
|
390
|
+
const clause = resolveClauseReference(clauseFacts, text);
|
|
391
|
+
if (!clause) {
|
|
392
|
+
console.error(chalk.red(`❌ "${text}" names no single clause. Use the qualified name, or "<standard> §<number>" such as "62304 §5.2".`));
|
|
393
|
+
process.exit(1);
|
|
347
394
|
}
|
|
395
|
+
enforces.push(clause.qualifiedName);
|
|
396
|
+
}
|
|
397
|
+
const request = {
|
|
398
|
+
id: options.id, typeName: options.type, appliesTo: options.appliesTo,
|
|
399
|
+
predicateExpression: options.predicate, severity: (options.severity ?? (options.obligation === 'required' ? 'error' : options.obligation === 'bestPractice' ? 'info' : 'warning')),
|
|
400
|
+
rationaleText: options.rationale, file: options.file,
|
|
401
|
+
...(options.obligation ? { obligation: options.obligation } : {}),
|
|
402
|
+
...(options.tailoring ? { tailoring: options.tailoring } : {}),
|
|
403
|
+
...(enforces.length > 0 ? { enforces } : {}),
|
|
404
|
+
};
|
|
405
|
+
const kindRegistry = ontologyRegistries?.kindRegistry;
|
|
406
|
+
const refusal = checkNewRule(request, {
|
|
407
|
+
existingIds: new Set(constraints.map(c => c.id)),
|
|
408
|
+
existingTypeNames: new Set(constraints.map(c => c.typeName).filter((n) => Boolean(n))),
|
|
409
|
+
kindNames: kindRegistry ? new Set(kindRegistry.kindNames()) : undefined,
|
|
410
|
+
clauses: clauseFacts,
|
|
411
|
+
});
|
|
412
|
+
if (refusal) {
|
|
413
|
+
console.error(chalk.red(`❌ [${refusal.code}] ${refusal.message}`));
|
|
414
|
+
process.exit(1);
|
|
415
|
+
}
|
|
416
|
+
if (model) {
|
|
417
|
+
const result = dryRunRule(request, model, kindRegistry);
|
|
418
|
+
console.log(chalk.bold(`\nDry run: ${request.id} would flag ${result.flagged.length} of ${result.subjects} ${request.appliesTo}`));
|
|
419
|
+
for (const element of result.flagged.slice(0, 20)) {
|
|
420
|
+
console.log(` ${chalk.yellow('⚠')} ${element.elementKind} ${element.elementName || element.elementId}`);
|
|
421
|
+
}
|
|
422
|
+
if (result.flagged.length > 20)
|
|
423
|
+
console.log(chalk.gray(` … and ${result.flagged.length - 20} more`));
|
|
348
424
|
console.log();
|
|
349
425
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const
|
|
353
|
-
|
|
426
|
+
if (options.dryRun)
|
|
427
|
+
return;
|
|
428
|
+
const relativePath = request.file.replaceAll('\\', '/');
|
|
429
|
+
const filePath = resolve(projectRoot, relativePath);
|
|
430
|
+
if (!existsSync(filePath)) {
|
|
431
|
+
// A methodology runs the rules of the packages it includes, so a rule in a
|
|
432
|
+
// package nothing includes is written and never runs. Put it in one the project has.
|
|
433
|
+
console.error(chalk.red(`❌ ${relativePath} does not exist. Write the rule into a file of a package the project already includes; `
|
|
434
|
+
+ 'a methodology only runs the rules of the packages it includes.'));
|
|
435
|
+
process.exit(1);
|
|
436
|
+
}
|
|
437
|
+
const updated = insertRule(readFileSync(filePath, 'utf8'), request);
|
|
438
|
+
if (updated === undefined) {
|
|
439
|
+
console.error(chalk.red(`❌ ${relativePath} declares no package to put the rule in; nothing was written.`));
|
|
440
|
+
process.exit(1);
|
|
441
|
+
}
|
|
442
|
+
const committed = await commitSource(filePath, relativePath, updated, selectedOutlineSource(projectRoot, config));
|
|
443
|
+
if (!committed.success) {
|
|
444
|
+
console.error(chalk.red(`❌ ${committed.error}`));
|
|
445
|
+
process.exit(1);
|
|
446
|
+
}
|
|
447
|
+
console.log(chalk.green(`✅ Wrote ${request.id} (${request.typeName}) to ${relativePath}`));
|
|
448
|
+
}
|
|
449
|
+
export async function rulesTailorCommand(projectDir, options) {
|
|
450
|
+
const fail = (message) => { console.error(chalk.red(`❌ ${message}`)); process.exit(1); };
|
|
451
|
+
const given = [options.rule, options.standard, options.category].filter(Boolean);
|
|
452
|
+
if (given.length !== 1)
|
|
453
|
+
fail('Name exactly one of --rule, --standard and --category.');
|
|
454
|
+
if (!options.disable && !options.severity && !options.replaceWith) {
|
|
455
|
+
fail('State the decision: --disable, --severity <error|warning|info>, or --replace-with <rule> (one rule only).');
|
|
456
|
+
}
|
|
457
|
+
if (options.severity && !['error', 'warning', 'info'].includes(options.severity))
|
|
458
|
+
fail('--severity expects error, warning or info.');
|
|
459
|
+
if (!options.dryRun && !options.file)
|
|
460
|
+
fail('Missing --file: the project binding or methodology source to write the policy into.');
|
|
461
|
+
const { projectRoot, config, effectiveRules, clauseFacts } = await loadContext(projectDir);
|
|
462
|
+
const request = {
|
|
463
|
+
disposition: options.replaceWith ? 'replaced' : options.disable ? 'disabled' : 'enabled',
|
|
464
|
+
rationaleText: options.rationale ?? '',
|
|
465
|
+
...(options.severity ? { severityOverride: options.severity } : {}),
|
|
466
|
+
...(options.replaceWith ? { replacementRuleType: options.replaceWith } : {}),
|
|
467
|
+
...(options.authority ? { authority: options.authority } : {}),
|
|
468
|
+
...(options.approval ? { approvalReference: options.approval } : {}),
|
|
469
|
+
};
|
|
470
|
+
if (options.rule) {
|
|
471
|
+
// A rule is named by its `constraint def` or by its id.
|
|
472
|
+
const target = effectiveRules.find(r => r.sourceRuleType === options.rule || r.sourceRuleId === options.rule);
|
|
473
|
+
request.targetRuleType = target?.sourceRuleType ?? options.rule;
|
|
474
|
+
}
|
|
475
|
+
else if (options.standard) {
|
|
476
|
+
if (clauseFacts.length === 0) {
|
|
477
|
+
fail('A standard is selected by the clauses its rules enforce, which only a compiler that builds the model can read. '
|
|
478
|
+
+ 'Select the compiler (--toolchain.compiler, or the compiler setting), or name rules one at a time.');
|
|
479
|
+
}
|
|
480
|
+
const standard = resolveStandardReference(clauseFacts, options.standard);
|
|
481
|
+
if (!standard)
|
|
482
|
+
fail(`"${options.standard}" names no single standard of the model. Use its designation, such as "ISO 14971", or its qualified name.`);
|
|
483
|
+
request.targetStandard = standard;
|
|
484
|
+
}
|
|
485
|
+
else {
|
|
486
|
+
request.targetCategory = options.category;
|
|
487
|
+
}
|
|
488
|
+
const refusal = checkRulePolicy(request, effectiveRules);
|
|
489
|
+
if (refusal)
|
|
490
|
+
fail(`[${refusal.code}] ${refusal.message}`);
|
|
491
|
+
const reached = request.targetRuleType
|
|
492
|
+
? effectiveRules.filter(r => r.sourceRuleType === request.targetRuleType)
|
|
493
|
+
: rulesSelectedBy(effectiveRules, request);
|
|
494
|
+
const left = reached.filter(r => r.tailoring === 'invariant' && request.disposition !== 'enabled');
|
|
495
|
+
const changed = reached.filter(r => !left.includes(r));
|
|
496
|
+
console.log(chalk.bold(`\n${request.disposition === 'disabled' ? 'Disables' : request.disposition === 'replaced' ? 'Replaces' : 'Changes the severity of'} ${changed.length} rule(s):`));
|
|
497
|
+
for (const r of changed) {
|
|
498
|
+
const medical = r.domain === 'medicalDevice' ? chalk.magenta(' [medical device]') : '';
|
|
499
|
+
console.log(` ${r.sourceRuleId} ${r.sourceRuleType}${medical}`);
|
|
500
|
+
}
|
|
501
|
+
if (left.length > 0) {
|
|
502
|
+
console.log(chalk.yellow(` ${left.length} invariant rule(s) in the selection keep running: ${left.map(r => r.sourceRuleId).join(', ')}`));
|
|
503
|
+
}
|
|
504
|
+
if (changed.some(r => r.domain === 'medicalDevice') && request.disposition !== 'enabled'
|
|
505
|
+
&& !(request.authority && request.approvalReference)) {
|
|
506
|
+
console.log(chalk.yellow(' A medical-device rule\'s record also needs --authority and --approval; the tailoring record will report it incomplete.'));
|
|
507
|
+
}
|
|
508
|
+
console.log();
|
|
509
|
+
if (options.dryRun)
|
|
510
|
+
return;
|
|
511
|
+
const relativePath = options.file.replaceAll('\\', '/');
|
|
512
|
+
const filePath = resolve(projectRoot, relativePath);
|
|
513
|
+
if (!existsSync(filePath))
|
|
514
|
+
fail(`${relativePath} does not exist.`);
|
|
515
|
+
const updated = insertRulePolicy(readFileSync(filePath, 'utf8'), renderRulePolicy(request));
|
|
516
|
+
if (updated === undefined)
|
|
517
|
+
fail(`${relativePath} declares no ModelMethodBinding or MethodologyDefinition to attach the policy to; nothing was written.`);
|
|
518
|
+
const committed = await commitSource(filePath, relativePath, updated, selectedOutlineSource(projectRoot, config));
|
|
519
|
+
if (!committed.success)
|
|
520
|
+
fail(committed.error ?? 'The compiler rejected the policy; nothing was written.');
|
|
521
|
+
console.log(chalk.green(`✅ Wrote the policy to ${relativePath}`));
|
|
354
522
|
}
|
|
355
523
|
//# sourceMappingURL=rules.js.map
|