flock-core 0.5.0b28__py3-none-any.whl → 0.5.0b51__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 (469) hide show
  1. flock/__init__.py +12 -217
  2. flock/agent.py +678 -0
  3. flock/api/themes.py +71 -0
  4. flock/artifacts.py +79 -0
  5. flock/cli.py +75 -0
  6. flock/components.py +173 -0
  7. flock/dashboard/__init__.py +28 -0
  8. flock/dashboard/collector.py +283 -0
  9. flock/dashboard/events.py +182 -0
  10. flock/dashboard/launcher.py +230 -0
  11. flock/dashboard/service.py +537 -0
  12. flock/dashboard/websocket.py +235 -0
  13. flock/engines/__init__.py +6 -0
  14. flock/engines/dspy_engine.py +856 -0
  15. flock/examples.py +128 -0
  16. flock/frontend/README.md +678 -0
  17. flock/frontend/docs/DESIGN_SYSTEM.md +1980 -0
  18. flock/frontend/index.html +12 -0
  19. flock/frontend/package-lock.json +4347 -0
  20. flock/frontend/package.json +48 -0
  21. flock/frontend/src/App.tsx +79 -0
  22. flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx +587 -0
  23. flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx +387 -0
  24. flock/frontend/src/__tests__/integration/graph-rendering.test.tsx +640 -0
  25. flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +699 -0
  26. flock/frontend/src/components/common/BuildInfo.tsx +39 -0
  27. flock/frontend/src/components/common/EmptyState.module.css +115 -0
  28. flock/frontend/src/components/common/EmptyState.tsx +128 -0
  29. flock/frontend/src/components/common/ErrorBoundary.module.css +169 -0
  30. flock/frontend/src/components/common/ErrorBoundary.tsx +118 -0
  31. flock/frontend/src/components/common/KeyboardShortcutsDialog.css +251 -0
  32. flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +151 -0
  33. flock/frontend/src/components/common/LoadingSpinner.module.css +97 -0
  34. flock/frontend/src/components/common/LoadingSpinner.tsx +29 -0
  35. flock/frontend/src/components/controls/PublishControl.css +547 -0
  36. flock/frontend/src/components/controls/PublishControl.test.tsx +543 -0
  37. flock/frontend/src/components/controls/PublishControl.tsx +432 -0
  38. flock/frontend/src/components/details/DetailWindowContainer.tsx +62 -0
  39. flock/frontend/src/components/details/LiveOutputTab.test.tsx +792 -0
  40. flock/frontend/src/components/details/LiveOutputTab.tsx +220 -0
  41. flock/frontend/src/components/details/MessageHistoryTab.tsx +299 -0
  42. flock/frontend/src/components/details/NodeDetailWindow.test.tsx +501 -0
  43. flock/frontend/src/components/details/NodeDetailWindow.tsx +218 -0
  44. flock/frontend/src/components/details/RunStatusTab.tsx +307 -0
  45. flock/frontend/src/components/details/tabs.test.tsx +1015 -0
  46. flock/frontend/src/components/filters/CorrelationIDFilter.module.css +102 -0
  47. flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +197 -0
  48. flock/frontend/src/components/filters/CorrelationIDFilter.tsx +121 -0
  49. flock/frontend/src/components/filters/FilterBar.module.css +29 -0
  50. flock/frontend/src/components/filters/FilterBar.test.tsx +133 -0
  51. flock/frontend/src/components/filters/FilterBar.tsx +33 -0
  52. flock/frontend/src/components/filters/FilterPills.module.css +79 -0
  53. flock/frontend/src/components/filters/FilterPills.test.tsx +173 -0
  54. flock/frontend/src/components/filters/FilterPills.tsx +67 -0
  55. flock/frontend/src/components/filters/TimeRangeFilter.module.css +91 -0
  56. flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +154 -0
  57. flock/frontend/src/components/filters/TimeRangeFilter.tsx +105 -0
  58. flock/frontend/src/components/graph/AgentNode.test.tsx +75 -0
  59. flock/frontend/src/components/graph/AgentNode.tsx +322 -0
  60. flock/frontend/src/components/graph/GraphCanvas.tsx +406 -0
  61. flock/frontend/src/components/graph/MessageFlowEdge.tsx +128 -0
  62. flock/frontend/src/components/graph/MessageNode.test.tsx +62 -0
  63. flock/frontend/src/components/graph/MessageNode.tsx +116 -0
  64. flock/frontend/src/components/graph/MiniMap.tsx +47 -0
  65. flock/frontend/src/components/graph/TransformEdge.tsx +123 -0
  66. flock/frontend/src/components/layout/DashboardLayout.css +407 -0
  67. flock/frontend/src/components/layout/DashboardLayout.tsx +300 -0
  68. flock/frontend/src/components/layout/Header.module.css +88 -0
  69. flock/frontend/src/components/layout/Header.tsx +52 -0
  70. flock/frontend/src/components/modules/EventLogModule.test.tsx +401 -0
  71. flock/frontend/src/components/modules/EventLogModule.tsx +396 -0
  72. flock/frontend/src/components/modules/EventLogModuleWrapper.tsx +17 -0
  73. flock/frontend/src/components/modules/ModuleRegistry.test.ts +333 -0
  74. flock/frontend/src/components/modules/ModuleRegistry.ts +85 -0
  75. flock/frontend/src/components/modules/ModuleWindow.tsx +155 -0
  76. flock/frontend/src/components/modules/registerModules.ts +20 -0
  77. flock/frontend/src/components/settings/AdvancedSettings.tsx +175 -0
  78. flock/frontend/src/components/settings/AppearanceSettings.tsx +185 -0
  79. flock/frontend/src/components/settings/GraphSettings.tsx +110 -0
  80. flock/frontend/src/components/settings/SettingsPanel.css +327 -0
  81. flock/frontend/src/components/settings/SettingsPanel.tsx +131 -0
  82. flock/frontend/src/components/settings/ThemeSelector.tsx +298 -0
  83. flock/frontend/src/hooks/useKeyboardShortcuts.ts +148 -0
  84. flock/frontend/src/hooks/useModulePersistence.test.ts +442 -0
  85. flock/frontend/src/hooks/useModulePersistence.ts +154 -0
  86. flock/frontend/src/hooks/useModules.ts +139 -0
  87. flock/frontend/src/hooks/usePersistence.ts +139 -0
  88. flock/frontend/src/main.tsx +13 -0
  89. flock/frontend/src/services/api.ts +213 -0
  90. flock/frontend/src/services/indexeddb.test.ts +793 -0
  91. flock/frontend/src/services/indexeddb.ts +794 -0
  92. flock/frontend/src/services/layout.test.ts +437 -0
  93. flock/frontend/src/services/layout.ts +146 -0
  94. flock/frontend/src/services/themeApplicator.ts +140 -0
  95. flock/frontend/src/services/themeService.ts +77 -0
  96. flock/frontend/src/services/websocket.test.ts +595 -0
  97. flock/frontend/src/services/websocket.ts +685 -0
  98. flock/frontend/src/store/filterStore.test.ts +242 -0
  99. flock/frontend/src/store/filterStore.ts +103 -0
  100. flock/frontend/src/store/graphStore.test.ts +186 -0
  101. flock/frontend/src/store/graphStore.ts +414 -0
  102. flock/frontend/src/store/moduleStore.test.ts +253 -0
  103. flock/frontend/src/store/moduleStore.ts +57 -0
  104. flock/frontend/src/store/settingsStore.ts +188 -0
  105. flock/frontend/src/store/streamStore.ts +68 -0
  106. flock/frontend/src/store/uiStore.test.ts +54 -0
  107. flock/frontend/src/store/uiStore.ts +110 -0
  108. flock/frontend/src/store/wsStore.ts +34 -0
  109. flock/frontend/src/styles/index.css +15 -0
  110. flock/frontend/src/styles/scrollbar.css +47 -0
  111. flock/frontend/src/styles/variables.css +488 -0
  112. flock/frontend/src/test/setup.ts +1 -0
  113. flock/frontend/src/types/filters.ts +14 -0
  114. flock/frontend/src/types/graph.ts +55 -0
  115. flock/frontend/src/types/modules.ts +7 -0
  116. flock/frontend/src/types/theme.ts +55 -0
  117. flock/frontend/src/utils/mockData.ts +85 -0
  118. flock/frontend/src/utils/performance.ts +16 -0
  119. flock/frontend/src/utils/transforms.test.ts +860 -0
  120. flock/frontend/src/utils/transforms.ts +323 -0
  121. flock/frontend/src/vite-env.d.ts +17 -0
  122. flock/frontend/tsconfig.json +27 -0
  123. flock/frontend/tsconfig.node.json +11 -0
  124. flock/frontend/vite.config.ts +25 -0
  125. flock/frontend/vitest.config.ts +11 -0
  126. flock/{core/util → helper}/cli_helper.py +4 -3
  127. flock/{core/logging → logging}/__init__.py +2 -3
  128. flock/{core/logging → logging}/formatters/enum_builder.py +3 -4
  129. flock/{core/logging → logging}/formatters/theme_builder.py +19 -44
  130. flock/{core/logging → logging}/formatters/themed_formatter.py +69 -115
  131. flock/{core/logging → logging}/logging.py +77 -61
  132. flock/{core/logging → logging}/telemetry.py +20 -26
  133. flock/{core/logging → logging}/telemetry_exporter/base_exporter.py +2 -2
  134. flock/{core/logging → logging}/telemetry_exporter/file_exporter.py +6 -9
  135. flock/{core/logging → logging}/telemetry_exporter/sqlite_exporter.py +2 -3
  136. flock/{core/logging → logging}/trace_and_logged.py +20 -24
  137. flock/mcp/__init__.py +91 -0
  138. flock/{core/mcp/mcp_client.py → mcp/client.py} +103 -154
  139. flock/{core/mcp/mcp_config.py → mcp/config.py} +62 -117
  140. flock/mcp/manager.py +255 -0
  141. flock/mcp/servers/sse/__init__.py +1 -1
  142. flock/mcp/servers/sse/flock_sse_server.py +11 -53
  143. flock/mcp/servers/stdio/__init__.py +1 -1
  144. flock/mcp/servers/stdio/flock_stdio_server.py +8 -48
  145. flock/mcp/servers/streamable_http/flock_streamable_http_server.py +17 -62
  146. flock/mcp/servers/websockets/flock_websocket_server.py +7 -40
  147. flock/{core/mcp/flock_mcp_tool.py → mcp/tool.py} +16 -26
  148. flock/mcp/types/__init__.py +42 -0
  149. flock/{core/mcp → mcp}/types/callbacks.py +9 -15
  150. flock/{core/mcp → mcp}/types/factories.py +7 -6
  151. flock/{core/mcp → mcp}/types/handlers.py +13 -18
  152. flock/{core/mcp → mcp}/types/types.py +70 -74
  153. flock/{core/mcp → mcp}/util/helpers.py +1 -1
  154. flock/orchestrator.py +645 -0
  155. flock/registry.py +148 -0
  156. flock/runtime.py +262 -0
  157. flock/service.py +140 -0
  158. flock/store.py +69 -0
  159. flock/subscription.py +111 -0
  160. flock/themes/andromeda.toml +1 -1
  161. flock/themes/apple-system-colors.toml +1 -1
  162. flock/themes/arcoiris.toml +1 -1
  163. flock/themes/atomonelight.toml +1 -1
  164. flock/themes/ayu copy.toml +1 -1
  165. flock/themes/ayu-light.toml +1 -1
  166. flock/themes/belafonte-day.toml +1 -1
  167. flock/themes/belafonte-night.toml +1 -1
  168. flock/themes/blulocodark.toml +1 -1
  169. flock/themes/breeze.toml +1 -1
  170. flock/themes/broadcast.toml +1 -1
  171. flock/themes/brogrammer.toml +1 -1
  172. flock/themes/builtin-dark.toml +1 -1
  173. flock/themes/builtin-pastel-dark.toml +1 -1
  174. flock/themes/catppuccin-latte.toml +1 -1
  175. flock/themes/catppuccin-macchiato.toml +1 -1
  176. flock/themes/catppuccin-mocha.toml +1 -1
  177. flock/themes/cga.toml +1 -1
  178. flock/themes/chalk.toml +1 -1
  179. flock/themes/ciapre.toml +1 -1
  180. flock/themes/coffee-theme.toml +1 -1
  181. flock/themes/cyberpunkscarletprotocol.toml +1 -1
  182. flock/themes/dark+.toml +1 -1
  183. flock/themes/darkermatrix.toml +1 -1
  184. flock/themes/darkside.toml +1 -1
  185. flock/themes/desert.toml +1 -1
  186. flock/themes/django.toml +1 -1
  187. flock/themes/djangosmooth.toml +1 -1
  188. flock/themes/doomone.toml +1 -1
  189. flock/themes/dotgov.toml +1 -1
  190. flock/themes/dracula+.toml +1 -1
  191. flock/themes/duckbones.toml +1 -1
  192. flock/themes/encom.toml +1 -1
  193. flock/themes/espresso.toml +1 -1
  194. flock/themes/everblush.toml +1 -1
  195. flock/themes/fairyfloss.toml +1 -1
  196. flock/themes/fideloper.toml +1 -1
  197. flock/themes/fishtank.toml +1 -1
  198. flock/themes/flexoki-light.toml +1 -1
  199. flock/themes/floraverse.toml +1 -1
  200. flock/themes/framer.toml +1 -1
  201. flock/themes/galizur.toml +1 -1
  202. flock/themes/github.toml +1 -1
  203. flock/themes/grass.toml +1 -1
  204. flock/themes/grey-green.toml +1 -1
  205. flock/themes/gruvboxlight.toml +1 -1
  206. flock/themes/guezwhoz.toml +1 -1
  207. flock/themes/harper.toml +1 -1
  208. flock/themes/hax0r-blue.toml +1 -1
  209. flock/themes/hopscotch.256.toml +1 -1
  210. flock/themes/ic-green-ppl.toml +1 -1
  211. flock/themes/iceberg-dark.toml +1 -1
  212. flock/themes/japanesque.toml +1 -1
  213. flock/themes/jubi.toml +1 -1
  214. flock/themes/kibble.toml +1 -1
  215. flock/themes/kolorit.toml +1 -1
  216. flock/themes/kurokula.toml +1 -1
  217. flock/themes/materialdesigncolors.toml +1 -1
  218. flock/themes/matrix.toml +1 -1
  219. flock/themes/mellifluous.toml +1 -1
  220. flock/themes/midnight-in-mojave.toml +1 -1
  221. flock/themes/monokai-remastered.toml +1 -1
  222. flock/themes/monokai-soda.toml +1 -1
  223. flock/themes/neon.toml +1 -1
  224. flock/themes/neopolitan.toml +1 -1
  225. flock/themes/nord-light.toml +1 -1
  226. flock/themes/ocean.toml +1 -1
  227. flock/themes/onehalfdark.toml +1 -1
  228. flock/themes/onehalflight.toml +1 -1
  229. flock/themes/palenighthc.toml +1 -1
  230. flock/themes/paulmillr.toml +1 -1
  231. flock/themes/pencildark.toml +1 -1
  232. flock/themes/pnevma.toml +1 -1
  233. flock/themes/purple-rain.toml +1 -1
  234. flock/themes/purplepeter.toml +1 -1
  235. flock/themes/raycast-dark.toml +1 -1
  236. flock/themes/red-sands.toml +1 -1
  237. flock/themes/relaxed.toml +1 -1
  238. flock/themes/retro.toml +1 -1
  239. flock/themes/rose-pine.toml +1 -1
  240. flock/themes/royal.toml +1 -1
  241. flock/themes/ryuuko.toml +1 -1
  242. flock/themes/sakura.toml +1 -1
  243. flock/themes/scarlet-protocol.toml +1 -1
  244. flock/themes/seoulbones-dark.toml +1 -1
  245. flock/themes/shades-of-purple.toml +1 -1
  246. flock/themes/smyck.toml +1 -1
  247. flock/themes/softserver.toml +1 -1
  248. flock/themes/solarized-darcula.toml +1 -1
  249. flock/themes/square.toml +1 -1
  250. flock/themes/sugarplum.toml +1 -1
  251. flock/themes/thayer-bright.toml +1 -1
  252. flock/themes/tokyonight.toml +1 -1
  253. flock/themes/tomorrow.toml +1 -1
  254. flock/themes/ubuntu.toml +1 -1
  255. flock/themes/ultradark.toml +1 -1
  256. flock/themes/ultraviolent.toml +1 -1
  257. flock/themes/unikitty.toml +1 -1
  258. flock/themes/urple.toml +1 -1
  259. flock/themes/vesper.toml +1 -1
  260. flock/themes/vimbones.toml +1 -1
  261. flock/themes/wildcherry.toml +1 -1
  262. flock/themes/wilmersdorf.toml +1 -1
  263. flock/themes/wryan.toml +1 -1
  264. flock/themes/xcodedarkhc.toml +1 -1
  265. flock/themes/xcodelight.toml +1 -1
  266. flock/themes/zenbones-light.toml +1 -1
  267. flock/themes/zenwritten-dark.toml +1 -1
  268. flock/utilities.py +301 -0
  269. flock/{components/utility → utility}/output_utility_component.py +68 -53
  270. flock/visibility.py +107 -0
  271. flock_core-0.5.0b51.dist-info/METADATA +747 -0
  272. flock_core-0.5.0b51.dist-info/RECORD +508 -0
  273. flock_core-0.5.0b51.dist-info/entry_points.txt +2 -0
  274. {flock_core-0.5.0b28.dist-info → flock_core-0.5.0b51.dist-info}/licenses/LICENSE +1 -1
  275. flock/adapter/__init__.py +0 -14
  276. flock/adapter/azure_adapter.py +0 -68
  277. flock/adapter/chroma_adapter.py +0 -73
  278. flock/adapter/faiss_adapter.py +0 -97
  279. flock/adapter/pinecone_adapter.py +0 -51
  280. flock/adapter/vector_base.py +0 -47
  281. flock/cli/assets/release_notes.md +0 -140
  282. flock/cli/config.py +0 -8
  283. flock/cli/constants.py +0 -36
  284. flock/cli/create_agent.py +0 -1
  285. flock/cli/create_flock.py +0 -280
  286. flock/cli/execute_flock.py +0 -620
  287. flock/cli/load_agent.py +0 -1
  288. flock/cli/load_examples.py +0 -1
  289. flock/cli/load_flock.py +0 -192
  290. flock/cli/load_release_notes.py +0 -20
  291. flock/cli/loaded_flock_cli.py +0 -254
  292. flock/cli/manage_agents.py +0 -459
  293. flock/cli/registry_management.py +0 -889
  294. flock/cli/runner.py +0 -41
  295. flock/cli/settings.py +0 -857
  296. flock/cli/utils.py +0 -135
  297. flock/cli/view_results.py +0 -29
  298. flock/cli/yaml_editor.py +0 -396
  299. flock/components/__init__.py +0 -30
  300. flock/components/evaluation/__init__.py +0 -9
  301. flock/components/evaluation/declarative_evaluation_component.py +0 -606
  302. flock/components/routing/__init__.py +0 -15
  303. flock/components/routing/conditional_routing_component.py +0 -494
  304. flock/components/routing/default_routing_component.py +0 -103
  305. flock/components/routing/llm_routing_component.py +0 -206
  306. flock/components/utility/__init__.py +0 -22
  307. flock/components/utility/example_utility_component.py +0 -250
  308. flock/components/utility/feedback_utility_component.py +0 -206
  309. flock/components/utility/memory_utility_component.py +0 -550
  310. flock/components/utility/metrics_utility_component.py +0 -700
  311. flock/config.py +0 -61
  312. flock/core/__init__.py +0 -110
  313. flock/core/agent/__init__.py +0 -16
  314. flock/core/agent/default_agent.py +0 -216
  315. flock/core/agent/flock_agent_components.py +0 -104
  316. flock/core/agent/flock_agent_execution.py +0 -101
  317. flock/core/agent/flock_agent_integration.py +0 -260
  318. flock/core/agent/flock_agent_lifecycle.py +0 -186
  319. flock/core/agent/flock_agent_serialization.py +0 -381
  320. flock/core/api/__init__.py +0 -10
  321. flock/core/api/custom_endpoint.py +0 -45
  322. flock/core/api/endpoints.py +0 -254
  323. flock/core/api/main.py +0 -162
  324. flock/core/api/models.py +0 -97
  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/component/__init__.py +0 -15
  329. flock/core/component/agent_component_base.py +0 -309
  330. flock/core/component/evaluation_component.py +0 -62
  331. flock/core/component/routing_component.py +0 -74
  332. flock/core/component/utility_component.py +0 -69
  333. flock/core/config/flock_agent_config.py +0 -58
  334. flock/core/config/scheduled_agent_config.py +0 -40
  335. flock/core/context/context.py +0 -213
  336. flock/core/context/context_manager.py +0 -37
  337. flock/core/context/context_vars.py +0 -10
  338. flock/core/evaluation/utils.py +0 -396
  339. flock/core/execution/batch_executor.py +0 -369
  340. flock/core/execution/evaluation_executor.py +0 -438
  341. flock/core/execution/local_executor.py +0 -31
  342. flock/core/execution/opik_executor.py +0 -103
  343. flock/core/execution/temporal_executor.py +0 -164
  344. flock/core/flock.py +0 -634
  345. flock/core/flock_agent.py +0 -336
  346. flock/core/flock_factory.py +0 -613
  347. flock/core/flock_scheduler.py +0 -166
  348. flock/core/flock_server_manager.py +0 -136
  349. flock/core/interpreter/python_interpreter.py +0 -689
  350. flock/core/mcp/__init__.py +0 -1
  351. flock/core/mcp/flock_mcp_server.py +0 -680
  352. flock/core/mcp/mcp_client_manager.py +0 -201
  353. flock/core/mcp/types/__init__.py +0 -1
  354. flock/core/mixin/dspy_integration.py +0 -403
  355. flock/core/mixin/prompt_parser.py +0 -125
  356. flock/core/orchestration/__init__.py +0 -15
  357. flock/core/orchestration/flock_batch_processor.py +0 -94
  358. flock/core/orchestration/flock_evaluator.py +0 -113
  359. flock/core/orchestration/flock_execution.py +0 -295
  360. flock/core/orchestration/flock_initialization.py +0 -149
  361. flock/core/orchestration/flock_server_manager.py +0 -67
  362. flock/core/orchestration/flock_web_server.py +0 -117
  363. flock/core/registry/__init__.py +0 -45
  364. flock/core/registry/agent_registry.py +0 -69
  365. flock/core/registry/callable_registry.py +0 -139
  366. flock/core/registry/component_discovery.py +0 -142
  367. flock/core/registry/component_registry.py +0 -64
  368. flock/core/registry/config_mapping.py +0 -64
  369. flock/core/registry/decorators.py +0 -137
  370. flock/core/registry/registry_hub.py +0 -205
  371. flock/core/registry/server_registry.py +0 -57
  372. flock/core/registry/type_registry.py +0 -86
  373. flock/core/serialization/__init__.py +0 -13
  374. flock/core/serialization/callable_registry.py +0 -52
  375. flock/core/serialization/flock_serializer.py +0 -832
  376. flock/core/serialization/json_encoder.py +0 -41
  377. flock/core/serialization/secure_serializer.py +0 -175
  378. flock/core/serialization/serializable.py +0 -342
  379. flock/core/serialization/serialization_utils.py +0 -412
  380. flock/core/util/file_path_utils.py +0 -223
  381. flock/core/util/hydrator.py +0 -309
  382. flock/core/util/input_resolver.py +0 -164
  383. flock/core/util/loader.py +0 -59
  384. flock/core/util/splitter.py +0 -219
  385. flock/di.py +0 -27
  386. flock/platform/docker_tools.py +0 -49
  387. flock/platform/jaeger_install.py +0 -86
  388. flock/webapp/__init__.py +0 -1
  389. flock/webapp/app/__init__.py +0 -0
  390. flock/webapp/app/api/__init__.py +0 -0
  391. flock/webapp/app/api/agent_management.py +0 -241
  392. flock/webapp/app/api/execution.py +0 -709
  393. flock/webapp/app/api/flock_management.py +0 -129
  394. flock/webapp/app/api/registry_viewer.py +0 -30
  395. flock/webapp/app/chat.py +0 -665
  396. flock/webapp/app/config.py +0 -104
  397. flock/webapp/app/dependencies.py +0 -117
  398. flock/webapp/app/main.py +0 -1070
  399. flock/webapp/app/middleware.py +0 -113
  400. flock/webapp/app/models_ui.py +0 -7
  401. flock/webapp/app/services/__init__.py +0 -0
  402. flock/webapp/app/services/feedback_file_service.py +0 -363
  403. flock/webapp/app/services/flock_service.py +0 -337
  404. flock/webapp/app/services/sharing_models.py +0 -81
  405. flock/webapp/app/services/sharing_store.py +0 -762
  406. flock/webapp/app/templates/theme_mapper.html +0 -326
  407. flock/webapp/app/theme_mapper.py +0 -812
  408. flock/webapp/app/utils.py +0 -85
  409. flock/webapp/run.py +0 -215
  410. flock/webapp/static/css/chat.css +0 -301
  411. flock/webapp/static/css/components.css +0 -167
  412. flock/webapp/static/css/header.css +0 -39
  413. flock/webapp/static/css/layout.css +0 -46
  414. flock/webapp/static/css/sidebar.css +0 -127
  415. flock/webapp/static/css/two-pane.css +0 -48
  416. flock/webapp/templates/base.html +0 -200
  417. flock/webapp/templates/chat.html +0 -152
  418. flock/webapp/templates/chat_settings.html +0 -19
  419. flock/webapp/templates/flock_editor.html +0 -16
  420. flock/webapp/templates/index.html +0 -12
  421. flock/webapp/templates/partials/_agent_detail_form.html +0 -93
  422. flock/webapp/templates/partials/_agent_list.html +0 -18
  423. flock/webapp/templates/partials/_agent_manager_view.html +0 -51
  424. flock/webapp/templates/partials/_agent_tools_checklist.html +0 -14
  425. flock/webapp/templates/partials/_chat_container.html +0 -15
  426. flock/webapp/templates/partials/_chat_messages.html +0 -57
  427. flock/webapp/templates/partials/_chat_settings_form.html +0 -85
  428. flock/webapp/templates/partials/_create_flock_form.html +0 -50
  429. flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -17
  430. flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -16
  431. flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -28
  432. flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -16
  433. flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -22
  434. flock/webapp/templates/partials/_env_vars_table.html +0 -23
  435. flock/webapp/templates/partials/_execution_form.html +0 -118
  436. flock/webapp/templates/partials/_execution_view_container.html +0 -28
  437. flock/webapp/templates/partials/_flock_file_list.html +0 -23
  438. flock/webapp/templates/partials/_flock_properties_form.html +0 -52
  439. flock/webapp/templates/partials/_flock_upload_form.html +0 -16
  440. flock/webapp/templates/partials/_header_flock_status.html +0 -5
  441. flock/webapp/templates/partials/_load_manager_view.html +0 -49
  442. flock/webapp/templates/partials/_registry_table.html +0 -25
  443. flock/webapp/templates/partials/_registry_viewer_content.html +0 -70
  444. flock/webapp/templates/partials/_results_display.html +0 -78
  445. flock/webapp/templates/partials/_settings_env_content.html +0 -9
  446. flock/webapp/templates/partials/_settings_theme_content.html +0 -14
  447. flock/webapp/templates/partials/_settings_view.html +0 -36
  448. flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -11
  449. flock/webapp/templates/partials/_share_link_snippet.html +0 -35
  450. flock/webapp/templates/partials/_sidebar.html +0 -74
  451. flock/webapp/templates/partials/_streaming_results_container.html +0 -195
  452. flock/webapp/templates/partials/_structured_data_view.html +0 -40
  453. flock/webapp/templates/partials/_theme_preview.html +0 -36
  454. flock/webapp/templates/registry_viewer.html +0 -84
  455. flock/webapp/templates/shared_run_page.html +0 -140
  456. flock/workflow/__init__.py +0 -0
  457. flock/workflow/activities.py +0 -196
  458. flock/workflow/agent_activities.py +0 -24
  459. flock/workflow/agent_execution_activity.py +0 -202
  460. flock/workflow/flock_workflow.py +0 -214
  461. flock/workflow/temporal_config.py +0 -96
  462. flock/workflow/temporal_setup.py +0 -68
  463. flock_core-0.5.0b28.dist-info/METADATA +0 -274
  464. flock_core-0.5.0b28.dist-info/RECORD +0 -561
  465. flock_core-0.5.0b28.dist-info/entry_points.txt +0 -2
  466. /flock/{core/logging → logging}/formatters/themes.py +0 -0
  467. /flock/{core/logging → logging}/span_middleware/baggage_span_processor.py +0 -0
  468. /flock/{core/mcp → mcp}/util/__init__.py +0 -0
  469. {flock_core-0.5.0b28.dist-info → flock_core-0.5.0b51.dist-info}/WHEEL +0 -0
flock/config.py DELETED
@@ -1,61 +0,0 @@
1
- """Global configuration for Flock.
2
-
3
- Reads environment via `decouple` and exposes constants used across the codebase.
4
- """
5
-
6
- # flock/config.py
7
- import os
8
-
9
- from decouple import config
10
-
11
- from flock.core.logging.telemetry import TelemetryConfig
12
-
13
- cfg_file = os.path.expanduser(f"~/.flock/flock.cfg")
14
-
15
-
16
- # -- Connection and External Service Configurations --
17
- TEMPORAL_SERVER_URL = config("TEMPORAL_SERVER_URL", "localhost:7233")
18
- DEFAULT_MODEL = config("DEFAULT_MODEL", "openai/gpt-4o")
19
-
20
-
21
- # API Keys and related settings
22
- TAVILY_API_KEY = config("TAVILY_API_KEY", "")
23
- GITHUB_PAT = config("GITHUB_PAT", "")
24
- GITHUB_REPO = config("GITHUB_REPO", "")
25
- GITHUB_USERNAME = config("GITHUB_USERNAME", "")
26
-
27
- # -- Debugging and Logging Configurations --
28
- LOCAL_DEBUG = config("LOCAL_DEBUG", True)
29
- LOG_LEVEL = config("LOG_LEVEL", "DEBUG")
30
- LOGGING_DIR = config("LOGGING_DIR", ".flock/logs")
31
-
32
- OTEL_SERVICE_NAME = config("OTL_SERVICE_NAME", "otel-flock")
33
- JAEGER_ENDPOINT = config(
34
- "JAEGER_ENDPOINT", "http://localhost:14268/api/traces"
35
- ) # Default gRPC endpoint for Jaeger
36
- JAEGER_TRANSPORT = config(
37
- "JAEGER_TRANSPORT", "http"
38
- ).lower() # Options: "grpc" or "http"
39
- OTEL_SQL_DATABASE_NAME = config("OTEL_SQL_DATABASE", "flock_events.db")
40
- OTEL_FILE_NAME = config("OTEL_FILE_NAME", "flock_events.jsonl")
41
- OTEL_ENABLE_SQL: bool = config("OTEL_ENABLE_SQL", True) == "True"
42
- OTEL_ENABLE_FILE: bool = config("OTEL_ENABLE_FILE", True) == "True"
43
- OTEL_ENABLE_JAEGER: bool = config("OTEL_ENABLE_JAEGER", False) == "True"
44
- OTEL_ENABLE_OTLP: bool = config("OTEL_ENABLE_OTLP", False) == "True"
45
- OTEL_EXPORTER_OTLP_PROTOCOL: str = config("OTEL_EXPORTER_OTLP_PROTOCOL", "grpc")
46
- OTEL_EXPORTER_OTLP_ENDPOINT: str = config("OTEL_EXPORTER_OTLP_ENDPOINT", "http://localhost:4317")
47
-
48
- TELEMETRY = TelemetryConfig(
49
- OTEL_SERVICE_NAME,
50
- JAEGER_ENDPOINT,
51
- JAEGER_TRANSPORT,
52
- LOGGING_DIR,
53
- OTEL_FILE_NAME,
54
- OTEL_SQL_DATABASE_NAME,
55
- OTEL_ENABLE_JAEGER,
56
- OTEL_ENABLE_FILE,
57
- OTEL_ENABLE_SQL,
58
- OTEL_ENABLE_OTLP,
59
- OTEL_EXPORTER_OTLP_PROTOCOL,
60
- OTEL_EXPORTER_OTLP_ENDPOINT,
61
- )
flock/core/__init__.py DELETED
@@ -1,110 +0,0 @@
1
- """Core package public API with lazy imports.
2
-
3
- This module exposes key symbols while avoiding heavy imports at package import time.
4
- Symbols are imported lazily on first access via ``__getattr__``.
5
- """
6
-
7
- from __future__ import annotations
8
-
9
- from typing import Any
10
-
11
- __all__ = [
12
- "Flock",
13
- "FlockAgent",
14
- "DefaultAgent",
15
- "FlockContext",
16
- "FlockFactory",
17
- # Components
18
- "AgentComponent",
19
- "AgentComponentConfig",
20
- "EvaluationComponent",
21
- "RoutingComponent",
22
- "UtilityComponent",
23
- # MCP
24
- "FlockMCPClient",
25
- "FlockMCPClientManager",
26
- "FlockMCPServer",
27
- "FlockMCPTool",
28
- # Registry
29
- "FlockRegistry",
30
- "flock_callable",
31
- "flock_component",
32
- "flock_tool",
33
- "flock_type",
34
- "get_registry",
35
- ]
36
-
37
-
38
- def __getattr__(name: str) -> Any: # pragma: no cover - thin loader
39
- if name == "Flock":
40
- from .flock import Flock
41
-
42
- return Flock
43
- if name == "FlockAgent":
44
- from .flock_agent import FlockAgent
45
-
46
- return FlockAgent
47
- if name == "DefaultAgent":
48
- from .agent.default_agent import DefaultAgent
49
-
50
- return DefaultAgent
51
- if name == "FlockContext":
52
- from .context.context import FlockContext
53
-
54
- return FlockContext
55
- if name == "FlockFactory":
56
- from .flock_factory import FlockFactory
57
-
58
- return FlockFactory
59
- if name in {"AgentComponent", "AgentComponentConfig", "EvaluationComponent", "RoutingComponent", "UtilityComponent"}:
60
- from .component import (
61
- AgentComponent,
62
- AgentComponentConfig,
63
- EvaluationComponent,
64
- RoutingComponent,
65
- UtilityComponent,
66
- )
67
-
68
- return {
69
- "AgentComponent": AgentComponent,
70
- "AgentComponentConfig": AgentComponentConfig,
71
- "EvaluationComponent": EvaluationComponent,
72
- "RoutingComponent": RoutingComponent,
73
- "UtilityComponent": UtilityComponent,
74
- }[name]
75
- if name in {"FlockMCPClient", "FlockMCPClientManager", "FlockMCPServer", "FlockMCPTool"}:
76
- if name == "FlockMCPClient":
77
- from .mcp.mcp_client import FlockMCPClient
78
-
79
- return FlockMCPClient
80
- if name == "FlockMCPClientManager":
81
- from .mcp.mcp_client_manager import FlockMCPClientManager
82
-
83
- return FlockMCPClientManager
84
- if name == "FlockMCPServer":
85
- from .mcp.flock_mcp_server import FlockMCPServer
86
-
87
- return FlockMCPServer
88
- if name == "FlockMCPTool":
89
- from .mcp.flock_mcp_tool import FlockMCPTool
90
-
91
- return FlockMCPTool
92
- if name in {"FlockRegistry", "flock_callable", "flock_component", "flock_tool", "flock_type", "get_registry"}:
93
- from .registry import (
94
- RegistryHub as FlockRegistry,
95
- flock_callable,
96
- flock_component,
97
- flock_tool,
98
- flock_type,
99
- get_registry,
100
- )
101
-
102
- return {
103
- "FlockRegistry": FlockRegistry,
104
- "flock_callable": flock_callable,
105
- "flock_component": flock_component,
106
- "flock_tool": flock_tool,
107
- "flock_type": flock_type,
108
- "get_registry": get_registry,
109
- }[name]
110
- raise AttributeError(name)
@@ -1,16 +0,0 @@
1
- # src/flock/core/agent/__init__.py
2
- """Agent components package."""
3
-
4
- from .flock_agent_components import FlockAgentComponents
5
- from .flock_agent_execution import FlockAgentExecution
6
- from .flock_agent_integration import FlockAgentIntegration
7
- from .flock_agent_lifecycle import FlockAgentLifecycle
8
- from .flock_agent_serialization import FlockAgentSerialization
9
-
10
- __all__ = [
11
- "FlockAgentComponents",
12
- "FlockAgentExecution",
13
- "FlockAgentIntegration",
14
- "FlockAgentLifecycle",
15
- "FlockAgentSerialization",
16
- ]
@@ -1,216 +0,0 @@
1
- """DefaultAgent: explicit preset agent wiring standard components.
2
-
3
- This class replaces the need for using FlockFactory for common setups by
4
- providing a clear, explicit Agent class that mirrors the factory's kwargs
5
- and composes the standard components under the hood.
6
- """
7
-
8
- from __future__ import annotations
9
-
10
- from collections.abc import Callable
11
- from typing import Any, Literal
12
-
13
- from flock.components.utility.example_utility_component import (
14
- ExampleUtilityComponent,
15
- ExampleUtilityConfig,
16
- )
17
- from flock.components.utility.feedback_utility_component import (
18
- FeedbackUtilityComponent,
19
- FeedbackUtilityConfig,
20
- )
21
- from flock.components.utility.metrics_utility_component import (
22
- MetricsUtilityComponent,
23
- MetricsUtilityConfig,
24
- )
25
- from flock.core.config.flock_agent_config import FlockAgentConfig
26
- from flock.core.flock_agent import DynamicStr, FlockAgent
27
- from flock.core.logging.formatters.themes import OutputTheme
28
- from flock.core.mcp.flock_mcp_server import FlockMCPServer
29
- from flock.workflow.temporal_config import TemporalActivityConfig
30
-
31
-
32
- class DefaultAgent(FlockAgent):
33
- """Explicit agent class wiring standard evaluation + utility components.
34
-
35
- Components included:
36
- - DeclarativeEvaluationComponent (LLM evaluation)
37
- - OutputUtilityComponent (formatting/printing)
38
- - MetricsUtilityComponent (latency tracking)
39
- - FeedbackUtilityComponent (feedback learning) - optional
40
- """
41
-
42
- def __init__(
43
- self,
44
- name: str,
45
- description: DynamicStr | None = None,
46
- model: str | None = None,
47
- input: DynamicStr | None = None,
48
- output: DynamicStr | None = None,
49
- tools: list[Callable[..., Any] | Any] | None = None,
50
- servers: list[str | FlockMCPServer] | None = None,
51
- tool_whitelist: list[str] | None = None,
52
- # Evaluation parameters
53
- use_cache: bool = False,
54
- temperature: float = 0.7,
55
- max_tokens: int | None = None,
56
- max_tool_calls: int = 10,
57
- max_retries: int = 2,
58
- stream: bool = True,
59
- stream_callbacks: list[Callable[..., Any] | Any] | None = None,
60
- stream_vertical_overflow: Literal["crop", "ellipsis", "crop_above", "visible"] = "crop_above",
61
- include_thought_process: bool = False,
62
- include_reasoning: bool = False,
63
- include_status_output: bool = False,
64
- # Output utility parameters
65
- enable_rich_tables: bool = True,
66
- output_theme: OutputTheme | None = None,
67
- no_output: bool = False,
68
- print_context: bool = False,
69
- # Agent config
70
- write_to_file: bool = False,
71
- wait_for_input: bool = False,
72
- # Metrics utility
73
- alert_latency_threshold_ms: int = 30_000,
74
- # Feedback utility
75
- enable_feedback: bool = False,
76
- feedback_config: FeedbackUtilityConfig | None = None,
77
- # Example utility
78
- enable_examples: bool = False,
79
- example_config: ExampleUtilityConfig | None = None,
80
- # Workflow
81
- next_agent: DynamicStr | None = None,
82
- temporal_activity_config: TemporalActivityConfig | None = None,
83
- ):
84
- """Initialize a DefaultAgent with standard components and configuration.
85
-
86
- Args:
87
- name: Unique identifier for the agent
88
- description: Human-readable description of the agent's purpose
89
- model: Model identifier (e.g., 'openai/gpt-4o'). Uses Flock default if None
90
- input: Input signature for the agent
91
- output: Output signature for the agent
92
- tools: List of callable tools the agent can use
93
- servers: List of MCP servers the agent can connect to
94
- tool_whitelist: List of tool names that this agent is allowed to use.
95
- If provided, the agent will only have access to tools
96
- whose names are in this list. This applies to both native
97
- Python tools and MCP tools. Recommended for security and
98
- to prevent tool conflicts in multi-agent workflows.
99
- use_cache: Whether to enable caching for evaluation
100
- temperature: Sampling temperature for LLM generation
101
- max_tokens: Maximum tokens for LLM response
102
- max_tool_calls: Maximum number of tool calls per evaluation
103
- max_retries: Maximum retries for failed LLM calls
104
- stream: Whether to enable streaming responses
105
- stream_callbacks: Optional callbacks invoked with each streaming chunk
106
- stream_vertical_overflow: Rich Live overflow handling ('ellipsis', 'crop', 'crop_above', 'visible')
107
- include_thought_process: Include reasoning in output
108
- include_reasoning: Include detailed reasoning steps
109
- include_status_output: Include status output in output
110
- enable_rich_tables: Enable rich table formatting for output
111
- output_theme: Theme for output formatting
112
- no_output: Disable output printing
113
- print_context: Include context in output
114
- write_to_file: Save outputs to file
115
- wait_for_input: Wait for user input after execution
116
- alert_latency_threshold_ms: Threshold for latency alerts
117
- enable_feedback: Whether to enable feedback learning component
118
- feedback_config: Configuration for feedback component
119
- enable_examples: Whether to enable example learning component
120
- example_config: Configuration for example component
121
- next_agent: Next agent in workflow chain
122
- temporal_activity_config: Configuration for Temporal workflow execution
123
- """
124
- # Import evaluation/output components lazily to avoid heavy imports at module import time
125
- from flock.components.evaluation.declarative_evaluation_component import (
126
- DeclarativeEvaluationComponent,
127
- DeclarativeEvaluationConfig,
128
- )
129
- from flock.components.utility.output_utility_component import (
130
- OutputUtilityComponent,
131
- OutputUtilityConfig,
132
- )
133
-
134
- # Apply sensible defaults for special models if needed
135
- if model and "gpt-oss" in model:
136
- # Ensure defaults are generous for local OSS models
137
- temperature = 1.0
138
- max_tokens = 32_768
139
-
140
- # Evaluation component
141
- _eval_kwargs = dict(
142
- model=model,
143
- use_cache=use_cache,
144
- temperature=temperature,
145
- max_tool_calls=max_tool_calls,
146
- max_retries=max_retries,
147
- no_output=no_output,
148
- stream=stream,
149
- stream_callbacks=stream_callbacks,
150
- stream_vertical_overflow=stream_vertical_overflow,
151
- include_thought_process=include_thought_process,
152
- include_reasoning=include_reasoning,
153
- include_status_output=include_status_output,
154
- )
155
- if max_tokens is not None:
156
- _eval_kwargs["max_tokens"] = max_tokens
157
- eval_config = DeclarativeEvaluationConfig(**_eval_kwargs)
158
- evaluator = DeclarativeEvaluationComponent(
159
- name="default_evaluator", config=eval_config
160
- )
161
-
162
- # Output utility component
163
- _output_kwargs = dict(
164
- render_table=enable_rich_tables,
165
- no_output=no_output,
166
- print_context=print_context,
167
- )
168
- if output_theme is not None:
169
- _output_kwargs["theme"] = output_theme
170
- output_config = OutputUtilityConfig(**_output_kwargs)
171
- output_component = OutputUtilityComponent(
172
- name="output_formatter", config=output_config
173
- )
174
-
175
- # Metrics utility component
176
- metrics_config = MetricsUtilityConfig(
177
- latency_threshold_ms=alert_latency_threshold_ms
178
- )
179
- metrics_component = MetricsUtilityComponent(
180
- name="metrics_tracker", config=metrics_config
181
- )
182
-
183
- # Feedback utility component (optional)
184
- components = [evaluator, output_component, metrics_component]
185
- if enable_feedback:
186
- feedback_component = FeedbackUtilityComponent(
187
- name="feedback",
188
- config=feedback_config or FeedbackUtilityConfig()
189
- )
190
- components.append(feedback_component)
191
-
192
- # Example utility component (optional)
193
- if enable_examples:
194
- example_component = ExampleUtilityComponent(
195
- name="examples",
196
- config=example_config or ExampleUtilityConfig()
197
- )
198
- components.append(example_component)
199
-
200
- super().__init__(
201
- name=name,
202
- model=model,
203
- description=description,
204
- input=input,
205
- output=output,
206
- tools=tools,
207
- servers=servers,
208
- tool_whitelist=tool_whitelist,
209
- components=components,
210
- config=FlockAgentConfig(
211
- write_to_file=write_to_file,
212
- wait_for_input=wait_for_input,
213
- ),
214
- next_agent=next_agent,
215
- temporal_activity_config=temporal_activity_config,
216
- )
@@ -1,104 +0,0 @@
1
- """Component management functionality for FlockAgent."""
2
-
3
- from typing import TYPE_CHECKING, Any
4
-
5
- from flock.core.component.evaluation_component import EvaluationComponent
6
- from flock.core.component.routing_component import RoutingComponent
7
- from flock.core.component.utility_component import UtilityComponent
8
- from flock.core.logging.logging import get_logger
9
-
10
- if TYPE_CHECKING:
11
- from flock.core.component.agent_component_base import AgentComponent
12
- from flock.core.flock_agent import FlockAgent
13
-
14
- logger = get_logger("agent.components")
15
-
16
-
17
- class FlockAgentComponents:
18
- """Helper class for managing unified components on FlockAgent."""
19
-
20
- def __init__(self, agent: "FlockAgent"):
21
- self.agent = agent
22
-
23
- def add_component(self, component: "AgentComponent") -> None:
24
- """Add a unified component to this agent."""
25
- if not component.name:
26
- logger.error("Component must have a name to be added.")
27
- return
28
-
29
- # Check if component with same name already exists
30
- existing = self.get_component(component.name)
31
- if existing:
32
- logger.warning(f"Overwriting existing component: {component.name}")
33
- self.agent.components.remove(existing)
34
-
35
- self.agent.components.append(component)
36
- logger.debug(f"Added component '{component.name}' to agent '{self.agent.name}'")
37
-
38
- def remove_component(self, component_name: str) -> None:
39
- """Remove a component from this agent."""
40
- component = self.get_component(component_name)
41
- if component:
42
- self.agent.components.remove(component)
43
- logger.debug(f"Removed component '{component_name}' from agent '{self.agent.name}'")
44
- else:
45
- logger.warning(f"Component '{component_name}' not found on agent '{self.agent.name}'")
46
-
47
- def get_component(self, component_name: str) -> "AgentComponent | None":
48
- """Get a component by name."""
49
- for component in self.agent.components:
50
- if component.name == component_name:
51
- return component
52
- return None
53
-
54
- def get_enabled_components(self) -> list["AgentComponent"]:
55
- """Get a list of currently enabled components attached to this agent."""
56
- return [c for c in self.agent.components if c.config.enabled]
57
-
58
- def get_components_by_type(self, component_type: type) -> list["AgentComponent"]:
59
- """Get all components of a specific type."""
60
- return [c for c in self.agent.components if isinstance(c, component_type)]
61
-
62
- def get_evaluation_components(self) -> list[EvaluationComponent]:
63
- """Get all evaluation components."""
64
- return self.get_components_by_type(EvaluationComponent)
65
-
66
- def get_routing_components(self) -> list[RoutingComponent]:
67
- """Get all routing components."""
68
- return self.get_components_by_type(RoutingComponent)
69
-
70
- def get_utility_components(self) -> list[UtilityComponent]:
71
- """Get all utility components."""
72
- return self.get_components_by_type(UtilityComponent)
73
-
74
- def get_primary_evaluator(self) -> EvaluationComponent | None:
75
- """Get the primary evaluation component (first one found)."""
76
- evaluators = self.get_evaluation_components()
77
- return evaluators[0] if evaluators else None
78
-
79
- def get_primary_router(self) -> RoutingComponent | None:
80
- """Get the primary routing component (first one found)."""
81
- routers = self.get_routing_components()
82
- return routers[0] if routers else None
83
-
84
- # Legacy compatibility methods (delegate to new unified approach)
85
- def add_module(self, module: Any) -> None:
86
- """DEPRECATED: Use add_component() instead."""
87
- logger.warning("add_module is deprecated - use add_component() instead")
88
- if hasattr(module, 'name'):
89
- self.add_component(module)
90
-
91
- def get_module(self, module_name: str) -> Any | None:
92
- """DEPRECATED: Use get_component() instead."""
93
- logger.warning("get_module is deprecated - use get_component() instead")
94
- return self.get_component(module_name)
95
-
96
- def get_evaluator(self) -> Any | None:
97
- """DEPRECATED: Use get_primary_evaluator() instead."""
98
- logger.warning("get_evaluator is deprecated - use get_primary_evaluator() instead")
99
- return self.get_primary_evaluator()
100
-
101
- def get_router(self) -> Any | None:
102
- """DEPRECATED: Use get_primary_router() instead."""
103
- logger.warning("get_router is deprecated - use get_primary_router() instead")
104
- return self.get_primary_router()
@@ -1,101 +0,0 @@
1
- # src/flock/core/agent/flock_agent_execution.py
2
- """Execution management functionality for FlockAgent."""
3
-
4
- import asyncio
5
- from typing import TYPE_CHECKING, Any
6
-
7
- from opentelemetry import trace
8
- from flock.core.logging.logging import get_logger
9
-
10
- if TYPE_CHECKING:
11
- from flock.core.flock_agent import FlockAgent
12
-
13
- logger = get_logger("agent.execution")
14
- tracer = trace.get_tracer(__name__)
15
-
16
-
17
- class FlockAgentExecution:
18
- """Handles execution management for FlockAgent including run, run_async, and run_temporal."""
19
-
20
- def __init__(self, agent: "FlockAgent"):
21
- self.agent = agent
22
-
23
- def run(self, inputs: dict[str, Any]) -> dict[str, Any]:
24
- """Synchronous wrapper for run_async."""
25
- try:
26
- loop = asyncio.get_running_loop()
27
- except (
28
- RuntimeError
29
- ): # 'RuntimeError: There is no current event loop...'
30
- loop = asyncio.new_event_loop()
31
- asyncio.set_event_loop(loop)
32
- return loop.run_until_complete(self.run_async(inputs))
33
-
34
- async def run_async(self, inputs: dict[str, Any]) -> dict[str, Any]:
35
- """Asynchronous execution logic with lifecycle hooks."""
36
- with tracer.start_as_current_span("agent.run") as span:
37
- span.set_attribute("agent.name", self.agent.name)
38
- span.set_attribute("inputs", str(inputs))
39
- try:
40
- # Initialize lifecycle system if not already present
41
- if not hasattr(self.agent, '_lifecycle'):
42
- from flock.core.agent.flock_agent_lifecycle import FlockAgentLifecycle
43
- self.agent._lifecycle = FlockAgentLifecycle(self.agent)
44
-
45
- await self.agent._lifecycle.initialize(inputs)
46
- result = await self.agent._lifecycle.evaluate(inputs)
47
- await self.agent._lifecycle.terminate(inputs, result)
48
- span.set_attribute("result", str(result))
49
- logger.info("Agent run completed", agent=self.agent.name)
50
- return result
51
- except Exception as run_error:
52
- logger.error(
53
- "Error running agent", agent=self.agent.name, error=str(run_error)
54
- )
55
- if "evaluate" not in str(
56
- run_error
57
- ): # Simple check, might need refinement
58
- await self.agent._lifecycle.on_error(run_error, inputs)
59
- logger.error(
60
- f"Agent '{self.agent.name}' run failed: {run_error}",
61
- exc_info=True,
62
- )
63
- span.record_exception(run_error)
64
- raise # Re-raise after handling
65
-
66
- async def run_temporal(self, inputs: dict[str, Any]) -> dict[str, Any]:
67
- """Execute agent using Temporal workflow orchestration."""
68
- with tracer.start_as_current_span("agent.run_temporal") as span:
69
- span.set_attribute("agent.name", self.agent.name)
70
- span.set_attribute("inputs", str(inputs))
71
- try:
72
- from temporalio.client import Client
73
-
74
- from flock.workflow.agent_activities import (
75
- run_flock_agent_activity,
76
- )
77
- from flock.workflow.temporal_setup import run_activity
78
-
79
- client = await Client.connect(
80
- "localhost:7233", namespace="default"
81
- )
82
- agent_data = self.agent._serialization.to_dict()
83
- inputs_data = inputs
84
-
85
- result = await run_activity(
86
- client,
87
- self.agent.name,
88
- run_flock_agent_activity,
89
- {"agent_data": agent_data, "inputs": inputs_data},
90
- )
91
- span.set_attribute("result", str(result))
92
- logger.info("Temporal run successful", agent=self.agent.name)
93
- return result
94
- except Exception as temporal_error:
95
- logger.error(
96
- "Error in Temporal workflow",
97
- agent=self.agent.name,
98
- error=str(temporal_error),
99
- )
100
- span.record_exception(temporal_error)
101
- raise