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,279 @@
|
|
|
1
|
+
import type { KnowledgeGraph } from '../domain/types.js'
|
|
2
|
+
|
|
3
|
+
export interface ComplianceCheckResult {
|
|
4
|
+
standard: string
|
|
5
|
+
requirements: Array<{
|
|
6
|
+
id: string
|
|
7
|
+
description: string
|
|
8
|
+
status: 'met' | 'partially_met' | 'not_met'
|
|
9
|
+
evidence?: string
|
|
10
|
+
gap?: string
|
|
11
|
+
}>
|
|
12
|
+
score: number
|
|
13
|
+
recommendations: string[]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface ComplianceOptions {
|
|
17
|
+
/** Custom compliance requirements to add alongside standard ones. */
|
|
18
|
+
customStandards?: Array<{ id: string; description: string; check: (graph: KnowledgeGraph) => 'met' | 'partially_met' | 'not_met' }>
|
|
19
|
+
/** Only check these specific requirement IDs. */
|
|
20
|
+
focusRequirements?: string[]
|
|
21
|
+
/** Skip these requirement IDs. */
|
|
22
|
+
excludeChecks?: string[]
|
|
23
|
+
/** Max requirements to evaluate. */
|
|
24
|
+
maxRequirements?: number
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function checkCompliance(
|
|
28
|
+
_graph: KnowledgeGraph,
|
|
29
|
+
standard: string,
|
|
30
|
+
options?: ComplianceOptions,
|
|
31
|
+
): ComplianceCheckResult {
|
|
32
|
+
const requirements: ComplianceCheckResult['requirements'] = []
|
|
33
|
+
const recommendations: string[] = []
|
|
34
|
+
const maxReqs = options?.maxRequirements ?? Infinity
|
|
35
|
+
|
|
36
|
+
if (standard === 'GDPR') {
|
|
37
|
+
requirements.push({
|
|
38
|
+
id: 'GDPR-001',
|
|
39
|
+
description: 'Consentimento para coleta de dados',
|
|
40
|
+
status: 'not_met',
|
|
41
|
+
gap: 'Não há nós de consentimento no grafo',
|
|
42
|
+
})
|
|
43
|
+
requirements.push({
|
|
44
|
+
id: 'GDPR-002',
|
|
45
|
+
description: 'Direito ao esquecimento',
|
|
46
|
+
status: 'not_met',
|
|
47
|
+
gap: 'Não há implementação de exclusão de dados',
|
|
48
|
+
})
|
|
49
|
+
requirements.push({
|
|
50
|
+
id: 'GDPR-003',
|
|
51
|
+
description: 'Portabilidade de dados',
|
|
52
|
+
status: 'not_met',
|
|
53
|
+
gap: 'Não há exportação de dados implementada',
|
|
54
|
+
})
|
|
55
|
+
recommendations.push('Adicionar nós de consentimento')
|
|
56
|
+
recommendations.push('Implementar mecanismo de exclusão')
|
|
57
|
+
recommendations.push('Adicionar exportação de dados do usuário')
|
|
58
|
+
} else if (standard === 'LGPD') {
|
|
59
|
+
requirements.push({
|
|
60
|
+
id: 'LGPD-001',
|
|
61
|
+
description: 'Consentimento para coleta de dados pessoais',
|
|
62
|
+
status: 'not_met',
|
|
63
|
+
gap: 'Não há nós de consentimento no grafo',
|
|
64
|
+
})
|
|
65
|
+
requirements.push({
|
|
66
|
+
id: 'LGPD-002',
|
|
67
|
+
description: 'Finalidade específica para coleta',
|
|
68
|
+
status: 'not_met',
|
|
69
|
+
gap: 'Não há definição de finalidade para cada coleta',
|
|
70
|
+
})
|
|
71
|
+
requirements.push({
|
|
72
|
+
id: 'LGPD-003',
|
|
73
|
+
description: 'Direito de acesso e correção',
|
|
74
|
+
status: 'not_met',
|
|
75
|
+
gap: 'Não há mecanismo de acesso e correção de dados',
|
|
76
|
+
})
|
|
77
|
+
requirements.push({
|
|
78
|
+
id: 'LGPD-004',
|
|
79
|
+
description: 'Direito de exclusão (anonymização)',
|
|
80
|
+
status: 'not_met',
|
|
81
|
+
gap: 'Não há mecanismo de exclusão ou anonimização',
|
|
82
|
+
})
|
|
83
|
+
requirements.push({
|
|
84
|
+
id: 'LGPD-005',
|
|
85
|
+
description: 'Relatório de impacto à proteção de dados (RIPD)',
|
|
86
|
+
status: 'not_met',
|
|
87
|
+
gap: 'Não há RIPD documentado',
|
|
88
|
+
})
|
|
89
|
+
requirements.push({
|
|
90
|
+
id: 'LGPD-006',
|
|
91
|
+
description: 'Encarregado de dados (DPO)',
|
|
92
|
+
status: 'not_met',
|
|
93
|
+
gap: 'Não há DPO definido',
|
|
94
|
+
})
|
|
95
|
+
recommendations.push('Adicionar nós de consentimento com finalidade específica')
|
|
96
|
+
recommendations.push('Implementar mecanismo de acesso e correção de dados')
|
|
97
|
+
recommendations.push('Implementar exclusão ou anonimização de dados pessoais')
|
|
98
|
+
recommendations.push('Criar Relatório de Impacto à Proteção de Dados (RIPD)')
|
|
99
|
+
recommendations.push('Definir Encarregado de Dados (DPO)')
|
|
100
|
+
recommendations.push('Documentar bases legais para tratamento de dados')
|
|
101
|
+
} else if (standard === 'HIPAA') {
|
|
102
|
+
requirements.push({
|
|
103
|
+
id: 'HIPAA-001',
|
|
104
|
+
description: 'Criptografia de dados sensíveis',
|
|
105
|
+
status: 'not_met',
|
|
106
|
+
gap: 'Não há criptografia implementada',
|
|
107
|
+
})
|
|
108
|
+
requirements.push({
|
|
109
|
+
id: 'HIPAA-002',
|
|
110
|
+
description: 'Controle de acesso',
|
|
111
|
+
status: 'partially_met',
|
|
112
|
+
evidence: 'Sistema de permissões existe',
|
|
113
|
+
})
|
|
114
|
+
requirements.push({
|
|
115
|
+
id: 'HIPAA-003',
|
|
116
|
+
description: 'Audit trail',
|
|
117
|
+
status: 'partially_met',
|
|
118
|
+
evidence: 'Sistema de auditoria existe',
|
|
119
|
+
})
|
|
120
|
+
recommendations.push('Implementar criptografia em repouso e trânsito')
|
|
121
|
+
recommendations.push('Melhorar controle de acesso')
|
|
122
|
+
} else if (standard === 'SOC2') {
|
|
123
|
+
requirements.push({
|
|
124
|
+
id: 'SOC2-001',
|
|
125
|
+
description: 'Controle de acesso lógico',
|
|
126
|
+
status: 'partially_met',
|
|
127
|
+
evidence: 'Sistema de permissões existe',
|
|
128
|
+
})
|
|
129
|
+
requirements.push({
|
|
130
|
+
id: 'SOC2-002',
|
|
131
|
+
description: 'Mudanças autorizadas',
|
|
132
|
+
status: 'met',
|
|
133
|
+
evidence: 'Sistema de Change management implementado',
|
|
134
|
+
})
|
|
135
|
+
requirements.push({
|
|
136
|
+
id: 'SOC2-003',
|
|
137
|
+
description: 'Monitoramento de atividades',
|
|
138
|
+
status: 'not_met',
|
|
139
|
+
gap: 'Não há sistema de monitoramento',
|
|
140
|
+
})
|
|
141
|
+
recommendations.push('Implementar sistema de monitoramento')
|
|
142
|
+
recommendations.push('Adicionar alertas de segurança')
|
|
143
|
+
} else if (standard === 'PCI_DSS') {
|
|
144
|
+
requirements.push({
|
|
145
|
+
id: 'PCI-001',
|
|
146
|
+
description: 'Criptografia de dados de cartão de crédito',
|
|
147
|
+
status: 'not_met',
|
|
148
|
+
gap: 'Não há criptografia de dados de pagamento implementada',
|
|
149
|
+
})
|
|
150
|
+
requirements.push({
|
|
151
|
+
id: 'PCI-002',
|
|
152
|
+
description: 'Controle de acesso a dados de cartão',
|
|
153
|
+
status: 'not_met',
|
|
154
|
+
gap: 'Não há controle de acesso específico para dados de pagamento',
|
|
155
|
+
})
|
|
156
|
+
requirements.push({
|
|
157
|
+
id: 'PCI-003',
|
|
158
|
+
description: 'Monitoramento de acesso a dados de cartão',
|
|
159
|
+
status: 'not_met',
|
|
160
|
+
gap: 'Não há monitoramento de acesso a dados de pagamento',
|
|
161
|
+
})
|
|
162
|
+
requirements.push({
|
|
163
|
+
id: 'PCI-004',
|
|
164
|
+
description: 'Testes de segurança regulares',
|
|
165
|
+
status: 'not_met',
|
|
166
|
+
gap: 'Não há testes de segurança automatizados',
|
|
167
|
+
})
|
|
168
|
+
recommendations.push('Implementar criptografia AES-256 para dados de pagamento')
|
|
169
|
+
recommendations.push('Implementar tokenização para dados de cartão')
|
|
170
|
+
recommendations.push('Adicionar controle de acesso baseado em função (RBAC)')
|
|
171
|
+
recommendations.push('Implementar monitoramento em tempo real')
|
|
172
|
+
recommendations.push('Adicionar testes de segurança automatizados')
|
|
173
|
+
} else if (standard === 'ISO27001') {
|
|
174
|
+
requirements.push({
|
|
175
|
+
id: 'ISO-001',
|
|
176
|
+
description: 'Política de segurança da informação',
|
|
177
|
+
status: 'not_met',
|
|
178
|
+
gap: 'Não há política de segurança documentada',
|
|
179
|
+
})
|
|
180
|
+
requirements.push({
|
|
181
|
+
id: 'ISO-002',
|
|
182
|
+
description: 'Gestão de riscos',
|
|
183
|
+
status: 'not_met',
|
|
184
|
+
gap: 'Não há processo de gestão de riscos',
|
|
185
|
+
})
|
|
186
|
+
requirements.push({
|
|
187
|
+
id: 'ISO-003',
|
|
188
|
+
description: 'Controles de segurança',
|
|
189
|
+
status: 'partially_met',
|
|
190
|
+
evidence: 'Sistema de permissões existe',
|
|
191
|
+
})
|
|
192
|
+
requirements.push({
|
|
193
|
+
id: 'ISO-004',
|
|
194
|
+
description: 'Gestão de incidentes',
|
|
195
|
+
status: 'not_met',
|
|
196
|
+
gap: 'Não há processo formal de gestão de incidentes',
|
|
197
|
+
})
|
|
198
|
+
requirements.push({
|
|
199
|
+
id: 'ISO-005',
|
|
200
|
+
description: 'Continuidade de negócios',
|
|
201
|
+
status: 'not_met',
|
|
202
|
+
gap: 'Não há plano de continuidade de negócios',
|
|
203
|
+
})
|
|
204
|
+
recommendations.push('Documentar política de segurança da informação')
|
|
205
|
+
recommendations.push('Implementar processo de gestão de riscos')
|
|
206
|
+
recommendations.push('Estabelecer processo formal de gestão de incidentes')
|
|
207
|
+
recommendations.push('Criar plano de continuidade de negócios')
|
|
208
|
+
recommendations.push('Realizar auditorias internas regulares')
|
|
209
|
+
} else {
|
|
210
|
+
requirements.push({
|
|
211
|
+
id: 'GENERIC-001',
|
|
212
|
+
description: 'Autenticação e autorização',
|
|
213
|
+
status: 'partially_met',
|
|
214
|
+
evidence: 'Sistema de permissões existe',
|
|
215
|
+
})
|
|
216
|
+
recommendations.push('Verificar requisitos específicos do padrão')
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Apply custom standards
|
|
220
|
+
if (options?.customStandards?.length) {
|
|
221
|
+
for (const custom of options.customStandards) {
|
|
222
|
+
if (requirements.length >= maxReqs) break
|
|
223
|
+
if (options.excludeChecks?.includes(custom.id)) continue
|
|
224
|
+
if (options.focusRequirements?.length && !options.focusRequirements.includes(custom.id)) continue
|
|
225
|
+
requirements.push({
|
|
226
|
+
id: custom.id,
|
|
227
|
+
description: custom.description,
|
|
228
|
+
status: custom.check(_graph),
|
|
229
|
+
})
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Apply focus/exclude filters
|
|
234
|
+
const filteredReqs = requirements.filter((r) => {
|
|
235
|
+
if (options?.excludeChecks?.includes(r.id)) return false
|
|
236
|
+
if (options?.focusRequirements?.length && !options.focusRequirements.includes(r.id)) return false
|
|
237
|
+
return true
|
|
238
|
+
}).slice(0, maxReqs)
|
|
239
|
+
|
|
240
|
+
const metCount = filteredReqs.filter(r => r.status === 'met').length
|
|
241
|
+
const partialCount = filteredReqs.filter(r => r.status === 'partially_met').length
|
|
242
|
+
const score = filteredReqs.length > 0
|
|
243
|
+
? Math.round(((metCount + partialCount * 0.5) / filteredReqs.length) * 100)
|
|
244
|
+
: 0
|
|
245
|
+
|
|
246
|
+
return { standard, requirements: filteredReqs, score, recommendations }
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export function formatComplianceCheck(result: ComplianceCheckResult): string {
|
|
250
|
+
const lines = [
|
|
251
|
+
`## Verificação de Compliance - ${result.standard}`,
|
|
252
|
+
'',
|
|
253
|
+
`**Score:** ${result.score}/100`,
|
|
254
|
+
`**Requisitos:** ${result.requirements.length}`,
|
|
255
|
+
'',
|
|
256
|
+
]
|
|
257
|
+
|
|
258
|
+
lines.push('### Status dos Requisitos')
|
|
259
|
+
for (const req of result.requirements) {
|
|
260
|
+
const statusIcon = req.status === 'met' ? '✅' :
|
|
261
|
+
req.status === 'partially_met' ? '⚠️' : '❌'
|
|
262
|
+
lines.push(`${statusIcon} **${req.id}**: ${req.description}`)
|
|
263
|
+
|
|
264
|
+
if (req.evidence) {
|
|
265
|
+
lines.push(` - Evidência: ${req.evidence}`)
|
|
266
|
+
}
|
|
267
|
+
if (req.gap) {
|
|
268
|
+
lines.push(` - Lacuna: ${req.gap}`)
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
lines.push('')
|
|
273
|
+
lines.push('### Recomendações')
|
|
274
|
+
for (const rec of result.recommendations) {
|
|
275
|
+
lines.push(`- ${rec}`)
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
return lines.join('\n')
|
|
279
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { KnowledgeGraph } from '../domain/types.js'
|
|
2
|
+
|
|
3
|
+
export interface ScalabilityAnalysisResult {
|
|
4
|
+
bottlenecks: Array<{
|
|
5
|
+
type: string
|
|
6
|
+
location: string
|
|
7
|
+
impact: 'high' | 'medium' | 'low'
|
|
8
|
+
description: string
|
|
9
|
+
recommendation: string
|
|
10
|
+
}>
|
|
11
|
+
score: number
|
|
12
|
+
recommendations: string[]
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function analyzeScalability(graph: KnowledgeGraph): ScalabilityAnalysisResult {
|
|
16
|
+
const bottlenecks: ScalabilityAnalysisResult['bottlenecks'] = []
|
|
17
|
+
const recommendations: string[] = []
|
|
18
|
+
|
|
19
|
+
const endpoints = graph.nodes.filter(n => n.type === 'endpoint')
|
|
20
|
+
const entities = graph.nodes.filter(n => n.type === 'entity')
|
|
21
|
+
|
|
22
|
+
for (const endpoint of endpoints) {
|
|
23
|
+
const meta = endpoint.metadata as any
|
|
24
|
+
|
|
25
|
+
if (meta.method === 'GET' && meta.path.includes(':id')) {
|
|
26
|
+
bottlenecks.push({
|
|
27
|
+
type: 'n_plus_one_query',
|
|
28
|
+
location: `${meta.method} ${meta.path}`,
|
|
29
|
+
impact: 'medium',
|
|
30
|
+
description: 'Endpoint de busca por ID pode ter problema N+1',
|
|
31
|
+
recommendation: 'Implementar eager loading ou batch queries',
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (entities.length > 20) {
|
|
37
|
+
bottlenecks.push({
|
|
38
|
+
type: 'complex_data_model',
|
|
39
|
+
location: 'Knowledge Graph',
|
|
40
|
+
impact: 'medium',
|
|
41
|
+
description: `${entities.length} entidades podem causar complexidade`,
|
|
42
|
+
recommendation: 'Considerar particionamento ou caching',
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const databases = graph.nodes.filter(n => n.type === 'database')
|
|
47
|
+
if (databases.length === 0 && entities.length > 5) {
|
|
48
|
+
bottlenecks.push({
|
|
49
|
+
type: 'missing_database',
|
|
50
|
+
location: 'Arquitetura',
|
|
51
|
+
impact: 'high',
|
|
52
|
+
description: 'Sistema com muitas entidades sem banco de dados definido',
|
|
53
|
+
recommendation: 'Definir estratégia de persistência',
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const score = Math.max(0, 100 - bottlenecks.length * 20)
|
|
58
|
+
|
|
59
|
+
recommendations.push('Implementar caching para consultas frequentes')
|
|
60
|
+
recommendations.push('Considerar índices para campos de busca')
|
|
61
|
+
|
|
62
|
+
if (bottlenecks.length > 0) {
|
|
63
|
+
recommendations.push('Revisar gargalos identificados')
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return { bottlenecks, score, recommendations }
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function formatScalabilityAnalysis(result: ScalabilityAnalysisResult): string {
|
|
70
|
+
const lines = [
|
|
71
|
+
'## Análise de Escalabilidade',
|
|
72
|
+
'',
|
|
73
|
+
`**Score:** ${result.score}/100`,
|
|
74
|
+
`**Gargalos:** ${result.bottlenecks.length}`,
|
|
75
|
+
'',
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
if (result.bottlenecks.length > 0) {
|
|
79
|
+
lines.push('### Gargalos Identificados')
|
|
80
|
+
for (const bottleneck of result.bottlenecks) {
|
|
81
|
+
lines.push(`#### ${bottleneck.type} (${bottleneck.impact})`)
|
|
82
|
+
lines.push(`- **Local:** ${bottleneck.location}`)
|
|
83
|
+
lines.push(`- **Descrição:** ${bottleneck.description}`)
|
|
84
|
+
lines.push(`- **Recomendação:** ${bottleneck.recommendation}`)
|
|
85
|
+
lines.push('')
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
lines.push('✅ Nenhum gargalo crítico identificado')
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
lines.push('### Recomendações de Escalabilidade')
|
|
92
|
+
for (const rec of result.recommendations) {
|
|
93
|
+
lines.push(`- ${rec}`)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return lines.join('\n')
|
|
97
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { KnowledgeGraph } from '../domain/types.js'
|
|
2
|
+
|
|
3
|
+
export interface SecurityAuditResult {
|
|
4
|
+
vulnerabilities: Array<{
|
|
5
|
+
type: string
|
|
6
|
+
severity: 'critical' | 'high' | 'medium' | 'low'
|
|
7
|
+
location: string
|
|
8
|
+
description: string
|
|
9
|
+
recommendation: string
|
|
10
|
+
}>
|
|
11
|
+
score: number
|
|
12
|
+
recommendations: string[]
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface SecurityAuditOptions {
|
|
16
|
+
/** Only audit these specific endpoint IDs. */
|
|
17
|
+
focusEndpoints?: string[]
|
|
18
|
+
/** Only audit these specific entity IDs. */
|
|
19
|
+
focusEntities?: string[]
|
|
20
|
+
/** Minimum severity to include in results. */
|
|
21
|
+
minSeverity?: 'critical' | 'high' | 'medium' | 'low'
|
|
22
|
+
/** Max vulnerabilities to report. */
|
|
23
|
+
maxVulnerabilities?: number
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const SEVERITY_ORDER = { critical: 0, high: 1, medium: 2, low: 3 }
|
|
27
|
+
|
|
28
|
+
export function performSecurityAudit(
|
|
29
|
+
graph: KnowledgeGraph,
|
|
30
|
+
options?: SecurityAuditOptions,
|
|
31
|
+
): SecurityAuditResult {
|
|
32
|
+
const vulnerabilities: SecurityAuditResult['vulnerabilities'] = []
|
|
33
|
+
const recommendations: string[] = []
|
|
34
|
+
const maxVulns = options?.maxVulnerabilities ?? Infinity
|
|
35
|
+
|
|
36
|
+
// Filter endpoints
|
|
37
|
+
let endpoints = graph.nodes.filter(n => n.type === 'endpoint')
|
|
38
|
+
if (options?.focusEndpoints?.length) {
|
|
39
|
+
endpoints = endpoints.filter(e => options.focusEndpoints!.includes(e.id))
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
for (const endpoint of endpoints) {
|
|
43
|
+
if (vulnerabilities.length >= maxVulns) break
|
|
44
|
+
const meta = endpoint.metadata as any
|
|
45
|
+
|
|
46
|
+
if (meta.method === 'POST' || meta.method === 'PUT' || meta.method === 'DELETE') {
|
|
47
|
+
const hasAuth = graph.relationships.some(
|
|
48
|
+
r => r.from === endpoint.id && r.type === 'requires'
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
if (!hasAuth) {
|
|
52
|
+
const vuln = {
|
|
53
|
+
type: 'missing_authentication',
|
|
54
|
+
severity: 'high' as const,
|
|
55
|
+
location: `${meta.method} ${meta.path}`,
|
|
56
|
+
description: 'Endpoint de modificação sem autenticação',
|
|
57
|
+
recommendation: 'Adicionar middleware de autenticação',
|
|
58
|
+
}
|
|
59
|
+
if (!options?.minSeverity || SEVERITY_ORDER[vuln.severity] <= SEVERITY_ORDER[options.minSeverity]) {
|
|
60
|
+
vulnerabilities.push(vuln)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Filter entities
|
|
67
|
+
let entities = graph.nodes.filter(n => n.type === 'entity')
|
|
68
|
+
if (options?.focusEntities?.length) {
|
|
69
|
+
entities = entities.filter(e => options.focusEntities!.includes(e.id))
|
|
70
|
+
}
|
|
71
|
+
for (const entity of entities) {
|
|
72
|
+
if (vulnerabilities.length >= maxVulns) break
|
|
73
|
+
const fields = (entity.metadata as any).fields || []
|
|
74
|
+
const sensitiveFields = fields.filter((f: any) =>
|
|
75
|
+
f.name.includes('password') ||
|
|
76
|
+
f.name.includes('token') ||
|
|
77
|
+
f.name.includes('secret')
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
if (sensitiveFields.length > 0) {
|
|
81
|
+
const vuln = {
|
|
82
|
+
type: 'sensitive_dataexposure',
|
|
83
|
+
severity: 'medium' as const,
|
|
84
|
+
location: `Entity: ${entity.name}`,
|
|
85
|
+
description: `Campos sensíveis detectados: ${sensitiveFields.map((f: any) => f.name).join(', ')}`,
|
|
86
|
+
recommendation: 'Criptografar ou mascarar campos sensíveis',
|
|
87
|
+
}
|
|
88
|
+
if (!options?.minSeverity || SEVERITY_ORDER[vuln.severity] <= SEVERITY_ORDER[options.minSeverity]) {
|
|
89
|
+
vulnerabilities.push(vuln)
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const score = Math.max(0, 100 - vulnerabilities.length * 15)
|
|
95
|
+
|
|
96
|
+
if (vulnerabilities.length === 0) {
|
|
97
|
+
recommendations.push('Nenhuma vulnerabilidade crítica detectada')
|
|
98
|
+
} else {
|
|
99
|
+
recommendations.push('Corrigir vulnerabilidades antes de produção')
|
|
100
|
+
recommendations.push('Implementar HTTPS em todos os endpoints')
|
|
101
|
+
recommendations.push('Adicionar rate limiting')
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return { vulnerabilities, score, recommendations }
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function formatSecurityAudit(result: SecurityAuditResult): string {
|
|
108
|
+
const lines = [
|
|
109
|
+
'## Relatório de Auditoria de Segurança',
|
|
110
|
+
'',
|
|
111
|
+
`**Score:** ${result.score}/100`,
|
|
112
|
+
`**Vulnerabilidades:** ${result.vulnerabilities.length}`,
|
|
113
|
+
'',
|
|
114
|
+
]
|
|
115
|
+
|
|
116
|
+
if (result.vulnerabilities.length > 0) {
|
|
117
|
+
lines.push('### Vulnerabilidades Detectadas')
|
|
118
|
+
for (const vuln of result.vulnerabilities) {
|
|
119
|
+
lines.push(`#### ${vuln.type} (${vuln.severity})`)
|
|
120
|
+
lines.push(`- **Local:** ${vuln.location}`)
|
|
121
|
+
lines.push(`- **Descrição:** ${vuln.description}`)
|
|
122
|
+
lines.push(`- **Recomendação:** ${vuln.recommendation}`)
|
|
123
|
+
lines.push('')
|
|
124
|
+
}
|
|
125
|
+
} else {
|
|
126
|
+
lines.push('✅ Nenhuma vulnerabilidade detectada')
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
lines.push('### Recomendações Gerais')
|
|
130
|
+
for (const rec of result.recommendations) {
|
|
131
|
+
lines.push(`- ${rec}`)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return lines.join('\n')
|
|
135
|
+
}
|