flock-core 0.4.542__py3-none-any.whl → 0.5.0__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 (501) hide show
  1. flock/__init__.py +12 -217
  2. flock/agent.py +1079 -0
  3. flock/api/themes.py +71 -0
  4. flock/artifacts.py +86 -0
  5. flock/cli.py +147 -0
  6. flock/components.py +189 -0
  7. flock/dashboard/__init__.py +30 -0
  8. flock/dashboard/collector.py +559 -0
  9. flock/dashboard/events.py +188 -0
  10. flock/dashboard/graph_builder.py +563 -0
  11. flock/dashboard/launcher.py +235 -0
  12. flock/dashboard/models/graph.py +156 -0
  13. flock/dashboard/service.py +991 -0
  14. flock/dashboard/static_v2/assets/index-DFRnI_mt.js +111 -0
  15. flock/dashboard/static_v2/assets/index-fPLNdmp1.css +1 -0
  16. flock/dashboard/static_v2/index.html +13 -0
  17. flock/dashboard/websocket.py +246 -0
  18. flock/engines/__init__.py +6 -0
  19. flock/engines/dspy_engine.py +932 -0
  20. flock/examples.py +131 -0
  21. flock/frontend/README.md +778 -0
  22. flock/frontend/docs/DESIGN_SYSTEM.md +1980 -0
  23. flock/frontend/index.html +12 -0
  24. flock/frontend/package-lock.json +4337 -0
  25. flock/frontend/package.json +48 -0
  26. flock/frontend/src/App.tsx +139 -0
  27. flock/frontend/src/__tests__/integration/graph-snapshot.test.tsx +647 -0
  28. flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +699 -0
  29. flock/frontend/src/components/common/BuildInfo.tsx +39 -0
  30. flock/frontend/src/components/common/EmptyState.module.css +115 -0
  31. flock/frontend/src/components/common/EmptyState.tsx +128 -0
  32. flock/frontend/src/components/common/ErrorBoundary.module.css +169 -0
  33. flock/frontend/src/components/common/ErrorBoundary.tsx +118 -0
  34. flock/frontend/src/components/common/KeyboardShortcutsDialog.css +251 -0
  35. flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +151 -0
  36. flock/frontend/src/components/common/LoadingSpinner.module.css +97 -0
  37. flock/frontend/src/components/common/LoadingSpinner.tsx +29 -0
  38. flock/frontend/src/components/controls/PublishControl.css +547 -0
  39. flock/frontend/src/components/controls/PublishControl.test.tsx +543 -0
  40. flock/frontend/src/components/controls/PublishControl.tsx +432 -0
  41. flock/frontend/src/components/details/DetailWindowContainer.tsx +58 -0
  42. flock/frontend/src/components/details/LiveOutputTab.test.tsx +792 -0
  43. flock/frontend/src/components/details/LiveOutputTab.tsx +220 -0
  44. flock/frontend/src/components/details/MessageDetailWindow.tsx +439 -0
  45. flock/frontend/src/components/details/MessageHistoryTab.tsx +374 -0
  46. flock/frontend/src/components/details/NodeDetailWindow.test.tsx +501 -0
  47. flock/frontend/src/components/details/NodeDetailWindow.tsx +218 -0
  48. flock/frontend/src/components/details/RunStatusTab.tsx +348 -0
  49. flock/frontend/src/components/details/tabs.test.tsx +1015 -0
  50. flock/frontend/src/components/filters/ArtifactTypeFilter.tsx +21 -0
  51. flock/frontend/src/components/filters/CorrelationIDFilter.module.css +102 -0
  52. flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +197 -0
  53. flock/frontend/src/components/filters/CorrelationIDFilter.tsx +121 -0
  54. flock/frontend/src/components/filters/FilterFlyout.module.css +104 -0
  55. flock/frontend/src/components/filters/FilterFlyout.tsx +80 -0
  56. flock/frontend/src/components/filters/FilterPills.module.css +220 -0
  57. flock/frontend/src/components/filters/FilterPills.test.tsx +189 -0
  58. flock/frontend/src/components/filters/FilterPills.tsx +143 -0
  59. flock/frontend/src/components/filters/ProducerFilter.tsx +21 -0
  60. flock/frontend/src/components/filters/SavedFiltersControl.module.css +60 -0
  61. flock/frontend/src/components/filters/SavedFiltersControl.test.tsx +158 -0
  62. flock/frontend/src/components/filters/SavedFiltersControl.tsx +159 -0
  63. flock/frontend/src/components/filters/TagFilter.tsx +21 -0
  64. flock/frontend/src/components/filters/TimeRangeFilter.module.css +115 -0
  65. flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +154 -0
  66. flock/frontend/src/components/filters/TimeRangeFilter.tsx +110 -0
  67. flock/frontend/src/components/filters/VisibilityFilter.tsx +21 -0
  68. flock/frontend/src/components/graph/AgentNode.test.tsx +77 -0
  69. flock/frontend/src/components/graph/AgentNode.tsx +324 -0
  70. flock/frontend/src/components/graph/GraphCanvas.tsx +613 -0
  71. flock/frontend/src/components/graph/MessageFlowEdge.tsx +128 -0
  72. flock/frontend/src/components/graph/MessageNode.test.tsx +64 -0
  73. flock/frontend/src/components/graph/MessageNode.tsx +129 -0
  74. flock/frontend/src/components/graph/MiniMap.tsx +47 -0
  75. flock/frontend/src/components/graph/TransformEdge.tsx +123 -0
  76. flock/frontend/src/components/layout/DashboardLayout.css +420 -0
  77. flock/frontend/src/components/layout/DashboardLayout.tsx +287 -0
  78. flock/frontend/src/components/layout/Header.module.css +88 -0
  79. flock/frontend/src/components/layout/Header.tsx +52 -0
  80. flock/frontend/src/components/modules/HistoricalArtifactsModule.module.css +288 -0
  81. flock/frontend/src/components/modules/HistoricalArtifactsModule.tsx +450 -0
  82. flock/frontend/src/components/modules/HistoricalArtifactsModuleWrapper.tsx +13 -0
  83. flock/frontend/src/components/modules/JsonAttributeRenderer.tsx +140 -0
  84. flock/frontend/src/components/modules/ModuleRegistry.test.ts +333 -0
  85. flock/frontend/src/components/modules/ModuleRegistry.ts +93 -0
  86. flock/frontend/src/components/modules/ModuleWindow.tsx +223 -0
  87. flock/frontend/src/components/modules/TraceModuleJaeger.tsx +1971 -0
  88. flock/frontend/src/components/modules/TraceModuleJaegerWrapper.tsx +13 -0
  89. flock/frontend/src/components/modules/registerModules.ts +29 -0
  90. flock/frontend/src/components/settings/AdvancedSettings.tsx +175 -0
  91. flock/frontend/src/components/settings/AppearanceSettings.tsx +185 -0
  92. flock/frontend/src/components/settings/GraphSettings.tsx +110 -0
  93. flock/frontend/src/components/settings/MultiSelect.tsx +235 -0
  94. flock/frontend/src/components/settings/SettingsPanel.css +327 -0
  95. flock/frontend/src/components/settings/SettingsPanel.tsx +131 -0
  96. flock/frontend/src/components/settings/ThemeSelector.tsx +298 -0
  97. flock/frontend/src/components/settings/TracingSettings.tsx +404 -0
  98. flock/frontend/src/hooks/useKeyboardShortcuts.ts +148 -0
  99. flock/frontend/src/hooks/useModulePersistence.test.ts +442 -0
  100. flock/frontend/src/hooks/useModulePersistence.ts +154 -0
  101. flock/frontend/src/hooks/useModules.ts +157 -0
  102. flock/frontend/src/hooks/usePersistence.ts +141 -0
  103. flock/frontend/src/main.tsx +13 -0
  104. flock/frontend/src/services/api.ts +337 -0
  105. flock/frontend/src/services/graphService.test.ts +330 -0
  106. flock/frontend/src/services/graphService.ts +75 -0
  107. flock/frontend/src/services/indexeddb.test.ts +793 -0
  108. flock/frontend/src/services/indexeddb.ts +848 -0
  109. flock/frontend/src/services/layout.test.ts +437 -0
  110. flock/frontend/src/services/layout.ts +357 -0
  111. flock/frontend/src/services/themeApplicator.ts +140 -0
  112. flock/frontend/src/services/themeService.ts +77 -0
  113. flock/frontend/src/services/websocket.ts +650 -0
  114. flock/frontend/src/store/filterStore.test.ts +250 -0
  115. flock/frontend/src/store/filterStore.ts +272 -0
  116. flock/frontend/src/store/graphStore.test.ts +570 -0
  117. flock/frontend/src/store/graphStore.ts +462 -0
  118. flock/frontend/src/store/moduleStore.test.ts +253 -0
  119. flock/frontend/src/store/moduleStore.ts +75 -0
  120. flock/frontend/src/store/settingsStore.ts +188 -0
  121. flock/frontend/src/store/streamStore.ts +68 -0
  122. flock/frontend/src/store/uiStore.test.ts +54 -0
  123. flock/frontend/src/store/uiStore.ts +122 -0
  124. flock/frontend/src/store/wsStore.ts +34 -0
  125. flock/frontend/src/styles/index.css +15 -0
  126. flock/frontend/src/styles/scrollbar.css +47 -0
  127. flock/frontend/src/styles/variables.css +488 -0
  128. flock/frontend/src/test/setup.ts +1 -0
  129. flock/frontend/src/types/filters.ts +47 -0
  130. flock/frontend/src/types/graph.ts +95 -0
  131. flock/frontend/src/types/modules.ts +10 -0
  132. flock/frontend/src/types/theme.ts +55 -0
  133. flock/frontend/src/utils/artifacts.ts +24 -0
  134. flock/frontend/src/utils/mockData.ts +98 -0
  135. flock/frontend/src/utils/performance.ts +16 -0
  136. flock/frontend/src/vite-env.d.ts +17 -0
  137. flock/frontend/tsconfig.json +27 -0
  138. flock/frontend/tsconfig.node.json +11 -0
  139. flock/frontend/vite.config.ts +25 -0
  140. flock/frontend/vitest.config.ts +11 -0
  141. flock/{core/util → helper}/cli_helper.py +9 -5
  142. flock/{core/logging → logging}/__init__.py +2 -3
  143. flock/logging/auto_trace.py +159 -0
  144. flock/{core/logging → logging}/formatters/enum_builder.py +3 -4
  145. flock/{core/logging → logging}/formatters/theme_builder.py +19 -44
  146. flock/{core/logging → logging}/formatters/themed_formatter.py +69 -107
  147. flock/{core/logging → logging}/logging.py +78 -61
  148. flock/{core/logging → logging}/telemetry.py +66 -26
  149. flock/{core/logging → logging}/telemetry_exporter/base_exporter.py +2 -2
  150. flock/logging/telemetry_exporter/duckdb_exporter.py +216 -0
  151. flock/{core/logging → logging}/telemetry_exporter/file_exporter.py +13 -10
  152. flock/{core/logging → logging}/telemetry_exporter/sqlite_exporter.py +2 -3
  153. flock/logging/trace_and_logged.py +304 -0
  154. flock/mcp/__init__.py +91 -0
  155. flock/{core/mcp/mcp_client.py → mcp/client.py} +131 -158
  156. flock/{core/mcp/mcp_config.py → mcp/config.py} +86 -132
  157. flock/mcp/manager.py +286 -0
  158. flock/mcp/servers/sse/__init__.py +1 -1
  159. flock/mcp/servers/sse/flock_sse_server.py +16 -58
  160. flock/mcp/servers/stdio/__init__.py +1 -1
  161. flock/mcp/servers/stdio/flock_stdio_server.py +13 -53
  162. flock/mcp/servers/streamable_http/flock_streamable_http_server.py +22 -67
  163. flock/mcp/servers/websockets/flock_websocket_server.py +12 -45
  164. flock/{core/mcp/flock_mcp_tool_base.py → mcp/tool.py} +24 -78
  165. flock/mcp/types/__init__.py +42 -0
  166. flock/{core/mcp → mcp}/types/callbacks.py +12 -15
  167. flock/{core/mcp → mcp}/types/factories.py +7 -6
  168. flock/{core/mcp → mcp}/types/handlers.py +13 -18
  169. flock/{core/mcp → mcp}/types/types.py +70 -74
  170. flock/{core/mcp → mcp}/util/helpers.py +3 -3
  171. flock/orchestrator.py +970 -0
  172. flock/registry.py +148 -0
  173. flock/runtime.py +262 -0
  174. flock/service.py +277 -0
  175. flock/store.py +1214 -0
  176. flock/subscription.py +111 -0
  177. flock/themes/andromeda.toml +1 -1
  178. flock/themes/apple-system-colors.toml +1 -1
  179. flock/themes/arcoiris.toml +1 -1
  180. flock/themes/atomonelight.toml +1 -1
  181. flock/themes/ayu copy.toml +1 -1
  182. flock/themes/ayu-light.toml +1 -1
  183. flock/themes/belafonte-day.toml +1 -1
  184. flock/themes/belafonte-night.toml +1 -1
  185. flock/themes/blulocodark.toml +1 -1
  186. flock/themes/breeze.toml +1 -1
  187. flock/themes/broadcast.toml +1 -1
  188. flock/themes/brogrammer.toml +1 -1
  189. flock/themes/builtin-dark.toml +1 -1
  190. flock/themes/builtin-pastel-dark.toml +1 -1
  191. flock/themes/catppuccin-latte.toml +1 -1
  192. flock/themes/catppuccin-macchiato.toml +1 -1
  193. flock/themes/catppuccin-mocha.toml +1 -1
  194. flock/themes/cga.toml +1 -1
  195. flock/themes/chalk.toml +1 -1
  196. flock/themes/ciapre.toml +1 -1
  197. flock/themes/coffee-theme.toml +1 -1
  198. flock/themes/cyberpunkscarletprotocol.toml +1 -1
  199. flock/themes/dark+.toml +1 -1
  200. flock/themes/darkermatrix.toml +1 -1
  201. flock/themes/darkmatrix.toml +2 -2
  202. flock/themes/darkside.toml +1 -1
  203. flock/themes/deep.toml +2 -2
  204. flock/themes/desert.toml +1 -1
  205. flock/themes/django.toml +1 -1
  206. flock/themes/djangosmooth.toml +1 -1
  207. flock/themes/doomone.toml +1 -1
  208. flock/themes/dotgov.toml +1 -1
  209. flock/themes/dracula+.toml +1 -1
  210. flock/themes/duckbones.toml +1 -1
  211. flock/themes/encom.toml +1 -1
  212. flock/themes/espresso.toml +1 -1
  213. flock/themes/everblush.toml +1 -1
  214. flock/themes/fairyfloss.toml +1 -1
  215. flock/themes/fideloper.toml +1 -1
  216. flock/themes/fishtank.toml +1 -1
  217. flock/themes/flexoki-light.toml +1 -1
  218. flock/themes/floraverse.toml +1 -1
  219. flock/themes/framer.toml +1 -1
  220. flock/themes/galizur.toml +1 -1
  221. flock/themes/github.toml +1 -1
  222. flock/themes/grass.toml +1 -1
  223. flock/themes/grey-green.toml +1 -1
  224. flock/themes/gruvboxlight.toml +1 -1
  225. flock/themes/guezwhoz.toml +1 -1
  226. flock/themes/harper.toml +1 -1
  227. flock/themes/hax0r-blue.toml +1 -1
  228. flock/themes/hopscotch.256.toml +1 -1
  229. flock/themes/ic-green-ppl.toml +1 -1
  230. flock/themes/iceberg-dark.toml +1 -1
  231. flock/themes/japanesque.toml +1 -1
  232. flock/themes/jubi.toml +1 -1
  233. flock/themes/kibble.toml +1 -1
  234. flock/themes/kolorit.toml +1 -1
  235. flock/themes/kurokula.toml +1 -1
  236. flock/themes/materialdesigncolors.toml +1 -1
  237. flock/themes/matrix.toml +1 -1
  238. flock/themes/mellifluous.toml +1 -1
  239. flock/themes/midnight-in-mojave.toml +1 -1
  240. flock/themes/monokai-remastered.toml +1 -1
  241. flock/themes/monokai-soda.toml +1 -1
  242. flock/themes/neon.toml +1 -1
  243. flock/themes/neopolitan.toml +5 -5
  244. flock/themes/nord-light.toml +1 -1
  245. flock/themes/ocean.toml +1 -1
  246. flock/themes/onehalfdark.toml +1 -1
  247. flock/themes/onehalflight.toml +1 -1
  248. flock/themes/palenighthc.toml +1 -1
  249. flock/themes/paulmillr.toml +1 -1
  250. flock/themes/pencildark.toml +1 -1
  251. flock/themes/pnevma.toml +1 -1
  252. flock/themes/purple-rain.toml +1 -1
  253. flock/themes/purplepeter.toml +1 -1
  254. flock/themes/raycast-dark.toml +1 -1
  255. flock/themes/red-sands.toml +1 -1
  256. flock/themes/relaxed.toml +1 -1
  257. flock/themes/retro.toml +1 -1
  258. flock/themes/rose-pine.toml +1 -1
  259. flock/themes/royal.toml +1 -1
  260. flock/themes/ryuuko.toml +1 -1
  261. flock/themes/sakura.toml +1 -1
  262. flock/themes/scarlet-protocol.toml +1 -1
  263. flock/themes/seoulbones-dark.toml +1 -1
  264. flock/themes/shades-of-purple.toml +1 -1
  265. flock/themes/smyck.toml +1 -1
  266. flock/themes/softserver.toml +1 -1
  267. flock/themes/solarized-darcula.toml +1 -1
  268. flock/themes/square.toml +1 -1
  269. flock/themes/sugarplum.toml +1 -1
  270. flock/themes/thayer-bright.toml +1 -1
  271. flock/themes/tokyonight.toml +1 -1
  272. flock/themes/tomorrow.toml +1 -1
  273. flock/themes/ubuntu.toml +1 -1
  274. flock/themes/ultradark.toml +1 -1
  275. flock/themes/ultraviolent.toml +1 -1
  276. flock/themes/unikitty.toml +1 -1
  277. flock/themes/urple.toml +1 -1
  278. flock/themes/vesper.toml +1 -1
  279. flock/themes/vimbones.toml +1 -1
  280. flock/themes/wildcherry.toml +1 -1
  281. flock/themes/wilmersdorf.toml +1 -1
  282. flock/themes/wryan.toml +1 -1
  283. flock/themes/xcodedarkhc.toml +1 -1
  284. flock/themes/xcodelight.toml +1 -1
  285. flock/themes/zenbones-light.toml +1 -1
  286. flock/themes/zenwritten-dark.toml +1 -1
  287. flock/utilities.py +301 -0
  288. flock/utility/output_utility_component.py +226 -0
  289. flock/visibility.py +107 -0
  290. flock_core-0.5.0.dist-info/METADATA +964 -0
  291. flock_core-0.5.0.dist-info/RECORD +525 -0
  292. flock_core-0.5.0.dist-info/entry_points.txt +2 -0
  293. {flock_core-0.4.542.dist-info → flock_core-0.5.0.dist-info}/licenses/LICENSE +1 -1
  294. flock/adapter/__init__.py +0 -14
  295. flock/adapter/azure_adapter.py +0 -68
  296. flock/adapter/chroma_adapter.py +0 -73
  297. flock/adapter/faiss_adapter.py +0 -97
  298. flock/adapter/pinecone_adapter.py +0 -51
  299. flock/adapter/vector_base.py +0 -47
  300. flock/cli/assets/release_notes.md +0 -140
  301. flock/cli/config.py +0 -8
  302. flock/cli/constants.py +0 -36
  303. flock/cli/create_agent.py +0 -1
  304. flock/cli/create_flock.py +0 -280
  305. flock/cli/execute_flock.py +0 -620
  306. flock/cli/load_agent.py +0 -1
  307. flock/cli/load_examples.py +0 -1
  308. flock/cli/load_flock.py +0 -192
  309. flock/cli/load_release_notes.py +0 -20
  310. flock/cli/loaded_flock_cli.py +0 -254
  311. flock/cli/manage_agents.py +0 -459
  312. flock/cli/registry_management.py +0 -889
  313. flock/cli/runner.py +0 -41
  314. flock/cli/settings.py +0 -857
  315. flock/cli/utils.py +0 -135
  316. flock/cli/view_results.py +0 -29
  317. flock/cli/yaml_editor.py +0 -396
  318. flock/config.py +0 -56
  319. flock/core/__init__.py +0 -44
  320. flock/core/api/__init__.py +0 -10
  321. flock/core/api/custom_endpoint.py +0 -45
  322. flock/core/api/endpoints.py +0 -262
  323. flock/core/api/main.py +0 -162
  324. flock/core/api/models.py +0 -101
  325. flock/core/api/run_store.py +0 -224
  326. flock/core/api/runner.py +0 -44
  327. flock/core/api/service.py +0 -214
  328. flock/core/config/flock_agent_config.py +0 -11
  329. flock/core/config/scheduled_agent_config.py +0 -40
  330. flock/core/context/context.py +0 -214
  331. flock/core/context/context_manager.py +0 -40
  332. flock/core/context/context_vars.py +0 -11
  333. flock/core/evaluation/utils.py +0 -395
  334. flock/core/execution/batch_executor.py +0 -369
  335. flock/core/execution/evaluation_executor.py +0 -438
  336. flock/core/execution/local_executor.py +0 -31
  337. flock/core/execution/opik_executor.py +0 -103
  338. flock/core/execution/temporal_executor.py +0 -166
  339. flock/core/flock.py +0 -1003
  340. flock/core/flock_agent.py +0 -1258
  341. flock/core/flock_evaluator.py +0 -60
  342. flock/core/flock_factory.py +0 -513
  343. flock/core/flock_module.py +0 -207
  344. flock/core/flock_registry.py +0 -702
  345. flock/core/flock_router.py +0 -83
  346. flock/core/flock_scheduler.py +0 -166
  347. flock/core/flock_server_manager.py +0 -136
  348. flock/core/interpreter/python_interpreter.py +0 -689
  349. flock/core/logging/live_capture.py +0 -137
  350. flock/core/logging/trace_and_logged.py +0 -59
  351. flock/core/mcp/__init__.py +0 -1
  352. flock/core/mcp/flock_mcp_server.py +0 -640
  353. flock/core/mcp/mcp_client_manager.py +0 -201
  354. flock/core/mcp/types/__init__.py +0 -1
  355. flock/core/mixin/dspy_integration.py +0 -445
  356. flock/core/mixin/prompt_parser.py +0 -125
  357. flock/core/serialization/__init__.py +0 -13
  358. flock/core/serialization/callable_registry.py +0 -52
  359. flock/core/serialization/flock_serializer.py +0 -854
  360. flock/core/serialization/json_encoder.py +0 -41
  361. flock/core/serialization/secure_serializer.py +0 -175
  362. flock/core/serialization/serializable.py +0 -342
  363. flock/core/serialization/serialization_utils.py +0 -409
  364. flock/core/util/file_path_utils.py +0 -223
  365. flock/core/util/hydrator.py +0 -309
  366. flock/core/util/input_resolver.py +0 -141
  367. flock/core/util/loader.py +0 -59
  368. flock/core/util/splitter.py +0 -219
  369. flock/di.py +0 -41
  370. flock/evaluators/__init__.py +0 -1
  371. flock/evaluators/declarative/__init__.py +0 -1
  372. flock/evaluators/declarative/declarative_evaluator.py +0 -217
  373. flock/evaluators/memory/memory_evaluator.py +0 -90
  374. flock/evaluators/test/test_case_evaluator.py +0 -38
  375. flock/evaluators/zep/zep_evaluator.py +0 -59
  376. flock/modules/__init__.py +0 -1
  377. flock/modules/assertion/__init__.py +0 -1
  378. flock/modules/assertion/assertion_module.py +0 -286
  379. flock/modules/callback/__init__.py +0 -1
  380. flock/modules/callback/callback_module.py +0 -91
  381. flock/modules/enterprise_memory/README.md +0 -99
  382. flock/modules/enterprise_memory/enterprise_memory_module.py +0 -526
  383. flock/modules/mem0/__init__.py +0 -1
  384. flock/modules/mem0/mem0_module.py +0 -126
  385. flock/modules/mem0_async/__init__.py +0 -1
  386. flock/modules/mem0_async/async_mem0_module.py +0 -126
  387. flock/modules/memory/__init__.py +0 -1
  388. flock/modules/memory/memory_module.py +0 -429
  389. flock/modules/memory/memory_parser.py +0 -125
  390. flock/modules/memory/memory_storage.py +0 -736
  391. flock/modules/output/__init__.py +0 -1
  392. flock/modules/output/output_module.py +0 -196
  393. flock/modules/performance/__init__.py +0 -1
  394. flock/modules/performance/metrics_module.py +0 -678
  395. flock/modules/zep/__init__.py +0 -1
  396. flock/modules/zep/zep_module.py +0 -192
  397. flock/platform/docker_tools.py +0 -49
  398. flock/platform/jaeger_install.py +0 -86
  399. flock/routers/__init__.py +0 -1
  400. flock/routers/agent/__init__.py +0 -1
  401. flock/routers/agent/agent_router.py +0 -236
  402. flock/routers/agent/handoff_agent.py +0 -58
  403. flock/routers/conditional/conditional_router.py +0 -486
  404. flock/routers/default/__init__.py +0 -1
  405. flock/routers/default/default_router.py +0 -80
  406. flock/routers/feedback/feedback_router.py +0 -114
  407. flock/routers/list_generator/list_generator_router.py +0 -166
  408. flock/routers/llm/__init__.py +0 -1
  409. flock/routers/llm/llm_router.py +0 -365
  410. flock/tools/__init__.py +0 -0
  411. flock/tools/azure_tools.py +0 -781
  412. flock/tools/code_tools.py +0 -167
  413. flock/tools/file_tools.py +0 -149
  414. flock/tools/github_tools.py +0 -157
  415. flock/tools/markdown_tools.py +0 -205
  416. flock/tools/system_tools.py +0 -9
  417. flock/tools/text_tools.py +0 -810
  418. flock/tools/web_tools.py +0 -92
  419. flock/tools/zendesk_tools.py +0 -501
  420. flock/webapp/__init__.py +0 -1
  421. flock/webapp/app/__init__.py +0 -0
  422. flock/webapp/app/api/__init__.py +0 -0
  423. flock/webapp/app/api/agent_management.py +0 -237
  424. flock/webapp/app/api/execution.py +0 -503
  425. flock/webapp/app/api/flock_management.py +0 -125
  426. flock/webapp/app/api/registry_viewer.py +0 -29
  427. flock/webapp/app/chat.py +0 -662
  428. flock/webapp/app/config.py +0 -104
  429. flock/webapp/app/dependencies.py +0 -117
  430. flock/webapp/app/main.py +0 -1086
  431. flock/webapp/app/middleware.py +0 -113
  432. flock/webapp/app/models_ui.py +0 -7
  433. flock/webapp/app/services/__init__.py +0 -0
  434. flock/webapp/app/services/feedback_file_service.py +0 -363
  435. flock/webapp/app/services/flock_service.py +0 -345
  436. flock/webapp/app/services/sharing_models.py +0 -81
  437. flock/webapp/app/services/sharing_store.py +0 -597
  438. flock/webapp/app/templates/theme_mapper.html +0 -326
  439. flock/webapp/app/theme_mapper.py +0 -811
  440. flock/webapp/app/utils.py +0 -85
  441. flock/webapp/run.py +0 -219
  442. flock/webapp/static/css/chat.css +0 -301
  443. flock/webapp/static/css/components.css +0 -167
  444. flock/webapp/static/css/header.css +0 -39
  445. flock/webapp/static/css/layout.css +0 -281
  446. flock/webapp/static/css/sidebar.css +0 -127
  447. flock/webapp/static/css/two-pane.css +0 -48
  448. flock/webapp/templates/base.html +0 -389
  449. flock/webapp/templates/chat.html +0 -152
  450. flock/webapp/templates/chat_settings.html +0 -19
  451. flock/webapp/templates/flock_editor.html +0 -16
  452. flock/webapp/templates/index.html +0 -12
  453. flock/webapp/templates/partials/_agent_detail_form.html +0 -93
  454. flock/webapp/templates/partials/_agent_list.html +0 -18
  455. flock/webapp/templates/partials/_agent_manager_view.html +0 -51
  456. flock/webapp/templates/partials/_agent_tools_checklist.html +0 -14
  457. flock/webapp/templates/partials/_chat_container.html +0 -15
  458. flock/webapp/templates/partials/_chat_messages.html +0 -57
  459. flock/webapp/templates/partials/_chat_settings_form.html +0 -85
  460. flock/webapp/templates/partials/_create_flock_form.html +0 -50
  461. flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -17
  462. flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -16
  463. flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -28
  464. flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -16
  465. flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -22
  466. flock/webapp/templates/partials/_env_vars_table.html +0 -23
  467. flock/webapp/templates/partials/_execution_form.html +0 -127
  468. flock/webapp/templates/partials/_execution_view_container.html +0 -28
  469. flock/webapp/templates/partials/_flock_file_list.html +0 -23
  470. flock/webapp/templates/partials/_flock_properties_form.html +0 -52
  471. flock/webapp/templates/partials/_flock_upload_form.html +0 -16
  472. flock/webapp/templates/partials/_header_flock_status.html +0 -5
  473. flock/webapp/templates/partials/_live_logs.html +0 -13
  474. flock/webapp/templates/partials/_load_manager_view.html +0 -49
  475. flock/webapp/templates/partials/_registry_table.html +0 -25
  476. flock/webapp/templates/partials/_registry_viewer_content.html +0 -70
  477. flock/webapp/templates/partials/_results_display.html +0 -78
  478. flock/webapp/templates/partials/_settings_env_content.html +0 -9
  479. flock/webapp/templates/partials/_settings_theme_content.html +0 -14
  480. flock/webapp/templates/partials/_settings_view.html +0 -36
  481. flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -11
  482. flock/webapp/templates/partials/_share_link_snippet.html +0 -35
  483. flock/webapp/templates/partials/_sidebar.html +0 -74
  484. flock/webapp/templates/partials/_structured_data_view.html +0 -40
  485. flock/webapp/templates/partials/_theme_preview.html +0 -36
  486. flock/webapp/templates/registry_viewer.html +0 -84
  487. flock/webapp/templates/shared_run_page.html +0 -140
  488. flock/workflow/__init__.py +0 -0
  489. flock/workflow/activities.py +0 -237
  490. flock/workflow/agent_activities.py +0 -24
  491. flock/workflow/agent_execution_activity.py +0 -240
  492. flock/workflow/flock_workflow.py +0 -225
  493. flock/workflow/temporal_config.py +0 -96
  494. flock/workflow/temporal_setup.py +0 -60
  495. flock_core-0.4.542.dist-info/METADATA +0 -676
  496. flock_core-0.4.542.dist-info/RECORD +0 -572
  497. flock_core-0.4.542.dist-info/entry_points.txt +0 -2
  498. /flock/{core/logging → logging}/formatters/themes.py +0 -0
  499. /flock/{core/logging → logging}/span_middleware/baggage_span_processor.py +0 -0
  500. /flock/{core/mcp → mcp}/util/__init__.py +0 -0
  501. {flock_core-0.4.542.dist-info → flock_core-0.5.0.dist-info}/WHEEL +0 -0
@@ -1,676 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: flock-core
3
- Version: 0.4.542
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: aiosqlite>=0.21.0
12
- Requires-Dist: azure-data-tables>=12.7.0
13
- Requires-Dist: azure-storage-blob>=12.25.1
14
- Requires-Dist: cloudpickle>=3.1.1
15
- Requires-Dist: croniter>=6.0.0
16
- Requires-Dist: devtools>=0.12.2
17
- Requires-Dist: dspy==2.6.23
18
- Requires-Dist: fastapi>=0.115.8
19
- Requires-Dist: httpx>=0.28.1
20
- Requires-Dist: litellm>=v1.75.3
21
- Requires-Dist: loguru>=0.7.3
22
- Requires-Dist: markdown2>=2.5.3
23
- Requires-Dist: mcp>=1.7.1
24
- Requires-Dist: msgpack>=1.1.0
25
- Requires-Dist: openai==1.75.0
26
- Requires-Dist: opentelemetry-api>=1.30.0
27
- Requires-Dist: opentelemetry-exporter-jaeger-proto-grpc>=1.21.0
28
- Requires-Dist: opentelemetry-exporter-jaeger>=1.21.0
29
- Requires-Dist: opentelemetry-exporter-otlp>=1.30.0
30
- Requires-Dist: opentelemetry-instrumentation-logging>=0.51b0
31
- Requires-Dist: opentelemetry-sdk>=1.30.0
32
- Requires-Dist: opik>=1.7.26
33
- Requires-Dist: pandas>=2.2.3
34
- Requires-Dist: pillow>=10.4.0
35
- Requires-Dist: prometheus-client>=0.21.1
36
- Requires-Dist: psutil>=6.1.1
37
- Requires-Dist: pydantic-settings>=2.7.1
38
- Requires-Dist: pydantic==2.10.5
39
- Requires-Dist: python-box>=7.3.2
40
- Requires-Dist: python-decouple>=3.8
41
- Requires-Dist: python-dotenv>=1.0.1
42
- Requires-Dist: pyyaml>=6.0
43
- Requires-Dist: questionary>=2.1.0
44
- Requires-Dist: rich>=13.7.1
45
- Requires-Dist: temporalio>=1.9.0
46
- Requires-Dist: thefuzz>=0.22.1
47
- Requires-Dist: tiktoken>=0.8.0
48
- Requires-Dist: toml>=0.10.2
49
- Requires-Dist: tqdm>=4.60.1
50
- Requires-Dist: uvicorn>=0.29.1
51
- Requires-Dist: wd-di>=0.2.14
52
- Requires-Dist: websockets>=13.0.1
53
- Requires-Dist: werkzeug>=3.1.3
54
- Requires-Dist: xlsxwriter>=3.2.3
55
- Provides-Extra: all
56
- Requires-Dist: azure-identity>=1.23.0; extra == 'all'
57
- Requires-Dist: azure-search-documents>=11.5.2; extra == 'all'
58
- Requires-Dist: azure-storage-blob>=12.25.1; extra == 'all'
59
- Requires-Dist: chromadb>=0.6.3; extra == 'all'
60
- Requires-Dist: datasets>=3.2.0; extra == 'all'
61
- Requires-Dist: ddgs>=9.2.0; extra == 'all'
62
- Requires-Dist: docling>=2.34.0; extra == 'all'
63
- Requires-Dist: markdownify>=0.14.1; extra == 'all'
64
- Requires-Dist: matplotlib>=3.10.0; extra == 'all'
65
- Requires-Dist: mem0ai[graph]>=0.1.101; extra == 'all'
66
- Requires-Dist: nltk>=3.9.1; extra == 'all'
67
- Requires-Dist: rouge-score>=0.1.2; extra == 'all'
68
- Requires-Dist: sentence-transformers>=3.4.1; extra == 'all'
69
- Requires-Dist: tavily-python>=0.5.0; extra == 'all'
70
- Requires-Dist: zep-python>=2.0.2; extra == 'all'
71
- Provides-Extra: all-tools
72
- Requires-Dist: azure-identity>=1.23.0; extra == 'all-tools'
73
- Requires-Dist: azure-search-documents>=11.5.2; extra == 'all-tools'
74
- Requires-Dist: azure-storage-blob>=12.25.1; extra == 'all-tools'
75
- Requires-Dist: ddgs>=9.2.0; extra == 'all-tools'
76
- Requires-Dist: docker>=7.1.0; extra == 'all-tools'
77
- Requires-Dist: docling>=2.34.0; extra == 'all-tools'
78
- Requires-Dist: markdownify>=0.14.1; extra == 'all-tools'
79
- Requires-Dist: nltk>=3.9.1; extra == 'all-tools'
80
- Requires-Dist: tavily-python>=0.5.0; extra == 'all-tools'
81
- Provides-Extra: azure-tools
82
- Requires-Dist: azure-identity>=1.23.0; extra == 'azure-tools'
83
- Requires-Dist: azure-search-documents>=11.5.2; extra == 'azure-tools'
84
- Requires-Dist: azure-storage-blob>=12.25.1; extra == 'azure-tools'
85
- Provides-Extra: basic-tools
86
- Requires-Dist: ddgs>=9.2.0; extra == 'basic-tools'
87
- Requires-Dist: markdownify>=0.14.1; extra == 'basic-tools'
88
- Requires-Dist: tavily-python>=0.5.0; extra == 'basic-tools'
89
- Provides-Extra: code-tools
90
- Requires-Dist: docker>=7.1.0; extra == 'code-tools'
91
- Provides-Extra: evaluation
92
- Requires-Dist: datasets>=3.2.0; extra == 'evaluation'
93
- Requires-Dist: rouge-score>=0.1.2; extra == 'evaluation'
94
- Requires-Dist: sentence-transformers>=3.4.1; extra == 'evaluation'
95
- Provides-Extra: llm-tools
96
- Requires-Dist: nltk>=3.9.1; extra == 'llm-tools'
97
- Provides-Extra: memory
98
- Requires-Dist: chromadb>=0.6.3; extra == 'memory'
99
- Requires-Dist: matplotlib>=3.10.0; extra == 'memory'
100
- Requires-Dist: mem0ai[graph]>=0.1.101; extra == 'memory'
101
- Requires-Dist: zep-python>=2.0.2; extra == 'memory'
102
- Description-Content-Type: text/markdown
103
-
104
- <p align="center">
105
- <!-- Placeholder for your Flock Logo/Banner - Replace URL -->
106
- <img alt="Flock Banner" src="https://raw.githubusercontent.com/whiteducksoftware/flock/master/docs/assets/images/flock.png" width="600">
107
- </p>
108
- <p align="center">
109
- <!-- Update badges -->
110
- <a href="https://pypi.org/project/flock-core/" target="_blank"><img alt="PyPI Version" src="https://img.shields.io/pypi/v/flock-core?style=for-the-badge&logo=pypi&label=pip%20version"></a>
111
- <img alt="Python Version" src="https://img.shields.io/badge/python-3.10%2B-blue?style=for-the-badge&logo=python">
112
- <a href="https://github.com/whiteducksoftware/flock/actions/workflows/deploy-whiteduck-pypi.yml" target="_blank"><img alt="CI Status" src="https://img.shields.io/github/actions/workflow/status/whiteducksoftware/flock/deploy-whiteduck-pypi.yml?branch=master&style=for-the-badge&logo=githubactions&logoColor=white"></a>
113
- <a href="https://github.com/whiteducksoftware/flock/blob/master/LICENSE" target="_blank"><img alt="License" src="https://img.shields.io/pypi/l/flock-core?style=for-the-badge"></a>
114
- <a href="https://whiteduck.de" target="_blank"><img alt="Built by white duck" src="https://img.shields.io/badge/Built%20by-white%20duck%20GmbH-white?style=for-the-badge&labelColor=black"></a>
115
- <a href="https://www.linkedin.com/company/whiteduck" target="_blank"><img alt="LinkedIn" src="https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge&logo=linkedin&logoColor=white&label=whiteduck"></a>
116
- <a href="https://bsky.app/profile/whiteduck-gmbh.bsky.social" target="_blank"><img alt="Bluesky" src="https://img.shields.io/badge/bluesky-Follow-blue?style=for-the-badge&logo=bluesky&logoColor=%23fff&color=%23333&labelColor=%230285FF&label=whiteduck-gmbh"></a>
117
- </p>
118
-
119
-
120
- ---
121
-
122
-
123
- ## The Problem You Know Too Well
124
-
125
- 🤯 **Prompt Hell**: Brittle 500-line prompts that break with every model update.
126
- 💥 **System Failures**: One bad LLM response crashes your entire workflow
127
- 🧪 **Testing Nightmares**: "How do I unit test a prompt?" (You don't.)
128
- 🧪 **Measuring Quality**: "How do I know my prompts are close to optimal?" (You also don't.)
129
- 📄 **Output Chaos**: Parsing unstructured LLM responses into reliable data
130
- ⛓️ **Orchestration Limits**: Moving beyond simple chains and DAGs? Good luck
131
- 🚀 **Production Gap**: Jupyter notebooks don't scale to enterprise systems
132
-
133
- *After building dozens of AI systems for enterprise clients, we realized the tooling was fundamentally broken.*
134
-
135
-
136
- **Build with agents, not against them.**
137
-
138
-
139
- ## The Flock Solution
140
-
141
- **What if you could just skip that 'prompt engineering' step?**
142
-
143
- Flock is an agent framework for declarative AI workflows. You define what goes in and what should come out, the how is handled by the agent.
144
- No brittle prompts. No guesswork. Just reliable, testable AI agents.
145
-
146
-
147
- ✅ **Declarative Contracts**: Define inputs/outputs with Pydantic models. Flock handles the LLM complexity.
148
- ⚡ **Built-in Resilience**: Automatic retries, state persistence, and workflow resumption via Temporal.io
149
- 🧪 **Actually Testable**: Clear contracts make agents unit-testable like any other code
150
- 🧪 **Optimal Quality**: Agents posses multiple self-optimization algorithms based on latest research
151
- 🚀 **Dynamic Workflows**: Self-correcting loops, conditional routing, and intelligent decision-making
152
- 🔧 **Zero-Config Production**: Deploy as REST APIs with one command. Scale without rewriting.
153
-
154
- **Ready to see it in action?**
155
-
156
- ## ⚡ Quick Start
157
-
158
- ```python
159
- from flock.core import Flock, FlockFactory
160
-
161
- # 1. Create the main orchestrator
162
- my_flock = Flock(model="openai/gpt-4o")
163
-
164
- # 2. Declaratively define an agent
165
- brainstorm_agent = FlockFactory.create_default_agent(
166
- name="idea_generator",
167
- input="topic",
168
- output="catchy_title, key_points"
169
- )
170
-
171
- # 3. Add the agent to the Flock
172
- my_flock.add_agent(brainstorm_agent)
173
-
174
- # 4. Run the agent!
175
- input_data = {"topic": "The future of AI agents"}
176
- result = my_flock.run(start_agent="idea_generator", input=input_data)
177
-
178
- # The result is a Box object (dot-accessible dict)
179
- print(f"Generated Title: {result.catchy_title}")
180
- print(f"Key Points: {result.key_points}")
181
- ```
182
-
183
- **No 20-line prompt fiddling. Just structured output, every time.**
184
-
185
- ![image](https://github.com/user-attachments/assets/37a897cb-910f-49fc-89d4-510a780ad775)
186
-
187
- **Explore more examples →** [**Flock Showcase Repository**](https://github.com/whiteducksoftware/flock-showcase)
188
-
189
- ## 📹 Video Demo
190
-
191
- https://github.com/user-attachments/assets/bdab4786-d532-459f-806a-024727164dcc
192
-
193
-
194
-
195
- ## 💾 Installation - Use Flock in your project
196
-
197
- Get started with the core Flock library:
198
-
199
- ```bash
200
- # Using uv (recommended)
201
- uv pip install flock-core
202
-
203
- # Using pip
204
- pip install flock-core
205
- ```
206
-
207
- Extras: Install optional dependencies for specific features:
208
-
209
- ```bash
210
- # Common tools (Tavily, Markdownify)
211
- uv pip install flock-core[all-tools]
212
-
213
- # All optional dependencies (including tools, docling, etc.)
214
- uv sync --all-extras
215
- ```
216
-
217
- ## 🔑 Installation - Develop Flock
218
-
219
- ```bash
220
- git clone https://github.com/whiteducksoftware/flock.git
221
- cd flock
222
-
223
- # One-liner dev setup after cloning
224
- pip install poethepoet && poe install
225
- ```
226
-
227
- Additional provided `poe` tasks and commands:
228
-
229
- ```bash
230
- poe install # Install the project
231
- poe build # Build the project
232
- poe docs # Serve the docs
233
- poe format # Format the code
234
- poe lint # Lint the code
235
- ```
236
-
237
- ## 🔑 Environment Setup
238
-
239
- Flock uses environment variables (typically in a .env file) for configuration, especially API keys. Create a .env file in your project root:
240
-
241
- ```bash
242
- # .env - Example
243
-
244
- # --- LLM Provider API Keys (Required by most examples) ---
245
- # Add keys for providers you use (OpenAI, Anthropic, Gemini, Azure, etc.)
246
- # Refer to litellm docs (https://docs.litellm.ai/docs/providers) for names
247
- OPENAI_API_KEY="your-openai-api-key"
248
- # ANTHROPIC_API_KEY="your-anthropic-api-key"
249
-
250
- # --- Tool-Specific Keys (Optional) ---
251
- # TAVILY_API_KEY="your-tavily-search-key"
252
- # GITHUB_PAT="your-github-personal-access-token"
253
-
254
- # --- Default Flock Settings (Optional) ---
255
- DEFAULT_MODEL="openai/gpt-4o" # Default LLM if agent doesn't specify
256
-
257
- # --- Flock CLI Settings (Managed by `flock settings`) ---
258
- # SHOW_SECRETS="False"
259
- # VARS_PER_PAGE="20"
260
- ```
261
-
262
- Be sure that the .env file is added to your .gitignore!
263
-
264
-
265
- ## 🐤 New in Flock 0.4.0 `Magpie` 🐤
266
- <p align="center">
267
- <img width="300" alt="image" src="https://github.com/user-attachments/assets/34c2fe2f-6dd2-498c-a826-1687cb158755" />
268
- </p>
269
-
270
- ### 0.4.5 - MCP Support - Declaratively connect to 1000s of different tools!
271
-
272
- Create a server
273
-
274
- ```python
275
- ws_fetch_server = FlockFactory.create_mcp_server(
276
- name="fetch_server",
277
- enable_tools_feature=True,
278
- connection_params=FlockFactory.WebsocketParams(
279
- url="ws://localhost:4001/message"
280
- ),
281
- ```
282
-
283
- Add it to Flock
284
-
285
- ```python
286
- flock = Flock(
287
- name="mcp_testbed",
288
- servers=[
289
- ws_fetch_server
290
- ]
291
- )
292
- ```
293
-
294
- And tell the flock agents which server to use
295
-
296
- ```python
297
- webcrawler_agent = FlockFactory.create_default_agent(
298
- name="webcrawler_agent",
299
- description="Expert for looking up and retrieving web content",
300
- input="query: str | User-Query, initial_url: Optional[str] | Optional url to start search from.",
301
- output="answer: str | Answer to user-query, page_url: str | The url of the page where the answer was found on, page_content: str | Markdown content of the page where the answer was found.",
302
- servers=[ws_fetch_server], # servers are passed here.
303
- )
304
- ```
305
-
306
- Done! The Flock agent has now access to every tool the server offers.
307
-
308
-
309
- ### 🚀 REST API – Deploy Flock Agents as REST API Endpoints
310
-
311
- Easily deploy your Flock agents as scalable REST API endpoints. Interact with your agent workflows via standard HTTP requests.
312
-
313
- The all-in-one `flock.serve()` method turns your Flock into a proper REST API!
314
-
315
- <img width="1135" alt="image" src="https://github.com/user-attachments/assets/95a58e96-d866-4fd1-aca3-c7635843503c" />
316
-
317
- Need custom endpoints to wrap abstract agent logic or add business logic? We've got you.
318
- Define them. Declaratively.
319
-
320
- ```python
321
- word_count_route = FlockEndpoint(
322
- path="/api/word_count",
323
- methods=["GET"],
324
- callback=word_count,
325
- query_model=WordCountParams,
326
- response_model=WordCountResponse,
327
- summary="Counts words in a text",
328
- description="Takes a text and returns the number of words in it.",
329
- )
330
-
331
- flock.serve(custom_endpoints=[img_url_route, word_count_route, yoda_route])
332
- ```
333
-
334
- <img width="1135" alt="image" src="https://github.com/user-attachments/assets/d9315648-ac10-4129-aca4-1cb4c8835672" />
335
-
336
- Want chat and UI too? Just turn them on.
337
-
338
- ```python
339
- flock.serve(ui=True, chat=True)
340
- ```
341
-
342
- ---
343
-
344
- ### 🖥️ Web UI – Test Flock Agents in the Browser
345
-
346
- Test and interact with your Flock agents directly in your browser using an integrated web interface.
347
-
348
- ![image](https://github.com/user-attachments/assets/5746ae82-757b-43a3-931d-56d19d39371a)
349
-
350
- Highlights of this feature-rich interface:
351
-
352
- * Run all your agents and agent flows
353
- * Chat with your agents
354
- * Create sharable links – these freeze agent config so testers can focus on evaluation
355
- * Send direct feedback – includes everything needed to reproduce issues
356
- * Switch modes – like standalone chat mode, which hides all but the chat
357
-
358
- <img width="1135" alt="image" src="https://github.com/user-attachments/assets/398337ee-e56e-4bce-8bd8-d258c261cb64" />
359
-
360
- And much, much more... All features are based on real-world client feedback and serve actual business needs.
361
-
362
- ---
363
-
364
- ### ⌨️ CLI Tool – Manage Flock Agents via Command Line
365
-
366
- Manage configurations, run agents, and inspect results – all from your terminal. A quick way to test and validate serialized flocks.
367
-
368
- ![image](https://github.com/user-attachments/assets/9370e7e8-94c3-4e26-8c7e-46ff2edd667a)
369
-
370
- ---
371
-
372
- ### 💾 Enhanced Serialization – Share, Deploy, and Run Flocks from YAML
373
-
374
- Define and share entire Flock configurations using readable YAML files. Perfect for versioning, deployment, and portability.
375
-
376
- Take note how even custom types like `FantasyCharacter` are serialized so the target system doesn't even need your code! Everything portable!
377
-
378
- ```yaml
379
- name: pydantic_example
380
- model: openai/gpt-4o
381
- enable_temporal: false
382
- show_flock_banner: false
383
- temporal_start_in_process_worker: true
384
- agents:
385
- character_agent:
386
- name: character_agent
387
- model: openai/gpt-4o
388
- description: Generates fantasy RPG character profiles for a specified number of
389
- characters.
390
- input: 'number_of_characters: int | The number of fantasy character profiles to
391
- generate.'
392
- output: 'character_list: list[FantasyCharacter] | A list containing the generated
393
- character profiles.'
394
- write_to_file: false
395
- wait_for_input: false
396
- evaluator:
397
- name: default
398
- config:
399
- model: openai/gpt-4o
400
- use_cache: true
401
- temperature: 0.8
402
- max_tokens: 8192
403
- stream: false
404
- include_thought_process: false
405
- kwargs: {}
406
- type: DeclarativeEvaluator
407
- modules:
408
- output:
409
- name: output
410
- config:
411
- enabled: true
412
- theme: abernathy
413
- render_table: false
414
- max_length: 1000
415
- truncate_long_values: true
416
- show_metadata: true
417
- format_code_blocks: true
418
- custom_formatters: {}
419
- no_output: false
420
- print_context: false
421
- type: OutputModule
422
- metrics:
423
- name: metrics
424
- config:
425
- enabled: true
426
- collect_timing: true
427
- collect_memory: true
428
- collect_token_usage: true
429
- collect_cpu: true
430
- storage_type: json
431
- metrics_dir: metrics/
432
- aggregation_interval: 1h
433
- retention_days: 30
434
- alert_on_high_latency: true
435
- latency_threshold_ms: 30000
436
- type: MetricsModule
437
- types:
438
- FantasyCharacter:
439
- module_path: __main__
440
- type: pydantic.BaseModel
441
- schema:
442
- description: 'Data model for fantasy RPG character information.
443
-
444
- Docstrings and Field descriptions can help guide the LLM.'
445
- properties:
446
- name:
447
- description: A creative fantasy character name.
448
- title: Name
449
- type: string
450
- race:
451
- description: The character's race.
452
- enum:
453
- - human
454
- - elf
455
- - dwarf
456
- - orc
457
- - halfling
458
- title: Race
459
- type: string
460
- class_type:
461
- description: The character's class.
462
- enum:
463
- - warrior
464
- - mage
465
- - rogue
466
- - cleric
467
- - ranger
468
- title: Class Type
469
- type: string
470
- level:
471
- description: Character level
472
- title: Level
473
- type: integer
474
- strength:
475
- description: Strength stat
476
- title: Strength
477
- type: integer
478
- dexterity:
479
- description: Dexterity stat
480
- title: Dexterity
481
- type: integer
482
- constitution:
483
- description: Constitution stat
484
- title: Constitution
485
- type: integer
486
- intelligence:
487
- description: Intelligence stat
488
- title: Intelligence
489
- type: integer
490
- wisdom:
491
- description: Wisdom stat
492
- title: Wisdom
493
- type: integer
494
- charisma:
495
- description: Charisma stat
496
- title: Charisma
497
- type: integer
498
- weapons:
499
- description: A list of weapons the character carries.
500
- items:
501
- type: string
502
- title: Weapons
503
- type: array
504
- backstory:
505
- description: A brief, engaging backstory (2-3 sentences).
506
- title: Backstory
507
- type: string
508
- motivation:
509
- description: The character's motivation for their adventuring.
510
- title: Motivation
511
- type: string
512
- alignment:
513
- description: Character's moral alignment
514
- title: Alignment
515
- type: string
516
- required:
517
- - name
518
- - race
519
- - class_type
520
- - level
521
- - strength
522
- - dexterity
523
- - constitution
524
- - intelligence
525
- - wisdom
526
- - charisma
527
- - weapons
528
- - backstory
529
- - motivation
530
- - alignment
531
- type: object
532
- components:
533
- DeclarativeEvaluator:
534
- type: flock_component
535
- module_path: flock.evaluators.declarative.declarative_evaluator
536
- file_path: src\\flock\\evaluators\\declarative\\declarative_evaluator.py
537
- description: Evaluator that uses DSPy for generation.
538
- OutputModule:
539
- type: flock_component
540
- module_path: flock.modules.output.output_module
541
- file_path: src\\flock\\modules\\output\\output_module.py
542
- description: Module that handles output formatting and display.
543
- MetricsModule:
544
- type: flock_component
545
- module_path: flock.modules.performance.metrics_module
546
- file_path: src\\flock\\modules\\performance\\metrics_module.py
547
- description: Module for collecting and analyzing agent performance metrics.
548
- dependencies:
549
- - pydantic>=2.0.0
550
- - flock-core>=0.4.0
551
- metadata:
552
- path_type: relative
553
- flock_version: 0.4.0
554
-
555
- ```
556
-
557
- Why is text-based serialization cool? Because agents can manipulate their own config – go wild with meta agents and experiments.
558
-
559
- ---
560
-
561
- ### 🌀 New Execution Flows – Batch and Evaluation Modes
562
-
563
- Run Flock in batch mode to process multiple inputs or in evaluation mode to benchmark agents against question/answer pairs.
564
-
565
- ```python
566
- batch_data = [
567
- {"topic": "Robot Kittens", "audience": "Tech Enthusiasts"},
568
- {"topic": "AI in Gardening", "audience": "Homeowners"},
569
- ...
570
- ]
571
-
572
- static_data = {"number_of_slides": 6}
573
-
574
- silent_results = flock.run_batch(
575
- start_agent=presentation_agent,
576
- batch_inputs=batch_data,
577
- static_inputs=static_data,
578
- parallel=True,
579
- max_workers=5,
580
- silent_mode=True,
581
- return_errors=True,
582
- write_to_csv=".flock/batch_results.csv",
583
- )
584
- ```
585
-
586
- Supports CSV in and out. Combine with `.evaluate()` to benchmark Flock with known Q/A sets.
587
-
588
- ---
589
-
590
- ### ⏱️ First-Class Temporal Integration
591
-
592
- Flock 0.4.0 brings seamless integration with Temporal.io. Build production-grade, reliable, and scalable agent workflows.
593
-
594
- ```python
595
- flock = Flock(
596
- enable_temporal=True,
597
- temporal_config=TemporalWorkflowConfig(
598
- task_queue="flock-test-queue",
599
- workflow_execution_timeout=timedelta(minutes=10),
600
- default_activity_retry_policy=TemporalRetryPolicyConfig(
601
- maximum_attempts=2
602
- ),
603
- ),
604
- )
605
- ```
606
-
607
- Just set a flag. Add your constraints. Now you've got retry policies, timeout control, and error handling baked in.
608
-
609
- ---
610
-
611
- ### ✨ Utility – @flockclass Hydrator
612
-
613
- Flock also adds conveniences. With `@flockclass`, you can turn any Pydantic model into a self-hydrating agent.
614
-
615
- ```python
616
- from pydantic import BaseModel
617
- from flock.util.hydrator import flockclass
618
-
619
- @flockclass(model="openai/gpt-4o")
620
- class CharacterIdea(BaseModel):
621
- name: str
622
- char_class: str
623
- race: str
624
- backstory_hook: str | None = None
625
- personality_trait: str | None = None
626
-
627
- async def create_character():
628
- char = CharacterIdea(name="Gorok", char_class="Barbarian", race="Orc")
629
- print(f"Before Hydration: {char}")
630
-
631
- hydrated_char = await char.hydrate()
632
-
633
- print(f"\nAfter Hydration: {hydrated_char}")
634
- print(f"Backstory Hook: {hydrated_char.backstory_hook}")
635
- ```
636
-
637
-
638
-
639
- --------------------------------
640
-
641
- ## 📚 Examples & Tutorials
642
-
643
- For a comprehensive set of examples, ranging from basic usage to complex projects and advanced features, please visit our dedicated showcase repository:
644
-
645
- ➡️ [github.com/whiteducksoftware/flock-showcase](https://github.com/whiteducksoftware/flock-showcase) ⬅️
646
-
647
- The showcase includes:
648
-
649
- - Step-by-step guides for core concepts.
650
- - Examples of tool usage, routing, memory, and more.
651
- - Complete mini-projects demonstrating practical applications.
652
-
653
- ## 📖 Documentation
654
-
655
- Full documentation, including API references and conceptual explanations, can be found at:
656
-
657
- ➡️ [whiteducksoftware.github.io/flock/](https://whiteducksoftware.github.io/flock/) ⬅️
658
-
659
- ## 🤝 Contributing
660
-
661
- We welcome contributions! Please see the CONTRIBUTING.md file (if available) or open an issue/pull request on GitHub.
662
-
663
- Ways to contribute:
664
-
665
- - Report bugs or suggest features.
666
- - Improve documentation.
667
- - Contribute new Modules, Evaluators, or Routers.
668
- - Add examples to the flock-showcase repository.
669
-
670
- ## 📜 License
671
-
672
- Flock is licensed under the MIT License. See the LICENSE file for details.
673
-
674
- ## 🏢 About
675
-
676
- Flock is developed and maintained by white duck GmbH, your partner for cloud-native solutions and AI integration.