@memoarchitect/tools 0.4.4
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/LICENSE +21 -0
- package/README.md +171 -0
- package/package.json +86 -0
- package/packages/tools/lib/__tests__/archetype-parsing.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/archetype-parsing.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/archetype-parsing.test.js +42 -0
- package/packages/tools/lib/__tests__/archetype-parsing.test.js.map +1 -0
- package/packages/tools/lib/__tests__/architecture-discovery.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/architecture-discovery.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/architecture-discovery.test.js +82 -0
- package/packages/tools/lib/__tests__/architecture-discovery.test.js.map +1 -0
- package/packages/tools/lib/__tests__/behavior.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/behavior.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/behavior.test.js +766 -0
- package/packages/tools/lib/__tests__/behavior.test.js.map +1 -0
- package/packages/tools/lib/__tests__/builder.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/builder.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/builder.test.js +728 -0
- package/packages/tools/lib/__tests__/builder.test.js.map +1 -0
- package/packages/tools/lib/__tests__/config-loader.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/config-loader.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/config-loader.test.js +196 -0
- package/packages/tools/lib/__tests__/config-loader.test.js.map +1 -0
- package/packages/tools/lib/__tests__/conformance.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/conformance.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/conformance.test.js +467 -0
- package/packages/tools/lib/__tests__/conformance.test.js.map +1 -0
- package/packages/tools/lib/__tests__/constraint-eval.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/constraint-eval.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/constraint-eval.test.js +195 -0
- package/packages/tools/lib/__tests__/constraint-eval.test.js.map +1 -0
- package/packages/tools/lib/__tests__/constraint-grammar.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/constraint-grammar.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/constraint-grammar.test.js +163 -0
- package/packages/tools/lib/__tests__/constraint-grammar.test.js.map +1 -0
- package/packages/tools/lib/__tests__/constraint-loader.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/constraint-loader.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/constraint-loader.test.js +150 -0
- package/packages/tools/lib/__tests__/constraint-loader.test.js.map +1 -0
- package/packages/tools/lib/__tests__/csv-io.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/csv-io.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/csv-io.test.js +317 -0
- package/packages/tools/lib/__tests__/csv-io.test.js.map +1 -0
- package/packages/tools/lib/__tests__/dhf-doc-store.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/dhf-doc-store.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/dhf-doc-store.test.js +94 -0
- package/packages/tools/lib/__tests__/dhf-doc-store.test.js.map +1 -0
- package/packages/tools/lib/__tests__/dhf-template-resolver.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/dhf-template-resolver.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/dhf-template-resolver.test.js +39 -0
- package/packages/tools/lib/__tests__/dhf-template-resolver.test.js.map +1 -0
- package/packages/tools/lib/__tests__/dhf.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/dhf.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/dhf.test.js +393 -0
- package/packages/tools/lib/__tests__/dhf.test.js.map +1 -0
- package/packages/tools/lib/__tests__/dimension-filter.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/dimension-filter.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/dimension-filter.test.js +85 -0
- package/packages/tools/lib/__tests__/dimension-filter.test.js.map +1 -0
- package/packages/tools/lib/__tests__/dsm.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/dsm.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/dsm.test.js +112 -0
- package/packages/tools/lib/__tests__/dsm.test.js.map +1 -0
- package/packages/tools/lib/__tests__/e2e-workflow.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/e2e-workflow.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/e2e-workflow.test.js +707 -0
- package/packages/tools/lib/__tests__/e2e-workflow.test.js.map +1 -0
- package/packages/tools/lib/__tests__/file-watcher.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/file-watcher.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/file-watcher.test.js +31 -0
- package/packages/tools/lib/__tests__/file-watcher.test.js.map +1 -0
- package/packages/tools/lib/__tests__/impact.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/impact.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/impact.test.js +82 -0
- package/packages/tools/lib/__tests__/impact.test.js.map +1 -0
- package/packages/tools/lib/__tests__/importer.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/importer.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/importer.test.js +336 -0
- package/packages/tools/lib/__tests__/importer.test.js.map +1 -0
- package/packages/tools/lib/__tests__/kind-registry.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/kind-registry.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/kind-registry.test.js +132 -0
- package/packages/tools/lib/__tests__/kind-registry.test.js.map +1 -0
- package/packages/tools/lib/__tests__/llm.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/llm.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/llm.test.js +275 -0
- package/packages/tools/lib/__tests__/llm.test.js.map +1 -0
- package/packages/tools/lib/__tests__/manifest-resolver.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/manifest-resolver.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/manifest-resolver.test.js +97 -0
- package/packages/tools/lib/__tests__/manifest-resolver.test.js.map +1 -0
- package/packages/tools/lib/__tests__/markdown-to-ir.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/markdown-to-ir.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/markdown-to-ir.test.js +74 -0
- package/packages/tools/lib/__tests__/markdown-to-ir.test.js.map +1 -0
- package/packages/tools/lib/__tests__/methodology-scope.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/methodology-scope.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/methodology-scope.test.js +59 -0
- package/packages/tools/lib/__tests__/methodology-scope.test.js.map +1 -0
- package/packages/tools/lib/__tests__/parser.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/parser.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/parser.test.js +938 -0
- package/packages/tools/lib/__tests__/parser.test.js.map +1 -0
- package/packages/tools/lib/__tests__/plugin.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/plugin.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/plugin.test.js +308 -0
- package/packages/tools/lib/__tests__/plugin.test.js.map +1 -0
- package/packages/tools/lib/__tests__/relationship-registry.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/relationship-registry.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/relationship-registry.test.js +96 -0
- package/packages/tools/lib/__tests__/relationship-registry.test.js.map +1 -0
- package/packages/tools/lib/__tests__/rule-registry.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/rule-registry.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/rule-registry.test.js +53 -0
- package/packages/tools/lib/__tests__/rule-registry.test.js.map +1 -0
- package/packages/tools/lib/__tests__/toolchain.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/toolchain.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/toolchain.test.js +94 -0
- package/packages/tools/lib/__tests__/toolchain.test.js.map +1 -0
- package/packages/tools/lib/__tests__/view-deriver-samples.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/view-deriver-samples.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/view-deriver-samples.test.js +39 -0
- package/packages/tools/lib/__tests__/view-deriver-samples.test.js.map +1 -0
- package/packages/tools/lib/__tests__/view-kinds.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/view-kinds.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/view-kinds.test.js +263 -0
- package/packages/tools/lib/__tests__/view-kinds.test.js.map +1 -0
- package/packages/tools/lib/__tests__/view-layout-store.test.d.ts +2 -0
- package/packages/tools/lib/__tests__/view-layout-store.test.d.ts.map +1 -0
- package/packages/tools/lib/__tests__/view-layout-store.test.js +61 -0
- package/packages/tools/lib/__tests__/view-layout-store.test.js.map +1 -0
- package/packages/tools/lib/analysis/dsm.d.ts +47 -0
- package/packages/tools/lib/analysis/dsm.d.ts.map +1 -0
- package/packages/tools/lib/analysis/dsm.js +172 -0
- package/packages/tools/lib/analysis/dsm.js.map +1 -0
- package/packages/tools/lib/analysis/impact.d.ts +35 -0
- package/packages/tools/lib/analysis/impact.d.ts.map +1 -0
- package/packages/tools/lib/analysis/impact.js +97 -0
- package/packages/tools/lib/analysis/impact.js.map +1 -0
- package/packages/tools/lib/bin/memo.d.ts +3 -0
- package/packages/tools/lib/bin/memo.d.ts.map +1 -0
- package/packages/tools/lib/bin/memo.js +461 -0
- package/packages/tools/lib/bin/memo.js.map +1 -0
- package/packages/tools/lib/browser/index.d.ts +13 -0
- package/packages/tools/lib/browser/index.d.ts.map +1 -0
- package/packages/tools/lib/browser/index.js +11 -0
- package/packages/tools/lib/browser/index.js.map +1 -0
- package/packages/tools/lib/commands/archetype-loader.d.ts +15 -0
- package/packages/tools/lib/commands/archetype-loader.d.ts.map +1 -0
- package/packages/tools/lib/commands/archetype-loader.js +31 -0
- package/packages/tools/lib/commands/archetype-loader.js.map +1 -0
- package/packages/tools/lib/commands/ask.d.ts +6 -0
- package/packages/tools/lib/commands/ask.d.ts.map +1 -0
- package/packages/tools/lib/commands/ask.js +79 -0
- package/packages/tools/lib/commands/ask.js.map +1 -0
- package/packages/tools/lib/commands/check.d.ts +6 -0
- package/packages/tools/lib/commands/check.d.ts.map +1 -0
- package/packages/tools/lib/commands/check.js +214 -0
- package/packages/tools/lib/commands/check.js.map +1 -0
- package/packages/tools/lib/commands/create-package.d.ts +12 -0
- package/packages/tools/lib/commands/create-package.d.ts.map +1 -0
- package/packages/tools/lib/commands/create-package.js +293 -0
- package/packages/tools/lib/commands/create-package.js.map +1 -0
- package/packages/tools/lib/commands/dev.d.ts +6 -0
- package/packages/tools/lib/commands/dev.d.ts.map +1 -0
- package/packages/tools/lib/commands/dev.js +316 -0
- package/packages/tools/lib/commands/dev.js.map +1 -0
- package/packages/tools/lib/commands/dhf-draft.d.ts +8 -0
- package/packages/tools/lib/commands/dhf-draft.d.ts.map +1 -0
- package/packages/tools/lib/commands/dhf-draft.js +115 -0
- package/packages/tools/lib/commands/dhf-draft.js.map +1 -0
- package/packages/tools/lib/commands/dhf-init.d.ts +4 -0
- package/packages/tools/lib/commands/dhf-init.d.ts.map +1 -0
- package/packages/tools/lib/commands/dhf-init.js +270 -0
- package/packages/tools/lib/commands/dhf-init.js.map +1 -0
- package/packages/tools/lib/commands/dhf-preview.d.ts +4 -0
- package/packages/tools/lib/commands/dhf-preview.d.ts.map +1 -0
- package/packages/tools/lib/commands/dhf-preview.js +285 -0
- package/packages/tools/lib/commands/dhf-preview.js.map +1 -0
- package/packages/tools/lib/commands/dhf.d.ts +27 -0
- package/packages/tools/lib/commands/dhf.d.ts.map +1 -0
- package/packages/tools/lib/commands/dhf.js +334 -0
- package/packages/tools/lib/commands/dhf.js.map +1 -0
- package/packages/tools/lib/commands/export.d.ts +9 -0
- package/packages/tools/lib/commands/export.d.ts.map +1 -0
- package/packages/tools/lib/commands/export.js +136 -0
- package/packages/tools/lib/commands/export.js.map +1 -0
- package/packages/tools/lib/commands/generate.d.ts +6 -0
- package/packages/tools/lib/commands/generate.d.ts.map +1 -0
- package/packages/tools/lib/commands/generate.js +80 -0
- package/packages/tools/lib/commands/generate.js.map +1 -0
- package/packages/tools/lib/commands/import-ea.d.ts +32 -0
- package/packages/tools/lib/commands/import-ea.d.ts.map +1 -0
- package/packages/tools/lib/commands/import-ea.js +156 -0
- package/packages/tools/lib/commands/import-ea.js.map +1 -0
- package/packages/tools/lib/commands/import-owl.d.ts +19 -0
- package/packages/tools/lib/commands/import-owl.d.ts.map +1 -0
- package/packages/tools/lib/commands/import-owl.js +103 -0
- package/packages/tools/lib/commands/import-owl.js.map +1 -0
- package/packages/tools/lib/commands/import-sysand.d.ts +11 -0
- package/packages/tools/lib/commands/import-sysand.d.ts.map +1 -0
- package/packages/tools/lib/commands/import-sysand.js +87 -0
- package/packages/tools/lib/commands/import-sysand.js.map +1 -0
- package/packages/tools/lib/commands/import.d.ts +30 -0
- package/packages/tools/lib/commands/import.d.ts.map +1 -0
- package/packages/tools/lib/commands/import.js +250 -0
- package/packages/tools/lib/commands/import.js.map +1 -0
- package/packages/tools/lib/commands/init-wizard.d.ts +10 -0
- package/packages/tools/lib/commands/init-wizard.d.ts.map +1 -0
- package/packages/tools/lib/commands/init-wizard.js +69 -0
- package/packages/tools/lib/commands/init-wizard.js.map +1 -0
- package/packages/tools/lib/commands/init.d.ts +30 -0
- package/packages/tools/lib/commands/init.d.ts.map +1 -0
- package/packages/tools/lib/commands/init.js +238 -0
- package/packages/tools/lib/commands/init.js.map +1 -0
- package/packages/tools/lib/commands/install.d.ts +8 -0
- package/packages/tools/lib/commands/install.d.ts.map +1 -0
- package/packages/tools/lib/commands/install.js +238 -0
- package/packages/tools/lib/commands/install.js.map +1 -0
- package/packages/tools/lib/commands/lock.d.ts +2 -0
- package/packages/tools/lib/commands/lock.d.ts.map +1 -0
- package/packages/tools/lib/commands/lock.js +29 -0
- package/packages/tools/lib/commands/lock.js.map +1 -0
- package/packages/tools/lib/commands/ontology.d.ts +14 -0
- package/packages/tools/lib/commands/ontology.d.ts.map +1 -0
- package/packages/tools/lib/commands/ontology.js +464 -0
- package/packages/tools/lib/commands/ontology.js.map +1 -0
- package/packages/tools/lib/commands/pack.d.ts +4 -0
- package/packages/tools/lib/commands/pack.d.ts.map +1 -0
- package/packages/tools/lib/commands/pack.js +89 -0
- package/packages/tools/lib/commands/pack.js.map +1 -0
- package/packages/tools/lib/commands/plugin.d.ts +10 -0
- package/packages/tools/lib/commands/plugin.d.ts.map +1 -0
- package/packages/tools/lib/commands/plugin.js +195 -0
- package/packages/tools/lib/commands/plugin.js.map +1 -0
- package/packages/tools/lib/commands/req.d.ts +10 -0
- package/packages/tools/lib/commands/req.d.ts.map +1 -0
- package/packages/tools/lib/commands/req.js +64 -0
- package/packages/tools/lib/commands/req.js.map +1 -0
- package/packages/tools/lib/commands/roundtrip.d.ts +6 -0
- package/packages/tools/lib/commands/roundtrip.d.ts.map +1 -0
- package/packages/tools/lib/commands/roundtrip.js +162 -0
- package/packages/tools/lib/commands/roundtrip.js.map +1 -0
- package/packages/tools/lib/commands/rules.d.ts +15 -0
- package/packages/tools/lib/commands/rules.d.ts.map +1 -0
- package/packages/tools/lib/commands/rules.js +282 -0
- package/packages/tools/lib/commands/rules.js.map +1 -0
- package/packages/tools/lib/commands/sysand-publish.d.ts +6 -0
- package/packages/tools/lib/commands/sysand-publish.d.ts.map +1 -0
- package/packages/tools/lib/commands/sysand-publish.js +231 -0
- package/packages/tools/lib/commands/sysand-publish.js.map +1 -0
- package/packages/tools/lib/commands/validate.d.ts +6 -0
- package/packages/tools/lib/commands/validate.d.ts.map +1 -0
- package/packages/tools/lib/commands/validate.js +269 -0
- package/packages/tools/lib/commands/validate.js.map +1 -0
- package/packages/tools/lib/completeness/tracker.d.ts +11 -0
- package/packages/tools/lib/completeness/tracker.d.ts.map +1 -0
- package/packages/tools/lib/completeness/tracker.js +86 -0
- package/packages/tools/lib/completeness/tracker.js.map +1 -0
- package/packages/tools/lib/dhf/dhf-config-v2.d.ts +102 -0
- package/packages/tools/lib/dhf/dhf-config-v2.d.ts.map +1 -0
- package/packages/tools/lib/dhf/dhf-config-v2.js +82 -0
- package/packages/tools/lib/dhf/dhf-config-v2.js.map +1 -0
- package/packages/tools/lib/dhf/dhf-config.d.ts +53 -0
- package/packages/tools/lib/dhf/dhf-config.d.ts.map +1 -0
- package/packages/tools/lib/dhf/dhf-config.js +44 -0
- package/packages/tools/lib/dhf/dhf-config.js.map +1 -0
- package/packages/tools/lib/dhf/directive-parser.d.ts +31 -0
- package/packages/tools/lib/dhf/directive-parser.d.ts.map +1 -0
- package/packages/tools/lib/dhf/directive-parser.js +83 -0
- package/packages/tools/lib/dhf/directive-parser.js.map +1 -0
- package/packages/tools/lib/dhf/document-compiler.d.ts +68 -0
- package/packages/tools/lib/dhf/document-compiler.d.ts.map +1 -0
- package/packages/tools/lib/dhf/document-compiler.js +209 -0
- package/packages/tools/lib/dhf/document-compiler.js.map +1 -0
- package/packages/tools/lib/dhf/document-ir.d.ts +170 -0
- package/packages/tools/lib/dhf/document-ir.d.ts.map +1 -0
- package/packages/tools/lib/dhf/document-ir.js +47 -0
- package/packages/tools/lib/dhf/document-ir.js.map +1 -0
- package/packages/tools/lib/dhf/document-registry.d.ts +45 -0
- package/packages/tools/lib/dhf/document-registry.d.ts.map +1 -0
- package/packages/tools/lib/dhf/document-registry.js +342 -0
- package/packages/tools/lib/dhf/document-registry.js.map +1 -0
- package/packages/tools/lib/dhf/export-plugin.d.ts +24 -0
- package/packages/tools/lib/dhf/export-plugin.d.ts.map +1 -0
- package/packages/tools/lib/dhf/export-plugin.js +24 -0
- package/packages/tools/lib/dhf/export-plugin.js.map +1 -0
- package/packages/tools/lib/dhf/exporters/docx-exporter.d.ts +15 -0
- package/packages/tools/lib/dhf/exporters/docx-exporter.d.ts.map +1 -0
- package/packages/tools/lib/dhf/exporters/docx-exporter.js +159 -0
- package/packages/tools/lib/dhf/exporters/docx-exporter.js.map +1 -0
- package/packages/tools/lib/dhf/exporters/html-exporter.d.ts +9 -0
- package/packages/tools/lib/dhf/exporters/html-exporter.d.ts.map +1 -0
- package/packages/tools/lib/dhf/exporters/html-exporter.js +248 -0
- package/packages/tools/lib/dhf/exporters/html-exporter.js.map +1 -0
- package/packages/tools/lib/dhf/exporters/markdown-exporter.d.ts +9 -0
- package/packages/tools/lib/dhf/exporters/markdown-exporter.d.ts.map +1 -0
- package/packages/tools/lib/dhf/exporters/markdown-exporter.js +147 -0
- package/packages/tools/lib/dhf/exporters/markdown-exporter.js.map +1 -0
- package/packages/tools/lib/dhf/index.d.ts +15 -0
- package/packages/tools/lib/dhf/index.d.ts.map +1 -0
- package/packages/tools/lib/dhf/index.js +21 -0
- package/packages/tools/lib/dhf/index.js.map +1 -0
- package/packages/tools/lib/dhf/markdown-to-ir.d.ts +19 -0
- package/packages/tools/lib/dhf/markdown-to-ir.d.ts.map +1 -0
- package/packages/tools/lib/dhf/markdown-to-ir.js +193 -0
- package/packages/tools/lib/dhf/markdown-to-ir.js.map +1 -0
- package/packages/tools/lib/dhf/query-engine.d.ts +61 -0
- package/packages/tools/lib/dhf/query-engine.d.ts.map +1 -0
- package/packages/tools/lib/dhf/query-engine.js +109 -0
- package/packages/tools/lib/dhf/query-engine.js.map +1 -0
- package/packages/tools/lib/dhf/query-executor.d.ts +33 -0
- package/packages/tools/lib/dhf/query-executor.d.ts.map +1 -0
- package/packages/tools/lib/dhf/query-executor.js +222 -0
- package/packages/tools/lib/dhf/query-executor.js.map +1 -0
- package/packages/tools/lib/dhf/script-runner.d.ts +4 -0
- package/packages/tools/lib/dhf/script-runner.d.ts.map +1 -0
- package/packages/tools/lib/dhf/script-runner.js +62 -0
- package/packages/tools/lib/dhf/script-runner.js.map +1 -0
- package/packages/tools/lib/dhf/snapshot.d.ts +60 -0
- package/packages/tools/lib/dhf/snapshot.d.ts.map +1 -0
- package/packages/tools/lib/dhf/snapshot.js +185 -0
- package/packages/tools/lib/dhf/snapshot.js.map +1 -0
- package/packages/tools/lib/dhf/template-engine.d.ts +18 -0
- package/packages/tools/lib/dhf/template-engine.d.ts.map +1 -0
- package/packages/tools/lib/dhf/template-engine.js +339 -0
- package/packages/tools/lib/dhf/template-engine.js.map +1 -0
- package/packages/tools/lib/dhf/template-resolver.d.ts +42 -0
- package/packages/tools/lib/dhf/template-resolver.d.ts.map +1 -0
- package/packages/tools/lib/dhf/template-resolver.js +196 -0
- package/packages/tools/lib/dhf/template-resolver.js.map +1 -0
- package/packages/tools/lib/import/column-mapper.d.ts +35 -0
- package/packages/tools/lib/import/column-mapper.d.ts.map +1 -0
- package/packages/tools/lib/import/column-mapper.js +171 -0
- package/packages/tools/lib/import/column-mapper.js.map +1 -0
- package/packages/tools/lib/import/import-diff.d.ts +49 -0
- package/packages/tools/lib/import/import-diff.d.ts.map +1 -0
- package/packages/tools/lib/import/import-diff.js +102 -0
- package/packages/tools/lib/import/import-diff.js.map +1 -0
- package/packages/tools/lib/import/recipes.d.ts +43 -0
- package/packages/tools/lib/import/recipes.d.ts.map +1 -0
- package/packages/tools/lib/import/recipes.js +133 -0
- package/packages/tools/lib/import/recipes.js.map +1 -0
- package/packages/tools/lib/importer/cameo-importer.d.ts +103 -0
- package/packages/tools/lib/importer/cameo-importer.d.ts.map +1 -0
- package/packages/tools/lib/importer/cameo-importer.js +384 -0
- package/packages/tools/lib/importer/cameo-importer.js.map +1 -0
- package/packages/tools/lib/importer/ea-importer.d.ts +115 -0
- package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -0
- package/packages/tools/lib/importer/ea-importer.js +325 -0
- package/packages/tools/lib/importer/ea-importer.js.map +1 -0
- package/packages/tools/lib/importer/index.d.ts +5 -0
- package/packages/tools/lib/importer/index.d.ts.map +1 -0
- package/packages/tools/lib/importer/index.js +15 -0
- package/packages/tools/lib/importer/index.js.map +1 -0
- package/packages/tools/lib/importer/owl-importer.d.ts +91 -0
- package/packages/tools/lib/importer/owl-importer.d.ts.map +1 -0
- package/packages/tools/lib/importer/owl-importer.js +429 -0
- package/packages/tools/lib/importer/owl-importer.js.map +1 -0
- package/packages/tools/lib/importer/sysand-importer.d.ts +78 -0
- package/packages/tools/lib/importer/sysand-importer.d.ts.map +1 -0
- package/packages/tools/lib/importer/sysand-importer.js +188 -0
- package/packages/tools/lib/importer/sysand-importer.js.map +1 -0
- package/packages/tools/lib/index.d.ts +44 -0
- package/packages/tools/lib/index.d.ts.map +1 -0
- package/packages/tools/lib/index.js +56 -0
- package/packages/tools/lib/index.js.map +1 -0
- package/packages/tools/lib/language/generated/ast.d.ts +629 -0
- package/packages/tools/lib/language/generated/ast.d.ts.map +1 -0
- package/packages/tools/lib/language/generated/ast.js +961 -0
- package/packages/tools/lib/language/generated/ast.js.map +1 -0
- package/packages/tools/lib/language/generated/grammar.d.ts +7 -0
- package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -0
- package/packages/tools/lib/language/generated/grammar.js +5676 -0
- package/packages/tools/lib/language/generated/grammar.js.map +1 -0
- package/packages/tools/lib/language/generated/module.d.ts +14 -0
- package/packages/tools/lib/language/generated/module.d.ts.map +1 -0
- package/packages/tools/lib/language/generated/module.js +21 -0
- package/packages/tools/lib/language/generated/module.js.map +1 -0
- package/packages/tools/lib/language/memo-sysml-module.d.ts +24 -0
- package/packages/tools/lib/language/memo-sysml-module.d.ts.map +1 -0
- package/packages/tools/lib/language/memo-sysml-module.js +20 -0
- package/packages/tools/lib/language/memo-sysml-module.js.map +1 -0
- package/packages/tools/lib/llm/ask-engine.d.ts +17 -0
- package/packages/tools/lib/llm/ask-engine.d.ts.map +1 -0
- package/packages/tools/lib/llm/ask-engine.js +43 -0
- package/packages/tools/lib/llm/ask-engine.js.map +1 -0
- package/packages/tools/lib/llm/draft-engine.d.ts +32 -0
- package/packages/tools/lib/llm/draft-engine.d.ts.map +1 -0
- package/packages/tools/lib/llm/draft-engine.js +270 -0
- package/packages/tools/lib/llm/draft-engine.js.map +1 -0
- package/packages/tools/lib/llm/generate-engine.d.ts +21 -0
- package/packages/tools/lib/llm/generate-engine.d.ts.map +1 -0
- package/packages/tools/lib/llm/generate-engine.js +83 -0
- package/packages/tools/lib/llm/generate-engine.js.map +1 -0
- package/packages/tools/lib/llm/index.d.ts +6 -0
- package/packages/tools/lib/llm/index.d.ts.map +1 -0
- package/packages/tools/lib/llm/index.js +11 -0
- package/packages/tools/lib/llm/index.js.map +1 -0
- package/packages/tools/lib/llm/llm-provider.d.ts +40 -0
- package/packages/tools/lib/llm/llm-provider.d.ts.map +1 -0
- package/packages/tools/lib/llm/llm-provider.js +121 -0
- package/packages/tools/lib/llm/llm-provider.js.map +1 -0
- package/packages/tools/lib/llm/model-context.d.ts +28 -0
- package/packages/tools/lib/llm/model-context.d.ts.map +1 -0
- package/packages/tools/lib/llm/model-context.js +162 -0
- package/packages/tools/lib/llm/model-context.js.map +1 -0
- package/packages/tools/lib/lock.d.ts +43 -0
- package/packages/tools/lib/lock.d.ts.map +1 -0
- package/packages/tools/lib/lock.js +225 -0
- package/packages/tools/lib/lock.js.map +1 -0
- package/packages/tools/lib/model/builder.d.ts +22 -0
- package/packages/tools/lib/model/builder.d.ts.map +1 -0
- package/packages/tools/lib/model/builder.js +708 -0
- package/packages/tools/lib/model/builder.js.map +1 -0
- package/packages/tools/lib/model/config-loader.d.ts +34 -0
- package/packages/tools/lib/model/config-loader.d.ts.map +1 -0
- package/packages/tools/lib/model/config-loader.js +257 -0
- package/packages/tools/lib/model/config-loader.js.map +1 -0
- package/packages/tools/lib/model/config.d.ts +220 -0
- package/packages/tools/lib/model/config.d.ts.map +1 -0
- package/packages/tools/lib/model/config.js +14 -0
- package/packages/tools/lib/model/config.js.map +1 -0
- package/packages/tools/lib/model/content-store.d.ts +8 -0
- package/packages/tools/lib/model/content-store.d.ts.map +1 -0
- package/packages/tools/lib/model/content-store.js +59 -0
- package/packages/tools/lib/model/content-store.js.map +1 -0
- package/packages/tools/lib/model/dimension-filter.d.ts +33 -0
- package/packages/tools/lib/model/dimension-filter.d.ts.map +1 -0
- package/packages/tools/lib/model/dimension-filter.js +57 -0
- package/packages/tools/lib/model/dimension-filter.js.map +1 -0
- package/packages/tools/lib/model/kind-registry.d.ts +72 -0
- package/packages/tools/lib/model/kind-registry.d.ts.map +1 -0
- package/packages/tools/lib/model/kind-registry.js +178 -0
- package/packages/tools/lib/model/kind-registry.js.map +1 -0
- package/packages/tools/lib/model/layer-resolver.d.ts +25 -0
- package/packages/tools/lib/model/layer-resolver.d.ts.map +1 -0
- package/packages/tools/lib/model/layer-resolver.js +82 -0
- package/packages/tools/lib/model/layer-resolver.js.map +1 -0
- package/packages/tools/lib/model/manifest.d.ts +23 -0
- package/packages/tools/lib/model/manifest.d.ts.map +1 -0
- package/packages/tools/lib/model/manifest.js +117 -0
- package/packages/tools/lib/model/manifest.js.map +1 -0
- package/packages/tools/lib/model/methodology-loader.d.ts +56 -0
- package/packages/tools/lib/model/methodology-loader.d.ts.map +1 -0
- package/packages/tools/lib/model/methodology-loader.js +203 -0
- package/packages/tools/lib/model/methodology-loader.js.map +1 -0
- package/packages/tools/lib/model/ontology-loader.d.ts +113 -0
- package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -0
- package/packages/tools/lib/model/ontology-loader.js +901 -0
- package/packages/tools/lib/model/ontology-loader.js.map +1 -0
- package/packages/tools/lib/model/package-registry.d.ts +62 -0
- package/packages/tools/lib/model/package-registry.d.ts.map +1 -0
- package/packages/tools/lib/model/package-registry.js +164 -0
- package/packages/tools/lib/model/package-registry.js.map +1 -0
- package/packages/tools/lib/model/parser-utils.d.ts +23 -0
- package/packages/tools/lib/model/parser-utils.d.ts.map +1 -0
- package/packages/tools/lib/model/parser-utils.js +63 -0
- package/packages/tools/lib/model/parser-utils.js.map +1 -0
- package/packages/tools/lib/model/paths.d.ts +18 -0
- package/packages/tools/lib/model/paths.d.ts.map +1 -0
- package/packages/tools/lib/model/paths.js +26 -0
- package/packages/tools/lib/model/paths.js.map +1 -0
- package/packages/tools/lib/model/relationship-registry.d.ts +64 -0
- package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -0
- package/packages/tools/lib/model/relationship-registry.js +141 -0
- package/packages/tools/lib/model/relationship-registry.js.map +1 -0
- package/packages/tools/lib/model/semantic.d.ts +175 -0
- package/packages/tools/lib/model/semantic.d.ts.map +1 -0
- package/packages/tools/lib/model/semantic.js +61 -0
- package/packages/tools/lib/model/semantic.js.map +1 -0
- package/packages/tools/lib/model/short-id.d.ts +32 -0
- package/packages/tools/lib/model/short-id.d.ts.map +1 -0
- package/packages/tools/lib/model/short-id.js +136 -0
- package/packages/tools/lib/model/short-id.js.map +1 -0
- package/packages/tools/lib/model/toolchain.d.ts +12 -0
- package/packages/tools/lib/model/toolchain.d.ts.map +1 -0
- package/packages/tools/lib/model/toolchain.js +92 -0
- package/packages/tools/lib/model/toolchain.js.map +1 -0
- package/packages/tools/lib/model/view-deriver.d.ts +22 -0
- package/packages/tools/lib/model/view-deriver.d.ts.map +1 -0
- package/packages/tools/lib/model/view-deriver.js +160 -0
- package/packages/tools/lib/model/view-deriver.js.map +1 -0
- package/packages/tools/lib/model/view-kinds.d.ts +29 -0
- package/packages/tools/lib/model/view-kinds.d.ts.map +1 -0
- package/packages/tools/lib/model/view-kinds.js +80 -0
- package/packages/tools/lib/model/view-kinds.js.map +1 -0
- package/packages/tools/lib/ontology/owl-exporter.d.ts +43 -0
- package/packages/tools/lib/ontology/owl-exporter.d.ts.map +1 -0
- package/packages/tools/lib/ontology/owl-exporter.js +70 -0
- package/packages/tools/lib/ontology/owl-exporter.js.map +1 -0
- package/packages/tools/lib/operations/index.d.ts +8 -0
- package/packages/tools/lib/operations/index.d.ts.map +1 -0
- package/packages/tools/lib/operations/index.js +8 -0
- package/packages/tools/lib/operations/index.js.map +1 -0
- package/packages/tools/lib/operations/project-snapshot.d.ts +17 -0
- package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -0
- package/packages/tools/lib/operations/project-snapshot.js +103 -0
- package/packages/tools/lib/operations/project-snapshot.js.map +1 -0
- package/packages/tools/lib/plugin/index.d.ts +5 -0
- package/packages/tools/lib/plugin/index.d.ts.map +1 -0
- package/packages/tools/lib/plugin/index.js +10 -0
- package/packages/tools/lib/plugin/index.js.map +1 -0
- package/packages/tools/lib/plugin/plugin-loader.d.ts +26 -0
- package/packages/tools/lib/plugin/plugin-loader.d.ts.map +1 -0
- package/packages/tools/lib/plugin/plugin-loader.js +216 -0
- package/packages/tools/lib/plugin/plugin-loader.js.map +1 -0
- package/packages/tools/lib/plugin/plugin-registry.d.ts +49 -0
- package/packages/tools/lib/plugin/plugin-registry.d.ts.map +1 -0
- package/packages/tools/lib/plugin/plugin-registry.js +121 -0
- package/packages/tools/lib/plugin/plugin-registry.js.map +1 -0
- package/packages/tools/lib/plugin/plugin-scaffold.d.ts +17 -0
- package/packages/tools/lib/plugin/plugin-scaffold.d.ts.map +1 -0
- package/packages/tools/lib/plugin/plugin-scaffold.js +223 -0
- package/packages/tools/lib/plugin/plugin-scaffold.js.map +1 -0
- package/packages/tools/lib/plugin/plugin-types.d.ts +115 -0
- package/packages/tools/lib/plugin/plugin-types.d.ts.map +1 -0
- package/packages/tools/lib/plugin/plugin-types.js +11 -0
- package/packages/tools/lib/plugin/plugin-types.js.map +1 -0
- package/packages/tools/lib/protocol/messages.d.ts +470 -0
- package/packages/tools/lib/protocol/messages.d.ts.map +1 -0
- package/packages/tools/lib/protocol/messages.js +6 -0
- package/packages/tools/lib/protocol/messages.js.map +1 -0
- package/packages/tools/lib/serializer/csv-io.d.ts +113 -0
- package/packages/tools/lib/serializer/csv-io.d.ts.map +1 -0
- package/packages/tools/lib/serializer/csv-io.js +394 -0
- package/packages/tools/lib/serializer/csv-io.js.map +1 -0
- package/packages/tools/lib/serializer/sysml-generator.d.ts +32 -0
- package/packages/tools/lib/serializer/sysml-generator.d.ts.map +1 -0
- package/packages/tools/lib/serializer/sysml-generator.js +120 -0
- package/packages/tools/lib/serializer/sysml-generator.js.map +1 -0
- package/packages/tools/lib/server/config-resolver.d.ts +14 -0
- package/packages/tools/lib/server/config-resolver.d.ts.map +1 -0
- package/packages/tools/lib/server/config-resolver.js +54 -0
- package/packages/tools/lib/server/config-resolver.js.map +1 -0
- package/packages/tools/lib/server/dev-server.d.ts +17 -0
- package/packages/tools/lib/server/dev-server.d.ts.map +1 -0
- package/packages/tools/lib/server/dev-server.js +939 -0
- package/packages/tools/lib/server/dev-server.js.map +1 -0
- package/packages/tools/lib/server/dhf-doc-store.d.ts +11 -0
- package/packages/tools/lib/server/dhf-doc-store.d.ts.map +1 -0
- package/packages/tools/lib/server/dhf-doc-store.js +181 -0
- package/packages/tools/lib/server/dhf-doc-store.js.map +1 -0
- package/packages/tools/lib/server/file-watcher.d.ts +20 -0
- package/packages/tools/lib/server/file-watcher.d.ts.map +1 -0
- package/packages/tools/lib/server/file-watcher.js +140 -0
- package/packages/tools/lib/server/file-watcher.js.map +1 -0
- package/packages/tools/lib/server/persistor.d.ts +25 -0
- package/packages/tools/lib/server/persistor.d.ts.map +1 -0
- package/packages/tools/lib/server/persistor.js +100 -0
- package/packages/tools/lib/server/persistor.js.map +1 -0
- package/packages/tools/lib/server/view-layout-store.d.ts +8 -0
- package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -0
- package/packages/tools/lib/server/view-layout-store.js +73 -0
- package/packages/tools/lib/server/view-layout-store.js.map +1 -0
- package/packages/tools/lib/types/index.d.ts +4 -0
- package/packages/tools/lib/types/index.d.ts.map +1 -0
- package/packages/tools/lib/types/index.js +6 -0
- package/packages/tools/lib/types/index.js.map +1 -0
- package/packages/tools/lib/validator/behavior-validator.d.ts +12 -0
- package/packages/tools/lib/validator/behavior-validator.d.ts.map +1 -0
- package/packages/tools/lib/validator/behavior-validator.js +124 -0
- package/packages/tools/lib/validator/behavior-validator.js.map +1 -0
- package/packages/tools/lib/validator/constraint-eval.d.ts +90 -0
- package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -0
- package/packages/tools/lib/validator/constraint-eval.js +478 -0
- package/packages/tools/lib/validator/constraint-eval.js.map +1 -0
- package/packages/tools/lib/validator/constraint-loader.d.ts +10 -0
- package/packages/tools/lib/validator/constraint-loader.d.ts.map +1 -0
- package/packages/tools/lib/validator/constraint-loader.js +113 -0
- package/packages/tools/lib/validator/constraint-loader.js.map +1 -0
- package/packages/tools/lib/validator/rule-engine.d.ts +13 -0
- package/packages/tools/lib/validator/rule-engine.d.ts.map +1 -0
- package/packages/tools/lib/validator/rule-engine.js +38 -0
- package/packages/tools/lib/validator/rule-engine.js.map +1 -0
- package/packages/tools/lib/validator/rule-registry.d.ts +61 -0
- package/packages/tools/lib/validator/rule-registry.d.ts.map +1 -0
- package/packages/tools/lib/validator/rule-registry.js +142 -0
- package/packages/tools/lib/validator/rule-registry.js.map +1 -0
- package/packages/tools/lib/validator/types.d.ts +59 -0
- package/packages/tools/lib/validator/types.d.ts.map +1 -0
- package/packages/tools/lib/validator/types.js +3 -0
- package/packages/tools/lib/validator/types.js.map +1 -0
- package/packages/tools/lib/validator/view-validator.d.ts +11 -0
- package/packages/tools/lib/validator/view-validator.d.ts.map +1 -0
- package/packages/tools/lib/validator/view-validator.js +48 -0
- package/packages/tools/lib/validator/view-validator.js.map +1 -0
- package/packages/tools/src/grammar/memo-sysml.langium +450 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
// ─── CSV Import/Export for MEMO Elements & Relationships ─────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Standard CSV formats for bulk import/export of model data.
|
|
4
|
+
// The element CSV schema is ontology-aware: kind determines the construct
|
|
5
|
+
// and layer automatically, and dynamic columns map to SysML attributes.
|
|
6
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
+
/**
|
|
8
|
+
* Attach provenance to a batch of CsvElements.
|
|
9
|
+
* `sourceRow` is auto-assigned (1-based index into the `elements` array).
|
|
10
|
+
* Call this after `parseElementsCsv()` when you want full traceability.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const result = parseElementsCsv(csv, config);
|
|
14
|
+
* const withProvenance = attachProvenance(result.items, {
|
|
15
|
+
* sourceFile: 'requirements-v3.xlsx',
|
|
16
|
+
* importTimestamp: new Date().toISOString(),
|
|
17
|
+
* importSessionId: crypto.randomUUID(),
|
|
18
|
+
* });
|
|
19
|
+
*/
|
|
20
|
+
export function attachProvenance(elements, meta) {
|
|
21
|
+
return elements.map((el, idx) => ({
|
|
22
|
+
...el,
|
|
23
|
+
provenance: { ...meta, sourceRow: idx + 1 },
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
// ─── Fixed column names ─────────────────────────────────────────────────────
|
|
27
|
+
const ELEMENT_FIXED_COLS = ['id', 'name', 'kind', 'construct', 'doc'];
|
|
28
|
+
const RELATIONSHIP_FIXED_COLS = ['sourceId', 'targetId', 'type', 'sourceEnd', 'targetEnd'];
|
|
29
|
+
// ─── CSV Parsing Helpers ────────────────────────────────────────────────────
|
|
30
|
+
/** Parse a CSV line respecting quoted fields (handles commas and newlines inside quotes) */
|
|
31
|
+
function parseCsvLine(line) {
|
|
32
|
+
const fields = [];
|
|
33
|
+
let current = '';
|
|
34
|
+
let inQuotes = false;
|
|
35
|
+
for (let i = 0; i < line.length; i++) {
|
|
36
|
+
const ch = line[i];
|
|
37
|
+
if (inQuotes) {
|
|
38
|
+
if (ch === '"') {
|
|
39
|
+
if (i + 1 < line.length && line[i + 1] === '"') {
|
|
40
|
+
current += '"';
|
|
41
|
+
i++; // skip escaped quote
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
inQuotes = false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
current += ch;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (ch === '"') {
|
|
53
|
+
inQuotes = true;
|
|
54
|
+
}
|
|
55
|
+
else if (ch === ',') {
|
|
56
|
+
fields.push(current.trim());
|
|
57
|
+
current = '';
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
current += ch;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
fields.push(current.trim());
|
|
65
|
+
return fields;
|
|
66
|
+
}
|
|
67
|
+
/** Escape a CSV field value (quote if it contains comma, quote, or newline) */
|
|
68
|
+
function escapeCsvField(value) {
|
|
69
|
+
if (value.includes(',') || value.includes('"') || value.includes('\n')) {
|
|
70
|
+
return `"${value.replace(/"/g, '""')}"`;
|
|
71
|
+
}
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
/** Parse full CSV text into header + rows */
|
|
75
|
+
function parseCsvText(csvText) {
|
|
76
|
+
const lines = csvText.split(/\r?\n/).filter((l) => l.trim() !== '');
|
|
77
|
+
if (lines.length === 0)
|
|
78
|
+
return { headers: [], rows: [] };
|
|
79
|
+
const headers = parseCsvLine(lines[0]);
|
|
80
|
+
const rows = lines.slice(1).map(parseCsvLine);
|
|
81
|
+
return { headers, rows };
|
|
82
|
+
}
|
|
83
|
+
// ─── Element CSV ────────────────────────────────────────────────────────────
|
|
84
|
+
/**
|
|
85
|
+
* Parse an elements CSV file.
|
|
86
|
+
*
|
|
87
|
+
* **Standard CSV format for elements:**
|
|
88
|
+
* ```
|
|
89
|
+
* id,name,kind,construct,doc,[attr1],[attr2],...
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* - `id` — unique element identifier (required, valid SysML identifier)
|
|
93
|
+
* - `name` — display name (required)
|
|
94
|
+
* - `kind` — ontology type from config.kinds (required, e.g. "Hazard", "Requirement")
|
|
95
|
+
* - `construct` — SysML construct override (optional, auto-derived from kind if omitted)
|
|
96
|
+
* - `doc` — documentation comment (optional)
|
|
97
|
+
* - Additional columns become `attribute redefines <colName> = "<value>"` in SysML
|
|
98
|
+
*
|
|
99
|
+
* The `kind` value is validated against the resolved config. If `construct` is omitted,
|
|
100
|
+
* it is derived from the kind's `sysmlConstruct` definition. The `layer` is always
|
|
101
|
+
* derived from the kind definition and cannot be set manually.
|
|
102
|
+
*/
|
|
103
|
+
export function parseElementsCsv(csvText, config) {
|
|
104
|
+
const { headers, rows } = parseCsvText(csvText);
|
|
105
|
+
const items = [];
|
|
106
|
+
const errors = [];
|
|
107
|
+
const warnings = [];
|
|
108
|
+
if (headers.length === 0) {
|
|
109
|
+
errors.push('CSV is empty — no header row found');
|
|
110
|
+
return { items, errors, warnings };
|
|
111
|
+
}
|
|
112
|
+
// Validate required columns
|
|
113
|
+
const missing = ['id', 'name', 'kind'].filter((c) => !headers.includes(c));
|
|
114
|
+
if (missing.length > 0) {
|
|
115
|
+
errors.push(`Missing required columns: ${missing.join(', ')}`);
|
|
116
|
+
return { items, errors, warnings };
|
|
117
|
+
}
|
|
118
|
+
// Identify dynamic attribute columns (anything not in fixed set)
|
|
119
|
+
const fixedSet = new Set(ELEMENT_FIXED_COLS);
|
|
120
|
+
const attrCols = headers.filter((h) => !fixedSet.has(h));
|
|
121
|
+
const seenIds = new Set();
|
|
122
|
+
for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
|
|
123
|
+
const row = rows[rowIdx];
|
|
124
|
+
const lineNum = rowIdx + 2; // 1-indexed, +1 for header
|
|
125
|
+
// Build a field map
|
|
126
|
+
const fields = {};
|
|
127
|
+
for (let i = 0; i < headers.length; i++) {
|
|
128
|
+
fields[headers[i]] = row[i] ?? '';
|
|
129
|
+
}
|
|
130
|
+
const id = fields['id'];
|
|
131
|
+
const name = fields['name'];
|
|
132
|
+
const kind = fields['kind'];
|
|
133
|
+
const constructOverride = fields['construct'] || '';
|
|
134
|
+
const doc = fields['doc'] || '';
|
|
135
|
+
// Validate id
|
|
136
|
+
if (!id) {
|
|
137
|
+
errors.push(`Row ${lineNum}: missing required field 'id'`);
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(id)) {
|
|
141
|
+
errors.push(`Row ${lineNum}: invalid id '${id}' — must be a valid SysML identifier (letters, digits, underscore, starting with letter or underscore)`);
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
if (seenIds.has(id)) {
|
|
145
|
+
errors.push(`Row ${lineNum}: duplicate id '${id}'`);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
seenIds.add(id);
|
|
149
|
+
// Validate name
|
|
150
|
+
if (!name) {
|
|
151
|
+
errors.push(`Row ${lineNum}: missing required field 'name'`);
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
// Validate kind against config
|
|
155
|
+
if (!kind) {
|
|
156
|
+
errors.push(`Row ${lineNum}: missing required field 'kind'`);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const kinds = config.kinds ?? {};
|
|
160
|
+
const kindDef = kinds[kind];
|
|
161
|
+
if (!kindDef) {
|
|
162
|
+
const validKinds = Object.keys(kinds).sort();
|
|
163
|
+
errors.push(`Row ${lineNum}: unknown kind '${kind}'. Valid kinds: ${validKinds.join(', ')}`);
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// Derive construct from kind (or use override)
|
|
167
|
+
let construct = constructOverride;
|
|
168
|
+
if (!construct) {
|
|
169
|
+
// Map sysmlConstruct (e.g. "part def") to usage construct (e.g. "part")
|
|
170
|
+
construct = sysmlConstructToUsage(kindDef.sysmlConstruct);
|
|
171
|
+
}
|
|
172
|
+
// Derive layer from kind
|
|
173
|
+
const layer = kindDef.layer || '';
|
|
174
|
+
if (!layer) {
|
|
175
|
+
warnings.push(`Row ${lineNum}: kind '${kind}' has no layer defined in config`);
|
|
176
|
+
}
|
|
177
|
+
// Collect dynamic attributes
|
|
178
|
+
const attributes = {};
|
|
179
|
+
for (const col of attrCols) {
|
|
180
|
+
const val = fields[col];
|
|
181
|
+
if (val) {
|
|
182
|
+
attributes[col] = val;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Merge default attributes from kind definition (CSV values take precedence)
|
|
186
|
+
if (kindDef.defaultAttributes) {
|
|
187
|
+
for (const [key, val] of Object.entries(kindDef.defaultAttributes)) {
|
|
188
|
+
if (!(key in attributes)) {
|
|
189
|
+
attributes[key] = val;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
items.push({ id, name, kind, construct, layer, doc, attributes });
|
|
194
|
+
}
|
|
195
|
+
return { items, errors, warnings };
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Export model elements to CSV.
|
|
199
|
+
*
|
|
200
|
+
* Produces a CSV with fixed columns (id, name, kind, construct, doc) plus
|
|
201
|
+
* dynamic attribute columns gathered from all elements in the model.
|
|
202
|
+
*/
|
|
203
|
+
export function exportElementsCsv(model, _config) {
|
|
204
|
+
const elements = Array.from(model.elements.values());
|
|
205
|
+
if (elements.length === 0)
|
|
206
|
+
return '';
|
|
207
|
+
// Collect all unique attribute keys across all elements
|
|
208
|
+
const attrKeysSet = new Set();
|
|
209
|
+
for (const el of elements) {
|
|
210
|
+
for (const key of Object.keys(el.attributes)) {
|
|
211
|
+
if (key !== 'name')
|
|
212
|
+
attrKeysSet.add(key); // 'name' is a fixed column
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const attrKeys = Array.from(attrKeysSet).sort();
|
|
216
|
+
// Build header
|
|
217
|
+
const headers = [...ELEMENT_FIXED_COLS, ...attrKeys];
|
|
218
|
+
const lines = [headers.map(escapeCsvField).join(',')];
|
|
219
|
+
// Build rows
|
|
220
|
+
for (const el of elements) {
|
|
221
|
+
const row = [
|
|
222
|
+
el.id,
|
|
223
|
+
el.name,
|
|
224
|
+
el.kind,
|
|
225
|
+
el.construct,
|
|
226
|
+
el.doc || '',
|
|
227
|
+
...attrKeys.map((k) => el.attributes[k] || ''),
|
|
228
|
+
];
|
|
229
|
+
lines.push(row.map(escapeCsvField).join(','));
|
|
230
|
+
}
|
|
231
|
+
return lines.join('\n') + '\n';
|
|
232
|
+
}
|
|
233
|
+
// ─── Relationship CSV ───────────────────────────────────────────────────────
|
|
234
|
+
/**
|
|
235
|
+
* Parse a relationships CSV file.
|
|
236
|
+
*
|
|
237
|
+
* **Standard CSV format for relationships:**
|
|
238
|
+
* ```
|
|
239
|
+
* sourceId,targetId,type,sourceEnd,targetEnd
|
|
240
|
+
* ```
|
|
241
|
+
*
|
|
242
|
+
* - `sourceId` — source element id (required, must exist in model or import batch)
|
|
243
|
+
* - `targetId` — target element id (required, must exist in model or import batch)
|
|
244
|
+
* - `type` — relationship type from config (required, e.g. "mitigates", "traceTo")
|
|
245
|
+
* - `sourceEnd` — connection end name (optional, default: "source")
|
|
246
|
+
* - `targetEnd` — connection end name (optional, default: "target")
|
|
247
|
+
*/
|
|
248
|
+
export function parseRelationshipsCsv(csvText, config, knownElementIds) {
|
|
249
|
+
const { headers, rows } = parseCsvText(csvText);
|
|
250
|
+
const items = [];
|
|
251
|
+
const errors = [];
|
|
252
|
+
const warnings = [];
|
|
253
|
+
if (headers.length === 0) {
|
|
254
|
+
errors.push('CSV is empty — no header row found');
|
|
255
|
+
return { items, errors, warnings };
|
|
256
|
+
}
|
|
257
|
+
// Validate required columns
|
|
258
|
+
const missing = ['sourceId', 'targetId', 'type'].filter((c) => !headers.includes(c));
|
|
259
|
+
if (missing.length > 0) {
|
|
260
|
+
errors.push(`Missing required columns: ${missing.join(', ')}`);
|
|
261
|
+
return { items, errors, warnings };
|
|
262
|
+
}
|
|
263
|
+
// Build valid relationship type set
|
|
264
|
+
const validRelTypes = new Set((config.relationshipTypes ?? []).map((r) => r.name));
|
|
265
|
+
for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
|
|
266
|
+
const row = rows[rowIdx];
|
|
267
|
+
const lineNum = rowIdx + 2;
|
|
268
|
+
const fields = {};
|
|
269
|
+
for (let i = 0; i < headers.length; i++) {
|
|
270
|
+
fields[headers[i]] = row[i] ?? '';
|
|
271
|
+
}
|
|
272
|
+
const sourceId = fields['sourceId'];
|
|
273
|
+
const targetId = fields['targetId'];
|
|
274
|
+
const type = fields['type'];
|
|
275
|
+
const sourceEnd = fields['sourceEnd'] || 'source';
|
|
276
|
+
const targetEnd = fields['targetEnd'] || 'target';
|
|
277
|
+
if (!sourceId) {
|
|
278
|
+
errors.push(`Row ${lineNum}: missing required field 'sourceId'`);
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
if (!targetId) {
|
|
282
|
+
errors.push(`Row ${lineNum}: missing required field 'targetId'`);
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
if (!type) {
|
|
286
|
+
errors.push(`Row ${lineNum}: missing required field 'type'`);
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
// Validate relationship type
|
|
290
|
+
if (!validRelTypes.has(type)) {
|
|
291
|
+
const valid = Array.from(validRelTypes).sort();
|
|
292
|
+
errors.push(`Row ${lineNum}: unknown relationship type '${type}'. Valid types: ${valid.join(', ')}`);
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
// Validate element ids if known
|
|
296
|
+
if (knownElementIds) {
|
|
297
|
+
if (!knownElementIds.has(sourceId)) {
|
|
298
|
+
errors.push(`Row ${lineNum}: sourceId '${sourceId}' not found in model`);
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
if (!knownElementIds.has(targetId)) {
|
|
302
|
+
errors.push(`Row ${lineNum}: targetId '${targetId}' not found in model`);
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
if (sourceId === targetId) {
|
|
307
|
+
warnings.push(`Row ${lineNum}: self-referencing relationship (sourceId === targetId === '${sourceId}')`);
|
|
308
|
+
}
|
|
309
|
+
items.push({ sourceId, targetId, type, sourceEnd, targetEnd });
|
|
310
|
+
}
|
|
311
|
+
return { items, errors, warnings };
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Export model relationships to CSV.
|
|
315
|
+
*/
|
|
316
|
+
export function exportRelationshipsCsv(model) {
|
|
317
|
+
if (model.relationships.length === 0)
|
|
318
|
+
return '';
|
|
319
|
+
const headers = [...RELATIONSHIP_FIXED_COLS];
|
|
320
|
+
const lines = [headers.map(escapeCsvField).join(',')];
|
|
321
|
+
for (const rel of model.relationships) {
|
|
322
|
+
const row = [rel.sourceId, rel.targetId, rel.type, rel.sourceEnd, rel.targetEnd];
|
|
323
|
+
lines.push(row.map(escapeCsvField).join(','));
|
|
324
|
+
}
|
|
325
|
+
return lines.join('\n') + '\n';
|
|
326
|
+
}
|
|
327
|
+
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
328
|
+
/** Map SysML construct definition to usage keyword */
|
|
329
|
+
function sysmlConstructToUsage(sysmlConstruct) {
|
|
330
|
+
const map = {
|
|
331
|
+
'part def': 'part',
|
|
332
|
+
'item def': 'item',
|
|
333
|
+
'requirement def': 'requirement',
|
|
334
|
+
'action def': 'action',
|
|
335
|
+
'port def': 'port',
|
|
336
|
+
'interface def': 'interface',
|
|
337
|
+
'connection def': 'connection',
|
|
338
|
+
'attribute def': 'attribute',
|
|
339
|
+
'enum def': 'enum',
|
|
340
|
+
};
|
|
341
|
+
return map[sysmlConstruct] || 'part';
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Generate a template CSV for elements based on the config's ontology kinds.
|
|
345
|
+
* Includes all valid kinds as example rows with their default attributes.
|
|
346
|
+
*/
|
|
347
|
+
export function generateElementTemplate(config) {
|
|
348
|
+
// Gather all default attribute keys across all kinds
|
|
349
|
+
const attrKeysSet = new Set();
|
|
350
|
+
for (const kindDef of Object.values(config.kinds ?? {})) {
|
|
351
|
+
if (kindDef.defaultAttributes) {
|
|
352
|
+
for (const key of Object.keys(kindDef.defaultAttributes)) {
|
|
353
|
+
attrKeysSet.add(key);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
const attrKeys = Array.from(attrKeysSet).sort();
|
|
358
|
+
const headers = [...ELEMENT_FIXED_COLS, ...attrKeys];
|
|
359
|
+
const lines = [headers.map(escapeCsvField).join(',')];
|
|
360
|
+
// Add one example row per kind
|
|
361
|
+
for (const [kindKey, kindDef] of Object.entries(config.kinds ?? {})) {
|
|
362
|
+
const construct = sysmlConstructToUsage(kindDef.sysmlConstruct);
|
|
363
|
+
const row = [
|
|
364
|
+
`example_${kindKey.toLowerCase()}`, // id
|
|
365
|
+
`Example ${kindDef.label}`, // name
|
|
366
|
+
kindKey, // kind
|
|
367
|
+
construct, // construct
|
|
368
|
+
`A sample ${kindDef.label} element`, // doc
|
|
369
|
+
...attrKeys.map((k) => kindDef.defaultAttributes?.[k] || ''),
|
|
370
|
+
];
|
|
371
|
+
lines.push(row.map(escapeCsvField).join(','));
|
|
372
|
+
}
|
|
373
|
+
return lines.join('\n') + '\n';
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Generate a template CSV for relationships based on config relationship types.
|
|
377
|
+
*/
|
|
378
|
+
export function generateRelationshipTemplate(config) {
|
|
379
|
+
const headers = [...RELATIONSHIP_FIXED_COLS];
|
|
380
|
+
const lines = [headers.map(escapeCsvField).join(',')];
|
|
381
|
+
// Add one example row per relationship type
|
|
382
|
+
for (const relType of (config.relationshipTypes ?? [])) {
|
|
383
|
+
const row = [
|
|
384
|
+
'source_element_id', // sourceId
|
|
385
|
+
'target_element_id', // targetId
|
|
386
|
+
relType.name, // type
|
|
387
|
+
'source', // sourceEnd
|
|
388
|
+
'target', // targetEnd
|
|
389
|
+
];
|
|
390
|
+
lines.push(row.map(escapeCsvField).join(','));
|
|
391
|
+
}
|
|
392
|
+
return lines.join('\n') + '\n';
|
|
393
|
+
}
|
|
394
|
+
//# sourceMappingURL=csv-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-io.js","sourceRoot":"","sources":["../../src/serializer/csv-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CsvElement, CsvRelationship } from './csv-io.js';
|
|
2
|
+
export declare function generateUsage(element: CsvElement): string;
|
|
3
|
+
/**
|
|
4
|
+
* Generate a SysML connection usage for a relationship.
|
|
5
|
+
*
|
|
6
|
+
* Example output:
|
|
7
|
+
* ```sysml
|
|
8
|
+
* connection : Mitigates connect control ::> risk_control_001 to hazard ::> hazard_001;
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateConnection(rel: CsvRelationship): string;
|
|
12
|
+
/**
|
|
13
|
+
* Generate a complete .sysml file from elements and relationships.
|
|
14
|
+
*
|
|
15
|
+
* @param elements - Parsed elements from CSV
|
|
16
|
+
* @param relationships - Parsed relationships from CSV
|
|
17
|
+
* @param packageName - SysML package name (e.g. "imported_elements")
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Wrap already-indented inner package-body lines in `package` declarations.
|
|
21
|
+
*
|
|
22
|
+
* Standard SysML v2 requires single-identifier names in a package DECLARATION, so a
|
|
23
|
+
* qualified name (`a::b::c`) is emitted as NESTED packages, never `package a::b::c {`.
|
|
24
|
+
* The inner lines are assumed to already carry one indentation level (as the existing
|
|
25
|
+
* generators produce them); deeper nesting adds the extra levels. For a single-segment
|
|
26
|
+
* name this is byte-identical to the previous `package name { … }` output.
|
|
27
|
+
*/
|
|
28
|
+
export declare function wrapPackage(qualifiedName: string, innerLines: string[], opts?: {
|
|
29
|
+
isLibrary?: boolean;
|
|
30
|
+
}): string[];
|
|
31
|
+
export declare function generateFile(elements: CsvElement[], relationships: CsvRelationship[], packageName: string): string;
|
|
32
|
+
//# sourceMappingURL=sysml-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sysml-generator.d.ts","sourceRoot":"","sources":["../../src/serializer/sysml-generator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI/D,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAkCzD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAG/D;AAED;;;;;;GAMG;AACH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAajH;AAED,wBAAgB,YAAY,CACxB,QAAQ,EAAE,UAAU,EAAE,EACtB,aAAa,EAAE,eAAe,EAAE,EAChC,WAAW,EAAE,MAAM,GACpB,MAAM,CAgCR"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// ─── SysML v2 Text Generator ─────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Generates valid SysML v2 text from imported elements and relationships.
|
|
4
|
+
// Used by CSV import to produce .sysml files that the parser can roundtrip.
|
|
5
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
6
|
+
// Generate a SysML usage block for a single element.
|
|
7
|
+
// Example: requirement hazard_001 : Hazard { doc /* text */ attribute redefines name = "..."; }
|
|
8
|
+
export function generateUsage(element) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
const indent = ' ';
|
|
11
|
+
// Usage header: <construct> <id> : <kind> {
|
|
12
|
+
lines.push(`${element.construct} ${element.id} : ${element.kind} {`);
|
|
13
|
+
// Doc comment
|
|
14
|
+
if (element.doc) {
|
|
15
|
+
lines.push(`${indent}doc /* ${element.doc} */`);
|
|
16
|
+
}
|
|
17
|
+
// Name attribute (always emit if different from id)
|
|
18
|
+
if (element.name && element.name !== element.id) {
|
|
19
|
+
lines.push(`${indent}attribute redefines name = "${escapeString(element.name)}";`);
|
|
20
|
+
}
|
|
21
|
+
// Dynamic attributes
|
|
22
|
+
for (const [key, value] of Object.entries(element.attributes)) {
|
|
23
|
+
if (key === 'name')
|
|
24
|
+
continue; // already handled above
|
|
25
|
+
lines.push(`${indent}attribute redefines ${key} = "${escapeString(value)}";`);
|
|
26
|
+
}
|
|
27
|
+
// Provenance attributes (written as _import_* so they don't conflict with model attrs)
|
|
28
|
+
if (element.provenance) {
|
|
29
|
+
const p = element.provenance;
|
|
30
|
+
lines.push(`${indent}attribute redefines _import_source = "${escapeString(p.sourceFile)}";`);
|
|
31
|
+
lines.push(`${indent}attribute redefines _import_row = "${p.sourceRow}";`);
|
|
32
|
+
lines.push(`${indent}attribute redefines _import_timestamp = "${escapeString(p.importTimestamp)}";`);
|
|
33
|
+
lines.push(`${indent}attribute redefines _import_session = "${escapeString(p.importSessionId)}";`);
|
|
34
|
+
}
|
|
35
|
+
lines.push('}');
|
|
36
|
+
return lines.join('\n');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Generate a SysML connection usage for a relationship.
|
|
40
|
+
*
|
|
41
|
+
* Example output:
|
|
42
|
+
* ```sysml
|
|
43
|
+
* connection : Mitigates connect control ::> risk_control_001 to hazard ::> hazard_001;
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export function generateConnection(rel) {
|
|
47
|
+
const typeName = capitalizeFirst(rel.type);
|
|
48
|
+
return `connection : ${typeName} connect ${rel.sourceEnd} ::> ${rel.sourceId} to ${rel.targetEnd} ::> ${rel.targetId};`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Generate a complete .sysml file from elements and relationships.
|
|
52
|
+
*
|
|
53
|
+
* @param elements - Parsed elements from CSV
|
|
54
|
+
* @param relationships - Parsed relationships from CSV
|
|
55
|
+
* @param packageName - SysML package name (e.g. "imported_elements")
|
|
56
|
+
*/
|
|
57
|
+
/**
|
|
58
|
+
* Wrap already-indented inner package-body lines in `package` declarations.
|
|
59
|
+
*
|
|
60
|
+
* Standard SysML v2 requires single-identifier names in a package DECLARATION, so a
|
|
61
|
+
* qualified name (`a::b::c`) is emitted as NESTED packages, never `package a::b::c {`.
|
|
62
|
+
* The inner lines are assumed to already carry one indentation level (as the existing
|
|
63
|
+
* generators produce them); deeper nesting adds the extra levels. For a single-segment
|
|
64
|
+
* name this is byte-identical to the previous `package name { … }` output.
|
|
65
|
+
*/
|
|
66
|
+
export function wrapPackage(qualifiedName, innerLines, opts) {
|
|
67
|
+
const segs = qualifiedName.split('::').filter(Boolean);
|
|
68
|
+
if (segs.length === 0)
|
|
69
|
+
return innerLines;
|
|
70
|
+
const out = [];
|
|
71
|
+
segs.forEach((seg, i) => {
|
|
72
|
+
const pad = ' '.repeat(i);
|
|
73
|
+
const lib = opts?.isLibrary && i === segs.length - 1 ? 'library ' : '';
|
|
74
|
+
out.push(`${pad}${lib}package ${seg} {`);
|
|
75
|
+
});
|
|
76
|
+
const extra = ' '.repeat(segs.length - 1); // innerLines already carry one level
|
|
77
|
+
for (const l of innerLines)
|
|
78
|
+
out.push(l.length ? `${extra}${l}` : l);
|
|
79
|
+
for (let i = segs.length - 1; i >= 0; i--)
|
|
80
|
+
out.push(`${' '.repeat(i)}}`);
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
export function generateFile(elements, relationships, packageName) {
|
|
84
|
+
const body = [];
|
|
85
|
+
body.push('');
|
|
86
|
+
// Group elements by kind for readability
|
|
87
|
+
const byKind = new Map();
|
|
88
|
+
for (const el of elements) {
|
|
89
|
+
if (!byKind.has(el.kind))
|
|
90
|
+
byKind.set(el.kind, []);
|
|
91
|
+
byKind.get(el.kind).push(el);
|
|
92
|
+
}
|
|
93
|
+
for (const [kind, kindElements] of byKind) {
|
|
94
|
+
body.push(` // ── ${kind} ──`);
|
|
95
|
+
for (const el of kindElements) {
|
|
96
|
+
const usageLines = generateUsage(el).split('\n');
|
|
97
|
+
for (const ul of usageLines) {
|
|
98
|
+
body.push(` ${ul}`);
|
|
99
|
+
}
|
|
100
|
+
body.push('');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Relationships
|
|
104
|
+
if (relationships.length > 0) {
|
|
105
|
+
body.push(' // ── Relationships ──');
|
|
106
|
+
for (const rel of relationships) {
|
|
107
|
+
body.push(` ${generateConnection(rel)}`);
|
|
108
|
+
}
|
|
109
|
+
body.push('');
|
|
110
|
+
}
|
|
111
|
+
return wrapPackage(packageName, body).join('\n') + '\n';
|
|
112
|
+
}
|
|
113
|
+
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
114
|
+
function escapeString(s) {
|
|
115
|
+
return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
116
|
+
}
|
|
117
|
+
function capitalizeFirst(s) {
|
|
118
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=sysml-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sysml-generator.js","sourceRoot":"","sources":["../../src/serializer/sysml-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MEMOConfig } from '@memoarchitect/tools';
|
|
2
|
+
export interface ConfigChainEntry {
|
|
3
|
+
configPath: string;
|
|
4
|
+
config: MEMOConfig;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Load and fully resolve a config file, following the extends chain.
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadAndResolveConfig(configPath: string): MEMOConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Load the raw config chain in inheritance order: base parent first, leaf last.
|
|
12
|
+
*/
|
|
13
|
+
export declare function loadConfigChain(configPath: string): ConfigChainEntry[];
|
|
14
|
+
//# sourceMappingURL=config-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-resolver.d.ts","sourceRoot":"","sources":["../../src/server/config-resolver.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAOnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAEtE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// ─── Config Resolver ──────────────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Resolves the `extends` chain for MEMO configs.
|
|
4
|
+
// Handles: "@memoarchitect/medical-modeling-profile" → find config in node_modules or workspace packages
|
|
5
|
+
// Supports both new format (memo.package.yaml) and legacy (memo.config.yaml).
|
|
6
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
+
import { resolve, dirname } from 'node:path';
|
|
8
|
+
import { loadConfig, resolveConfig, resolvePackageConfig } from '@memoarchitect/tools';
|
|
9
|
+
/**
|
|
10
|
+
* Load and fully resolve a config file, following the extends chain.
|
|
11
|
+
*/
|
|
12
|
+
export function loadAndResolveConfig(configPath) {
|
|
13
|
+
const config = loadConfig(configPath);
|
|
14
|
+
const projectDir = dirname(configPath);
|
|
15
|
+
return resolveConfig(config, (packageName) => {
|
|
16
|
+
return resolveParentConfig(packageName, projectDir);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Load the raw config chain in inheritance order: base parent first, leaf last.
|
|
21
|
+
*/
|
|
22
|
+
export function loadConfigChain(configPath) {
|
|
23
|
+
return loadConfigChainInternal(resolve(configPath), new Set());
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Try to find and load a parent config by package name.
|
|
27
|
+
* Searches: node_modules, workspace packages, known paths.
|
|
28
|
+
*/
|
|
29
|
+
function resolveParentConfig(packageName, fromDir) {
|
|
30
|
+
const configPath = resolveParentConfigPath(packageName, fromDir);
|
|
31
|
+
return configPath ? loadConfig(configPath) : undefined;
|
|
32
|
+
}
|
|
33
|
+
function loadConfigChainInternal(configPath, seen) {
|
|
34
|
+
if (seen.has(configPath))
|
|
35
|
+
return [];
|
|
36
|
+
seen.add(configPath);
|
|
37
|
+
const config = loadConfig(configPath);
|
|
38
|
+
const chain = [];
|
|
39
|
+
if (config.extends) {
|
|
40
|
+
const extendsArr = Array.isArray(config.extends) ? config.extends : [config.extends];
|
|
41
|
+
for (const parentName of extendsArr) {
|
|
42
|
+
const parentPath = resolveParentConfigPath(parentName, dirname(configPath));
|
|
43
|
+
if (parentPath) {
|
|
44
|
+
chain.push(...loadConfigChainInternal(parentPath, seen));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
chain.push({ configPath, config });
|
|
49
|
+
return chain;
|
|
50
|
+
}
|
|
51
|
+
function resolveParentConfigPath(packageName, fromDir) {
|
|
52
|
+
return resolvePackageConfig(packageName, fromDir);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=config-resolver.js.map
|