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
package/README.md
ADDED
|
@@ -0,0 +1,927 @@
|
|
|
1
|
+
# OPENCODE TELOS
|
|
2
|
+
|
|
3
|
+
Plugin de **Spec-Driven Development (SDD)** para o [OpenCode](https://github.com/anomalyco/opencode). Transforma o ambiente de desenvolvimento em um sistema conversacional baseado em Knowledge Graph, onde a especificação sempre vem antes do código.
|
|
4
|
+
|
|
5
|
+
## O que faz
|
|
6
|
+
|
|
7
|
+
- **Descoberta conversacional**: analisa seu briefing, detecta o que falta e faz perguntas com menus de seleção (via ferramenta `question` do OpenCode)
|
|
8
|
+
- **Knowledge Graph**: mantém um grafo semântico como fonte de verdade do projeto
|
|
9
|
+
- **Tech stack configurável**: detecta tecnologias mencionadas, usa conhecimento do AI para stacks não suportadas por templates
|
|
10
|
+
- **Referências @**: leitura de arquivos `.md` para extrair especificações de stack
|
|
11
|
+
- **Geração de código**: gera código para stacks suportadas (Express+React+SQLite) ou usa AI para stacks arbitrárias
|
|
12
|
+
- **Enforcement SDD-first**: bloqueia modificações no código que não passaram pela especificação
|
|
13
|
+
- **Change management**: toda mudança vira um Change node rastreável no grafo
|
|
14
|
+
- **Impact analysis**: traversa o grafo para mostrar o que será afetado
|
|
15
|
+
- **Drift detection**: detecta quando o código desviou da especificação
|
|
16
|
+
- **Dashboard web**: visualização 3D do grafo em tempo real com 3d-force-graph
|
|
17
|
+
- **Constitution**: define princípios obrigatórios, opcionais e desejados para o projeto
|
|
18
|
+
- **Promise tracking**: rastreia promessas de especificação e detecta violações
|
|
19
|
+
- **Quality scoring**: calcula score de qualidade (0-100%) com tendência
|
|
20
|
+
- **Anti-pattern detection**: identifica nós gods, dependências circulares, especulação
|
|
21
|
+
- **AST clone detection**: detecta código duplicado no projeto
|
|
22
|
+
- **Contradiction detection**: identifica requisitos e regras conflitantes
|
|
23
|
+
- **Test coverage tracking**: mede cobertura de testes por requisito
|
|
24
|
+
- **Config drift detection**: detecta inconsistências em configs
|
|
25
|
+
- **Session handoff**: gera pacote de estado para continuar trabalho
|
|
26
|
+
- **Workflow export**: exporta estado do SDD como relatório estruturado
|
|
27
|
+
- **Shell hooks**: instala hooks Git para integração SDD
|
|
28
|
+
- **Brownfield scanning**: analisa projetos existentes para integração
|
|
29
|
+
- **CI/CD Integration**: gera GitHub Actions, GitLab CI, Jenkins, Docker, CircleCI, Azure DevOps, AWS CodePipeline, Travis CI, NPM Publish, Docker Compose, Maven (Java), Python (pip), Go (GoReleaser) com validação SDD
|
|
30
|
+
- **Multi-developer Sync**: sincronização via Git com detecção e resolução de conflitos
|
|
31
|
+
- **Rollback**: 3 camadas de reversão (git → snapshot → backup)
|
|
32
|
+
- **Permissions**: controle de acesso por roles (admin, architect, developer, viewer) com autenticação GitHub/GitLab
|
|
33
|
+
- **Enterprise Workflows**: workflows automáticos para cenários enterprise:
|
|
34
|
+
- **Bug Fixing**: workflow com aprovação automática
|
|
35
|
+
- **Hotfix/Emergência**: bypass de enforcement + documentação retroativa
|
|
36
|
+
- **Refactoring**: verificação de dependências + testes obrigatórios
|
|
37
|
+
- **Deprecation**: plano de migração + notificações
|
|
38
|
+
- **Data Migration**: scripts de migração + rollback
|
|
39
|
+
- **A/B Testing**: experimentos com variantes
|
|
40
|
+
- **Feature Flags**: controle de rollout
|
|
41
|
+
- **Multi-tenancy**: isolamento de dados
|
|
42
|
+
- **Onboarding**: guia para novos desenvolvedores
|
|
43
|
+
- **Security Audit**: auditoria de segurança automatizada
|
|
44
|
+
- **Scalability Analysis**: análise de escalabilidade
|
|
45
|
+
- **Compliance**: validação regulatory (GDPR, HIPAA, SOC2)
|
|
46
|
+
- **Monitoring**: configuração de métricas e alertas
|
|
47
|
+
- **Incident Management**: gestão de incidentes
|
|
48
|
+
- **SLA Tracking**: rastreamento de acordos de nível de serviço
|
|
49
|
+
- **Cost Management**: estimativa de custos
|
|
50
|
+
- **Documentation**: geração de documentação
|
|
51
|
+
- **Knowledge Transfer**: transferência de conhecimento
|
|
52
|
+
- **Disaster Recovery**: plano de recuperação de desastres
|
|
53
|
+
|
|
54
|
+
## Pré-requisitos
|
|
55
|
+
|
|
56
|
+
- [OpenCode](https://github.com/anomalyco/opencode) instalado
|
|
57
|
+
- [Bun](https://bun.sh) (runtime do plugin)
|
|
58
|
+
|
|
59
|
+
## Instalação
|
|
60
|
+
|
|
61
|
+
### Opção 1: Via OpenCode CLI (recomendado)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
opencode plugin add opencode-telos
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Isso instala o plugin automaticamente no seu OpenCode.
|
|
68
|
+
|
|
69
|
+
### Opção 2: Via npm
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npm install -g opencode-telos
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Depois adicione no `opencode.json`:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"plugin": ["opencode-telos"]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Opção 3: Plugin local
|
|
84
|
+
|
|
85
|
+
Clone ou copie a pasta do plugin para um diretório acessível:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
git clone https://github.com/JudahAragao/opencode-telos.git ~/.config/opencode/plugins/opencode-telos
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Depois adicione no `opencode.json`:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"plugin": ["~/.config/opencode/plugins/opencode-telos"]
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Opção 4: Plugin no projeto
|
|
100
|
+
|
|
101
|
+
Copie a pasta `opencode-telos` para dentro do seu projeto:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
cp -r /caminho/opencode-telos ./opencode-telos
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Depois adicione no `opencode.json`:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"plugin": ["./opencode-telos"]
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Como funciona a interação
|
|
116
|
+
|
|
117
|
+
### Toggle SDD (liga/desliga)
|
|
118
|
+
|
|
119
|
+
O plugin pode ser ligado ou desligado a qualquer momento:
|
|
120
|
+
|
|
121
|
+
| Comando | Efeito |
|
|
122
|
+
|---|---|
|
|
123
|
+
| `/sdd on` | Ativa enforcement SDD (toda mudança precisa de spec) |
|
|
124
|
+
| `/sdd off` | Desativa enforcement (pode codar livremente) |
|
|
125
|
+
| `/sdd status` | Mostra estado atual |
|
|
126
|
+
|
|
127
|
+
Quando desativado:
|
|
128
|
+
- O system prompt SDD não é injetado
|
|
129
|
+
- Não há enforcement em writes/edits
|
|
130
|
+
- O agente pode modificar código diretamente
|
|
131
|
+
|
|
132
|
+
Quando ativado:
|
|
133
|
+
- Workflow SDD-first obrigatório
|
|
134
|
+
- Spec antes de código
|
|
135
|
+
- Change nodes para toda modificação
|
|
136
|
+
|
|
137
|
+
Também disponível via tool: `sdd.toggle(enabled: true|false)`
|
|
138
|
+
|
|
139
|
+
### Passo 1: Descreva o projeto
|
|
140
|
+
|
|
141
|
+
Abra o OpenCode na pasta do seu projeto e descreva o que quer criar:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
Quero criar um sistema de gerenciamento de tarefas.
|
|
145
|
+
Cada usuário terá suas próprias tarefas com título, descrição e status.
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
O plugin automaticamente:
|
|
149
|
+
|
|
150
|
+
1. Detecta que não existe SDD inicializado
|
|
151
|
+
2. Roda `sdd.discover` analisando seu briefing
|
|
152
|
+
3. Detecta: entidades (usuário, tarefa), domínio (task_management)
|
|
153
|
+
4. Detecta tecnologias mencionadas (nenhuma ainda)
|
|
154
|
+
5. Retorna perguntas estruturadas para a ferramenta `question`
|
|
155
|
+
|
|
156
|
+
### Passo 2: Responda com menus de seleção
|
|
157
|
+
|
|
158
|
+
O OpenCode exibe um menu para cada pergunta faltante:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
? Qual framework será usado no frontend?
|
|
162
|
+
> React
|
|
163
|
+
Vue.js
|
|
164
|
+
Angular
|
|
165
|
+
Svelte
|
|
166
|
+
Next.js
|
|
167
|
+
[Digite sua própria resposta]
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
? Qual framework será usado no backend?
|
|
172
|
+
> Express
|
|
173
|
+
Fastify
|
|
174
|
+
NestJS
|
|
175
|
+
Django
|
|
176
|
+
FastAPI
|
|
177
|
+
[Digite sua própria resposta]
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
? Qual banco de dados será utilizado?
|
|
182
|
+
> SQLite
|
|
183
|
+
PostgreSQL
|
|
184
|
+
MySQL
|
|
185
|
+
MongoDB
|
|
186
|
+
[Digite sua própria resposta]
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
? Como os usuários farão login no sistema?
|
|
191
|
+
> Email + Senha
|
|
192
|
+
Google OAuth
|
|
193
|
+
JWT
|
|
194
|
+
Sem autenticação
|
|
195
|
+
[Digite sua própria resposta]
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
? Como devem funcionar as exclusões no sistema?
|
|
200
|
+
> Hard delete (permanente)
|
|
201
|
+
Soft delete (reversível)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Você seleciona uma opção ou digita sua própria resposta. O plugin atualiza o Knowledge Graph automaticamente.
|
|
205
|
+
|
|
206
|
+
### Passo 3: Especifique a stack via arquivos .md (opcional)
|
|
207
|
+
|
|
208
|
+
Se preferir definir a stack em um arquivo, crie um `.md` e referencie com `@`:
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
Quero um sistema de tarefas. @tech.md
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Onde `tech.md` contém:
|
|
215
|
+
|
|
216
|
+
```markdown
|
|
217
|
+
## Stack
|
|
218
|
+
- Frontend: Next.js + Tailwind
|
|
219
|
+
- Backend: FastAPI (Python)
|
|
220
|
+
- Database: PostgreSQL
|
|
221
|
+
- Auth: Clerk
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
O plugin lê o arquivo, detecta as tecnologias e **não pergunta** sobre elas.
|
|
225
|
+
|
|
226
|
+
### Passo 4: Gere o código
|
|
227
|
+
|
|
228
|
+
Depois que a especificação estiver suficiente:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
Gere o código do projeto
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
O plugin:
|
|
235
|
+
|
|
236
|
+
- Se a stack tem templates built-in (Express+React+SQLite): gera os arquivos automaticamente
|
|
237
|
+
- Se a stack é diferente: retorna uma especificação detalhada e o AI gera o código usando seu conhecimento sobre as tecnologias escolhidas
|
|
238
|
+
|
|
239
|
+
### Passo 5: Modifique funcionalidades
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
Adicione um campo de prioridade nas tarefas com valores LOW, MEDIUM e HIGH
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
O plugin **força** o workflow SDD:
|
|
246
|
+
|
|
247
|
+
1. `sdd.enforce` → classifica como "add_functionality"
|
|
248
|
+
2. Cria um Change node (ex: CHG-001)
|
|
249
|
+
3. Analisa impacto: entidade Task, API, testes
|
|
250
|
+
4. Atualiza a especificação
|
|
251
|
+
5. Valida o SDD
|
|
252
|
+
6. Regenera o código afetado
|
|
253
|
+
7. Completa o Change
|
|
254
|
+
|
|
255
|
+
### Passo 6: Mudanças arquiteturais
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
Mude o banco de SQLite para PostgreSQL
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
O plugin **bloqueia** e pede aprovação explícita antes de prosseguir.
|
|
262
|
+
|
|
263
|
+
### Passo 7: Verifique drift
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
Verifique se há drift no projeto
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
O plugin compara o grafo com o código e reporta divergências.
|
|
270
|
+
|
|
271
|
+
### Completar especificação manualmente
|
|
272
|
+
|
|
273
|
+
Se achar que a IA não fez todas as perguntas, você pode:
|
|
274
|
+
|
|
275
|
+
**Validar o que falta:**
|
|
276
|
+
```
|
|
277
|
+
Valide o SDD e me diga o que está faltando na spec
|
|
278
|
+
```
|
|
279
|
+
O agente roda `sdd.validate` e lista erros/warnings (ex: entity sem campos, requirement sem task).
|
|
280
|
+
|
|
281
|
+
**Rodar discovery de novo:**
|
|
282
|
+
```
|
|
283
|
+
Analise o SDD atual e faça todas as perguntas que faltam
|
|
284
|
+
```
|
|
285
|
+
O agente inspeciona o grafo com `sdd.inspect`, identifica gaps, e faz perguntas via `question`.
|
|
286
|
+
|
|
287
|
+
**Verificar completude antes de gerar:**
|
|
288
|
+
```
|
|
289
|
+
Verifique se a spec está completa antes de gerar código
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Adicionar entidades/regras manualmente:**
|
|
293
|
+
```
|
|
294
|
+
Adicione uma entidade Tenant com campos id (uuid), name (string), created_at (timestamp)
|
|
295
|
+
```
|
|
296
|
+
O agente roda `sdd.add_node` direto.
|
|
297
|
+
|
|
298
|
+
**Adicionar relacionamento:**
|
|
299
|
+
```
|
|
300
|
+
Crie um relacionamento: Tenant contains User
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Consultar estado atual:**
|
|
304
|
+
```
|
|
305
|
+
Mostre o estado atual do SDD
|
|
306
|
+
```
|
|
307
|
+
O agente roda `sdd.inspect` mostrando stats, nós por tipo e distribuição de status.
|
|
308
|
+
|
|
309
|
+
## Ferramentas disponíveis
|
|
310
|
+
|
|
311
|
+
### Inicialização e Gestão do Grafo
|
|
312
|
+
|
|
313
|
+
| Ferramenta | Descrição |
|
|
314
|
+
|---|---|
|
|
315
|
+
| `sdd.initialize` | Inicializa o SDD para o projeto |
|
|
316
|
+
| `sdd.toggle_status` | Liga/desliga enforcement SDD |
|
|
317
|
+
| `sdd.list_snapshots` | Lista snapshots disponíveis para rollback |
|
|
318
|
+
|
|
319
|
+
### Navegação e Busca
|
|
320
|
+
|
|
321
|
+
| Ferramenta | Descrição |
|
|
322
|
+
|---|---|
|
|
323
|
+
| `sdd.inspect` | Mostra estado atual do grafo |
|
|
324
|
+
| `sdd.query_graph` | Busca nós por texto, tipo ou ID |
|
|
325
|
+
| `sdd.list_nodes` | Lista nós por tipo |
|
|
326
|
+
| `sdd.count_nodes` | Conta nós por tipo |
|
|
327
|
+
| `sdd.get_nodes_by_status` | Lista nós filtrados por status |
|
|
328
|
+
| `sdd.get_context` | Context pack para um nó |
|
|
329
|
+
| `sdd.find_path` | Encontra caminho entre nós |
|
|
330
|
+
| `sdd.analyze_impact` | Análise de impacto via traversal |
|
|
331
|
+
|
|
332
|
+
### Graph Traversal
|
|
333
|
+
|
|
334
|
+
| Ferramenta | Descrição |
|
|
335
|
+
|---||
|
|
336
|
+
| `sdd.traverse_outgoing` | BFS seguindo arestas de saída |
|
|
337
|
+
| `sdd.traverse_incoming` | BFS seguindo arestas de entrada |
|
|
338
|
+
| `sdd.traverse_both` | BFS bidirecional |
|
|
339
|
+
| `sdd.get_subgraph` | Extrai subgrafo a partir de um nó |
|
|
340
|
+
|
|
341
|
+
### CRUD de Nós e Relacionamentos
|
|
342
|
+
|
|
343
|
+
| Ferramenta | Descrição |
|
|
344
|
+
|---|---|
|
|
345
|
+
| `sdd.add_node` | Adiciona feature, requirement, entity, etc. |
|
|
346
|
+
| `sdd.update_node` | Atualiza campos de um nó existente |
|
|
347
|
+
| `sdd.remove_node` | Remove um nó do grafo |
|
|
348
|
+
| `sdd.add_relationship` | Cria relações entre nós |
|
|
349
|
+
| `sdd.remove_relationship` | Remove um relacionamento |
|
|
350
|
+
|
|
351
|
+
### Descoberta e Briefing
|
|
352
|
+
|
|
353
|
+
| Ferramenta | Descrição |
|
|
354
|
+
|---|---|
|
|
355
|
+
| `sdd.discover` | Analisa briefing, retorna perguntas para a ferramenta `question` |
|
|
356
|
+
| `sdd.update_from_answers` | Atualiza grafo com respostas |
|
|
357
|
+
|
|
358
|
+
### Change Management
|
|
359
|
+
|
|
360
|
+
| Ferramenta | Descrição |
|
|
361
|
+
|---|---|
|
|
362
|
+
| `sdd.create_change` | Cria Change com approval gates |
|
|
363
|
+
| `sdd.approve_change` | Aprova uma mudança |
|
|
364
|
+
| `sdd.complete_change` | Marca mudança como completa |
|
|
365
|
+
| `sdd.pending_changes` | Lista mudanças pendentes |
|
|
366
|
+
|
|
367
|
+
### Validação e Qualidade
|
|
368
|
+
|
|
369
|
+
| Ferramenta | Descrição |
|
|
370
|
+
|---|---|
|
|
371
|
+
| `sdd.validate` | Valida integridade do SDD |
|
|
372
|
+
| `sdd.constitution` | Gerencia constituição do projeto (princípios) |
|
|
373
|
+
| `sdd.quality` | Calcula score de qualidade com tendência |
|
|
374
|
+
| `sdd.contradictions` | Detecta contradições no grafo |
|
|
375
|
+
| `sdd.verify_usage` | Verifica uso de funcionalidades SDD |
|
|
376
|
+
|
|
377
|
+
### Detecção de Drift
|
|
378
|
+
|
|
379
|
+
| Ferramenta | Descrição |
|
|
380
|
+
|---|---|
|
|
381
|
+
| `sdd.detect_drift` | Detecta drift specification ↔ código |
|
|
382
|
+
| `sdd.config_drift` | Detecta drift em configs |
|
|
383
|
+
| `sdd.detect_sync_conflicts` | Detecta conflitos entre grafo local e remoto |
|
|
384
|
+
|
|
385
|
+
### Padrões e Anti-Patterns
|
|
386
|
+
|
|
387
|
+
| Ferramenta | Descrição |
|
|
388
|
+
|---|---|
|
|
389
|
+
| `sdd.anti_patterns` | Detecta padrões antiéticos no grafo |
|
|
390
|
+
| `sdd.clone_detection` | Detecta código duplicado no projeto |
|
|
391
|
+
|
|
392
|
+
### Código e Geração
|
|
393
|
+
|
|
394
|
+
| Ferramenta | Descrição |
|
|
395
|
+
|---|---|
|
|
396
|
+
| `sdd.plan_implementation` | Gera plano de implementação |
|
|
397
|
+
| `sdd.generate_code` | Gera código (templates ou via AI para stacks arbitrárias) |
|
|
398
|
+
| `sdd.enforce` | Força workflow SDD-first |
|
|
399
|
+
| `sdd.enforce_rules` | Mostra regras de enforcement |
|
|
400
|
+
| `sdd.full_cycle` | Ciclo completo: enforce → validate → generate → sync |
|
|
401
|
+
|
|
402
|
+
### Qualidade de Código
|
|
403
|
+
|
|
404
|
+
| Ferramenta | Descrição |
|
|
405
|
+
|---|---|
|
|
406
|
+
| `sdd.analyze_complexity` | Analisa complexidade ciclomática e cognitiva |
|
|
407
|
+
| `sdd.code_metrics` | Métricas de código (LOC, SLOC, nesting depth) |
|
|
408
|
+
| `sdd.detect_smells` | Detecta code smells |
|
|
409
|
+
| `sdd.analyze_dependencies` | Analisa grafo de dependências e coupling |
|
|
410
|
+
| `sdd.find_dead_code` | Encontra código não utilizado |
|
|
411
|
+
| `sdd.remove_dead_code` | Remove código morto identificado |
|
|
412
|
+
| `sdd.parse_symbols` | Parseia símbolos (funções, classes, interfaces) |
|
|
413
|
+
|
|
414
|
+
### Análise
|
|
415
|
+
|
|
416
|
+
| Ferramenta | Descrição |
|
|
417
|
+
|---|---|
|
|
418
|
+
| `sdd.check_compliance` | Verificação de compliance (GDPR, LGPD, HIPAA, SOC2) |
|
|
419
|
+
| `sdd.security_audit` | Auditoria de segurança |
|
|
420
|
+
| `sdd.analyze_scalability` | Análise de escalabilidade |
|
|
421
|
+
|
|
422
|
+
### Codebase Intelligence
|
|
423
|
+
|
|
424
|
+
| Ferramenta | Descrição |
|
|
425
|
+
|---|---|
|
|
426
|
+
| `sdd.analyze_codebase` | Analisa codebase completa e cria nós de arquivo/símbolo |
|
|
427
|
+
|
|
428
|
+
### Sync e Colaboração
|
|
429
|
+
|
|
430
|
+
| Ferramenta | Descrição |
|
|
431
|
+
|---|---|
|
|
432
|
+
| `sdd.sync_status` | Verifica status de sincronização com remote |
|
|
433
|
+
| `sdd.sync_pull` | Puxa últimas mudanças do remote |
|
|
434
|
+
| `sdd.sync_push` | Envia mudanças SDD para remote |
|
|
435
|
+
| `sdd.merge_graphs` | Merge de dois grafos |
|
|
436
|
+
|
|
437
|
+
### Rollback
|
|
438
|
+
|
|
439
|
+
| Ferramenta | Descrição |
|
|
440
|
+
|---|---|
|
|
441
|
+
| `sdd.create_snapshot` | Cria snapshot antes de mudanças |
|
|
442
|
+
| `sdd.rollback` | Reverte uma change (git → snapshot → backup) |
|
|
443
|
+
| `sdd.rollback_history` | Histórico de rollbacks |
|
|
444
|
+
|
|
445
|
+
### Permissões
|
|
446
|
+
|
|
447
|
+
| Ferramenta | Descrição |
|
|
448
|
+
|---|---|
|
|
449
|
+
| `sdd.load_permissions_config` | Carrega config de permissões |
|
|
450
|
+
| `sdd.save_permissions_config` | Salva config de permissões |
|
|
451
|
+
| `sdd.check_permission` | Verifica permissão de um usuário |
|
|
452
|
+
| `sdd.check_change_approval` | Verifica se mudança precisa de aprovação |
|
|
453
|
+
| `sdd.set_role` | Define role de um usuário |
|
|
454
|
+
| `sdd.get_user_role` | Retorna role do usuário |
|
|
455
|
+
| `sdd.audit_log` | Visualiza log de auditoria |
|
|
456
|
+
|
|
457
|
+
### Enterprise Workflows
|
|
458
|
+
|
|
459
|
+
| Ferramenta | Descrição | Approval Level |
|
|
460
|
+
|---|---|---|
|
|
461
|
+
| `sdd.bug_fix` | Workflow de bug fix completo | AUTO |
|
|
462
|
+
| `sdd.hotfix` | Documentar hotfix retroativo | POST_HOC |
|
|
463
|
+
| `sdd.refactoring` | Refactoring com verificação de dependências | REVIEW |
|
|
464
|
+
| `sdd.deprecate` | Deprecation com plano de migração | APPROVAL |
|
|
465
|
+
| `sdd.create_migration` | Migração de dados com rollback | APPROVAL |
|
|
466
|
+
| `sdd.create_experiment` | Experimento A/B | REVIEW |
|
|
467
|
+
| `sdd.create_flag` | Feature flag | AUTO |
|
|
468
|
+
| `sdd.create_tenant` | Multi-tenancy | APPROVAL |
|
|
469
|
+
| `sdd.onboard_developer` | Guia de onboarding | - |
|
|
470
|
+
| `sdd.report_incident` | Reportar incidente | - |
|
|
471
|
+
| `sdd.create_sla` | Criar SLA | - |
|
|
472
|
+
|
|
473
|
+
### Monitoramento e Observabilidade
|
|
474
|
+
|
|
475
|
+
| Ferramenta | Descrição |
|
|
476
|
+
|---|---|
|
|
477
|
+
| `sdd.setup_monitoring` | Configuração de monitoramento |
|
|
478
|
+
| `sdd.generate_dashboard` | Gerar dashboard de monitoramento |
|
|
479
|
+
|
|
480
|
+
### Documentação e Conhecimento
|
|
481
|
+
|
|
482
|
+
| Ferramenta | Descrição |
|
|
483
|
+
|---|---|
|
|
484
|
+
| `sdd.generate_docs` | Gerar documentação (API, user guide, dev guide, architecture) |
|
|
485
|
+
| `sdd.knowledge_transfer` | Transferência de conhecimento |
|
|
486
|
+
| `sdd.session_handoff` | Gera pacote de handoff da sessão |
|
|
487
|
+
| `sdd.workflow_export` | Exporta estado do SDD como relatório |
|
|
488
|
+
|
|
489
|
+
### Custo e CICD
|
|
490
|
+
|
|
491
|
+
| Ferramenta | Descrição |
|
|
492
|
+
|---|---|
|
|
493
|
+
| `sdd.estimate_cost` | Estimativa de custos |
|
|
494
|
+
| `sdd.generate_cicd` | Gera config CI/CD (GitHub, GitLab, Jenkins, Docker) |
|
|
495
|
+
| `sdd.disaster_recovery_plan` | Plano de disaster recovery |
|
|
496
|
+
|
|
497
|
+
### Infraestrutura
|
|
498
|
+
|
|
499
|
+
| Ferramenta | Descrição |
|
|
500
|
+
|---|---|
|
|
501
|
+
| `sdd.install_hooks` | Instala hooks Git para SDD |
|
|
502
|
+
| `sdd.brownfield_scan` | Analisa projeto existente |
|
|
503
|
+
| `sdd.start_dashboard` | Inicia servidor web com visualização 3D do grafo |
|
|
504
|
+
| `sdd.mcp_server_info` | Informações do servidor MCP |
|
|
505
|
+
| `sdd.handle_mcp_tool` | Processa tool via protocolo MCP |
|
|
506
|
+
|
|
507
|
+
### Promessas
|
|
508
|
+
|
|
509
|
+
| Ferramenta | Descrição |
|
|
510
|
+
|---|---|
|
|
511
|
+
| `sdd.promises` | Rastreia promessas de especificação |
|
|
512
|
+
| `sdd.coverage` | Mede cobertura de testes por requisito |
|
|
513
|
+
|
|
514
|
+
## Tech Stack e Geração de Código
|
|
515
|
+
|
|
516
|
+
### Stacks com templates built-in
|
|
517
|
+
|
|
518
|
+
O plugin gera código automaticamente para:
|
|
519
|
+
|
|
520
|
+
| Camada | Tecnologias |
|
|
521
|
+
|---|---|
|
|
522
|
+
| Frontend | React + React Router + hooks customizados |
|
|
523
|
+
| Backend | Express ou Fastify + rotas REST + controllers + services + repositories |
|
|
524
|
+
| Database | SQLite, PostgreSQL ou MySQL (via drivers nativos) + schema SQL |
|
|
525
|
+
| Testes | Bun test |
|
|
526
|
+
| Tipos | TypeScript compartilhado |
|
|
527
|
+
|
|
528
|
+
### Stacks arbitrárias (via AI)
|
|
529
|
+
|
|
530
|
+
Para qualquer outra combinação (Django, FastAPI, Rails, Go, etc.):
|
|
531
|
+
|
|
532
|
+
1. O plugin detecta a stack do grafo
|
|
533
|
+
2. Se não está no conjunto de templates built-in, retorna uma **spec prompt**
|
|
534
|
+
3. A spec prompt lista entidades, endpoints e regras de negócio extraídas do grafo
|
|
535
|
+
4. O AI gera o código completo usando seu conhecimento sobre as tecnologias escolhidas
|
|
536
|
+
5. Você pode especificar a stack via briefing (`FastAPI com PostgreSQL`) ou via arquivo `@tech.md`
|
|
537
|
+
|
|
538
|
+
### Detecção automática
|
|
539
|
+
|
|
540
|
+
O plugin detecta automaticamente no briefing:
|
|
541
|
+
|
|
542
|
+
- **Frontend**: React, Vue, Angular, Svelte, Next.js, Nuxt, Tailwind, shadcn/ui, etc.
|
|
543
|
+
- **Backend**: Express, Fastify, NestJS, Django, FastAPI, Flask, Rails, Laravel, Spring Boot, Go, Rust, etc.
|
|
544
|
+
- **Database**: PostgreSQL, MySQL, SQLite, MongoDB, Redis, Supabase, Firebase, Turso, etc.
|
|
545
|
+
- **Auth**: JWT, Google/GitHub OAuth, Clerk, Auth0, NextAuth, sessão/cookie, etc.
|
|
546
|
+
- **Linguagem**: TypeScript, JavaScript, Python, Go, Rust, Java, Ruby
|
|
547
|
+
- **Testes**: Jest, Vitest, Bun test, Cypress, Playwright, pytest, RSpec
|
|
548
|
+
|
|
549
|
+
Tecnologias que já foram mencionadas **não são perguntadas novamente**.
|
|
550
|
+
|
|
551
|
+
## Tipos de nós suportados
|
|
552
|
+
|
|
553
|
+
| Tipo | Descrição |
|
|
554
|
+
|---|---|
|
|
555
|
+
| `project` | O projeto |
|
|
556
|
+
| `domain` | Domínio funcional |
|
|
557
|
+
| `feature` | Funcionalidade |
|
|
558
|
+
| `requirement` | Requisito |
|
|
559
|
+
| `business_rule` | Regra de negócio |
|
|
560
|
+
| `actor` | Usuário/sistema externo |
|
|
561
|
+
| `entity` | Entidade de domínio |
|
|
562
|
+
| `value_object` | Objeto de valor |
|
|
563
|
+
| `flow` | Fluxo |
|
|
564
|
+
| `use_case` | Caso de uso |
|
|
565
|
+
| `architecture_component` | Componente arquitetural |
|
|
566
|
+
| `module` | Módulo |
|
|
567
|
+
| `api` | Interface API |
|
|
568
|
+
| `endpoint` | Endpoint HTTP |
|
|
569
|
+
| `database` | Banco de dados |
|
|
570
|
+
| `table` | Tabela |
|
|
571
|
+
| `field` | Campo |
|
|
572
|
+
| `task` | Tarefa de implementação |
|
|
573
|
+
| `test` | Teste |
|
|
574
|
+
| `file` | Arquivo do código |
|
|
575
|
+
| `symbol` | Função, classe, interface |
|
|
576
|
+
| `change` | Mudança do sistema |
|
|
577
|
+
| `decision` | Decisão arquitetural (ADR) |
|
|
578
|
+
| `constraint` | Restrição |
|
|
579
|
+
| `assumption` | Premissa registrada |
|
|
580
|
+
| `constitution` | Princípios do projeto (must/should/may) |
|
|
581
|
+
|
|
582
|
+
## Tipos de relações
|
|
583
|
+
|
|
584
|
+
```
|
|
585
|
+
contains, depends_on, requires, implements, implemented_by,
|
|
586
|
+
satisfied_by, affects, modifies, creates, deletes, uses,
|
|
587
|
+
calls, persists_to, exposes, tested_by, tests, derived_from,
|
|
588
|
+
contradicts, supersedes, replaces, blocked_by, belongs_to,
|
|
589
|
+
owned_by, triggered_by, flows_to
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
## Fluxo de enforcement
|
|
593
|
+
|
|
594
|
+
Toda modificação segue obrigatoriamente. **O hook bloqueia programaticamente** qualquer Write/Edit em arquivos fonte que não tenha um Change node aprovado:
|
|
595
|
+
|
|
596
|
+
```
|
|
597
|
+
USUÁRIO: "Adicione X"
|
|
598
|
+
↓
|
|
599
|
+
Write/Edit interceptado pelo hook
|
|
600
|
+
↓
|
|
601
|
+
Hook verifica: arquivo fonte? SDD inicializado? Change aprovado cobrindo esse arquivo?
|
|
602
|
+
↓
|
|
603
|
+
Se NÃO tem Change aprovado → ERRO: operação bloqueada
|
|
604
|
+
↓
|
|
605
|
+
Agente é forçado a seguir o workflow SDD:
|
|
606
|
+
↓
|
|
607
|
+
sdd.enforce → classifica a mudança
|
|
608
|
+
↓
|
|
609
|
+
sdd.discover → coleta informações faltantes
|
|
610
|
+
↓
|
|
611
|
+
question → menus de seleção para o usuário
|
|
612
|
+
↓
|
|
613
|
+
sdd.update_from_answers → atualiza grafo
|
|
614
|
+
↓
|
|
615
|
+
sdd.create_change → cria Change node
|
|
616
|
+
↓
|
|
617
|
+
sdd.approve_change → aprova o Change
|
|
618
|
+
↓
|
|
619
|
+
Write/Edit → operação liberada pelo hook
|
|
620
|
+
↓
|
|
621
|
+
sdd.generate_code → gera/atualiza código
|
|
622
|
+
↓
|
|
623
|
+
sdd.complete_change → marca como completa
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
**O que é bloqueado:** qualquer operação de escrita em arquivos `.ts`, `.js`, `.py`, `.go`, `.rs`, `.java`, `.rb`, `.vue`, `.svelte` (fora de `node_modules`, `.sdd/`, `dist/`, `build/`).
|
|
627
|
+
|
|
628
|
+
**O que NÃO é bloqueado:** arquivos de config (`package.json`, `tsconfig.json`), `.env`, arquivos `.sdd/`, arquivos fora do projeto.
|
|
629
|
+
|
|
630
|
+
**O que acontece quando bloqueado:** o agente recebe uma mensagem de erro descrevendo exatamente o que precisa fazer (enforce → approve → retry).
|
|
631
|
+
|
|
632
|
+
## Autenticação e Roles
|
|
633
|
+
|
|
634
|
+
### Como funcionam as roles
|
|
635
|
+
|
|
636
|
+
O sistema de permissões funciona em 3 níveis:
|
|
637
|
+
|
|
638
|
+
**1. Remote Detection (automático)**
|
|
639
|
+
- Plugin detecta automaticamente o repositório remoto (GitHub/GitLab)
|
|
640
|
+
- Se detectar, usa a API para verificar permissões do usuário
|
|
641
|
+
- Se não detectar ou não tiver token → **todos têm acesso admin**
|
|
642
|
+
|
|
643
|
+
**2. Roles disponíveis**
|
|
644
|
+
| Role | Permissões |
|
|
645
|
+
|---|---|
|
|
646
|
+
| `admin` | Tudo: criar, aprovar, modificar constituição, rollback, gerenciar permissões |
|
|
647
|
+
| `architect` | Criar, aprovar features/requirements, aprovar arquitetura, decisões |
|
|
648
|
+
| `developer` | Criar, aprovar features/requirements |
|
|
649
|
+
| `viewer` | Apenas visualização |
|
|
650
|
+
|
|
651
|
+
**3. Fallback automático**
|
|
652
|
+
- Sem repositório remoto → todos são admin
|
|
653
|
+
- Sem token de autenticação → todos são admin
|
|
654
|
+
- Token inválido → fallback para admin
|
|
655
|
+
- Usuário não encontrado no remote → verifica role local
|
|
656
|
+
|
|
657
|
+
### Configuração do token
|
|
658
|
+
|
|
659
|
+
**GitHub:**
|
|
660
|
+
```bash
|
|
661
|
+
export GITHUB_TOKEN=ghp_seutokenaqui
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
**GitLab:**
|
|
665
|
+
```bash
|
|
666
|
+
export GITLAB_TOKEN=glpat-seutokenaqui
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
O token precisa ter permissões de leitura de colaboradores:
|
|
670
|
+
- GitHub: `repo` scope
|
|
671
|
+
- GitLab: `read_api` scope
|
|
672
|
+
|
|
673
|
+
### Verificar status
|
|
674
|
+
|
|
675
|
+
```
|
|
676
|
+
sdd.remote_status
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
Mostra se o remote está configurado e se o token está presente.
|
|
680
|
+
|
|
681
|
+
### Exemplo de uso
|
|
682
|
+
|
|
683
|
+
```
|
|
684
|
+
# Verificar permissão de um usuário
|
|
685
|
+
sdd.check_permission(user: "joao", permission: "approve_architecture")
|
|
686
|
+
|
|
687
|
+
# Definir role manualmente (local)
|
|
688
|
+
sdd.set_role(user: "maria", role: "architect")
|
|
689
|
+
|
|
690
|
+
# Verificar status do remote
|
|
691
|
+
sdd.remote_status
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
## Enterprise Workflows
|
|
695
|
+
|
|
696
|
+
O plugin detecta automaticamente cenários enterprise e sugere workflows específicos:
|
|
697
|
+
|
|
698
|
+
### Detecção Automática
|
|
699
|
+
|
|
700
|
+
Quando você digita algo como:
|
|
701
|
+
- "Corrija o bug no login" → Detecta **bug fix** e sugere `sdd.bug_fix`
|
|
702
|
+
- "Emergência: sistema fora do ar" → Detecta **hotfix** e desabilita enforcement
|
|
703
|
+
- "Refatore o módulo de auth" → Detecta **refactoring** e sugere `sdd.refactoring`
|
|
704
|
+
- "Deprecie a rota /api/v1" → Detecta **deprecation** e sugere `sdd.deprecate`
|
|
705
|
+
- "Migre os dados da tabela users" → Detecta **migration** e sugere `sdd.create_migration`
|
|
706
|
+
- "Crie um experimento A/B" → Detecta **A/B testing** e sugere `sdd.create_experiment`
|
|
707
|
+
- "Adicione feature flag" → Detecta **feature flag** e sugere `sdd.create_flag`
|
|
708
|
+
- "Multi-tenancy ao sistema" → Detecta **multi-tenancy** e sugere `sdd.create_tenant`
|
|
709
|
+
- "Onboarding para novo dev" → Detecta **onboarding** e sugere `sdd.onboard_developer`
|
|
710
|
+
- "Faça auditoria de segurança" → Detecta **security** e sugere `sdd.security_audit`
|
|
711
|
+
- "Analise escalabilidade" → Detecta **scalability** e sugere `sdd.analyze_scalability`
|
|
712
|
+
- "Verifique compliance com GDPR" → Detecta **compliance** e sugere `sdd.check_compliance`
|
|
713
|
+
- "Configure monitoramento" → Detecta **monitoring** e sugere `sdd.setup_monitoring`
|
|
714
|
+
- "Reporte incidente" → Detecta **incident** e sugere `sdd.report_incident`
|
|
715
|
+
- "Crie SLA de 99.9%" → Detecta **SLA** e sugere `sdd.create_sla`
|
|
716
|
+
- "Estime custos" → Detecta **cost** e sugere `sdd.estimate_cost`
|
|
717
|
+
- "Gere documentação" → Detecta **documentation** e sugere `sdd.generate_docs`
|
|
718
|
+
- "Transferência de conhecimento" → Detecta **knowledge** e sugere `sdd.knowledge_transfer`
|
|
719
|
+
- "Plano de disaster recovery" → Detecta **disaster** e sugere `sdd.disaster_recovery_plan`
|
|
720
|
+
|
|
721
|
+
### Tools Disponíveis
|
|
722
|
+
|
|
723
|
+
| Tool | Descrição | Approval Level |
|
|
724
|
+
|---|---|---|
|
|
725
|
+
| `sdd.bug_fix` | Workflow de bug fix completo | AUTO |
|
|
726
|
+
| `sdd.hotfix` | Documentar hotfix retroativo | POST_HOC |
|
|
727
|
+
| `sdd.refactoring` | Refactoring com verificação de dependências | REVIEW |
|
|
728
|
+
| `sdd.deprecate` | Deprecation com plano de migração | APPROVAL |
|
|
729
|
+
| `sdd.create_migration` | Migração de dados com rollback | APPROVAL |
|
|
730
|
+
| `sdd.create_experiment` | Experimento A/B | REVIEW |
|
|
731
|
+
| `sdd.create_flag` | Feature flag | AUTO |
|
|
732
|
+
| `sdd.create_tenant` | Multi-tenancy | APPROVAL |
|
|
733
|
+
| `sdd.onboard_developer` | Guia de onboarding | - |
|
|
734
|
+
| `sdd.security_audit` | Auditoria de segurança | - |
|
|
735
|
+
| `sdd.analyze_scalability` | Análise de escalabilidade | - |
|
|
736
|
+
| `sdd.check_compliance` | Verificação de compliance (GDPR, LGPD, HIPAA, SOC2, PCI_DSS, ISO27001) | - |
|
|
737
|
+
| `sdd.setup_monitoring` | Configuração de monitoramento | - |
|
|
738
|
+
| `sdd.generate_dashboard` | Gerar dashboard de monitoramento | - |
|
|
739
|
+
| `sdd.report_incident` | Reportar incidente | - |
|
|
740
|
+
| `sdd.create_sla` | Criar SLA | - |
|
|
741
|
+
| `sdd.estimate_cost` | Estimativa de custos | - |
|
|
742
|
+
| `sdd.generate_docs` | Gerar documentação | - |
|
|
743
|
+
| `sdd.knowledge_transfer` | Transferência de conhecimento | - |
|
|
744
|
+
| `sdd.disaster_recovery_plan` | Plano de disaster recovery | - |
|
|
745
|
+
|
|
746
|
+
### Exemplos de Uso
|
|
747
|
+
|
|
748
|
+
```bash
|
|
749
|
+
# Bug fix (aprovação automática)
|
|
750
|
+
sdd.bug_fix(description: "Login retorna 500", files: ["src/auth.ts"], severity: "high")
|
|
751
|
+
|
|
752
|
+
# Hotfix (emergência)
|
|
753
|
+
# 1. Enforcement é desabilitado automaticamente
|
|
754
|
+
# 2. Aplique a correção
|
|
755
|
+
# 3. Documente retroativamente:
|
|
756
|
+
sdd.hotfix(description: "Sistema fora do ar", files: ["src/server.ts"], urgency: "critical")
|
|
757
|
+
|
|
758
|
+
# Refactoring
|
|
759
|
+
sdd.refactoring(target: "auth", description: "Extrair validação", type: "extract", files: ["src/auth.ts"])
|
|
760
|
+
|
|
761
|
+
# Deprecation
|
|
762
|
+
sdd.deprecate(target: "/api/v1/users", removal_date: "2025-12-31", endpoints: ["/api/v1/users"])
|
|
763
|
+
|
|
764
|
+
# Migration
|
|
765
|
+
sdd.create_migration(source: "users_v1", target: "users_v2", description: "Adicionar campo email")
|
|
766
|
+
|
|
767
|
+
# A/B Testing
|
|
768
|
+
sdd.create_experiment(
|
|
769
|
+
hypothesis: "Novo botão aumenta conversão",
|
|
770
|
+
variants: [
|
|
771
|
+
{ name: "control", description: "Botão azul", traffic_percentage: 50 },
|
|
772
|
+
{ name: "variant", description: "Botão verde", traffic_percentage: 50 }
|
|
773
|
+
],
|
|
774
|
+
metric: "conversion_rate",
|
|
775
|
+
duration: 14
|
|
776
|
+
)
|
|
777
|
+
|
|
778
|
+
# Feature Flag
|
|
779
|
+
sdd.create_flag(name: "new_dashboard", description: "Novo dashboard", rollout: 10)
|
|
780
|
+
|
|
781
|
+
# Multi-tenancy
|
|
782
|
+
sdd.create_tenant(name: "empresa_acme", type: "shared_database", isolation: "row")
|
|
783
|
+
|
|
784
|
+
# Onboarding
|
|
785
|
+
sdd.onboard_developer(developer_name: "João")
|
|
786
|
+
|
|
787
|
+
# Security Audit
|
|
788
|
+
sdd.security_audit()
|
|
789
|
+
|
|
790
|
+
# Scalability Analysis
|
|
791
|
+
sdd.analyze_scalability()
|
|
792
|
+
|
|
793
|
+
# Compliance
|
|
794
|
+
sdd.check_compliance(standard: "GDPR")
|
|
795
|
+
sdd.check_compliance(standard: "LGPD")
|
|
796
|
+
|
|
797
|
+
# Monitoring
|
|
798
|
+
sdd.setup_monitoring()
|
|
799
|
+
|
|
800
|
+
# Incident Management
|
|
801
|
+
sdd.report_incident(title: "Sistema fora do ar", severity: "SEV1", impact: "Todos os usuários afetados")
|
|
802
|
+
|
|
803
|
+
# SLA
|
|
804
|
+
sdd.create_sla(name: "Uptime", metric: "availability", target: 99.9, period: "monthly")
|
|
805
|
+
|
|
806
|
+
# Cost Estimation
|
|
807
|
+
sdd.estimate_cost()
|
|
808
|
+
|
|
809
|
+
# Documentation
|
|
810
|
+
sdd.generate_docs(type: "api")
|
|
811
|
+
|
|
812
|
+
# Knowledge Transfer
|
|
813
|
+
sdd.knowledge_transfer()
|
|
814
|
+
|
|
815
|
+
# Disaster Recovery
|
|
816
|
+
sdd.disaster_recovery_plan()
|
|
817
|
+
|
|
818
|
+
# Dashboard Generation
|
|
819
|
+
sdd.generate_dashboard(type: "overview")
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
## Estrutura do projeto
|
|
823
|
+
|
|
824
|
+
```
|
|
825
|
+
src/
|
|
826
|
+
├ index.ts # Entry point do plugin
|
|
827
|
+
├ sdd/
|
|
828
|
+
│ ├── domain/types.ts # 38 tipos de nós + relações + grafos
|
|
829
|
+
│ ├── graph/engine.ts # CRUD do Knowledge Graph
|
|
830
|
+
│ ├── graph/traverse.ts # BFS, impact analysis, pathfinding
|
|
831
|
+
│ ├── persistence/yaml.ts # Repositórios YAML + snapshots
|
|
832
|
+
│ ├── discovery/briefing.ts # Análise de briefing + detecção de tech stack + perguntas
|
|
833
|
+
│ ├── changes/manager.ts # Change management + approval gates
|
|
834
|
+
│ ├── validation/validator.ts # Validação estrutural/semântica
|
|
835
|
+
│ ├── drift/detector.ts # Detecção de drift
|
|
836
|
+
│ ├── drift/signals.ts # Sinais avançados de drift
|
|
837
|
+
│ ├── enforcement/interceptor.ts # Força workflow SDD-first
|
|
838
|
+
│ ├── codegen/generator.ts # Templates built-in + spec prompt para AI
|
|
839
|
+
│ ├── toggle/state.ts # Liga/desliga enforcement SDD
|
|
840
|
+
│ ├── constitution/validator.ts # Validação de princípios
|
|
841
|
+
│ ├── promises/tracker.ts # Rastreamento de promessas
|
|
842
|
+
│ ├── quality/scorer.ts # Score de qualidade com tendência
|
|
843
|
+
│ ├── session/handoff.ts # Handoff de sessão
|
|
844
|
+
│ ├── patterns/anti-patterns.ts # Detecção de anti-padrões
|
|
845
|
+
│ ├── patterns/ast-clones.ts # Detecção de clones AST
|
|
846
|
+
│ ├── patterns/contradictions.ts # Detecção de contradições
|
|
847
|
+
│ ├── patterns/config-drift.ts # Detecção de drift em configs
|
|
848
|
+
│ ├── coverage/tracker.ts # Cobertura de testes
|
|
849
|
+
│ ├── workflow/exporter.ts # Exportação de workflow
|
|
850
|
+
│ ├── brownfield/scanner.ts # Análise de projetos existentes
|
|
851
|
+
│ ├── cicd/generators.ts # Geração CI/CD (GitHub, GitLab, Jenkins, Docker)
|
|
852
|
+
│ ├── sync/git-sync.ts # Sincronização Git + conflitos
|
|
853
|
+
│ ├── rollback/manager.ts # Rollback 3 camadas (git → snapshot → backup)
|
|
854
|
+
│ ├── permissions/access.ts # Controle de acesso + auditoria
|
|
855
|
+
│ ├── workflows/
|
|
856
|
+
│ │ ├── bug-fix.ts # Workflow de bug fix
|
|
857
|
+
│ │ ├── hotfix.ts # Workflow de hotfix
|
|
858
|
+
│ │ ├── refactoring.ts # Workflow de refactoring
|
|
859
|
+
│ │ ├── deprecation.ts # Workflow de deprecation
|
|
860
|
+
│ │ ├── data-migration.ts # Workflow de migração de dados
|
|
861
|
+
│ │ ├── ab-testing.ts # Workflow de A/B testing
|
|
862
|
+
│ │ ├── feature-flags.ts # Workflow de feature flags
|
|
863
|
+
│ │ ├── multi-tenancy.ts # Workflow de multi-tenancy
|
|
864
|
+
│ │ └── onboarding.ts # Workflow de onboarding
|
|
865
|
+
│ ├── analysis/
|
|
866
|
+
│ │ ├── security.ts # Auditoria de segurança
|
|
867
|
+
│ │ ├── scalability.ts # Análise de escalabilidade
|
|
868
|
+
│ │ └── compliance.ts # Validação regulatory
|
|
869
|
+
│ ├── monitoring/
|
|
870
|
+
│ │ └── setup.ts # Configuração de monitoramento
|
|
871
|
+
│ ├── incidents/
|
|
872
|
+
│ │ └── manager.ts # Gestão de incidentes
|
|
873
|
+
│ ├── sla/
|
|
874
|
+
│ │ └── tracker.ts # Rastreamento de SLA
|
|
875
|
+
│ ├── cost/
|
|
876
|
+
│ │ └── estimator.ts # Estimativa de custos
|
|
877
|
+
│ ├── documentation/
|
|
878
|
+
│ │ └── generator.ts # Geração de documentação
|
|
879
|
+
│ ├── knowledge/
|
|
880
|
+
│ │ └── transfer.ts # Transferência de conhecimento
|
|
881
|
+
│ ├── disaster/
|
|
882
|
+
│ │ └── recovery.ts # Plano de disaster recovery
|
|
883
|
+
│ └── transactions/manager.ts # Transações lógicas
|
|
884
|
+
├ opencode/
|
|
885
|
+
│ ├── tools.ts # 95 ferramentas para o agente
|
|
886
|
+
│ ├── hooks.ts # Hooks do OpenCode
|
|
887
|
+
│ ├── system-prompt.ts # Instruções SDD + integração question tool
|
|
888
|
+
│ └── shell-hooks.ts # Hooks Git para SDD
|
|
889
|
+
├ mcp/
|
|
890
|
+
│ └── server.ts # Servidor MCP
|
|
891
|
+
├ code-intelligence/
|
|
892
|
+
│ └── analyzer.ts # Análise de código (AST básico)
|
|
893
|
+
└ server/
|
|
894
|
+
└── server.ts # Dashboard web (API + UI)
|
|
895
|
+
```
|
|
896
|
+
|
|
897
|
+
## Estrutura `.sdd/`
|
|
898
|
+
|
|
899
|
+
Quando inicializado, o plugin cria:
|
|
900
|
+
|
|
901
|
+
```
|
|
902
|
+
.sdd/
|
|
903
|
+
├ graph.yaml # O Knowledge Graph completo
|
|
904
|
+
├ enabled # Estado do toggle (JSON: {enabled, changed_at})
|
|
905
|
+
├ nodes/ # Nós individuais (futuro)
|
|
906
|
+
├ relationships/ # Relações (futuro)
|
|
907
|
+
├ changes/ # Histórico de mudanças
|
|
908
|
+
├ snapshots/ # Snapshots do estado
|
|
909
|
+
└ transactions/ # Transações lógicas
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
## Desenvolvimento
|
|
913
|
+
|
|
914
|
+
```bash
|
|
915
|
+
# Instalar dependências
|
|
916
|
+
bun install
|
|
917
|
+
|
|
918
|
+
# Verificar tipos
|
|
919
|
+
bun run typecheck
|
|
920
|
+
|
|
921
|
+
# Rodar testes
|
|
922
|
+
bun test
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
## Licença
|
|
926
|
+
|
|
927
|
+
MIT
|