opencode-telos 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +927 -0
- package/dist/code-intelligence/analyzer.d.ts +9 -0
- package/dist/code-intelligence/analyzer.d.ts.map +1 -0
- package/dist/code-intelligence/analyzer.js +321 -0
- package/dist/code-intelligence/analyzer.js.map +1 -0
- package/dist/code-intelligence/ast/cache.d.ts +16 -0
- package/dist/code-intelligence/ast/cache.d.ts.map +1 -0
- package/dist/code-intelligence/ast/cache.js +44 -0
- package/dist/code-intelligence/ast/cache.js.map +1 -0
- package/dist/code-intelligence/ast/common.d.ts +8 -0
- package/dist/code-intelligence/ast/common.d.ts.map +1 -0
- package/dist/code-intelligence/ast/common.js +42 -0
- package/dist/code-intelligence/ast/common.js.map +1 -0
- package/dist/code-intelligence/ast/component.d.ts +10 -0
- package/dist/code-intelligence/ast/component.d.ts.map +1 -0
- package/dist/code-intelligence/ast/component.js +38 -0
- package/dist/code-intelligence/ast/component.js.map +1 -0
- package/dist/code-intelligence/ast/fallback.d.ts +9 -0
- package/dist/code-intelligence/ast/fallback.d.ts.map +1 -0
- package/dist/code-intelligence/ast/fallback.js +38 -0
- package/dist/code-intelligence/ast/fallback.js.map +1 -0
- package/dist/code-intelligence/ast/index.d.ts +5 -0
- package/dist/code-intelligence/ast/index.d.ts.map +1 -0
- package/dist/code-intelligence/ast/index.js +5 -0
- package/dist/code-intelligence/ast/index.js.map +1 -0
- package/dist/code-intelligence/ast/ir.d.ts +72 -0
- package/dist/code-intelligence/ast/ir.d.ts.map +1 -0
- package/dist/code-intelligence/ast/ir.js +2 -0
- package/dist/code-intelligence/ast/ir.js.map +1 -0
- package/dist/code-intelligence/ast/metrics.d.ts +25 -0
- package/dist/code-intelligence/ast/metrics.d.ts.map +1 -0
- package/dist/code-intelligence/ast/metrics.js +38 -0
- package/dist/code-intelligence/ast/metrics.js.map +1 -0
- package/dist/code-intelligence/ast/registry.d.ts +5 -0
- package/dist/code-intelligence/ast/registry.d.ts.map +1 -0
- package/dist/code-intelligence/ast/registry.js +22 -0
- package/dist/code-intelligence/ast/registry.js.map +1 -0
- package/dist/code-intelligence/ast/tree-sitter.d.ts +8 -0
- package/dist/code-intelligence/ast/tree-sitter.d.ts.map +1 -0
- package/dist/code-intelligence/ast/tree-sitter.js +247 -0
- package/dist/code-intelligence/ast/tree-sitter.js.map +1 -0
- package/dist/code-intelligence/ast/typescript.d.ts +8 -0
- package/dist/code-intelligence/ast/typescript.d.ts.map +1 -0
- package/dist/code-intelligence/ast/typescript.js +147 -0
- package/dist/code-intelligence/ast/typescript.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +27 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +67 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/opencode/hooks.d.ts +9 -0
- package/dist/opencode/hooks.d.ts.map +1 -0
- package/dist/opencode/hooks.js +583 -0
- package/dist/opencode/hooks.js.map +1 -0
- package/dist/opencode/router/categories.d.ts +31 -0
- package/dist/opencode/router/categories.d.ts.map +1 -0
- package/dist/opencode/router/categories.js +165 -0
- package/dist/opencode/router/categories.js.map +1 -0
- package/dist/opencode/router/embeddings.d.ts +41 -0
- package/dist/opencode/router/embeddings.d.ts.map +1 -0
- package/dist/opencode/router/embeddings.js +136 -0
- package/dist/opencode/router/embeddings.js.map +1 -0
- package/dist/opencode/router/graph-state-snapshot.d.ts +35 -0
- package/dist/opencode/router/graph-state-snapshot.d.ts.map +1 -0
- package/dist/opencode/router/graph-state-snapshot.js +129 -0
- package/dist/opencode/router/graph-state-snapshot.js.map +1 -0
- package/dist/opencode/router/index.d.ts +21 -0
- package/dist/opencode/router/index.d.ts.map +1 -0
- package/dist/opencode/router/index.js +23 -0
- package/dist/opencode/router/index.js.map +1 -0
- package/dist/opencode/router/intent-classifier.d.ts +35 -0
- package/dist/opencode/router/intent-classifier.d.ts.map +1 -0
- package/dist/opencode/router/intent-classifier.js +108 -0
- package/dist/opencode/router/intent-classifier.js.map +1 -0
- package/dist/opencode/router/semantic-nudge.d.ts +42 -0
- package/dist/opencode/router/semantic-nudge.d.ts.map +1 -0
- package/dist/opencode/router/semantic-nudge.js +73 -0
- package/dist/opencode/router/semantic-nudge.js.map +1 -0
- package/dist/opencode/router/state-gate.d.ts +25 -0
- package/dist/opencode/router/state-gate.d.ts.map +1 -0
- package/dist/opencode/router/state-gate.js +178 -0
- package/dist/opencode/router/state-gate.js.map +1 -0
- package/dist/opencode/router/tool-embeddings.d.ts +36 -0
- package/dist/opencode/router/tool-embeddings.d.ts.map +1 -0
- package/dist/opencode/router/tool-embeddings.js +140 -0
- package/dist/opencode/router/tool-embeddings.js.map +1 -0
- package/dist/opencode/router/tool-registry.d.ts +45 -0
- package/dist/opencode/router/tool-registry.d.ts.map +1 -0
- package/dist/opencode/router/tool-registry.js +103 -0
- package/dist/opencode/router/tool-registry.js.map +1 -0
- package/dist/opencode/router/tool-taxonomy.d.ts +51 -0
- package/dist/opencode/router/tool-taxonomy.d.ts.map +1 -0
- package/dist/opencode/router/tool-taxonomy.js +250 -0
- package/dist/opencode/router/tool-taxonomy.js.map +1 -0
- package/dist/opencode/router/tools-composite.d.ts +21 -0
- package/dist/opencode/router/tools-composite.d.ts.map +1 -0
- package/dist/opencode/router/tools-composite.js +684 -0
- package/dist/opencode/router/tools-composite.js.map +1 -0
- package/dist/opencode/shell-hooks.d.ts +7 -0
- package/dist/opencode/shell-hooks.d.ts.map +1 -0
- package/dist/opencode/shell-hooks.js +96 -0
- package/dist/opencode/shell-hooks.js.map +1 -0
- package/dist/opencode/system-prompt.d.ts +10 -0
- package/dist/opencode/system-prompt.d.ts.map +1 -0
- package/dist/opencode/system-prompt.js +600 -0
- package/dist/opencode/system-prompt.js.map +1 -0
- package/dist/opencode/tools.d.ts +8 -0
- package/dist/opencode/tools.d.ts.map +1 -0
- package/dist/opencode/tools.js +3731 -0
- package/dist/opencode/tools.js.map +1 -0
- package/dist/opencode/workflows/chains.d.ts +52 -0
- package/dist/opencode/workflows/chains.d.ts.map +1 -0
- package/dist/opencode/workflows/chains.js +170 -0
- package/dist/opencode/workflows/chains.js.map +1 -0
- package/dist/opencode/workflows/executor.d.ts +52 -0
- package/dist/opencode/workflows/executor.d.ts.map +1 -0
- package/dist/opencode/workflows/executor.js +130 -0
- package/dist/opencode/workflows/executor.js.map +1 -0
- package/dist/opencode/workflows/index.d.ts +14 -0
- package/dist/opencode/workflows/index.d.ts.map +1 -0
- package/dist/opencode/workflows/index.js +15 -0
- package/dist/opencode/workflows/index.js.map +1 -0
- package/dist/opencode/workflows/tools-workflow.d.ts +24 -0
- package/dist/opencode/workflows/tools-workflow.d.ts.map +1 -0
- package/dist/opencode/workflows/tools-workflow.js +85 -0
- package/dist/opencode/workflows/tools-workflow.js.map +1 -0
- package/dist/opencode/workflows/types.d.ts +32 -0
- package/dist/opencode/workflows/types.d.ts.map +1 -0
- package/dist/opencode/workflows/types.js +13 -0
- package/dist/opencode/workflows/types.js.map +1 -0
- package/dist/sdd/analysis/compliance.d.ts +30 -0
- package/dist/sdd/analysis/compliance.d.ts.map +1 -0
- package/dist/sdd/analysis/compliance.js +251 -0
- package/dist/sdd/analysis/compliance.js.map +1 -0
- package/dist/sdd/analysis/scalability.d.ts +15 -0
- package/dist/sdd/analysis/scalability.d.ts.map +1 -0
- package/dist/sdd/analysis/scalability.js +72 -0
- package/dist/sdd/analysis/scalability.js.map +1 -0
- package/dist/sdd/analysis/security.d.ts +25 -0
- package/dist/sdd/analysis/security.d.ts.map +1 -0
- package/dist/sdd/analysis/security.js +94 -0
- package/dist/sdd/analysis/security.js.map +1 -0
- package/dist/sdd/brownfield/scanner.d.ts +31 -0
- package/dist/sdd/brownfield/scanner.d.ts.map +1 -0
- package/dist/sdd/brownfield/scanner.js +228 -0
- package/dist/sdd/brownfield/scanner.js.map +1 -0
- package/dist/sdd/cache/manager.d.ts +237 -0
- package/dist/sdd/cache/manager.d.ts.map +1 -0
- package/dist/sdd/cache/manager.js +770 -0
- package/dist/sdd/cache/manager.js.map +1 -0
- package/dist/sdd/cache/snapshot-store.d.ts +39 -0
- package/dist/sdd/cache/snapshot-store.d.ts.map +1 -0
- package/dist/sdd/cache/snapshot-store.js +156 -0
- package/dist/sdd/cache/snapshot-store.js.map +1 -0
- package/dist/sdd/changes/manager.d.ts +58 -0
- package/dist/sdd/changes/manager.d.ts.map +1 -0
- package/dist/sdd/changes/manager.js +235 -0
- package/dist/sdd/changes/manager.js.map +1 -0
- package/dist/sdd/cicd/generators.d.ts +16 -0
- package/dist/sdd/cicd/generators.d.ts.map +1 -0
- package/dist/sdd/cicd/generators.js +1042 -0
- package/dist/sdd/cicd/generators.js.map +1 -0
- package/dist/sdd/code-quality/complexity.d.ts +38 -0
- package/dist/sdd/code-quality/complexity.d.ts.map +1 -0
- package/dist/sdd/code-quality/complexity.js +161 -0
- package/dist/sdd/code-quality/complexity.js.map +1 -0
- package/dist/sdd/code-quality/conventions.d.ts +33 -0
- package/dist/sdd/code-quality/conventions.d.ts.map +1 -0
- package/dist/sdd/code-quality/conventions.js +193 -0
- package/dist/sdd/code-quality/conventions.js.map +1 -0
- package/dist/sdd/code-quality/dependencies.d.ts +27 -0
- package/dist/sdd/code-quality/dependencies.d.ts.map +1 -0
- package/dist/sdd/code-quality/dependencies.js +142 -0
- package/dist/sdd/code-quality/dependencies.js.map +1 -0
- package/dist/sdd/code-quality/import-analyzer.d.ts +49 -0
- package/dist/sdd/code-quality/import-analyzer.d.ts.map +1 -0
- package/dist/sdd/code-quality/import-analyzer.js +213 -0
- package/dist/sdd/code-quality/import-analyzer.js.map +1 -0
- package/dist/sdd/code-quality/metrics.d.ts +35 -0
- package/dist/sdd/code-quality/metrics.d.ts.map +1 -0
- package/dist/sdd/code-quality/metrics.js +172 -0
- package/dist/sdd/code-quality/metrics.js.map +1 -0
- package/dist/sdd/code-quality/smells.d.ts +38 -0
- package/dist/sdd/code-quality/smells.d.ts.map +1 -0
- package/dist/sdd/code-quality/smells.js +319 -0
- package/dist/sdd/code-quality/smells.js.map +1 -0
- package/dist/sdd/code-quality/symbol-parser.d.ts +28 -0
- package/dist/sdd/code-quality/symbol-parser.d.ts.map +1 -0
- package/dist/sdd/code-quality/symbol-parser.js +230 -0
- package/dist/sdd/code-quality/symbol-parser.js.map +1 -0
- package/dist/sdd/code-quality/usage-tracker.d.ts +59 -0
- package/dist/sdd/code-quality/usage-tracker.d.ts.map +1 -0
- package/dist/sdd/code-quality/usage-tracker.js +402 -0
- package/dist/sdd/code-quality/usage-tracker.js.map +1 -0
- package/dist/sdd/code-quality/utils.d.ts +6 -0
- package/dist/sdd/code-quality/utils.d.ts.map +1 -0
- package/dist/sdd/code-quality/utils.js +14 -0
- package/dist/sdd/code-quality/utils.js.map +1 -0
- package/dist/sdd/codegen/generator.d.ts +42 -0
- package/dist/sdd/codegen/generator.d.ts.map +1 -0
- package/dist/sdd/codegen/generator.js +1023 -0
- package/dist/sdd/codegen/generator.js.map +1 -0
- package/dist/sdd/constitution/validator.d.ts +37 -0
- package/dist/sdd/constitution/validator.d.ts.map +1 -0
- package/dist/sdd/constitution/validator.js +192 -0
- package/dist/sdd/constitution/validator.js.map +1 -0
- package/dist/sdd/cost/estimator.d.ts +31 -0
- package/dist/sdd/cost/estimator.d.ts.map +1 -0
- package/dist/sdd/cost/estimator.js +92 -0
- package/dist/sdd/cost/estimator.js.map +1 -0
- package/dist/sdd/coverage/tracker.d.ts +47 -0
- package/dist/sdd/coverage/tracker.d.ts.map +1 -0
- package/dist/sdd/coverage/tracker.js +251 -0
- package/dist/sdd/coverage/tracker.js.map +1 -0
- package/dist/sdd/disaster/recovery.d.ts +11 -0
- package/dist/sdd/disaster/recovery.d.ts.map +1 -0
- package/dist/sdd/disaster/recovery.js +55 -0
- package/dist/sdd/disaster/recovery.js.map +1 -0
- package/dist/sdd/discovery/adaptive.d.ts +14 -0
- package/dist/sdd/discovery/adaptive.d.ts.map +1 -0
- package/dist/sdd/discovery/adaptive.js +145 -0
- package/dist/sdd/discovery/adaptive.js.map +1 -0
- package/dist/sdd/discovery/briefing-analyzer.d.ts +66 -0
- package/dist/sdd/discovery/briefing-analyzer.d.ts.map +1 -0
- package/dist/sdd/discovery/briefing-analyzer.js +672 -0
- package/dist/sdd/discovery/briefing-analyzer.js.map +1 -0
- package/dist/sdd/discovery/briefing.d.ts +109 -0
- package/dist/sdd/discovery/briefing.d.ts.map +1 -0
- package/dist/sdd/discovery/briefing.js +617 -0
- package/dist/sdd/discovery/briefing.js.map +1 -0
- package/dist/sdd/discovery/graph-builder.d.ts +10 -0
- package/dist/sdd/discovery/graph-builder.d.ts.map +1 -0
- package/dist/sdd/discovery/graph-builder.js +510 -0
- package/dist/sdd/discovery/graph-builder.js.map +1 -0
- package/dist/sdd/documentation/generator.d.ts +7 -0
- package/dist/sdd/documentation/generator.d.ts.map +1 -0
- package/dist/sdd/documentation/generator.js +119 -0
- package/dist/sdd/documentation/generator.js.map +1 -0
- package/dist/sdd/domain/types.d.ts +460 -0
- package/dist/sdd/domain/types.d.ts.map +1 -0
- package/dist/sdd/domain/types.js +25 -0
- package/dist/sdd/domain/types.js.map +1 -0
- package/dist/sdd/drift/detector.d.ts +28 -0
- package/dist/sdd/drift/detector.d.ts.map +1 -0
- package/dist/sdd/drift/detector.js +379 -0
- package/dist/sdd/drift/detector.js.map +1 -0
- package/dist/sdd/drift/exclusion.d.ts +54 -0
- package/dist/sdd/drift/exclusion.d.ts.map +1 -0
- package/dist/sdd/drift/exclusion.js +179 -0
- package/dist/sdd/drift/exclusion.js.map +1 -0
- package/dist/sdd/drift/signals.d.ts +52 -0
- package/dist/sdd/drift/signals.d.ts.map +1 -0
- package/dist/sdd/drift/signals.js +470 -0
- package/dist/sdd/drift/signals.js.map +1 -0
- package/dist/sdd/enforcement/interceptor.d.ts +47 -0
- package/dist/sdd/enforcement/interceptor.d.ts.map +1 -0
- package/dist/sdd/enforcement/interceptor.js +365 -0
- package/dist/sdd/enforcement/interceptor.js.map +1 -0
- package/dist/sdd/enforcement/workflow-tracker.d.ts +66 -0
- package/dist/sdd/enforcement/workflow-tracker.d.ts.map +1 -0
- package/dist/sdd/enforcement/workflow-tracker.js +229 -0
- package/dist/sdd/enforcement/workflow-tracker.js.map +1 -0
- package/dist/sdd/graph/engine.d.ts +44 -0
- package/dist/sdd/graph/engine.d.ts.map +1 -0
- package/dist/sdd/graph/engine.js +203 -0
- package/dist/sdd/graph/engine.js.map +1 -0
- package/dist/sdd/graph/index.d.ts +160 -0
- package/dist/sdd/graph/index.d.ts.map +1 -0
- package/dist/sdd/graph/index.js +624 -0
- package/dist/sdd/graph/index.js.map +1 -0
- package/dist/sdd/graph/integrity-guard.d.ts +129 -0
- package/dist/sdd/graph/integrity-guard.d.ts.map +1 -0
- package/dist/sdd/graph/integrity-guard.js +263 -0
- package/dist/sdd/graph/integrity-guard.js.map +1 -0
- package/dist/sdd/graph/integrity.d.ts +79 -0
- package/dist/sdd/graph/integrity.d.ts.map +1 -0
- package/dist/sdd/graph/integrity.js +462 -0
- package/dist/sdd/graph/integrity.js.map +1 -0
- package/dist/sdd/graph/pruner.d.ts +27 -0
- package/dist/sdd/graph/pruner.d.ts.map +1 -0
- package/dist/sdd/graph/pruner.js +203 -0
- package/dist/sdd/graph/pruner.js.map +1 -0
- package/dist/sdd/graph/traverse.d.ts +43 -0
- package/dist/sdd/graph/traverse.d.ts.map +1 -0
- package/dist/sdd/graph/traverse.js +265 -0
- package/dist/sdd/graph/traverse.js.map +1 -0
- package/dist/sdd/incidents/manager.d.ts +10 -0
- package/dist/sdd/incidents/manager.d.ts.map +1 -0
- package/dist/sdd/incidents/manager.js +63 -0
- package/dist/sdd/incidents/manager.js.map +1 -0
- package/dist/sdd/knowledge/transfer.d.ts +24 -0
- package/dist/sdd/knowledge/transfer.d.ts.map +1 -0
- package/dist/sdd/knowledge/transfer.js +94 -0
- package/dist/sdd/knowledge/transfer.js.map +1 -0
- package/dist/sdd/migrations/fixes.d.ts +2 -0
- package/dist/sdd/migrations/fixes.d.ts.map +1 -0
- package/dist/sdd/migrations/fixes.js +159 -0
- package/dist/sdd/migrations/fixes.js.map +1 -0
- package/dist/sdd/migrations/index.d.ts +2 -0
- package/dist/sdd/migrations/index.d.ts.map +1 -0
- package/dist/sdd/migrations/index.js +5 -0
- package/dist/sdd/migrations/index.js.map +1 -0
- package/dist/sdd/migrations/migration-runner.d.ts +41 -0
- package/dist/sdd/migrations/migration-runner.d.ts.map +1 -0
- package/dist/sdd/migrations/migration-runner.js +91 -0
- package/dist/sdd/migrations/migration-runner.js.map +1 -0
- package/dist/sdd/monitoring/setup.d.ts +40 -0
- package/dist/sdd/monitoring/setup.d.ts.map +1 -0
- package/dist/sdd/monitoring/setup.js +177 -0
- package/dist/sdd/monitoring/setup.js.map +1 -0
- package/dist/sdd/monitoring/telemetry.d.ts +18 -0
- package/dist/sdd/monitoring/telemetry.d.ts.map +1 -0
- package/dist/sdd/monitoring/telemetry.js +37 -0
- package/dist/sdd/monitoring/telemetry.js.map +1 -0
- package/dist/sdd/patterns/anti-patterns.d.ts +21 -0
- package/dist/sdd/patterns/anti-patterns.d.ts.map +1 -0
- package/dist/sdd/patterns/anti-patterns.js +286 -0
- package/dist/sdd/patterns/anti-patterns.js.map +1 -0
- package/dist/sdd/patterns/ast-clones.d.ts +23 -0
- package/dist/sdd/patterns/ast-clones.d.ts.map +1 -0
- package/dist/sdd/patterns/ast-clones.js +171 -0
- package/dist/sdd/patterns/ast-clones.js.map +1 -0
- package/dist/sdd/patterns/config-drift.d.ts +16 -0
- package/dist/sdd/patterns/config-drift.d.ts.map +1 -0
- package/dist/sdd/patterns/config-drift.js +322 -0
- package/dist/sdd/patterns/config-drift.js.map +1 -0
- package/dist/sdd/patterns/contradictions.d.ts +38 -0
- package/dist/sdd/patterns/contradictions.d.ts.map +1 -0
- package/dist/sdd/patterns/contradictions.js +237 -0
- package/dist/sdd/patterns/contradictions.js.map +1 -0
- package/dist/sdd/patterns/learner.d.ts +49 -0
- package/dist/sdd/patterns/learner.d.ts.map +1 -0
- package/dist/sdd/patterns/learner.js +226 -0
- package/dist/sdd/patterns/learner.js.map +1 -0
- package/dist/sdd/permissions/access.d.ts +69 -0
- package/dist/sdd/permissions/access.d.ts.map +1 -0
- package/dist/sdd/permissions/access.js +333 -0
- package/dist/sdd/permissions/access.js.map +1 -0
- package/dist/sdd/persistence/repository.d.ts +60 -0
- package/dist/sdd/persistence/repository.d.ts.map +1 -0
- package/dist/sdd/persistence/repository.js +96 -0
- package/dist/sdd/persistence/repository.js.map +1 -0
- package/dist/sdd/persistence/sqlite.d.ts +122 -0
- package/dist/sdd/persistence/sqlite.d.ts.map +1 -0
- package/dist/sdd/persistence/sqlite.js +602 -0
- package/dist/sdd/persistence/sqlite.js.map +1 -0
- package/dist/sdd/persistence/yaml.d.ts +41 -0
- package/dist/sdd/persistence/yaml.d.ts.map +1 -0
- package/dist/sdd/persistence/yaml.js +382 -0
- package/dist/sdd/persistence/yaml.js.map +1 -0
- package/dist/sdd/promises/classifier.d.ts +48 -0
- package/dist/sdd/promises/classifier.d.ts.map +1 -0
- package/dist/sdd/promises/classifier.js +215 -0
- package/dist/sdd/promises/classifier.js.map +1 -0
- package/dist/sdd/promises/tracker.d.ts +20 -0
- package/dist/sdd/promises/tracker.d.ts.map +1 -0
- package/dist/sdd/promises/tracker.js +204 -0
- package/dist/sdd/promises/tracker.js.map +1 -0
- package/dist/sdd/quality/scorer.d.ts +44 -0
- package/dist/sdd/quality/scorer.d.ts.map +1 -0
- package/dist/sdd/quality/scorer.js +216 -0
- package/dist/sdd/quality/scorer.js.map +1 -0
- package/dist/sdd/rollback/manager.d.ts +45 -0
- package/dist/sdd/rollback/manager.d.ts.map +1 -0
- package/dist/sdd/rollback/manager.js +266 -0
- package/dist/sdd/rollback/manager.js.map +1 -0
- package/dist/sdd/session/handoff.d.ts +52 -0
- package/dist/sdd/session/handoff.d.ts.map +1 -0
- package/dist/sdd/session/handoff.js +264 -0
- package/dist/sdd/session/handoff.js.map +1 -0
- package/dist/sdd/sla/tracker.d.ts +11 -0
- package/dist/sdd/sla/tracker.d.ts.map +1 -0
- package/dist/sdd/sla/tracker.js +52 -0
- package/dist/sdd/sla/tracker.js.map +1 -0
- package/dist/sdd/sync/git-sync.d.ts +61 -0
- package/dist/sdd/sync/git-sync.d.ts.map +1 -0
- package/dist/sdd/sync/git-sync.js +297 -0
- package/dist/sdd/sync/git-sync.js.map +1 -0
- package/dist/sdd/toggle/state.d.ts +8 -0
- package/dist/sdd/toggle/state.d.ts.map +1 -0
- package/dist/sdd/toggle/state.js +32 -0
- package/dist/sdd/toggle/state.js.map +1 -0
- package/dist/sdd/transactions/manager.d.ts +12 -0
- package/dist/sdd/transactions/manager.d.ts.map +1 -0
- package/dist/sdd/transactions/manager.js +80 -0
- package/dist/sdd/transactions/manager.js.map +1 -0
- package/dist/sdd/validation/coverage-index.d.ts +117 -0
- package/dist/sdd/validation/coverage-index.d.ts.map +1 -0
- package/dist/sdd/validation/coverage-index.js +251 -0
- package/dist/sdd/validation/coverage-index.js.map +1 -0
- package/dist/sdd/validation/executable.d.ts +26 -0
- package/dist/sdd/validation/executable.d.ts.map +1 -0
- package/dist/sdd/validation/executable.js +122 -0
- package/dist/sdd/validation/executable.js.map +1 -0
- package/dist/sdd/validation/smart-validator.d.ts +53 -0
- package/dist/sdd/validation/smart-validator.d.ts.map +1 -0
- package/dist/sdd/validation/smart-validator.js +347 -0
- package/dist/sdd/validation/smart-validator.js.map +1 -0
- package/dist/sdd/validation/validator.d.ts +39 -0
- package/dist/sdd/validation/validator.d.ts.map +1 -0
- package/dist/sdd/validation/validator.js +512 -0
- package/dist/sdd/validation/validator.js.map +1 -0
- package/dist/sdd/workflow/exporter.d.ts +36 -0
- package/dist/sdd/workflow/exporter.d.ts.map +1 -0
- package/dist/sdd/workflow/exporter.js +112 -0
- package/dist/sdd/workflow/exporter.js.map +1 -0
- package/dist/sdd/workflows/ab-testing.d.ts +18 -0
- package/dist/sdd/workflows/ab-testing.d.ts.map +1 -0
- package/dist/sdd/workflows/ab-testing.js +67 -0
- package/dist/sdd/workflows/ab-testing.js.map +1 -0
- package/dist/sdd/workflows/bug-fix.d.ts +13 -0
- package/dist/sdd/workflows/bug-fix.d.ts.map +1 -0
- package/dist/sdd/workflows/bug-fix.js +65 -0
- package/dist/sdd/workflows/bug-fix.js.map +1 -0
- package/dist/sdd/workflows/data-migration.d.ts +14 -0
- package/dist/sdd/workflows/data-migration.d.ts.map +1 -0
- package/dist/sdd/workflows/data-migration.js +68 -0
- package/dist/sdd/workflows/data-migration.js.map +1 -0
- package/dist/sdd/workflows/deprecation.d.ts +15 -0
- package/dist/sdd/workflows/deprecation.d.ts.map +1 -0
- package/dist/sdd/workflows/deprecation.js +68 -0
- package/dist/sdd/workflows/deprecation.js.map +1 -0
- package/dist/sdd/workflows/feature-flags.d.ts +14 -0
- package/dist/sdd/workflows/feature-flags.d.ts.map +1 -0
- package/dist/sdd/workflows/feature-flags.js +73 -0
- package/dist/sdd/workflows/feature-flags.js.map +1 -0
- package/dist/sdd/workflows/hotfix.d.ts +13 -0
- package/dist/sdd/workflows/hotfix.d.ts.map +1 -0
- package/dist/sdd/workflows/hotfix.js +67 -0
- package/dist/sdd/workflows/hotfix.js.map +1 -0
- package/dist/sdd/workflows/multi-tenancy.d.ts +13 -0
- package/dist/sdd/workflows/multi-tenancy.d.ts.map +1 -0
- package/dist/sdd/workflows/multi-tenancy.js +68 -0
- package/dist/sdd/workflows/multi-tenancy.js.map +1 -0
- package/dist/sdd/workflows/onboarding.d.ts +7 -0
- package/dist/sdd/workflows/onboarding.d.ts.map +1 -0
- package/dist/sdd/workflows/onboarding.js +43 -0
- package/dist/sdd/workflows/onboarding.js.map +1 -0
- package/dist/sdd/workflows/refactoring.d.ts +14 -0
- package/dist/sdd/workflows/refactoring.d.ts.map +1 -0
- package/dist/sdd/workflows/refactoring.js +73 -0
- package/dist/sdd/workflows/refactoring.js.map +1 -0
- package/dist/server/events.d.ts +64 -0
- package/dist/server/events.d.ts.map +1 -0
- package/dist/server/events.js +149 -0
- package/dist/server/events.js.map +1 -0
- package/dist/server/server.d.ts +33 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +1019 -0
- package/dist/server/server.js.map +1 -0
- package/marketplace.json +39 -0
- package/package.json +65 -0
- package/src/code-intelligence/analyzer.ts +350 -0
- package/src/code-intelligence/ast/cache.ts +61 -0
- package/src/code-intelligence/ast/common.ts +62 -0
- package/src/code-intelligence/ast/component.ts +39 -0
- package/src/code-intelligence/ast/fallback.ts +44 -0
- package/src/code-intelligence/ast/index.ts +4 -0
- package/src/code-intelligence/ast/ir.ts +91 -0
- package/src/code-intelligence/ast/metrics.ts +65 -0
- package/src/code-intelligence/ast/registry.ts +28 -0
- package/src/code-intelligence/ast/tree-sitter.ts +226 -0
- package/src/code-intelligence/ast/typescript.ts +140 -0
- package/src/index.ts +22 -0
- package/src/mcp/server.ts +77 -0
- package/src/opencode/hooks.ts +728 -0
- package/src/opencode/router/categories.ts +192 -0
- package/src/opencode/router/embeddings.ts +149 -0
- package/src/opencode/router/graph-state-snapshot.ts +163 -0
- package/src/opencode/router/index.ts +44 -0
- package/src/opencode/router/intent-classifier.ts +140 -0
- package/src/opencode/router/semantic-nudge.ts +89 -0
- package/src/opencode/router/state-gate.ts +192 -0
- package/src/opencode/router/tool-embeddings.ts +162 -0
- package/src/opencode/router/tool-registry.ts +135 -0
- package/src/opencode/router/tool-taxonomy.ts +284 -0
- package/src/opencode/router/tools-composite.ts +685 -0
- package/src/opencode/shell-hooks.ts +115 -0
- package/src/opencode/system-prompt.ts +617 -0
- package/src/opencode/tools.ts +4102 -0
- package/src/opencode/workflows/chains.ts +205 -0
- package/src/opencode/workflows/executor.ts +172 -0
- package/src/opencode/workflows/index.ts +21 -0
- package/src/opencode/workflows/tools-workflow.ts +91 -0
- package/src/opencode/workflows/types.ts +42 -0
- package/src/sdd/analysis/compliance.ts +279 -0
- package/src/sdd/analysis/scalability.ts +97 -0
- package/src/sdd/analysis/security.ts +135 -0
- package/src/sdd/brownfield/scanner.ts +276 -0
- package/src/sdd/cache/manager.ts +899 -0
- package/src/sdd/cache/snapshot-store.ts +185 -0
- package/src/sdd/changes/manager.ts +326 -0
- package/src/sdd/cicd/generators.ts +1095 -0
- package/src/sdd/code-quality/complexity.ts +235 -0
- package/src/sdd/code-quality/conventions.ts +220 -0
- package/src/sdd/code-quality/dependencies.ts +203 -0
- package/src/sdd/code-quality/import-analyzer.ts +294 -0
- package/src/sdd/code-quality/metrics.ts +232 -0
- package/src/sdd/code-quality/smells.ts +415 -0
- package/src/sdd/code-quality/symbol-parser.ts +335 -0
- package/src/sdd/code-quality/usage-tracker.ts +527 -0
- package/src/sdd/code-quality/utils.ts +13 -0
- package/src/sdd/codegen/generator.ts +1181 -0
- package/src/sdd/constitution/validator.ts +253 -0
- package/src/sdd/cost/estimator.ts +147 -0
- package/src/sdd/coverage/tracker.ts +342 -0
- package/src/sdd/disaster/recovery.ts +79 -0
- package/src/sdd/discovery/adaptive.ts +167 -0
- package/src/sdd/discovery/briefing-analyzer.ts +802 -0
- package/src/sdd/discovery/briefing.ts +770 -0
- package/src/sdd/discovery/graph-builder.ts +598 -0
- package/src/sdd/documentation/generator.ts +158 -0
- package/src/sdd/domain/types.ts +658 -0
- package/src/sdd/drift/detector.ts +465 -0
- package/src/sdd/drift/exclusion.ts +223 -0
- package/src/sdd/drift/signals.ts +577 -0
- package/src/sdd/enforcement/interceptor.ts +444 -0
- package/src/sdd/enforcement/workflow-tracker.ts +263 -0
- package/src/sdd/graph/engine.ts +277 -0
- package/src/sdd/graph/index.ts +700 -0
- package/src/sdd/graph/integrity-guard.ts +348 -0
- package/src/sdd/graph/integrity.ts +628 -0
- package/src/sdd/graph/pruner.ts +221 -0
- package/src/sdd/graph/traverse.ts +331 -0
- package/src/sdd/incidents/manager.ts +87 -0
- package/src/sdd/knowledge/transfer.ts +140 -0
- package/src/sdd/migrations/fixes.ts +154 -0
- package/src/sdd/migrations/index.ts +14 -0
- package/src/sdd/migrations/migration-runner.ts +118 -0
- package/src/sdd/monitoring/setup.ts +237 -0
- package/src/sdd/monitoring/telemetry.ts +44 -0
- package/src/sdd/patterns/anti-patterns.ts +333 -0
- package/src/sdd/patterns/ast-clones.ts +214 -0
- package/src/sdd/patterns/config-drift.ts +346 -0
- package/src/sdd/patterns/contradictions.ts +323 -0
- package/src/sdd/patterns/learner.ts +266 -0
- package/src/sdd/permissions/access.ts +478 -0
- package/src/sdd/persistence/repository.ts +166 -0
- package/src/sdd/persistence/sqlite.ts +703 -0
- package/src/sdd/persistence/yaml.ts +409 -0
- package/src/sdd/promises/classifier.ts +253 -0
- package/src/sdd/promises/tracker.ts +258 -0
- package/src/sdd/quality/scorer.ts +263 -0
- package/src/sdd/rollback/manager.ts +361 -0
- package/src/sdd/session/handoff.ts +354 -0
- package/src/sdd/sla/tracker.ts +68 -0
- package/src/sdd/sync/git-sync.ts +401 -0
- package/src/sdd/toggle/state.ts +38 -0
- package/src/sdd/transactions/manager.ts +93 -0
- package/src/sdd/validation/coverage-index.ts +339 -0
- package/src/sdd/validation/executable.ts +127 -0
- package/src/sdd/validation/smart-validator.ts +470 -0
- package/src/sdd/validation/validator.ts +641 -0
- package/src/sdd/workflow/exporter.ts +169 -0
- package/src/sdd/workflows/ab-testing.ts +90 -0
- package/src/sdd/workflows/bug-fix.ts +81 -0
- package/src/sdd/workflows/data-migration.ts +86 -0
- package/src/sdd/workflows/deprecation.ts +87 -0
- package/src/sdd/workflows/feature-flags.ts +91 -0
- package/src/sdd/workflows/hotfix.ts +83 -0
- package/src/sdd/workflows/multi-tenancy.ts +84 -0
- package/src/sdd/workflows/onboarding.ts +82 -0
- package/src/sdd/workflows/refactoring.ts +90 -0
- package/src/server/events.ts +184 -0
- package/src/server/server.ts +1088 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { getNodesByType } from "../graph/engine.js";
|
|
2
|
+
import { getExclusionSets, isNodeExcludedOrDeprecated } from "../drift/exclusion.js";
|
|
3
|
+
export function calculateCoverage(graph, options) {
|
|
4
|
+
const { removed, deprecated } = getExclusionSets(graph);
|
|
5
|
+
const excludeReqSet = new Set(options?.excludeRequirements || []);
|
|
6
|
+
const excludeTestSet = new Set(options?.excludeTests || []);
|
|
7
|
+
let requirements = getNodesByType(graph, "requirement")
|
|
8
|
+
.filter((r) => !isNodeExcludedOrDeprecated(r.id, r.status, removed, deprecated))
|
|
9
|
+
.filter((r) => !excludeReqSet.has(r.id));
|
|
10
|
+
// Apply focus filters
|
|
11
|
+
if (options?.focusRequirements?.length) {
|
|
12
|
+
const focusSet = new Set(options.focusRequirements);
|
|
13
|
+
requirements = requirements.filter(r => focusSet.has(r.id));
|
|
14
|
+
}
|
|
15
|
+
if (options?.focusKeywords?.length) {
|
|
16
|
+
requirements = requirements.filter(r => {
|
|
17
|
+
const text = `${r.name} ${r.description || ''}`.toLowerCase();
|
|
18
|
+
return options.focusKeywords.some(kw => text.includes(kw.toLowerCase()));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const items = [];
|
|
22
|
+
const gaps = [];
|
|
23
|
+
// Find orphan tests (tests not linked to any requirement)
|
|
24
|
+
const allTests = graph.nodes.filter((n) => n.type === "test" && !excludeTestSet.has(n.id));
|
|
25
|
+
const testedReqIds = new Set(graph.relationships
|
|
26
|
+
.filter((r) => r.type === "tested_by")
|
|
27
|
+
.map((r) => r.to));
|
|
28
|
+
const orphanTests = allTests
|
|
29
|
+
.filter((t) => !testedReqIds.has(t.id))
|
|
30
|
+
.map((t) => {
|
|
31
|
+
const inferred = inferRequirementFromTest(t, requirements, graph);
|
|
32
|
+
return {
|
|
33
|
+
test_id: t.id,
|
|
34
|
+
test_name: t.name,
|
|
35
|
+
test_path: t.metadata?.target,
|
|
36
|
+
inferred_requirement_id: inferred?.requirement_id,
|
|
37
|
+
inferred_by: inferred?.method,
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
for (const req of requirements) {
|
|
41
|
+
const testIds = graph.relationships
|
|
42
|
+
.filter((r) => r.from === req.id && r.type === "tested_by")
|
|
43
|
+
.map((r) => r.to)
|
|
44
|
+
.filter(id => !excludeTestSet.has(id));
|
|
45
|
+
const tests = testIds
|
|
46
|
+
.map((id) => graph.nodes.find((n) => n.id === id))
|
|
47
|
+
.filter(Boolean);
|
|
48
|
+
let aspects = extractAspects(req);
|
|
49
|
+
// Apply focus aspects filter
|
|
50
|
+
if (options?.focusAspects?.length) {
|
|
51
|
+
const focusSet = new Set(options.focusAspects.map(a => a.toLowerCase()));
|
|
52
|
+
aspects = aspects.filter(a => focusSet.has(a.split(':')[0].toLowerCase()));
|
|
53
|
+
}
|
|
54
|
+
const coveredAspects = findCoveredAspects(aspects, tests);
|
|
55
|
+
const missingAspects = aspects.filter((a) => !coveredAspects.includes(a));
|
|
56
|
+
let coverageType = "none";
|
|
57
|
+
if (missingAspects.length === 0 && aspects.length > 0)
|
|
58
|
+
coverageType = "full";
|
|
59
|
+
else if (coveredAspects.length > 0)
|
|
60
|
+
coverageType = "partial";
|
|
61
|
+
items.push({
|
|
62
|
+
requirement_id: req.id,
|
|
63
|
+
requirement_name: req.name,
|
|
64
|
+
test_id: tests[0]?.id,
|
|
65
|
+
test_name: tests[0]?.name,
|
|
66
|
+
coverage_type: coverageType,
|
|
67
|
+
covered_aspects: coveredAspects,
|
|
68
|
+
missing_aspects: missingAspects,
|
|
69
|
+
});
|
|
70
|
+
if (coverageType !== "full") {
|
|
71
|
+
gaps.push(`${req.name}: missing coverage for ${missingAspects.join(", ")}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Apply max results limit
|
|
75
|
+
if (options?.maxResults && items.length > options.maxResults) {
|
|
76
|
+
items.splice(options.maxResults);
|
|
77
|
+
}
|
|
78
|
+
const covered = items.filter((i) => i.coverage_type === "full").length;
|
|
79
|
+
const partial = items.filter((i) => i.coverage_type === "partial").length;
|
|
80
|
+
const uncovered = items.filter((i) => i.coverage_type === "none").length;
|
|
81
|
+
return {
|
|
82
|
+
items,
|
|
83
|
+
orphan_tests: orphanTests,
|
|
84
|
+
total_requirements: requirements.length,
|
|
85
|
+
covered_count: covered,
|
|
86
|
+
partial_count: partial,
|
|
87
|
+
uncovered_count: uncovered,
|
|
88
|
+
coverage_rate: requirements.length === 0 ? 1 : covered / requirements.length,
|
|
89
|
+
gaps,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Infer which requirement a test covers based on name matching.
|
|
94
|
+
* Uses 3 strategies: filename pattern, imports/dependencies, and describe/it blocks.
|
|
95
|
+
*/
|
|
96
|
+
function inferRequirementFromTest(test, requirements, graph) {
|
|
97
|
+
const testId = test.id.toLowerCase();
|
|
98
|
+
const testName = (test.name || "").toLowerCase();
|
|
99
|
+
const testPath = (test.metadata?.target || "").toLowerCase();
|
|
100
|
+
const testText = `${testId} ${testName} ${testPath}`;
|
|
101
|
+
// Strategy 1: Filename pattern matching
|
|
102
|
+
// e.g., "user-auth.test.ts" might test "USER-AUTH-REQ"
|
|
103
|
+
for (const req of requirements) {
|
|
104
|
+
const reqName = req.name.toLowerCase().replace(/\s+/g, "-");
|
|
105
|
+
const reqId = req.id.toLowerCase();
|
|
106
|
+
if (testText.includes(reqName) ||
|
|
107
|
+
testText.includes(reqId) ||
|
|
108
|
+
testName.includes(reqName) ||
|
|
109
|
+
testName.includes(reqId)) {
|
|
110
|
+
return { requirement_id: req.id, method: "filename_pattern" };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Strategy 2: Import/dependency analysis
|
|
114
|
+
// Check if the test file imports from files related to a requirement
|
|
115
|
+
const testMeta = test.metadata;
|
|
116
|
+
if (Array.isArray(testMeta.imports)) {
|
|
117
|
+
for (const imp of testMeta.imports) {
|
|
118
|
+
if (typeof imp !== "string")
|
|
119
|
+
continue;
|
|
120
|
+
const impLower = imp.toLowerCase();
|
|
121
|
+
for (const req of requirements) {
|
|
122
|
+
const reqName = req.name.toLowerCase().replace(/\s+/g, "-");
|
|
123
|
+
if (impLower.includes(reqName)) {
|
|
124
|
+
return { requirement_id: req.id, method: "import_analysis" };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Strategy 3: Relationship-based inference
|
|
130
|
+
// If test is a child of a file that implements a requirement
|
|
131
|
+
if (testMeta.file_path) {
|
|
132
|
+
const fileNodes = graph.nodes.filter(n => n.type === "file");
|
|
133
|
+
for (const file of fileNodes) {
|
|
134
|
+
const fileMeta = file.metadata;
|
|
135
|
+
if (fileMeta.path === testMeta.file_path) {
|
|
136
|
+
// Find what this file implements
|
|
137
|
+
const implementsRels = graph.relationships.filter(r => r.from === file.id && r.type === "implements");
|
|
138
|
+
for (const rel of implementsRels) {
|
|
139
|
+
// Check if the target is a requirement or feature containing requirements
|
|
140
|
+
const target = graph.nodes.find(n => n.id === rel.to);
|
|
141
|
+
if (target?.type === "requirement") {
|
|
142
|
+
return { requirement_id: target.id, method: "file_relationship" };
|
|
143
|
+
}
|
|
144
|
+
if (target?.type === "feature") {
|
|
145
|
+
// Find requirements contained by this feature
|
|
146
|
+
const reqRels = graph.relationships.filter(r => r.from === target.id && r.type === "contains");
|
|
147
|
+
for (const reqRel of reqRels) {
|
|
148
|
+
const reqNode = graph.nodes.find(n => n.id === reqRel.to);
|
|
149
|
+
if (reqNode?.type === "requirement") {
|
|
150
|
+
return { requirement_id: reqNode.id, method: "feature_relationship" };
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
function extractAspects(req) {
|
|
161
|
+
const aspects = [];
|
|
162
|
+
if (req.metadata.priority)
|
|
163
|
+
aspects.push(`priority:${req.metadata.priority}`);
|
|
164
|
+
const desc = (req.description || "").toLowerCase();
|
|
165
|
+
if (desc.includes("validation"))
|
|
166
|
+
aspects.push("validation");
|
|
167
|
+
if (desc.includes("error"))
|
|
168
|
+
aspects.push("error_handling");
|
|
169
|
+
if (desc.includes("performance"))
|
|
170
|
+
aspects.push("performance");
|
|
171
|
+
if (desc.includes("security"))
|
|
172
|
+
aspects.push("security");
|
|
173
|
+
if (aspects.length === 0)
|
|
174
|
+
aspects.push("behavior");
|
|
175
|
+
return [...new Set(aspects)];
|
|
176
|
+
}
|
|
177
|
+
function findCoveredAspects(aspects, tests) {
|
|
178
|
+
const covered = [];
|
|
179
|
+
for (const aspect of aspects) {
|
|
180
|
+
const isCovered = tests.some((test) => {
|
|
181
|
+
const testText = ((test.name || "") + " " + (test.description || "")).toLowerCase();
|
|
182
|
+
const aspectKey = aspect.split(":")[0].toLowerCase();
|
|
183
|
+
return testText.includes(aspectKey) ||
|
|
184
|
+
testText.includes(aspect.toLowerCase()) ||
|
|
185
|
+
testText.includes("all") ||
|
|
186
|
+
testText.includes("comprehensive");
|
|
187
|
+
});
|
|
188
|
+
if (isCovered)
|
|
189
|
+
covered.push(aspect);
|
|
190
|
+
}
|
|
191
|
+
return covered;
|
|
192
|
+
}
|
|
193
|
+
export function formatCoverageReport(report) {
|
|
194
|
+
const ratePercent = (report.coverage_rate * 100).toFixed(1);
|
|
195
|
+
const lines = [
|
|
196
|
+
`## Test Coverage: ${ratePercent}%`,
|
|
197
|
+
`Covered: ${report.covered_count} | Partial: ${report.partial_count} | Uncovered: ${report.uncovered_count}`,
|
|
198
|
+
"",
|
|
199
|
+
];
|
|
200
|
+
const grouped = {
|
|
201
|
+
full: report.items.filter((i) => i.coverage_type === "full"),
|
|
202
|
+
partial: report.items.filter((i) => i.coverage_type === "partial"),
|
|
203
|
+
none: report.items.filter((i) => i.coverage_type === "none"),
|
|
204
|
+
};
|
|
205
|
+
if (grouped.none.length > 0) {
|
|
206
|
+
lines.push("### ❌ Uncovered Requirements");
|
|
207
|
+
for (const item of grouped.none) {
|
|
208
|
+
lines.push(`- **${item.requirement_name}**: ${item.missing_aspects.join(", ")}`);
|
|
209
|
+
}
|
|
210
|
+
lines.push("");
|
|
211
|
+
}
|
|
212
|
+
if (grouped.partial.length > 0) {
|
|
213
|
+
lines.push("### ⚠️ Partially Covered");
|
|
214
|
+
for (const item of grouped.partial) {
|
|
215
|
+
lines.push(`- **${item.requirement_name}**: missing ${item.missing_aspects.join(", ")}`);
|
|
216
|
+
}
|
|
217
|
+
lines.push("");
|
|
218
|
+
}
|
|
219
|
+
if (grouped.full.length > 0) {
|
|
220
|
+
lines.push(`### ✅ Fully Covered (${grouped.full.length})`);
|
|
221
|
+
for (const item of grouped.full) {
|
|
222
|
+
lines.push(`- ${item.requirement_name} → ${item.test_name}`);
|
|
223
|
+
}
|
|
224
|
+
lines.push("");
|
|
225
|
+
}
|
|
226
|
+
if (report.gaps.length > 0) {
|
|
227
|
+
lines.push("### Coverage Gaps");
|
|
228
|
+
for (const gap of report.gaps) {
|
|
229
|
+
lines.push(`- ${gap}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (report.orphan_tests.length > 0) {
|
|
233
|
+
lines.push("");
|
|
234
|
+
lines.push(`### 🧪 Tests Without Requirement Link (${report.orphan_tests.length})`);
|
|
235
|
+
lines.push("These tests exist but are not linked to any requirement in the graph:");
|
|
236
|
+
for (const test of report.orphan_tests.slice(0, 15)) {
|
|
237
|
+
const pathInfo = test.test_path ? ` (${test.test_path})` : "";
|
|
238
|
+
const inferredInfo = test.inferred_requirement_id
|
|
239
|
+
? ` → inferred: ${test.inferred_requirement_id} (${test.inferred_by})`
|
|
240
|
+
: "";
|
|
241
|
+
lines.push(`- **${test.test_name}**${pathInfo}${inferredInfo}`);
|
|
242
|
+
}
|
|
243
|
+
if (report.orphan_tests.length > 15) {
|
|
244
|
+
lines.push(`- ... and ${report.orphan_tests.length - 15} more`);
|
|
245
|
+
}
|
|
246
|
+
lines.push("");
|
|
247
|
+
lines.push("Use `sdd.add_relationship` to link: `from=requirement_id, to=test_id, type=tested_by`");
|
|
248
|
+
}
|
|
249
|
+
return lines.join("\n");
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/sdd/coverage/tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { KnowledgeGraph } from '../domain/types.js';
|
|
2
|
+
export interface DisasterRecoveryPlan {
|
|
3
|
+
rto: string;
|
|
4
|
+
rpo: string;
|
|
5
|
+
backup_strategy: string;
|
|
6
|
+
failover_procedure: string[];
|
|
7
|
+
recovery_steps: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare function generateDisasterRecoveryPlan(_graph: KnowledgeGraph): DisasterRecoveryPlan;
|
|
10
|
+
export declare function formatDisasterRecoveryPlan(plan: DisasterRecoveryPlan): string;
|
|
11
|
+
//# sourceMappingURL=recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../src/sdd/disaster/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB,CAmCzF;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA+B7E"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export function generateDisasterRecoveryPlan(_graph) {
|
|
2
|
+
const rto = "4 horas";
|
|
3
|
+
const rpo = "1 hora";
|
|
4
|
+
const backup_strategy = [
|
|
5
|
+
'Backup diário do banco de dados',
|
|
6
|
+
'Backup incremental a cada hora',
|
|
7
|
+
'Backup do Knowledge Graph antes de cada mudança',
|
|
8
|
+
'Armazenamento em localização geográfica diferente',
|
|
9
|
+
].join('\n');
|
|
10
|
+
const failover_procedure = [
|
|
11
|
+
'Detectar falha principal',
|
|
12
|
+
'Ativar sistema de backup',
|
|
13
|
+
'Redirecionar tráfego',
|
|
14
|
+
'Verificar integridade dos dados',
|
|
15
|
+
'Notificar stakeholders',
|
|
16
|
+
];
|
|
17
|
+
const recovery_steps = [
|
|
18
|
+
'Avaliar extensão da falha',
|
|
19
|
+
'Restaurar do backup mais recente',
|
|
20
|
+
'Verificar integridade dos dados',
|
|
21
|
+
'Retomar operações normais',
|
|
22
|
+
'Documentar incidente',
|
|
23
|
+
'Implementar melhorias',
|
|
24
|
+
];
|
|
25
|
+
return {
|
|
26
|
+
rto,
|
|
27
|
+
rpo,
|
|
28
|
+
backup_strategy,
|
|
29
|
+
failover_procedure,
|
|
30
|
+
recovery_steps,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function formatDisasterRecoveryPlan(plan) {
|
|
34
|
+
const lines = [
|
|
35
|
+
'## Plano de Disaster Recovery',
|
|
36
|
+
'',
|
|
37
|
+
`**RTO (Recovery Time Objective):** ${plan.rto}`,
|
|
38
|
+
`**RPO (Recovery Point Objective):** ${plan.rpo}`,
|
|
39
|
+
'',
|
|
40
|
+
'### Estratégia de Backup',
|
|
41
|
+
plan.backup_strategy.split('\n').map(line => `- ${line}`).join('\n'),
|
|
42
|
+
'',
|
|
43
|
+
'### Procedimento de Failover',
|
|
44
|
+
];
|
|
45
|
+
for (let i = 0; i < plan.failover_procedure.length; i++) {
|
|
46
|
+
lines.push(`${i + 1}. ${plan.failover_procedure[i]}`);
|
|
47
|
+
}
|
|
48
|
+
lines.push('', '### Passos de Recuperação');
|
|
49
|
+
for (let i = 0; i < plan.recovery_steps.length; i++) {
|
|
50
|
+
lines.push(`${i + 1}. ${plan.recovery_steps[i]}`);
|
|
51
|
+
}
|
|
52
|
+
lines.push('', '### Contatos de Emergência', '- **Equipe Principal:** [Adicionar contatos]', '- **Fornecedor:** [Adicionar contato]', '- **Suporte:** [Adicionar contato]');
|
|
53
|
+
return lines.join('\n');
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../src/sdd/disaster/recovery.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,4BAA4B,CAAC,MAAsB;IACjE,MAAM,GAAG,GAAG,SAAS,CAAA;IACrB,MAAM,GAAG,GAAG,QAAQ,CAAA;IAEpB,MAAM,eAAe,GAAG;QACtB,iCAAiC;QACjC,gCAAgC;QAChC,iDAAiD;QACjD,mDAAmD;KACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,kBAAkB,GAAG;QACzB,0BAA0B;QAC1B,0BAA0B;QAC1B,sBAAsB;QACtB,iCAAiC;QACjC,wBAAwB;KACzB,CAAA;IAED,MAAM,cAAc,GAAG;QACrB,2BAA2B;QAC3B,kCAAkC;QAClC,iCAAiC;QACjC,2BAA2B;QAC3B,sBAAsB;QACtB,uBAAuB;KACxB,CAAA;IAED,OAAO;QACL,GAAG;QACH,GAAG;QACH,eAAe;QACf,kBAAkB;QAClB,cAAc;KACf,CAAA;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAA0B;IACnE,MAAM,KAAK,GAAG;QACZ,+BAA+B;QAC/B,EAAE;QACF,sCAAsC,IAAI,CAAC,GAAG,EAAE;QAChD,uCAAuC,IAAI,CAAC,GAAG,EAAE;QACjD,EAAE;QACF,0BAA0B;QAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACpE,EAAE;QACF,8BAA8B;KAC/B,CAAA;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAA;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,4BAA4B,EAC5B,8CAA8C,EAC9C,uCAAuC,EACvC,oCAAoC,CACrC,CAAA;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { KnowledgeGraph } from "../domain/types.js";
|
|
2
|
+
import type { QuestionForUser } from "./briefing.js";
|
|
3
|
+
/**
|
|
4
|
+
* Given a list of discovery questions and the current graph state,
|
|
5
|
+
* filter out questions that are already answered by existing graph data.
|
|
6
|
+
* This prevents redundant questions in brownfield projects.
|
|
7
|
+
*/
|
|
8
|
+
export declare function filterAlreadyAnswered(questions: QuestionForUser[], graph: KnowledgeGraph): QuestionForUser[];
|
|
9
|
+
/**
|
|
10
|
+
* Generate context-aware questions based on graph gaps.
|
|
11
|
+
* Instead of generic questions, ask about what's actually missing.
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateGapQuestions(graph: KnowledgeGraph): QuestionForUser[];
|
|
14
|
+
//# sourceMappingURL=adaptive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive.d.ts","sourceRoot":"","sources":["../../../src/sdd/discovery/adaptive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,eAAe,EAAE,EAC5B,KAAK,EAAE,cAAc,GACpB,eAAe,EAAE,CA+EnB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,EAAE,CAqE7E"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { getNodesByType } from "../graph/engine.js";
|
|
2
|
+
/**
|
|
3
|
+
* Given a list of discovery questions and the current graph state,
|
|
4
|
+
* filter out questions that are already answered by existing graph data.
|
|
5
|
+
* This prevents redundant questions in brownfield projects.
|
|
6
|
+
*/
|
|
7
|
+
export function filterAlreadyAnswered(questions, graph) {
|
|
8
|
+
const existingFeatures = getNodesByType(graph, "feature");
|
|
9
|
+
const existingEntities = getNodesByType(graph, "entity");
|
|
10
|
+
const existingEndpoints = getNodesByType(graph, "endpoint");
|
|
11
|
+
const existingApis = getNodesByType(graph, "api");
|
|
12
|
+
const existingArch = getNodesByType(graph, "architecture_component");
|
|
13
|
+
const existingDb = getNodesByType(graph, "database");
|
|
14
|
+
const existingRules = getNodesByType(graph, "business_rule");
|
|
15
|
+
// Build sets of existing info
|
|
16
|
+
const existingTechStack = new Set();
|
|
17
|
+
for (const arch of existingArch) {
|
|
18
|
+
const tech = arch.metadata.technology;
|
|
19
|
+
if (tech)
|
|
20
|
+
existingTechStack.add(tech.toLowerCase());
|
|
21
|
+
}
|
|
22
|
+
for (const db of existingDb) {
|
|
23
|
+
const engine = db.metadata.engine;
|
|
24
|
+
if (engine)
|
|
25
|
+
existingTechStack.add(engine.toLowerCase());
|
|
26
|
+
}
|
|
27
|
+
const existingEntityNames = new Set(existingEntities.map(e => e.name.toLowerCase()));
|
|
28
|
+
const existingFeatureNames = new Set(existingFeatures.map(f => f.name.toLowerCase()));
|
|
29
|
+
return questions.filter(q => {
|
|
30
|
+
const qLower = q.question.toLowerCase();
|
|
31
|
+
const headerLower = q.header.toLowerCase();
|
|
32
|
+
// Skip framework questions if we already have architecture components
|
|
33
|
+
if ((headerLower.includes("framework") || headerLower.includes("tech") || headerLower.includes("stack")) &&
|
|
34
|
+
existingTechStack.size > 0) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
// Skip database questions if we already have database nodes
|
|
38
|
+
if ((headerLower.includes("database") || headerLower.includes("banco")) &&
|
|
39
|
+
existingDb.length > 0) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
// Skip entity questions if entities already exist
|
|
43
|
+
if ((headerLower.includes("entidade") || headerLower.includes("entity") || headerLower.includes("modelo")) &&
|
|
44
|
+
existingEntities.length > 2) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
// Skip feature questions if features already exist
|
|
48
|
+
if ((headerLower.includes("feature") || headerLower.includes("funcionalidade")) &&
|
|
49
|
+
existingFeatures.length > 2) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
// Skip API questions if endpoints already exist
|
|
53
|
+
if ((headerLower.includes("api") || headerLower.includes("endpoint") || headerLower.includes("rota")) &&
|
|
54
|
+
existingEndpoints.length > 2) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
// Skip business rule questions if rules already exist
|
|
58
|
+
if ((headerLower.includes("regra") || headerLower.includes("rule") || headerLower.includes("negócio")) &&
|
|
59
|
+
existingRules.length > 2) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
// Check if specific options in the question are already covered
|
|
63
|
+
if (q.options && q.options.length > 0) {
|
|
64
|
+
const coveredOptions = q.options.filter(opt => {
|
|
65
|
+
const optLower = opt.label.toLowerCase();
|
|
66
|
+
return existingTechStack.has(optLower) ||
|
|
67
|
+
existingEntityNames.has(optLower) ||
|
|
68
|
+
existingFeatureNames.has(optLower);
|
|
69
|
+
});
|
|
70
|
+
// If most options are already covered, skip this question
|
|
71
|
+
if (coveredOptions.length >= q.options.length * 0.5) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Generate context-aware questions based on graph gaps.
|
|
80
|
+
* Instead of generic questions, ask about what's actually missing.
|
|
81
|
+
*/
|
|
82
|
+
export function generateGapQuestions(graph) {
|
|
83
|
+
const questions = [];
|
|
84
|
+
// Check for requirements without acceptance criteria
|
|
85
|
+
const reqs = getNodesByType(graph, "requirement");
|
|
86
|
+
const reqsWithoutCriteria = reqs.filter(r => {
|
|
87
|
+
const meta = r.metadata;
|
|
88
|
+
return !meta.acceptance_criteria || meta.acceptance_criteria.length === 0;
|
|
89
|
+
});
|
|
90
|
+
if (reqsWithoutCriteria.length > 0 && reqsWithoutCriteria.length <= 5) {
|
|
91
|
+
for (const req of reqsWithoutCriteria.slice(0, 3)) {
|
|
92
|
+
questions.push({
|
|
93
|
+
question: `What are the acceptance criteria for requirement "${req.name}"?`,
|
|
94
|
+
header: `Acceptance Criteria: ${req.name}`,
|
|
95
|
+
options: [
|
|
96
|
+
{ label: "Functional test", description: "Verify the feature works as expected" },
|
|
97
|
+
{ label: "Edge cases", description: "Handle error scenarios and boundary conditions" },
|
|
98
|
+
{ label: "Performance", description: "Response time and resource usage targets" },
|
|
99
|
+
{ label: "Security", description: "Authentication, authorization, data validation" },
|
|
100
|
+
],
|
|
101
|
+
multiple: true,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Check for features without requirements
|
|
106
|
+
const features = getNodesByType(graph, "feature");
|
|
107
|
+
const featuresWithoutReqs = features.filter(f => {
|
|
108
|
+
return !graph.relationships.some(r => r.from === f.id && r.type === "contains" &&
|
|
109
|
+
graph.nodes.some(n => n.id === r.to && n.type === "requirement"));
|
|
110
|
+
});
|
|
111
|
+
if (featuresWithoutReqs.length > 0 && featuresWithoutReqs.length <= 3) {
|
|
112
|
+
for (const feature of featuresWithoutReqs.slice(0, 2)) {
|
|
113
|
+
questions.push({
|
|
114
|
+
question: `What are the specific requirements for feature "${feature.name}"?`,
|
|
115
|
+
header: `Requirements: ${feature.name}`,
|
|
116
|
+
options: [
|
|
117
|
+
{ label: "CRUD operations", description: "Create, Read, Update, Delete" },
|
|
118
|
+
{ label: "Search & filter", description: "Query with filters and pagination" },
|
|
119
|
+
{ label: "Real-time", description: "WebSocket or SSE updates" },
|
|
120
|
+
{ label: "Export", description: "PDF, CSV, or other export formats" },
|
|
121
|
+
],
|
|
122
|
+
multiple: true,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Check for entities without persistence
|
|
127
|
+
const entities = getNodesByType(graph, "entity");
|
|
128
|
+
const entitiesWithoutDb = entities.filter(e => {
|
|
129
|
+
return !graph.relationships.some(r => r.from === e.id && r.type === "persists_to");
|
|
130
|
+
});
|
|
131
|
+
if (entitiesWithoutDb.length > 0) {
|
|
132
|
+
questions.push({
|
|
133
|
+
question: `Which database should the ${entitiesWithoutDb.length} entity(ies) (${entitiesWithoutDb.map(e => e.name).join(", ")}) persist to?`,
|
|
134
|
+
header: "Database for entities",
|
|
135
|
+
options: [
|
|
136
|
+
{ label: "PostgreSQL", description: "Relational, full-featured, JSON support" },
|
|
137
|
+
{ label: "SQLite", description: "Lightweight, file-based, good for development" },
|
|
138
|
+
{ label: "MongoDB", description: "Document-based, flexible schema" },
|
|
139
|
+
{ label: "MySQL", description: "Popular relational database" },
|
|
140
|
+
],
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return questions;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=adaptive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive.js","sourceRoot":"","sources":["../../../src/sdd/discovery/adaptive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface ExtractedFeature {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
priority: "critical" | "high" | "medium" | "low";
|
|
5
|
+
phase?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ExtractedEntity {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
fields: Array<{
|
|
11
|
+
name: string;
|
|
12
|
+
type: string;
|
|
13
|
+
required?: boolean;
|
|
14
|
+
unique?: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export interface ExtractedEndpoint {
|
|
18
|
+
method: string;
|
|
19
|
+
path: string;
|
|
20
|
+
description: string;
|
|
21
|
+
relatedEntity?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ExtractedBusinessRule {
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
relatedFeature?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ExtractedArchitectureComponent {
|
|
29
|
+
name: string;
|
|
30
|
+
layer: "frontend" | "backend" | "database" | "infrastructure" | "external";
|
|
31
|
+
technology: string;
|
|
32
|
+
description: string;
|
|
33
|
+
}
|
|
34
|
+
export interface ExtractedDecision {
|
|
35
|
+
title: string;
|
|
36
|
+
context: string;
|
|
37
|
+
decision: string;
|
|
38
|
+
consequences: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ExtractedRequirement {
|
|
41
|
+
name: string;
|
|
42
|
+
description: string;
|
|
43
|
+
type: "functional" | "non_functional";
|
|
44
|
+
priority: "critical" | "high" | "medium" | "low";
|
|
45
|
+
acceptanceCriteria: string[];
|
|
46
|
+
}
|
|
47
|
+
export interface ExtractedRelationship {
|
|
48
|
+
from: string;
|
|
49
|
+
to: string;
|
|
50
|
+
type: string;
|
|
51
|
+
}
|
|
52
|
+
export interface BriefingDeepAnalysis {
|
|
53
|
+
features: ExtractedFeature[];
|
|
54
|
+
entities: ExtractedEntity[];
|
|
55
|
+
endpoints: ExtractedEndpoint[];
|
|
56
|
+
businessRules: ExtractedBusinessRule[];
|
|
57
|
+
architectureComponents: ExtractedArchitectureComponent[];
|
|
58
|
+
decisions: ExtractedDecision[];
|
|
59
|
+
requirements: ExtractedRequirement[];
|
|
60
|
+
relationships: ExtractedRelationship[];
|
|
61
|
+
domains: string[];
|
|
62
|
+
techStack: Record<string, string>;
|
|
63
|
+
}
|
|
64
|
+
export declare function analyzeBriefingDeep(text: string): BriefingDeepAnalysis;
|
|
65
|
+
export declare function formatDeepAnalysis(analysis: BriefingDeepAnalysis): string;
|
|
66
|
+
//# sourceMappingURL=briefing-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"briefing-analyzer.d.ts","sourceRoot":"","sources":["../../../src/sdd/discovery/briefing-analyzer.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACpF;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAA;IAC1E,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAAA;IACrC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IAChD,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,SAAS,EAAE,iBAAiB,EAAE,CAAA;IAC9B,aAAa,EAAE,qBAAqB,EAAE,CAAA;IACtC,sBAAsB,EAAE,8BAA8B,EAAE,CAAA;IACxD,SAAS,EAAE,iBAAiB,EAAE,CAAA;IAC9B,YAAY,EAAE,oBAAoB,EAAE,CAAA;IACpC,aAAa,EAAE,qBAAqB,EAAE,CAAA;IACtC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAikBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CA+FtE;AAID,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAwDzE"}
|