agentic-qe 1.8.3 → 1.9.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 (290) hide show
  1. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
  2. package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +2 -2
  3. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -6
  4. package/CHANGELOG.md +595 -0
  5. package/README.md +117 -16
  6. package/config/constitution.schema.json +423 -0
  7. package/config/otel-collector.yaml +234 -0
  8. package/dist/App.d.ts +5 -0
  9. package/dist/App.d.ts.map +1 -0
  10. package/dist/App.js +15 -0
  11. package/dist/App.js.map +1 -0
  12. package/dist/cli/commands/constitution.d.ts +34 -0
  13. package/dist/cli/commands/constitution.d.ts.map +1 -0
  14. package/dist/cli/commands/constitution.js +679 -0
  15. package/dist/cli/commands/constitution.js.map +1 -0
  16. package/dist/cli/commands/init-claude-md-template.js +3 -3
  17. package/dist/cli/commands/init.d.ts +8 -75
  18. package/dist/cli/commands/init.d.ts.map +1 -1
  19. package/dist/cli/commands/init.js +22 -2292
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/telemetry.d.ts +36 -0
  22. package/dist/cli/commands/telemetry.d.ts.map +1 -0
  23. package/dist/cli/commands/telemetry.js +364 -0
  24. package/dist/cli/commands/telemetry.js.map +1 -0
  25. package/dist/cli/index.js +66 -0
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/init/agents.d.ts +22 -0
  28. package/dist/cli/init/agents.d.ts.map +1 -0
  29. package/dist/cli/init/agents.js +522 -0
  30. package/dist/cli/init/agents.js.map +1 -0
  31. package/dist/cli/init/bash-wrapper.d.ts +14 -0
  32. package/dist/cli/init/bash-wrapper.d.ts.map +1 -0
  33. package/dist/cli/init/bash-wrapper.js +47 -0
  34. package/dist/cli/init/bash-wrapper.js.map +1 -0
  35. package/dist/cli/init/claude-config.d.ts +24 -0
  36. package/dist/cli/init/claude-config.d.ts.map +1 -0
  37. package/dist/cli/init/claude-config.js +275 -0
  38. package/dist/cli/init/claude-config.js.map +1 -0
  39. package/dist/cli/init/claude-md.d.ts +19 -0
  40. package/dist/cli/init/claude-md.d.ts.map +1 -0
  41. package/dist/cli/init/claude-md.js +153 -0
  42. package/dist/cli/init/claude-md.js.map +1 -0
  43. package/dist/cli/init/commands.d.ts +6 -0
  44. package/dist/cli/init/commands.d.ts.map +1 -0
  45. package/dist/cli/init/commands.js +83 -0
  46. package/dist/cli/init/commands.js.map +1 -0
  47. package/dist/cli/init/database-init.d.ts +15 -0
  48. package/dist/cli/init/database-init.d.ts.map +1 -0
  49. package/dist/cli/init/database-init.js +203 -0
  50. package/dist/cli/init/database-init.js.map +1 -0
  51. package/dist/cli/init/directory-structure.d.ts +14 -0
  52. package/dist/cli/init/directory-structure.d.ts.map +1 -0
  53. package/dist/cli/init/directory-structure.js +107 -0
  54. package/dist/cli/init/directory-structure.js.map +1 -0
  55. package/dist/cli/init/documentation.d.ts +14 -0
  56. package/dist/cli/init/documentation.d.ts.map +1 -0
  57. package/dist/cli/init/documentation.js +195 -0
  58. package/dist/cli/init/documentation.js.map +1 -0
  59. package/dist/cli/init/fleet-config.d.ts +34 -0
  60. package/dist/cli/init/fleet-config.d.ts.map +1 -0
  61. package/dist/cli/init/fleet-config.js +269 -0
  62. package/dist/cli/init/fleet-config.js.map +1 -0
  63. package/dist/cli/init/helpers.d.ts +6 -0
  64. package/dist/cli/init/helpers.d.ts.map +1 -0
  65. package/dist/cli/init/helpers.js +94 -0
  66. package/dist/cli/init/helpers.js.map +1 -0
  67. package/dist/cli/init/index.d.ts +32 -0
  68. package/dist/cli/init/index.d.ts.map +1 -0
  69. package/dist/cli/init/index.js +294 -0
  70. package/dist/cli/init/index.js.map +1 -0
  71. package/dist/cli/init/skills.d.ts +6 -0
  72. package/dist/cli/init/skills.d.ts.map +1 -0
  73. package/dist/cli/init/skills.js +138 -0
  74. package/dist/cli/init/skills.js.map +1 -0
  75. package/dist/cli/init/utils/file-utils.d.ts +74 -0
  76. package/dist/cli/init/utils/file-utils.d.ts.map +1 -0
  77. package/dist/cli/init/utils/file-utils.js +187 -0
  78. package/dist/cli/init/utils/file-utils.js.map +1 -0
  79. package/dist/cli/init/utils/index.d.ts +18 -0
  80. package/dist/cli/init/utils/index.d.ts.map +1 -0
  81. package/dist/cli/init/utils/index.js +48 -0
  82. package/dist/cli/init/utils/index.js.map +1 -0
  83. package/dist/cli/init/utils/log-utils.d.ts +47 -0
  84. package/dist/cli/init/utils/log-utils.d.ts.map +1 -0
  85. package/dist/cli/init/utils/log-utils.js +68 -0
  86. package/dist/cli/init/utils/log-utils.js.map +1 -0
  87. package/dist/cli/init/utils/path-utils.d.ts +91 -0
  88. package/dist/cli/init/utils/path-utils.d.ts.map +1 -0
  89. package/dist/cli/init/utils/path-utils.js +208 -0
  90. package/dist/cli/init/utils/path-utils.js.map +1 -0
  91. package/dist/cli/init/utils/validation-utils.d.ts +44 -0
  92. package/dist/cli/init/utils/validation-utils.d.ts.map +1 -0
  93. package/dist/cli/init/utils/validation-utils.js +68 -0
  94. package/dist/cli/init/utils/validation-utils.js.map +1 -0
  95. package/dist/cli/init/utils.d.ts +183 -0
  96. package/dist/cli/init/utils.d.ts.map +1 -0
  97. package/dist/cli/init/utils.js +354 -0
  98. package/dist/cli/init/utils.js.map +1 -0
  99. package/dist/components/Dashboard/Dashboard.d.ts +4 -0
  100. package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
  101. package/dist/components/Dashboard/Dashboard.js +148 -0
  102. package/dist/components/Dashboard/Dashboard.js.map +1 -0
  103. package/dist/components/Dashboard/DashboardHeader.d.ts +4 -0
  104. package/dist/components/Dashboard/DashboardHeader.d.ts.map +1 -0
  105. package/dist/components/Dashboard/DashboardHeader.js +138 -0
  106. package/dist/components/Dashboard/DashboardHeader.js.map +1 -0
  107. package/dist/constitution/evaluators/ast-evaluator.d.ts +42 -0
  108. package/dist/constitution/evaluators/ast-evaluator.d.ts.map +1 -0
  109. package/dist/constitution/evaluators/ast-evaluator.js +303 -0
  110. package/dist/constitution/evaluators/ast-evaluator.js.map +1 -0
  111. package/dist/constitution/evaluators/base.d.ts +144 -0
  112. package/dist/constitution/evaluators/base.d.ts.map +1 -0
  113. package/dist/constitution/evaluators/base.js +144 -0
  114. package/dist/constitution/evaluators/base.js.map +1 -0
  115. package/dist/constitution/evaluators/index.d.ts +19 -0
  116. package/dist/constitution/evaluators/index.d.ts.map +1 -0
  117. package/dist/constitution/evaluators/index.js +56 -0
  118. package/dist/constitution/evaluators/index.js.map +1 -0
  119. package/dist/constitution/evaluators/metric-evaluator.d.ts +59 -0
  120. package/dist/constitution/evaluators/metric-evaluator.d.ts.map +1 -0
  121. package/dist/constitution/evaluators/metric-evaluator.js +195 -0
  122. package/dist/constitution/evaluators/metric-evaluator.js.map +1 -0
  123. package/dist/constitution/evaluators/pattern-evaluator.d.ts +66 -0
  124. package/dist/constitution/evaluators/pattern-evaluator.d.ts.map +1 -0
  125. package/dist/constitution/evaluators/pattern-evaluator.js +221 -0
  126. package/dist/constitution/evaluators/pattern-evaluator.js.map +1 -0
  127. package/dist/constitution/evaluators/semantic-evaluator.d.ts +68 -0
  128. package/dist/constitution/evaluators/semantic-evaluator.d.ts.map +1 -0
  129. package/dist/constitution/evaluators/semantic-evaluator.js +250 -0
  130. package/dist/constitution/evaluators/semantic-evaluator.js.map +1 -0
  131. package/dist/constitution/index.d.ts +105 -0
  132. package/dist/constitution/index.d.ts.map +1 -0
  133. package/dist/constitution/index.js +207 -0
  134. package/dist/constitution/index.js.map +1 -0
  135. package/dist/constitution/loader.d.ts +141 -0
  136. package/dist/constitution/loader.d.ts.map +1 -0
  137. package/dist/constitution/loader.js +515 -0
  138. package/dist/constitution/loader.js.map +1 -0
  139. package/dist/constitution/schema.d.ts +409 -0
  140. package/dist/constitution/schema.d.ts.map +1 -0
  141. package/dist/constitution/schema.js +71 -0
  142. package/dist/constitution/schema.js.map +1 -0
  143. package/dist/contexts/DashboardContext.d.ts +41 -0
  144. package/dist/contexts/DashboardContext.d.ts.map +1 -0
  145. package/dist/contexts/DashboardContext.js +187 -0
  146. package/dist/contexts/DashboardContext.js.map +1 -0
  147. package/dist/core/memory/MemoryManagerFactory.d.ts +77 -0
  148. package/dist/core/memory/MemoryManagerFactory.d.ts.map +1 -0
  149. package/dist/core/memory/MemoryManagerFactory.js +270 -0
  150. package/dist/core/memory/MemoryManagerFactory.js.map +1 -0
  151. package/dist/core/memory/SwarmMemoryManager.d.ts +58 -0
  152. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  153. package/dist/core/memory/SwarmMemoryManager.js +375 -131
  154. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  155. package/dist/core/memory/index.d.ts +1 -0
  156. package/dist/core/memory/index.d.ts.map +1 -1
  157. package/dist/core/memory/index.js +12 -1
  158. package/dist/core/memory/index.js.map +1 -1
  159. package/dist/hooks/useKeyboardShortcuts.d.ts +12 -0
  160. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  161. package/dist/hooks/useKeyboardShortcuts.js +69 -0
  162. package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
  163. package/dist/mcp/handlers/memory/memory-backup.js +6 -6
  164. package/dist/mcp/handlers/memory/memory-backup.js.map +1 -1
  165. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
  166. package/dist/mcp/handlers/phase2/Phase2Tools.js +4 -2
  167. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  168. package/dist/mcp/server.d.ts.map +1 -1
  169. package/dist/mcp/server.js +4 -38
  170. package/dist/mcp/server.js.map +1 -1
  171. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  172. package/dist/mcp/services/AgentRegistry.js +4 -4
  173. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  174. package/dist/persistence/event-store.d.ts +162 -0
  175. package/dist/persistence/event-store.d.ts.map +1 -0
  176. package/dist/persistence/event-store.js +315 -0
  177. package/dist/persistence/event-store.js.map +1 -0
  178. package/dist/persistence/index.d.ts +145 -0
  179. package/dist/persistence/index.d.ts.map +1 -0
  180. package/dist/persistence/index.js +227 -0
  181. package/dist/persistence/index.js.map +1 -0
  182. package/dist/persistence/metrics-aggregator.d.ts +187 -0
  183. package/dist/persistence/metrics-aggregator.d.ts.map +1 -0
  184. package/dist/persistence/metrics-aggregator.js +495 -0
  185. package/dist/persistence/metrics-aggregator.js.map +1 -0
  186. package/dist/persistence/reasoning-store.d.ts +178 -0
  187. package/dist/persistence/reasoning-store.d.ts.map +1 -0
  188. package/dist/persistence/reasoning-store.js +440 -0
  189. package/dist/persistence/reasoning-store.js.map +1 -0
  190. package/dist/persistence/schema.d.ts +181 -0
  191. package/dist/persistence/schema.d.ts.map +1 -0
  192. package/dist/persistence/schema.js +186 -0
  193. package/dist/persistence/schema.js.map +1 -0
  194. package/dist/telemetry/bootstrap.d.ts +67 -0
  195. package/dist/telemetry/bootstrap.d.ts.map +1 -0
  196. package/dist/telemetry/bootstrap.js +320 -0
  197. package/dist/telemetry/bootstrap.js.map +1 -0
  198. package/dist/telemetry/index.d.ts +16 -0
  199. package/dist/telemetry/index.d.ts.map +1 -0
  200. package/dist/telemetry/index.js +84 -0
  201. package/dist/telemetry/index.js.map +1 -0
  202. package/dist/telemetry/instrumentation/agent.d.ts +158 -0
  203. package/dist/telemetry/instrumentation/agent.d.ts.map +1 -0
  204. package/dist/telemetry/instrumentation/agent.js +372 -0
  205. package/dist/telemetry/instrumentation/agent.js.map +1 -0
  206. package/dist/telemetry/instrumentation/index.d.ts +24 -0
  207. package/dist/telemetry/instrumentation/index.d.ts.map +1 -0
  208. package/dist/telemetry/instrumentation/index.js +54 -0
  209. package/dist/telemetry/instrumentation/index.js.map +1 -0
  210. package/dist/telemetry/instrumentation/memory.d.ts +313 -0
  211. package/dist/telemetry/instrumentation/memory.d.ts.map +1 -0
  212. package/dist/telemetry/instrumentation/memory.js +552 -0
  213. package/dist/telemetry/instrumentation/memory.js.map +1 -0
  214. package/dist/telemetry/instrumentation/task.d.ts +146 -0
  215. package/dist/telemetry/instrumentation/task.d.ts.map +1 -0
  216. package/dist/telemetry/instrumentation/task.js +305 -0
  217. package/dist/telemetry/instrumentation/task.js.map +1 -0
  218. package/dist/telemetry/metrics/agent-metrics.d.ts +109 -0
  219. package/dist/telemetry/metrics/agent-metrics.d.ts.map +1 -0
  220. package/dist/telemetry/metrics/agent-metrics.js +213 -0
  221. package/dist/telemetry/metrics/agent-metrics.js.map +1 -0
  222. package/dist/telemetry/metrics/collectors/cost.d.ts +246 -0
  223. package/dist/telemetry/metrics/collectors/cost.d.ts.map +1 -0
  224. package/dist/telemetry/metrics/collectors/cost.js +526 -0
  225. package/dist/telemetry/metrics/collectors/cost.js.map +1 -0
  226. package/dist/telemetry/metrics/collectors/pricing-config.d.ts +87 -0
  227. package/dist/telemetry/metrics/collectors/pricing-config.d.ts.map +1 -0
  228. package/dist/telemetry/metrics/collectors/pricing-config.js +207 -0
  229. package/dist/telemetry/metrics/collectors/pricing-config.js.map +1 -0
  230. package/dist/telemetry/metrics/index.d.ts +54 -0
  231. package/dist/telemetry/metrics/index.d.ts.map +1 -0
  232. package/dist/telemetry/metrics/index.js +116 -0
  233. package/dist/telemetry/metrics/index.js.map +1 -0
  234. package/dist/telemetry/metrics/quality-metrics.d.ts +171 -0
  235. package/dist/telemetry/metrics/quality-metrics.d.ts.map +1 -0
  236. package/dist/telemetry/metrics/quality-metrics.js +259 -0
  237. package/dist/telemetry/metrics/quality-metrics.js.map +1 -0
  238. package/dist/telemetry/metrics/system-metrics.d.ts +129 -0
  239. package/dist/telemetry/metrics/system-metrics.d.ts.map +1 -0
  240. package/dist/telemetry/metrics/system-metrics.js +380 -0
  241. package/dist/telemetry/metrics/system-metrics.js.map +1 -0
  242. package/dist/telemetry/types.d.ts +195 -0
  243. package/dist/telemetry/types.d.ts.map +1 -0
  244. package/dist/telemetry/types.js +90 -0
  245. package/dist/telemetry/types.js.map +1 -0
  246. package/dist/visualization/api/RestEndpoints.d.ts +136 -0
  247. package/dist/visualization/api/RestEndpoints.d.ts.map +1 -0
  248. package/dist/visualization/api/RestEndpoints.js +428 -0
  249. package/dist/visualization/api/RestEndpoints.js.map +1 -0
  250. package/dist/visualization/api/WebSocketServer.d.ts +165 -0
  251. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -0
  252. package/dist/visualization/api/WebSocketServer.js +518 -0
  253. package/dist/visualization/api/WebSocketServer.js.map +1 -0
  254. package/dist/visualization/core/DataTransformer.d.ts +89 -0
  255. package/dist/visualization/core/DataTransformer.d.ts.map +1 -0
  256. package/dist/visualization/core/DataTransformer.js +478 -0
  257. package/dist/visualization/core/DataTransformer.js.map +1 -0
  258. package/dist/visualization/index.d.ts +92 -0
  259. package/dist/visualization/index.d.ts.map +1 -0
  260. package/dist/visualization/index.js +121 -0
  261. package/dist/visualization/index.js.map +1 -0
  262. package/dist/visualization/types.d.ts +148 -0
  263. package/dist/visualization/types.d.ts.map +1 -0
  264. package/dist/visualization/types.js +7 -0
  265. package/dist/visualization/types.js.map +1 -0
  266. package/dist/voting/consensus.d.ts +87 -0
  267. package/dist/voting/consensus.d.ts.map +1 -0
  268. package/dist/voting/consensus.js +568 -0
  269. package/dist/voting/consensus.js.map +1 -0
  270. package/dist/voting/index.d.ts +12 -0
  271. package/dist/voting/index.d.ts.map +1 -0
  272. package/dist/voting/index.js +36 -0
  273. package/dist/voting/index.js.map +1 -0
  274. package/dist/voting/orchestrator.d.ts +65 -0
  275. package/dist/voting/orchestrator.d.ts.map +1 -0
  276. package/dist/voting/orchestrator.js +306 -0
  277. package/dist/voting/orchestrator.js.map +1 -0
  278. package/dist/voting/panel-assembly.d.ts +54 -0
  279. package/dist/voting/panel-assembly.d.ts.map +1 -0
  280. package/dist/voting/panel-assembly.js +192 -0
  281. package/dist/voting/panel-assembly.js.map +1 -0
  282. package/dist/voting/protocol.d.ts +119 -0
  283. package/dist/voting/protocol.d.ts.map +1 -0
  284. package/dist/voting/protocol.js +18 -0
  285. package/dist/voting/protocol.js.map +1 -0
  286. package/dist/voting/types.d.ts +125 -0
  287. package/dist/voting/types.d.ts.map +1 -0
  288. package/dist/voting/types.js +7 -0
  289. package/dist/voting/types.js.map +1 -0
  290. package/package.json +43 -2
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Voting orchestrator for parallel agent coordination
3
+ * Handles timeout, retries, and result aggregation
4
+ */
5
+ import { VotingAgent, VotingTask, Vote, VotingResult, VotingPanelConfig, VotingOrchestrator as IVotingOrchestrator, PanelAssemblyResult, OrchestrationLog, OrchestrationMetrics, AgentPool, VotingStrategy, ConsensusMethod } from './types';
6
+ export declare class VotingOrchestrator implements IVotingOrchestrator {
7
+ private readonly pool;
8
+ private readonly strategy;
9
+ private readonly voteExecutor;
10
+ private assembler;
11
+ private logs;
12
+ private votes;
13
+ private activeVoting;
14
+ private metrics;
15
+ constructor(pool: AgentPool, strategy: VotingStrategy, voteExecutor: (agent: VotingAgent, task: VotingTask) => Promise<Vote>);
16
+ /**
17
+ * Assemble voting panel for task
18
+ */
19
+ assemblePanel(config: VotingPanelConfig): Promise<PanelAssemblyResult>;
20
+ /**
21
+ * Distribute task to panel and collect votes in parallel
22
+ */
23
+ distributeTask(task: VotingTask, panel: VotingAgent[]): Promise<void>;
24
+ /**
25
+ * Collect votes with timeout handling
26
+ */
27
+ collectVotes(taskId: string, timeoutMs: number): Promise<Vote[]>;
28
+ /**
29
+ * Aggregate voting results using consensus algorithm
30
+ */
31
+ aggregateResults(votes: Vote[], method: ConsensusMethod): VotingResult;
32
+ /**
33
+ * Handle vote timeout
34
+ */
35
+ handleTimeout(agentId: string, taskId: string): Promise<void>;
36
+ /**
37
+ * Handle vote failure
38
+ */
39
+ handleFailure(agentId: string, taskId: string, error: Error): Promise<void>;
40
+ /**
41
+ * Retry failed vote
42
+ */
43
+ retry(agentId: string, taskId: string, attempt: number): Promise<Vote | null>;
44
+ /**
45
+ * Get orchestration metrics
46
+ */
47
+ getMetrics(): OrchestrationMetrics;
48
+ /**
49
+ * Get orchestration logs
50
+ */
51
+ getLogs(taskId?: string): OrchestrationLog[];
52
+ /**
53
+ * Execute vote with timeout and retry handling
54
+ */
55
+ private executeVote;
56
+ /**
57
+ * Log orchestration event
58
+ */
59
+ private log;
60
+ /**
61
+ * Update average execution time metric
62
+ */
63
+ private updateAverageExecutionTime;
64
+ }
65
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/voting/orchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,IAAI,EACJ,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,IAAI,mBAAmB,EACzC,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EAEpB,SAAS,EACT,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAC;AAIjB,qBAAa,kBAAmB,YAAW,mBAAmB;IAiB1D,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAlB/B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,OAAO,CASb;gBAGiB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC;IAKxF;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAoB5E;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3E;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAsDtE;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,eAAe,GAAG,YAAY;IA6EtE;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnE;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,IAAI,CAAC;IAYhB;;OAEG;IACG,KAAK,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAuCvB;;OAEG;IACH,UAAU,IAAI,oBAAoB;IAIlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAO5C;;OAEG;YACW,WAAW;IA+CzB;;OAEG;IACH,OAAO,CAAC,GAAG;IAaX;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAMnC"}
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ /**
3
+ * Voting orchestrator for parallel agent coordination
4
+ * Handles timeout, retries, and result aggregation
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.VotingOrchestrator = void 0;
8
+ const panel_assembly_1 = require("./panel-assembly");
9
+ class VotingOrchestrator {
10
+ constructor(pool, strategy, voteExecutor) {
11
+ this.pool = pool;
12
+ this.strategy = strategy;
13
+ this.voteExecutor = voteExecutor;
14
+ this.logs = [];
15
+ this.votes = new Map();
16
+ this.activeVoting = new Map();
17
+ this.metrics = {
18
+ totalTasks: 0,
19
+ successfulVotes: 0,
20
+ failedVotes: 0,
21
+ timeoutVotes: 0,
22
+ averageExecutionTime: 0,
23
+ consensusRate: 0,
24
+ participationRate: 0,
25
+ retryRate: 0
26
+ };
27
+ this.assembler = new panel_assembly_1.PanelAssembler(pool, strategy);
28
+ }
29
+ /**
30
+ * Assemble voting panel for task
31
+ */
32
+ async assemblePanel(config) {
33
+ const task = {
34
+ id: `task-${Date.now()}`,
35
+ type: 'panel-assembly',
36
+ description: 'Assemble voting panel',
37
+ context: {},
38
+ priority: 'medium'
39
+ };
40
+ const result = await this.assembler.assemblePanel(task, config);
41
+ this.log(task.id, 'panel-assembled', {
42
+ panelSize: result.panel.length,
43
+ assemblyTime: result.assemblyTime,
44
+ coverage: result.coverage
45
+ });
46
+ return result;
47
+ }
48
+ /**
49
+ * Distribute task to panel and collect votes in parallel
50
+ */
51
+ async distributeTask(task, panel) {
52
+ this.metrics.totalTasks++;
53
+ this.votes.set(task.id, []);
54
+ this.log(task.id, 'voting-started', {
55
+ panelSize: panel.length,
56
+ taskPriority: task.priority
57
+ });
58
+ // Create parallel voting promises
59
+ const votingPromises = panel.map(agent => this.executeVote(agent, task, 1));
60
+ this.activeVoting.set(task.id, votingPromises);
61
+ }
62
+ /**
63
+ * Collect votes with timeout handling
64
+ */
65
+ async collectVotes(taskId, timeoutMs) {
66
+ const promises = this.activeVoting.get(taskId);
67
+ if (!promises) {
68
+ throw new Error(`No active voting for task ${taskId}`);
69
+ }
70
+ const votes = [];
71
+ const startTime = Date.now();
72
+ // Create timeout promise
73
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Collection timeout')), timeoutMs));
74
+ try {
75
+ // Race between all votes completing and timeout
76
+ await Promise.race([
77
+ Promise.allSettled(promises),
78
+ timeoutPromise
79
+ ]);
80
+ }
81
+ catch (error) {
82
+ // Timeout occurred, but allSettled is still running
83
+ this.log(taskId, 'vote-timeout', { timeoutMs });
84
+ }
85
+ // Collect results ONCE after race completes or times out
86
+ const results = await Promise.allSettled(promises);
87
+ results.forEach((result, index) => {
88
+ if (result.status === 'fulfilled') {
89
+ votes.push(result.value);
90
+ this.metrics.successfulVotes++;
91
+ }
92
+ else {
93
+ this.metrics.failedVotes++;
94
+ this.log(taskId, 'vote-failed', {
95
+ error: result.reason?.message
96
+ });
97
+ }
98
+ });
99
+ const executionTime = Date.now() - startTime;
100
+ this.updateAverageExecutionTime(executionTime);
101
+ // Store collected votes
102
+ this.votes.set(taskId, votes);
103
+ this.activeVoting.delete(taskId);
104
+ this.log(taskId, 'result-aggregated', {
105
+ votesCollected: votes.length,
106
+ executionTime
107
+ });
108
+ return votes;
109
+ }
110
+ /**
111
+ * Aggregate voting results using consensus algorithm
112
+ */
113
+ aggregateResults(votes, method) {
114
+ if (votes.length === 0) {
115
+ throw new Error('No votes to aggregate');
116
+ }
117
+ const taskId = votes[0].taskId;
118
+ // Calculate final score and consensus using simple aggregation
119
+ // NOTE: Direct aggregation used instead of ConsensusFactory due to type compatibility
120
+ let consensusReached = false;
121
+ let finalScore = 0;
122
+ let confidence = 0;
123
+ if (method === 'majority') {
124
+ // Simple majority: average score weighted by confidence
125
+ const weightedSum = votes.reduce((sum, v) => sum + v.score * v.confidence, 0);
126
+ const totalWeight = votes.reduce((sum, v) => sum + v.confidence, 0);
127
+ finalScore = totalWeight > 0 ? weightedSum / totalWeight : 0;
128
+ confidence = totalWeight / votes.length;
129
+ consensusReached = confidence >= 0.6; // 60% confidence threshold
130
+ }
131
+ else if (method === 'weighted-average') {
132
+ // Weighted average: use agent weights (from Vote metadata)
133
+ const weightedSum = votes.reduce((sum, v) => {
134
+ const weight = v.metadata?.weight || 1;
135
+ return sum + v.score * v.confidence * weight;
136
+ }, 0);
137
+ const totalWeight = votes.reduce((sum, v) => {
138
+ const weight = v.metadata?.weight || 1;
139
+ return sum + v.confidence * weight;
140
+ }, 0);
141
+ finalScore = totalWeight > 0 ? weightedSum / totalWeight : 0;
142
+ confidence = totalWeight / votes.length;
143
+ consensusReached = confidence >= 0.6;
144
+ }
145
+ else {
146
+ // Default fallback to majority
147
+ const weightedSum = votes.reduce((sum, v) => sum + v.score * v.confidence, 0);
148
+ const totalWeight = votes.reduce((sum, v) => sum + v.confidence, 0);
149
+ finalScore = totalWeight > 0 ? weightedSum / totalWeight : 0;
150
+ confidence = totalWeight / votes.length;
151
+ consensusReached = confidence >= 0.6;
152
+ }
153
+ if (consensusReached) {
154
+ this.metrics.consensusRate =
155
+ (this.metrics.consensusRate * (this.metrics.totalTasks - 1) + 1) /
156
+ this.metrics.totalTasks;
157
+ }
158
+ const result = {
159
+ taskId,
160
+ consensusReached,
161
+ finalScore,
162
+ votes,
163
+ aggregationMethod: method,
164
+ executionTime: votes.reduce((max, v) => Math.max(max, v.timestamp.getTime()), 0) - Math.min(...votes.map(v => v.timestamp.getTime())),
165
+ participationRate: 1.0, // All collected votes participated (100%)
166
+ metadata: {
167
+ totalAgents: votes.length,
168
+ votingAgents: votes.length,
169
+ timedOut: 0,
170
+ failed: 0,
171
+ averageConfidence: votes.reduce((sum, v) => sum + v.confidence, 0) / votes.length
172
+ }
173
+ };
174
+ this.log(taskId, consensusReached ? 'consensus-reached' : 'consensus-failed', {
175
+ finalScore,
176
+ confidence,
177
+ votesCount: votes.length
178
+ });
179
+ return result;
180
+ }
181
+ /**
182
+ * Handle vote timeout
183
+ */
184
+ async handleTimeout(agentId, taskId) {
185
+ this.metrics.timeoutVotes++;
186
+ this.log(taskId, 'vote-timeout', { agentId });
187
+ // Mark agent as potentially slow (don't fail immediately)
188
+ // Could implement adaptive timeouts here
189
+ }
190
+ /**
191
+ * Handle vote failure
192
+ */
193
+ async handleFailure(agentId, taskId, error) {
194
+ this.metrics.failedVotes++;
195
+ this.log(taskId, 'vote-failed', {
196
+ agentId,
197
+ error: error.message
198
+ });
199
+ // Mark agent as failed in pool
200
+ this.pool.markFailed(agentId);
201
+ }
202
+ /**
203
+ * Retry failed vote
204
+ */
205
+ async retry(agentId, taskId, attempt) {
206
+ const task = this.pool.busy.get(agentId);
207
+ if (!task) {
208
+ return null;
209
+ }
210
+ const agent = this.pool.available.find(a => a.id === agentId);
211
+ if (!agent) {
212
+ return null;
213
+ }
214
+ if (!this.strategy.shouldRetry(agent, task, attempt)) {
215
+ return null;
216
+ }
217
+ this.metrics.retryRate =
218
+ (this.metrics.retryRate * this.metrics.totalTasks + 1) /
219
+ this.metrics.totalTasks;
220
+ this.log(taskId, 'vote-retry', {
221
+ agentId,
222
+ attempt
223
+ });
224
+ try {
225
+ const vote = await this.executeVote(agent, task, attempt);
226
+ this.metrics.successfulVotes++;
227
+ return vote;
228
+ }
229
+ catch (error) {
230
+ this.metrics.failedVotes++;
231
+ this.log(taskId, 'vote-failed', {
232
+ agentId,
233
+ attempt,
234
+ error: error instanceof Error ? error.message : String(error)
235
+ });
236
+ return null;
237
+ }
238
+ }
239
+ /**
240
+ * Get orchestration metrics
241
+ */
242
+ getMetrics() {
243
+ return { ...this.metrics };
244
+ }
245
+ /**
246
+ * Get orchestration logs
247
+ */
248
+ getLogs(taskId) {
249
+ if (taskId) {
250
+ return this.logs.filter(log => log.taskId === taskId);
251
+ }
252
+ return [...this.logs];
253
+ }
254
+ /**
255
+ * Execute vote with timeout and retry handling
256
+ */
257
+ async executeVote(agent, task, attempt) {
258
+ const agentLoad = this.pool.busy.size / this.pool.available.length;
259
+ const timeout = this.strategy.adjustTimeout(5000, attempt, agentLoad);
260
+ const votePromise = this.voteExecutor(agent, task);
261
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Vote timeout after ${timeout}ms`)), timeout));
262
+ try {
263
+ const vote = await Promise.race([votePromise, timeoutPromise]);
264
+ this.log(task.id, 'vote-received', {
265
+ agentId: agent.id,
266
+ score: vote.score,
267
+ confidence: vote.confidence,
268
+ attempt
269
+ });
270
+ return vote;
271
+ }
272
+ catch (error) {
273
+ if (error instanceof Error && error.message.includes('timeout')) {
274
+ await this.handleTimeout(agent.id, task.id);
275
+ // Try retry
276
+ if (this.strategy.shouldRetry(agent, task, attempt)) {
277
+ return this.executeVote(agent, task, attempt + 1);
278
+ }
279
+ }
280
+ await this.handleFailure(agent.id, task.id, error instanceof Error ? error : new Error(String(error)));
281
+ throw error;
282
+ }
283
+ }
284
+ /**
285
+ * Log orchestration event
286
+ */
287
+ log(taskId, event, details) {
288
+ this.logs.push({
289
+ taskId,
290
+ timestamp: new Date(),
291
+ event,
292
+ details
293
+ });
294
+ }
295
+ /**
296
+ * Update average execution time metric
297
+ */
298
+ updateAverageExecutionTime(executionTime) {
299
+ const totalTasks = this.metrics.totalTasks;
300
+ this.metrics.averageExecutionTime =
301
+ (this.metrics.averageExecutionTime * (totalTasks - 1) + executionTime) /
302
+ totalTasks;
303
+ }
304
+ }
305
+ exports.VotingOrchestrator = VotingOrchestrator;
306
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/voting/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Panel assembly logic for voting orchestration
3
+ * Selects optimal agents based on expertise, load, and task requirements
4
+ */
5
+ import { VotingAgent, VotingTask, VotingPanelConfig, PanelAssemblyResult, AgentPool, VotingStrategy } from './types';
6
+ export declare class PanelAssembler {
7
+ private readonly pool;
8
+ private readonly strategy;
9
+ constructor(pool: AgentPool, strategy: VotingStrategy);
10
+ /**
11
+ * Assemble optimal voting panel for a task
12
+ */
13
+ assemblePanel(task: VotingTask, config: VotingPanelConfig): Promise<PanelAssemblyResult>;
14
+ /**
15
+ * Release panel agents back to pool
16
+ */
17
+ releasePanel(panel: VotingAgent[]): void;
18
+ /**
19
+ * Get criteria used for panel selection
20
+ */
21
+ private getSelectionCriteria;
22
+ }
23
+ /**
24
+ * Default voting strategy implementation
25
+ */
26
+ export declare class DefaultVotingStrategy implements VotingStrategy {
27
+ selectAgents(pool: AgentPool, task: VotingTask, config: VotingPanelConfig): VotingAgent[];
28
+ calculateWeight(agent: VotingAgent, task: VotingTask): number;
29
+ shouldRetry(agent: VotingAgent, task: VotingTask, attempt: number, error?: Error): boolean;
30
+ adjustTimeout(baseTimeout: number, attempt: number, agentLoad: number): number;
31
+ /**
32
+ * Score an agent for task suitability
33
+ */
34
+ private scoreAgent;
35
+ /**
36
+ * Get bonus score for agent type matching task type
37
+ */
38
+ private getTypeBonus;
39
+ }
40
+ /**
41
+ * Agent pool implementation
42
+ */
43
+ export declare class DefaultAgentPool implements AgentPool {
44
+ available: VotingAgent[];
45
+ busy: Map<string, VotingTask>;
46
+ failed: Set<string>;
47
+ constructor(agents: VotingAgent[]);
48
+ getAvailable(expertise?: string[]): VotingAgent[];
49
+ reserve(agentId: string, task: VotingTask): void;
50
+ release(agentId: string): void;
51
+ markFailed(agentId: string): void;
52
+ restore(agentId: string): void;
53
+ }
54
+ //# sourceMappingURL=panel-assembly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-assembly.d.ts","sourceRoot":"","sources":["../../src/voting/panel-assembly.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,cAAc,EAEf,MAAM,SAAS,CAAC;AAEjB,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,cAAc;IAG3C;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,mBAAmB,CAAC;IAwC/B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IAMxC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAqB7B;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,YAAY,CACV,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,iBAAiB,GACxB,WAAW,EAAE;IAqBhB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM;IAmB7D,WAAW,CACT,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO;IAuBV,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM;IAUT;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,OAAO,CAAC,YAAY;CAkBrB;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAChD,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAER,MAAM,EAAE,WAAW,EAAE;IAMjC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;IAcjD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAIhD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG/B"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ /**
3
+ * Panel assembly logic for voting orchestration
4
+ * Selects optimal agents based on expertise, load, and task requirements
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DefaultAgentPool = exports.DefaultVotingStrategy = exports.PanelAssembler = void 0;
8
+ class PanelAssembler {
9
+ constructor(pool, strategy) {
10
+ this.pool = pool;
11
+ this.strategy = strategy;
12
+ }
13
+ /**
14
+ * Assemble optimal voting panel for a task
15
+ */
16
+ async assemblePanel(task, config) {
17
+ const startTime = Date.now();
18
+ // Get available agents matching required expertise
19
+ const candidates = this.pool.getAvailable(task.requiredExpertise);
20
+ if (candidates.length < config.minPanelSize) {
21
+ throw new Error(`Insufficient agents: need ${config.minPanelSize}, have ${candidates.length}`);
22
+ }
23
+ // Select agents using strategy
24
+ const panel = this.strategy.selectAgents(this.pool, task, config);
25
+ // Calculate weights for selected agents
26
+ const weightedPanel = panel.map(agent => ({
27
+ ...agent,
28
+ weight: this.strategy.calculateWeight(agent, task)
29
+ }));
30
+ // Reserve agents in pool
31
+ weightedPanel.forEach(agent => {
32
+ this.pool.reserve(agent.id, task);
33
+ });
34
+ const assemblyTime = Date.now() - startTime;
35
+ return {
36
+ panel: weightedPanel,
37
+ assemblyTime,
38
+ selectionCriteria: this.getSelectionCriteria(task, config),
39
+ coverage: {
40
+ expertise: [...new Set(weightedPanel.flatMap(a => a.expertise))],
41
+ types: [...new Set(weightedPanel.map(a => a.type))],
42
+ totalWeight: weightedPanel.reduce((sum, a) => sum + a.weight, 0)
43
+ }
44
+ };
45
+ }
46
+ /**
47
+ * Release panel agents back to pool
48
+ */
49
+ releasePanel(panel) {
50
+ panel.forEach(agent => {
51
+ this.pool.release(agent.id);
52
+ });
53
+ }
54
+ /**
55
+ * Get criteria used for panel selection
56
+ */
57
+ getSelectionCriteria(task, config) {
58
+ const criteria = [];
59
+ if (task.requiredExpertise && task.requiredExpertise.length > 0) {
60
+ criteria.push(`expertise: ${task.requiredExpertise.join(', ')}`);
61
+ }
62
+ criteria.push(`panel size: ${config.minPanelSize}-${config.maxPanelSize}`);
63
+ criteria.push(`consensus: ${config.consensusMethod}`);
64
+ if (config.quorumThreshold) {
65
+ criteria.push(`quorum: ${config.quorumThreshold * 100}%`);
66
+ }
67
+ criteria.push(`priority: ${task.priority}`);
68
+ return criteria;
69
+ }
70
+ }
71
+ exports.PanelAssembler = PanelAssembler;
72
+ /**
73
+ * Default voting strategy implementation
74
+ */
75
+ class DefaultVotingStrategy {
76
+ selectAgents(pool, task, config) {
77
+ const candidates = pool.getAvailable(task.requiredExpertise);
78
+ // Score each candidate
79
+ const scored = candidates.map(agent => ({
80
+ agent,
81
+ score: this.scoreAgent(agent, task)
82
+ }));
83
+ // Sort by score descending
84
+ scored.sort((a, b) => b.score - a.score);
85
+ // Select top N agents within panel size limits
86
+ const panelSize = Math.min(Math.max(config.minPanelSize, scored.length), config.maxPanelSize);
87
+ return scored.slice(0, panelSize).map(s => s.agent);
88
+ }
89
+ calculateWeight(agent, task) {
90
+ let weight = 1.0;
91
+ // Increase weight for matching expertise
92
+ const matchingExpertise = agent.expertise.filter(e => task.requiredExpertise?.includes(e));
93
+ weight += matchingExpertise.length * 0.2;
94
+ // Adjust for agent type relevance
95
+ const typeBonus = this.getTypeBonus(agent.type, task.type);
96
+ weight *= (1 + typeBonus);
97
+ // Apply base agent weight
98
+ weight *= agent.weight;
99
+ return Math.max(0.1, Math.min(5.0, weight)); // Clamp 0.1-5.0
100
+ }
101
+ shouldRetry(agent, task, attempt, error) {
102
+ // Don't retry if max attempts reached
103
+ if (attempt >= 3) {
104
+ return false;
105
+ }
106
+ // Retry on transient errors
107
+ if (error) {
108
+ const transientErrors = ['ETIMEDOUT', 'ECONNRESET', 'ECONNREFUSED'];
109
+ const isTransient = transientErrors.some(code => error.message.includes(code));
110
+ return isTransient;
111
+ }
112
+ // Retry low priority tasks less aggressively
113
+ if (task.priority === 'low' && attempt > 1) {
114
+ return false;
115
+ }
116
+ return true;
117
+ }
118
+ adjustTimeout(baseTimeout, attempt, agentLoad) {
119
+ // Exponential backoff
120
+ const backoff = Math.pow(1.5, attempt - 1);
121
+ // Adjust for agent load (0-1 scale)
122
+ const loadMultiplier = 1 + (agentLoad * 0.5);
123
+ return baseTimeout * backoff * loadMultiplier;
124
+ }
125
+ /**
126
+ * Score an agent for task suitability
127
+ */
128
+ scoreAgent(agent, task) {
129
+ let score = 0;
130
+ // Expertise match
131
+ const matchingExpertise = agent.expertise.filter(e => task.requiredExpertise?.includes(e));
132
+ score += matchingExpertise.length * 10;
133
+ // Type relevance
134
+ score += this.getTypeBonus(agent.type, task.type) * 20;
135
+ // Agent weight
136
+ score += agent.weight * 5;
137
+ return score;
138
+ }
139
+ /**
140
+ * Get bonus score for agent type matching task type
141
+ */
142
+ getTypeBonus(agentType, taskType) {
143
+ const bonusMap = {
144
+ 'test-generation': ['test-generator', 'mutation-tester'],
145
+ 'coverage-analysis': ['coverage-analyzer', 'test-generator'],
146
+ 'quality-gate': ['quality-gate', 'coverage-analyzer'],
147
+ 'performance': ['performance-tester', 'quality-gate'],
148
+ 'security': ['security-scanner', 'quality-gate'],
149
+ 'flaky-detection': ['flaky-detector', 'test-generator'],
150
+ 'visual-testing': ['visual-tester', 'test-generator'],
151
+ 'api-testing': ['api-tester', 'test-generator'],
152
+ 'requirements': ['requirements-validator', 'test-generator'],
153
+ 'data-generation': ['data-generator', 'test-generator'],
154
+ 'regression': ['regression-analyzer', 'coverage-analyzer']
155
+ };
156
+ const relevantTypes = bonusMap[taskType] || [];
157
+ return relevantTypes.includes(agentType) ? 1.0 : 0.0;
158
+ }
159
+ }
160
+ exports.DefaultVotingStrategy = DefaultVotingStrategy;
161
+ /**
162
+ * Agent pool implementation
163
+ */
164
+ class DefaultAgentPool {
165
+ constructor(agents) {
166
+ this.available = [...agents];
167
+ this.busy = new Map();
168
+ this.failed = new Set();
169
+ }
170
+ getAvailable(expertise) {
171
+ let candidates = this.available.filter(agent => !this.busy.has(agent.id) && !this.failed.has(agent.id));
172
+ if (expertise && expertise.length > 0) {
173
+ candidates = candidates.filter(agent => expertise.some(e => agent.expertise.includes(e)));
174
+ }
175
+ return candidates;
176
+ }
177
+ reserve(agentId, task) {
178
+ this.busy.set(agentId, task);
179
+ }
180
+ release(agentId) {
181
+ this.busy.delete(agentId);
182
+ }
183
+ markFailed(agentId) {
184
+ this.failed.add(agentId);
185
+ this.busy.delete(agentId);
186
+ }
187
+ restore(agentId) {
188
+ this.failed.delete(agentId);
189
+ }
190
+ }
191
+ exports.DefaultAgentPool = DefaultAgentPool;
192
+ //# sourceMappingURL=panel-assembly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-assembly.js","sourceRoot":"","sources":["../../src/voting/panel-assembly.ts"],"names":[],"mappings":"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"}