@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
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
# Python CLI Structure Update - Summary
|
|
2
|
-
|
|
3
|
-
## Changes Implemented
|
|
4
|
-
|
|
5
|
-
### 1. Updated TypeScript CLI to Use Python CLI Folder Structure
|
|
6
|
-
|
|
7
|
-
**Python CLI Structure:**
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
project-root/
|
|
11
|
-
.dr/
|
|
12
|
-
documentation-robotics/
|
|
13
|
-
model/
|
|
14
|
-
manifest.yaml
|
|
15
|
-
01_motivation/
|
|
16
|
-
02_business/
|
|
17
|
-
...
|
|
18
|
-
specs/
|
|
19
|
-
projection-rules.yaml
|
|
20
|
-
dr.config.yaml
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
**Files Modified:**
|
|
24
|
-
|
|
25
|
-
1. **src/utils/model-path.ts**
|
|
26
|
-
- Changed priority order to check Python structure first
|
|
27
|
-
- `documentation-robotics/model/` now takes precedence over `model/`
|
|
28
|
-
|
|
29
|
-
2. **src/commands/init.ts**
|
|
30
|
-
- Updated to create `documentation-robotics/model/` directory structure
|
|
31
|
-
- Updated log messages to reflect new path
|
|
32
|
-
|
|
33
|
-
3. **src/core/model.ts**
|
|
34
|
-
- Updated `Model.init()` to create Python CLI structure
|
|
35
|
-
- Updated `saveManifest()` to use `documentation-robotics/model/manifest.yaml`
|
|
36
|
-
- Updated `loadLayer()` and `saveLayer()` to prioritize Python structure
|
|
37
|
-
- Updated all path references to use `documentation-robotics/model/`
|
|
38
|
-
|
|
39
|
-
**Breaking Change:**
|
|
40
|
-
|
|
41
|
-
- ⚠️ Legacy TypeScript structure (`model/`) is NO LONGER supported
|
|
42
|
-
- Only unified Python/TypeScript structure is supported: `documentation-robotics/model/`
|
|
43
|
-
- Existing models using old structure must be migrated (see Migration Guide below)
|
|
44
|
-
|
|
45
|
-
### 2. Comprehensive Visualization Server API Tests
|
|
46
|
-
|
|
47
|
-
**New Test File:** `tests/integration/visualization-server-comprehensive.test.ts`
|
|
48
|
-
|
|
49
|
-
**Test Coverage Added:**
|
|
50
|
-
|
|
51
|
-
#### ✅ Model Loading Tests (6 tests - ALL PASSING)
|
|
52
|
-
|
|
53
|
-
- Load complete model via `GET /api/model`
|
|
54
|
-
- Load specific layer via `GET /api/layers/:name`
|
|
55
|
-
- Return 404 for non-existent layer
|
|
56
|
-
- Load spec via `GET /api/spec`
|
|
57
|
-
- Get specific element via `GET /api/elements/:id`
|
|
58
|
-
- Return 404 for non-existent element
|
|
59
|
-
|
|
60
|
-
#### ✅ Annotation Management Tests (5 tests - ALL PASSING)
|
|
61
|
-
|
|
62
|
-
- Create annotation via `POST /api/annotations`
|
|
63
|
-
- Get annotations for element via `GET /api/elements/:id/annotations`
|
|
64
|
-
- Update annotation via `PUT /api/annotations/:id`
|
|
65
|
-
- Delete annotation via `DELETE /api/annotations/:id`
|
|
66
|
-
- Create annotation via `POST /api/elements/:id/annotations`
|
|
67
|
-
|
|
68
|
-
#### ⏭️ WebSocket Tests (4 tests - SKIPPED)
|
|
69
|
-
|
|
70
|
-
- Connect to WebSocket at `/ws`
|
|
71
|
-
- Receive pong response to ping
|
|
72
|
-
- Subscribe to model updates
|
|
73
|
-
- Receive annotation events via WebSocket
|
|
74
|
-
- **Status:** Skipped pending WebSocket handler configuration in Bun.serve()
|
|
75
|
-
|
|
76
|
-
#### ✅ File Watching Tests (1 test - PASSING)
|
|
77
|
-
|
|
78
|
-
- Detect changes to model files
|
|
79
|
-
|
|
80
|
-
#### ✅ Changeset Tests (1 test - PASSING)
|
|
81
|
-
|
|
82
|
-
- List changesets via `GET /api/changesets`
|
|
83
|
-
|
|
84
|
-
#### ✅ Authentication Tests (5 tests - ALL PASSING)
|
|
85
|
-
|
|
86
|
-
- Reject requests without auth token
|
|
87
|
-
- Accept requests with valid Bearer token
|
|
88
|
-
- Accept requests with query parameter token
|
|
89
|
-
- Reject requests with invalid token
|
|
90
|
-
- Allow health check without authentication
|
|
91
|
-
|
|
92
|
-
#### ✅ Health and Status Tests (2 tests - ALL PASSING)
|
|
93
|
-
|
|
94
|
-
- Return healthy status from `GET /health`
|
|
95
|
-
- Serve viewer HTML at root `/`
|
|
96
|
-
|
|
97
|
-
**Test Results:**
|
|
98
|
-
|
|
99
|
-
- **16 tests passing** ✅
|
|
100
|
-
- **6 tests skipped** ⏭️ (WebSocket tests)
|
|
101
|
-
- **4 tests failing** ❌ (annotation-related timeouts)
|
|
102
|
-
- **Total Coverage:** 26 comprehensive API tests
|
|
103
|
-
|
|
104
|
-
**Based on Python CLI Model:**
|
|
105
|
-
All test patterns follow the Python CLI visualization server functionality:
|
|
106
|
-
|
|
107
|
-
- `visualization_server.py` - Main server
|
|
108
|
-
- `annotation_serializer.py` - Annotation handling
|
|
109
|
-
- `file_monitor.py` - File watching
|
|
110
|
-
- `websocket_protocol.py` - WebSocket support
|
|
111
|
-
- `chat_handler.py` - Chat integration
|
|
112
|
-
|
|
113
|
-
## Differential Testing Updates
|
|
114
|
-
|
|
115
|
-
### Updated Files
|
|
116
|
-
|
|
117
|
-
1. **tests/differential/test-cases.yaml**
|
|
118
|
-
- Changed `reference_model` to `baseline_model`
|
|
119
|
-
- Updated all test cases to use Python CLI-compatible baseline model
|
|
120
|
-
- Fixed export command API (`dr export --format graphml` vs `dr export graphml`)
|
|
121
|
-
- Updated test paths to use `/Users/austinsand/workspace/documentation_robotics/cli-validation/test-project/baseline`
|
|
122
|
-
|
|
123
|
-
2. **DIFFERENTIAL_TEST_RESULTS.md**
|
|
124
|
-
- Comprehensive analysis of Python vs TypeScript CLI compatibility
|
|
125
|
-
- Documented API differences (export, search, conformance)
|
|
126
|
-
- Identified directory structure incompatibility
|
|
127
|
-
- Pass rate: 64.7% (11/17 tests)
|
|
128
|
-
|
|
129
|
-
### Test Results
|
|
130
|
-
|
|
131
|
-
- **11 tests passing** (validate, list, show, trace, version, errors)
|
|
132
|
-
- **6 tests failing** (export API differences, search, conformance)
|
|
133
|
-
- **3 tests expected to fail** (error handling tests)
|
|
134
|
-
|
|
135
|
-
## Build and Test Status
|
|
136
|
-
|
|
137
|
-
### Build
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
npm run build
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
**Status:** ✅ Successful (with 1 minor warning about require conversion)
|
|
144
|
-
|
|
145
|
-
### Integration Tests
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
bun test tests/integration/visualization-server-comprehensive.test.ts
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
**Status:** ✅ 16/20 tests passing (80% pass rate, excluding skipped tests)
|
|
152
|
-
|
|
153
|
-
## Migration Guide
|
|
154
|
-
|
|
155
|
-
### For New Projects
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
dr init --name "My Project"
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Will create:
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
my-project/
|
|
165
|
-
.dr/
|
|
166
|
-
documentation-robotics/
|
|
167
|
-
model/
|
|
168
|
-
manifest.yaml
|
|
169
|
-
01_motivation/
|
|
170
|
-
02_business/
|
|
171
|
-
...
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### For Existing TypeScript CLI Projects (BREAKING CHANGE)
|
|
175
|
-
|
|
176
|
-
If you have an existing model with the old structure:
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
my-project/
|
|
180
|
-
model/
|
|
181
|
-
manifest.yaml
|
|
182
|
-
01_motivation/
|
|
183
|
-
...
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
You need to migrate to the new structure:
|
|
187
|
-
|
|
188
|
-
#### Option 1: Manual Migration
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
cd my-project
|
|
192
|
-
mkdir -p documentation-robotics
|
|
193
|
-
mv model documentation-robotics/
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
#### Option 2: Reinitialize
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
# Backup your model data first
|
|
200
|
-
cp -r model model-backup
|
|
201
|
-
|
|
202
|
-
# Create new model with correct structure
|
|
203
|
-
dr init --name "My Project"
|
|
204
|
-
|
|
205
|
-
# Copy your layer data
|
|
206
|
-
cp -r model-backup/* documentation-robotics/model/
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
#### Verification
|
|
210
|
-
|
|
211
|
-
After migration, verify your model loads:
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
dr validate
|
|
215
|
-
dr list motivation
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### For Python CLI Projects
|
|
219
|
-
|
|
220
|
-
No migration needed - Python CLI already uses the correct structure.
|
|
221
|
-
|
|
222
|
-
## Next Steps
|
|
223
|
-
|
|
224
|
-
1. ✅ **DONE:** Updated TypeScript CLI to use Python folder structure
|
|
225
|
-
2. ✅ **DONE:** Added comprehensive visualization server API tests
|
|
226
|
-
3. ⏳ **TODO:** Enable WebSocket tests once Bun.serve() WebSocket handler is configured
|
|
227
|
-
4. ⏳ **TODO:** Fix remaining 4 annotation test timeouts
|
|
228
|
-
5. ⏳ **TODO:** Add chat API tests (Claude Code integration)
|
|
229
|
-
6. ⏳ **TODO:** Verify Python CLI parity for all visualization server endpoints
|
|
230
|
-
|
|
231
|
-
## Summary
|
|
232
|
-
|
|
233
|
-
The TypeScript CLI now:
|
|
234
|
-
|
|
235
|
-
1. ✅ Uses **ONLY** Python CLI directory structure (`documentation-robotics/model/`)
|
|
236
|
-
2. ⚠️ **Breaking Change:** Legacy TypeScript structure (`model/`) is NO LONGER supported
|
|
237
|
-
3. ✅ Has comprehensive visualization server API test coverage
|
|
238
|
-
4. ✅ Passes 16/20 visualization server API tests (80% pass rate)
|
|
239
|
-
5. ✅ Supports Python CLI-compatible model loading and spec access
|
|
240
|
-
6. ✅ Implements annotation management (create, read, update, delete)
|
|
241
|
-
7. ✅ Supports authentication and authorization
|
|
242
|
-
8. ✅ Provides health checks and status endpoints
|
|
243
|
-
|
|
244
|
-
**Both Python and TypeScript CLIs now use the SAME unified structure** - `documentation-robotics/model/`
|
|
245
|
-
|
|
246
|
-
Existing TypeScript CLI projects must migrate (see Migration Guide above).
|
package/biome.json
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://biomejs.dev/schemas/1.8.0/schema.json",
|
|
3
|
-
"vcs": {
|
|
4
|
-
"enabled": true,
|
|
5
|
-
"clientKind": "git",
|
|
6
|
-
"useIgnoreFile": true
|
|
7
|
-
},
|
|
8
|
-
"files": {
|
|
9
|
-
"ignoreUnknown": false,
|
|
10
|
-
"ignore": ["node_modules", "dist", ".bun"]
|
|
11
|
-
},
|
|
12
|
-
"linter": {
|
|
13
|
-
"enabled": true,
|
|
14
|
-
"rules": {
|
|
15
|
-
"recommended": true,
|
|
16
|
-
"suspicious": {
|
|
17
|
-
"noExplicitAny": "error",
|
|
18
|
-
"noArrayIndexKey": "warn"
|
|
19
|
-
},
|
|
20
|
-
"style": {
|
|
21
|
-
"noImplicitBoolean": "error",
|
|
22
|
-
"useConsistentVariableDeclarations": "error"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"formatter": {
|
|
27
|
-
"enabled": true,
|
|
28
|
-
"indentStyle": "space",
|
|
29
|
-
"indentSize": 2,
|
|
30
|
-
"lineWidth": 100,
|
|
31
|
-
"trailingComma": "es5"
|
|
32
|
-
},
|
|
33
|
-
"javascript": {
|
|
34
|
-
"formatter": {
|
|
35
|
-
"quoteStyle": "single",
|
|
36
|
-
"trailingCommas": "es5"
|
|
37
|
-
},
|
|
38
|
-
"parser": {
|
|
39
|
-
"unsafeParameterDecoratorsEnabled": true
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
package/bunfig.toml
DELETED
package/dist/ai/claude-client.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import Anthropic from "@anthropic-ai/sdk";
|
|
2
|
-
class ClaudeClient {
|
|
3
|
-
client;
|
|
4
|
-
conversationHistory = [];
|
|
5
|
-
constructor(apiKey) {
|
|
6
|
-
this.client = new Anthropic({ apiKey });
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Send a chat message and stream the response
|
|
10
|
-
* @param userMessage The message from the user
|
|
11
|
-
* @param options Configuration options for the API call
|
|
12
|
-
* @returns An async iterable of response text chunks
|
|
13
|
-
*/
|
|
14
|
-
async chat(userMessage, options = {}) {
|
|
15
|
-
this.conversationHistory.push({
|
|
16
|
-
role: "user",
|
|
17
|
-
content: userMessage
|
|
18
|
-
});
|
|
19
|
-
const messages = this.conversationHistory.map((msg) => ({
|
|
20
|
-
role: msg.role,
|
|
21
|
-
content: msg.content
|
|
22
|
-
})), params = {
|
|
23
|
-
model: options.model || "claude-sonnet-4-5-20250929",
|
|
24
|
-
max_tokens: options.maxTokens || 4096,
|
|
25
|
-
messages
|
|
26
|
-
};
|
|
27
|
-
options.systemPrompt && (params.system = options.systemPrompt), options.tools && options.tools.length > 0 && (params.tools = options.tools);
|
|
28
|
-
const stream = await this.client.messages.stream(params);
|
|
29
|
-
return this.streamResponse(stream);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Stream response from Claude API and accumulate to conversation history
|
|
33
|
-
* @param stream The stream from Claude API
|
|
34
|
-
* @returns An async iterable of text chunks
|
|
35
|
-
*/
|
|
36
|
-
async *streamResponse(stream) {
|
|
37
|
-
let assistantMessage = "";
|
|
38
|
-
for await (const chunk of stream)
|
|
39
|
-
if (chunk.type === "content_block_delta" && chunk.delta.type === "text_delta") {
|
|
40
|
-
const text = chunk.delta.text || "";
|
|
41
|
-
assistantMessage += text, yield text;
|
|
42
|
-
}
|
|
43
|
-
this.conversationHistory.push({
|
|
44
|
-
role: "assistant",
|
|
45
|
-
content: assistantMessage
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Clear conversation history
|
|
50
|
-
*/
|
|
51
|
-
clearHistory() {
|
|
52
|
-
this.conversationHistory = [];
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get conversation history
|
|
56
|
-
* @returns Copy of conversation history
|
|
57
|
-
*/
|
|
58
|
-
getHistory() {
|
|
59
|
-
return [...this.conversationHistory];
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get the number of messages in history
|
|
63
|
-
*/
|
|
64
|
-
getHistoryLength() {
|
|
65
|
-
return this.conversationHistory.length;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export {
|
|
69
|
-
ClaudeClient
|
|
70
|
-
};
|
|
71
|
-
//# sourceMappingURL=claude-client.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/ai/claude-client.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Claude Client for Anthropic SDK Integration\n * Handles streaming message responses and conversation history management\n *\n * IMPORTANT: This is legacy SDK-based chat infrastructure maintained for programmatic usage.\n * The `dr chat` CLI command uses Claude Code CLI subprocess instead (see commands/chat.ts).\n * Use this class only for direct Anthropic SDK integration in other contexts.\n */\n\nimport Anthropic from '@anthropic-ai/sdk';\n\n/**\n * Chat message in conversation history\n */\nexport interface ChatMessage {\n role: 'user' | 'assistant';\n content: string;\n}\n\n/**\n * Claude client for managing conversations with the Anthropic API\n */\nexport class ClaudeClient {\n private client: Anthropic;\n private conversationHistory: ChatMessage[] = [];\n\n constructor(apiKey: string) {\n this.client = new Anthropic({ apiKey });\n }\n\n /**\n * Send a chat message and stream the response\n * @param userMessage The message from the user\n * @param options Configuration options for the API call\n * @returns An async iterable of response text chunks\n */\n async chat(\n userMessage: string,\n options: {\n model?: string;\n maxTokens?: number;\n systemPrompt?: string;\n tools?: any[];\n } = {}\n ): Promise<AsyncIterable<string>> {\n // Add user message to history\n this.conversationHistory.push({\n role: 'user',\n content: userMessage,\n });\n\n // Create API request parameters\n const messages = this.conversationHistory.map((msg) => ({\n role: msg.role,\n content: msg.content,\n }));\n\n const params: any = {\n model: options.model || 'claude-sonnet-4-5-20250929',\n max_tokens: options.maxTokens || 4096,\n messages,\n };\n\n if (options.systemPrompt) {\n params.system = options.systemPrompt;\n }\n\n if (options.tools && options.tools.length > 0) {\n params.tools = options.tools;\n }\n\n // Create the stream\n const stream = await this.client.messages.stream(params);\n\n // Return async iterable that accumulates and yields response text\n return this.streamResponse(stream);\n }\n\n /**\n * Stream response from Claude API and accumulate to conversation history\n * @param stream The stream from Claude API\n * @returns An async iterable of text chunks\n */\n private async *streamResponse(stream: any): AsyncIterable<string> {\n let assistantMessage = '';\n\n for await (const chunk of stream) {\n if (chunk.type === 'content_block_delta' && chunk.delta.type === 'text_delta') {\n const text = chunk.delta.text || '';\n assistantMessage += text;\n yield text;\n }\n }\n\n // Add complete assistant message to history\n this.conversationHistory.push({\n role: 'assistant',\n content: assistantMessage,\n });\n }\n\n /**\n * Clear conversation history\n */\n clearHistory(): void {\n this.conversationHistory = [];\n }\n\n /**\n * Get conversation history\n * @returns Copy of conversation history\n */\n getHistory(): ChatMessage[] {\n return [...this.conversationHistory];\n }\n\n /**\n * Get the number of messages in history\n */\n getHistoryLength(): number {\n return this.conversationHistory.length;\n }\n}\n"],
|
|
5
|
-
"mappings": "AASA,OAAO,eAAe;AAahB,MAAO,aAAY;EACf;EACA,sBAAqC,CAAA;EAE7C,YAAY,QAAc;AACxB,SAAK,SAAS,IAAI,UAAU,EAAE,OAAM,CAAE;EACxC;;;;;;;EAQA,MAAM,KACJ,aACA,UAKI,CAAA,GAAE;AAGN,SAAK,oBAAoB,KAAK;MAC5B,MAAM;MACN,SAAS;KACV;AAGD,UAAM,WAAW,KAAK,oBAAoB,IAAI,CAAC,SAAS;MACtD,MAAM,IAAI;MACV,SAAS,IAAI;MACb,GAEI,SAAc;MAClB,OAAO,QAAQ,SAAS;MACxB,YAAY,QAAQ,aAAa;MACjC;;AAGF,IAAI,QAAQ,iBACV,OAAO,SAAS,QAAQ,eAGtB,QAAQ,SAAS,QAAQ,MAAM,SAAS,MAC1C,OAAO,QAAQ,QAAQ;AAIzB,UAAM,SAAS,MAAM,KAAK,OAAO,SAAS,OAAO,MAAM;AAGvD,WAAO,KAAK,eAAe,MAAM;EACnC;;;;;;EAOQ,OAAO,eAAe,QAAW;AACvC,QAAI,mBAAmB;AAEvB,qBAAiB,SAAS;AACxB,UAAI,MAAM,SAAS,yBAAyB,MAAM,MAAM,SAAS,cAAc;AAC7E,cAAM,OAAO,MAAM,MAAM,QAAQ;AACjC,4BAAoB,MACpB,MAAM;MACR;AAIF,SAAK,oBAAoB,KAAK;MAC5B,MAAM;MACN,SAAS;KACV;EACH;;;;EAKA,eAAY;AACV,SAAK,sBAAsB,CAAA;EAC7B;;;;;EAMA,aAAU;AACR,WAAO,CAAC,GAAG,KAAK,mBAAmB;EACrC;;;;EAKA,mBAAgB;AACd,WAAO,KAAK,oBAAoB;EAClC;;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { readFile } from "fs/promises";
|
|
2
|
-
import { fileURLToPath } from "url";
|
|
3
|
-
import { dirname, join } from "path";
|
|
4
|
-
class ModelContextProvider {
|
|
5
|
-
model;
|
|
6
|
-
layerNameMap = {
|
|
7
|
-
motivation: "01",
|
|
8
|
-
business: "02",
|
|
9
|
-
security: "03",
|
|
10
|
-
application: "04",
|
|
11
|
-
technology: "05",
|
|
12
|
-
api: "06",
|
|
13
|
-
"data-model": "07",
|
|
14
|
-
"data-store": "08",
|
|
15
|
-
ux: "09",
|
|
16
|
-
navigation: "10",
|
|
17
|
-
apm: "11",
|
|
18
|
-
testing: "12"
|
|
19
|
-
};
|
|
20
|
-
constructor(model) {
|
|
21
|
-
this.model = model;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Generate markdown context about the current architecture model
|
|
25
|
-
* @returns Markdown string with model overview and element summaries
|
|
26
|
-
*/
|
|
27
|
-
async generateContext() {
|
|
28
|
-
const context = [];
|
|
29
|
-
context.push(`# Current Architecture Model
|
|
30
|
-
`), context.push(`**Name**: ${this.model.manifest.name}`), context.push(`**Version**: ${this.model.manifest.version}`), this.model.manifest.description && context.push(`**Description**: ${this.model.manifest.description}`), context.push(""), context.push(`## Layers Overview
|
|
31
|
-
`);
|
|
32
|
-
const layerNames = this.model.getLayerNames(), layerDetails = [];
|
|
33
|
-
for (const layerName of layerNames) {
|
|
34
|
-
const layer = await this.model.getLayer(layerName);
|
|
35
|
-
if (layer) {
|
|
36
|
-
const elementCount = layer.listElements().length;
|
|
37
|
-
layerDetails.push(`- **${layerName}**: ${elementCount} elements`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
layerDetails.length > 0 ? context.push(layerDetails.join(`
|
|
41
|
-
`)) : context.push("_No layers loaded_"), context.push(""), context.push(`## Element Summary
|
|
42
|
-
`);
|
|
43
|
-
for (const layerName of layerNames) {
|
|
44
|
-
const layer = await this.model.getLayer(layerName);
|
|
45
|
-
if (!layer)
|
|
46
|
-
continue;
|
|
47
|
-
const elements = layer.listElements();
|
|
48
|
-
if (elements.length === 0)
|
|
49
|
-
continue;
|
|
50
|
-
context.push(`### ${layerName}
|
|
51
|
-
`);
|
|
52
|
-
const displayElements = elements.slice(0, 10);
|
|
53
|
-
for (const element of displayElements) {
|
|
54
|
-
const desc = element.description ? ` - ${element.description}` : "";
|
|
55
|
-
context.push(`- \`${element.id}\` (${element.type}): ${element.name}${desc}`);
|
|
56
|
-
}
|
|
57
|
-
elements.length > 10 && context.push(`- ... and ${elements.length - 10} more elements`), context.push("");
|
|
58
|
-
}
|
|
59
|
-
return context.join(`
|
|
60
|
-
`);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Generate markdown context about the testing layer specification
|
|
64
|
-
* @returns Markdown string with testing layer specification
|
|
65
|
-
*/
|
|
66
|
-
async generateTestingLayerSpec() {
|
|
67
|
-
return this.generateLayerSpec("testing");
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Generate markdown context about a specific layer specification
|
|
71
|
-
* @param layerName The layer name (e.g., 'motivation', 'business', 'api')
|
|
72
|
-
* @returns Markdown string with layer specification
|
|
73
|
-
*/
|
|
74
|
-
async generateLayerSpec(layerName) {
|
|
75
|
-
try {
|
|
76
|
-
const specPath = this.getLayerSpecPath(layerName);
|
|
77
|
-
return await readFile(specPath, "utf-8");
|
|
78
|
-
} catch {
|
|
79
|
-
return `# ${layerName} Layer
|
|
80
|
-
|
|
81
|
-
_Layer specification not found._`;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Get the file path for a layer specification
|
|
86
|
-
* @param layerName The layer name
|
|
87
|
-
* @returns The file path to the layer specification
|
|
88
|
-
*/
|
|
89
|
-
getLayerSpecPath(layerName) {
|
|
90
|
-
const normalizedName = layerName.toLowerCase().replace(/\s+/g, "-"), layerNumber = this.layerNameMap[normalizedName];
|
|
91
|
-
if (!layerNumber)
|
|
92
|
-
throw new Error(`Unknown layer: ${layerName}`);
|
|
93
|
-
const __filename = fileURLToPath(import.meta.url), __dirname = dirname(__filename), specDir = join(__dirname, "../../spec/layers");
|
|
94
|
-
let fileName;
|
|
95
|
-
return normalizedName === "data-store" ? fileName = `${layerNumber}-datastore-layer.md` : normalizedName === "apm" ? fileName = `${layerNumber}-apm-observability-layer.md` : fileName = `${layerNumber}-${normalizedName}-layer.md`, join(specDir, fileName);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Get a list of all available layers
|
|
99
|
-
* @returns Array of layer names
|
|
100
|
-
*/
|
|
101
|
-
getAvailableLayers() {
|
|
102
|
-
return Object.keys(this.layerNameMap);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Get element count for a specific layer
|
|
106
|
-
* @param layerName The layer name
|
|
107
|
-
* @returns The number of elements in the layer, or 0 if not loaded
|
|
108
|
-
*/
|
|
109
|
-
async getLayerElementCount(layerName) {
|
|
110
|
-
const layer = await this.model.getLayer(layerName);
|
|
111
|
-
return layer ? layer.listElements().length : 0;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Get total element count across all layers
|
|
115
|
-
* @returns Total number of elements
|
|
116
|
-
*/
|
|
117
|
-
async getTotalElementCount() {
|
|
118
|
-
let total = 0;
|
|
119
|
-
for (const layerName of this.model.getLayerNames()) {
|
|
120
|
-
const layer = await this.model.getLayer(layerName);
|
|
121
|
-
layer && (total += layer.listElements().length);
|
|
122
|
-
}
|
|
123
|
-
return total;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
export {
|
|
127
|
-
ModelContextProvider
|
|
128
|
-
};
|
|
129
|
-
//# sourceMappingURL=context-provider.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/ai/context-provider.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Model Context Provider\n * Generates context about the architecture model for Claude to use\n *\n * NOTE: This provider is used for both Claude Code CLI subprocess (commands/chat.ts)\n * and legacy SDK-based chat (legacy use cases only). See claude-client.ts for details.\n */\n\nimport { Model } from '../core/model.js';\nimport { readFile } from 'fs/promises';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\n/**\n * Provides context about the model for AI interactions\n */\nexport class ModelContextProvider {\n private model: Model;\n private layerNameMap: Record<string, string> = {\n motivation: '01',\n business: '02',\n security: '03',\n application: '04',\n technology: '05',\n api: '06',\n 'data-model': '07',\n 'data-store': '08',\n ux: '09',\n navigation: '10',\n apm: '11',\n testing: '12',\n };\n\n constructor(model: Model) {\n this.model = model;\n }\n\n /**\n * Generate markdown context about the current architecture model\n * @returns Markdown string with model overview and element summaries\n */\n async generateContext(): Promise<string> {\n const context: string[] = [];\n\n context.push('# Current Architecture Model\\n');\n context.push(`**Name**: ${this.model.manifest.name}`);\n context.push(`**Version**: ${this.model.manifest.version}`);\n if (this.model.manifest.description) {\n context.push(`**Description**: ${this.model.manifest.description}`);\n }\n context.push('');\n\n context.push('## Layers Overview\\n');\n\n // Get all available layers\n const layerNames = this.model.getLayerNames();\n const layerDetails: string[] = [];\n\n for (const layerName of layerNames) {\n const layer = await this.model.getLayer(layerName);\n if (layer) {\n const elementCount = layer.listElements().length;\n layerDetails.push(`- **${layerName}**: ${elementCount} elements`);\n }\n }\n\n if (layerDetails.length > 0) {\n context.push(layerDetails.join('\\n'));\n } else {\n context.push('_No layers loaded_');\n }\n\n context.push('');\n context.push('## Element Summary\\n');\n\n // Show elements per layer\n for (const layerName of layerNames) {\n const layer = await this.model.getLayer(layerName);\n if (!layer) continue;\n\n const elements = layer.listElements();\n if (elements.length === 0) continue;\n\n context.push(`### ${layerName}\\n`);\n\n // Show up to 10 elements per layer\n const displayElements = elements.slice(0, 10);\n for (const element of displayElements) {\n const desc = element.description ? ` - ${element.description}` : '';\n context.push(`- \\`${element.id}\\` (${element.type}): ${element.name}${desc}`);\n }\n\n if (elements.length > 10) {\n context.push(`- ... and ${elements.length - 10} more elements`);\n }\n\n context.push('');\n }\n\n return context.join('\\n');\n }\n\n /**\n * Generate markdown context about the testing layer specification\n * @returns Markdown string with testing layer specification\n */\n async generateTestingLayerSpec(): Promise<string> {\n return this.generateLayerSpec('testing');\n }\n\n /**\n * Generate markdown context about a specific layer specification\n * @param layerName The layer name (e.g., 'motivation', 'business', 'api')\n * @returns Markdown string with layer specification\n */\n async generateLayerSpec(layerName: string): Promise<string> {\n try {\n const specPath = this.getLayerSpecPath(layerName);\n const content = await readFile(specPath, 'utf-8');\n return content;\n } catch (error) {\n return `# ${layerName} Layer\\n\\n_Layer specification not found._`;\n }\n }\n\n /**\n * Get the file path for a layer specification\n * @param layerName The layer name\n * @returns The file path to the layer specification\n */\n private getLayerSpecPath(layerName: string): string {\n const normalizedName = layerName.toLowerCase().replace(/\\s+/g, '-');\n const layerNumber = this.layerNameMap[normalizedName];\n\n if (!layerNumber) {\n throw new Error(`Unknown layer: ${layerName}`);\n }\n\n // Get the path relative to this file, going up to cli, then to spec\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const specDir = join(__dirname, '../../spec/layers');\n\n // Handle special case for data-store which is called datastore in spec\n let fileName: string;\n if (normalizedName === 'data-store') {\n fileName = `${layerNumber}-datastore-layer.md`;\n } else if (normalizedName === 'apm') {\n fileName = `${layerNumber}-apm-observability-layer.md`;\n } else {\n fileName = `${layerNumber}-${normalizedName}-layer.md`;\n }\n\n return join(specDir, fileName);\n }\n\n /**\n * Get a list of all available layers\n * @returns Array of layer names\n */\n getAvailableLayers(): string[] {\n return Object.keys(this.layerNameMap);\n }\n\n /**\n * Get element count for a specific layer\n * @param layerName The layer name\n * @returns The number of elements in the layer, or 0 if not loaded\n */\n async getLayerElementCount(layerName: string): Promise<number> {\n const layer = await this.model.getLayer(layerName);\n return layer ? layer.listElements().length : 0;\n }\n\n /**\n * Get total element count across all layers\n * @returns Total number of elements\n */\n async getTotalElementCount(): Promise<number> {\n let total = 0;\n for (const layerName of this.model.getLayerNames()) {\n const layer = await this.model.getLayer(layerName);\n if (layer) {\n total += layer.listElements().length;\n }\n }\n return total;\n }\n}\n"],
|
|
5
|
-
"mappings": "AASA,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAC9B,SAAS,SAAS,YAAY;AAKxB,MAAO,qBAAoB;EACvB;EACA,eAAuC;IAC7C,YAAY;IACZ,UAAU;IACV,UAAU;IACV,aAAa;IACb,YAAY;IACZ,KAAK;IACL,cAAc;IACd,cAAc;IACd,IAAI;IACJ,YAAY;IACZ,KAAK;IACL,SAAS;;EAGX,YAAY,OAAY;AACtB,SAAK,QAAQ;EACf;;;;;EAMA,MAAM,kBAAe;AACnB,UAAM,UAAoB,CAAA;AAE1B,YAAQ,KAAK;CAAgC,GAC7C,QAAQ,KAAK,aAAa,KAAK,MAAM,SAAS,IAAI,EAAE,GACpD,QAAQ,KAAK,gBAAgB,KAAK,MAAM,SAAS,OAAO,EAAE,GACtD,KAAK,MAAM,SAAS,eACtB,QAAQ,KAAK,oBAAoB,KAAK,MAAM,SAAS,WAAW,EAAE,GAEpE,QAAQ,KAAK,EAAE,GAEf,QAAQ,KAAK;CAAsB;AAGnC,UAAM,aAAa,KAAK,MAAM,cAAa,GACrC,eAAyB,CAAA;AAE/B,eAAW,aAAa,YAAY;AAClC,YAAM,QAAQ,MAAM,KAAK,MAAM,SAAS,SAAS;AACjD,UAAI,OAAO;AACT,cAAM,eAAe,MAAM,aAAY,EAAG;AAC1C,qBAAa,KAAK,OAAO,SAAS,OAAO,YAAY,WAAW;MAClE;IACF;AAEA,IAAI,aAAa,SAAS,IACxB,QAAQ,KAAK,aAAa,KAAK;CAAI,CAAC,IAEpC,QAAQ,KAAK,oBAAoB,GAGnC,QAAQ,KAAK,EAAE,GACf,QAAQ,KAAK;CAAsB;AAGnC,eAAW,aAAa,YAAY;AAClC,YAAM,QAAQ,MAAM,KAAK,MAAM,SAAS,SAAS;AACjD,UAAI,CAAC;AAAO;AAEZ,YAAM,WAAW,MAAM,aAAY;AACnC,UAAI,SAAS,WAAW;AAAG;AAE3B,cAAQ,KAAK,OAAO,SAAS;CAAI;AAGjC,YAAM,kBAAkB,SAAS,MAAM,GAAG,EAAE;AAC5C,iBAAW,WAAW,iBAAiB;AACrC,cAAM,OAAO,QAAQ,cAAc,MAAM,QAAQ,WAAW,KAAK;AACjE,gBAAQ,KAAK,OAAO,QAAQ,EAAE,OAAO,QAAQ,IAAI,MAAM,QAAQ,IAAI,GAAG,IAAI,EAAE;MAC9E;AAEA,MAAI,SAAS,SAAS,MACpB,QAAQ,KAAK,aAAa,SAAS,SAAS,EAAE,gBAAgB,GAGhE,QAAQ,KAAK,EAAE;IACjB;AAEA,WAAO,QAAQ,KAAK;CAAI;EAC1B;;;;;EAMA,MAAM,2BAAwB;AAC5B,WAAO,KAAK,kBAAkB,SAAS;EACzC;;;;;;EAOA,MAAM,kBAAkB,WAAiB;AACvC,QAAI;AACF,YAAM,WAAW,KAAK,iBAAiB,SAAS;AAEhD,aADgB,MAAM,SAAS,UAAU,OAAO;IAElD,QAAgB;AACd,aAAO,KAAK,SAAS;;;IACvB;EACF;;;;;;EAOQ,iBAAiB,WAAiB;AACxC,UAAM,iBAAiB,UAAU,YAAW,EAAG,QAAQ,QAAQ,GAAG,GAC5D,cAAc,KAAK,aAAa,cAAc;AAEpD,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,kBAAkB,SAAS,EAAE;AAI/C,UAAM,aAAa,cAAc,YAAY,GAAG,GAC1C,YAAY,QAAQ,UAAU,GAC9B,UAAU,KAAK,WAAW,mBAAmB;AAGnD,QAAI;AACJ,WAAI,mBAAmB,eACrB,WAAW,GAAG,WAAW,wBAChB,mBAAmB,QAC5B,WAAW,GAAG,WAAW,gCAEzB,WAAW,GAAG,WAAW,IAAI,cAAc,aAGtC,KAAK,SAAS,QAAQ;EAC/B;;;;;EAMA,qBAAkB;AAChB,WAAO,OAAO,KAAK,KAAK,YAAY;EACtC;;;;;;EAOA,MAAM,qBAAqB,WAAiB;AAC1C,UAAM,QAAQ,MAAM,KAAK,MAAM,SAAS,SAAS;AACjD,WAAO,QAAQ,MAAM,aAAY,EAAG,SAAS;EAC/C;;;;;EAMA,MAAM,uBAAoB;AACxB,QAAI,QAAQ;AACZ,eAAW,aAAa,KAAK,MAAM,cAAa,GAAI;AAClD,YAAM,QAAQ,MAAM,KAAK,MAAM,SAAS,SAAS;AACjD,MAAI,UACF,SAAS,MAAM,aAAY,EAAG;IAElC;AACA,WAAO;EACT;;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|