flock-core 0.1.2__py3-none-any.whl → 0.2.2__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 (407) hide show
  1. flock/__init__.py +1 -4
  2. flock/core/__init__.py +1 -7
  3. flock/core/context/context.py +182 -0
  4. flock/core/context/context_manager.py +34 -0
  5. flock/core/{context_vars.py → context/context_vars.py} +8 -6
  6. flock/core/execution/local_executor.py +27 -0
  7. flock/core/execution/temporal_executor.py +56 -0
  8. flock/core/flock.py +232 -208
  9. flock/core/flock_agent.py +574 -0
  10. flock/core/logging/__init__.py +2 -18
  11. flock/core/logging/formatters/base_formatter.py +36 -0
  12. flock/core/logging/formatters/formatter_factory.py +38 -0
  13. flock/core/logging/formatters/pprint_formatter.py +18 -0
  14. flock/core/logging/formatters/rich_formatters.py +132 -0
  15. flock/core/logging/formatters/theme_builder.py +480 -0
  16. flock/core/logging/formatters/themed_formatter.py +442 -0
  17. flock/core/logging/logging.py +141 -0
  18. flock/core/logging/telemetry.py +21 -0
  19. flock/core/logging/trace_and_logged.py +55 -0
  20. flock/core/mixin/dspy_integration.py +197 -0
  21. flock/core/mixin/prompt_parser.py +125 -0
  22. flock/core/registry/agent_registry.py +118 -0
  23. flock/core/tools/basic_tools.py +296 -98
  24. flock/core/tools/dev_tools/github.py +190 -0
  25. flock/core/util/cli_helper.py +25 -0
  26. flock/core/util/input_resolver.py +156 -0
  27. flock/core/util/serializable.py +93 -0
  28. flock/themes/3024-day.toml +39 -0
  29. flock/themes/3024-night.toml +77 -0
  30. flock/themes/aardvark-blue.toml +77 -0
  31. flock/themes/abernathy.toml +77 -0
  32. flock/themes/adventure.toml +77 -0
  33. flock/themes/adventuretime.toml +77 -0
  34. flock/themes/afterglow.toml +77 -0
  35. flock/themes/alabaster.toml +77 -0
  36. flock/themes/alienblood.toml +77 -0
  37. flock/themes/andromeda.toml +77 -0
  38. flock/themes/apple-classic.toml +77 -0
  39. flock/themes/apple-system-colors.toml +77 -0
  40. flock/themes/arcoiris.toml +77 -0
  41. flock/themes/argonaut copy.toml +77 -0
  42. flock/themes/argonaut.toml +39 -0
  43. flock/themes/arthur.toml +77 -0
  44. flock/themes/ateliersulphurpool.toml +77 -0
  45. flock/themes/atom.toml +38 -0
  46. flock/themes/atom_test.toml +65 -0
  47. flock/themes/atomonelight.toml +77 -0
  48. flock/themes/aurora.toml +77 -0
  49. flock/themes/ayu copy.toml +77 -0
  50. flock/themes/ayu-light.toml +77 -0
  51. flock/themes/ayu-mirage.toml +77 -0
  52. flock/themes/ayu.toml +39 -0
  53. flock/themes/banana-blueberry.toml +77 -0
  54. flock/themes/batman.toml +77 -0
  55. flock/themes/belafonte-day.toml +77 -0
  56. flock/themes/belafonte-night.toml +77 -0
  57. flock/themes/birdsofparadise.toml +77 -0
  58. flock/themes/blazer.toml +77 -0
  59. flock/themes/blue-matrix.toml +77 -0
  60. flock/themes/blueberrypie.toml +77 -0
  61. flock/themes/bluedolphin.toml +77 -0
  62. flock/themes/blulocodark.toml +77 -0
  63. flock/themes/blulocolight.toml +77 -0
  64. flock/themes/borland.toml +77 -0
  65. flock/themes/breeze.toml +77 -0
  66. flock/themes/bright-lights.toml +77 -0
  67. flock/themes/broadcast.toml +77 -0
  68. flock/themes/brogrammer.toml +77 -0
  69. flock/themes/builtin-dark.toml +77 -0
  70. flock/themes/builtin-light.toml +77 -0
  71. flock/themes/builtin-pastel-dark.toml +77 -0
  72. flock/themes/builtin-solarized-dark.toml +77 -0
  73. flock/themes/builtin-solarized-light.toml +77 -0
  74. flock/themes/builtin-tango-dark.toml +77 -0
  75. flock/themes/builtin-tango-light.toml +77 -0
  76. flock/themes/c64.toml +77 -0
  77. flock/themes/calamity.toml +77 -0
  78. flock/themes/catppuccin-frappe.toml +77 -0
  79. flock/themes/catppuccin-latte.toml +77 -0
  80. flock/themes/catppuccin-macchiato.toml +77 -0
  81. flock/themes/catppuccin-mocha.toml +77 -0
  82. flock/themes/cga.toml +77 -0
  83. flock/themes/chalk.toml +77 -0
  84. flock/themes/chalkboard.toml +77 -0
  85. flock/themes/challengerdeep.toml +77 -0
  86. flock/themes/chester.toml +77 -0
  87. flock/themes/ciapre.toml +77 -0
  88. flock/themes/clrs.toml +77 -0
  89. flock/themes/cobalt-neon.toml +77 -0
  90. flock/themes/cobalt2.toml +77 -0
  91. flock/themes/coffee-theme.toml +77 -0
  92. flock/themes/crayonponyfish.toml +77 -0
  93. flock/themes/cutiepro.toml +77 -0
  94. flock/themes/cyberdyne.toml +77 -0
  95. flock/themes/cyberpunk.toml +77 -0
  96. flock/themes/cyberpunkscarletprotocol.toml +77 -0
  97. flock/themes/dark+.toml +77 -0
  98. flock/themes/dark-pastel.toml +77 -0
  99. flock/themes/darkermatrix.toml +77 -0
  100. flock/themes/darkmatrix.toml +77 -0
  101. flock/themes/darkside.toml +77 -0
  102. flock/themes/dayfox.toml +77 -0
  103. flock/themes/deep.toml +77 -0
  104. flock/themes/desert.toml +77 -0
  105. flock/themes/dimidium.toml +77 -0
  106. flock/themes/dimmedmonokai.toml +77 -0
  107. flock/themes/django.toml +77 -0
  108. flock/themes/djangorebornagain.toml +77 -0
  109. flock/themes/djangosmooth.toml +77 -0
  110. flock/themes/doom-peacock.toml +77 -0
  111. flock/themes/doomone.toml +77 -0
  112. flock/themes/dotgov.toml +77 -0
  113. flock/themes/dracula+.toml +77 -0
  114. flock/themes/dracula.toml +77 -0
  115. flock/themes/duckbones.toml +77 -0
  116. flock/themes/duotone-dark.toml +77 -0
  117. flock/themes/earthsong.toml +77 -0
  118. flock/themes/elemental.toml +77 -0
  119. flock/themes/elementary.toml +77 -0
  120. flock/themes/encom.toml +77 -0
  121. flock/themes/espresso-libre.toml +77 -0
  122. flock/themes/espresso.toml +77 -0
  123. flock/themes/everblush.toml +77 -0
  124. flock/themes/fahrenheit.toml +77 -0
  125. flock/themes/fairyfloss.toml +77 -0
  126. flock/themes/farmhouse-dark.toml +77 -0
  127. flock/themes/farmhouse-light.toml +77 -0
  128. flock/themes/fideloper.toml +77 -0
  129. flock/themes/firefly-traditional.toml +77 -0
  130. flock/themes/firefoxdev.toml +77 -0
  131. flock/themes/firewatch.toml +77 -0
  132. flock/themes/fishtank.toml +77 -0
  133. flock/themes/flat.toml +77 -0
  134. flock/themes/flatland.toml +77 -0
  135. flock/themes/flexoki-dark.toml +77 -0
  136. flock/themes/flexoki-light.toml +77 -0
  137. flock/themes/floraverse.toml +77 -0
  138. flock/themes/forestblue.toml +77 -0
  139. flock/themes/framer.toml +77 -0
  140. flock/themes/frontenddelight.toml +77 -0
  141. flock/themes/funforrest.toml +77 -0
  142. flock/themes/galaxy.toml +77 -0
  143. flock/themes/galizur.toml +77 -0
  144. flock/themes/github-dark.toml +77 -0
  145. flock/themes/github.toml +77 -0
  146. flock/themes/glacier.toml +77 -0
  147. flock/themes/grape.toml +77 -0
  148. flock/themes/grass.toml +77 -0
  149. flock/themes/grey-green.toml +77 -0
  150. flock/themes/gruber-darker.toml +77 -0
  151. flock/themes/gruvboxdark.toml +77 -0
  152. flock/themes/gruvboxdarkhard.toml +77 -0
  153. flock/themes/gruvboxlight.toml +77 -0
  154. flock/themes/guezwhoz.toml +77 -0
  155. flock/themes/hacktober.toml +77 -0
  156. flock/themes/hardcore.toml +77 -0
  157. flock/themes/harper.toml +77 -0
  158. flock/themes/hax0r-blue.toml +77 -0
  159. flock/themes/hax0r-gr33n.toml +77 -0
  160. flock/themes/hax0r-r3d.toml +77 -0
  161. flock/themes/highway.toml +77 -0
  162. flock/themes/hipster-green.toml +77 -0
  163. flock/themes/hivacruz.toml +77 -0
  164. flock/themes/homebrew.toml +77 -0
  165. flock/themes/hopscotch.256.toml +77 -0
  166. flock/themes/hopscotch.toml +77 -0
  167. flock/themes/hurtado.toml +77 -0
  168. flock/themes/hybrid.toml +77 -0
  169. flock/themes/ic-green-ppl.toml +77 -0
  170. flock/themes/ic-orange-ppl.toml +77 -0
  171. flock/themes/iceberg-dark.toml +77 -0
  172. flock/themes/iceberg-light.toml +77 -0
  173. flock/themes/idea.toml +77 -0
  174. flock/themes/idletoes.toml +77 -0
  175. flock/themes/ir-black.toml +77 -0
  176. flock/themes/iterm2-dark-background.toml +77 -0
  177. flock/themes/iterm2-default.toml +77 -0
  178. flock/themes/iterm2-light-background.toml +77 -0
  179. flock/themes/iterm2-pastel-dark-background.toml +77 -0
  180. flock/themes/iterm2-smoooooth.toml +77 -0
  181. flock/themes/iterm2-solarized-dark.toml +77 -0
  182. flock/themes/iterm2-solarized-light.toml +77 -0
  183. flock/themes/iterm2-tango-dark.toml +77 -0
  184. flock/themes/iterm2-tango-light.toml +77 -0
  185. flock/themes/jackie-brown.toml +77 -0
  186. flock/themes/japanesque.toml +77 -0
  187. flock/themes/jellybeans.toml +77 -0
  188. flock/themes/jetbrains-darcula.toml +77 -0
  189. flock/themes/jubi.toml +77 -0
  190. flock/themes/kanagawabones.toml +77 -0
  191. flock/themes/kibble.toml +77 -0
  192. flock/themes/kolorit.toml +77 -0
  193. flock/themes/konsolas.toml +77 -0
  194. flock/themes/kurokula.toml +77 -0
  195. flock/themes/lab-fox.toml +77 -0
  196. flock/themes/laser.toml +77 -0
  197. flock/themes/later-this-evening.toml +77 -0
  198. flock/themes/lavandula.toml +77 -0
  199. flock/themes/liquidcarbon.toml +77 -0
  200. flock/themes/liquidcarbontransparent.toml +77 -0
  201. flock/themes/liquidcarbontransparentinverse.toml +77 -0
  202. flock/themes/lovelace.toml +77 -0
  203. flock/themes/man-page.toml +77 -0
  204. flock/themes/mariana.toml +77 -0
  205. flock/themes/material.toml +77 -0
  206. flock/themes/materialdark.toml +77 -0
  207. flock/themes/materialdarker.toml +77 -0
  208. flock/themes/materialdesigncolors.toml +77 -0
  209. flock/themes/materialocean.toml +77 -0
  210. flock/themes/mathias.toml +77 -0
  211. flock/themes/matrix.toml +77 -0
  212. flock/themes/medallion.toml +77 -0
  213. flock/themes/mellifluous.toml +77 -0
  214. flock/themes/midnight-in-mojave.toml +77 -0
  215. flock/themes/mirage.toml +77 -0
  216. flock/themes/misterioso.toml +77 -0
  217. flock/themes/molokai.toml +77 -0
  218. flock/themes/monalisa.toml +77 -0
  219. flock/themes/monokai-remastered.toml +77 -0
  220. flock/themes/monokai-soda.toml +77 -0
  221. flock/themes/monokai-vivid.toml +77 -0
  222. flock/themes/n0tch2k.toml +77 -0
  223. flock/themes/neobones-dark.toml +77 -0
  224. flock/themes/neobones-light.toml +77 -0
  225. flock/themes/neon.toml +77 -0
  226. flock/themes/neopolitan.toml +77 -0
  227. flock/themes/neutron.toml +77 -0
  228. flock/themes/night-owlish-light.toml +77 -0
  229. flock/themes/nightfox.toml +77 -0
  230. flock/themes/nightlion-v1.toml +77 -0
  231. flock/themes/nightlion-v2.toml +77 -0
  232. flock/themes/niji.toml +77 -0
  233. flock/themes/nocturnal-winter.toml +77 -0
  234. flock/themes/nord-light.toml +77 -0
  235. flock/themes/nord.toml +77 -0
  236. flock/themes/novel.toml +77 -0
  237. flock/themes/nvimdark.toml +77 -0
  238. flock/themes/nvimlight.toml +77 -0
  239. flock/themes/obsidian.toml +77 -0
  240. flock/themes/ocean.toml +77 -0
  241. flock/themes/oceanic-next.toml +77 -0
  242. flock/themes/oceanicmaterial.toml +77 -0
  243. flock/themes/ollie.toml +77 -0
  244. flock/themes/onehalfdark.toml +77 -0
  245. flock/themes/onehalflight.toml +77 -0
  246. flock/themes/operator-mono-dark.toml +77 -0
  247. flock/themes/overnight-slumber.toml +77 -0
  248. flock/themes/oxocarbon.toml +77 -0
  249. flock/themes/palenighthc.toml +77 -0
  250. flock/themes/pandora.toml +77 -0
  251. flock/themes/paraiso-dark.toml +77 -0
  252. flock/themes/paulmillr.toml +77 -0
  253. flock/themes/pencildark.toml +77 -0
  254. flock/themes/pencillight.toml +77 -0
  255. flock/themes/peppermint.toml +77 -0
  256. flock/themes/piatto-light.toml +77 -0
  257. flock/themes/pnevma.toml +77 -0
  258. flock/themes/popping-and-locking.toml +77 -0
  259. flock/themes/primary.toml +77 -0
  260. flock/themes/pro-light.toml +77 -0
  261. flock/themes/pro.toml +77 -0
  262. flock/themes/purple-rain.toml +77 -0
  263. flock/themes/purplepeter.toml +77 -0
  264. flock/themes/rapture.toml +77 -0
  265. flock/themes/raycast-dark.toml +77 -0
  266. flock/themes/raycast-light.toml +77 -0
  267. flock/themes/rebecca.toml +77 -0
  268. flock/themes/red-alert.toml +77 -0
  269. flock/themes/red-planet.toml +77 -0
  270. flock/themes/red-sands.toml +77 -0
  271. flock/themes/relaxed.toml +77 -0
  272. flock/themes/retro.toml +77 -0
  273. flock/themes/rippedcasts.toml +77 -0
  274. flock/themes/rose-pine-dawn.toml +77 -0
  275. flock/themes/rose-pine-moon.toml +77 -0
  276. flock/themes/rose-pine.toml +77 -0
  277. flock/themes/rouge-2.toml +77 -0
  278. flock/themes/royal.toml +77 -0
  279. flock/themes/ryuuko.toml +77 -0
  280. flock/themes/sakura.toml +77 -0
  281. flock/themes/scarlet-protocol.toml +77 -0
  282. flock/themes/seafoam-pastel.toml +77 -0
  283. flock/themes/seashells.toml +77 -0
  284. flock/themes/seoulbones-dark.toml +77 -0
  285. flock/themes/seoulbones-light.toml +77 -0
  286. flock/themes/seti.toml +77 -0
  287. flock/themes/shades-of-purple.toml +77 -0
  288. flock/themes/shaman.toml +77 -0
  289. flock/themes/slate.toml +77 -0
  290. flock/themes/sleepyhollow.toml +77 -0
  291. flock/themes/smyck.toml +77 -0
  292. flock/themes/snazzy.toml +77 -0
  293. flock/themes/softserver.toml +77 -0
  294. flock/themes/solarized-darcula.toml +77 -0
  295. flock/themes/solarized-dark---patched.toml +77 -0
  296. flock/themes/solarized-dark-higher-contrast.toml +77 -0
  297. flock/themes/spacedust.toml +77 -0
  298. flock/themes/spacegray-eighties-dull.toml +77 -0
  299. flock/themes/spacegray-eighties.toml +77 -0
  300. flock/themes/spacegray.toml +77 -0
  301. flock/themes/spiderman.toml +77 -0
  302. flock/themes/spring.toml +77 -0
  303. flock/themes/square.toml +77 -0
  304. flock/themes/sublette.toml +77 -0
  305. flock/themes/subliminal.toml +77 -0
  306. flock/themes/sugarplum.toml +77 -0
  307. flock/themes/sundried.toml +77 -0
  308. flock/themes/symfonic.toml +77 -0
  309. flock/themes/synthwave-everything.toml +77 -0
  310. flock/themes/synthwave.toml +77 -0
  311. flock/themes/synthwavealpha.toml +77 -0
  312. flock/themes/tango-adapted.toml +77 -0
  313. flock/themes/tango-half-adapted.toml +77 -0
  314. flock/themes/teerb.toml +77 -0
  315. flock/themes/terafox.toml +77 -0
  316. flock/themes/terminal-basic.toml +77 -0
  317. flock/themes/thayer-bright.toml +77 -0
  318. flock/themes/the-hulk.toml +77 -0
  319. flock/themes/tinacious-design-(dark).toml +77 -0
  320. flock/themes/tinacious-design-(light).toml +77 -0
  321. flock/themes/tokyonight-day.toml +77 -0
  322. flock/themes/tokyonight-storm.toml +77 -0
  323. flock/themes/tokyonight.toml +77 -0
  324. flock/themes/tomorrow-night-blue.toml +77 -0
  325. flock/themes/tomorrow-night-bright.toml +77 -0
  326. flock/themes/tomorrow-night-burns.toml +77 -0
  327. flock/themes/tomorrow-night-eighties.toml +77 -0
  328. flock/themes/tomorrow-night.toml +77 -0
  329. flock/themes/tomorrow.toml +77 -0
  330. flock/themes/toychest.toml +77 -0
  331. flock/themes/treehouse.toml +77 -0
  332. flock/themes/twilight.toml +77 -0
  333. flock/themes/ubuntu.toml +77 -0
  334. flock/themes/ultradark.toml +77 -0
  335. flock/themes/ultraviolent.toml +77 -0
  336. flock/themes/underthesea.toml +77 -0
  337. flock/themes/unikitty.toml +77 -0
  338. flock/themes/urple.toml +77 -0
  339. flock/themes/vaughn.toml +77 -0
  340. flock/themes/vesper.toml +77 -0
  341. flock/themes/vibrantink.toml +77 -0
  342. flock/themes/vimbones.toml +77 -0
  343. flock/themes/violet-dark.toml +77 -0
  344. flock/themes/violet-light.toml +77 -0
  345. flock/themes/warmneon.toml +77 -0
  346. flock/themes/wez.toml +77 -0
  347. flock/themes/whimsy.toml +77 -0
  348. flock/themes/wildcherry.toml +77 -0
  349. flock/themes/wilmersdorf.toml +77 -0
  350. flock/themes/wombat.toml +77 -0
  351. flock/themes/wryan.toml +77 -0
  352. flock/themes/xcodedark.toml +77 -0
  353. flock/themes/xcodedarkhc.toml +77 -0
  354. flock/themes/xcodelight.toml +77 -0
  355. flock/themes/xcodelighthc.toml +77 -0
  356. flock/themes/xcodewwdc.toml +77 -0
  357. flock/themes/zenbones-dark.toml +77 -0
  358. flock/themes/zenbones-light.toml +77 -0
  359. flock/themes/zenbones.toml +77 -0
  360. flock/themes/zenburn.toml +77 -0
  361. flock/themes/zenburned.toml +77 -0
  362. flock/themes/zenwritten-dark.toml +77 -0
  363. flock/themes/zenwritten-light.toml +77 -0
  364. flock/workflow/activities.py +175 -115
  365. flock/workflow/agent_activities.py +24 -26
  366. flock/workflow/temporal_setup.py +38 -37
  367. flock/workflow/workflow.py +58 -53
  368. flock_core-0.2.2.dist-info/METADATA +320 -0
  369. flock_core-0.2.2.dist-info/RECORD +372 -0
  370. {flock_core-0.1.2.dist-info → flock_core-0.2.2.dist-info}/licenses/LICENSE +21 -21
  371. flock/agents/__init__.py +0 -3
  372. flock/agents/batch_agent.py +0 -175
  373. flock/agents/declarative_agent.py +0 -166
  374. flock/agents/loop_agent.py +0 -178
  375. flock/agents/trigger_agent.py +0 -191
  376. flock/agents/user_agent.py +0 -230
  377. flock/app/components/__init__.py +0 -14
  378. flock/app/components/charts/agent_workflow.py +0 -14
  379. flock/app/components/charts/core_architecture.py +0 -14
  380. flock/app/components/charts/tool_system.py +0 -14
  381. flock/app/components/history_grid.py +0 -168
  382. flock/app/components/history_grid_alt.py +0 -189
  383. flock/app/components/sidebar.py +0 -19
  384. flock/app/components/theme.py +0 -9
  385. flock/app/components/util.py +0 -18
  386. flock/app/hive_app.py +0 -118
  387. flock/app/html/d3.html +0 -179
  388. flock/app/modules/__init__.py +0 -12
  389. flock/app/modules/about.py +0 -17
  390. flock/app/modules/agent_detail.py +0 -70
  391. flock/app/modules/agent_list.py +0 -59
  392. flock/app/modules/playground.py +0 -322
  393. flock/app/modules/settings.py +0 -96
  394. flock/core/agent.py +0 -150
  395. flock/core/agent_registry.py +0 -162
  396. flock/core/context.py +0 -279
  397. flock/core/handoff/handoff_base.py +0 -12
  398. flock/core/logging/error_handler.py +0 -84
  399. flock/core/logging/formatters.py +0 -122
  400. flock/core/logging/handlers.py +0 -117
  401. flock/core/logging/logger.py +0 -107
  402. flock/core/serializable.py +0 -206
  403. flock_core-0.1.2.dist-info/METADATA +0 -476
  404. flock_core-0.1.2.dist-info/RECORD +0 -48
  405. flock_core-0.1.2.dist-info/entry_points.txt +0 -2
  406. /flock/{core/config/declarative_agent_config.py → workflow/__init__.py} +0 -0
  407. {flock_core-0.1.2.dist-info → flock_core-0.2.2.dist-info}/WHEEL +0 -0
@@ -0,0 +1,320 @@
1
+ Metadata-Version: 2.4
2
+ Name: flock-core
3
+ Version: 0.2.2
4
+ Summary: Declarative LLM Orchestration at Scale
5
+ Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
+ License-File: LICENSE
7
+ Classifier: License :: OSI Approved :: MIT License
8
+ Classifier: Operating System :: OS Independent
9
+ Classifier: Programming Language :: Python :: 3
10
+ Requires-Python: >=3.10
11
+ Requires-Dist: cloudpickle>=3.1.1
12
+ Requires-Dist: devtools>=0.12.2
13
+ Requires-Dist: dspy==2.5.42
14
+ Requires-Dist: httpx>=0.28.1
15
+ Requires-Dist: loguru>=0.7.3
16
+ Requires-Dist: msgpack>=1.1.0
17
+ Requires-Dist: opentelemetry-api>=1.30.0
18
+ Requires-Dist: opentelemetry-exporter-jaeger>=1.21.0
19
+ Requires-Dist: opentelemetry-exporter-otlp>=1.30.0
20
+ Requires-Dist: opentelemetry-instrumentation-logging>=0.51b0
21
+ Requires-Dist: opentelemetry-sdk>=1.30.0
22
+ Requires-Dist: pydantic>=2.10.5
23
+ Requires-Dist: python-box>=7.3.2
24
+ Requires-Dist: rich>=13.9.4
25
+ Requires-Dist: temporalio>=1.9.0
26
+ Requires-Dist: toml>=0.10.2
27
+ Provides-Extra: all-tools
28
+ Requires-Dist: docling>=2.18.0; extra == 'all-tools'
29
+ Requires-Dist: markdownify>=0.14.1; extra == 'all-tools'
30
+ Requires-Dist: tavily-python>=0.5.0; extra == 'all-tools'
31
+ Provides-Extra: tools
32
+ Requires-Dist: markdownify>=0.14.1; extra == 'tools'
33
+ Requires-Dist: tavily-python>=0.5.0; extra == 'tools'
34
+ Description-Content-Type: text/markdown
35
+
36
+ <p align="center">
37
+ <img src="docs/img/flock.png" width="600"><br>
38
+ <h1 align="center">Flock<br></h1><br>
39
+
40
+
41
+ ## Overview
42
+
43
+ Flock is a framework for orchestrating LLM-powered agents. It leverages a **declarative approach** where you simply specify what each agent needs as input and what it produces as output—without having to write lengthy, brittle prompts. Under the hood, Flock transforms these declarations into robust workflows, using cutting-edge components such as Temporal and DSPy to handle fault tolerance, state management, and error recovery.
44
+
45
+
46
+
47
+ | Traditional Agent Frameworks 🙃 | Flock 🐤🐧🐓🦆 |
48
+ |------------------------------------------|--------------------------------------------------------------|
49
+ | 🤖 **Complex Prompt Engineering** | 📝 **Declarative Agent Definitions** |
50
+ | • Lengthy, brittle prompts | • Clear, concise input/output declarations |
51
+ | • Hard-to-tune and adapt | • No need for manual prompt engineering |
52
+ | | |
53
+ | 💥 **Fragile Execution** | ⚡ **Robust & Scalable** |
54
+ | • Single failure can break the system | • Fault-tolerant with built-in retries and error handling |
55
+ | • Difficult to monitor and recover | • Automatic recovery via Temporal workflow integration |
56
+ | | |
57
+ | 🏗️ **Rigid Workflows** | 🔄 **Flexible Orchestration** |
58
+ | • Limited adaptability | • Dynamic agent chaining and hand-offs |
59
+ | • Hard to scale and parallelize | • Modular, concurrent, and batch processing |
60
+ | | |
61
+
62
+
63
+ ## Key Innovations
64
+
65
+ - **Declarative Agent System:**
66
+ Define agents by declaring their input/output interfaces (with type hints and human-readable descriptions) using a concise syntax.
67
+
68
+
69
+ <img src="docs/img/examples/01_01.png" width="300"><br>
70
+
71
+
72
+ Example syntax:
73
+ ```python
74
+ input = "query: str|The search query, context: dict|The full conversation context"
75
+ output = "idea: str|The generated software project idea"
76
+ ```
77
+ The framework automatically extracts type and description details, builds precise prompts, and configures the underlying LLM.
78
+
79
+ - **Lifecycle Hooks:**
80
+ Each agent (via the new `FlockAgent` base class) supports lifecycle hooks such as `initialize()`, `terminate()`, and `on_error()`. This ensures that agents can perform setup, cleanup, and robust error handling—all without cluttering the main business logic.
81
+
82
+ - **Fault Tolerance & Temporal Integration:**
83
+ Flock is built with production readiness in mind. By integrating with Temporal, your agent workflows enjoy automatic retries, durable state management, and resilience against failures. This means that a single agent crash won't bring down your entire system.
84
+
85
+ - **Type Safety and Clear Contracts:**
86
+ Agents are implemented as Pydantic models. This provides automatic JSON serialization/deserialization, strong typing, and an explicit contract for inputs and outputs. Testing, validation, and integration become straightforward.
87
+
88
+ - **DSPy Integration:**
89
+ Flock leverages DSPy for managing LLM interactions. The framework constructs clean signature strings and updates field metadata so that DSPy can include detailed instructions and context for each agent call.
90
+
91
+
92
+ <p align="center">
93
+ <img src="docs/img/flock_cli.png" width="200"><br>
94
+
95
+ ## Quick Start
96
+
97
+ Below is a simple example of how to create and run an agent with Flock:
98
+
99
+ ```python
100
+ import asyncio
101
+ from flock.core.flock import Flock
102
+ from flock.core.agents.flock_agent import FlockAgent
103
+ from flock.core.tools import basic_tools
104
+
105
+ async def main():
106
+ # Initialize Flock
107
+ flock = Flock(model="openai/gpt-4o")
108
+
109
+ # Create an agent with clear input/output declarations and optional tools.
110
+ idea_agent = FlockAgent(
111
+ name="idea_agent",
112
+ input="query: str|The search query, context: dict|Additional context",
113
+ output="a_fun_software_project_idea: str|The generated software project idea",
114
+ tools=[basic_tools.web_search_tavily],
115
+ )
116
+ flock.add_agent(idea_agent)
117
+
118
+ # Run the agent locally (with built-in debugging/logging)
119
+ result = await flock.run_async(
120
+ start_agent=idea_agent,
121
+ input="build a revolutionary app",
122
+ local_debug=True
123
+ )
124
+ print(result)
125
+
126
+ if __name__ == "__main__":
127
+ asyncio.run(main())
128
+ ```
129
+
130
+ ## Advanced Usage
131
+
132
+ ### Agents with Lifecycle Hooks
133
+
134
+ Customize behavior by overriding lifecycle methods:
135
+
136
+ - **initialize(inputs):** Set up resources, validate inputs, or log pre-run state.
137
+ - **terminate(inputs, result):** Clean up resources, log output, or perform post-run actions.
138
+ - **on_error(error, inputs):** Handle exceptions gracefully, log detailed error information, and trigger recovery logic.
139
+
140
+ ### Agents with Tools
141
+
142
+ Agents can seamlessly integrate external tools for enhanced functionality:
143
+
144
+ ```python
145
+ from flock.core.tools import basic_tools
146
+
147
+ research_agent = FlockAgent(
148
+ name="research_agent",
149
+ input="research_topic: str|Topic to investigate",
150
+ output="research_result: str|The outcome of the research",
151
+ tools=[basic_tools.web_search_tavily],
152
+ )
153
+ ```
154
+
155
+ ### Agent Chaining
156
+
157
+ Chain agents together to create complex workflows:
158
+
159
+ ```python
160
+ # Define the first agent in the chain.
161
+ project_plan_agent = FlockAgent(
162
+ name="project_plan_agent",
163
+ input="project_idea: str|Initial project idea",
164
+ output="plan_headings: list[str]|Headings for the project plan",
165
+ tools=[basic_tools.web_search_tavily, basic_tools.code_eval],
166
+ )
167
+
168
+ # Define a second agent that builds on the output of the first.
169
+ content_agent = FlockAgent(
170
+ name="content_agent",
171
+ input="context: dict|Global context, project_plan_agent.plan_headings: list[str]|Plan headings",
172
+ output="project_plan_content: str|Detailed content for the plan",
173
+ )
174
+
175
+ # Set up hand-off from the first agent to the second.
176
+ project_plan_agent.hand_off = content_agent
177
+ ```
178
+
179
+ ### Temporal Workflow Integration
180
+
181
+ Flock supports execution on Temporal, ensuring robust, fault-tolerant workflows:
182
+
183
+ - **Durability:** Persistent state management even in the case of failures.
184
+ - **Retries & Error Handling:** Automatic recovery via Temporal's built-in mechanisms.
185
+ - **Scalability:** Seamless orchestration of distributed agent workflows.
186
+
187
+ ## Architecture
188
+
189
+ TODO: Insert charts
190
+
191
+ ## Requirements
192
+
193
+ - Python 3.12+
194
+ - (Optional) Temporal server running locally for production-grade workflow features
195
+ - API keys for integrated services
196
+
197
+
198
+ recommended services
199
+ ```bash
200
+ export OPENAI_API_KEY=sk-proj-
201
+ export TAVILY_API_KEY=tvly-
202
+ ```
203
+
204
+ or in `.env`
205
+
206
+ For LLM interaction LiteLLM is getting used. Please refer to its documentation on how to easily use other models and/or provider.
207
+
208
+ https://docs.litellm.ai/docs/providers
209
+
210
+ ## Installation
211
+
212
+ ```bash
213
+ pip install flock-core
214
+ ```
215
+
216
+ if you want to use the integrated tools
217
+
218
+ ```bash
219
+ pip install flock-core[tools]
220
+ ```
221
+
222
+ and for the docling tools
223
+
224
+ ```bash
225
+ pip install flock-core[all-tools]
226
+ ```
227
+
228
+ ## Development
229
+
230
+
231
+ 1. **Clone the Repository:**
232
+
233
+ ```bash
234
+ git clone https://github.com/yourusername/flock.git
235
+ cd flock
236
+ ```
237
+
238
+ 2. **Create a Virtual Environment and sync all packages:**
239
+
240
+ ```bash
241
+ uv sync --all-groups --all-extras
242
+ ```
243
+
244
+ 3. **Install local version of flock:**
245
+
246
+ ```bash
247
+ uv build && uv pip install -e .
248
+ ```
249
+
250
+ Install Jaeger for telemetry
251
+ ```
252
+
253
+ docker run -d --name jaeger \
254
+ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
255
+ -p 5775:5775/udp \
256
+ -p 6831:6831/udp \
257
+ -p 6832:6832/udp \
258
+ -p 5778:5778 \
259
+ -p 16686:16686 \
260
+ -p 14268:14268 \
261
+ -p 14250:14250 \
262
+ -p 9411:9411 \
263
+ jaegertracing/all-in-one:1.41
264
+
265
+
266
+ ```
267
+
268
+ or zipkin
269
+
270
+ ```
271
+ docker run -d -p 9411:9411 openzipkin/zipkin
272
+
273
+ ```
274
+
275
+ ## Contributing
276
+
277
+ Contributions are welcome! Please submit Pull Requests and open issues on GitHub.
278
+
279
+ ## License
280
+
281
+ This project is licensed under the terms of the LICENSE file included in the repository.
282
+
283
+ ## Acknowledgments
284
+
285
+ - Built with [DSPy](https://github.com/stanfordnlp/dspy)
286
+ - Uses [Temporal](https://temporal.io/) for workflow management
287
+ - Integrates with [Tavily](https://tavily.com/) for web search capabilities
288
+ - Web interface built with FastHTML and MonsterUI
289
+
290
+ ## Evolution & Future Direction
291
+
292
+ Flock was created to overcome the limitations of traditional agent frameworks. Key design goals include:
293
+
294
+ ### Declarative Over Prompt Engineering
295
+
296
+ - **Simplify Agent Definitions:**
297
+ Focus on clear input/output contracts rather than long, complex prompts.
298
+ - **Model Agnostic:**
299
+ Change LLM backends without altering agent logic.
300
+ - **Improved Testability:**
301
+ Clear, structured interfaces facilitate unit testing and validation.
302
+
303
+ ### Robust, Production-Grade Orchestration
304
+
305
+ - **Fault Tolerance:**
306
+ Leveraging Temporal for automatic retries, durable state, and robust error handling.
307
+ - **Scalability:**
308
+ Support for concurrent, batch, and distributed workflows.
309
+ - **Observability:**
310
+ Built-in logging and monitoring for real-time insights into workflow execution.
311
+
312
+ ### Future Enhancements
313
+
314
+ - Expanded type system for richer agent interactions
315
+ - Enhanced tool ecosystem and custom integrations
316
+ - Advanced monitoring, debugging, and performance metrics
317
+ - Extended testing frameworks and validation tools
318
+
319
+ Join us in building the next generation of reliable, production-ready AI agent systems!
320
+