@documentation-robotics/cli 0.1.0 → 0.1.5
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 +466 -693
- package/dist/analysis/data-model-analyzer.js +189 -0
- package/dist/analysis/data-model-analyzer.js.map +7 -0
- package/dist/analysis/index.js +3 -0
- package/dist/analysis/index.js.map +7 -0
- package/dist/analysis/relationship-classifier.js +181 -0
- package/dist/analysis/relationship-classifier.js.map +7 -0
- package/dist/analyzers/base-analyzer.js +1 -0
- package/dist/analyzers/base-analyzer.js.map +7 -0
- package/dist/analyzers/call-graph-utils.js +39 -0
- package/dist/analyzers/call-graph-utils.js.map +7 -0
- package/dist/analyzers/cbm-analyzer.js +1205 -0
- package/dist/analyzers/cbm-analyzer.js.map +7 -0
- package/dist/analyzers/heuristic-utils.js +55 -0
- package/dist/analyzers/heuristic-utils.js.map +7 -0
- package/dist/analyzers/mapping-loader.js +146 -0
- package/dist/analyzers/mapping-loader.js.map +7 -0
- package/dist/analyzers/registry.js +124 -0
- package/dist/analyzers/registry.js.map +7 -0
- package/dist/analyzers/session-state.js +176 -0
- package/dist/analyzers/session-state.js.map +7 -0
- package/dist/analyzers/stdio-client.js +206 -0
- package/dist/analyzers/stdio-client.js.map +7 -0
- package/dist/analyzers/types.js +15 -0
- package/dist/analyzers/types.js.map +7 -0
- package/dist/analyzers/verify-engine.js +209 -0
- package/dist/analyzers/verify-engine.js.map +7 -0
- package/dist/analyzers/verify-ignore.js +130 -0
- package/dist/analyzers/verify-ignore.js.map +7 -0
- package/dist/analyzers/version.js +8 -0
- package/dist/analyzers/version.js.map +7 -0
- package/dist/audit/ai/runner.js +41 -0
- package/dist/audit/ai/runner.js.map +7 -0
- package/dist/audit/differential-analyzer.js +183 -0
- package/dist/audit/differential-analyzer.js.map +7 -0
- package/dist/audit/index.js +32 -0
- package/dist/audit/index.js.map +7 -0
- package/dist/audit/nodes/ai/evaluator.js +49 -0
- package/dist/audit/nodes/ai/evaluator.js.map +7 -0
- package/dist/audit/nodes/ai/parser.js +55 -0
- package/dist/audit/nodes/ai/parser.js.map +7 -0
- package/dist/audit/nodes/ai/prompts.js +103 -0
- package/dist/audit/nodes/ai/prompts.js.map +7 -0
- package/dist/audit/nodes/analysis/node-completeness-checker.js +32 -0
- package/dist/audit/nodes/analysis/node-completeness-checker.js.map +7 -0
- package/dist/audit/nodes/analysis/node-definition-analyzer.js +47 -0
- package/dist/audit/nodes/analysis/node-definition-analyzer.js.map +7 -0
- package/dist/audit/nodes/analysis/node-overlap-detector.js +79 -0
- package/dist/audit/nodes/analysis/node-overlap-detector.js.map +7 -0
- package/dist/audit/nodes/model/orchestrator.js +82 -0
- package/dist/audit/nodes/model/orchestrator.js.map +7 -0
- package/dist/audit/nodes/spec/loader.js +116 -0
- package/dist/audit/nodes/spec/loader.js.map +7 -0
- package/dist/audit/nodes/spec/orchestrator.js +68 -0
- package/dist/audit/nodes/spec/orchestrator.js.map +7 -0
- package/dist/audit/nodes/types.js +1 -0
- package/dist/audit/nodes/types.js.map +7 -0
- package/dist/audit/pipeline/index.js +5 -0
- package/dist/audit/pipeline/index.js.map +7 -0
- package/dist/audit/pipeline/pipeline-orchestrator.js +218 -0
- package/dist/audit/pipeline/pipeline-orchestrator.js.map +7 -0
- package/dist/audit/relationships/ai/evaluator.js +235 -0
- package/dist/audit/relationships/ai/evaluator.js.map +7 -0
- package/dist/audit/relationships/ai/parser.js +197 -0
- package/dist/audit/relationships/ai/parser.js.map +7 -0
- package/dist/audit/relationships/ai/prompts.js +274 -0
- package/dist/audit/relationships/ai/prompts.js.map +7 -0
- package/dist/audit/relationships/analysis/balance-assessor.js +115 -0
- package/dist/audit/relationships/analysis/balance-assessor.js.map +7 -0
- package/dist/audit/relationships/analysis/coverage-analyzer.js +99 -0
- package/dist/audit/relationships/analysis/coverage-analyzer.js.map +7 -0
- package/dist/audit/relationships/analysis/duplicate-detector.js +95 -0
- package/dist/audit/relationships/analysis/duplicate-detector.js.map +7 -0
- package/dist/audit/relationships/analysis/gap-analyzer.js +99 -0
- package/dist/audit/relationships/analysis/gap-analyzer.js.map +7 -0
- package/dist/audit/relationships/analysis/layer-templates.js +294 -0
- package/dist/audit/relationships/analysis/layer-templates.js.map +7 -0
- package/dist/audit/relationships/graph/connectivity.js +129 -0
- package/dist/audit/relationships/graph/connectivity.js.map +7 -0
- package/dist/audit/relationships/graph/relationship-graph.js +179 -0
- package/dist/audit/relationships/graph/relationship-graph.js.map +7 -0
- package/dist/audit/relationships/model/balance-assessor.js +49 -0
- package/dist/audit/relationships/model/balance-assessor.js.map +7 -0
- package/dist/audit/relationships/model/coverage-analyzer.js +34 -0
- package/dist/audit/relationships/model/coverage-analyzer.js.map +7 -0
- package/dist/audit/relationships/model/duplicate-detector.js +68 -0
- package/dist/audit/relationships/model/duplicate-detector.js.map +7 -0
- package/dist/audit/relationships/model/gap-analyzer.js +41 -0
- package/dist/audit/relationships/model/gap-analyzer.js.map +7 -0
- package/dist/audit/relationships/model/orchestrator.js +126 -0
- package/dist/audit/relationships/model/orchestrator.js.map +7 -0
- package/dist/audit/relationships/spec/orchestrator.js +157 -0
- package/dist/audit/relationships/spec/orchestrator.js.map +7 -0
- package/dist/audit/reports/index.js +5 -0
- package/dist/audit/reports/index.js.map +7 -0
- package/dist/audit/reports/report-generator.js +118 -0
- package/dist/audit/reports/report-generator.js.map +7 -0
- package/dist/audit/snapshot-storage.js +163 -0
- package/dist/audit/snapshot-storage.js.map +7 -0
- package/dist/audit/types.js +21 -0
- package/dist/audit/types.js.map +7 -0
- package/dist/cli.js +223 -92
- package/dist/cli.js.map +3 -3
- package/dist/coding-agents/agents/claude-code.js +147 -0
- package/dist/coding-agents/agents/claude-code.js.map +7 -0
- package/dist/coding-agents/agents/index.js +5 -0
- package/dist/coding-agents/agents/index.js.map +7 -0
- package/dist/coding-agents/agents/types.js +1 -0
- package/dist/coding-agents/agents/types.js.map +7 -0
- package/dist/coding-agents/base-chat-client.js +45 -0
- package/dist/coding-agents/base-chat-client.js.map +7 -0
- package/dist/coding-agents/chat-utils.js +23 -0
- package/dist/coding-agents/chat-utils.js.map +7 -0
- package/dist/coding-agents/claude-code-client.js +246 -0
- package/dist/coding-agents/claude-code-client.js.map +7 -0
- package/dist/coding-agents/copilot-client.js +209 -0
- package/dist/coding-agents/copilot-client.js.map +7 -0
- package/dist/commands/add.js +95 -33
- package/dist/commands/add.js.map +2 -2
- package/dist/commands/analyzer.js +511 -0
- package/dist/commands/analyzer.js.map +7 -0
- package/dist/commands/audit-diff.js +49 -0
- package/dist/commands/audit-diff.js.map +7 -0
- package/dist/commands/audit-snapshots.js +62 -0
- package/dist/commands/audit-snapshots.js.map +7 -0
- package/dist/commands/audit.js +81 -0
- package/dist/commands/audit.js.map +7 -0
- package/dist/commands/catalog.js +248 -0
- package/dist/commands/catalog.js.map +7 -0
- package/dist/commands/changeset.js +577 -66
- package/dist/commands/changeset.js.map +2 -2
- package/dist/commands/chat.js +106 -83
- package/dist/commands/chat.js.map +2 -2
- package/dist/commands/claude.js +74 -0
- package/dist/commands/claude.js.map +7 -0
- package/dist/commands/conformance.js +71 -68
- package/dist/commands/conformance.js.map +2 -2
- package/dist/commands/copilot.js +75 -0
- package/dist/commands/copilot.js.map +7 -0
- package/dist/commands/delete.js +125 -11
- package/dist/commands/delete.js.map +3 -3
- package/dist/commands/discover-logic.js +44 -0
- package/dist/commands/discover-logic.js.map +7 -0
- package/dist/commands/docs.js +87 -0
- package/dist/commands/docs.js.map +7 -0
- package/dist/commands/element.js +14 -20
- package/dist/commands/element.js.map +2 -2
- package/dist/commands/export.js +13 -3
- package/dist/commands/export.js.map +2 -2
- package/dist/commands/import.js +51 -0
- package/dist/commands/import.js.map +7 -0
- package/dist/commands/info.js +30 -24
- package/dist/commands/info.js.map +2 -2
- package/dist/commands/init.js +27 -11
- package/dist/commands/init.js.map +2 -2
- package/dist/commands/list.js +63 -13
- package/dist/commands/list.js.map +3 -3
- package/dist/commands/relationship.js +225 -37
- package/dist/commands/relationship.js.map +2 -2
- package/dist/commands/report.js +54 -0
- package/dist/commands/report.js.map +7 -0
- package/dist/commands/reports.js +45 -0
- package/dist/commands/reports.js.map +7 -0
- package/dist/commands/schema.js +135 -0
- package/dist/commands/schema.js.map +7 -0
- package/dist/commands/search.js +40 -12
- package/dist/commands/search.js.map +2 -2
- package/dist/commands/show.js +58 -27
- package/dist/commands/show.js.map +2 -2
- package/dist/commands/stats.js +35 -0
- package/dist/commands/stats.js.map +7 -0
- package/dist/commands/trace.js +39 -16
- package/dist/commands/trace.js.map +2 -2
- package/dist/commands/update.js +141 -14
- package/dist/commands/update.js.map +2 -2
- package/dist/commands/upgrade.js +210 -46
- package/dist/commands/upgrade.js.map +3 -3
- package/dist/commands/validate.js +142 -23
- package/dist/commands/validate.js.map +3 -3
- package/dist/commands/version.js +8 -12
- package/dist/commands/version.js.map +2 -2
- package/dist/commands/visualize.js +155 -25
- package/dist/commands/visualize.js.map +2 -2
- package/dist/core/base-snapshot-manager.js +84 -0
- package/dist/core/base-snapshot-manager.js.map +7 -0
- package/dist/core/changeset-exporter.js +305 -0
- package/dist/core/changeset-exporter.js.map +7 -0
- package/dist/core/changeset-validator.js +41 -0
- package/dist/core/changeset-validator.js.map +7 -0
- package/dist/core/changeset.js +88 -173
- package/dist/core/changeset.js.map +2 -2
- package/dist/core/dependency-tracker.js +4 -2
- package/dist/core/dependency-tracker.js.map +2 -2
- package/dist/core/element.js +98 -27
- package/dist/core/element.js.map +2 -2
- package/dist/core/golden-copy-cache.js +290 -0
- package/dist/core/golden-copy-cache.js.map +7 -0
- package/dist/core/graph-model.js +266 -0
- package/dist/core/graph-model.js.map +7 -0
- package/dist/core/layer.js +159 -16
- package/dist/core/layer.js.map +2 -2
- package/dist/core/layers.js +32 -0
- package/dist/core/layers.js.map +7 -0
- package/dist/core/manifest.js +32 -11
- package/dist/core/manifest.js.map +2 -2
- package/dist/core/migration-registry.js +56 -1
- package/dist/core/migration-registry.js.map +2 -2
- package/dist/core/model.js +424 -217
- package/dist/core/model.js.map +3 -3
- package/dist/core/mutation-handler.js +179 -0
- package/dist/core/mutation-handler.js.map +7 -0
- package/dist/core/reference-registry.js +29 -21
- package/dist/core/reference-registry.js.map +2 -2
- package/dist/core/relationship-catalog.js +189 -0
- package/dist/core/relationship-catalog.js.map +7 -0
- package/dist/core/relationship-registry.js.map +2 -2
- package/dist/core/relationships.js.map +1 -1
- package/dist/core/report-data-model.js +285 -0
- package/dist/core/report-data-model.js.map +7 -0
- package/dist/core/spec-data-service.js +185 -0
- package/dist/core/spec-data-service.js.map +7 -0
- package/dist/core/spec-loader-types.js +1 -0
- package/dist/core/spec-loader-types.js.map +7 -0
- package/dist/core/spec-loader.js +234 -0
- package/dist/core/spec-loader.js.map +7 -0
- package/dist/core/staged-changeset-storage.js +282 -0
- package/dist/core/staged-changeset-storage.js.map +7 -0
- package/dist/core/staging-area.js +1002 -0
- package/dist/core/staging-area.js.map +7 -0
- package/dist/core/stats-collector.js +169 -0
- package/dist/core/stats-collector.js.map +7 -0
- package/dist/core/virtual-projection.js +443 -0
- package/dist/core/virtual-projection.js.map +7 -0
- package/dist/export/archimate-exporter.js +99 -60
- package/dist/export/archimate-exporter.js.map +2 -2
- package/dist/export/audit-formatters.js +479 -0
- package/dist/export/audit-formatters.js.map +7 -0
- package/dist/export/diff-formatters.js +99 -0
- package/dist/export/diff-formatters.js.map +7 -0
- package/dist/export/export-manager.js.map +2 -2
- package/dist/export/graphml-exporter.js +44 -27
- package/dist/export/graphml-exporter.js.map +2 -2
- package/dist/export/index.js +4 -0
- package/dist/export/index.js.map +2 -2
- package/dist/export/json-schema-exporter.js +55 -42
- package/dist/export/json-schema-exporter.js.map +2 -2
- package/dist/export/markdown-exporter.js +92 -70
- package/dist/export/markdown-exporter.js.map +2 -2
- package/dist/export/markdown-generator.js +248 -0
- package/dist/export/markdown-generator.js.map +7 -0
- package/dist/export/markdown-utils.js +30 -0
- package/dist/export/markdown-utils.js.map +7 -0
- package/dist/export/mermaid-markdown-exporter.js +37 -0
- package/dist/export/mermaid-markdown-exporter.js.map +7 -0
- package/dist/export/openapi-exporter.js +119 -71
- package/dist/export/openapi-exporter.js.map +2 -2
- package/dist/export/plantuml-exporter.js +104 -39
- package/dist/export/plantuml-exporter.js.map +2 -2
- package/dist/export/report-formatters.js +111 -0
- package/dist/export/report-formatters.js.map +7 -0
- package/dist/export/stats-formatters.js +98 -0
- package/dist/export/stats-formatters.js.map +7 -0
- package/dist/export/types.js +2 -14
- package/dist/export/types.js.map +2 -2
- package/dist/export/verify-formatters.js +153 -0
- package/dist/export/verify-formatters.js.map +7 -0
- package/dist/generated/compiled-validators.js +17 -0
- package/dist/generated/compiled-validators.js.map +7 -0
- package/dist/generated/index.js +31 -0
- package/dist/generated/index.js.map +7 -0
- package/dist/generated/layer-registry.js +190 -0
- package/dist/generated/layer-registry.js.map +7 -0
- package/dist/generated/layer-types.js +7 -0
- package/dist/generated/layer-types.js.map +7 -0
- package/dist/generated/node-types.js +1719 -0
- package/dist/generated/node-types.js.map +7 -0
- package/dist/generated/relationship-index.js +14552 -0
- package/dist/generated/relationship-index.js.map +7 -0
- package/dist/import/archimate-importer.js +166 -0
- package/dist/import/archimate-importer.js.map +7 -0
- package/dist/import/index.js +47 -0
- package/dist/import/index.js.map +7 -0
- package/dist/import/openapi-importer.js +143 -0
- package/dist/import/openapi-importer.js.map +7 -0
- package/dist/import/types.js +1 -0
- package/dist/import/types.js.map +7 -0
- package/dist/integrations/base-manager.js +311 -0
- package/dist/integrations/base-manager.js.map +7 -0
- package/dist/integrations/claude-manager.js +360 -0
- package/dist/integrations/claude-manager.js.map +7 -0
- package/dist/integrations/claude_code/agents/dr-advisor.md +253 -0
- package/dist/integrations/claude_code/agents/dr-architect.md +278 -0
- package/dist/integrations/claude_code/agents/dr-extractor.md +286 -0
- package/dist/integrations/claude_code/commands/dr-changeset.md +657 -0
- package/dist/integrations/claude_code/commands/dr-design.md +373 -0
- package/dist/integrations/claude_code/commands/dr-info.md +132 -0
- package/dist/integrations/claude_code/commands/dr-init.md +251 -0
- package/dist/integrations/claude_code/commands/dr-map.md +936 -0
- package/dist/integrations/claude_code/commands/dr-model.md +493 -0
- package/dist/integrations/claude_code/commands/dr-relate.md +814 -0
- package/dist/integrations/claude_code/commands/dr-sync.md +279 -0
- package/dist/integrations/claude_code/commands/dr-validate.md +654 -0
- package/dist/integrations/claude_code/commands/dr-verify.md +559 -0
- package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +903 -0
- package/dist/integrations/claude_code/docs/QUICK_START.md +271 -0
- package/dist/integrations/claude_code/docs/README.md +347 -0
- package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +550 -0
- package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +620 -0
- package/dist/integrations/claude_code/skills/dr_03_security_layer/SKILL.md +642 -0
- package/dist/integrations/claude_code/skills/dr_04_application_layer/SKILL.md +911 -0
- package/dist/integrations/claude_code/skills/dr_05_technology_layer/SKILL.md +836 -0
- package/dist/integrations/claude_code/skills/dr_06_api_layer/SKILL.md +933 -0
- package/dist/integrations/claude_code/skills/dr_07_data_model_layer/SKILL.md +210 -0
- package/dist/integrations/claude_code/skills/dr_08_dataset_layer/SKILL.md +319 -0
- package/dist/integrations/claude_code/skills/dr_09_ux_layer/SKILL.md +319 -0
- package/dist/integrations/claude_code/skills/dr_10_navigation_layer/SKILL.md +318 -0
- package/dist/integrations/claude_code/skills/dr_11_apm_layer/SKILL.md +273 -0
- package/dist/integrations/claude_code/skills/dr_12_testing_layer/SKILL.md +273 -0
- package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +187 -0
- package/dist/integrations/claude_code/skills/dr_codebase_memory/SKILL.md +590 -0
- package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +295 -0
- package/dist/integrations/copilot-manager.js +328 -0
- package/dist/integrations/copilot-manager.js.map +7 -0
- package/dist/integrations/github_copilot/agents/dr-advisor.md +243 -0
- package/dist/integrations/github_copilot/agents/dr-architect.md +1567 -0
- package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +491 -0
- package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +539 -0
- package/dist/integrations/github_copilot/skills/dr_03_security_layer/SKILL.md +667 -0
- package/dist/integrations/github_copilot/skills/dr_04_application_layer/SKILL.md +670 -0
- package/dist/integrations/github_copilot/skills/dr_05_technology_layer/SKILL.md +660 -0
- package/dist/integrations/github_copilot/skills/dr_06_api_layer/SKILL.md +855 -0
- package/dist/integrations/github_copilot/skills/dr_07_data_model_layer/SKILL.md +171 -0
- package/dist/integrations/github_copilot/skills/dr_08_dataset_layer/SKILL.md +216 -0
- package/dist/integrations/github_copilot/skills/dr_09_ux_layer/SKILL.md +230 -0
- package/dist/integrations/github_copilot/skills/dr_10_navigation_layer/SKILL.md +228 -0
- package/dist/integrations/github_copilot/skills/dr_11_apm_layer/SKILL.md +234 -0
- package/dist/integrations/github_copilot/skills/dr_12_testing_layer/SKILL.md +230 -0
- package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +187 -0
- package/dist/integrations/hash-utils.js +51 -0
- package/dist/integrations/hash-utils.js.map +7 -0
- package/dist/integrations/types.js +16 -0
- package/dist/integrations/types.js.map +7 -0
- package/dist/reports/model-layer-report-generator.js +278 -0
- package/dist/reports/model-layer-report-generator.js.map +7 -0
- package/dist/reports/model-report-data.js +57 -0
- package/dist/reports/model-report-data.js.map +7 -0
- package/dist/reports/model-report-orchestrator.js +103 -0
- package/dist/reports/model-report-orchestrator.js.map +7 -0
- package/dist/schemas/bundled/analyzers/cbm.json +595 -0
- package/dist/schemas/bundled/analyzers/manifest.json +9 -0
- package/dist/schemas/bundled/api.json +3411 -0
- package/dist/schemas/bundled/apm.json +2371 -0
- package/dist/schemas/bundled/application.json +1253 -0
- package/dist/schemas/bundled/base.json +1622 -0
- package/dist/schemas/bundled/business.json +1279 -0
- package/dist/schemas/bundled/data-model.json +1298 -0
- package/dist/schemas/bundled/data-store.json +2025 -0
- package/dist/schemas/bundled/manifest.json +93 -0
- package/dist/schemas/bundled/motivation.json +1360 -0
- package/dist/schemas/bundled/navigation.json +1874 -0
- package/dist/schemas/bundled/security.json +3488 -0
- package/dist/schemas/bundled/technology.json +2067 -0
- package/dist/schemas/bundled/testing.json +3120 -0
- package/dist/schemas/bundled/ux.json +3592 -0
- package/dist/server/schemas.js +202 -0
- package/dist/server/schemas.js.map +7 -0
- package/dist/server/server.js +1336 -252
- package/dist/server/server.js.map +3 -3
- package/dist/server/telemetry-middleware.js +22 -15
- package/dist/server/telemetry-middleware.js.map +2 -2
- package/dist/server-entry.js +65 -0
- package/dist/server-entry.js.map +7 -0
- package/dist/telemetry/config.js +89 -0
- package/dist/telemetry/config.js.map +7 -0
- package/dist/telemetry/console-interceptor.js.map +1 -1
- package/dist/telemetry/detect.js +24 -0
- package/dist/telemetry/detect.js.map +7 -0
- package/dist/telemetry/fetch-otlp-exporter.js +112 -0
- package/dist/telemetry/fetch-otlp-exporter.js.map +7 -0
- package/dist/telemetry/index.js +153 -3
- package/dist/telemetry/index.js.map +2 -2
- package/dist/telemetry/resilient-exporter.js +22 -8
- package/dist/telemetry/resilient-exporter.js.map +2 -2
- package/dist/telemetry/resilient-log-exporter.js +17 -8
- package/dist/telemetry/resilient-log-exporter.js.map +2 -2
- package/dist/telemetry/test-instrumentation.js.map +2 -2
- package/dist/types/index.js +84 -0
- package/dist/types/index.js.map +3 -3
- package/dist/types/source-reference.js +1 -0
- package/dist/types/source-reference.js.map +7 -0
- package/dist/utils/chat-logger.js +292 -0
- package/dist/utils/chat-logger.js.map +7 -0
- package/dist/utils/claude-stream.js +8 -0
- package/dist/utils/claude-stream.js.map +7 -0
- package/dist/utils/date-utils.js +7 -0
- package/dist/utils/date-utils.js.map +7 -0
- package/dist/utils/element-utils.js.map +1 -1
- package/dist/utils/errors.js +88 -15
- package/dist/utils/errors.js.map +3 -3
- package/dist/utils/export-python-annotations.js +82 -0
- package/dist/utils/export-python-annotations.js.map +7 -0
- package/dist/utils/file-io.js +7 -2
- package/dist/utils/file-io.js.map +2 -2
- package/dist/utils/file-lock.js +156 -0
- package/dist/utils/file-lock.js.map +7 -0
- package/dist/utils/id-generator.js +18 -0
- package/dist/utils/id-generator.js.map +7 -0
- package/dist/utils/layer-name-formatter.js +16 -0
- package/dist/utils/layer-name-formatter.js.map +7 -0
- package/dist/utils/markdown-anchor.js +7 -0
- package/dist/utils/markdown-anchor.js.map +7 -0
- package/dist/utils/markdown-link.js +12 -0
- package/dist/utils/markdown-link.js.map +7 -0
- package/dist/utils/markdown-table.js +17 -0
- package/dist/utils/markdown-table.js.map +7 -0
- package/dist/utils/mermaid-utils.js +11 -0
- package/dist/utils/mermaid-utils.js.map +7 -0
- package/dist/utils/project-paths.js.map +2 -2
- package/dist/utils/source-reference.js +52 -0
- package/dist/utils/source-reference.js.map +7 -0
- package/dist/utils/spec-installer.js +40 -53
- package/dist/utils/spec-installer.js.map +2 -2
- package/dist/utils/spec-version.js +5 -1
- package/dist/utils/spec-version.js.map +2 -2
- package/dist/utils/string-utils.js +12 -0
- package/dist/utils/string-utils.js.map +7 -0
- package/dist/utils/table-formatting.js +19 -0
- package/dist/utils/table-formatting.js.map +7 -0
- package/dist/validators/index.js +4 -0
- package/dist/validators/index.js.map +2 -2
- package/dist/validators/naming-validator.js +20 -23
- package/dist/validators/naming-validator.js.map +2 -2
- package/dist/validators/reference-validator.js +23 -38
- package/dist/validators/reference-validator.js.map +2 -2
- package/dist/validators/relationship-schema-validator.js +243 -0
- package/dist/validators/relationship-schema-validator.js.map +7 -0
- package/dist/validators/schema-validator.js +168 -68
- package/dist/validators/schema-validator.js.map +2 -2
- package/dist/validators/semantic-validator.js +36 -60
- package/dist/validators/semantic-validator.js.map +2 -2
- package/dist/validators/types.js.map +2 -2
- package/dist/validators/validation-formatter.js +159 -0
- package/dist/validators/validation-formatter.js.map +7 -0
- package/dist/validators/validator.js +24 -38
- package/dist/validators/validator.js.map +2 -2
- package/dist/viewer/README.md +139 -0
- package/dist/viewer/assets/main-CY0Xufuj.css +1 -0
- package/dist/viewer/assets/main-DtgErnwF.js +81 -0
- package/dist/viewer/assets/vendor-CxKvDp2x.js +17 -0
- package/dist/viewer/favicon.svg +11 -0
- package/dist/viewer/fonts/inter/Inter-Black.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-Bold.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-ExtraBold.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-Light.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-Medium.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-Regular.woff2 +0 -0
- package/dist/viewer/fonts/inter/Inter-SemiBold.woff2 +0 -0
- package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-Medium.woff2 +0 -0
- package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/viewer/fonts/jetbrains-mono/JetBrainsMono-SemiBold.woff2 +0 -0
- package/dist/viewer/index.html +15 -0
- package/dist/viewer/manifest.json +99 -0
- package/dist/viewer/version.json +1 -0
- package/package.json +37 -13
- package/PYTHON_CLI_PARITY.md +0 -265
- package/PYTHON_CLI_STRUCTURE_UPDATE.md +0 -246
- package/biome.json +0 -42
- package/bunfig.toml +0 -3
- package/dist/ai/claude-client.js +0 -71
- package/dist/ai/claude-client.js.map +0 -7
- package/dist/ai/context-provider.js +0 -129
- package/dist/ai/context-provider.js.map +0 -7
- package/dist/ai/tools.js +0 -231
- package/dist/ai/tools.js.map +0 -7
- package/dist/commands/migrate.js +0 -36
- package/dist/commands/migrate.js.map +0 -7
- package/dist/commands/project.js +0 -74
- package/dist/commands/project.js.map +0 -7
- package/dist/core/active-changeset.js +0 -52
- package/dist/core/active-changeset.js.map +0 -7
- package/dist/core/projection-engine.js +0 -288
- package/dist/core/projection-engine.js.map +0 -7
- package/dist/schemas/bundled/01-motivation-layer.schema.json +0 -942
- package/dist/schemas/bundled/02-business-layer.schema.json +0 -1293
- package/dist/schemas/bundled/03-security-layer.schema.json +0 -2177
- package/dist/schemas/bundled/04-application-layer.schema.json +0 -1328
- package/dist/schemas/bundled/05-technology-layer.schema.json +0 -1465
- package/dist/schemas/bundled/06-api-layer.schema.json +0 -1743
- package/dist/schemas/bundled/07-data-model-layer.schema.json +0 -1253
- package/dist/schemas/bundled/08-datastore-layer.schema.json +0 -892
- package/dist/schemas/bundled/09-ux-layer.schema.json +0 -1506
- package/dist/schemas/bundled/10-navigation-layer.schema.json +0 -843
- package/dist/schemas/bundled/11-apm-observability-layer.schema.json +0 -1430
- package/dist/schemas/bundled/12-testing-layer.schema.json +0 -1091
- package/dist/schemas/bundled/common/layer-extensions.schema.json +0 -266
- package/dist/schemas/bundled/common/predicates.schema.json +0 -493
- package/dist/schemas/bundled/common/relationships.schema.json +0 -791
- package/dist/schemas/bundled/common/source-references.schema.json +0 -71
- package/dist/schemas/bundled/link-registry.json +0 -1839
- package/dist/schemas/bundled/link-registry.schema.json +0 -339
- package/dist/schemas/bundled/relationship-catalog.json +0 -1302
- package/dist/schemas/bundled/relationship-type.schema.json +0 -221
- package/dist/utils/model-path.js +0 -22
- package/dist/utils/model-path.js.map +0 -7
- package/docs/TEST-INSTRUMENTATION.md +0 -405
- package/docs/telemetry.md +0 -427
- package/test-debug.js +0 -33
- package/test-special.mjs +0 -46
- package/test_runner.ts +0 -7
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command } from "commander";
|
|
2
|
+
import { Command, CommanderError } from "commander";
|
|
3
3
|
import { setGlobalOptions } from "./utils/globals.js";
|
|
4
4
|
import { initCommand } from "./commands/init.js";
|
|
5
5
|
import { addCommand } from "./commands/add.js";
|
|
@@ -10,77 +10,104 @@ import { listCommand } from "./commands/list.js";
|
|
|
10
10
|
import { searchCommand } from "./commands/search.js";
|
|
11
11
|
import { validateCommand } from "./commands/validate.js";
|
|
12
12
|
import { infoCommand } from "./commands/info.js";
|
|
13
|
-
import { elementCommands } from "./commands/element.js";
|
|
14
13
|
import { relationshipCommands } from "./commands/relationship.js";
|
|
14
|
+
import { elementCommands } from "./commands/element.js";
|
|
15
|
+
import { schemaCommands } from "./commands/schema.js";
|
|
16
|
+
import { catalogCommands } from "./commands/catalog.js";
|
|
17
|
+
import { docsCommands } from "./commands/docs.js";
|
|
15
18
|
import { traceCommand } from "./commands/trace.js";
|
|
16
|
-
import { projectCommand, projectAllCommand } from "./commands/project.js";
|
|
17
19
|
import { exportCommand } from "./commands/export.js";
|
|
20
|
+
import { importCommand } from "./commands/import.js";
|
|
18
21
|
import { chatCommand } from "./commands/chat.js";
|
|
19
22
|
import { upgradeCommand } from "./commands/upgrade.js";
|
|
20
23
|
import { conformanceCommand } from "./commands/conformance.js";
|
|
21
24
|
import { changesetCommands } from "./commands/changeset.js";
|
|
25
|
+
import { claudeCommands } from "./commands/claude.js";
|
|
26
|
+
import { copilotCommands } from "./commands/copilot.js";
|
|
27
|
+
import { analyzerCommands } from "./commands/analyzer.js";
|
|
22
28
|
import { versionCommand } from "./commands/version.js";
|
|
29
|
+
import { statsCommand } from "./commands/stats.js";
|
|
30
|
+
import { reportCommand } from "./commands/report.js";
|
|
31
|
+
import { reportsCommands } from "./commands/reports.js";
|
|
32
|
+
import { auditCommand } from "./commands/audit.js";
|
|
33
|
+
import { auditDiffCommand } from "./commands/audit-diff.js";
|
|
34
|
+
import { auditSnapshotsCommand } from "./commands/audit-snapshots.js";
|
|
23
35
|
import { initTelemetry, startActiveSpan, shutdownTelemetry } from "./telemetry/index.js";
|
|
24
36
|
import { installConsoleInterceptor } from "./telemetry/console-interceptor.js";
|
|
25
|
-
import {
|
|
26
|
-
const isTelemetryEnabled = !1;
|
|
27
|
-
async function
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
return "0.1.0";
|
|
40
|
-
}
|
|
41
|
-
const cliVersion = await getCliVersion(), program = new Command();
|
|
42
|
-
if (process.argv.includes("--version") || process.argv.includes("-V")) {
|
|
43
|
-
const { versionCommand: versionCommand2 } = await import("./commands/version.js");
|
|
44
|
-
await versionCommand2(), process.exit(0);
|
|
37
|
+
import { getErrorMessage } from "./utils/errors.js";
|
|
38
|
+
const isTelemetryEnabled = !1, CONSOLE_LOGGING_COMMANDS = /* @__PURE__ */ new Set(["chat", "validate", "import", "export"]);
|
|
39
|
+
async function extractExitCode(error) {
|
|
40
|
+
const { CLIError } = await import("./utils/errors.js");
|
|
41
|
+
if (error instanceof CLIError || error instanceof CommanderError)
|
|
42
|
+
return error.exitCode;
|
|
43
|
+
if (error && typeof error == "object" && "exitCode" in error) {
|
|
44
|
+
const errorObj = error;
|
|
45
|
+
if (typeof errorObj.exitCode == "number" && (errorObj.name === "CLIError" || errorObj.message))
|
|
46
|
+
return process.argv.includes("--debug") && console.warn("[DEBUG] Using duck-typed error object as fallback - this may indicate a module loading issue"), errorObj.exitCode;
|
|
47
|
+
}
|
|
48
|
+
return 1;
|
|
45
49
|
}
|
|
46
|
-
|
|
50
|
+
const cliVersion = "0.1.5", program = new Command();
|
|
51
|
+
(process.argv.includes("--version") || process.argv.includes("-V")) && (process.argv = ["node", "dr", "version"]), program.name("dr").description("Documentation Robotics CLI - Architecture Model Management").option("-v, --verbose", "Enable verbose output").option("--debug", "Enable debug mode").exitOverride().showSuggestionAfterError().hook("preAction", async (thisCommand) => {
|
|
47
52
|
const options = thisCommand.opts();
|
|
48
53
|
setGlobalOptions({
|
|
49
54
|
verbose: options.verbose,
|
|
50
55
|
debug: options.debug
|
|
51
56
|
});
|
|
52
|
-
}), program.command("init").description("Initialize a new architecture model").option("--name <name>", "Model name").option("--author <author>", "Model author").option("--description <desc>", "Model description").addHelpText("after", `
|
|
57
|
+
}), program.command("init [name]").description("Initialize a new architecture model").option("--name <name>", "Model name (overrides positional argument)").option("--author <author>", "Model author").option("--description <desc>", "Model description").addHelpText("after", `
|
|
53
58
|
Examples:
|
|
54
59
|
$ dr init
|
|
55
|
-
$ dr init
|
|
56
|
-
$ dr init
|
|
60
|
+
$ dr init claudetoreum
|
|
61
|
+
$ dr init "Enterprise Architecture" --author "Team A"
|
|
62
|
+
$ dr init --name "My Project" --description "12-layer federated model"`).action((name, options) => initCommand({ ...options, name: options.name || name })), program.command("add <layer> <type> <name>").description("Add an element to a layer").option("--name <name>", "Element display name (defaults to the name argument)").option("--description <desc>", "Element description").option("--attributes <json>", "Element type-specific attributes as JSON object").option("--source-file <path>", "Source file path (relative from repository root)").option("--source-symbol <name>", "Symbol name (class, function, variable) in source file").option("--source-provenance <type>", "Provenance type: extracted, manual, inferred, generated").option("--source-repo-remote <url>", "Git remote URL for repository context").option("--source-repo-commit <sha>", "Git commit SHA (40 hex characters) for repository context").addHelpText("after", `
|
|
57
63
|
Examples:
|
|
58
|
-
$ dr add business
|
|
59
|
-
$ dr add api
|
|
60
|
-
$ dr add application component
|
|
64
|
+
$ dr add business service "Customer Management"
|
|
65
|
+
$ dr add api operation "Create Customer" --attributes '{"operationId":"createCustomer","summary":"Create a customer","tags":"customers"}'
|
|
66
|
+
$ dr add application component "Customer API" --description "REST API for customer operations"
|
|
67
|
+
$ dr add security policy "Auth Validator" --source-file "src/auth/validator.ts" --source-symbol "validateToken" --source-provenance "extracted"
|
|
68
|
+
|
|
69
|
+
Note: Element IDs are generated automatically in format {layer}.{type}.{kebab-name}`).action(addCommand), program.command("update <id>").description("Update an element").option("--name <name>", "New element name").option("--description <desc>", "New description").option("--type <new-type>", "Change element type (must be valid for the element's layer; incompatible attributes must be cleaned up manually)").option("--attributes <json>", "Updated type-specific attributes (JSON)").option("--source-file <path>", "Source file path (relative from repository root)").option("--source-symbol <name>", "Symbol name (class, function, variable) in source file").option("--source-provenance <type>", "Provenance type: extracted, manual, inferred, generated").option("--source-repo-remote <url>", "Git remote URL for repository context").option("--source-repo-commit <sha>", "Git commit SHA (40 hex characters) for repository context").option("--clear-source-reference", "Remove source reference from element").addHelpText("after", `
|
|
70
|
+
Note: Changes are written immediately to model files.
|
|
71
|
+
To track changes for review, activate a changeset first:
|
|
72
|
+
$ dr changeset activate my-changeset
|
|
73
|
+
|
|
61
74
|
Examples:
|
|
62
75
|
$ dr update api-endpoint-create-customer --name "Create Customer (v2)"
|
|
63
|
-
$ dr update business-service-order --description "Updated description"
|
|
76
|
+
$ dr update business-service-order --description "Updated description"
|
|
77
|
+
$ dr update application-applicationfunction-process-orders --type applicationservice
|
|
78
|
+
$ dr update security-policy-auth --source-file "src/auth/policy.ts" --source-provenance "extracted"`).action(updateCommand), program.command("delete <id>").description("Delete an element").option("--force", "Skip dependency checks (confirmation is also skipped in non-TTY environments)").option("--cascade", "Remove dependent elements automatically").option("--dry-run", "Show what would be removed without actually removing").addHelpText("after", `
|
|
64
79
|
Examples:
|
|
65
80
|
$ dr delete api-endpoint-old-endpoint
|
|
66
|
-
$ dr delete api-endpoint-old-endpoint --force
|
|
81
|
+
$ dr delete api-endpoint-old-endpoint --force
|
|
82
|
+
$ dr delete api-endpoint-old-endpoint --cascade
|
|
83
|
+
$ dr delete api-endpoint-old-endpoint --dry-run
|
|
84
|
+
$ dr delete api-endpoint-old-endpoint --cascade --dry-run`).action(deleteCommand), program.command("show <id>").description("Display element details").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
|
|
67
85
|
Examples:
|
|
68
86
|
$ dr show api-endpoint-create-customer
|
|
69
|
-
$ dr show business-service-order-mgmt`).action((id, options) => showCommand(id, options)), program.command("list
|
|
87
|
+
$ dr show business-service-order-mgmt`).action((id, options) => showCommand(id, options)), program.command("list [layer]").description("List elements in a layer (or all layers if omitted)").option("--type <type>", "Filter by element type").option("--json", "Output as JSON").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
|
|
70
88
|
Examples:
|
|
89
|
+
$ dr list
|
|
71
90
|
$ dr list api
|
|
72
|
-
$ dr list business --type
|
|
73
|
-
$ dr list api --json
|
|
91
|
+
$ dr list business --type businessservice
|
|
92
|
+
$ dr list api --json
|
|
93
|
+
$ dr list --json`).action(listCommand), program.command("search <query>").description("Search for elements by name or ID").option("--layer <layer>", "Limit search to specific layer").option("--type <type>", "Filter by element type").option("--source-file <path>", "Find elements referencing a source file (takes precedence over pattern matching)").option("--json", "Output as JSON").addHelpText("after", `
|
|
74
94
|
Examples:
|
|
75
95
|
$ dr search customer
|
|
76
96
|
$ dr search "order processing" --layer business
|
|
77
|
-
$ dr search create-* --type endpoint
|
|
97
|
+
$ dr search create-* --type endpoint
|
|
98
|
+
$ dr search "" --source-file src/api/customer.ts`).action(searchCommand), program.command("validate").description("Validate the architecture model").option("--layers <layers...>", "Specific layers to validate").option("--strict", "Treat warnings as errors").option("--verbose", "Show detailed validation output with relationship breakdown").option("--quiet", "Show minimal output").option("--output <path>", "Export validation report to file (JSON or Markdown)").option("--model <path>", "Path to model root (contains model/manifest.yaml)").option("--orphans", "Show only orphaned elements grouped by layer with relationship suggestions").option("--all", "Run all validations (default behavior)").option("--markdown", "Validate markdown structure").option("--schemas", "Validate JSON schemas").option("--schema", "Validate JSON schemas (alias for --schemas)").option("--relationships", "Validate relationships").option("--structure", "Validate documentation structure").option("--naming", "Validate naming conventions").option("--references", "Validate cross-layer references").addHelpText("after", `
|
|
78
99
|
Examples:
|
|
79
100
|
$ dr validate
|
|
80
101
|
$ dr validate --all --strict
|
|
102
|
+
$ dr validate --verbose
|
|
103
|
+
$ dr validate --quiet
|
|
104
|
+
$ dr validate --output report.json
|
|
105
|
+
$ dr validate --output report.md
|
|
81
106
|
$ dr validate --schemas
|
|
82
107
|
$ dr validate --relationships
|
|
83
|
-
$ dr validate --layers business api
|
|
108
|
+
$ dr validate --layers business api
|
|
109
|
+
$ dr validate --orphans
|
|
110
|
+
$ dr validate --orphans --output orphans.json`).action(validateCommand), program.command("export <format>").description("Export the architecture model to various formats").option("--output <path>", "Output file path (default: print to stdout)").option("--layers <layers...>", "Specific layers to export").option("--model <path>", "Path to model root directory or manifest.yaml file").option("--include-sources", "Include source file paths in PlantUML diagrams as notes").addHelpText("after", `
|
|
84
111
|
Supported formats:
|
|
85
112
|
archimate Export to ArchiMate XML (layers 1, 2, 4, 5)
|
|
86
113
|
openapi Export to OpenAPI 3.0 specification (layer 6)
|
|
@@ -92,21 +119,107 @@ Supported formats:
|
|
|
92
119
|
Examples:
|
|
93
120
|
$ dr export archimate --output model.xml
|
|
94
121
|
$ dr export openapi --layers api
|
|
122
|
+
$ dr export plantuml --include-sources --output diagram.puml
|
|
95
123
|
$ dr export markdown --output docs/architecture.md`).action(async (format, options) => {
|
|
96
124
|
await exportCommand({
|
|
97
125
|
format,
|
|
98
126
|
output: options.output,
|
|
99
127
|
layers: options.layers,
|
|
100
|
-
model: options.model
|
|
128
|
+
model: options.model,
|
|
129
|
+
includeSources: options.includeSources
|
|
130
|
+
});
|
|
131
|
+
}), program.command("import <format>").description("Import architecture model from various formats").option("--input <path>", "Input file path (required)", void 0).option("--model <path>", "Path to model root directory or manifest.yaml file").option("--merge-strategy <strategy>", "How to handle existing elements: add, update, skip (default: add)").addHelpText("after", `
|
|
132
|
+
Supported formats:
|
|
133
|
+
archimate Import from ArchiMate XML (layers 1, 2, 4, 5)
|
|
134
|
+
openapi Import from OpenAPI 3.0 specification (layer 6)
|
|
135
|
+
|
|
136
|
+
Examples:
|
|
137
|
+
$ dr import archimate --input model.xml
|
|
138
|
+
$ dr import openapi --input api.json --merge-strategy add
|
|
139
|
+
$ dr import archimate --input model.xml --model ./myproject`).action(async (format, options) => {
|
|
140
|
+
options.input || (console.error("Error: --input path is required"), process.exit(1)), await importCommand({
|
|
141
|
+
format,
|
|
142
|
+
input: options.input,
|
|
143
|
+
model: options.model,
|
|
144
|
+
mergeStrategy: options.mergeStrategy
|
|
101
145
|
});
|
|
102
|
-
}), program.command("info").description("Show model information").option("--layer <layer>", "Show specific layer details").addHelpText("after", `
|
|
146
|
+
}), program.command("info").description("Show model information").option("--layer <layer>", "Show specific layer details").option("--verbose", "Show detailed breakdown by element type").addHelpText("after", `
|
|
103
147
|
Examples:
|
|
104
148
|
$ dr info
|
|
105
|
-
$ dr info --layer business
|
|
106
|
-
|
|
107
|
-
|
|
149
|
+
$ dr info --layer business
|
|
150
|
+
$ dr info --layer api --verbose`).action(infoCommand), program.command("stats").description("Display model statistics and health metrics").option("--model <path>", "Path to the model directory").option("--format <format>", "Output format: text (default), json, markdown, compact").option("--output <path>", "Output file path (auto-detects format from extension)").option("--compact", "Show compact one-line summary").option("--verbose", "Show detailed information").addHelpText("after", `
|
|
151
|
+
Output formats:
|
|
152
|
+
text Full formatted statistics (default)
|
|
153
|
+
json JSON output for automation
|
|
154
|
+
markdown Markdown report format
|
|
155
|
+
compact Single-line summary
|
|
156
|
+
|
|
157
|
+
Examples:
|
|
158
|
+
$ dr stats # Show full statistics
|
|
159
|
+
$ dr stats --compact # Show one-line summary
|
|
160
|
+
$ dr stats --format json # Output as JSON
|
|
161
|
+
$ dr stats --output stats.md # Save as markdown file
|
|
162
|
+
$ dr stats --output stats.json # Save as JSON file
|
|
163
|
+
$ dr stats --verbose # Show detailed information`).action((options) => statsCommand(options)), program.command("report").description("Generate comprehensive architecture reports").option("--model <path>", "Path to the model directory").option("--type <type>", "Report type: comprehensive (default), statistics, relationships, data-model, quality").option("--format <format>", "Output format: text (default), json, markdown").option("--output <path>", "Output file path (auto-detects format from extension)").option("--verbose", "Show detailed information").option("--include-data-model", "Include data model analysis (default: true)").option("--include-quality", "Include quality metrics (default: true)").addHelpText("after", `
|
|
164
|
+
Report types:
|
|
165
|
+
comprehensive Full report with statistics, relationships, and data model (default)
|
|
166
|
+
statistics Statistics and quality metrics
|
|
167
|
+
relationships Relationship analysis and classification
|
|
168
|
+
data-model Layer 7 data model analysis
|
|
169
|
+
quality Quality metrics and recommendations
|
|
170
|
+
|
|
171
|
+
Output formats:
|
|
172
|
+
text Full formatted report (default)
|
|
173
|
+
json JSON output for automation
|
|
174
|
+
markdown Markdown report format
|
|
175
|
+
|
|
176
|
+
Examples:
|
|
177
|
+
$ dr report # Show comprehensive report
|
|
178
|
+
$ dr report --type relationships # Show relationship analysis
|
|
179
|
+
$ dr report --format json # Output as JSON
|
|
180
|
+
$ dr report --output report.md # Save as markdown file
|
|
181
|
+
$ dr report --type data-model --output dm.md # Data model report as markdown
|
|
182
|
+
$ dr report --verbose # Show detailed information`).action((options) => reportCommand(options));
|
|
183
|
+
const reportsGroup = program.command("reports").description("Manage architecture layer reports");
|
|
184
|
+
reportsCommands(reportsGroup), program.command("audit [layer]").description("Analyze relationship coverage, gaps, duplicates, and balance").option("--type <type>", "Audit type: relationships (default), nodes, all").option("--format <format>", "Output format: text (default), json, markdown").option("--output <path>", "Output file path (auto-detects format from extension)").option("--verbose", "Show detailed analysis").option("--save-snapshot", "Save audit report as snapshot for differential analysis").addHelpText("after", `
|
|
185
|
+
Audit types:
|
|
186
|
+
relationships Relationship coverage, gaps, duplicates, balance (default)
|
|
187
|
+
nodes Node type usage distribution across model layers
|
|
188
|
+
all Both relationship and node audits
|
|
189
|
+
|
|
190
|
+
Output formats:
|
|
191
|
+
text Full formatted audit report (default)
|
|
192
|
+
json JSON output for automation
|
|
193
|
+
markdown Markdown audit report format
|
|
194
|
+
|
|
195
|
+
Examples:
|
|
196
|
+
$ dr audit # Full relationship audit of all layers
|
|
197
|
+
$ dr audit security # Audit security layer only
|
|
198
|
+
$ dr audit --type nodes # Node type distribution audit
|
|
199
|
+
$ dr audit --type all # Combined relationship + node audit
|
|
200
|
+
$ dr audit --format json # Output as JSON
|
|
201
|
+
$ dr audit --output audit.md # Save as markdown file
|
|
202
|
+
$ dr audit --verbose # Show detailed analysis
|
|
203
|
+
$ dr audit --save-snapshot # Save snapshot for later comparison
|
|
204
|
+
$ dr audit api --output api-audit.json # API layer audit as JSON`).action((layer, options) => auditCommand({ ...options, layer, verbose: options.verbose ?? program.opts().verbose })), program.command("audit:diff").description("Compare before/after audit snapshots").option("--before <id>", "Before snapshot ID or timestamp").option("--after <id>", "After snapshot ID or timestamp").option("--format <format>", "Output format: text (default), json, markdown").option("--output <path>", "Output file path").option("--verbose", "Show detailed comparison").addHelpText("after", `
|
|
205
|
+
Examples:
|
|
206
|
+
$ dr audit:diff # Compare latest two snapshots
|
|
207
|
+
$ dr audit:diff --before 20260220-100000 --after 20260220-150000
|
|
208
|
+
$ dr audit:diff --format markdown --output diff.md
|
|
209
|
+
$ dr audit:diff --verbose # Show detailed changes`).action((options) => auditDiffCommand(options)), program.command("audit:snapshots <action>").description("Manage audit snapshots (list, delete, clear)").option("--id <id>", "Snapshot ID (for delete action)").addHelpText("after", `
|
|
210
|
+
Actions:
|
|
211
|
+
list List all available snapshots
|
|
212
|
+
delete Delete a specific snapshot (requires --id)
|
|
213
|
+
clear Delete all snapshots
|
|
214
|
+
|
|
215
|
+
Examples:
|
|
216
|
+
$ dr audit:snapshots list
|
|
217
|
+
$ dr audit:snapshots delete --id 20260220-100000
|
|
218
|
+
$ dr audit:snapshots clear`).action((action, options) => auditSnapshotsCommand({ ...options, action }));
|
|
108
219
|
const relationshipGroup = program.command("relationship").description("Relationship operations");
|
|
109
|
-
relationshipCommands(relationshipGroup)
|
|
220
|
+
relationshipCommands(relationshipGroup);
|
|
221
|
+
const elementGroup = program.command("element").description("Element operations");
|
|
222
|
+
elementCommands(elementGroup), schemaCommands(program), catalogCommands(program), docsCommands(program), program.command("trace <elementId>").description("Trace dependencies for an element").option("--direction <dir>", "Trace direction: up (dependencies), down (dependents), both (default)").option("--depth <num>", "Maximum traversal depth").option("--metrics", "Show graph and element metrics").option("--model <path>", "Path to model root (contains model/manifest.yaml)").addHelpText("after", `
|
|
110
223
|
Examples:
|
|
111
224
|
$ dr trace api-endpoint-create-customer
|
|
112
225
|
$ dr trace business-service-order --direction down --metrics
|
|
@@ -117,35 +230,23 @@ Examples:
|
|
|
117
230
|
showMetrics: options.metrics,
|
|
118
231
|
model: options.model
|
|
119
232
|
});
|
|
120
|
-
}), program.command("
|
|
121
|
-
Examples:
|
|
122
|
-
$ dr project application.service.api-service "api,data-model"
|
|
123
|
-
$ dr project business.process.order-fulfillment application --dry-run
|
|
124
|
-
$ dr project api.endpoint.create-order data-model --rule api-to-data`).action(async (elementId, targetLayers, options) => {
|
|
125
|
-
await projectCommand(elementId, targetLayers, {
|
|
126
|
-
rule: options.rule,
|
|
127
|
-
dryRun: options.dryRun,
|
|
128
|
-
force: options.force,
|
|
129
|
-
model: options.model
|
|
130
|
-
});
|
|
131
|
-
}), program.command("project-all").description("Project all applicable elements based on rules").option("--from <layer>", "Source layer filter").option("--to <layer>", "Target layer filter").option("--dry-run", "Show what would be created without saving").option("--model <path>", "Path to model directory").addHelpText("after", `
|
|
132
|
-
Examples:
|
|
133
|
-
$ dr project-all --from application --to api
|
|
134
|
-
$ dr project-all --to data-model --dry-run
|
|
135
|
-
$ dr project-all`).action(async (options) => {
|
|
136
|
-
await projectAllCommand({
|
|
137
|
-
from: options.from,
|
|
138
|
-
to: options.to,
|
|
139
|
-
dryRun: options.dryRun,
|
|
140
|
-
model: options.model
|
|
141
|
-
});
|
|
142
|
-
}), program.command("visualize").description("Launch visualization server with WebSocket support").option("--port <num>", "Server port (default: 8080)").option("--no-browser", "Do not auto-open browser").option("--no-auth", "Disable authentication (enabled by default)").option("--token <token>", "Custom auth token (auto-generated by default)").addHelpText("after", `
|
|
233
|
+
}), program.command("visualize").description("Launch visualization server with WebSocket support").option("--port <num>", "Server port (default: 8080)").option("--no-browser", "Do not auto-open browser").option("--no-auth", "Disable authentication (enabled by default)").option("--token <token>", "Custom auth token (auto-generated by default)").option("--with-danger", "Enable dangerous mode for chat (skip permissions)").option("--viewer-path <path>", "Path to custom viewer build (e.g., ./dist/embedded/dr-viewer-bundle)").addHelpText("after", `
|
|
143
234
|
Examples:
|
|
144
235
|
$ dr visualize
|
|
145
236
|
$ dr visualize --port 3000
|
|
146
237
|
$ dr visualize --no-browser
|
|
147
238
|
$ dr visualize --no-auth
|
|
148
|
-
$ dr visualize --token my-secret-token
|
|
239
|
+
$ dr visualize --token my-secret-token
|
|
240
|
+
$ dr visualize --with-danger
|
|
241
|
+
$ dr visualize --viewer-path ./dist/embedded/dr-viewer-bundle
|
|
242
|
+
|
|
243
|
+
The --with-danger flag enables dangerous mode for chat functionality:
|
|
244
|
+
- Claude Code: --dangerously-skip-permissions
|
|
245
|
+
- GitHub Copilot: --allow-all-tools
|
|
246
|
+
|
|
247
|
+
The --viewer-path option allows loading a local build of the web UI:
|
|
248
|
+
- Point to a directory containing index.html and supporting files
|
|
249
|
+
- Useful for developing custom viewers or using bundled distributions`).action(async (options) => {
|
|
149
250
|
const { visualizeCommand } = await import("./commands/visualize.js");
|
|
150
251
|
await visualizeCommand({
|
|
151
252
|
port: options.port,
|
|
@@ -153,25 +254,45 @@ Examples:
|
|
|
153
254
|
// Commander sets 'browser' to false when --no-browser is used
|
|
154
255
|
noAuth: options.auth === !1,
|
|
155
256
|
// Commander sets 'auth' to false when --no-auth is used
|
|
156
|
-
token: options.token
|
|
257
|
+
token: options.token,
|
|
258
|
+
withDanger: options.withDanger,
|
|
259
|
+
viewerPath: options.viewerPath
|
|
157
260
|
});
|
|
158
|
-
}), program.command("chat").description("Interactive chat with
|
|
261
|
+
}), program.command("chat [client] [withDanger]").description("Interactive chat with AI about the architecture model").addHelpText("after", `
|
|
262
|
+
Arguments:
|
|
263
|
+
client Optional AI client to use: "claude-code" or "github-copilot"
|
|
264
|
+
withDanger Enable dangerous mode: "with-danger"
|
|
265
|
+
|
|
159
266
|
Examples:
|
|
160
|
-
$ dr chat
|
|
267
|
+
$ dr chat # Auto-detect or use saved preference
|
|
268
|
+
$ dr chat claude-code # Use Claude Code, save as preference
|
|
269
|
+
$ dr chat github-copilot # Use GitHub Copilot, save as preference
|
|
270
|
+
$ dr chat with-danger # Auto-detect with dangerous mode
|
|
271
|
+
$ dr chat claude-code with-danger # Use Claude Code with dangerous mode
|
|
272
|
+
$ dr chat github-copilot with-danger # Use GitHub Copilot with dangerous mode
|
|
273
|
+
|
|
274
|
+
Dangerous mode enables:
|
|
275
|
+
- Claude Code: --dangerously-skip-permissions
|
|
276
|
+
- GitHub Copilot: --allow-all-tools
|
|
161
277
|
|
|
162
|
-
This launches an interactive chat interface where you can ask
|
|
163
|
-
about your architecture model.
|
|
164
|
-
|
|
278
|
+
This launches an interactive chat interface where you can ask AI questions
|
|
279
|
+
about your architecture model. Supports Claude Code CLI and GitHub Copilot CLI.
|
|
280
|
+
|
|
281
|
+
Install instructions:
|
|
282
|
+
- Claude Code: https://claude.ai
|
|
283
|
+
- GitHub Copilot: gh extension install github/gh-copilot`).action(async (client, withDangerArg) => {
|
|
284
|
+
let selectedClient, withDanger = !1;
|
|
285
|
+
client === "with-danger" ? (withDanger = !0, selectedClient = void 0) : (withDangerArg === "with-danger" && (withDanger = !0), selectedClient = client), await chatCommand(selectedClient, withDanger);
|
|
165
286
|
}), program.command("version").description("Show CLI and embedded spec version information").addHelpText("after", `
|
|
166
287
|
Examples:
|
|
167
288
|
$ dr version`).action(async () => {
|
|
168
289
|
await versionCommand();
|
|
169
|
-
}), program.command("upgrade").description("Upgrade spec reference and migrate model to latest versions").option("-y, --yes", "Automatically upgrade without prompting").option("--dry-run", "Show what would be upgraded without making changes").option("--force", "
|
|
290
|
+
}), program.command("upgrade").description("Upgrade spec reference and migrate model to latest versions").option("-y, --yes", "Automatically upgrade without prompting").option("--dry-run", "Show what would be upgraded without making changes").option("--force", "Force all upgrades regardless of current versions; skips migration validation").addHelpText("after", `
|
|
170
291
|
Examples:
|
|
171
292
|
$ dr upgrade # Scan, show plan, and prompt for upgrades
|
|
172
293
|
$ dr upgrade --dry-run # Preview available upgrades
|
|
173
294
|
$ dr upgrade --yes # Upgrade without prompting
|
|
174
|
-
$ dr upgrade --force #
|
|
295
|
+
$ dr upgrade --force # Force all upgrades, ignoring version checks`).action(async (options) => {
|
|
175
296
|
await upgradeCommand({
|
|
176
297
|
yes: options.yes,
|
|
177
298
|
dryRun: options.dryRun,
|
|
@@ -186,39 +307,49 @@ Examples:
|
|
|
186
307
|
await conformanceCommand({
|
|
187
308
|
layers: options.layers,
|
|
188
309
|
json: options.json,
|
|
189
|
-
verbose: options.verbose
|
|
310
|
+
verbose: options.verbose ?? program.opts().verbose
|
|
190
311
|
});
|
|
191
|
-
}), changesetCommands(program), (async () => {
|
|
312
|
+
}), changesetCommands(program), claudeCommands(program), copilotCommands(program), analyzerCommands(program), (async () => {
|
|
313
|
+
let exitCode = 0;
|
|
192
314
|
try {
|
|
193
315
|
if (isTelemetryEnabled) {
|
|
194
|
-
await initTelemetry()
|
|
195
|
-
const commandName = process.argv[2] || "unknown"
|
|
316
|
+
await initTelemetry();
|
|
317
|
+
const commandName = process.argv[2] || "unknown";
|
|
318
|
+
CONSOLE_LOGGING_COMMANDS.has(commandName) && await installConsoleInterceptor();
|
|
319
|
+
const args = process.argv.slice(3).join(" ");
|
|
196
320
|
await startActiveSpan("cli.execute", async (span) => {
|
|
197
|
-
span.setAttributes({
|
|
198
|
-
"cli.command": commandName,
|
|
199
|
-
"cli.args": args,
|
|
200
|
-
"cli.cwd": process.cwd(),
|
|
201
|
-
"cli.version": cliVersion
|
|
202
|
-
});
|
|
203
321
|
try {
|
|
204
322
|
await program.parseAsync(process.argv), span.setStatus({ code: 0 });
|
|
205
323
|
} catch (error) {
|
|
206
|
-
|
|
324
|
+
error instanceof CommanderError ? error.exitCode === 0 ? span.setStatus({ code: 0 }) : (span.recordException(error), span.setStatus({
|
|
325
|
+
code: 2,
|
|
326
|
+
// SpanStatusCode.ERROR
|
|
327
|
+
message: error.message
|
|
328
|
+
})) : (span.recordException(error), span.setStatus({
|
|
207
329
|
code: 2,
|
|
208
330
|
// SpanStatusCode.ERROR
|
|
209
|
-
message:
|
|
210
|
-
})
|
|
331
|
+
message: getErrorMessage(error)
|
|
332
|
+
}));
|
|
333
|
+
const { CLIError } = await import("./utils/errors.js");
|
|
334
|
+
error instanceof CommanderError || (error instanceof CLIError ? console.error(error.format()) : error instanceof Error ? console.error(error.message) : console.error(String(error))), exitCode = await extractExitCode(error);
|
|
211
335
|
}
|
|
212
336
|
}, {
|
|
213
337
|
"cli.command": commandName,
|
|
214
338
|
"cli.args": args,
|
|
215
339
|
"cli.cwd": process.cwd(),
|
|
216
340
|
"cli.version": cliVersion
|
|
217
|
-
}), await shutdownTelemetry();
|
|
341
|
+
}), await shutdownTelemetry(), process.exit(exitCode);
|
|
218
342
|
} else
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
343
|
+
try {
|
|
344
|
+
await program.parseAsync(process.argv);
|
|
345
|
+
} catch (error) {
|
|
346
|
+
const { CLIError } = await import("./utils/errors.js");
|
|
347
|
+
error instanceof CommanderError || (error instanceof CLIError ? console.error(error.format()) : error instanceof Error ? console.error(error.message) : console.error(String(error)));
|
|
348
|
+
const exitCodeFromError = await extractExitCode(error);
|
|
349
|
+
process.exit(exitCodeFromError);
|
|
350
|
+
}
|
|
351
|
+
} catch {
|
|
352
|
+
isTelemetryEnabled || process.exit(1), await shutdownTelemetry(), process.exit(1);
|
|
222
353
|
}
|
|
223
354
|
})();
|
|
224
355
|
//# sourceMappingURL=cli.js.map
|