@backendkit-labs/agent-core 0.14.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/dist/agent-discovery/AgentPackageLoader.d.ts +14 -0
- package/dist/agent-discovery/AgentPackageLoader.d.ts.map +1 -0
- package/dist/agent-discovery/AgentPackageLoader.js +78 -0
- package/dist/agent-discovery/AgentPackageLoader.js.map +1 -0
- package/dist/agent-discovery/RemoteAgentRegistry.d.ts +31 -0
- package/dist/agent-discovery/RemoteAgentRegistry.d.ts.map +1 -0
- package/dist/agent-discovery/RemoteAgentRegistry.js +103 -0
- package/dist/agent-discovery/RemoteAgentRegistry.js.map +1 -0
- package/dist/agent-discovery/discoverAgents.d.ts +18 -0
- package/dist/agent-discovery/discoverAgents.d.ts.map +1 -0
- package/dist/agent-discovery/discoverAgents.js +59 -0
- package/dist/agent-discovery/discoverAgents.js.map +1 -0
- package/dist/agent-discovery/index.d.ts +5 -0
- package/dist/agent-discovery/index.d.ts.map +1 -0
- package/dist/agent-discovery/index.js +12 -0
- package/dist/agent-discovery/index.js.map +1 -0
- package/dist/agent-discovery/types.d.ts +42 -0
- package/dist/agent-discovery/types.d.ts.map +1 -0
- package/dist/agent-discovery/types.js +3 -0
- package/dist/agent-discovery/types.js.map +1 -0
- package/dist/agent-memory/EpisodicMemory.d.ts +26 -0
- package/dist/agent-memory/EpisodicMemory.d.ts.map +1 -0
- package/dist/agent-memory/EpisodicMemory.js +83 -0
- package/dist/agent-memory/EpisodicMemory.js.map +1 -0
- package/dist/agent-memory/MemorySystem.d.ts +40 -0
- package/dist/agent-memory/MemorySystem.d.ts.map +1 -0
- package/dist/agent-memory/MemorySystem.js +75 -0
- package/dist/agent-memory/MemorySystem.js.map +1 -0
- package/dist/agent-memory/ProceduralMemory.d.ts +26 -0
- package/dist/agent-memory/ProceduralMemory.d.ts.map +1 -0
- package/dist/agent-memory/ProceduralMemory.js +104 -0
- package/dist/agent-memory/ProceduralMemory.js.map +1 -0
- package/dist/agent-memory/SemanticMemory.d.ts +21 -0
- package/dist/agent-memory/SemanticMemory.d.ts.map +1 -0
- package/dist/agent-memory/SemanticMemory.js +68 -0
- package/dist/agent-memory/SemanticMemory.js.map +1 -0
- package/dist/agent-memory/index.d.ts +9 -0
- package/dist/agent-memory/index.d.ts.map +1 -0
- package/dist/agent-memory/index.js +19 -0
- package/dist/agent-memory/index.js.map +1 -0
- package/dist/agent-memory/scoring.d.ts +10 -0
- package/dist/agent-memory/scoring.d.ts.map +1 -0
- package/dist/agent-memory/scoring.js +32 -0
- package/dist/agent-memory/scoring.js.map +1 -0
- package/dist/agent-memory/stores/InMemoryStore.d.ts +10 -0
- package/dist/agent-memory/stores/InMemoryStore.d.ts.map +1 -0
- package/dist/agent-memory/stores/InMemoryStore.js +25 -0
- package/dist/agent-memory/stores/InMemoryStore.js.map +1 -0
- package/dist/agent-memory/stores/JsonFileStore.d.ts +18 -0
- package/dist/agent-memory/stores/JsonFileStore.d.ts.map +1 -0
- package/dist/agent-memory/stores/JsonFileStore.js +61 -0
- package/dist/agent-memory/stores/JsonFileStore.js.map +1 -0
- package/dist/agent-memory/tools.d.ts +6 -0
- package/dist/agent-memory/tools.d.ts.map +1 -0
- package/dist/agent-memory/tools.js +74 -0
- package/dist/agent-memory/tools.js.map +1 -0
- package/dist/agent-memory/types.d.ts +75 -0
- package/dist/agent-memory/types.d.ts.map +1 -0
- package/dist/agent-memory/types.js +4 -0
- package/dist/agent-memory/types.js.map +1 -0
- package/dist/bootstrap/GlobalSeed.d.ts +46 -0
- package/dist/bootstrap/GlobalSeed.d.ts.map +1 -0
- package/dist/bootstrap/GlobalSeed.js +285 -0
- package/dist/bootstrap/GlobalSeed.js.map +1 -0
- package/dist/bootstrap/config.d.ts +24 -0
- package/dist/bootstrap/config.d.ts.map +1 -0
- package/dist/bootstrap/config.js +71 -0
- package/dist/bootstrap/config.js.map +1 -0
- package/dist/checkpoint/index.d.ts +17 -0
- package/dist/checkpoint/index.d.ts.map +1 -0
- package/dist/checkpoint/index.js +207 -0
- package/dist/checkpoint/index.js.map +1 -0
- package/dist/commands/SlashCommandRegistry.d.ts +98 -0
- package/dist/commands/SlashCommandRegistry.d.ts.map +1 -0
- package/dist/commands/SlashCommandRegistry.js +41 -0
- package/dist/commands/SlashCommandRegistry.js.map +1 -0
- package/dist/commands/builtin.d.ts +7 -0
- package/dist/commands/builtin.d.ts.map +1 -0
- package/dist/commands/builtin.js +694 -0
- package/dist/commands/builtin.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +8 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/context/index.d.ts +8 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +8 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/pipeline.d.ts +46 -0
- package/dist/context/pipeline.d.ts.map +1 -0
- package/dist/context/pipeline.js +111 -0
- package/dist/context/pipeline.js.map +1 -0
- package/dist/context/stages/stage-instructions.d.ts +12 -0
- package/dist/context/stages/stage-instructions.d.ts.map +1 -0
- package/dist/context/stages/stage-instructions.js +76 -0
- package/dist/context/stages/stage-instructions.js.map +1 -0
- package/dist/context/stages/stage-lessons.d.ts +13 -0
- package/dist/context/stages/stage-lessons.d.ts.map +1 -0
- package/dist/context/stages/stage-lessons.js +83 -0
- package/dist/context/stages/stage-lessons.js.map +1 -0
- package/dist/context/stages/stage-manifest.d.ts +11 -0
- package/dist/context/stages/stage-manifest.d.ts.map +1 -0
- package/dist/context/stages/stage-manifest.js +62 -0
- package/dist/context/stages/stage-manifest.js.map +1 -0
- package/dist/context/stages/stage-project.d.ts +10 -0
- package/dist/context/stages/stage-project.d.ts.map +1 -0
- package/dist/context/stages/stage-project.js +55 -0
- package/dist/context/stages/stage-project.js.map +1 -0
- package/dist/context/stages/stage-session.d.ts +12 -0
- package/dist/context/stages/stage-session.d.ts.map +1 -0
- package/dist/context/stages/stage-session.js +69 -0
- package/dist/context/stages/stage-session.js.map +1 -0
- package/dist/delegation/DelegationBus.d.ts +40 -0
- package/dist/delegation/DelegationBus.d.ts.map +1 -0
- package/dist/delegation/DelegationBus.js +68 -0
- package/dist/delegation/DelegationBus.js.map +1 -0
- package/dist/engine/AgentEngine.d.ts +212 -0
- package/dist/engine/AgentEngine.d.ts.map +1 -0
- package/dist/engine/AgentEngine.js +1037 -0
- package/dist/engine/AgentEngine.js.map +1 -0
- package/dist/engine/AgentRegistry.d.ts +13 -0
- package/dist/engine/AgentRegistry.d.ts.map +1 -0
- package/dist/engine/AgentRegistry.js +37 -0
- package/dist/engine/AgentRegistry.js.map +1 -0
- package/dist/engine/IterationManager.d.ts +79 -0
- package/dist/engine/IterationManager.d.ts.map +1 -0
- package/dist/engine/IterationManager.js +103 -0
- package/dist/engine/IterationManager.js.map +1 -0
- package/dist/engine/ProviderRegistry.d.ts +10 -0
- package/dist/engine/ProviderRegistry.d.ts.map +1 -0
- package/dist/engine/ProviderRegistry.js +28 -0
- package/dist/engine/ProviderRegistry.js.map +1 -0
- package/dist/engine/ToolRegistry.d.ts +54 -0
- package/dist/engine/ToolRegistry.d.ts.map +1 -0
- package/dist/engine/ToolRegistry.js +75 -0
- package/dist/engine/ToolRegistry.js.map +1 -0
- package/dist/engine/createBaseEngine.d.ts +169 -0
- package/dist/engine/createBaseEngine.d.ts.map +1 -0
- package/dist/engine/createBaseEngine.js +91 -0
- package/dist/engine/createBaseEngine.js.map +1 -0
- package/dist/engine/qa-orchestrator.d.ts +56 -0
- package/dist/engine/qa-orchestrator.d.ts.map +1 -0
- package/dist/engine/qa-orchestrator.js +163 -0
- package/dist/engine/qa-orchestrator.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +163 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/MCPClientManager.d.ts +65 -0
- package/dist/mcp/MCPClientManager.d.ts.map +1 -0
- package/dist/mcp/MCPClientManager.js +211 -0
- package/dist/mcp/MCPClientManager.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/types.d.ts +121 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +3 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory/SessionMemory.d.ts +9 -0
- package/dist/memory/SessionMemory.d.ts.map +1 -0
- package/dist/memory/SessionMemory.js +20 -0
- package/dist/memory/SessionMemory.js.map +1 -0
- package/dist/observability/CostTracker.d.ts +19 -0
- package/dist/observability/CostTracker.d.ts.map +1 -0
- package/dist/observability/CostTracker.js +64 -0
- package/dist/observability/CostTracker.js.map +1 -0
- package/dist/observability/MetricsCollector.d.ts +17 -0
- package/dist/observability/MetricsCollector.d.ts.map +1 -0
- package/dist/observability/MetricsCollector.js +70 -0
- package/dist/observability/MetricsCollector.js.map +1 -0
- package/dist/observability/ObservabilityManager.d.ts +33 -0
- package/dist/observability/ObservabilityManager.d.ts.map +1 -0
- package/dist/observability/ObservabilityManager.js +107 -0
- package/dist/observability/ObservabilityManager.js.map +1 -0
- package/dist/observability/Tracer.d.ts +23 -0
- package/dist/observability/Tracer.d.ts.map +1 -0
- package/dist/observability/Tracer.js +65 -0
- package/dist/observability/Tracer.js.map +1 -0
- package/dist/observability/index.d.ts +7 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +14 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/types.d.ts +77 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +15 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/orchestration/audit/audit-ci-blocker.d.ts +31 -0
- package/dist/orchestration/audit/audit-ci-blocker.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-ci-blocker.js +120 -0
- package/dist/orchestration/audit/audit-ci-blocker.js.map +1 -0
- package/dist/orchestration/audit/audit-finding-tracer.d.ts +33 -0
- package/dist/orchestration/audit/audit-finding-tracer.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-finding-tracer.js +126 -0
- package/dist/orchestration/audit/audit-finding-tracer.js.map +1 -0
- package/dist/orchestration/audit/audit-lessons-learned.d.ts +27 -0
- package/dist/orchestration/audit/audit-lessons-learned.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-lessons-learned.js +155 -0
- package/dist/orchestration/audit/audit-lessons-learned.js.map +1 -0
- package/dist/orchestration/audit/audit-pending-issues.d.ts +21 -0
- package/dist/orchestration/audit/audit-pending-issues.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-pending-issues.js +110 -0
- package/dist/orchestration/audit/audit-pending-issues.js.map +1 -0
- package/dist/orchestration/audit/audit-reflection-bridge.d.ts +39 -0
- package/dist/orchestration/audit/audit-reflection-bridge.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-reflection-bridge.js +65 -0
- package/dist/orchestration/audit/audit-reflection-bridge.js.map +1 -0
- package/dist/orchestration/audit/audit-report-renderer.d.ts +30 -0
- package/dist/orchestration/audit/audit-report-renderer.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-report-renderer.js +249 -0
- package/dist/orchestration/audit/audit-report-renderer.js.map +1 -0
- package/dist/orchestration/audit/audit-report-version-manager.d.ts +52 -0
- package/dist/orchestration/audit/audit-report-version-manager.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-report-version-manager.js +144 -0
- package/dist/orchestration/audit/audit-report-version-manager.js.map +1 -0
- package/dist/orchestration/audit/audit-silent-gates-buffer.d.ts +37 -0
- package/dist/orchestration/audit/audit-silent-gates-buffer.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-silent-gates-buffer.js +129 -0
- package/dist/orchestration/audit/audit-silent-gates-buffer.js.map +1 -0
- package/dist/orchestration/audit/index.d.ts +17 -0
- package/dist/orchestration/audit/index.d.ts.map +1 -0
- package/dist/orchestration/audit/index.js +26 -0
- package/dist/orchestration/audit/index.js.map +1 -0
- package/dist/orchestration/audit/types.d.ts +79 -0
- package/dist/orchestration/audit/types.d.ts.map +1 -0
- package/dist/orchestration/audit/types.js +10 -0
- package/dist/orchestration/audit/types.js.map +1 -0
- package/dist/orchestration/audit-reporter.d.ts +133 -0
- package/dist/orchestration/audit-reporter.d.ts.map +1 -0
- package/dist/orchestration/audit-reporter.js +322 -0
- package/dist/orchestration/audit-reporter.js.map +1 -0
- package/dist/orchestration/config-loader.d.ts +51 -0
- package/dist/orchestration/config-loader.d.ts.map +1 -0
- package/dist/orchestration/config-loader.js +215 -0
- package/dist/orchestration/config-loader.js.map +1 -0
- package/dist/orchestration/domain-detector.d.ts +36 -0
- package/dist/orchestration/domain-detector.d.ts.map +1 -0
- package/dist/orchestration/domain-detector.js +157 -0
- package/dist/orchestration/domain-detector.js.map +1 -0
- package/dist/orchestration/fsm.d.ts +86 -0
- package/dist/orchestration/fsm.d.ts.map +1 -0
- package/dist/orchestration/fsm.js +223 -0
- package/dist/orchestration/fsm.js.map +1 -0
- package/dist/orchestration/gate-resolver.d.ts +42 -0
- package/dist/orchestration/gate-resolver.d.ts.map +1 -0
- package/dist/orchestration/gate-resolver.js +94 -0
- package/dist/orchestration/gate-resolver.js.map +1 -0
- package/dist/orchestration/index.d.ts +15 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +32 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/intent-detector.d.ts +43 -0
- package/dist/orchestration/intent-detector.d.ts.map +1 -0
- package/dist/orchestration/intent-detector.js +249 -0
- package/dist/orchestration/intent-detector.js.map +1 -0
- package/dist/orchestration/keyword-match.d.ts +17 -0
- package/dist/orchestration/keyword-match.d.ts.map +1 -0
- package/dist/orchestration/keyword-match.js +26 -0
- package/dist/orchestration/keyword-match.js.map +1 -0
- package/dist/orchestration/llm-client-adapter.d.ts +11 -0
- package/dist/orchestration/llm-client-adapter.d.ts.map +1 -0
- package/dist/orchestration/llm-client-adapter.js +30 -0
- package/dist/orchestration/llm-client-adapter.js.map +1 -0
- package/dist/orchestration/orchestrator.d.ts +153 -0
- package/dist/orchestration/orchestrator.d.ts.map +1 -0
- package/dist/orchestration/orchestrator.js +471 -0
- package/dist/orchestration/orchestrator.js.map +1 -0
- package/dist/orchestration/policy-engine.d.ts +47 -0
- package/dist/orchestration/policy-engine.d.ts.map +1 -0
- package/dist/orchestration/policy-engine.js +262 -0
- package/dist/orchestration/policy-engine.js.map +1 -0
- package/dist/orchestration/risk-scorer.d.ts +38 -0
- package/dist/orchestration/risk-scorer.d.ts.map +1 -0
- package/dist/orchestration/risk-scorer.js +145 -0
- package/dist/orchestration/risk-scorer.js.map +1 -0
- package/dist/orchestration/task-context.d.ts +195 -0
- package/dist/orchestration/task-context.d.ts.map +1 -0
- package/dist/orchestration/task-context.js +160 -0
- package/dist/orchestration/task-context.js.map +1 -0
- package/dist/orchestration/types.d.ts +111 -0
- package/dist/orchestration/types.d.ts.map +1 -0
- package/dist/orchestration/types.js +37 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/qa/index.d.ts +3 -0
- package/dist/qa/index.d.ts.map +1 -0
- package/dist/qa/index.js +6 -0
- package/dist/qa/index.js.map +1 -0
- package/dist/qa/qa-service.d.ts +30 -0
- package/dist/qa/qa-service.d.ts.map +1 -0
- package/dist/qa/qa-service.js +200 -0
- package/dist/qa/qa-service.js.map +1 -0
- package/dist/reflection/commands/domain-commands.d.ts +78 -0
- package/dist/reflection/commands/domain-commands.d.ts.map +1 -0
- package/dist/reflection/commands/domain-commands.js +203 -0
- package/dist/reflection/commands/domain-commands.js.map +1 -0
- package/dist/reflection/domain-registry.d.ts +104 -0
- package/dist/reflection/domain-registry.d.ts.map +1 -0
- package/dist/reflection/domain-registry.js +279 -0
- package/dist/reflection/domain-registry.js.map +1 -0
- package/dist/reflection/domains/agent-domain.d.ts +40 -0
- package/dist/reflection/domains/agent-domain.d.ts.map +1 -0
- package/dist/reflection/domains/agent-domain.js +161 -0
- package/dist/reflection/domains/agent-domain.js.map +1 -0
- package/dist/reflection/domains/audit-domain.d.ts +46 -0
- package/dist/reflection/domains/audit-domain.d.ts.map +1 -0
- package/dist/reflection/domains/audit-domain.js +241 -0
- package/dist/reflection/domains/audit-domain.js.map +1 -0
- package/dist/reflection/domains/bootstrap-domain.d.ts +40 -0
- package/dist/reflection/domains/bootstrap-domain.d.ts.map +1 -0
- package/dist/reflection/domains/bootstrap-domain.js +156 -0
- package/dist/reflection/domains/bootstrap-domain.js.map +1 -0
- package/dist/reflection/domains/commit-domain.d.ts +40 -0
- package/dist/reflection/domains/commit-domain.d.ts.map +1 -0
- package/dist/reflection/domains/commit-domain.js +174 -0
- package/dist/reflection/domains/commit-domain.js.map +1 -0
- package/dist/reflection/domains/test-domain.d.ts +40 -0
- package/dist/reflection/domains/test-domain.d.ts.map +1 -0
- package/dist/reflection/domains/test-domain.js +194 -0
- package/dist/reflection/domains/test-domain.js.map +1 -0
- package/dist/reflection/failure-catalog.d.ts +100 -0
- package/dist/reflection/failure-catalog.d.ts.map +1 -0
- package/dist/reflection/failure-catalog.js +269 -0
- package/dist/reflection/failure-catalog.js.map +1 -0
- package/dist/reflection/historical-loader.d.ts +105 -0
- package/dist/reflection/historical-loader.d.ts.map +1 -0
- package/dist/reflection/historical-loader.js +462 -0
- package/dist/reflection/historical-loader.js.map +1 -0
- package/dist/reflection/hooks/agent-hook.d.ts +72 -0
- package/dist/reflection/hooks/agent-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/agent-hook.js +98 -0
- package/dist/reflection/hooks/agent-hook.js.map +1 -0
- package/dist/reflection/hooks/audit-hook.d.ts +72 -0
- package/dist/reflection/hooks/audit-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/audit-hook.js +112 -0
- package/dist/reflection/hooks/audit-hook.js.map +1 -0
- package/dist/reflection/hooks/bootstrap-hook.d.ts +71 -0
- package/dist/reflection/hooks/bootstrap-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/bootstrap-hook.js +97 -0
- package/dist/reflection/hooks/bootstrap-hook.js.map +1 -0
- package/dist/reflection/hooks/commit-hook.d.ts +63 -0
- package/dist/reflection/hooks/commit-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/commit-hook.js +90 -0
- package/dist/reflection/hooks/commit-hook.js.map +1 -0
- package/dist/reflection/hooks/test-hook.d.ts +65 -0
- package/dist/reflection/hooks/test-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/test-hook.js +99 -0
- package/dist/reflection/hooks/test-hook.js.map +1 -0
- package/dist/reflection/index.d.ts +19 -0
- package/dist/reflection/index.d.ts.map +1 -0
- package/dist/reflection/index.js +40 -0
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/lessons-memo-generator.d.ts +60 -0
- package/dist/reflection/lessons-memo-generator.d.ts.map +1 -0
- package/dist/reflection/lessons-memo-generator.js +286 -0
- package/dist/reflection/lessons-memo-generator.js.map +1 -0
- package/dist/reflection/pattern-detector.d.ts +55 -0
- package/dist/reflection/pattern-detector.d.ts.map +1 -0
- package/dist/reflection/pattern-detector.js +137 -0
- package/dist/reflection/pattern-detector.js.map +1 -0
- package/dist/reflection/policy-promoter.d.ts +86 -0
- package/dist/reflection/policy-promoter.d.ts.map +1 -0
- package/dist/reflection/policy-promoter.js +382 -0
- package/dist/reflection/policy-promoter.js.map +1 -0
- package/dist/reflection/reflection-engine.d.ts +160 -0
- package/dist/reflection/reflection-engine.d.ts.map +1 -0
- package/dist/reflection/reflection-engine.js +352 -0
- package/dist/reflection/reflection-engine.js.map +1 -0
- package/dist/reflection/types.d.ts +106 -0
- package/dist/reflection/types.d.ts.map +1 -0
- package/dist/reflection/types.js +64 -0
- package/dist/reflection/types.js.map +1 -0
- package/dist/shared/llm/resilient-client.d.ts +40 -0
- package/dist/shared/llm/resilient-client.d.ts.map +1 -0
- package/dist/shared/llm/resilient-client.js +60 -0
- package/dist/shared/llm/resilient-client.js.map +1 -0
- package/dist/shared/utils/atomic-write.d.ts +7 -0
- package/dist/shared/utils/atomic-write.d.ts.map +1 -0
- package/dist/shared/utils/atomic-write.js +52 -0
- package/dist/shared/utils/atomic-write.js.map +1 -0
- package/dist/shared/utils/git.d.ts +2 -0
- package/dist/shared/utils/git.d.ts.map +1 -0
- package/dist/shared/utils/git.js +17 -0
- package/dist/shared/utils/git.js.map +1 -0
- package/dist/shared/utils/project-key.d.ts +4 -0
- package/dist/shared/utils/project-key.d.ts.map +1 -0
- package/dist/shared/utils/project-key.js +54 -0
- package/dist/shared/utils/project-key.js.map +1 -0
- package/dist/shared/utils/string-utils.d.ts +17 -0
- package/dist/shared/utils/string-utils.d.ts.map +1 -0
- package/dist/shared/utils/string-utils.js +37 -0
- package/dist/shared/utils/string-utils.js.map +1 -0
- package/dist/skills/activator.d.ts +27 -0
- package/dist/skills/activator.d.ts.map +1 -0
- package/dist/skills/activator.js +127 -0
- package/dist/skills/activator.js.map +1 -0
- package/dist/skills/builtins/global.d.ts +7 -0
- package/dist/skills/builtins/global.d.ts.map +1 -0
- package/dist/skills/builtins/global.js +208 -0
- package/dist/skills/builtins/global.js.map +1 -0
- package/dist/skills/builtins/go-pack.d.ts +7 -0
- package/dist/skills/builtins/go-pack.d.ts.map +1 -0
- package/dist/skills/builtins/go-pack.js +263 -0
- package/dist/skills/builtins/go-pack.js.map +1 -0
- package/dist/skills/builtins/java-pack.d.ts +7 -0
- package/dist/skills/builtins/java-pack.d.ts.map +1 -0
- package/dist/skills/builtins/java-pack.js +272 -0
- package/dist/skills/builtins/java-pack.js.map +1 -0
- package/dist/skills/builtins/kotlin-pack.d.ts +9 -0
- package/dist/skills/builtins/kotlin-pack.d.ts.map +1 -0
- package/dist/skills/builtins/kotlin-pack.js +292 -0
- package/dist/skills/builtins/kotlin-pack.js.map +1 -0
- package/dist/skills/builtins/node-pack.d.ts +7 -0
- package/dist/skills/builtins/node-pack.d.ts.map +1 -0
- package/dist/skills/builtins/node-pack.js +750 -0
- package/dist/skills/builtins/node-pack.js.map +1 -0
- package/dist/skills/builtins/python-pack.d.ts +7 -0
- package/dist/skills/builtins/python-pack.d.ts.map +1 -0
- package/dist/skills/builtins/python-pack.js +303 -0
- package/dist/skills/builtins/python-pack.js.map +1 -0
- package/dist/skills/index.d.ts +11 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +24 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +39 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +152 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/manager.d.ts +97 -0
- package/dist/skills/manager.d.ts.map +1 -0
- package/dist/skills/manager.js +296 -0
- package/dist/skills/manager.js.map +1 -0
- package/dist/skills/parse-md-skill.d.ts +14 -0
- package/dist/skills/parse-md-skill.d.ts.map +1 -0
- package/dist/skills/parse-md-skill.js +86 -0
- package/dist/skills/parse-md-skill.js.map +1 -0
- package/dist/skills/providers/github.d.ts +21 -0
- package/dist/skills/providers/github.d.ts.map +1 -0
- package/dist/skills/providers/github.js +146 -0
- package/dist/skills/providers/github.js.map +1 -0
- package/dist/skills/providers/index.d.ts +6 -0
- package/dist/skills/providers/index.d.ts.map +1 -0
- package/dist/skills/providers/index.js +12 -0
- package/dist/skills/providers/index.js.map +1 -0
- package/dist/skills/providers/local.d.ts +16 -0
- package/dist/skills/providers/local.d.ts.map +1 -0
- package/dist/skills/providers/local.js +91 -0
- package/dist/skills/providers/local.js.map +1 -0
- package/dist/skills/providers/obsidian.d.ts +31 -0
- package/dist/skills/providers/obsidian.d.ts.map +1 -0
- package/dist/skills/providers/obsidian.js +141 -0
- package/dist/skills/providers/obsidian.js.map +1 -0
- package/dist/skills/providers/skills-sh.d.ts +32 -0
- package/dist/skills/providers/skills-sh.d.ts.map +1 -0
- package/dist/skills/providers/skills-sh.js +53 -0
- package/dist/skills/providers/skills-sh.js.map +1 -0
- package/dist/skills/providers/types.d.ts +25 -0
- package/dist/skills/providers/types.d.ts.map +1 -0
- package/dist/skills/providers/types.js +3 -0
- package/dist/skills/providers/types.js.map +1 -0
- package/dist/skills/registry.d.ts +18 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +45 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/types.d.ts +66 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +3 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tools/defineTool.d.ts +34 -0
- package/dist/tools/defineTool.d.ts.map +1 -0
- package/dist/tools/defineTool.js +63 -0
- package/dist/tools/defineTool.js.map +1 -0
- package/dist/transport/CallbackTransport.d.ts +12 -0
- package/dist/transport/CallbackTransport.d.ts.map +1 -0
- package/dist/transport/CallbackTransport.js +28 -0
- package/dist/transport/CallbackTransport.js.map +1 -0
- package/dist/transport/StdoutTransport.d.ts +9 -0
- package/dist/transport/StdoutTransport.d.ts.map +1 -0
- package/dist/transport/StdoutTransport.js +63 -0
- package/dist/transport/StdoutTransport.js.map +1 -0
- package/dist/transport/Transport.d.ts +8 -0
- package/dist/transport/Transport.d.ts.map +1 -0
- package/dist/transport/Transport.js +3 -0
- package/dist/transport/Transport.js.map +1 -0
- package/dist/triggers/EventBus.d.ts +14 -0
- package/dist/triggers/EventBus.d.ts.map +1 -0
- package/dist/triggers/EventBus.js +18 -0
- package/dist/triggers/EventBus.js.map +1 -0
- package/dist/triggers/TriggerManager.d.ts +28 -0
- package/dist/triggers/TriggerManager.d.ts.map +1 -0
- package/dist/triggers/TriggerManager.js +158 -0
- package/dist/triggers/TriggerManager.js.map +1 -0
- package/dist/triggers/WebhookServer.d.ts +23 -0
- package/dist/triggers/WebhookServer.d.ts.map +1 -0
- package/dist/triggers/WebhookServer.js +127 -0
- package/dist/triggers/WebhookServer.js.map +1 -0
- package/dist/triggers/createAutonomousAgent.d.ts +49 -0
- package/dist/triggers/createAutonomousAgent.d.ts.map +1 -0
- package/dist/triggers/createAutonomousAgent.js +42 -0
- package/dist/triggers/createAutonomousAgent.js.map +1 -0
- package/dist/triggers/index.d.ts +8 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +12 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/types.d.ts +35 -0
- package/dist/triggers/types.d.ts.map +1 -0
- package/dist/triggers/types.js +3 -0
- package/dist/triggers/types.js.map +1 -0
- package/dist/types/index.d.ts +256 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/workflow/WorkflowBuilder.d.ts +22 -0
- package/dist/workflow/WorkflowBuilder.d.ts.map +1 -0
- package/dist/workflow/WorkflowBuilder.js +67 -0
- package/dist/workflow/WorkflowBuilder.js.map +1 -0
- package/dist/workflow/WorkflowRunner.d.ts +22 -0
- package/dist/workflow/WorkflowRunner.d.ts.map +1 -0
- package/dist/workflow/WorkflowRunner.js +97 -0
- package/dist/workflow/WorkflowRunner.js.map +1 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +10 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/types.d.ts +35 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +3 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workspace/index.d.ts +55 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +189 -0
- package/dist/workspace/index.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Domain Detector — Detecta los bounded contexts/dominios
|
|
4
|
+
* a partir del input del usuario.
|
|
5
|
+
*
|
|
6
|
+
* Usa keywords + bigramas para identificar dominios técnicos.
|
|
7
|
+
* Soporta detección de servicios objetivo y patrones relacionados.
|
|
8
|
+
*
|
|
9
|
+
* @see capability-matrix.yaml en ~/.deepseek-code/ para la lista completa
|
|
10
|
+
* de dominios por agente.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.detectDomains = detectDomains;
|
|
14
|
+
exports.enrichTaskWithDomains = enrichTaskWithDomains;
|
|
15
|
+
const keyword_match_1 = require("./keyword-match");
|
|
16
|
+
/**
|
|
17
|
+
* Mapa de dominios con sus keywords.
|
|
18
|
+
* Este mapa base se puede extender desde ~/.deepseek-code/capability-matrix.yaml
|
|
19
|
+
*/
|
|
20
|
+
const DOMAIN_KEYWORDS = {
|
|
21
|
+
security: [
|
|
22
|
+
{ words: ['jwt', 'token', 'autenticación', 'autenticacion', 'auth'], pattern: 'jwt-auth' },
|
|
23
|
+
{ words: ['autorización', 'autorizacion', 'abac', 'rbac', 'permisos'], pattern: 'abac' },
|
|
24
|
+
{ words: ['api key', 'apikey', 'api-key'], pattern: 'api-key' },
|
|
25
|
+
{ words: ['oauth', 'oauth2', 'openid', 'oidc'], pattern: 'oauth2' },
|
|
26
|
+
{ words: ['cifrado', 'encriptación', 'hash', 'bcrypt', 'argon2'] },
|
|
27
|
+
{ words: ['xss', 'csrf', 'inyección', 'inyeccion', 'sql injection', 'owasp'] },
|
|
28
|
+
{ words: ['vulnerabilidad', 'vulnerabilidad', 'cve', 'pentest'] },
|
|
29
|
+
{ words: ['secrets', 'secretos', 'vault', 'hashicorp'] },
|
|
30
|
+
{ words: ['certificado', 'tls', 'ssl', 'https', 'mtls'] },
|
|
31
|
+
],
|
|
32
|
+
resilience: [
|
|
33
|
+
{ words: ['circuit breaker', 'circuitbreaker', 'breaker'], pattern: 'circuit-breaker' },
|
|
34
|
+
{ words: ['retry', 'reintento', 'backoff', 'exponential backoff'], pattern: 'retry-backoff' },
|
|
35
|
+
{ words: ['bulkhead', 'aislamiento'], pattern: 'bulkhead' },
|
|
36
|
+
{ words: ['timeout', 'time-out', 'latency', 'latencia'] },
|
|
37
|
+
{ words: ['fallover', 'failover', 'alta disponibilidad', 'high availability'] },
|
|
38
|
+
{ words: ['resiliencia', 'resilience', 'tolerancia a fallos'] },
|
|
39
|
+
],
|
|
40
|
+
messaging: [
|
|
41
|
+
{ words: ['rabbitmq', 'amqp', 'broker', 'cola', 'queue'], pattern: 'broker-tcp' },
|
|
42
|
+
{ words: ['kafka', 'evento', 'event streaming', 'topic'] },
|
|
43
|
+
{ words: ['sns', 'sqs', 'mensajería', 'mensajeria'] },
|
|
44
|
+
{ words: ['dlq', 'dead letter', 'reintento fallido'] },
|
|
45
|
+
{ words: ['pub/sub', 'publish', 'subscribe', 'suscripción'] },
|
|
46
|
+
],
|
|
47
|
+
database: [
|
|
48
|
+
{ words: ['base de datos', 'bd', 'database', 'db'] },
|
|
49
|
+
{ words: ['mysql', 'postgresql', 'postgres', 'sql server', 'oracle'] },
|
|
50
|
+
{ words: ['mongodb', 'nosql', 'documento', 'colección'] },
|
|
51
|
+
{ words: ['redis', 'caché', 'cache', 'memcached'] },
|
|
52
|
+
{ words: ['elasticsearch', 'búsqueda', 'search', 'índice', 'indice'] },
|
|
53
|
+
{ words: ['migración', 'migracion', 'schema', 'esquema'] },
|
|
54
|
+
{ words: ['query', 'consulta', 'sql', 'join', 'índice', 'indice'] },
|
|
55
|
+
{ words: ['orm', 'prisma', 'typeorm', 'sequelize', 'drizzle'] },
|
|
56
|
+
],
|
|
57
|
+
backend: [
|
|
58
|
+
{ words: ['backend', 'servidor', 'server-side'] },
|
|
59
|
+
{ words: ['api', 'rest', 'graphql', 'grpc', 'endpoint'] },
|
|
60
|
+
{ words: ['nestjs', 'nest', 'express', 'fastify', 'fastapi'] },
|
|
61
|
+
{ words: ['controlador', 'controller', 'servicio', 'service', 'repositorio'] },
|
|
62
|
+
{ words: ['middleware', 'interceptor', 'guard', 'pipe', 'filter'] },
|
|
63
|
+
{ words: ['dto', 'validator', 'validación', 'validacion', 'zod', 'class-validator'] },
|
|
64
|
+
{ words: ['inyección de dependencias', 'dependency injection', 'di'] },
|
|
65
|
+
],
|
|
66
|
+
frontend: [
|
|
67
|
+
{ words: ['react', 'vue', 'angular', 'svelte', 'solid'] },
|
|
68
|
+
{ words: ['componente', 'component', 'hook', 'useEffect', 'useState'] },
|
|
69
|
+
{ words: ['ui', 'interfaz', 'usuario', 'pantalla', 'vista'] },
|
|
70
|
+
{ words: ['css', 'tailwind', 'estilo', 'style', 'animación'] },
|
|
71
|
+
{ words: ['next.js', 'nextjs', 'nuxt', 'gatsby', 'astro'] },
|
|
72
|
+
{ words: ['formulario', 'form', 'input', 'botón', 'boton'] },
|
|
73
|
+
],
|
|
74
|
+
architecture: [
|
|
75
|
+
{ words: ['arquitectura', 'arquitectónico', 'arquitectonico'] },
|
|
76
|
+
{ words: ['ddd', 'domain driven', 'bounded context', 'agregado', 'aggregate'] },
|
|
77
|
+
{ words: ['microservicio', 'microservicios', 'monolito', 'modular'] },
|
|
78
|
+
{ words: ['event sourcing', 'cqrs', 'saga', 'outbox', 'inbox'] },
|
|
79
|
+
{ words: ['patrón', 'patron', 'design pattern', 'patrón de diseño'] },
|
|
80
|
+
{ words: ['c4', 'diagrama', 'adr', 'trade-off'] },
|
|
81
|
+
],
|
|
82
|
+
testing: [
|
|
83
|
+
{ words: ['test', 'tests', 'testing', 'prueba', 'pruebas'] },
|
|
84
|
+
{ words: ['unitario', 'unit test', 'integración', 'integration', 'e2e'] },
|
|
85
|
+
{ words: ['jest', 'vitest', 'playwright', 'cypress', 'mocha'] },
|
|
86
|
+
{ words: ['tdd', 'bdd', 'cobertura', 'coverage', 'mock'] },
|
|
87
|
+
{ words: ['contrato', 'contract', 'pact', 'mutation'] },
|
|
88
|
+
],
|
|
89
|
+
devops: [
|
|
90
|
+
{ words: ['docker', 'dockerfile', 'contenedor', 'container', 'imagen'] },
|
|
91
|
+
{ words: ['kubernetes', 'k8s', 'helm', 'pod', 'deployment', 'service'] },
|
|
92
|
+
{ words: ['ci/cd', 'pipeline', 'github actions', 'gitlab ci', 'jenkins'] },
|
|
93
|
+
{ words: ['terraform', 'pulumi', 'iac', 'infraestructura'] },
|
|
94
|
+
{ words: ['cloud', 'aws', 'gcp', 'azure', 'nube'] },
|
|
95
|
+
{ words: ['monitoreo', 'monitoring', 'prometheus', 'grafana', 'alertas'] },
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* @description Detecta dominios a partir del input del usuario.
|
|
100
|
+
*
|
|
101
|
+
* Analiza el texto en busca de keywords técnicas y construye
|
|
102
|
+
* un mapa de dominios con sus puntuaciones.
|
|
103
|
+
*
|
|
104
|
+
* @param input - Texto del usuario
|
|
105
|
+
* @returns Dominios detectados con scores
|
|
106
|
+
*/
|
|
107
|
+
function detectDomains(input) {
|
|
108
|
+
const lower = input.toLowerCase();
|
|
109
|
+
const scores = {};
|
|
110
|
+
const targetServices = new Set();
|
|
111
|
+
const relatedPatterns = new Set();
|
|
112
|
+
for (const [domain, keywords] of Object.entries(DOMAIN_KEYWORDS)) {
|
|
113
|
+
let total = 0;
|
|
114
|
+
for (const kw of keywords) {
|
|
115
|
+
for (const word of kw.words) {
|
|
116
|
+
if ((0, keyword_match_1.matchesKeyword)(lower, word)) {
|
|
117
|
+
total += 1;
|
|
118
|
+
if (kw.service)
|
|
119
|
+
targetServices.add(kw.service);
|
|
120
|
+
if (kw.pattern)
|
|
121
|
+
relatedPatterns.add(kw.pattern);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (total > 0) {
|
|
126
|
+
scores[domain] = total;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Ordenar por score descendente
|
|
130
|
+
const sorted = Object.entries(scores)
|
|
131
|
+
.sort(([, a], [, b]) => b - a)
|
|
132
|
+
.map(([domain]) => domain);
|
|
133
|
+
return {
|
|
134
|
+
domains: sorted,
|
|
135
|
+
targetServices: [...targetServices],
|
|
136
|
+
relatedPatterns: [...relatedPatterns],
|
|
137
|
+
scores,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* @description Enriquce un TaskContext con los dominios detectados.
|
|
142
|
+
*/
|
|
143
|
+
function enrichTaskWithDomains(task) {
|
|
144
|
+
const result = detectDomains(task.rawPrompt);
|
|
145
|
+
return {
|
|
146
|
+
...task,
|
|
147
|
+
domains: result.domains,
|
|
148
|
+
targetServices: [
|
|
149
|
+
...new Set([...task.targetServices, ...result.targetServices]),
|
|
150
|
+
],
|
|
151
|
+
relatedPatterns: [
|
|
152
|
+
...new Set([...task.relatedPatterns, ...result.relatedPatterns]),
|
|
153
|
+
],
|
|
154
|
+
updatedAt: new Date(),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=domain-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-detector.js","sourceRoot":"","sources":["../../src/orchestration/domain-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description FSM — Finite State Machine para el ciclo de vida de tareas.
|
|
3
|
+
*
|
|
4
|
+
* Define los estados válidos y las transiciones permitidas para un TaskContext.
|
|
5
|
+
* Cada tarea comienza en 'new' y progresa a través de gates (architecture,
|
|
6
|
+
* security, QA) hasta llegar a 'commit_allowed' o 'rejected'.
|
|
7
|
+
*
|
|
8
|
+
* El FSM se integra con el Orchestrator para validar que las transiciones
|
|
9
|
+
* sean legales según las políticas aplicadas.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const fsm = new TaskFSM();
|
|
14
|
+
* const task = createTaskContext('Implementar auth');
|
|
15
|
+
*
|
|
16
|
+
* // Transición válida
|
|
17
|
+
* const result = fsm.transition(task, 'classified');
|
|
18
|
+
* // result.allowed === true
|
|
19
|
+
* // result.task.status === 'classified'
|
|
20
|
+
*
|
|
21
|
+
* // Transición inválida
|
|
22
|
+
* const result2 = fsm.transition(task, 'commit_allowed');
|
|
23
|
+
* // result.allowed === false
|
|
24
|
+
* // result.error === 'Transición no permitida: new → commit_allowed'
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
import { TaskContext, TaskStatus } from './task-context';
|
|
28
|
+
export interface FSMTransitionResult {
|
|
29
|
+
/** Si la transición fue permitida */
|
|
30
|
+
allowed: boolean;
|
|
31
|
+
/** TaskContext actualizado (solo si allowed === true) */
|
|
32
|
+
task?: TaskContext;
|
|
33
|
+
/** Mensaje de error si no fue permitida */
|
|
34
|
+
error?: string;
|
|
35
|
+
/** Próximos estados válidos desde el estado actual */
|
|
36
|
+
availableTransitions: TaskStatus[];
|
|
37
|
+
}
|
|
38
|
+
export declare class TaskFSM {
|
|
39
|
+
/**
|
|
40
|
+
* @description Intenta transicionar una tarea a un nuevo estado.
|
|
41
|
+
* Valida que la transición esté en el mapa de transiciones permitidas
|
|
42
|
+
* y que pase todos los guards.
|
|
43
|
+
*
|
|
44
|
+
* @param task - Tarea actual
|
|
45
|
+
* @param to - Estado destino
|
|
46
|
+
* @returns Resultado con la tarea actualizada o error
|
|
47
|
+
*/
|
|
48
|
+
transition(task: TaskContext, to: TaskStatus): FSMTransitionResult;
|
|
49
|
+
/**
|
|
50
|
+
* @description Obtiene los estados destino válidos desde un estado dado.
|
|
51
|
+
*/
|
|
52
|
+
getAvailableTransitions(from: TaskStatus): TaskStatus[];
|
|
53
|
+
/**
|
|
54
|
+
* @description Determina si un estado es terminal (no tiene salidas).
|
|
55
|
+
*/
|
|
56
|
+
isTerminal(status: TaskStatus): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* @description Calcula la ruta crítica desde el estado actual hasta commit_allowed.
|
|
59
|
+
* Útil para mostrar al usuario qué gates faltan.
|
|
60
|
+
*/
|
|
61
|
+
getCriticalPath(task: TaskContext): TaskStatus[];
|
|
62
|
+
/**
|
|
63
|
+
* Verifica si la tarea definitivamente ha pasado por un gate específico.
|
|
64
|
+
*
|
|
65
|
+
* La verificacion es deliberadamente conservadora: prefiere falsos negativos
|
|
66
|
+
* (mostrar un gate como pendiente cuando ya paso) antes que falsos positivos
|
|
67
|
+
* (ocultarlo cuando no paso). getCriticalPath es una funcion de display, no
|
|
68
|
+
* de enforcement — el FSM ya se encarga de bloquear transiciones invalidas.
|
|
69
|
+
*
|
|
70
|
+
* Razon del cambio: el enfoque anterior con indice lineal daba falsos positivos.
|
|
71
|
+
* Ejemplo: classified → implementation con requiresArchitectureReview=true
|
|
72
|
+
* reportaba design_review como "ya pasado" porque implementation(idx=3) > design_review(idx=2),
|
|
73
|
+
* cuando en realidad el FSM permite saltarse design_review desde classified.
|
|
74
|
+
*
|
|
75
|
+
* Logica basada en guardas reales del FSM:
|
|
76
|
+
* - "approved" y estados posteriores garantizan que los gates requeridos se
|
|
77
|
+
* cumplieron (las guardas del FSM bloquean esos saltos).
|
|
78
|
+
* - security_review: si requiresSecurityReview=true y el task esta en qa_review
|
|
79
|
+
* o posterior, el FSM garantiza que security_review fue visitado.
|
|
80
|
+
* - design_review: no hay guarda que lo garantice en todos los caminos
|
|
81
|
+
* (classified → implementation esta permitido aunque requiresArchitectureReview=true),
|
|
82
|
+
* asi que solo retorna true si el task esta exactamente en ese estado.
|
|
83
|
+
*/
|
|
84
|
+
private hasPassedGate;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=fsm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsm.d.ts","sourceRoot":"","sources":["../../src/orchestration/fsm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAyEzE,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,oBAAoB,EAAE,UAAU,EAAE,CAAC;CACpC;AAID,qBAAa,OAAO;IAClB;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,GAAG,mBAAmB;IAgClE;;OAEG;IACH,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE;IAIvD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAIvC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,EAAE;IAsChD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,aAAa;CA0BtB"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description FSM — Finite State Machine para el ciclo de vida de tareas.
|
|
4
|
+
*
|
|
5
|
+
* Define los estados válidos y las transiciones permitidas para un TaskContext.
|
|
6
|
+
* Cada tarea comienza en 'new' y progresa a través de gates (architecture,
|
|
7
|
+
* security, QA) hasta llegar a 'commit_allowed' o 'rejected'.
|
|
8
|
+
*
|
|
9
|
+
* El FSM se integra con el Orchestrator para validar que las transiciones
|
|
10
|
+
* sean legales según las políticas aplicadas.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const fsm = new TaskFSM();
|
|
15
|
+
* const task = createTaskContext('Implementar auth');
|
|
16
|
+
*
|
|
17
|
+
* // Transición válida
|
|
18
|
+
* const result = fsm.transition(task, 'classified');
|
|
19
|
+
* // result.allowed === true
|
|
20
|
+
* // result.task.status === 'classified'
|
|
21
|
+
*
|
|
22
|
+
* // Transición inválida
|
|
23
|
+
* const result2 = fsm.transition(task, 'commit_allowed');
|
|
24
|
+
* // result.allowed === false
|
|
25
|
+
* // result.error === 'Transición no permitida: new → commit_allowed'
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.TaskFSM = void 0;
|
|
30
|
+
const task_context_1 = require("./task-context");
|
|
31
|
+
// ── Definición de transiciones ───────────────────────────────────────────────
|
|
32
|
+
/**
|
|
33
|
+
* Mapa de transiciones permitidas.
|
|
34
|
+
* Cada estado tiene un conjunto de estados destino válidos.
|
|
35
|
+
*/
|
|
36
|
+
const TRANSITIONS = {
|
|
37
|
+
'new': ['classified', 'commit_planning'], // ← commit_planning para @commit sin orquestación
|
|
38
|
+
'classified': ['design_review', 'implementation', 'security_review', 'qa_review', 'rejected'],
|
|
39
|
+
'design_review': ['implementation', 'security_review', 'qa_review', 'rework_required', 'rejected'],
|
|
40
|
+
'implementation': ['security_review', 'qa_review', 'design_review', 'rework_required', 'rejected'],
|
|
41
|
+
'security_review': ['qa_review', 'design_review', 'implementation', 'rework_required', 'rejected'],
|
|
42
|
+
'qa_review': ['approved', 'rework_required', 'rejected'],
|
|
43
|
+
'rework_required': ['design_review', 'implementation', 'security_review', 'qa_review', 'rejected'],
|
|
44
|
+
'approved': ['commit_allowed', 'commit_planning', 'implementation', 'rejected'],
|
|
45
|
+
'commit_allowed': ['commit_planning'], // Puede re-planificar desde commit_allowed
|
|
46
|
+
'rejected': [], // Estado terminal
|
|
47
|
+
// Nuevos estados del commit workflow
|
|
48
|
+
'commit_planning': ['commit_reviewing', 'commit_failed', 'commit_skipped'],
|
|
49
|
+
'commit_reviewing': ['commit_validated', 'commit_rejected', 'commit_failed'],
|
|
50
|
+
'commit_validated': ['commit_allowed'], // Plan validado, listo para ejecutar commit
|
|
51
|
+
'commit_rejected': ['commit_planning', 'rejected'], // Rechazado, puede replanificar
|
|
52
|
+
'commit_failed': ['commit_planning', 'rejected'], // Falló, puede reintentar
|
|
53
|
+
'commit_skipped': ['commit_allowed'], // Saltado, vuelve a commit_allowed
|
|
54
|
+
};
|
|
55
|
+
const GUARDS = [
|
|
56
|
+
// No se puede saltar a commit_allowed sin pasar por approved o commit_validated
|
|
57
|
+
(task, to) => {
|
|
58
|
+
if (to === 'commit_allowed' && task.status !== 'approved' && task.status !== 'commit_validated') {
|
|
59
|
+
return 'Debe estar en estado "approved" o "commit_validated" antes de permitir commit';
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
},
|
|
63
|
+
// Si requiere architecture review, debe pasar por design_review
|
|
64
|
+
(task, to) => {
|
|
65
|
+
if (task.requiresArchitectureReview && to === 'implementation' && task.status !== 'design_review' && task.status !== 'classified') {
|
|
66
|
+
return 'Requiere revisión de arquitectura (design_review) antes de implementar';
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
},
|
|
70
|
+
// Si requiere security review, debe pasar por security_review
|
|
71
|
+
(task, to) => {
|
|
72
|
+
if (task.requiresSecurityReview && to === 'qa_review' && task.status !== 'security_review') {
|
|
73
|
+
return 'Requiere revisión de seguridad (security_review) antes de QA';
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
},
|
|
77
|
+
// Si requiere QA approval, debe pasar por qa_review
|
|
78
|
+
(task, to) => {
|
|
79
|
+
if (task.requiresQaApproval && to === 'approved' && task.status !== 'qa_review') {
|
|
80
|
+
return 'Requiere aprobación de QA (qa_review) antes de approved';
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
// ── TaskFSM ──────────────────────────────────────────────────────────────────
|
|
86
|
+
class TaskFSM {
|
|
87
|
+
/**
|
|
88
|
+
* @description Intenta transicionar una tarea a un nuevo estado.
|
|
89
|
+
* Valida que la transición esté en el mapa de transiciones permitidas
|
|
90
|
+
* y que pase todos los guards.
|
|
91
|
+
*
|
|
92
|
+
* @param task - Tarea actual
|
|
93
|
+
* @param to - Estado destino
|
|
94
|
+
* @returns Resultado con la tarea actualizada o error
|
|
95
|
+
*/
|
|
96
|
+
transition(task, to) {
|
|
97
|
+
const available = this.getAvailableTransitions(task.status);
|
|
98
|
+
// Verificar que la transición esté permitida
|
|
99
|
+
if (!available.includes(to)) {
|
|
100
|
+
return {
|
|
101
|
+
allowed: false,
|
|
102
|
+
error: `Transición no permitida: ${task.status} → ${to}. Estados válidos: ${available.join(', ')}`,
|
|
103
|
+
availableTransitions: available,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
// Ejecutar guards
|
|
107
|
+
for (const guard of GUARDS) {
|
|
108
|
+
const error = guard(task, to);
|
|
109
|
+
if (error) {
|
|
110
|
+
return {
|
|
111
|
+
allowed: false,
|
|
112
|
+
error,
|
|
113
|
+
availableTransitions: available,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Transición válida
|
|
118
|
+
return {
|
|
119
|
+
allowed: true,
|
|
120
|
+
task: (0, task_context_1.transitionTask)(task, to),
|
|
121
|
+
availableTransitions: this.getAvailableTransitions(to),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @description Obtiene los estados destino válidos desde un estado dado.
|
|
126
|
+
*/
|
|
127
|
+
getAvailableTransitions(from) {
|
|
128
|
+
return TRANSITIONS[from] ?? [];
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @description Determina si un estado es terminal (no tiene salidas).
|
|
132
|
+
*/
|
|
133
|
+
isTerminal(status) {
|
|
134
|
+
return TRANSITIONS[status]?.length === 0;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* @description Calcula la ruta crítica desde el estado actual hasta commit_allowed.
|
|
138
|
+
* Útil para mostrar al usuario qué gates faltan.
|
|
139
|
+
*/
|
|
140
|
+
getCriticalPath(task) {
|
|
141
|
+
const path = [task.status];
|
|
142
|
+
const current = task.status;
|
|
143
|
+
if (current === 'commit_allowed' || current === 'rejected')
|
|
144
|
+
return path;
|
|
145
|
+
// Si está en new, debe clasificarse
|
|
146
|
+
if (current === 'new') {
|
|
147
|
+
path.push('classified');
|
|
148
|
+
}
|
|
149
|
+
// Si requiere architecture review y no ha pasado
|
|
150
|
+
if (task.requiresArchitectureReview && !this.hasPassedGate(task, 'design_review')) {
|
|
151
|
+
if (!path.includes('design_review'))
|
|
152
|
+
path.push('design_review');
|
|
153
|
+
}
|
|
154
|
+
// Si no ha llegado a implementation
|
|
155
|
+
if (current !== 'implementation' && current !== 'design_review') {
|
|
156
|
+
if (!path.includes('implementation'))
|
|
157
|
+
path.push('implementation');
|
|
158
|
+
}
|
|
159
|
+
// Si requiere security review
|
|
160
|
+
if (task.requiresSecurityReview && !this.hasPassedGate(task, 'security_review')) {
|
|
161
|
+
if (!path.includes('security_review'))
|
|
162
|
+
path.push('security_review');
|
|
163
|
+
}
|
|
164
|
+
// Si requiere QA approval
|
|
165
|
+
if (task.requiresQaApproval && !this.hasPassedGate(task, 'qa_review')) {
|
|
166
|
+
if (!path.includes('qa_review'))
|
|
167
|
+
path.push('qa_review');
|
|
168
|
+
}
|
|
169
|
+
// Approved → commit_allowed
|
|
170
|
+
if (!path.includes('approved'))
|
|
171
|
+
path.push('approved');
|
|
172
|
+
if (!path.includes('commit_allowed'))
|
|
173
|
+
path.push('commit_allowed');
|
|
174
|
+
return path;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Verifica si la tarea definitivamente ha pasado por un gate específico.
|
|
178
|
+
*
|
|
179
|
+
* La verificacion es deliberadamente conservadora: prefiere falsos negativos
|
|
180
|
+
* (mostrar un gate como pendiente cuando ya paso) antes que falsos positivos
|
|
181
|
+
* (ocultarlo cuando no paso). getCriticalPath es una funcion de display, no
|
|
182
|
+
* de enforcement — el FSM ya se encarga de bloquear transiciones invalidas.
|
|
183
|
+
*
|
|
184
|
+
* Razon del cambio: el enfoque anterior con indice lineal daba falsos positivos.
|
|
185
|
+
* Ejemplo: classified → implementation con requiresArchitectureReview=true
|
|
186
|
+
* reportaba design_review como "ya pasado" porque implementation(idx=3) > design_review(idx=2),
|
|
187
|
+
* cuando en realidad el FSM permite saltarse design_review desde classified.
|
|
188
|
+
*
|
|
189
|
+
* Logica basada en guardas reales del FSM:
|
|
190
|
+
* - "approved" y estados posteriores garantizan que los gates requeridos se
|
|
191
|
+
* cumplieron (las guardas del FSM bloquean esos saltos).
|
|
192
|
+
* - security_review: si requiresSecurityReview=true y el task esta en qa_review
|
|
193
|
+
* o posterior, el FSM garantiza que security_review fue visitado.
|
|
194
|
+
* - design_review: no hay guarda que lo garantice en todos los caminos
|
|
195
|
+
* (classified → implementation esta permitido aunque requiresArchitectureReview=true),
|
|
196
|
+
* asi que solo retorna true si el task esta exactamente en ese estado.
|
|
197
|
+
*/
|
|
198
|
+
hasPassedGate(task, gate) {
|
|
199
|
+
const s = task.status;
|
|
200
|
+
if (s === gate)
|
|
201
|
+
return true;
|
|
202
|
+
// Desde approved en adelante el FSM garantiza que todos los gates requeridos
|
|
203
|
+
// fueron satisfechos (las guardas son transitivas por la cadena de transiciones).
|
|
204
|
+
const postApproval = new Set([
|
|
205
|
+
'approved', 'commit_allowed', 'commit_planning', 'commit_reviewing',
|
|
206
|
+
'commit_validated', 'commit_skipped',
|
|
207
|
+
]);
|
|
208
|
+
if (postApproval.has(s))
|
|
209
|
+
return true;
|
|
210
|
+
// security_review: la guarda del FSM bloquea qa_review si requiresSecurityReview
|
|
211
|
+
// y el task no esta en security_review — por lo tanto qa_review garantiza que
|
|
212
|
+
// security_review fue visitado cuando el flag esta activo.
|
|
213
|
+
if (gate === 'security_review' && task.requiresSecurityReview) {
|
|
214
|
+
return s === 'qa_review' || postApproval.has(s);
|
|
215
|
+
}
|
|
216
|
+
// design_review: no hay guarda que fuerce su visita antes de implementation
|
|
217
|
+
// desde classified, asi que no podemos asumir que fue visitado.
|
|
218
|
+
// Solo retorna true si el task esta en ese estado (cubierto arriba).
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
exports.TaskFSM = TaskFSM;
|
|
223
|
+
//# sourceMappingURL=fsm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsm.js","sourceRoot":"","sources":["../../src/orchestration/fsm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description GateResolver — Única fuente de verdad para la resolución de gates.
|
|
3
|
+
*
|
|
4
|
+
* Consolida la lógica que estaba dispersa en:
|
|
5
|
+
* - buildPipeline() de orchestrator/index.ts
|
|
6
|
+
* - isCommitAllowed() de orchestrator/index.ts
|
|
7
|
+
* - policy-engine.ts (requiredGates)
|
|
8
|
+
* - risk-scorer.ts (riskLevel → gates)
|
|
9
|
+
*
|
|
10
|
+
* Usar esta función como punto de entrada canónico para determinar:
|
|
11
|
+
* qué agentes se activan en cada fase, y si el commit está permitido.
|
|
12
|
+
*/
|
|
13
|
+
import { TaskContext } from './task-context';
|
|
14
|
+
import { PolicyEngineResult } from './policy-engine';
|
|
15
|
+
import { AgentPipelinePhase } from './types';
|
|
16
|
+
import { OrchestratorConfig } from './types';
|
|
17
|
+
export interface GateResolution {
|
|
18
|
+
/** Pipeline de fases de agentes a ejecutar */
|
|
19
|
+
pipeline: AgentPipelinePhase[];
|
|
20
|
+
/** Si el commit está permitido en el estado actual */
|
|
21
|
+
commitAllowed: boolean;
|
|
22
|
+
/** Reviews obligatorias detectadas (para trazabilidad) */
|
|
23
|
+
requiredReviews: Array<'security' | 'architecture' | 'qa'>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @description Determina el pipeline de gates y si el commit está permitido.
|
|
27
|
+
*
|
|
28
|
+
* @param task - Contexto de la tarea orquestada
|
|
29
|
+
* @param policyResult - Resultado del PolicyEngine con gates requeridos
|
|
30
|
+
* @param config - Configuración del orquestador
|
|
31
|
+
* @param selectedAgents - Agentes ya seleccionados por el router
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveGates(task: TaskContext, policyResult: PolicyEngineResult, config: OrchestratorConfig, selectedAgents: Array<{
|
|
34
|
+
agentId: string;
|
|
35
|
+
score: number;
|
|
36
|
+
reason: string;
|
|
37
|
+
}>): GateResolution;
|
|
38
|
+
/**
|
|
39
|
+
* @description Determina si el commit está permitido según el estado del task y las políticas.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveCommitAllowed(task: TaskContext, policyResult: PolicyEngineResult, config: OrchestratorConfig): boolean;
|
|
42
|
+
//# sourceMappingURL=gate-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-resolver.d.ts","sourceRoot":"","sources":["../../src/orchestration/gate-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,sDAAsD;IACtD,aAAa,EAAE,OAAO,CAAC;IACvB,0DAA0D;IAC1D,eAAe,EAAE,KAAK,CAAC,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC,CAAC;CAC5D;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GACxE,cAAc,CAyDhB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAaT"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description GateResolver — Única fuente de verdad para la resolución de gates.
|
|
4
|
+
*
|
|
5
|
+
* Consolida la lógica que estaba dispersa en:
|
|
6
|
+
* - buildPipeline() de orchestrator/index.ts
|
|
7
|
+
* - isCommitAllowed() de orchestrator/index.ts
|
|
8
|
+
* - policy-engine.ts (requiredGates)
|
|
9
|
+
* - risk-scorer.ts (riskLevel → gates)
|
|
10
|
+
*
|
|
11
|
+
* Usar esta función como punto de entrada canónico para determinar:
|
|
12
|
+
* qué agentes se activan en cada fase, y si el commit está permitido.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.resolveGates = resolveGates;
|
|
16
|
+
exports.resolveCommitAllowed = resolveCommitAllowed;
|
|
17
|
+
/**
|
|
18
|
+
* @description Determina el pipeline de gates y si el commit está permitido.
|
|
19
|
+
*
|
|
20
|
+
* @param task - Contexto de la tarea orquestada
|
|
21
|
+
* @param policyResult - Resultado del PolicyEngine con gates requeridos
|
|
22
|
+
* @param config - Configuración del orquestador
|
|
23
|
+
* @param selectedAgents - Agentes ya seleccionados por el router
|
|
24
|
+
*/
|
|
25
|
+
function resolveGates(task, policyResult, config, selectedAgents) {
|
|
26
|
+
const pipeline = [];
|
|
27
|
+
const requiredReviews = [];
|
|
28
|
+
const isHighRisk = task.riskLevel === 'high' || task.riskLevel === 'critical';
|
|
29
|
+
const hasSecurityDomain = task.domains.includes('security');
|
|
30
|
+
const hasArchitectureDomain = task.domains.includes('architecture') || task.domains.includes('resilience');
|
|
31
|
+
// Review de seguridad
|
|
32
|
+
if (task.requiresSecurityReview || (isHighRisk && hasSecurityDomain)) {
|
|
33
|
+
pipeline.push({
|
|
34
|
+
phase: 'review',
|
|
35
|
+
agentId: 'security',
|
|
36
|
+
purpose: 'Review security implications',
|
|
37
|
+
optional: false,
|
|
38
|
+
});
|
|
39
|
+
requiredReviews.push('security');
|
|
40
|
+
}
|
|
41
|
+
// Review de arquitectura
|
|
42
|
+
if (task.requiresArchitectureReview || (isHighRisk && hasArchitectureDomain)) {
|
|
43
|
+
pipeline.push({
|
|
44
|
+
phase: 'review',
|
|
45
|
+
agentId: 'architecture',
|
|
46
|
+
purpose: 'Review architecture for high-risk change',
|
|
47
|
+
optional: false,
|
|
48
|
+
});
|
|
49
|
+
requiredReviews.push('architecture');
|
|
50
|
+
}
|
|
51
|
+
// Fase de implementación: mejor agente seleccionado
|
|
52
|
+
const topAgent = selectedAgents[0];
|
|
53
|
+
if (topAgent && topAgent.agentId !== 'general') {
|
|
54
|
+
pipeline.push({
|
|
55
|
+
phase: 'implement',
|
|
56
|
+
agentId: topAgent.agentId,
|
|
57
|
+
purpose: topAgent.reason,
|
|
58
|
+
optional: false,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// Fase de verificación QA
|
|
62
|
+
const hasImplementPhase = pipeline.some(p => p.phase === 'implement');
|
|
63
|
+
if (hasImplementPhase && task.requiresQaApproval) {
|
|
64
|
+
pipeline.push({
|
|
65
|
+
phase: 'verify',
|
|
66
|
+
agentId: 'qa-engineer',
|
|
67
|
+
purpose: 'Verify implementation quality and best practices',
|
|
68
|
+
optional: false,
|
|
69
|
+
});
|
|
70
|
+
requiredReviews.push('qa');
|
|
71
|
+
}
|
|
72
|
+
const commitAllowed = resolveCommitAllowed(task, policyResult, config);
|
|
73
|
+
return { pipeline, commitAllowed, requiredReviews };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @description Determina si el commit está permitido según el estado del task y las políticas.
|
|
77
|
+
*/
|
|
78
|
+
function resolveCommitAllowed(task, policyResult, config) {
|
|
79
|
+
if (!config.features.commitGate)
|
|
80
|
+
return true;
|
|
81
|
+
if (task.status === 'commit_allowed')
|
|
82
|
+
return true;
|
|
83
|
+
if (task.requiresQaApproval && task.status !== 'approved' && task.status !== 'qa_review')
|
|
84
|
+
return false;
|
|
85
|
+
if (task.requiresSecurityReview && task.status !== 'approved' && task.status !== 'security_review')
|
|
86
|
+
return false;
|
|
87
|
+
if (task.requiresArchitectureReview && task.status !== 'approved' && task.status !== 'design_review')
|
|
88
|
+
return false;
|
|
89
|
+
if (!task.requiresQaApproval && !task.requiresSecurityReview && !task.requiresArchitectureReview) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=gate-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-resolver.js","sourceRoot":"","sources":["../../src/orchestration/gate-resolver.ts"],"names":[],"mappings":"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"}
|