@calliopelabs/cli 0.8.20 → 2.0.2

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 (402) hide show
  1. package/dist/agents/agent-config-loader.d.ts +60 -0
  2. package/dist/agents/agent-config-loader.d.ts.map +1 -0
  3. package/dist/agents/agent-config-loader.js +402 -0
  4. package/dist/agents/agent-config-loader.js.map +1 -0
  5. package/dist/agents/agent-config-presets.d.ts +10 -0
  6. package/dist/agents/agent-config-presets.d.ts.map +1 -0
  7. package/dist/agents/agent-config-presets.js +940 -0
  8. package/dist/agents/agent-config-presets.js.map +1 -0
  9. package/dist/agents/agent-config-types.d.ts +145 -0
  10. package/dist/agents/agent-config-types.d.ts.map +1 -0
  11. package/dist/agents/agent-config-types.js +12 -0
  12. package/dist/agents/agent-config-types.js.map +1 -0
  13. package/dist/{agterm → agents}/agent-detection.d.ts +1 -1
  14. package/dist/{agterm → agents}/agent-detection.d.ts.map +1 -1
  15. package/dist/{agterm → agents}/agent-detection.js +21 -5
  16. package/dist/agents/agent-detection.js.map +1 -0
  17. package/dist/agents/aggregator.d.ts +19 -0
  18. package/dist/agents/aggregator.d.ts.map +1 -0
  19. package/dist/agents/aggregator.js +141 -0
  20. package/dist/agents/aggregator.js.map +1 -0
  21. package/dist/{agterm → agents}/cli-backend.d.ts +1 -1
  22. package/dist/{agterm → agents}/cli-backend.d.ts.map +1 -1
  23. package/dist/{agterm → agents}/cli-backend.js +90 -12
  24. package/dist/agents/cli-backend.js.map +1 -0
  25. package/dist/agents/council-types.d.ts +113 -0
  26. package/dist/agents/council-types.d.ts.map +1 -0
  27. package/dist/agents/council-types.js +81 -0
  28. package/dist/agents/council-types.js.map +1 -0
  29. package/dist/agents/council.d.ts +107 -0
  30. package/dist/agents/council.d.ts.map +1 -0
  31. package/dist/agents/council.js +586 -0
  32. package/dist/agents/council.js.map +1 -0
  33. package/dist/agents/decomposer.d.ts +33 -0
  34. package/dist/agents/decomposer.d.ts.map +1 -0
  35. package/dist/agents/decomposer.js +138 -0
  36. package/dist/agents/decomposer.js.map +1 -0
  37. package/dist/agents/dynamic-tools.d.ts +52 -0
  38. package/dist/agents/dynamic-tools.d.ts.map +1 -0
  39. package/dist/agents/dynamic-tools.js +395 -0
  40. package/dist/agents/dynamic-tools.js.map +1 -0
  41. package/dist/agents/index.d.ts +29 -0
  42. package/dist/agents/index.d.ts.map +1 -0
  43. package/dist/agents/index.js +29 -0
  44. package/dist/agents/index.js.map +1 -0
  45. package/dist/agents/installer.d.ts +39 -0
  46. package/dist/agents/installer.d.ts.map +1 -0
  47. package/dist/agents/installer.js +205 -0
  48. package/dist/agents/installer.js.map +1 -0
  49. package/dist/{agterm → agents}/orchestrator.d.ts +7 -2
  50. package/dist/agents/orchestrator.d.ts.map +1 -0
  51. package/dist/{agterm → agents}/orchestrator.js +22 -2
  52. package/dist/agents/orchestrator.js.map +1 -0
  53. package/dist/agents/sdk-backend.d.ts +63 -0
  54. package/dist/agents/sdk-backend.d.ts.map +1 -0
  55. package/dist/agents/sdk-backend.js +489 -0
  56. package/dist/agents/sdk-backend.js.map +1 -0
  57. package/dist/agents/swarm-types.d.ts +83 -0
  58. package/dist/agents/swarm-types.d.ts.map +1 -0
  59. package/dist/agents/swarm-types.js +20 -0
  60. package/dist/agents/swarm-types.js.map +1 -0
  61. package/dist/agents/swarm.d.ts +74 -0
  62. package/dist/agents/swarm.d.ts.map +1 -0
  63. package/dist/agents/swarm.js +307 -0
  64. package/dist/agents/swarm.js.map +1 -0
  65. package/dist/{agterm → agents}/tools.d.ts +7 -5
  66. package/dist/agents/tools.d.ts.map +1 -0
  67. package/dist/agents/tools.js +776 -0
  68. package/dist/agents/tools.js.map +1 -0
  69. package/dist/{agterm → agents}/types.d.ts +14 -2
  70. package/dist/agents/types.d.ts.map +1 -0
  71. package/dist/{agterm → agents}/types.js +2 -2
  72. package/dist/agents/types.js.map +1 -0
  73. package/dist/api-server.d.ts +26 -0
  74. package/dist/api-server.d.ts.map +1 -0
  75. package/dist/api-server.js +230 -0
  76. package/dist/api-server.js.map +1 -0
  77. package/dist/auto-checkpoint.d.ts +35 -0
  78. package/dist/auto-checkpoint.d.ts.map +1 -0
  79. package/dist/auto-checkpoint.js +143 -0
  80. package/dist/auto-checkpoint.js.map +1 -0
  81. package/dist/auto-compressor.d.ts +44 -0
  82. package/dist/auto-compressor.d.ts.map +1 -0
  83. package/dist/auto-compressor.js +145 -0
  84. package/dist/auto-compressor.js.map +1 -0
  85. package/dist/background-jobs.d.ts +45 -0
  86. package/dist/background-jobs.d.ts.map +1 -0
  87. package/dist/background-jobs.js +122 -0
  88. package/dist/background-jobs.js.map +1 -0
  89. package/dist/bin.d.ts +6 -2
  90. package/dist/bin.d.ts.map +1 -1
  91. package/dist/bin.js +127 -24
  92. package/dist/bin.js.map +1 -1
  93. package/dist/checkpoint.d.ts +49 -0
  94. package/dist/checkpoint.d.ts.map +1 -0
  95. package/dist/checkpoint.js +219 -0
  96. package/dist/checkpoint.js.map +1 -0
  97. package/dist/circuit-breaker/breaker.d.ts +80 -0
  98. package/dist/circuit-breaker/breaker.d.ts.map +1 -0
  99. package/dist/circuit-breaker/breaker.js +408 -0
  100. package/dist/circuit-breaker/breaker.js.map +1 -0
  101. package/dist/circuit-breaker/defaults.d.ts +8 -0
  102. package/dist/circuit-breaker/defaults.d.ts.map +1 -0
  103. package/dist/circuit-breaker/defaults.js +35 -0
  104. package/dist/circuit-breaker/defaults.js.map +1 -0
  105. package/dist/circuit-breaker/index.d.ts +9 -0
  106. package/dist/circuit-breaker/index.d.ts.map +1 -0
  107. package/dist/circuit-breaker/index.js +8 -0
  108. package/dist/circuit-breaker/index.js.map +1 -0
  109. package/dist/circuit-breaker/types.d.ts +77 -0
  110. package/dist/circuit-breaker/types.d.ts.map +1 -0
  111. package/dist/circuit-breaker/types.js +8 -0
  112. package/dist/circuit-breaker/types.js.map +1 -0
  113. package/dist/circuit-breaker.d.ts +8 -0
  114. package/dist/circuit-breaker.d.ts.map +1 -0
  115. package/dist/circuit-breaker.js +7 -0
  116. package/dist/circuit-breaker.js.map +1 -0
  117. package/dist/cli/agent.d.ts +9 -0
  118. package/dist/cli/agent.d.ts.map +1 -0
  119. package/dist/cli/agent.js +262 -0
  120. package/dist/cli/agent.js.map +1 -0
  121. package/dist/cli/commands.d.ts +12 -0
  122. package/dist/cli/commands.d.ts.map +1 -0
  123. package/dist/{cli.js → cli/commands.js} +285 -422
  124. package/dist/cli/commands.js.map +1 -0
  125. package/dist/cli/index.d.ts +8 -0
  126. package/dist/cli/index.d.ts.map +1 -0
  127. package/dist/cli/index.js +222 -0
  128. package/dist/cli/index.js.map +1 -0
  129. package/dist/cli/types.d.ts +30 -0
  130. package/dist/cli/types.d.ts.map +1 -0
  131. package/dist/cli/types.js +20 -0
  132. package/dist/cli/types.js.map +1 -0
  133. package/dist/companions.d.ts +54 -0
  134. package/dist/companions.d.ts.map +1 -0
  135. package/dist/companions.js +440 -0
  136. package/dist/companions.js.map +1 -0
  137. package/dist/config.d.ts +23 -1
  138. package/dist/config.d.ts.map +1 -1
  139. package/dist/config.js +95 -22
  140. package/dist/config.js.map +1 -1
  141. package/dist/diff.d.ts +27 -0
  142. package/dist/diff.d.ts.map +1 -1
  143. package/dist/diff.js +415 -10
  144. package/dist/diff.js.map +1 -1
  145. package/dist/errors.d.ts.map +1 -1
  146. package/dist/errors.js +20 -11
  147. package/dist/errors.js.map +1 -1
  148. package/dist/git-status.d.ts +23 -0
  149. package/dist/git-status.d.ts.map +1 -0
  150. package/dist/git-status.js +92 -0
  151. package/dist/git-status.js.map +1 -0
  152. package/dist/headless.d.ts +25 -0
  153. package/dist/headless.d.ts.map +1 -0
  154. package/dist/headless.js +182 -0
  155. package/dist/headless.js.map +1 -0
  156. package/dist/hud/api.d.ts +35 -0
  157. package/dist/hud/api.d.ts.map +1 -0
  158. package/dist/hud/api.js +448 -0
  159. package/dist/hud/api.js.map +1 -0
  160. package/dist/hud/palettes.d.ts +9 -0
  161. package/dist/hud/palettes.d.ts.map +1 -0
  162. package/dist/hud/palettes.js +280 -0
  163. package/dist/hud/palettes.js.map +1 -0
  164. package/dist/hud/skins.d.ts +12 -0
  165. package/dist/hud/skins.d.ts.map +1 -0
  166. package/dist/hud/skins.js +365 -0
  167. package/dist/hud/skins.js.map +1 -0
  168. package/dist/hud/theme-packs/api.d.ts +51 -0
  169. package/dist/hud/theme-packs/api.d.ts.map +1 -0
  170. package/dist/hud/theme-packs/api.js +145 -0
  171. package/dist/hud/theme-packs/api.js.map +1 -0
  172. package/dist/hud/theme-packs/index.d.ts +18 -0
  173. package/dist/hud/theme-packs/index.d.ts.map +1 -0
  174. package/dist/hud/theme-packs/index.js +38 -0
  175. package/dist/hud/theme-packs/index.js.map +1 -0
  176. package/dist/hud/theme-packs/types.d.ts +29 -0
  177. package/dist/hud/theme-packs/types.d.ts.map +1 -0
  178. package/dist/hud/theme-packs/types.js +9 -0
  179. package/dist/hud/theme-packs/types.js.map +1 -0
  180. package/dist/hud/types.d.ts +182 -0
  181. package/dist/hud/types.d.ts.map +1 -0
  182. package/dist/hud/types.js +7 -0
  183. package/dist/hud/types.js.map +1 -0
  184. package/dist/idle-eviction.d.ts +34 -0
  185. package/dist/idle-eviction.d.ts.map +1 -0
  186. package/dist/idle-eviction.js +78 -0
  187. package/dist/idle-eviction.js.map +1 -0
  188. package/dist/index.d.ts +9 -3
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +9 -3
  191. package/dist/index.js.map +1 -1
  192. package/dist/iteration-ledger.d.ts +105 -0
  193. package/dist/iteration-ledger.d.ts.map +1 -0
  194. package/dist/iteration-ledger.js +237 -0
  195. package/dist/iteration-ledger.js.map +1 -0
  196. package/dist/markdown.d.ts.map +1 -1
  197. package/dist/markdown.js +1 -27
  198. package/dist/markdown.js.map +1 -1
  199. package/dist/mcp.d.ts +35 -0
  200. package/dist/mcp.d.ts.map +1 -1
  201. package/dist/mcp.js +291 -7
  202. package/dist/mcp.js.map +1 -1
  203. package/dist/memory.d.ts.map +1 -1
  204. package/dist/memory.js +12 -2
  205. package/dist/memory.js.map +1 -1
  206. package/dist/model-detection.d.ts +5 -0
  207. package/dist/model-detection.d.ts.map +1 -1
  208. package/dist/model-detection.js +278 -10
  209. package/dist/model-detection.js.map +1 -1
  210. package/dist/model-router.d.ts.map +1 -1
  211. package/dist/model-router.js +33 -11
  212. package/dist/model-router.js.map +1 -1
  213. package/dist/plugins.d.ts +8 -0
  214. package/dist/plugins.d.ts.map +1 -1
  215. package/dist/plugins.js +97 -6
  216. package/dist/plugins.js.map +1 -1
  217. package/dist/providers/anthropic.d.ts +10 -0
  218. package/dist/providers/anthropic.d.ts.map +1 -0
  219. package/dist/providers/anthropic.js +221 -0
  220. package/dist/providers/anthropic.js.map +1 -0
  221. package/dist/providers/bedrock.d.ts +17 -0
  222. package/dist/providers/bedrock.d.ts.map +1 -0
  223. package/dist/providers/bedrock.js +574 -0
  224. package/dist/providers/bedrock.js.map +1 -0
  225. package/dist/providers/compat.d.ts +13 -0
  226. package/dist/providers/compat.d.ts.map +1 -0
  227. package/dist/providers/compat.js +202 -0
  228. package/dist/providers/compat.js.map +1 -0
  229. package/dist/providers/google.d.ts +10 -0
  230. package/dist/providers/google.d.ts.map +1 -0
  231. package/dist/providers/google.js +203 -0
  232. package/dist/providers/google.js.map +1 -0
  233. package/dist/providers/index.d.ts +23 -0
  234. package/dist/providers/index.d.ts.map +1 -0
  235. package/dist/providers/index.js +145 -0
  236. package/dist/providers/index.js.map +1 -0
  237. package/dist/providers/ollama.d.ts +17 -0
  238. package/dist/providers/ollama.d.ts.map +1 -0
  239. package/dist/providers/ollama.js +289 -0
  240. package/dist/providers/ollama.js.map +1 -0
  241. package/dist/providers/openai.d.ts +121 -0
  242. package/dist/providers/openai.d.ts.map +1 -0
  243. package/dist/providers/openai.js +485 -0
  244. package/dist/providers/openai.js.map +1 -0
  245. package/dist/providers/types.d.ts +63 -0
  246. package/dist/providers/types.d.ts.map +1 -0
  247. package/dist/providers/types.js +164 -0
  248. package/dist/providers/types.js.map +1 -0
  249. package/dist/sandbox-native.d.ts +59 -0
  250. package/dist/sandbox-native.d.ts.map +1 -0
  251. package/dist/sandbox-native.js +292 -0
  252. package/dist/sandbox-native.js.map +1 -0
  253. package/dist/sandbox.d.ts +2 -2
  254. package/dist/sandbox.d.ts.map +1 -1
  255. package/dist/sandbox.js +59 -13
  256. package/dist/sandbox.js.map +1 -1
  257. package/dist/scope.d.ts +3 -1
  258. package/dist/scope.d.ts.map +1 -1
  259. package/dist/scope.js +13 -1
  260. package/dist/scope.js.map +1 -1
  261. package/dist/session-timeout.d.ts +31 -0
  262. package/dist/session-timeout.d.ts.map +1 -0
  263. package/dist/session-timeout.js +100 -0
  264. package/dist/session-timeout.js.map +1 -0
  265. package/dist/setup.d.ts.map +1 -1
  266. package/dist/setup.js +29 -17
  267. package/dist/setup.js.map +1 -1
  268. package/dist/smart-router.d.ts +73 -0
  269. package/dist/smart-router.d.ts.map +1 -0
  270. package/dist/smart-router.js +332 -0
  271. package/dist/smart-router.js.map +1 -0
  272. package/dist/storage.d.ts +19 -0
  273. package/dist/storage.d.ts.map +1 -1
  274. package/dist/storage.js +164 -1
  275. package/dist/storage.js.map +1 -1
  276. package/dist/streaming.d.ts +4 -0
  277. package/dist/streaming.d.ts.map +1 -1
  278. package/dist/streaming.js +12 -0
  279. package/dist/streaming.js.map +1 -1
  280. package/dist/styles.d.ts +32 -0
  281. package/dist/styles.d.ts.map +1 -1
  282. package/dist/styles.js +91 -0
  283. package/dist/styles.js.map +1 -1
  284. package/dist/summarization.d.ts +1 -1
  285. package/dist/summarization.js +4 -4
  286. package/dist/summarization.js.map +1 -1
  287. package/dist/terminal-image.d.ts +115 -0
  288. package/dist/terminal-image.d.ts.map +1 -0
  289. package/dist/terminal-image.js +766 -0
  290. package/dist/terminal-image.js.map +1 -0
  291. package/dist/terminal-recording.d.ts +55 -0
  292. package/dist/terminal-recording.d.ts.map +1 -0
  293. package/dist/terminal-recording.js +182 -0
  294. package/dist/terminal-recording.js.map +1 -0
  295. package/dist/themes.d.ts +19 -35
  296. package/dist/themes.d.ts.map +1 -1
  297. package/dist/themes.js +101 -210
  298. package/dist/themes.js.map +1 -1
  299. package/dist/tmux.d.ts +35 -0
  300. package/dist/tmux.d.ts.map +1 -0
  301. package/dist/tmux.js +106 -0
  302. package/dist/tmux.js.map +1 -0
  303. package/dist/tools.d.ts +3 -3
  304. package/dist/tools.d.ts.map +1 -1
  305. package/dist/tools.js +587 -45
  306. package/dist/tools.js.map +1 -1
  307. package/dist/trust.d.ts +53 -0
  308. package/dist/trust.d.ts.map +1 -0
  309. package/dist/trust.js +154 -0
  310. package/dist/trust.js.map +1 -0
  311. package/dist/types.d.ts +7 -3
  312. package/dist/types.d.ts.map +1 -1
  313. package/dist/types.js +70 -32
  314. package/dist/types.js.map +1 -1
  315. package/dist/ui/agent.d.ts +61 -0
  316. package/dist/ui/agent.d.ts.map +1 -0
  317. package/dist/ui/agent.js +768 -0
  318. package/dist/ui/agent.js.map +1 -0
  319. package/dist/ui/chat-input.d.ts +32 -0
  320. package/dist/ui/chat-input.d.ts.map +1 -0
  321. package/dist/ui/chat-input.js +355 -0
  322. package/dist/ui/chat-input.js.map +1 -0
  323. package/dist/ui/commands.d.ts +92 -0
  324. package/dist/ui/commands.d.ts.map +1 -0
  325. package/dist/ui/commands.js +3006 -0
  326. package/dist/ui/commands.js.map +1 -0
  327. package/dist/ui/completions.d.ts +22 -0
  328. package/dist/ui/completions.d.ts.map +1 -0
  329. package/dist/ui/completions.js +215 -0
  330. package/dist/ui/completions.js.map +1 -0
  331. package/dist/ui/components.d.ts +38 -0
  332. package/dist/ui/components.d.ts.map +1 -0
  333. package/dist/ui/components.js +422 -0
  334. package/dist/ui/components.js.map +1 -0
  335. package/dist/ui/context.d.ts +12 -0
  336. package/dist/ui/context.d.ts.map +1 -0
  337. package/dist/ui/context.js +102 -0
  338. package/dist/ui/context.js.map +1 -0
  339. package/dist/ui/error-boundary.d.ts +33 -0
  340. package/dist/ui/error-boundary.d.ts.map +1 -0
  341. package/dist/ui/error-boundary.js +94 -0
  342. package/dist/ui/error-boundary.js.map +1 -0
  343. package/dist/ui/frame.d.ts +13 -0
  344. package/dist/ui/frame.d.ts.map +1 -0
  345. package/dist/ui/frame.js +89 -0
  346. package/dist/ui/frame.js.map +1 -0
  347. package/dist/ui/index.d.ts +12 -0
  348. package/dist/ui/index.d.ts.map +1 -0
  349. package/dist/ui/index.js +928 -0
  350. package/dist/ui/index.js.map +1 -0
  351. package/dist/ui/messages.d.ts +19 -0
  352. package/dist/ui/messages.d.ts.map +1 -0
  353. package/dist/ui/messages.js +181 -0
  354. package/dist/ui/messages.js.map +1 -0
  355. package/dist/ui/modals.d.ts +52 -0
  356. package/dist/ui/modals.d.ts.map +1 -0
  357. package/dist/ui/modals.js +204 -0
  358. package/dist/ui/modals.js.map +1 -0
  359. package/dist/ui/pack-picker.d.ts +12 -0
  360. package/dist/ui/pack-picker.d.ts.map +1 -0
  361. package/dist/ui/pack-picker.js +101 -0
  362. package/dist/ui/pack-picker.js.map +1 -0
  363. package/dist/ui/status-bar.d.ts +20 -0
  364. package/dist/ui/status-bar.d.ts.map +1 -0
  365. package/dist/ui/status-bar.js +41 -0
  366. package/dist/ui/status-bar.js.map +1 -0
  367. package/dist/ui/theme-picker.d.ts +24 -0
  368. package/dist/ui/theme-picker.d.ts.map +1 -0
  369. package/dist/ui/theme-picker.js +190 -0
  370. package/dist/ui/theme-picker.js.map +1 -0
  371. package/dist/ui/types.d.ts +62 -0
  372. package/dist/ui/types.d.ts.map +1 -0
  373. package/dist/ui/types.js +7 -0
  374. package/dist/ui/types.js.map +1 -0
  375. package/dist/version-check.d.ts.map +1 -1
  376. package/dist/version-check.js +1 -9
  377. package/dist/version-check.js.map +1 -1
  378. package/package.json +8 -3
  379. package/dist/agterm/agent-detection.js.map +0 -1
  380. package/dist/agterm/cli-backend.js.map +0 -1
  381. package/dist/agterm/index.d.ts +0 -12
  382. package/dist/agterm/index.d.ts.map +0 -1
  383. package/dist/agterm/index.js +0 -15
  384. package/dist/agterm/index.js.map +0 -1
  385. package/dist/agterm/orchestrator.d.ts.map +0 -1
  386. package/dist/agterm/orchestrator.js.map +0 -1
  387. package/dist/agterm/tools.d.ts.map +0 -1
  388. package/dist/agterm/tools.js +0 -278
  389. package/dist/agterm/tools.js.map +0 -1
  390. package/dist/agterm/types.d.ts.map +0 -1
  391. package/dist/agterm/types.js.map +0 -1
  392. package/dist/cli.d.ts +0 -14
  393. package/dist/cli.d.ts.map +0 -1
  394. package/dist/cli.js.map +0 -1
  395. package/dist/providers.d.ts +0 -51
  396. package/dist/providers.d.ts.map +0 -1
  397. package/dist/providers.js +0 -1146
  398. package/dist/providers.js.map +0 -1
  399. package/dist/ui-cli.d.ts +0 -17
  400. package/dist/ui-cli.d.ts.map +0 -1
  401. package/dist/ui-cli.js +0 -3730
  402. package/dist/ui-cli.js.map +0 -1
@@ -0,0 +1,586 @@
1
+ /**
2
+ * Calliope Agents — Council Manager
3
+ *
4
+ * Coordinates groups of agents deliberating on a shared goal.
5
+ * Supports competitive, collaborative, consensus, and overseer modes.
6
+ */
7
+ import { randomUUID } from 'crypto';
8
+ import { DEFAULT_COUNCIL_CONFIG, COUNCIL_TEMPLATES } from './council-types.js';
9
+ import { orchestrator } from './orchestrator.js';
10
+ import { swarmManager } from './swarm.js';
11
+ /**
12
+ * Council Manager - Singleton
13
+ */
14
+ class CouncilManager {
15
+ sessions = new Map();
16
+ /**
17
+ * Start a new council session
18
+ */
19
+ async startCouncil(prompt, config, cwd) {
20
+ const mergedConfig = {
21
+ ...DEFAULT_COUNCIL_CONFIG,
22
+ ...config,
23
+ };
24
+ const session = {
25
+ id: randomUUID(),
26
+ prompt,
27
+ status: 'deliberating',
28
+ config: mergedConfig,
29
+ deliberations: [],
30
+ votes: [],
31
+ scores: [],
32
+ round: 1,
33
+ createdAt: new Date(),
34
+ updatedAt: new Date(),
35
+ };
36
+ this.sessions.set(session.id, session);
37
+ // Start council lifecycle
38
+ this.runCouncilLifecycle(session, cwd).catch(err => {
39
+ session.status = 'failed';
40
+ session.error = err instanceof Error ? err.message : String(err);
41
+ session.updatedAt = new Date();
42
+ });
43
+ return session;
44
+ }
45
+ /**
46
+ * Start a council from a template
47
+ */
48
+ async startFromTemplate(templateName, prompt, cwd) {
49
+ const template = COUNCIL_TEMPLATES[templateName];
50
+ if (!template) {
51
+ throw new Error(`Unknown council template: ${templateName}. Available: ${Object.keys(COUNCIL_TEMPLATES).join(', ')}`);
52
+ }
53
+ const members = template.members.map(m => ({
54
+ ...m,
55
+ id: randomUUID(),
56
+ }));
57
+ const fullPrompt = template.promptPrefix
58
+ ? `${template.promptPrefix}${prompt}`
59
+ : prompt;
60
+ return this.startCouncil(fullPrompt, {
61
+ mode: template.mode,
62
+ members,
63
+ tieBreaker: template.tieBreaker,
64
+ }, cwd);
65
+ }
66
+ /**
67
+ * Get a council session
68
+ */
69
+ getSession(sessionId) {
70
+ return this.sessions.get(sessionId);
71
+ }
72
+ /**
73
+ * Get all sessions
74
+ */
75
+ getAllSessions() {
76
+ return Array.from(this.sessions.values());
77
+ }
78
+ /**
79
+ * Cancel a council session
80
+ */
81
+ async cancelCouncil(sessionId) {
82
+ const session = this.sessions.get(sessionId);
83
+ if (!session)
84
+ return false;
85
+ session.status = 'cancelled';
86
+ session.completedAt = new Date();
87
+ session.updatedAt = new Date();
88
+ return true;
89
+ }
90
+ /**
91
+ * Get council statistics
92
+ */
93
+ getStats() {
94
+ const all = Array.from(this.sessions.values());
95
+ return {
96
+ totalSessions: all.length,
97
+ activeSessions: all.filter(s => !['completed', 'failed', 'cancelled'].includes(s.status)).length,
98
+ completedSessions: all.filter(s => s.status === 'completed').length,
99
+ failedSessions: all.filter(s => s.status === 'failed').length,
100
+ };
101
+ }
102
+ /**
103
+ * Run the council lifecycle based on mode
104
+ */
105
+ async runCouncilLifecycle(session, cwd) {
106
+ try {
107
+ switch (session.config.mode) {
108
+ case 'competitive':
109
+ await this.runCompetitive(session, cwd);
110
+ break;
111
+ case 'collaborative':
112
+ await this.runCollaborative(session, cwd);
113
+ break;
114
+ case 'consensus':
115
+ await this.runConsensus(session, cwd);
116
+ break;
117
+ case 'overseer':
118
+ await this.runOverseer(session, cwd);
119
+ break;
120
+ }
121
+ }
122
+ catch (error) {
123
+ session.status = 'failed';
124
+ session.error = error instanceof Error ? error.message : String(error);
125
+ session.completedAt = new Date();
126
+ session.updatedAt = new Date();
127
+ }
128
+ }
129
+ /**
130
+ * Competitive mode: All respond independently → cross-score → highest wins
131
+ */
132
+ async runCompetitive(session, cwd) {
133
+ const { members } = session.config;
134
+ // Phase 1: All members deliberate independently
135
+ session.status = 'deliberating';
136
+ session.updatedAt = new Date();
137
+ const deliberationPromises = members.map(async (member) => {
138
+ const roleContext = member.role
139
+ ? `You are acting as ${member.role}. `
140
+ : '';
141
+ const prompt = `${roleContext}${session.prompt}`;
142
+ try {
143
+ const task = await orchestrator.spawnAgent(prompt, member.agent, {
144
+ background: false,
145
+ priority: 'normal',
146
+ cwd,
147
+ });
148
+ const entry = {
149
+ memberId: member.id,
150
+ memberName: member.name,
151
+ response: task.result || '(no response)',
152
+ timestamp: new Date(),
153
+ };
154
+ session.deliberations.push(entry);
155
+ session.updatedAt = new Date();
156
+ }
157
+ catch (error) {
158
+ session.deliberations.push({
159
+ memberId: member.id,
160
+ memberName: member.name,
161
+ response: `Error: ${error instanceof Error ? error.message : String(error)}`,
162
+ timestamp: new Date(),
163
+ });
164
+ }
165
+ });
166
+ await Promise.allSettled(deliberationPromises);
167
+ if (session.status === 'cancelled')
168
+ return;
169
+ // Phase 2: Cross-scoring (LLM-based with heuristic fallback)
170
+ session.status = 'scoring';
171
+ session.updatedAt = new Date();
172
+ const scoringResults = await this.crossScoreAsync(session, cwd);
173
+ session.scores = scoringResults;
174
+ // Phase 3: Select winner
175
+ const winner = this.selectWinner(session);
176
+ if (winner) {
177
+ session.result = winner.response;
178
+ session.winnerId = winner.memberId;
179
+ }
180
+ else {
181
+ session.result = session.deliberations[0]?.response || 'No results';
182
+ }
183
+ session.status = 'completed';
184
+ session.completedAt = new Date();
185
+ session.updatedAt = new Date();
186
+ }
187
+ /**
188
+ * Collaborative mode: Sequential building (A → B builds on A → C builds on B)
189
+ */
190
+ async runCollaborative(session, cwd) {
191
+ const { members } = session.config;
192
+ session.status = 'building';
193
+ session.updatedAt = new Date();
194
+ let accumulatedContext = '';
195
+ for (const member of members) {
196
+ if (session.status === 'cancelled')
197
+ return;
198
+ const roleContext = member.role
199
+ ? `You are acting as ${member.role}. `
200
+ : '';
201
+ let prompt;
202
+ if (accumulatedContext) {
203
+ prompt = `${roleContext}${session.prompt}\n\nPrevious contributions from the team:\n${accumulatedContext}\n\nBuild upon and improve the above contributions. Add your expertise and perspective.`;
204
+ }
205
+ else {
206
+ prompt = `${roleContext}${session.prompt}\n\nYou are the first team member to respond. Provide a strong foundation.`;
207
+ }
208
+ try {
209
+ const task = await orchestrator.spawnAgent(prompt, member.agent, {
210
+ background: false,
211
+ priority: 'normal',
212
+ cwd,
213
+ });
214
+ const entry = {
215
+ memberId: member.id,
216
+ memberName: member.name,
217
+ response: task.result || '(no response)',
218
+ timestamp: new Date(),
219
+ };
220
+ session.deliberations.push(entry);
221
+ accumulatedContext += `\n\n--- ${member.name} (${member.role || 'general'}) ---\n${task.result || '(no response)'}`;
222
+ session.updatedAt = new Date();
223
+ }
224
+ catch (error) {
225
+ session.deliberations.push({
226
+ memberId: member.id,
227
+ memberName: member.name,
228
+ response: `Error: ${error instanceof Error ? error.message : String(error)}`,
229
+ timestamp: new Date(),
230
+ });
231
+ }
232
+ }
233
+ // The last response is the most refined version
234
+ const lastEntry = session.deliberations[session.deliberations.length - 1];
235
+ session.result = lastEntry?.response || 'No results';
236
+ session.winnerId = lastEntry?.memberId;
237
+ session.status = 'completed';
238
+ session.completedAt = new Date();
239
+ session.updatedAt = new Date();
240
+ }
241
+ /**
242
+ * Consensus mode: Deliberate → vote → supermajority or repeat
243
+ */
244
+ async runConsensus(session, cwd) {
245
+ const { members, maxRounds, consensusThreshold } = session.config;
246
+ for (let round = 1; round <= maxRounds; round++) {
247
+ session.round = round;
248
+ session.status = 'deliberating';
249
+ session.updatedAt = new Date();
250
+ // Phase 1: Deliberate
251
+ const previousContext = round > 1
252
+ ? `\n\nPrevious round results:\n${session.deliberations.filter(d => d.votes !== undefined).map(d => `${d.memberName}: ${d.response.slice(0, 200)}... (${d.votes} votes)`).join('\n')}`
253
+ : '';
254
+ const deliberationPromises = members.map(async (member) => {
255
+ const roleContext = member.role ? `You are ${member.role}. ` : '';
256
+ const prompt = `${roleContext}${session.prompt}${previousContext}\n\nRound ${round}/${maxRounds}. Present your position concisely.`;
257
+ try {
258
+ const task = await orchestrator.spawnAgent(prompt, member.agent, {
259
+ background: false,
260
+ priority: 'normal',
261
+ cwd,
262
+ });
263
+ const entry = {
264
+ memberId: member.id,
265
+ memberName: member.name,
266
+ response: task.result || '(no response)',
267
+ timestamp: new Date(),
268
+ votes: 0,
269
+ };
270
+ session.deliberations.push(entry);
271
+ }
272
+ catch (error) {
273
+ session.deliberations.push({
274
+ memberId: member.id,
275
+ memberName: member.name,
276
+ response: `Error: ${error instanceof Error ? error.message : String(error)}`,
277
+ timestamp: new Date(),
278
+ votes: 0,
279
+ });
280
+ }
281
+ });
282
+ await Promise.allSettled(deliberationPromises);
283
+ session.updatedAt = new Date();
284
+ if (session.status === 'cancelled')
285
+ return;
286
+ // Phase 2: Vote
287
+ session.status = 'voting';
288
+ session.updatedAt = new Date();
289
+ // Each member votes for the best response (not their own)
290
+ const roundEntries = session.deliberations.filter(d => d.votes !== undefined).slice(-members.length);
291
+ for (const member of members) {
292
+ const candidates = roundEntries.filter(e => e.memberId !== member.id);
293
+ if (candidates.length === 0)
294
+ continue;
295
+ // Simple scoring: first candidate gets the vote (in a real system, the LLM would evaluate)
296
+ // For now, use round-robin voting based on member weight
297
+ const candidateIdx = members.indexOf(member) % candidates.length;
298
+ const selected = candidates[candidateIdx];
299
+ const vote = {
300
+ voterId: member.id,
301
+ candidateId: selected.memberId,
302
+ weight: member.weight,
303
+ };
304
+ session.votes.push(vote);
305
+ // Update vote count on the entry
306
+ selected.votes = (selected.votes || 0) + member.weight;
307
+ }
308
+ // Check for consensus
309
+ const totalWeight = members.reduce((sum, m) => sum + m.weight, 0);
310
+ const bestEntry = roundEntries.reduce((best, entry) => (!best || (entry.votes || 0) > (best.votes || 0) ? entry : best), null);
311
+ if (bestEntry && (bestEntry.votes || 0) / totalWeight >= consensusThreshold) {
312
+ // Consensus reached
313
+ session.result = bestEntry.response;
314
+ session.winnerId = bestEntry.memberId;
315
+ session.status = 'completed';
316
+ session.completedAt = new Date();
317
+ session.updatedAt = new Date();
318
+ return;
319
+ }
320
+ }
321
+ // No consensus after max rounds - use tie-breaker
322
+ const finalResult = this.applyTieBreaker(session);
323
+ session.result = finalResult?.response || session.deliberations[session.deliberations.length - 1]?.response || 'No consensus reached';
324
+ session.winnerId = finalResult?.memberId;
325
+ session.status = 'completed';
326
+ session.completedAt = new Date();
327
+ session.updatedAt = new Date();
328
+ }
329
+ /**
330
+ * Overseer mode: Lead decomposes (Swarm), reviews results, makes final call
331
+ */
332
+ async runOverseer(session, cwd) {
333
+ const { members } = session.config;
334
+ const lead = members[0]; // First member is the overseer
335
+ if (!lead) {
336
+ throw new Error('Council needs at least one member for overseer mode');
337
+ }
338
+ // Phase 1: Overseer decomposes via swarm
339
+ session.status = 'deliberating';
340
+ session.updatedAt = new Date();
341
+ const swarmSession = await swarmManager.startSwarm(session.prompt, { decomposition: 'parallel', aggregation: 'structured' }, cwd);
342
+ // Wait for swarm to complete (poll at 2s intervals).
343
+ // Timeout scales with maxRounds (each round ≈ 5 min), minimum 5 minutes,
344
+ // so large councils get proportionally more time to finish.
345
+ const timeoutMs = Math.max(5 * 60_000, session.config.maxRounds * 5 * 60_000);
346
+ const pollIntervalMs = 2000;
347
+ const maxAttempts = Math.ceil(timeoutMs / pollIntervalMs);
348
+ let attempts = 0;
349
+ while (!['completed', 'failed', 'cancelled'].includes(swarmSession.status) && attempts < maxAttempts) {
350
+ await new Promise(resolve => setTimeout(resolve, pollIntervalMs));
351
+ attempts++;
352
+ }
353
+ if (swarmSession.status !== 'completed' || !swarmSession.result) {
354
+ throw new Error(`Swarm decomposition failed: ${swarmSession.error || 'timeout'}`);
355
+ }
356
+ // Record swarm results as deliberation
357
+ session.deliberations.push({
358
+ memberId: 'swarm',
359
+ memberName: 'Swarm Workers',
360
+ response: swarmSession.result,
361
+ timestamp: new Date(),
362
+ });
363
+ // Phase 2: Overseer reviews
364
+ session.status = 'reviewing';
365
+ session.updatedAt = new Date();
366
+ const reviewPrompt = `You are the overseer reviewing results from your team.
367
+
368
+ Original task: ${session.prompt}
369
+
370
+ Team results:
371
+ ${swarmSession.result}
372
+
373
+ Review these results. Synthesize, correct errors, fill gaps, and produce the final authoritative response.`;
374
+ try {
375
+ const reviewTask = await orchestrator.spawnAgent(reviewPrompt, lead.agent, {
376
+ background: false,
377
+ priority: 'high',
378
+ cwd,
379
+ });
380
+ session.deliberations.push({
381
+ memberId: lead.id,
382
+ memberName: lead.name,
383
+ response: reviewTask.result || '(no review)',
384
+ timestamp: new Date(),
385
+ });
386
+ session.result = reviewTask.result || swarmSession.result;
387
+ session.winnerId = lead.id;
388
+ }
389
+ catch (error) {
390
+ // Fall back to swarm results
391
+ session.result = swarmSession.result;
392
+ session.error = `Overseer review failed: ${error instanceof Error ? error.message : String(error)}`;
393
+ }
394
+ session.status = 'completed';
395
+ session.completedAt = new Date();
396
+ session.updatedAt = new Date();
397
+ }
398
+ /**
399
+ * LLM-based cross-scoring: spawns a scoring agent to evaluate responses.
400
+ * Returns null if LLM scoring fails (caller should fall back to heuristic).
401
+ */
402
+ async llmCrossScore(session, cwd) {
403
+ const entries = session.deliberations;
404
+ if (entries.length === 0)
405
+ return null;
406
+ const responseSummaries = entries.map((entry, i) => `--- Response ${i + 1} (by ${entry.memberName}) ---\n${entry.response}`).join('\n\n');
407
+ const scoringPrompt = `You are an impartial judge evaluating ${entries.length} responses to the following prompt:
408
+
409
+ "${session.prompt}"
410
+
411
+ Here are the responses:
412
+
413
+ ${responseSummaries}
414
+
415
+ Evaluate each response on correctness, completeness, and quality. Return ONLY a JSON array of scores (0-100), one per response, in the same order they were presented. Example for 3 responses: [85, 72, 90]
416
+
417
+ Return ONLY the JSON array, no other text.`;
418
+ try {
419
+ const task = await orchestrator.spawnAgent(scoringPrompt, 'calliope', {
420
+ background: false,
421
+ priority: 'normal',
422
+ cwd,
423
+ });
424
+ const result = (task.result || '').trim();
425
+ // Extract JSON array from response (handle markdown fences, leading text, etc.)
426
+ const arrayMatch = result.match(/\[[\s\d,]+\]/);
427
+ if (!arrayMatch)
428
+ return null;
429
+ const parsed = JSON.parse(arrayMatch[0]);
430
+ if (!Array.isArray(parsed) || parsed.length !== entries.length)
431
+ return null;
432
+ // Validate all entries are numbers in range
433
+ const numericScores = parsed.map((v) => {
434
+ const n = Number(v);
435
+ if (isNaN(n))
436
+ throw new Error('non-numeric score');
437
+ return Math.max(0, Math.min(100, Math.round(n)));
438
+ });
439
+ const scores = entries.map((entry, i) => {
440
+ entry.score = numericScores[i];
441
+ return {
442
+ scorerId: 'llm',
443
+ targetId: entry.memberId,
444
+ score: numericScores[i],
445
+ weight: 1.0,
446
+ };
447
+ });
448
+ return scores;
449
+ }
450
+ catch {
451
+ return null;
452
+ }
453
+ }
454
+ /**
455
+ * Heuristic cross-scoring fallback: scores based on response structure.
456
+ */
457
+ heuristicCrossScore(session) {
458
+ const scores = [];
459
+ const entries = session.deliberations;
460
+ for (const entry of entries) {
461
+ // Simple scoring based on response quality heuristics
462
+ let score = 50; // Base score
463
+ // Longer responses suggest more depth
464
+ if (entry.response.length > 500)
465
+ score += 15;
466
+ else if (entry.response.length > 200)
467
+ score += 10;
468
+ else if (entry.response.length < 50)
469
+ score -= 10;
470
+ // Structured responses (headers, lists, code blocks)
471
+ if (entry.response.includes('```'))
472
+ score += 10;
473
+ if (entry.response.match(/^[\-\*] /m))
474
+ score += 5;
475
+ if (entry.response.match(/^#+\s/m))
476
+ score += 5;
477
+ // Error responses get penalized
478
+ if (entry.response.startsWith('Error:'))
479
+ score = 10;
480
+ entry.score = Math.max(0, Math.min(100, score));
481
+ scores.push({
482
+ scorerId: 'system',
483
+ targetId: entry.memberId,
484
+ score: entry.score,
485
+ weight: 1.0,
486
+ });
487
+ }
488
+ return scores;
489
+ }
490
+ /**
491
+ * Cross-score deliberations (sync fallback for non-competitive callers).
492
+ */
493
+ crossScore(session) {
494
+ return this.heuristicCrossScore(session);
495
+ }
496
+ /**
497
+ * Async cross-scoring: tries LLM evaluation first, falls back to heuristics.
498
+ */
499
+ async crossScoreAsync(session, cwd) {
500
+ const llmScores = await this.llmCrossScore(session, cwd);
501
+ if (llmScores)
502
+ return llmScores;
503
+ return this.heuristicCrossScore(session);
504
+ }
505
+ /**
506
+ * Select the winner based on scores
507
+ */
508
+ selectWinner(session) {
509
+ if (session.deliberations.length === 0)
510
+ return null;
511
+ return session.deliberations.reduce((best, entry) => {
512
+ const memberWeight = session.config.members.find(m => m.id === entry.memberId)?.weight || 1.0;
513
+ const weightedScore = (entry.score || 0) * memberWeight;
514
+ const bestWeightedScore = (best.score || 0) * (session.config.members.find(m => m.id === best.memberId)?.weight || 1.0);
515
+ return weightedScore > bestWeightedScore ? entry : best;
516
+ });
517
+ }
518
+ /**
519
+ * Apply tie-breaker when consensus fails
520
+ */
521
+ applyTieBreaker(session) {
522
+ const { tieBreaker, designatedBreaker, members } = session.config;
523
+ const entries = session.deliberations;
524
+ switch (tieBreaker) {
525
+ case 'scoring': {
526
+ // Use cross-scoring
527
+ const scores = this.crossScore(session);
528
+ return this.selectWinner(session);
529
+ }
530
+ case 'designated': {
531
+ const designated = designatedBreaker || members[0]?.id;
532
+ return entries.find(e => e.memberId === designated) || entries[0] || null;
533
+ }
534
+ case 'voting': {
535
+ // Use existing votes
536
+ return entries.reduce((best, entry) => (!best || (entry.votes || 0) > (best.votes || 0) ? entry : best), null);
537
+ }
538
+ case 'user':
539
+ default:
540
+ // Can't resolve automatically - return highest scored
541
+ return this.selectWinner(session);
542
+ }
543
+ }
544
+ /**
545
+ * Format session status for display
546
+ */
547
+ formatSessionStatus(session) {
548
+ const lines = [
549
+ `Coordination: ${session.id.slice(0, 8)}`,
550
+ `Mode: ${session.config.mode}`,
551
+ `Status: ${session.status}`,
552
+ `Agents: ${session.config.members.map(m => `${m.name} (${m.agent})`).join(', ')}`,
553
+ `Round: ${session.round}`,
554
+ ];
555
+ if (session.deliberations.length > 0) {
556
+ lines.push(`Deliberations: ${session.deliberations.length}`);
557
+ for (const d of session.deliberations) {
558
+ const scoreStr = d.score !== undefined ? ` [score: ${d.score}]` : '';
559
+ const voteStr = d.votes !== undefined ? ` [votes: ${d.votes}]` : '';
560
+ const winner = session.winnerId === d.memberId ? ' \u2605' : '';
561
+ lines.push(` ${d.memberName}: ${d.response.slice(0, 60)}...${scoreStr}${voteStr}${winner}`);
562
+ }
563
+ }
564
+ if (session.error) {
565
+ lines.push(`Error: ${session.error}`);
566
+ }
567
+ return lines.join('\n');
568
+ }
569
+ /**
570
+ * Get available templates
571
+ */
572
+ getTemplates() {
573
+ return Object.values(COUNCIL_TEMPLATES);
574
+ }
575
+ /**
576
+ * Reset all sessions
577
+ */
578
+ reset() {
579
+ this.sessions.clear();
580
+ }
581
+ }
582
+ /**
583
+ * Singleton council manager instance
584
+ */
585
+ export const councilManager = new CouncilManager();
586
+ //# sourceMappingURL=council.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"council.js","sourceRoot":"","sources":["../../src/agents/council.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Calliope Agents — Decomposer
3
+ *
4
+ * Decomposes a high-level task into subtasks using the overseer agent.
5
+ * Supports parallel, sequential, map-reduce, and pipeline strategies.
6
+ */
7
+ import type { SubAgentType } from './types.js';
8
+ import type { DecompositionStrategy, SwarmSubtask } from './swarm-types.js';
9
+ /**
10
+ * Build the decomposition prompt for the overseer
11
+ */
12
+ export declare function buildDecompositionPrompt(task: string, strategy: DecompositionStrategy, workerAgent: SubAgentType): string;
13
+ /**
14
+ * Parse the decomposition response from the overseer
15
+ */
16
+ export declare function parseDecompositionResponse(response: string, workerAgent: SubAgentType, maxRetries: number): SwarmSubtask[];
17
+ /**
18
+ * Resolve numeric dependency indices to actual subtask IDs
19
+ */
20
+ export declare function resolveDependencies(subtasks: SwarmSubtask[]): SwarmSubtask[];
21
+ /**
22
+ * Get subtasks that are ready to execute (dependencies met)
23
+ */
24
+ export declare function getReadySubtasks(subtasks: SwarmSubtask[]): SwarmSubtask[];
25
+ /**
26
+ * Check if all subtasks are done (completed or permanently failed)
27
+ */
28
+ export declare function allSubtasksDone(subtasks: SwarmSubtask[]): boolean;
29
+ /**
30
+ * Check if any subtask permanently failed
31
+ */
32
+ export declare function hasFailedSubtasks(subtasks: SwarmSubtask[]): boolean;
33
+ //# sourceMappingURL=decomposer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decomposer.d.ts","sourceRoot":"","sources":["../../src/agents/decomposer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAY5E;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,qBAAqB,EAC/B,WAAW,EAAE,YAAY,GACxB,MAAM,CAyCR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,MAAM,GACjB,YAAY,EAAE,CA4ChB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAa5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAWzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAKjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAInE"}