@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.
Files changed (533) hide show
  1. package/dist/agent-discovery/AgentPackageLoader.d.ts +14 -0
  2. package/dist/agent-discovery/AgentPackageLoader.d.ts.map +1 -0
  3. package/dist/agent-discovery/AgentPackageLoader.js +78 -0
  4. package/dist/agent-discovery/AgentPackageLoader.js.map +1 -0
  5. package/dist/agent-discovery/RemoteAgentRegistry.d.ts +31 -0
  6. package/dist/agent-discovery/RemoteAgentRegistry.d.ts.map +1 -0
  7. package/dist/agent-discovery/RemoteAgentRegistry.js +103 -0
  8. package/dist/agent-discovery/RemoteAgentRegistry.js.map +1 -0
  9. package/dist/agent-discovery/discoverAgents.d.ts +18 -0
  10. package/dist/agent-discovery/discoverAgents.d.ts.map +1 -0
  11. package/dist/agent-discovery/discoverAgents.js +59 -0
  12. package/dist/agent-discovery/discoverAgents.js.map +1 -0
  13. package/dist/agent-discovery/index.d.ts +5 -0
  14. package/dist/agent-discovery/index.d.ts.map +1 -0
  15. package/dist/agent-discovery/index.js +12 -0
  16. package/dist/agent-discovery/index.js.map +1 -0
  17. package/dist/agent-discovery/types.d.ts +42 -0
  18. package/dist/agent-discovery/types.d.ts.map +1 -0
  19. package/dist/agent-discovery/types.js +3 -0
  20. package/dist/agent-discovery/types.js.map +1 -0
  21. package/dist/agent-memory/EpisodicMemory.d.ts +26 -0
  22. package/dist/agent-memory/EpisodicMemory.d.ts.map +1 -0
  23. package/dist/agent-memory/EpisodicMemory.js +83 -0
  24. package/dist/agent-memory/EpisodicMemory.js.map +1 -0
  25. package/dist/agent-memory/MemorySystem.d.ts +40 -0
  26. package/dist/agent-memory/MemorySystem.d.ts.map +1 -0
  27. package/dist/agent-memory/MemorySystem.js +75 -0
  28. package/dist/agent-memory/MemorySystem.js.map +1 -0
  29. package/dist/agent-memory/ProceduralMemory.d.ts +26 -0
  30. package/dist/agent-memory/ProceduralMemory.d.ts.map +1 -0
  31. package/dist/agent-memory/ProceduralMemory.js +104 -0
  32. package/dist/agent-memory/ProceduralMemory.js.map +1 -0
  33. package/dist/agent-memory/SemanticMemory.d.ts +21 -0
  34. package/dist/agent-memory/SemanticMemory.d.ts.map +1 -0
  35. package/dist/agent-memory/SemanticMemory.js +68 -0
  36. package/dist/agent-memory/SemanticMemory.js.map +1 -0
  37. package/dist/agent-memory/index.d.ts +9 -0
  38. package/dist/agent-memory/index.d.ts.map +1 -0
  39. package/dist/agent-memory/index.js +19 -0
  40. package/dist/agent-memory/index.js.map +1 -0
  41. package/dist/agent-memory/scoring.d.ts +10 -0
  42. package/dist/agent-memory/scoring.d.ts.map +1 -0
  43. package/dist/agent-memory/scoring.js +32 -0
  44. package/dist/agent-memory/scoring.js.map +1 -0
  45. package/dist/agent-memory/stores/InMemoryStore.d.ts +10 -0
  46. package/dist/agent-memory/stores/InMemoryStore.d.ts.map +1 -0
  47. package/dist/agent-memory/stores/InMemoryStore.js +25 -0
  48. package/dist/agent-memory/stores/InMemoryStore.js.map +1 -0
  49. package/dist/agent-memory/stores/JsonFileStore.d.ts +18 -0
  50. package/dist/agent-memory/stores/JsonFileStore.d.ts.map +1 -0
  51. package/dist/agent-memory/stores/JsonFileStore.js +61 -0
  52. package/dist/agent-memory/stores/JsonFileStore.js.map +1 -0
  53. package/dist/agent-memory/tools.d.ts +6 -0
  54. package/dist/agent-memory/tools.d.ts.map +1 -0
  55. package/dist/agent-memory/tools.js +74 -0
  56. package/dist/agent-memory/tools.js.map +1 -0
  57. package/dist/agent-memory/types.d.ts +75 -0
  58. package/dist/agent-memory/types.d.ts.map +1 -0
  59. package/dist/agent-memory/types.js +4 -0
  60. package/dist/agent-memory/types.js.map +1 -0
  61. package/dist/bootstrap/GlobalSeed.d.ts +46 -0
  62. package/dist/bootstrap/GlobalSeed.d.ts.map +1 -0
  63. package/dist/bootstrap/GlobalSeed.js +285 -0
  64. package/dist/bootstrap/GlobalSeed.js.map +1 -0
  65. package/dist/bootstrap/config.d.ts +24 -0
  66. package/dist/bootstrap/config.d.ts.map +1 -0
  67. package/dist/bootstrap/config.js +71 -0
  68. package/dist/bootstrap/config.js.map +1 -0
  69. package/dist/checkpoint/index.d.ts +17 -0
  70. package/dist/checkpoint/index.d.ts.map +1 -0
  71. package/dist/checkpoint/index.js +207 -0
  72. package/dist/checkpoint/index.js.map +1 -0
  73. package/dist/commands/SlashCommandRegistry.d.ts +98 -0
  74. package/dist/commands/SlashCommandRegistry.d.ts.map +1 -0
  75. package/dist/commands/SlashCommandRegistry.js +41 -0
  76. package/dist/commands/SlashCommandRegistry.js.map +1 -0
  77. package/dist/commands/builtin.d.ts +7 -0
  78. package/dist/commands/builtin.d.ts.map +1 -0
  79. package/dist/commands/builtin.js +694 -0
  80. package/dist/commands/builtin.js.map +1 -0
  81. package/dist/commands/index.d.ts +4 -0
  82. package/dist/commands/index.d.ts.map +1 -0
  83. package/dist/commands/index.js +8 -0
  84. package/dist/commands/index.js.map +1 -0
  85. package/dist/context/index.d.ts +8 -0
  86. package/dist/context/index.d.ts.map +1 -0
  87. package/dist/context/index.js +8 -0
  88. package/dist/context/index.js.map +1 -0
  89. package/dist/context/pipeline.d.ts +46 -0
  90. package/dist/context/pipeline.d.ts.map +1 -0
  91. package/dist/context/pipeline.js +111 -0
  92. package/dist/context/pipeline.js.map +1 -0
  93. package/dist/context/stages/stage-instructions.d.ts +12 -0
  94. package/dist/context/stages/stage-instructions.d.ts.map +1 -0
  95. package/dist/context/stages/stage-instructions.js +76 -0
  96. package/dist/context/stages/stage-instructions.js.map +1 -0
  97. package/dist/context/stages/stage-lessons.d.ts +13 -0
  98. package/dist/context/stages/stage-lessons.d.ts.map +1 -0
  99. package/dist/context/stages/stage-lessons.js +83 -0
  100. package/dist/context/stages/stage-lessons.js.map +1 -0
  101. package/dist/context/stages/stage-manifest.d.ts +11 -0
  102. package/dist/context/stages/stage-manifest.d.ts.map +1 -0
  103. package/dist/context/stages/stage-manifest.js +62 -0
  104. package/dist/context/stages/stage-manifest.js.map +1 -0
  105. package/dist/context/stages/stage-project.d.ts +10 -0
  106. package/dist/context/stages/stage-project.d.ts.map +1 -0
  107. package/dist/context/stages/stage-project.js +55 -0
  108. package/dist/context/stages/stage-project.js.map +1 -0
  109. package/dist/context/stages/stage-session.d.ts +12 -0
  110. package/dist/context/stages/stage-session.d.ts.map +1 -0
  111. package/dist/context/stages/stage-session.js +69 -0
  112. package/dist/context/stages/stage-session.js.map +1 -0
  113. package/dist/delegation/DelegationBus.d.ts +40 -0
  114. package/dist/delegation/DelegationBus.d.ts.map +1 -0
  115. package/dist/delegation/DelegationBus.js +68 -0
  116. package/dist/delegation/DelegationBus.js.map +1 -0
  117. package/dist/engine/AgentEngine.d.ts +212 -0
  118. package/dist/engine/AgentEngine.d.ts.map +1 -0
  119. package/dist/engine/AgentEngine.js +1037 -0
  120. package/dist/engine/AgentEngine.js.map +1 -0
  121. package/dist/engine/AgentRegistry.d.ts +13 -0
  122. package/dist/engine/AgentRegistry.d.ts.map +1 -0
  123. package/dist/engine/AgentRegistry.js +37 -0
  124. package/dist/engine/AgentRegistry.js.map +1 -0
  125. package/dist/engine/IterationManager.d.ts +79 -0
  126. package/dist/engine/IterationManager.d.ts.map +1 -0
  127. package/dist/engine/IterationManager.js +103 -0
  128. package/dist/engine/IterationManager.js.map +1 -0
  129. package/dist/engine/ProviderRegistry.d.ts +10 -0
  130. package/dist/engine/ProviderRegistry.d.ts.map +1 -0
  131. package/dist/engine/ProviderRegistry.js +28 -0
  132. package/dist/engine/ProviderRegistry.js.map +1 -0
  133. package/dist/engine/ToolRegistry.d.ts +54 -0
  134. package/dist/engine/ToolRegistry.d.ts.map +1 -0
  135. package/dist/engine/ToolRegistry.js +75 -0
  136. package/dist/engine/ToolRegistry.js.map +1 -0
  137. package/dist/engine/createBaseEngine.d.ts +169 -0
  138. package/dist/engine/createBaseEngine.d.ts.map +1 -0
  139. package/dist/engine/createBaseEngine.js +91 -0
  140. package/dist/engine/createBaseEngine.js.map +1 -0
  141. package/dist/engine/qa-orchestrator.d.ts +56 -0
  142. package/dist/engine/qa-orchestrator.d.ts.map +1 -0
  143. package/dist/engine/qa-orchestrator.js +163 -0
  144. package/dist/engine/qa-orchestrator.js.map +1 -0
  145. package/dist/index.d.ts +83 -0
  146. package/dist/index.d.ts.map +1 -0
  147. package/dist/index.js +163 -0
  148. package/dist/index.js.map +1 -0
  149. package/dist/mcp/MCPClientManager.d.ts +65 -0
  150. package/dist/mcp/MCPClientManager.d.ts.map +1 -0
  151. package/dist/mcp/MCPClientManager.js +211 -0
  152. package/dist/mcp/MCPClientManager.js.map +1 -0
  153. package/dist/mcp/index.d.ts +3 -0
  154. package/dist/mcp/index.d.ts.map +1 -0
  155. package/dist/mcp/index.js +6 -0
  156. package/dist/mcp/index.js.map +1 -0
  157. package/dist/mcp/types.d.ts +121 -0
  158. package/dist/mcp/types.d.ts.map +1 -0
  159. package/dist/mcp/types.js +3 -0
  160. package/dist/mcp/types.js.map +1 -0
  161. package/dist/memory/SessionMemory.d.ts +9 -0
  162. package/dist/memory/SessionMemory.d.ts.map +1 -0
  163. package/dist/memory/SessionMemory.js +20 -0
  164. package/dist/memory/SessionMemory.js.map +1 -0
  165. package/dist/observability/CostTracker.d.ts +19 -0
  166. package/dist/observability/CostTracker.d.ts.map +1 -0
  167. package/dist/observability/CostTracker.js +64 -0
  168. package/dist/observability/CostTracker.js.map +1 -0
  169. package/dist/observability/MetricsCollector.d.ts +17 -0
  170. package/dist/observability/MetricsCollector.d.ts.map +1 -0
  171. package/dist/observability/MetricsCollector.js +70 -0
  172. package/dist/observability/MetricsCollector.js.map +1 -0
  173. package/dist/observability/ObservabilityManager.d.ts +33 -0
  174. package/dist/observability/ObservabilityManager.d.ts.map +1 -0
  175. package/dist/observability/ObservabilityManager.js +107 -0
  176. package/dist/observability/ObservabilityManager.js.map +1 -0
  177. package/dist/observability/Tracer.d.ts +23 -0
  178. package/dist/observability/Tracer.d.ts.map +1 -0
  179. package/dist/observability/Tracer.js +65 -0
  180. package/dist/observability/Tracer.js.map +1 -0
  181. package/dist/observability/index.d.ts +7 -0
  182. package/dist/observability/index.d.ts.map +1 -0
  183. package/dist/observability/index.js +14 -0
  184. package/dist/observability/index.js.map +1 -0
  185. package/dist/observability/types.d.ts +77 -0
  186. package/dist/observability/types.d.ts.map +1 -0
  187. package/dist/observability/types.js +15 -0
  188. package/dist/observability/types.js.map +1 -0
  189. package/dist/orchestration/audit/audit-ci-blocker.d.ts +31 -0
  190. package/dist/orchestration/audit/audit-ci-blocker.d.ts.map +1 -0
  191. package/dist/orchestration/audit/audit-ci-blocker.js +120 -0
  192. package/dist/orchestration/audit/audit-ci-blocker.js.map +1 -0
  193. package/dist/orchestration/audit/audit-finding-tracer.d.ts +33 -0
  194. package/dist/orchestration/audit/audit-finding-tracer.d.ts.map +1 -0
  195. package/dist/orchestration/audit/audit-finding-tracer.js +126 -0
  196. package/dist/orchestration/audit/audit-finding-tracer.js.map +1 -0
  197. package/dist/orchestration/audit/audit-lessons-learned.d.ts +27 -0
  198. package/dist/orchestration/audit/audit-lessons-learned.d.ts.map +1 -0
  199. package/dist/orchestration/audit/audit-lessons-learned.js +155 -0
  200. package/dist/orchestration/audit/audit-lessons-learned.js.map +1 -0
  201. package/dist/orchestration/audit/audit-pending-issues.d.ts +21 -0
  202. package/dist/orchestration/audit/audit-pending-issues.d.ts.map +1 -0
  203. package/dist/orchestration/audit/audit-pending-issues.js +110 -0
  204. package/dist/orchestration/audit/audit-pending-issues.js.map +1 -0
  205. package/dist/orchestration/audit/audit-reflection-bridge.d.ts +39 -0
  206. package/dist/orchestration/audit/audit-reflection-bridge.d.ts.map +1 -0
  207. package/dist/orchestration/audit/audit-reflection-bridge.js +65 -0
  208. package/dist/orchestration/audit/audit-reflection-bridge.js.map +1 -0
  209. package/dist/orchestration/audit/audit-report-renderer.d.ts +30 -0
  210. package/dist/orchestration/audit/audit-report-renderer.d.ts.map +1 -0
  211. package/dist/orchestration/audit/audit-report-renderer.js +249 -0
  212. package/dist/orchestration/audit/audit-report-renderer.js.map +1 -0
  213. package/dist/orchestration/audit/audit-report-version-manager.d.ts +52 -0
  214. package/dist/orchestration/audit/audit-report-version-manager.d.ts.map +1 -0
  215. package/dist/orchestration/audit/audit-report-version-manager.js +144 -0
  216. package/dist/orchestration/audit/audit-report-version-manager.js.map +1 -0
  217. package/dist/orchestration/audit/audit-silent-gates-buffer.d.ts +37 -0
  218. package/dist/orchestration/audit/audit-silent-gates-buffer.d.ts.map +1 -0
  219. package/dist/orchestration/audit/audit-silent-gates-buffer.js +129 -0
  220. package/dist/orchestration/audit/audit-silent-gates-buffer.js.map +1 -0
  221. package/dist/orchestration/audit/index.d.ts +17 -0
  222. package/dist/orchestration/audit/index.d.ts.map +1 -0
  223. package/dist/orchestration/audit/index.js +26 -0
  224. package/dist/orchestration/audit/index.js.map +1 -0
  225. package/dist/orchestration/audit/types.d.ts +79 -0
  226. package/dist/orchestration/audit/types.d.ts.map +1 -0
  227. package/dist/orchestration/audit/types.js +10 -0
  228. package/dist/orchestration/audit/types.js.map +1 -0
  229. package/dist/orchestration/audit-reporter.d.ts +133 -0
  230. package/dist/orchestration/audit-reporter.d.ts.map +1 -0
  231. package/dist/orchestration/audit-reporter.js +322 -0
  232. package/dist/orchestration/audit-reporter.js.map +1 -0
  233. package/dist/orchestration/config-loader.d.ts +51 -0
  234. package/dist/orchestration/config-loader.d.ts.map +1 -0
  235. package/dist/orchestration/config-loader.js +215 -0
  236. package/dist/orchestration/config-loader.js.map +1 -0
  237. package/dist/orchestration/domain-detector.d.ts +36 -0
  238. package/dist/orchestration/domain-detector.d.ts.map +1 -0
  239. package/dist/orchestration/domain-detector.js +157 -0
  240. package/dist/orchestration/domain-detector.js.map +1 -0
  241. package/dist/orchestration/fsm.d.ts +86 -0
  242. package/dist/orchestration/fsm.d.ts.map +1 -0
  243. package/dist/orchestration/fsm.js +223 -0
  244. package/dist/orchestration/fsm.js.map +1 -0
  245. package/dist/orchestration/gate-resolver.d.ts +42 -0
  246. package/dist/orchestration/gate-resolver.d.ts.map +1 -0
  247. package/dist/orchestration/gate-resolver.js +94 -0
  248. package/dist/orchestration/gate-resolver.js.map +1 -0
  249. package/dist/orchestration/index.d.ts +15 -0
  250. package/dist/orchestration/index.d.ts.map +1 -0
  251. package/dist/orchestration/index.js +32 -0
  252. package/dist/orchestration/index.js.map +1 -0
  253. package/dist/orchestration/intent-detector.d.ts +43 -0
  254. package/dist/orchestration/intent-detector.d.ts.map +1 -0
  255. package/dist/orchestration/intent-detector.js +249 -0
  256. package/dist/orchestration/intent-detector.js.map +1 -0
  257. package/dist/orchestration/keyword-match.d.ts +17 -0
  258. package/dist/orchestration/keyword-match.d.ts.map +1 -0
  259. package/dist/orchestration/keyword-match.js +26 -0
  260. package/dist/orchestration/keyword-match.js.map +1 -0
  261. package/dist/orchestration/llm-client-adapter.d.ts +11 -0
  262. package/dist/orchestration/llm-client-adapter.d.ts.map +1 -0
  263. package/dist/orchestration/llm-client-adapter.js +30 -0
  264. package/dist/orchestration/llm-client-adapter.js.map +1 -0
  265. package/dist/orchestration/orchestrator.d.ts +153 -0
  266. package/dist/orchestration/orchestrator.d.ts.map +1 -0
  267. package/dist/orchestration/orchestrator.js +471 -0
  268. package/dist/orchestration/orchestrator.js.map +1 -0
  269. package/dist/orchestration/policy-engine.d.ts +47 -0
  270. package/dist/orchestration/policy-engine.d.ts.map +1 -0
  271. package/dist/orchestration/policy-engine.js +262 -0
  272. package/dist/orchestration/policy-engine.js.map +1 -0
  273. package/dist/orchestration/risk-scorer.d.ts +38 -0
  274. package/dist/orchestration/risk-scorer.d.ts.map +1 -0
  275. package/dist/orchestration/risk-scorer.js +145 -0
  276. package/dist/orchestration/risk-scorer.js.map +1 -0
  277. package/dist/orchestration/task-context.d.ts +195 -0
  278. package/dist/orchestration/task-context.d.ts.map +1 -0
  279. package/dist/orchestration/task-context.js +160 -0
  280. package/dist/orchestration/task-context.js.map +1 -0
  281. package/dist/orchestration/types.d.ts +111 -0
  282. package/dist/orchestration/types.d.ts.map +1 -0
  283. package/dist/orchestration/types.js +37 -0
  284. package/dist/orchestration/types.js.map +1 -0
  285. package/dist/qa/index.d.ts +3 -0
  286. package/dist/qa/index.d.ts.map +1 -0
  287. package/dist/qa/index.js +6 -0
  288. package/dist/qa/index.js.map +1 -0
  289. package/dist/qa/qa-service.d.ts +30 -0
  290. package/dist/qa/qa-service.d.ts.map +1 -0
  291. package/dist/qa/qa-service.js +200 -0
  292. package/dist/qa/qa-service.js.map +1 -0
  293. package/dist/reflection/commands/domain-commands.d.ts +78 -0
  294. package/dist/reflection/commands/domain-commands.d.ts.map +1 -0
  295. package/dist/reflection/commands/domain-commands.js +203 -0
  296. package/dist/reflection/commands/domain-commands.js.map +1 -0
  297. package/dist/reflection/domain-registry.d.ts +104 -0
  298. package/dist/reflection/domain-registry.d.ts.map +1 -0
  299. package/dist/reflection/domain-registry.js +279 -0
  300. package/dist/reflection/domain-registry.js.map +1 -0
  301. package/dist/reflection/domains/agent-domain.d.ts +40 -0
  302. package/dist/reflection/domains/agent-domain.d.ts.map +1 -0
  303. package/dist/reflection/domains/agent-domain.js +161 -0
  304. package/dist/reflection/domains/agent-domain.js.map +1 -0
  305. package/dist/reflection/domains/audit-domain.d.ts +46 -0
  306. package/dist/reflection/domains/audit-domain.d.ts.map +1 -0
  307. package/dist/reflection/domains/audit-domain.js +241 -0
  308. package/dist/reflection/domains/audit-domain.js.map +1 -0
  309. package/dist/reflection/domains/bootstrap-domain.d.ts +40 -0
  310. package/dist/reflection/domains/bootstrap-domain.d.ts.map +1 -0
  311. package/dist/reflection/domains/bootstrap-domain.js +156 -0
  312. package/dist/reflection/domains/bootstrap-domain.js.map +1 -0
  313. package/dist/reflection/domains/commit-domain.d.ts +40 -0
  314. package/dist/reflection/domains/commit-domain.d.ts.map +1 -0
  315. package/dist/reflection/domains/commit-domain.js +174 -0
  316. package/dist/reflection/domains/commit-domain.js.map +1 -0
  317. package/dist/reflection/domains/test-domain.d.ts +40 -0
  318. package/dist/reflection/domains/test-domain.d.ts.map +1 -0
  319. package/dist/reflection/domains/test-domain.js +194 -0
  320. package/dist/reflection/domains/test-domain.js.map +1 -0
  321. package/dist/reflection/failure-catalog.d.ts +100 -0
  322. package/dist/reflection/failure-catalog.d.ts.map +1 -0
  323. package/dist/reflection/failure-catalog.js +269 -0
  324. package/dist/reflection/failure-catalog.js.map +1 -0
  325. package/dist/reflection/historical-loader.d.ts +105 -0
  326. package/dist/reflection/historical-loader.d.ts.map +1 -0
  327. package/dist/reflection/historical-loader.js +462 -0
  328. package/dist/reflection/historical-loader.js.map +1 -0
  329. package/dist/reflection/hooks/agent-hook.d.ts +72 -0
  330. package/dist/reflection/hooks/agent-hook.d.ts.map +1 -0
  331. package/dist/reflection/hooks/agent-hook.js +98 -0
  332. package/dist/reflection/hooks/agent-hook.js.map +1 -0
  333. package/dist/reflection/hooks/audit-hook.d.ts +72 -0
  334. package/dist/reflection/hooks/audit-hook.d.ts.map +1 -0
  335. package/dist/reflection/hooks/audit-hook.js +112 -0
  336. package/dist/reflection/hooks/audit-hook.js.map +1 -0
  337. package/dist/reflection/hooks/bootstrap-hook.d.ts +71 -0
  338. package/dist/reflection/hooks/bootstrap-hook.d.ts.map +1 -0
  339. package/dist/reflection/hooks/bootstrap-hook.js +97 -0
  340. package/dist/reflection/hooks/bootstrap-hook.js.map +1 -0
  341. package/dist/reflection/hooks/commit-hook.d.ts +63 -0
  342. package/dist/reflection/hooks/commit-hook.d.ts.map +1 -0
  343. package/dist/reflection/hooks/commit-hook.js +90 -0
  344. package/dist/reflection/hooks/commit-hook.js.map +1 -0
  345. package/dist/reflection/hooks/test-hook.d.ts +65 -0
  346. package/dist/reflection/hooks/test-hook.d.ts.map +1 -0
  347. package/dist/reflection/hooks/test-hook.js +99 -0
  348. package/dist/reflection/hooks/test-hook.js.map +1 -0
  349. package/dist/reflection/index.d.ts +19 -0
  350. package/dist/reflection/index.d.ts.map +1 -0
  351. package/dist/reflection/index.js +40 -0
  352. package/dist/reflection/index.js.map +1 -0
  353. package/dist/reflection/lessons-memo-generator.d.ts +60 -0
  354. package/dist/reflection/lessons-memo-generator.d.ts.map +1 -0
  355. package/dist/reflection/lessons-memo-generator.js +286 -0
  356. package/dist/reflection/lessons-memo-generator.js.map +1 -0
  357. package/dist/reflection/pattern-detector.d.ts +55 -0
  358. package/dist/reflection/pattern-detector.d.ts.map +1 -0
  359. package/dist/reflection/pattern-detector.js +137 -0
  360. package/dist/reflection/pattern-detector.js.map +1 -0
  361. package/dist/reflection/policy-promoter.d.ts +86 -0
  362. package/dist/reflection/policy-promoter.d.ts.map +1 -0
  363. package/dist/reflection/policy-promoter.js +382 -0
  364. package/dist/reflection/policy-promoter.js.map +1 -0
  365. package/dist/reflection/reflection-engine.d.ts +160 -0
  366. package/dist/reflection/reflection-engine.d.ts.map +1 -0
  367. package/dist/reflection/reflection-engine.js +352 -0
  368. package/dist/reflection/reflection-engine.js.map +1 -0
  369. package/dist/reflection/types.d.ts +106 -0
  370. package/dist/reflection/types.d.ts.map +1 -0
  371. package/dist/reflection/types.js +64 -0
  372. package/dist/reflection/types.js.map +1 -0
  373. package/dist/shared/llm/resilient-client.d.ts +40 -0
  374. package/dist/shared/llm/resilient-client.d.ts.map +1 -0
  375. package/dist/shared/llm/resilient-client.js +60 -0
  376. package/dist/shared/llm/resilient-client.js.map +1 -0
  377. package/dist/shared/utils/atomic-write.d.ts +7 -0
  378. package/dist/shared/utils/atomic-write.d.ts.map +1 -0
  379. package/dist/shared/utils/atomic-write.js +52 -0
  380. package/dist/shared/utils/atomic-write.js.map +1 -0
  381. package/dist/shared/utils/git.d.ts +2 -0
  382. package/dist/shared/utils/git.d.ts.map +1 -0
  383. package/dist/shared/utils/git.js +17 -0
  384. package/dist/shared/utils/git.js.map +1 -0
  385. package/dist/shared/utils/project-key.d.ts +4 -0
  386. package/dist/shared/utils/project-key.d.ts.map +1 -0
  387. package/dist/shared/utils/project-key.js +54 -0
  388. package/dist/shared/utils/project-key.js.map +1 -0
  389. package/dist/shared/utils/string-utils.d.ts +17 -0
  390. package/dist/shared/utils/string-utils.d.ts.map +1 -0
  391. package/dist/shared/utils/string-utils.js +37 -0
  392. package/dist/shared/utils/string-utils.js.map +1 -0
  393. package/dist/skills/activator.d.ts +27 -0
  394. package/dist/skills/activator.d.ts.map +1 -0
  395. package/dist/skills/activator.js +127 -0
  396. package/dist/skills/activator.js.map +1 -0
  397. package/dist/skills/builtins/global.d.ts +7 -0
  398. package/dist/skills/builtins/global.d.ts.map +1 -0
  399. package/dist/skills/builtins/global.js +208 -0
  400. package/dist/skills/builtins/global.js.map +1 -0
  401. package/dist/skills/builtins/go-pack.d.ts +7 -0
  402. package/dist/skills/builtins/go-pack.d.ts.map +1 -0
  403. package/dist/skills/builtins/go-pack.js +263 -0
  404. package/dist/skills/builtins/go-pack.js.map +1 -0
  405. package/dist/skills/builtins/java-pack.d.ts +7 -0
  406. package/dist/skills/builtins/java-pack.d.ts.map +1 -0
  407. package/dist/skills/builtins/java-pack.js +272 -0
  408. package/dist/skills/builtins/java-pack.js.map +1 -0
  409. package/dist/skills/builtins/kotlin-pack.d.ts +9 -0
  410. package/dist/skills/builtins/kotlin-pack.d.ts.map +1 -0
  411. package/dist/skills/builtins/kotlin-pack.js +292 -0
  412. package/dist/skills/builtins/kotlin-pack.js.map +1 -0
  413. package/dist/skills/builtins/node-pack.d.ts +7 -0
  414. package/dist/skills/builtins/node-pack.d.ts.map +1 -0
  415. package/dist/skills/builtins/node-pack.js +750 -0
  416. package/dist/skills/builtins/node-pack.js.map +1 -0
  417. package/dist/skills/builtins/python-pack.d.ts +7 -0
  418. package/dist/skills/builtins/python-pack.d.ts.map +1 -0
  419. package/dist/skills/builtins/python-pack.js +303 -0
  420. package/dist/skills/builtins/python-pack.js.map +1 -0
  421. package/dist/skills/index.d.ts +11 -0
  422. package/dist/skills/index.d.ts.map +1 -0
  423. package/dist/skills/index.js +24 -0
  424. package/dist/skills/index.js.map +1 -0
  425. package/dist/skills/loader.d.ts +39 -0
  426. package/dist/skills/loader.d.ts.map +1 -0
  427. package/dist/skills/loader.js +152 -0
  428. package/dist/skills/loader.js.map +1 -0
  429. package/dist/skills/manager.d.ts +97 -0
  430. package/dist/skills/manager.d.ts.map +1 -0
  431. package/dist/skills/manager.js +296 -0
  432. package/dist/skills/manager.js.map +1 -0
  433. package/dist/skills/parse-md-skill.d.ts +14 -0
  434. package/dist/skills/parse-md-skill.d.ts.map +1 -0
  435. package/dist/skills/parse-md-skill.js +86 -0
  436. package/dist/skills/parse-md-skill.js.map +1 -0
  437. package/dist/skills/providers/github.d.ts +21 -0
  438. package/dist/skills/providers/github.d.ts.map +1 -0
  439. package/dist/skills/providers/github.js +146 -0
  440. package/dist/skills/providers/github.js.map +1 -0
  441. package/dist/skills/providers/index.d.ts +6 -0
  442. package/dist/skills/providers/index.d.ts.map +1 -0
  443. package/dist/skills/providers/index.js +12 -0
  444. package/dist/skills/providers/index.js.map +1 -0
  445. package/dist/skills/providers/local.d.ts +16 -0
  446. package/dist/skills/providers/local.d.ts.map +1 -0
  447. package/dist/skills/providers/local.js +91 -0
  448. package/dist/skills/providers/local.js.map +1 -0
  449. package/dist/skills/providers/obsidian.d.ts +31 -0
  450. package/dist/skills/providers/obsidian.d.ts.map +1 -0
  451. package/dist/skills/providers/obsidian.js +141 -0
  452. package/dist/skills/providers/obsidian.js.map +1 -0
  453. package/dist/skills/providers/skills-sh.d.ts +32 -0
  454. package/dist/skills/providers/skills-sh.d.ts.map +1 -0
  455. package/dist/skills/providers/skills-sh.js +53 -0
  456. package/dist/skills/providers/skills-sh.js.map +1 -0
  457. package/dist/skills/providers/types.d.ts +25 -0
  458. package/dist/skills/providers/types.d.ts.map +1 -0
  459. package/dist/skills/providers/types.js +3 -0
  460. package/dist/skills/providers/types.js.map +1 -0
  461. package/dist/skills/registry.d.ts +18 -0
  462. package/dist/skills/registry.d.ts.map +1 -0
  463. package/dist/skills/registry.js +45 -0
  464. package/dist/skills/registry.js.map +1 -0
  465. package/dist/skills/types.d.ts +66 -0
  466. package/dist/skills/types.d.ts.map +1 -0
  467. package/dist/skills/types.js +3 -0
  468. package/dist/skills/types.js.map +1 -0
  469. package/dist/tools/defineTool.d.ts +34 -0
  470. package/dist/tools/defineTool.d.ts.map +1 -0
  471. package/dist/tools/defineTool.js +63 -0
  472. package/dist/tools/defineTool.js.map +1 -0
  473. package/dist/transport/CallbackTransport.d.ts +12 -0
  474. package/dist/transport/CallbackTransport.d.ts.map +1 -0
  475. package/dist/transport/CallbackTransport.js +28 -0
  476. package/dist/transport/CallbackTransport.js.map +1 -0
  477. package/dist/transport/StdoutTransport.d.ts +9 -0
  478. package/dist/transport/StdoutTransport.d.ts.map +1 -0
  479. package/dist/transport/StdoutTransport.js +63 -0
  480. package/dist/transport/StdoutTransport.js.map +1 -0
  481. package/dist/transport/Transport.d.ts +8 -0
  482. package/dist/transport/Transport.d.ts.map +1 -0
  483. package/dist/transport/Transport.js +3 -0
  484. package/dist/transport/Transport.js.map +1 -0
  485. package/dist/triggers/EventBus.d.ts +14 -0
  486. package/dist/triggers/EventBus.d.ts.map +1 -0
  487. package/dist/triggers/EventBus.js +18 -0
  488. package/dist/triggers/EventBus.js.map +1 -0
  489. package/dist/triggers/TriggerManager.d.ts +28 -0
  490. package/dist/triggers/TriggerManager.d.ts.map +1 -0
  491. package/dist/triggers/TriggerManager.js +158 -0
  492. package/dist/triggers/TriggerManager.js.map +1 -0
  493. package/dist/triggers/WebhookServer.d.ts +23 -0
  494. package/dist/triggers/WebhookServer.d.ts.map +1 -0
  495. package/dist/triggers/WebhookServer.js +127 -0
  496. package/dist/triggers/WebhookServer.js.map +1 -0
  497. package/dist/triggers/createAutonomousAgent.d.ts +49 -0
  498. package/dist/triggers/createAutonomousAgent.d.ts.map +1 -0
  499. package/dist/triggers/createAutonomousAgent.js +42 -0
  500. package/dist/triggers/createAutonomousAgent.js.map +1 -0
  501. package/dist/triggers/index.d.ts +8 -0
  502. package/dist/triggers/index.d.ts.map +1 -0
  503. package/dist/triggers/index.js +12 -0
  504. package/dist/triggers/index.js.map +1 -0
  505. package/dist/triggers/types.d.ts +35 -0
  506. package/dist/triggers/types.d.ts.map +1 -0
  507. package/dist/triggers/types.js +3 -0
  508. package/dist/triggers/types.js.map +1 -0
  509. package/dist/types/index.d.ts +256 -0
  510. package/dist/types/index.d.ts.map +1 -0
  511. package/dist/types/index.js +4 -0
  512. package/dist/types/index.js.map +1 -0
  513. package/dist/workflow/WorkflowBuilder.d.ts +22 -0
  514. package/dist/workflow/WorkflowBuilder.d.ts.map +1 -0
  515. package/dist/workflow/WorkflowBuilder.js +67 -0
  516. package/dist/workflow/WorkflowBuilder.js.map +1 -0
  517. package/dist/workflow/WorkflowRunner.d.ts +22 -0
  518. package/dist/workflow/WorkflowRunner.d.ts.map +1 -0
  519. package/dist/workflow/WorkflowRunner.js +97 -0
  520. package/dist/workflow/WorkflowRunner.js.map +1 -0
  521. package/dist/workflow/index.d.ts +5 -0
  522. package/dist/workflow/index.d.ts.map +1 -0
  523. package/dist/workflow/index.js +10 -0
  524. package/dist/workflow/index.js.map +1 -0
  525. package/dist/workflow/types.d.ts +35 -0
  526. package/dist/workflow/types.d.ts.map +1 -0
  527. package/dist/workflow/types.js +3 -0
  528. package/dist/workflow/types.js.map +1 -0
  529. package/dist/workspace/index.d.ts +55 -0
  530. package/dist/workspace/index.d.ts.map +1 -0
  531. package/dist/workspace/index.js +189 -0
  532. package/dist/workspace/index.js.map +1 -0
  533. 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":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAEH,iDAAyE;AAEzE,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,WAAW,GAAqC;IACpD,KAAK,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE,kDAAkD;IAC5F,YAAY,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC;IAC7F,eAAe,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,CAAC;IAClG,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,CAAC;IAClG,iBAAiB,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,CAAC;IAClG,WAAW,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC;IACxD,iBAAiB,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC;IAClG,UAAU,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC;IAC/E,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,EAAE,2CAA2C;IAClF,UAAU,EAAE,EAAE,EAAQ,kBAAkB;IACxC,qCAAqC;IACrC,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,CAAC;IAC1E,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,CAAC;IAC5E,kBAAkB,EAAE,CAAC,gBAAgB,CAAC,EAAE,4CAA4C;IACpF,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,gCAAgC;IACpF,eAAe,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,0BAA0B;IAC5E,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,EAAE,mCAAmC;CAC1E,CAAC;AAWF,MAAM,MAAM,GAAsB;IAChC,gFAAgF;IAChF,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QACX,IAAI,EAAE,KAAK,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAChG,OAAO,+EAA+E,CAAC;QACzF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QACX,IAAI,IAAI,CAAC,0BAA0B,IAAI,EAAE,KAAK,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAClI,OAAO,wEAAwE,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8DAA8D;IAC9D,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QACX,IAAI,IAAI,CAAC,sBAAsB,IAAI,EAAE,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;YAC3F,OAAO,8DAA8D,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QACX,IAAI,IAAI,CAAC,kBAAkB,IAAI,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChF,OAAO,yDAAyD,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAeF,gFAAgF;AAEhF,MAAa,OAAO;IAClB;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAiB,EAAE,EAAc;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5D,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,4BAA4B,IAAI,CAAC,MAAM,MAAM,EAAE,sBAAsB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAClG,oBAAoB,EAAE,SAAS;aAChC,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK;oBACL,oBAAoB,EAAE,SAAS;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAA,6BAAc,EAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;SACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,IAAgB;QACtC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAkB;QAC3B,OAAO,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,IAAiB;QAC/B,MAAM,IAAI,GAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAE5B,IAAI,OAAO,KAAK,gBAAgB,IAAI,OAAO,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QAExE,oCAAoC;QACpC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;QAED,iDAAiD;QACjD,IAAI,IAAI,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAClE,CAAC;QAED,oCAAoC;QACpC,IAAI,OAAO,KAAK,gBAAgB,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpE,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAChF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtE,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAElE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACK,aAAa,CAAC,IAAiB,EAAE,IAAgB;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAEtB,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE5B,6EAA6E;QAC7E,kFAAkF;QAClF,MAAM,YAAY,GAA4B,IAAI,GAAG,CAAC;YACpD,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB;YACnE,kBAAkB,EAAE,gBAAgB;SACrC,CAAC,CAAC;QACH,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,iFAAiF;QACjF,8EAA8E;QAC9E,2DAA2D;QAC3D,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9D,OAAO,CAAC,KAAK,WAAW,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,4EAA4E;QAC5E,gEAAgE;QAChE,qEAAqE;QAErE,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAlJD,0BAkJC"}
@@ -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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"}