flock-core 0.1.1__py3-none-any.whl → 0.2.1__py3-none-any.whl

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.

Potentially problematic release.


This version of flock-core might be problematic. Click here for more details.

Files changed (405) hide show
  1. flock/__init__.py +1 -4
  2. flock/agents/__init__.py +0 -3
  3. flock/agents/batch_agent.py +140 -175
  4. flock/agents/loop_agent.py +117 -178
  5. flock/agents/trigger_agent.py +113 -191
  6. flock/agents/user_agent.py +145 -230
  7. flock/core/__init__.py +1 -7
  8. flock/core/context/context.py +211 -0
  9. flock/core/context/context_manager.py +34 -0
  10. flock/core/{context_vars.py → context/context_vars.py} +8 -6
  11. flock/core/execution/local_executor.py +27 -0
  12. flock/core/execution/temporal_executor.py +40 -0
  13. flock/core/flock.py +199 -208
  14. flock/core/flock_agent.py +492 -0
  15. flock/core/logging/__init__.py +2 -18
  16. flock/core/logging/formatters/base_formatter.py +36 -0
  17. flock/core/logging/formatters/formatter_factory.py +38 -0
  18. flock/core/logging/formatters/pprint_formatter.py +18 -0
  19. flock/core/logging/formatters/rich_formatters.py +132 -0
  20. flock/core/logging/formatters/theme_builder.py +480 -0
  21. flock/core/logging/formatters/themed_formatter.py +442 -0
  22. flock/core/logging/logging.py +123 -0
  23. flock/core/mixin/dspy_integration.py +171 -0
  24. flock/core/mixin/prompt_parser.py +125 -0
  25. flock/core/registry/agent_registry.py +103 -0
  26. flock/core/tools/basic_tools.py +273 -98
  27. flock/core/tools/dev_tools/github.py +161 -0
  28. flock/core/util/cli_helper.py +21 -0
  29. flock/core/util/input_resolver.py +156 -0
  30. flock/core/util/serializable.py +93 -0
  31. flock/themes/3024-day.toml +39 -0
  32. flock/themes/3024-night.toml +77 -0
  33. flock/themes/aardvark-blue.toml +77 -0
  34. flock/themes/abernathy.toml +77 -0
  35. flock/themes/adventure.toml +77 -0
  36. flock/themes/adventuretime.toml +77 -0
  37. flock/themes/afterglow.toml +77 -0
  38. flock/themes/alabaster.toml +77 -0
  39. flock/themes/alienblood.toml +77 -0
  40. flock/themes/andromeda.toml +77 -0
  41. flock/themes/apple-classic.toml +77 -0
  42. flock/themes/apple-system-colors.toml +77 -0
  43. flock/themes/arcoiris.toml +77 -0
  44. flock/themes/argonaut copy.toml +77 -0
  45. flock/themes/argonaut.toml +39 -0
  46. flock/themes/arthur.toml +77 -0
  47. flock/themes/ateliersulphurpool.toml +77 -0
  48. flock/themes/atom.toml +38 -0
  49. flock/themes/atom_test.toml +65 -0
  50. flock/themes/atomonelight.toml +77 -0
  51. flock/themes/aurora.toml +77 -0
  52. flock/themes/ayu copy.toml +77 -0
  53. flock/themes/ayu-light.toml +77 -0
  54. flock/themes/ayu-mirage.toml +77 -0
  55. flock/themes/ayu.toml +39 -0
  56. flock/themes/banana-blueberry.toml +77 -0
  57. flock/themes/batman.toml +77 -0
  58. flock/themes/belafonte-day.toml +77 -0
  59. flock/themes/belafonte-night.toml +77 -0
  60. flock/themes/birdsofparadise.toml +77 -0
  61. flock/themes/blazer.toml +77 -0
  62. flock/themes/blue-matrix.toml +77 -0
  63. flock/themes/blueberrypie.toml +77 -0
  64. flock/themes/bluedolphin.toml +77 -0
  65. flock/themes/blulocodark.toml +77 -0
  66. flock/themes/blulocolight.toml +77 -0
  67. flock/themes/borland.toml +77 -0
  68. flock/themes/breeze.toml +77 -0
  69. flock/themes/bright-lights.toml +77 -0
  70. flock/themes/broadcast.toml +77 -0
  71. flock/themes/brogrammer.toml +77 -0
  72. flock/themes/builtin-dark.toml +77 -0
  73. flock/themes/builtin-light.toml +77 -0
  74. flock/themes/builtin-pastel-dark.toml +77 -0
  75. flock/themes/builtin-solarized-dark.toml +77 -0
  76. flock/themes/builtin-solarized-light.toml +77 -0
  77. flock/themes/builtin-tango-dark.toml +77 -0
  78. flock/themes/builtin-tango-light.toml +77 -0
  79. flock/themes/c64.toml +77 -0
  80. flock/themes/calamity.toml +77 -0
  81. flock/themes/catppuccin-frappe.toml +77 -0
  82. flock/themes/catppuccin-latte.toml +77 -0
  83. flock/themes/catppuccin-macchiato.toml +77 -0
  84. flock/themes/catppuccin-mocha.toml +77 -0
  85. flock/themes/cga.toml +77 -0
  86. flock/themes/chalk.toml +77 -0
  87. flock/themes/chalkboard.toml +77 -0
  88. flock/themes/challengerdeep.toml +77 -0
  89. flock/themes/chester.toml +77 -0
  90. flock/themes/ciapre.toml +77 -0
  91. flock/themes/clrs.toml +77 -0
  92. flock/themes/cobalt-neon.toml +77 -0
  93. flock/themes/cobalt2.toml +77 -0
  94. flock/themes/coffee-theme.toml +77 -0
  95. flock/themes/crayonponyfish.toml +77 -0
  96. flock/themes/cutiepro.toml +77 -0
  97. flock/themes/cyberdyne.toml +77 -0
  98. flock/themes/cyberpunk.toml +77 -0
  99. flock/themes/cyberpunkscarletprotocol.toml +77 -0
  100. flock/themes/dark+.toml +77 -0
  101. flock/themes/dark-pastel.toml +77 -0
  102. flock/themes/darkermatrix.toml +77 -0
  103. flock/themes/darkmatrix.toml +77 -0
  104. flock/themes/darkside.toml +77 -0
  105. flock/themes/dayfox.toml +77 -0
  106. flock/themes/deep.toml +77 -0
  107. flock/themes/desert.toml +77 -0
  108. flock/themes/dimidium.toml +77 -0
  109. flock/themes/dimmedmonokai.toml +77 -0
  110. flock/themes/django.toml +77 -0
  111. flock/themes/djangorebornagain.toml +77 -0
  112. flock/themes/djangosmooth.toml +77 -0
  113. flock/themes/doom-peacock.toml +77 -0
  114. flock/themes/doomone.toml +77 -0
  115. flock/themes/dotgov.toml +77 -0
  116. flock/themes/dracula+.toml +77 -0
  117. flock/themes/dracula.toml +77 -0
  118. flock/themes/duckbones.toml +77 -0
  119. flock/themes/duotone-dark.toml +77 -0
  120. flock/themes/earthsong.toml +77 -0
  121. flock/themes/elemental.toml +77 -0
  122. flock/themes/elementary.toml +77 -0
  123. flock/themes/encom.toml +77 -0
  124. flock/themes/espresso-libre.toml +77 -0
  125. flock/themes/espresso.toml +77 -0
  126. flock/themes/everblush.toml +77 -0
  127. flock/themes/fahrenheit.toml +77 -0
  128. flock/themes/fairyfloss.toml +77 -0
  129. flock/themes/farmhouse-dark.toml +77 -0
  130. flock/themes/farmhouse-light.toml +77 -0
  131. flock/themes/fideloper.toml +77 -0
  132. flock/themes/firefly-traditional.toml +77 -0
  133. flock/themes/firefoxdev.toml +77 -0
  134. flock/themes/firewatch.toml +77 -0
  135. flock/themes/fishtank.toml +77 -0
  136. flock/themes/flat.toml +77 -0
  137. flock/themes/flatland.toml +77 -0
  138. flock/themes/flexoki-dark.toml +77 -0
  139. flock/themes/flexoki-light.toml +77 -0
  140. flock/themes/floraverse.toml +77 -0
  141. flock/themes/forestblue.toml +77 -0
  142. flock/themes/framer.toml +77 -0
  143. flock/themes/frontenddelight.toml +77 -0
  144. flock/themes/funforrest.toml +77 -0
  145. flock/themes/galaxy.toml +77 -0
  146. flock/themes/galizur.toml +77 -0
  147. flock/themes/github-dark.toml +77 -0
  148. flock/themes/github.toml +77 -0
  149. flock/themes/glacier.toml +77 -0
  150. flock/themes/grape.toml +77 -0
  151. flock/themes/grass.toml +77 -0
  152. flock/themes/grey-green.toml +77 -0
  153. flock/themes/gruber-darker.toml +77 -0
  154. flock/themes/gruvboxdark.toml +77 -0
  155. flock/themes/gruvboxdarkhard.toml +77 -0
  156. flock/themes/gruvboxlight.toml +77 -0
  157. flock/themes/guezwhoz.toml +77 -0
  158. flock/themes/hacktober.toml +77 -0
  159. flock/themes/hardcore.toml +77 -0
  160. flock/themes/harper.toml +77 -0
  161. flock/themes/hax0r-blue.toml +77 -0
  162. flock/themes/hax0r-gr33n.toml +77 -0
  163. flock/themes/hax0r-r3d.toml +77 -0
  164. flock/themes/highway.toml +77 -0
  165. flock/themes/hipster-green.toml +77 -0
  166. flock/themes/hivacruz.toml +77 -0
  167. flock/themes/homebrew.toml +77 -0
  168. flock/themes/hopscotch.256.toml +77 -0
  169. flock/themes/hopscotch.toml +77 -0
  170. flock/themes/hurtado.toml +77 -0
  171. flock/themes/hybrid.toml +77 -0
  172. flock/themes/ic-green-ppl.toml +77 -0
  173. flock/themes/ic-orange-ppl.toml +77 -0
  174. flock/themes/iceberg-dark.toml +77 -0
  175. flock/themes/iceberg-light.toml +77 -0
  176. flock/themes/idea.toml +77 -0
  177. flock/themes/idletoes.toml +77 -0
  178. flock/themes/ir-black.toml +77 -0
  179. flock/themes/iterm2-dark-background.toml +77 -0
  180. flock/themes/iterm2-default.toml +77 -0
  181. flock/themes/iterm2-light-background.toml +77 -0
  182. flock/themes/iterm2-pastel-dark-background.toml +77 -0
  183. flock/themes/iterm2-smoooooth.toml +77 -0
  184. flock/themes/iterm2-solarized-dark.toml +77 -0
  185. flock/themes/iterm2-solarized-light.toml +77 -0
  186. flock/themes/iterm2-tango-dark.toml +77 -0
  187. flock/themes/iterm2-tango-light.toml +77 -0
  188. flock/themes/jackie-brown.toml +77 -0
  189. flock/themes/japanesque.toml +77 -0
  190. flock/themes/jellybeans.toml +77 -0
  191. flock/themes/jetbrains-darcula.toml +77 -0
  192. flock/themes/jubi.toml +77 -0
  193. flock/themes/kanagawabones.toml +77 -0
  194. flock/themes/kibble.toml +77 -0
  195. flock/themes/kolorit.toml +77 -0
  196. flock/themes/konsolas.toml +77 -0
  197. flock/themes/kurokula.toml +77 -0
  198. flock/themes/lab-fox.toml +77 -0
  199. flock/themes/laser.toml +77 -0
  200. flock/themes/later-this-evening.toml +77 -0
  201. flock/themes/lavandula.toml +77 -0
  202. flock/themes/liquidcarbon.toml +77 -0
  203. flock/themes/liquidcarbontransparent.toml +77 -0
  204. flock/themes/liquidcarbontransparentinverse.toml +77 -0
  205. flock/themes/lovelace.toml +77 -0
  206. flock/themes/man-page.toml +77 -0
  207. flock/themes/mariana.toml +77 -0
  208. flock/themes/material.toml +77 -0
  209. flock/themes/materialdark.toml +77 -0
  210. flock/themes/materialdarker.toml +77 -0
  211. flock/themes/materialdesigncolors.toml +77 -0
  212. flock/themes/materialocean.toml +77 -0
  213. flock/themes/mathias.toml +77 -0
  214. flock/themes/matrix.toml +77 -0
  215. flock/themes/medallion.toml +77 -0
  216. flock/themes/mellifluous.toml +77 -0
  217. flock/themes/midnight-in-mojave.toml +77 -0
  218. flock/themes/mirage.toml +77 -0
  219. flock/themes/misterioso.toml +77 -0
  220. flock/themes/molokai.toml +77 -0
  221. flock/themes/monalisa.toml +77 -0
  222. flock/themes/monokai-remastered.toml +77 -0
  223. flock/themes/monokai-soda.toml +77 -0
  224. flock/themes/monokai-vivid.toml +77 -0
  225. flock/themes/n0tch2k.toml +77 -0
  226. flock/themes/neobones-dark.toml +77 -0
  227. flock/themes/neobones-light.toml +77 -0
  228. flock/themes/neon.toml +77 -0
  229. flock/themes/neopolitan.toml +77 -0
  230. flock/themes/neutron.toml +77 -0
  231. flock/themes/night-owlish-light.toml +77 -0
  232. flock/themes/nightfox.toml +77 -0
  233. flock/themes/nightlion-v1.toml +77 -0
  234. flock/themes/nightlion-v2.toml +77 -0
  235. flock/themes/niji.toml +77 -0
  236. flock/themes/nocturnal-winter.toml +77 -0
  237. flock/themes/nord-light.toml +77 -0
  238. flock/themes/nord.toml +77 -0
  239. flock/themes/novel.toml +77 -0
  240. flock/themes/nvimdark.toml +77 -0
  241. flock/themes/nvimlight.toml +77 -0
  242. flock/themes/obsidian.toml +77 -0
  243. flock/themes/ocean.toml +77 -0
  244. flock/themes/oceanic-next.toml +77 -0
  245. flock/themes/oceanicmaterial.toml +77 -0
  246. flock/themes/ollie.toml +77 -0
  247. flock/themes/onehalfdark.toml +77 -0
  248. flock/themes/onehalflight.toml +77 -0
  249. flock/themes/operator-mono-dark.toml +77 -0
  250. flock/themes/overnight-slumber.toml +77 -0
  251. flock/themes/oxocarbon.toml +77 -0
  252. flock/themes/palenighthc.toml +77 -0
  253. flock/themes/pandora.toml +77 -0
  254. flock/themes/paraiso-dark.toml +77 -0
  255. flock/themes/paulmillr.toml +77 -0
  256. flock/themes/pencildark.toml +77 -0
  257. flock/themes/pencillight.toml +77 -0
  258. flock/themes/peppermint.toml +77 -0
  259. flock/themes/piatto-light.toml +77 -0
  260. flock/themes/pnevma.toml +77 -0
  261. flock/themes/popping-and-locking.toml +77 -0
  262. flock/themes/primary.toml +77 -0
  263. flock/themes/pro-light.toml +77 -0
  264. flock/themes/pro.toml +77 -0
  265. flock/themes/purple-rain.toml +77 -0
  266. flock/themes/purplepeter.toml +77 -0
  267. flock/themes/rapture.toml +77 -0
  268. flock/themes/raycast-dark.toml +77 -0
  269. flock/themes/raycast-light.toml +77 -0
  270. flock/themes/rebecca.toml +77 -0
  271. flock/themes/red-alert.toml +77 -0
  272. flock/themes/red-planet.toml +77 -0
  273. flock/themes/red-sands.toml +77 -0
  274. flock/themes/relaxed.toml +77 -0
  275. flock/themes/retro.toml +77 -0
  276. flock/themes/rippedcasts.toml +77 -0
  277. flock/themes/rose-pine-dawn.toml +77 -0
  278. flock/themes/rose-pine-moon.toml +77 -0
  279. flock/themes/rose-pine.toml +77 -0
  280. flock/themes/rouge-2.toml +77 -0
  281. flock/themes/royal.toml +77 -0
  282. flock/themes/ryuuko.toml +77 -0
  283. flock/themes/sakura.toml +77 -0
  284. flock/themes/scarlet-protocol.toml +77 -0
  285. flock/themes/seafoam-pastel.toml +77 -0
  286. flock/themes/seashells.toml +77 -0
  287. flock/themes/seoulbones-dark.toml +77 -0
  288. flock/themes/seoulbones-light.toml +77 -0
  289. flock/themes/seti.toml +77 -0
  290. flock/themes/shades-of-purple.toml +77 -0
  291. flock/themes/shaman.toml +77 -0
  292. flock/themes/slate.toml +77 -0
  293. flock/themes/sleepyhollow.toml +77 -0
  294. flock/themes/smyck.toml +77 -0
  295. flock/themes/snazzy.toml +77 -0
  296. flock/themes/softserver.toml +77 -0
  297. flock/themes/solarized-darcula.toml +77 -0
  298. flock/themes/solarized-dark---patched.toml +77 -0
  299. flock/themes/solarized-dark-higher-contrast.toml +77 -0
  300. flock/themes/spacedust.toml +77 -0
  301. flock/themes/spacegray-eighties-dull.toml +77 -0
  302. flock/themes/spacegray-eighties.toml +77 -0
  303. flock/themes/spacegray.toml +77 -0
  304. flock/themes/spiderman.toml +77 -0
  305. flock/themes/spring.toml +77 -0
  306. flock/themes/square.toml +77 -0
  307. flock/themes/sublette.toml +77 -0
  308. flock/themes/subliminal.toml +77 -0
  309. flock/themes/sugarplum.toml +77 -0
  310. flock/themes/sundried.toml +77 -0
  311. flock/themes/symfonic.toml +77 -0
  312. flock/themes/synthwave-everything.toml +77 -0
  313. flock/themes/synthwave.toml +77 -0
  314. flock/themes/synthwavealpha.toml +77 -0
  315. flock/themes/tango-adapted.toml +77 -0
  316. flock/themes/tango-half-adapted.toml +77 -0
  317. flock/themes/teerb.toml +77 -0
  318. flock/themes/terafox.toml +77 -0
  319. flock/themes/terminal-basic.toml +77 -0
  320. flock/themes/thayer-bright.toml +77 -0
  321. flock/themes/the-hulk.toml +77 -0
  322. flock/themes/tinacious-design-(dark).toml +77 -0
  323. flock/themes/tinacious-design-(light).toml +77 -0
  324. flock/themes/tokyonight-day.toml +77 -0
  325. flock/themes/tokyonight-storm.toml +77 -0
  326. flock/themes/tokyonight.toml +77 -0
  327. flock/themes/tomorrow-night-blue.toml +77 -0
  328. flock/themes/tomorrow-night-bright.toml +77 -0
  329. flock/themes/tomorrow-night-burns.toml +77 -0
  330. flock/themes/tomorrow-night-eighties.toml +77 -0
  331. flock/themes/tomorrow-night.toml +77 -0
  332. flock/themes/tomorrow.toml +77 -0
  333. flock/themes/toychest.toml +77 -0
  334. flock/themes/treehouse.toml +77 -0
  335. flock/themes/twilight.toml +77 -0
  336. flock/themes/ubuntu.toml +77 -0
  337. flock/themes/ultradark.toml +77 -0
  338. flock/themes/ultraviolent.toml +77 -0
  339. flock/themes/underthesea.toml +77 -0
  340. flock/themes/unikitty.toml +77 -0
  341. flock/themes/urple.toml +77 -0
  342. flock/themes/vaughn.toml +77 -0
  343. flock/themes/vesper.toml +77 -0
  344. flock/themes/vibrantink.toml +77 -0
  345. flock/themes/vimbones.toml +77 -0
  346. flock/themes/violet-dark.toml +77 -0
  347. flock/themes/violet-light.toml +77 -0
  348. flock/themes/warmneon.toml +77 -0
  349. flock/themes/wez.toml +77 -0
  350. flock/themes/whimsy.toml +77 -0
  351. flock/themes/wildcherry.toml +77 -0
  352. flock/themes/wilmersdorf.toml +77 -0
  353. flock/themes/wombat.toml +77 -0
  354. flock/themes/wryan.toml +77 -0
  355. flock/themes/xcodedark.toml +77 -0
  356. flock/themes/xcodedarkhc.toml +77 -0
  357. flock/themes/xcodelight.toml +77 -0
  358. flock/themes/xcodelighthc.toml +77 -0
  359. flock/themes/xcodewwdc.toml +77 -0
  360. flock/themes/zenbones-dark.toml +77 -0
  361. flock/themes/zenbones-light.toml +77 -0
  362. flock/themes/zenbones.toml +77 -0
  363. flock/themes/zenburn.toml +77 -0
  364. flock/themes/zenburned.toml +77 -0
  365. flock/themes/zenwritten-dark.toml +77 -0
  366. flock/themes/zenwritten-light.toml +77 -0
  367. flock/workflow/activities.py +117 -115
  368. flock/workflow/agent_activities.py +24 -26
  369. flock/workflow/temporal_setup.py +38 -37
  370. flock/workflow/workflow.py +58 -53
  371. flock_core-0.2.1.dist-info/METADATA +287 -0
  372. flock_core-0.2.1.dist-info/RECORD +375 -0
  373. {flock_core-0.1.1.dist-info → flock_core-0.2.1.dist-info}/licenses/LICENSE +21 -21
  374. flock/agents/declarative_agent.py +0 -166
  375. flock/app/components/__init__.py +0 -14
  376. flock/app/components/charts/agent_workflow.py +0 -14
  377. flock/app/components/charts/core_architecture.py +0 -14
  378. flock/app/components/charts/tool_system.py +0 -14
  379. flock/app/components/history_grid.py +0 -168
  380. flock/app/components/history_grid_alt.py +0 -189
  381. flock/app/components/sidebar.py +0 -19
  382. flock/app/components/theme.py +0 -9
  383. flock/app/components/util.py +0 -18
  384. flock/app/hive_app.py +0 -118
  385. flock/app/html/d3.html +0 -179
  386. flock/app/modules/__init__.py +0 -12
  387. flock/app/modules/about.py +0 -17
  388. flock/app/modules/agent_detail.py +0 -70
  389. flock/app/modules/agent_list.py +0 -59
  390. flock/app/modules/playground.py +0 -322
  391. flock/app/modules/settings.py +0 -96
  392. flock/core/agent.py +0 -150
  393. flock/core/agent_registry.py +0 -162
  394. flock/core/context.py +0 -279
  395. flock/core/handoff/handoff_base.py +0 -12
  396. flock/core/logging/error_handler.py +0 -84
  397. flock/core/logging/formatters.py +0 -122
  398. flock/core/logging/handlers.py +0 -117
  399. flock/core/logging/logger.py +0 -107
  400. flock/core/serializable.py +0 -206
  401. flock_core-0.1.1.dist-info/METADATA +0 -449
  402. flock_core-0.1.1.dist-info/RECORD +0 -48
  403. flock_core-0.1.1.dist-info/entry_points.txt +0 -2
  404. /flock/{core/config/declarative_agent_config.py → workflow/__init__.py} +0 -0
  405. {flock_core-0.1.1.dist-info → flock_core-0.2.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,77 @@
1
+ [rich]
2
+ panel_style = "on #f0edec"
3
+ table_header_style = "bold #2c363c on #cbd9e3"
4
+ table_title_style = "bold #2c363c"
5
+ table_border_style = "#1d5573"
6
+ panel_border_style = "#1d5573"
7
+ column_output = "bold #2c363c"
8
+ column_value = "#2c363c"
9
+ bright_black = "#cfc1ba"
10
+ bright_blue = "#1d5573"
11
+ bright_cyan = "#2b747c"
12
+ bright_green = "#3f5a22"
13
+ bright_magenta = "#7b3b70"
14
+ bright_red = "#94253e"
15
+ bright_white = "#4f5e68"
16
+ bright_yellow = "#803d1c"
17
+ normal_black = "#f0edec"
18
+ normal_blue = "#286486"
19
+ normal_cyan = "#3b8992"
20
+ normal_green = "#4f6c31"
21
+ normal_magenta = "#88507d"
22
+ normal_red = "#a8334c"
23
+ normal_white = "#2c363c"
24
+ normal_yellow = "#944927"
25
+ cursor_cursor = "#2c363c"
26
+ cursor_text = "#f0edec"
27
+ table_show_lines = true
28
+ table_box = "MINIMAL"
29
+ panel_padding = [ 1, 2,]
30
+ panel_title_align = "left"
31
+ table_row_styles = [ "", "italic",]
32
+ table_safe_box = true
33
+ table_padding = [ 0, 1,]
34
+ table_collapse_padding = false
35
+ table_pad_edge = true
36
+ table_expand = false
37
+ table_show_footer = false
38
+ table_show_edge = true
39
+ table_leading = 0
40
+ table_style = "none"
41
+ table_footer_style = "none"
42
+ table_caption_style = "none"
43
+ table_title_justify = "center"
44
+ table_caption_justify = "center"
45
+ table_highlight = false
46
+
47
+ [colors.bright]
48
+ black = "#cfc1ba"
49
+ blue = "#1d5573"
50
+ cyan = "#2b747c"
51
+ green = "#3f5a22"
52
+ magenta = "#7b3b70"
53
+ red = "#94253e"
54
+ white = "#4f5e68"
55
+ yellow = "#803d1c"
56
+
57
+ [colors.cursor]
58
+ cursor = "#2c363c"
59
+ text = "#f0edec"
60
+
61
+ [colors.normal]
62
+ black = "#f0edec"
63
+ blue = "#286486"
64
+ cyan = "#3b8992"
65
+ green = "#4f6c31"
66
+ magenta = "#88507d"
67
+ red = "#a8334c"
68
+ white = "#2c363c"
69
+ yellow = "#944927"
70
+
71
+ [colors.primary]
72
+ background = "#f0edec"
73
+ foreground = "#2c363c"
74
+
75
+ [colors.selection]
76
+ background = "#cbd9e3"
77
+ text = "#2c363c"
@@ -0,0 +1,77 @@
1
+ [rich]
2
+ panel_style = "on #3f3f3f"
3
+ table_header_style = "bold #c2d87a on #21322f"
4
+ table_title_style = "bold #dcdccc"
5
+ table_border_style = "#94bff3"
6
+ panel_border_style = "#94bff3"
7
+ column_output = "bold #dcdccc"
8
+ column_value = "#dcdccc"
9
+ bright_black = "#709080"
10
+ bright_blue = "#94bff3"
11
+ bright_cyan = "#93e0e3"
12
+ bright_green = "#c3bf9f"
13
+ bright_magenta = "#ec93d3"
14
+ bright_red = "#dca3a3"
15
+ bright_white = "#ffffff"
16
+ bright_yellow = "#e0cf9f"
17
+ normal_black = "#4d4d4d"
18
+ normal_blue = "#506070"
19
+ normal_cyan = "#8cd0d3"
20
+ normal_green = "#60b48a"
21
+ normal_magenta = "#dc8cc3"
22
+ normal_red = "#705050"
23
+ normal_white = "#dcdccc"
24
+ normal_yellow = "#f0dfaf"
25
+ cursor_cursor = "#73635a"
26
+ cursor_text = "#000000"
27
+ table_show_lines = false
28
+ table_box = "HEAVY"
29
+ panel_padding = [ 1, 2,]
30
+ panel_title_align = "center"
31
+ table_row_styles = [ "", "italic",]
32
+ table_safe_box = true
33
+ table_padding = [ 0, 1,]
34
+ table_collapse_padding = false
35
+ table_pad_edge = true
36
+ table_expand = false
37
+ table_show_footer = false
38
+ table_show_edge = true
39
+ table_leading = 0
40
+ table_style = "none"
41
+ table_footer_style = "none"
42
+ table_caption_style = "none"
43
+ table_title_justify = "center"
44
+ table_caption_justify = "center"
45
+ table_highlight = false
46
+
47
+ [colors.bright]
48
+ black = "#709080"
49
+ blue = "#94bff3"
50
+ cyan = "#93e0e3"
51
+ green = "#c3bf9f"
52
+ magenta = "#ec93d3"
53
+ red = "#dca3a3"
54
+ white = "#ffffff"
55
+ yellow = "#e0cf9f"
56
+
57
+ [colors.cursor]
58
+ cursor = "#73635a"
59
+ text = "#000000"
60
+
61
+ [colors.normal]
62
+ black = "#4d4d4d"
63
+ blue = "#506070"
64
+ cyan = "#8cd0d3"
65
+ green = "#60b48a"
66
+ magenta = "#dc8cc3"
67
+ red = "#705050"
68
+ white = "#dcdccc"
69
+ yellow = "#f0dfaf"
70
+
71
+ [colors.primary]
72
+ background = "#3f3f3f"
73
+ foreground = "#dcdccc"
74
+
75
+ [colors.selection]
76
+ background = "#21322f"
77
+ text = "#c2d87a"
@@ -0,0 +1,77 @@
1
+ [rich]
2
+ panel_style = "on #404040"
3
+ table_header_style = "bold #f0e4cf on #746956"
4
+ table_title_style = "bold #f0e4cf"
5
+ table_border_style = "#61abda"
6
+ panel_border_style = "#61abda"
7
+ column_output = "bold #f0e4cf"
8
+ column_value = "#f0e4cf"
9
+ bright_black = "#625a5b"
10
+ bright_blue = "#61abda"
11
+ bright_cyan = "#65b8c1"
12
+ bright_green = "#8bae68"
13
+ bright_magenta = "#cf86c1"
14
+ bright_red = "#ec8685"
15
+ bright_white = "#c0ab86"
16
+ bright_yellow = "#d68c67"
17
+ normal_black = "#404040"
18
+ normal_blue = "#6099c0"
19
+ normal_cyan = "#66a5ad"
20
+ normal_green = "#819b69"
21
+ normal_magenta = "#b279a7"
22
+ normal_red = "#e3716e"
23
+ normal_white = "#f0e4cf"
24
+ normal_yellow = "#b77e64"
25
+ cursor_cursor = "#f3eadb"
26
+ cursor_text = "#404040"
27
+ table_show_lines = true
28
+ table_box = "HEAVY"
29
+ panel_padding = [ 1, 2,]
30
+ panel_title_align = "center"
31
+ table_row_styles = [ "", "dim",]
32
+ table_safe_box = true
33
+ table_padding = [ 0, 1,]
34
+ table_collapse_padding = false
35
+ table_pad_edge = true
36
+ table_expand = false
37
+ table_show_footer = false
38
+ table_show_edge = true
39
+ table_leading = 0
40
+ table_style = "none"
41
+ table_footer_style = "none"
42
+ table_caption_style = "none"
43
+ table_title_justify = "center"
44
+ table_caption_justify = "center"
45
+ table_highlight = false
46
+
47
+ [colors.bright]
48
+ black = "#625a5b"
49
+ blue = "#61abda"
50
+ cyan = "#65b8c1"
51
+ green = "#8bae68"
52
+ magenta = "#cf86c1"
53
+ red = "#ec8685"
54
+ white = "#c0ab86"
55
+ yellow = "#d68c67"
56
+
57
+ [colors.cursor]
58
+ cursor = "#f3eadb"
59
+ text = "#404040"
60
+
61
+ [colors.normal]
62
+ black = "#404040"
63
+ blue = "#6099c0"
64
+ cyan = "#66a5ad"
65
+ green = "#819b69"
66
+ magenta = "#b279a7"
67
+ red = "#e3716e"
68
+ white = "#f0e4cf"
69
+ yellow = "#b77e64"
70
+
71
+ [colors.primary]
72
+ background = "#404040"
73
+ foreground = "#f0e4cf"
74
+
75
+ [colors.selection]
76
+ background = "#746956"
77
+ text = "#f0e4cf"
@@ -0,0 +1,77 @@
1
+ [rich]
2
+ panel_style = "on #191919"
3
+ table_header_style = "bold #bbbbbb on #404040"
4
+ table_title_style = "bold #bbbbbb"
5
+ table_border_style = "#61abda"
6
+ panel_border_style = "#61abda"
7
+ column_output = "bold #bbbbbb"
8
+ column_value = "#bbbbbb"
9
+ bright_black = "#3d3839"
10
+ bright_blue = "#61abda"
11
+ bright_cyan = "#65b8c1"
12
+ bright_green = "#8bae68"
13
+ bright_magenta = "#cf86c1"
14
+ bright_red = "#e8838f"
15
+ bright_white = "#8e8e8e"
16
+ bright_yellow = "#d68c67"
17
+ normal_black = "#191919"
18
+ normal_blue = "#6099c0"
19
+ normal_cyan = "#66a5ad"
20
+ normal_green = "#819b69"
21
+ normal_magenta = "#b279a7"
22
+ normal_red = "#de6e7c"
23
+ normal_white = "#bbbbbb"
24
+ normal_yellow = "#b77e64"
25
+ cursor_cursor = "#c9c9c9"
26
+ cursor_text = "#191919"
27
+ table_show_lines = true
28
+ table_box = "HEAVY"
29
+ panel_padding = [ 1, 2,]
30
+ panel_title_align = "right"
31
+ table_row_styles = [ "", "underline",]
32
+ table_safe_box = true
33
+ table_padding = [ 0, 1,]
34
+ table_collapse_padding = false
35
+ table_pad_edge = true
36
+ table_expand = false
37
+ table_show_footer = false
38
+ table_show_edge = true
39
+ table_leading = 0
40
+ table_style = "none"
41
+ table_footer_style = "none"
42
+ table_caption_style = "none"
43
+ table_title_justify = "center"
44
+ table_caption_justify = "center"
45
+ table_highlight = false
46
+
47
+ [colors.bright]
48
+ black = "#3d3839"
49
+ blue = "#61abda"
50
+ cyan = "#65b8c1"
51
+ green = "#8bae68"
52
+ magenta = "#cf86c1"
53
+ red = "#e8838f"
54
+ white = "#8e8e8e"
55
+ yellow = "#d68c67"
56
+
57
+ [colors.cursor]
58
+ cursor = "#c9c9c9"
59
+ text = "#191919"
60
+
61
+ [colors.normal]
62
+ black = "#191919"
63
+ blue = "#6099c0"
64
+ cyan = "#66a5ad"
65
+ green = "#819b69"
66
+ magenta = "#b279a7"
67
+ red = "#de6e7c"
68
+ white = "#bbbbbb"
69
+ yellow = "#b77e64"
70
+
71
+ [colors.primary]
72
+ background = "#191919"
73
+ foreground = "#bbbbbb"
74
+
75
+ [colors.selection]
76
+ background = "#404040"
77
+ text = "#bbbbbb"
@@ -0,0 +1,77 @@
1
+ [rich]
2
+ panel_style = "on #eeeeee"
3
+ table_header_style = "bold #353535 on #d7d7d7"
4
+ table_title_style = "bold #353535"
5
+ table_border_style = "#1d5573"
6
+ panel_border_style = "#1d5573"
7
+ column_output = "bold #353535"
8
+ column_value = "#353535"
9
+ bright_black = "#c6c3c3"
10
+ bright_blue = "#1d5573"
11
+ bright_cyan = "#2b747c"
12
+ bright_green = "#3f5a22"
13
+ bright_magenta = "#7b3b70"
14
+ bright_red = "#94253e"
15
+ bright_white = "#5c5c5c"
16
+ bright_yellow = "#803d1c"
17
+ normal_black = "#eeeeee"
18
+ normal_blue = "#286486"
19
+ normal_cyan = "#3b8992"
20
+ normal_green = "#4f6c31"
21
+ normal_magenta = "#88507d"
22
+ normal_red = "#a8334c"
23
+ normal_white = "#353535"
24
+ normal_yellow = "#944927"
25
+ cursor_cursor = "#353535"
26
+ cursor_text = "#eeeeee"
27
+ table_show_lines = false
28
+ table_box = "SQUARE"
29
+ panel_padding = [ 1, 2,]
30
+ panel_title_align = "center"
31
+ table_row_styles = [ "", "dim",]
32
+ table_safe_box = true
33
+ table_padding = [ 0, 1,]
34
+ table_collapse_padding = false
35
+ table_pad_edge = true
36
+ table_expand = false
37
+ table_show_footer = false
38
+ table_show_edge = true
39
+ table_leading = 0
40
+ table_style = "none"
41
+ table_footer_style = "none"
42
+ table_caption_style = "none"
43
+ table_title_justify = "center"
44
+ table_caption_justify = "center"
45
+ table_highlight = false
46
+
47
+ [colors.bright]
48
+ black = "#c6c3c3"
49
+ blue = "#1d5573"
50
+ cyan = "#2b747c"
51
+ green = "#3f5a22"
52
+ magenta = "#7b3b70"
53
+ red = "#94253e"
54
+ white = "#5c5c5c"
55
+ yellow = "#803d1c"
56
+
57
+ [colors.cursor]
58
+ cursor = "#353535"
59
+ text = "#eeeeee"
60
+
61
+ [colors.normal]
62
+ black = "#eeeeee"
63
+ blue = "#286486"
64
+ cyan = "#3b8992"
65
+ green = "#4f6c31"
66
+ magenta = "#88507d"
67
+ red = "#a8334c"
68
+ white = "#353535"
69
+ yellow = "#944927"
70
+
71
+ [colors.primary]
72
+ background = "#eeeeee"
73
+ foreground = "#353535"
74
+
75
+ [colors.selection]
76
+ background = "#d7d7d7"
77
+ text = "#353535"
@@ -1,115 +1,117 @@
1
- """Defines Temporal activities for running a chain of agents."""
2
-
3
- from datetime import datetime
4
-
5
- from temporalio import activity
6
-
7
- from flock.core.agent import Agent
8
- from flock.core.agent_registry import Registry
9
- from flock.core.context import FlockContext
10
- from flock.core.context_vars import FLOCK_CURRENT_AGENT, FLOCK_INITIAL_INPUT
11
- from flock.core.handoff.handoff_base import HandoffBase
12
- from flock.core.logging import flock_logger
13
-
14
-
15
- @activity.defn
16
- async def run_agent(context: FlockContext) -> dict:
17
- """Runs a chain of agents using the provided context.
18
-
19
- The context contains:
20
- - A state (e.g., "init_input", "current_agent", etc.),
21
- - A history of agent runs.
22
-
23
- Each agent uses the current value of the variable specified in its `input` attribute.
24
- After each run, its output is merged into the context state.
25
- The default handoff behavior is to fetch the next agent's input automatically from the context.
26
- """
27
- registry = Registry()
28
- current_agent_name = context.get_variable(FLOCK_CURRENT_AGENT)
29
- flock_logger.info(f"Starting agent chain with initial agent", agent=current_agent_name)
30
-
31
- agent = registry.get_agent(current_agent_name)
32
- if not agent:
33
- flock_logger.error(f"Agent not found", agent=current_agent_name)
34
- return {"error": f"Agent '{current_agent_name}' not found."}
35
-
36
- while agent:
37
- # Determine the input for this agent.
38
- # (Preferably, the agent's input key is used; otherwise "init_input" is assumed.)
39
- agent_input = (
40
- context.get_variable(agent.input)
41
- if getattr(agent, "input", None)
42
- else context.get_variable(FLOCK_INITIAL_INPUT)
43
- )
44
- flock_logger.info(
45
- "Determined agent input", agent=agent.name, input_source=getattr(agent, "input", "FLOCK_INITIAL_INPUT")
46
- )
47
-
48
- # Prepare a deep copy of the state for the agent's run.
49
- local_context = FlockContext.from_dict(context.to_dict())
50
- local_context.set_variable(
51
- f"{agent.name}.{agent.input}", agent_input
52
- ) # ensure the agent's expected input is set
53
-
54
- # Execute the agent.
55
- flock_logger.info("Executing agent", agent=agent.name)
56
- result = await agent.run(local_context)
57
- flock_logger.info("Agent execution completed", agent=agent.name)
58
-
59
- # If no handoff is defined, return the result.
60
- if not agent.hand_off:
61
- # Record the agent's execution.
62
- context.record(agent.name, result, timestamp=datetime.now(), hand_off=None)
63
- flock_logger.info("No handoff defined, completing chain", agent=agent.name)
64
- return result
65
-
66
- # Determine the next agent.
67
- if callable(agent.hand_off):
68
- # The handoff function may override the default behavior:
69
- # it can explicitly return a dict with "next_agent" and optionally "input"
70
- flock_logger.info("Executing handoff function", agent=agent.name)
71
- handoff_data: HandoffBase = agent.hand_off(context, result)
72
- if isinstance(handoff_data.next_agent, Agent):
73
- next_agent_name = handoff_data.next_agent.name
74
- else:
75
- next_agent_name = handoff_data.next_agent
76
-
77
- # Use the provided new input if present, otherwise let the context update be automatic.
78
- if handoff_data.input:
79
- context.state["init_input"] = handoff_data["input"]
80
- flock_logger.debug("Using handoff-provided input", agent=agent.name)
81
- if handoff_data.context_params:
82
- context.state.update(handoff_data.context_params)
83
- flock_logger.debug("Updated context with handoff params", agent=agent.name)
84
- elif isinstance(agent.hand_off, str | Agent):
85
- next_agent_name = agent.hand_off if isinstance(agent.hand_off, str) else agent.hand_off.name
86
-
87
- else:
88
- return {"error": "Unsupported hand_off type."}
89
- context.record(agent.name, result, timestamp=datetime.now(), hand_off=next_agent_name)
90
- # Update the current agent and prepare the next input automatically.
91
- next_agent = registry.get_agent(next_agent_name)
92
- if not next_agent:
93
- flock_logger.error("Next agent not found", agent=next_agent_name)
94
- return {"error": f"Next agent '{next_agent_name}' not found."}
95
-
96
- context.state["current_agent"] = next_agent.name
97
- # By default, the next input is determined from the current state using next_input_for().
98
- context.state["init_input"] = context.next_input_for(next_agent)
99
- flock_logger.info("Handing off to next agent", current=agent.name, next=next_agent.name)
100
- agent = next_agent
101
-
102
- # If the loop ever terminates without a final result, return the latest state value.
103
- flock_logger.info("Chain completed, returning final state")
104
- return context.get_variable("init_input")
105
-
106
-
107
- @activity.defn
108
- async def get_next_agent(name: str) -> Agent | None:
109
- """Retrieves the agent with the given name from the registry."""
110
- flock_logger.debug("Looking up next agent", agent=name)
111
- registry = Registry()
112
- agent = registry.get_agent(name)
113
- if not agent:
114
- flock_logger.warning("Next agent not found", agent=name)
115
- return agent
1
+ """Defines Temporal activities for running a chain of agents."""
2
+
3
+ from datetime import datetime
4
+
5
+ from temporalio import activity
6
+
7
+ from flock.core.context.context import FlockContext
8
+ from flock.core.context.context_vars import FLOCK_CURRENT_AGENT
9
+ from flock.core.flock_agent import FlockAgent, HandoffBase
10
+ from flock.core.logging.formatters.base_formatter import FormatterOptions
11
+ from flock.core.logging.formatters.formatter_factory import FormatterFactory
12
+ from flock.core.logging.logging import get_logger
13
+ from flock.core.registry.agent_registry import Registry
14
+ from flock.core.util.input_resolver import resolve_inputs
15
+
16
+ logger = get_logger("activities")
17
+
18
+
19
+ @activity.defn
20
+ async def run_agent(
21
+ context: FlockContext, output_formatter: FormatterOptions = None
22
+ ) -> dict:
23
+ """Runs a chain of agents using the provided context.
24
+
25
+ The context contains:
26
+ - A state (e.g., "init_input", "current_agent", etc.),
27
+ - A history of agent runs.
28
+
29
+ Each agent uses the current value of the variable specified in its `input` attribute.
30
+ After each run, its output is merged into the context state.
31
+ The default handoff behavior is to fetch the next agent's input automatically from the context.
32
+ """
33
+ registry = Registry()
34
+ previous_agent_name = ""
35
+ current_agent_name = context.get_variable(FLOCK_CURRENT_AGENT)
36
+ handoff_data: HandoffBase = None
37
+
38
+ logger.info("Starting agent chain", initial_agent=current_agent_name)
39
+
40
+ agent = registry.get_agent(current_agent_name)
41
+ if not agent:
42
+ logger.error("Agent not found", agent=current_agent_name)
43
+ return {"error": f"Agent '{current_agent_name}' not found."}
44
+
45
+ while agent:
46
+ # Get the inputs for the agent
47
+
48
+ agent_inputs = resolve_inputs(agent.input, context, previous_agent_name)
49
+
50
+ # Execute the agent
51
+ logger.info("Executing agent")
52
+ result = await agent.run(agent_inputs)
53
+ logger.debug("Agent execution completed")
54
+
55
+ if output_formatter:
56
+ formatter = FormatterFactory.create_formatter(output_formatter)
57
+ formatter.display(
58
+ result, agent.name, output_formatter.wait_for_input
59
+ )
60
+
61
+ # If no handoff is defined, return the result
62
+ if not agent.hand_off:
63
+ context.record(
64
+ agent.name,
65
+ result,
66
+ timestamp=datetime.now(),
67
+ hand_off=None,
68
+ called_from=previous_agent_name,
69
+ )
70
+ logger.info("No handoff defined, completing chain")
71
+ return result
72
+
73
+ # Determine the next agent
74
+ handoff_data = HandoffBase()
75
+ if callable(agent.hand_off):
76
+ logger.debug("Executing handoff function")
77
+ handoff_data = agent.hand_off(context, result)
78
+ if isinstance(handoff_data.next_agent, FlockAgent):
79
+ handoff_data.next_agent = handoff_data.next_agent.name
80
+
81
+ elif isinstance(agent.hand_off, str | FlockAgent):
82
+ handoff_data.next_agent = (
83
+ agent.hand_off
84
+ if isinstance(agent.hand_off, str)
85
+ else agent.hand_off.name
86
+ )
87
+ else:
88
+ logger.error("Unsupported hand_off type")
89
+ return {"error": "Unsupported hand_off type."}
90
+
91
+ context.record(
92
+ agent.name,
93
+ result,
94
+ timestamp=datetime.now().isoformat(),
95
+ hand_off=handoff_data,
96
+ called_from=previous_agent_name,
97
+ )
98
+ previous_agent_name = agent.name
99
+
100
+ # Update the current agent and prepare the next input automatically
101
+ try:
102
+ agent = registry.get_agent(handoff_data.next_agent)
103
+ if not agent:
104
+ logger.error(
105
+ "Next agent not found", agent=handoff_data.next_agent
106
+ )
107
+ return {
108
+ "error": f"Next agent '{handoff_data.next_agent}' not found."
109
+ }
110
+
111
+ context.set_variable(FLOCK_CURRENT_AGENT, agent.name)
112
+ logger.info("Handing off to next agent", next=agent.name)
113
+ except Exception as e:
114
+ logger.error("Error during handoff", error=e)
115
+ return {"error": f"Error during handoff: {e}"}
116
+
117
+ return context.get_variable("init_input")
@@ -1,26 +1,24 @@
1
- from temporalio import activity
2
-
3
- from flock.agents.declarative_agent import DeclarativeAgent
4
- from flock.core.context import FlockContext
5
-
6
-
7
- @activity.defn
8
- async def run_declarative_agent_activity(params: dict) -> dict:
9
- """Temporal activity to run a declarative (or batch) agent.
10
-
11
- Expects a dictionary with:
12
- - "agent_data": a dict representation of the agent (as produced by .dict()),
13
- - "context_data": a dict containing the FlockContext state and optionally other fields.
14
-
15
- The activity reconstructs the agent and a FlockContext, then calls the agent’s _evaluate() method.
16
- """
17
- agent_data = params.get("agent_data")
18
- context_data = params.get("context_data", {})
19
- # Reconstruct the agent from its serialized representation.
20
- agent = DeclarativeAgent.parse_obj(agent_data)
21
- # Reconstruct the FlockContext from the state.
22
- state = context_data.get("state", {})
23
- # (For simplicity, we ignore history and agent_definitions here. You can extend this if needed.)
24
- context = FlockContext(state=state)
25
- result = await agent._evaluate(context)
26
- return result
1
+ from temporalio import activity
2
+
3
+ from flock.core.context.context import FlockContext
4
+ from flock.core.flock_agent import FlockAgent
5
+
6
+
7
+ @activity.defn
8
+ async def run_declarative_agent_activity(params: dict) -> dict:
9
+ """Temporal activity to run a declarative (or batch) agent.
10
+
11
+ Expects a dictionary with:
12
+ - "agent_data": a dict representation of the agent (as produced by .dict()),
13
+ - "context_data": a dict containing the FlockContext state and optionally other fields.
14
+
15
+ The activity reconstructs the agent and a FlockContext, then calls the agent’s _evaluate() method.
16
+ """
17
+ agent_data = params.get("agent_data")
18
+ context_data = params.get("context_data", {})
19
+ # Reconstruct the agent from its serialized representation.
20
+ agent = FlockAgent.from_dict(agent_data)
21
+ # Reconstruct the FlockContext from the state.
22
+ context = FlockContext.from_dict(context_data)
23
+ result = await agent.evaluate(context)
24
+ return result