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
@@ -1,613 +0,0 @@
1
- """Factory for creating pre-configured Flock agents.
2
-
3
- Deprecated: Prefer explicit `DefaultAgent` class for new code. This factory
4
- remains as a thin adapter to ease migration and preserve backward compatibility.
5
- """
6
-
7
- import os
8
- import warnings
9
- from collections.abc import Callable
10
- from pathlib import Path
11
- from typing import Any, Literal
12
-
13
- import httpx
14
- from pydantic import AnyUrl, BaseModel, ConfigDict, Field, FileUrl
15
-
16
- from flock.components.utility.metrics_utility_component import (
17
- MetricsUtilityComponent,
18
- MetricsUtilityConfig,
19
- )
20
- from flock.core.agent.default_agent import DefaultAgent
21
-
22
- # New unified components imported locally to avoid circular imports
23
- from flock.core.config.scheduled_agent_config import ScheduledAgentConfig
24
- from flock.core.flock_agent import DynamicStr, FlockAgent
25
- from flock.core.logging.formatters.themes import OutputTheme
26
- from flock.core.logging.logging import get_logger
27
- from flock.core.mcp.flock_mcp_server import FlockMCPServer
28
- from flock.core.mcp.mcp_config import (
29
- FlockMCPCachingConfiguration,
30
- FlockMCPCallbackConfiguration,
31
- FlockMCPFeatureConfiguration,
32
- )
33
- from flock.core.mcp.types.types import (
34
- FlockListRootsMCPCallback,
35
- FlockLoggingMCPCallback,
36
- FlockMessageHandlerMCPCallback,
37
- FlockSamplingMCPCallback,
38
- MCPRoot,
39
- SseServerParameters,
40
- StdioServerParameters,
41
- StreamableHttpServerParameters,
42
- WebsocketServerParameters,
43
- )
44
- from flock.mcp.servers.sse.flock_sse_server import (
45
- FlockSSEConfig,
46
- FlockSSEConnectionConfig,
47
- FlockSSEServer,
48
- )
49
- from flock.mcp.servers.stdio.flock_stdio_server import (
50
- FlockMCPStdioServer,
51
- FlockStdioConfig,
52
- FlockStdioConnectionConfig,
53
- )
54
- from flock.mcp.servers.streamable_http.flock_streamable_http_server import (
55
- FlockStreamableHttpConfig,
56
- FlockStreamableHttpConnectionConfig,
57
- FlockStreamableHttpServer,
58
- )
59
- from flock.mcp.servers.websockets.flock_websocket_server import (
60
- FlockWSConfig,
61
- FlockWSConnectionConfig,
62
- FlockWSServer,
63
- )
64
- from flock.workflow.temporal_config import TemporalActivityConfig
65
-
66
- LoggingLevel = Literal[
67
- "debug",
68
- "info",
69
- "notice",
70
- "warning",
71
- "error",
72
- "critical",
73
- "alert",
74
- "emergency",
75
- ]
76
-
77
-
78
- class FlockFactory:
79
- """Factory for creating pre-configured Flock agents and pre-configured Flock MCPServers with common module setups."""
80
-
81
- # Classes for type-hints.
82
- class StdioParams(BaseModel):
83
- """Factory-Params for Stdio-Servers."""
84
-
85
- command: str = Field(
86
- ...,
87
- description="Command for starting the local script. (e.g. 'uvx', 'bun', 'npx', 'bunx', etc.)",
88
- )
89
-
90
- args: list[str] = Field(
91
- ...,
92
- description="Arguments for starting the local script. (e.g. ['run', './mcp-server.py'])",
93
- )
94
-
95
- env: dict[str, Any] | None = Field(
96
- default=None,
97
- description="Environment variables to pass to the server. (e.g. {'GOOGLE_API_KEY': 'MY_SUPER_SECRET_API_KEY'})",
98
- )
99
-
100
- cwd: str | Path | None = Field(
101
- default_factory=os.getcwd,
102
- description="The working directory to start the script in.",
103
- )
104
-
105
- encoding: str = Field(
106
- default="utf-8",
107
- description="The char-encoding to use when talking to a stdio server. (e.g. 'utf-8', 'ascii', etc.)",
108
- )
109
-
110
- encoding_error_handler: Literal["strict", "ignore", "replace"] = Field(
111
- default="strict",
112
- description="The text encoding error handler. See https://docs.python.org/3/library/codecs.html#codec-base-classes for explanations of possible values",
113
- )
114
-
115
- class StreamableHttpParams(BaseModel):
116
- """Factory-Params for Streamable Http Servers."""
117
-
118
- url: str | AnyUrl = Field(..., description="Url the server listens at.")
119
-
120
- headers: dict[str, Any] | None = Field(
121
- default=None,
122
- description="Additional Headers to pass to the client.",
123
- )
124
-
125
- auth: httpx.Auth | None = Field(
126
- default=None, description="Httpx Auth Schema."
127
- )
128
-
129
- timeout_seconds: float | int = Field(
130
- default=5, description="Http Timeout in Seconds"
131
- )
132
-
133
- sse_read_timeout_seconds: float | int = Field(
134
- default=60 * 5,
135
- description="How many seconds to wait for server-sent events until closing the connection.",
136
- )
137
-
138
- terminate_on_close: bool = Field(
139
- default=True,
140
- description="Whether or not to terminate the underlying connection on close.",
141
- )
142
-
143
- model_config = ConfigDict(
144
- arbitrary_types_allowed=True,
145
- extra="allow",
146
- )
147
-
148
- class SSEParams(BaseModel):
149
- """Factory-Params for SSE-Servers."""
150
-
151
- url: str | AnyUrl = Field(
152
- ...,
153
- description="Url the server listens at. (e.g. https://my-mcp-server.io/sse)",
154
- )
155
-
156
- headers: dict[str, Any] | None = Field(
157
- default=None,
158
- description="Additional Headers to pass to the client.",
159
- )
160
-
161
- timeout_seconds: float | int = Field(
162
- default=5, description="Http Timeout in Seconds."
163
- )
164
-
165
- sse_read_timeout_seconds: float | int = Field(
166
- default=60 * 5,
167
- description="How many seconds to wait for server-sent events until closing the connection. (connections will be automatically re-established.)",
168
- )
169
-
170
- auth: httpx.Auth | None = Field(
171
- default=None, description="Httpx Auth Scheme."
172
- )
173
-
174
- model_config = ConfigDict(
175
- arbitrary_types_allowed=True,
176
- extra="allow",
177
- )
178
-
179
- class WebsocketParams(BaseModel):
180
- """Factory-Params for Websocket Servers."""
181
-
182
- url: str | AnyUrl = Field(
183
- ...,
184
- description="The url the server listens at. (e.g. ws://my-mcp-server.io/messages)",
185
- )
186
-
187
- @staticmethod
188
- def create_mcp_server(
189
- name: str,
190
- connection_params: StreamableHttpParams
191
- | SSEParams
192
- | StdioParams
193
- | WebsocketParams,
194
- max_retries: int = 3,
195
- mount_points: list[str | MCPRoot] | None = None,
196
- timeout_seconds: int | float = 10,
197
- server_logging_level: LoggingLevel = "error",
198
- enable_roots_feature: bool = False,
199
- enable_tools_feature: bool = False,
200
- enable_sampling_feature: bool = False,
201
- enable_prompts_feature: bool = False,
202
- sampling_callback: FlockSamplingMCPCallback | None = None,
203
- list_roots_callback: FlockListRootsMCPCallback | None = None,
204
- logging_callback: FlockLoggingMCPCallback | None = None,
205
- message_handler: FlockMessageHandlerMCPCallback | None = None,
206
- tool_cache_size: float = 100,
207
- tool_cache_ttl: float = 60,
208
- resource_contents_cache_size=10,
209
- resource_contents_cache_ttl=60 * 5,
210
- resource_list_cache_size=100,
211
- resource_list_cache_ttl=100,
212
- tool_result_cache_size=100,
213
- tool_result_cache_ttl=100,
214
- description: str | Callable[..., str] | None = None,
215
- alert_latency_threshold_ms: int = 30000,
216
- tool_whitelist: list[str] | None = None,
217
- allow_all_tools: bool = True,
218
- ) -> FlockMCPServer:
219
- """Create a default MCP Server with common modules.
220
-
221
- Allows for creating one of the three default-implementations provided
222
- by Flock:
223
- - SSE-Server (specify "sse" in type)
224
- - Stdio-Server (specify "stdio" in type)
225
- - Websockets-Server (specifiy "websockets" in type)
226
-
227
- Args:
228
- name: Unique identifier for the MCP server
229
- connection_params: Connection configuration (StdioParams, SSEParams, etc.)
230
- tool_whitelist: List of tool names to allow from this server. If provided,
231
- only tools with these names will be available. Used with
232
- allow_all_tools=False for strict filtering. Agent-level
233
- filtering is generally preferred over server-level filtering.
234
- allow_all_tools: Whether to allow all tools from the server. When True
235
- (default), all tools are available. When False, only tools
236
- in tool_whitelist (if provided) are available.
237
- Other args: Various configuration options for caching, callbacks, etc.
238
-
239
- Returns:
240
- FlockMCPServer: Configured MCP server instance
241
-
242
- Note:
243
- For security and flexibility, prefer using agent-level tool_whitelist
244
- over server-level filtering. This allows different agents to access
245
- different tool subsets from the same server.
246
- """
247
- # infer server type from the pydantic model class
248
- if isinstance(connection_params, FlockFactory.StdioParams):
249
- server_kind = "stdio"
250
- concrete_server_cls = FlockMCPStdioServer
251
- if isinstance(connection_params, FlockFactory.SSEParams):
252
- server_kind = "sse"
253
- concrete_server_cls = FlockSSEServer
254
- if isinstance(connection_params, FlockFactory.WebsocketParams):
255
- server_kind = "websockets"
256
- concrete_server_cls = FlockWSServer
257
- if isinstance(connection_params, FlockFactory.StreamableHttpParams):
258
- server_kind = "streamable_http"
259
- concrete_server_cls = FlockStreamableHttpServer
260
-
261
- # convert mount points.
262
- mounts: list[MCPRoot] = []
263
- if mount_points:
264
- for item in mount_points:
265
- if isinstance(item, MCPRoot):
266
- mounts.append(item)
267
- elif isinstance(item, str):
268
- try:
269
- conv = MCPRoot(uri=FileUrl(url=item))
270
- mounts.append(conv)
271
- except Exception:
272
- continue # ignore
273
- else:
274
- continue # ignore
275
-
276
- # build generic configs
277
- feature_config = FlockMCPFeatureConfiguration(
278
- roots_enabled=enable_roots_feature,
279
- tools_enabled=enable_tools_feature,
280
- prompts_enabled=enable_prompts_feature,
281
- sampling_enabled=enable_sampling_feature,
282
- tool_whitelist=tool_whitelist,
283
- )
284
- callback_config = FlockMCPCallbackConfiguration(
285
- sampling_callback=sampling_callback,
286
- list_roots_callback=list_roots_callback,
287
- logging_callback=logging_callback,
288
- message_handler=message_handler,
289
- )
290
- caching_config = FlockMCPCachingConfiguration(
291
- tool_cache_max_size=tool_cache_size,
292
- tool_cache_max_ttl=tool_cache_ttl,
293
- resource_contents_cache_max_size=resource_contents_cache_size,
294
- resource_contents_cache_max_ttl=resource_contents_cache_ttl,
295
- resource_list_cache_max_size=resource_list_cache_size,
296
- resource_list_cache_max_ttl=resource_list_cache_ttl,
297
- tool_result_cache_max_size=tool_result_cache_size,
298
- tool_result_cache_max_ttl=tool_result_cache_ttl,
299
- )
300
- connection_config = None
301
- server_config: (
302
- FlockStdioConfig | FlockSSEConfig | FlockWSConfig | None
303
- ) = None
304
-
305
- # Instantiate correct server + config
306
- if server_kind == "stdio":
307
- # build stdio config
308
- connection_config = FlockStdioConnectionConfig(
309
- max_retries=max_retries,
310
- connection_parameters=StdioServerParameters(
311
- command=connection_params.command,
312
- args=connection_params.args,
313
- env=connection_params.env,
314
- encoding=connection_params.encoding,
315
- encoding_error_handler=connection_params.encoding_error_handler,
316
- cwd=connection_params.cwd,
317
- ),
318
- mount_points=mounts,
319
- read_timeout_seconds=timeout_seconds,
320
- server_logging_level=server_logging_level,
321
- )
322
- server_config = FlockStdioConfig(
323
- name=name,
324
- connection_config=connection_config,
325
- feature_config=feature_config,
326
- caching_config=caching_config,
327
- callback_config=callback_config,
328
- )
329
- elif server_kind == "streamable_http":
330
- # build streamable http config
331
- connection_config = FlockStreamableHttpConnectionConfig(
332
- max_retries=max_retries,
333
- connection_parameters=StreamableHttpServerParameters(
334
- url=connection_params.url,
335
- headers=connection_params.headers,
336
- auth=connection_params.auth,
337
- timeout=connection_params.timeout_seconds,
338
- sse_read_timeout=connection_params.sse_read_timeout_seconds,
339
- terminate_on_close=connection_params.terminate_on_close,
340
- ),
341
- mount_points=mounts,
342
- server_logging_level=server_logging_level,
343
- )
344
-
345
- server_config = FlockStreamableHttpConfig(
346
- name=name,
347
- connection_config=connection_config,
348
- feature_config=feature_config,
349
- caching_config=caching_config,
350
- callback_config=callback_config,
351
- allow_all_tools=allow_all_tools,
352
- )
353
-
354
- elif server_kind == "sse":
355
- # build sse config
356
- connection_config = FlockSSEConnectionConfig(
357
- max_retries=max_retries,
358
- connection_parameters=SseServerParameters(
359
- url=connection_params.url,
360
- auth=connection_params.auth,
361
- headers=connection_params.headers,
362
- timeout=connection_params.timeout_seconds,
363
- sse_read_timeout=connection_params.sse_read_timeout_seconds,
364
- ),
365
- mount_points=mounts,
366
- server_logging_level=server_logging_level,
367
- )
368
-
369
- server_config = FlockSSEConfig(
370
- name=name,
371
- connection_config=connection_config,
372
- feature_config=feature_config,
373
- caching_config=caching_config,
374
- callback_config=callback_config,
375
- allow_all_tools=allow_all_tools,
376
- )
377
-
378
- elif server_kind == "websockets":
379
- # build websocket config
380
- connection_config = FlockWSConnectionConfig(
381
- max_retries=max_retries,
382
- connection_parameters=WebsocketServerParameters(
383
- url=connection_params.url,
384
- ),
385
- mount_points=mounts,
386
- server_logging_level=server_logging_level,
387
- )
388
-
389
- server_config = FlockWSConfig(
390
- name=name,
391
- connection_config=connection_config,
392
- feature_config=feature_config,
393
- caching_config=caching_config,
394
- callback_config=callback_config,
395
- allow_all_tools=allow_all_tools,
396
- )
397
-
398
- else:
399
- raise ValueError(
400
- f"Unsupported connection_params type: {type(connection_params)}"
401
- )
402
-
403
- if not server_config:
404
- raise ValueError(
405
- "Unable to create server configuration for passed params."
406
- )
407
-
408
- server = concrete_server_cls(config=server_config)
409
-
410
- metrics_component_config = MetricsUtilityConfig(
411
- latency_threshold_ms=alert_latency_threshold_ms
412
- )
413
-
414
- metrics_component = MetricsUtilityComponent("metrics", config=metrics_component_config)
415
-
416
- server.add_component(metrics_component)
417
-
418
- return server
419
-
420
- @staticmethod
421
- def create_default_agent(
422
- name: str,
423
- description: DynamicStr| None = None,
424
- model: str | Callable[..., str] | None = None,
425
- input: DynamicStr = None,
426
- output: DynamicStr = None,
427
- tools: list[Callable[..., Any] | Any] | None = None,
428
- servers: list[str | FlockMCPServer] | None = None,
429
- use_cache: bool = True,
430
- enable_rich_tables: bool = False,
431
- output_theme: OutputTheme = OutputTheme.abernathy,
432
- wait_for_input: bool = False,
433
- temperature: float = 1.0,
434
- max_tokens: int = 8192,
435
- max_tool_calls: int = 10,
436
- max_retries: int = 3,
437
- alert_latency_threshold_ms: int = 30000,
438
- no_output: bool = False,
439
- print_context: bool = False,
440
- write_to_file: bool = False,
441
- stream: bool = False,
442
- include_thought_process: bool = False,
443
- include_reasoning: bool = False,
444
- next_agent: DynamicStr | None = None,
445
- temporal_activity_config: TemporalActivityConfig | None = None,
446
- # Feedback parameters
447
- enable_feedback: bool = False,
448
- feedback_storage_type: Literal["sqlite", "azure"] = "sqlite",
449
- feedback_max_items: int = 5,
450
- feedback_timeframe_days: int = 30,
451
- feedback_input_key: str = "feedback_context",
452
- feedback_include_expected_responses: bool = True,
453
- feedback_include_actual_responses: bool = False,
454
- feedback_filter_keywords: list[str] | None = None,
455
- feedback_exclude_keywords: list[str] | None = None,
456
- feedback_sqlite_db_path: str = "./flock_feedback.db",
457
- feedback_azure_connection_string: str | None = None,
458
- feedback_azure_table_name: str = "flockfeedback",
459
- # Example parameters
460
- enable_examples: bool = False,
461
- example_storage_type: Literal["sqlite", "azure"] = "sqlite",
462
- example_max_examples: int = 5,
463
- example_timeframe_days: int = 30,
464
- example_input_key: str = "examples_context",
465
- example_filter_keywords: list[str] | None = None,
466
- example_exclude_keywords: list[str] | None = None,
467
- example_sqlite_db_path: str = "./flock_examples.db",
468
- example_azure_connection_string: str | None = None,
469
- example_azure_table_name: str = "flockexamples",
470
- ) -> FlockAgent:
471
- """Create a default FlockAgent.
472
-
473
- Deprecated: Use `DefaultAgent(...)` instead. This method now delegates to
474
- `DefaultAgent` and emits an optional one-time deprecation warning if the
475
- environment variable `FLOCK_WARN_FACTORY_DEPRECATION` is truthy (default).
476
- """
477
- _maybe_warn_factory_deprecation()
478
-
479
- # Configure feedback if enabled
480
- feedback_config = None
481
- if enable_feedback:
482
- from flock.components.utility.feedback_utility_component import FeedbackUtilityConfig
483
- feedback_config = FeedbackUtilityConfig(
484
- storage_type=feedback_storage_type,
485
- max_feedback_items=feedback_max_items,
486
- feedback_timeframe_days=feedback_timeframe_days,
487
- feedback_input_key=feedback_input_key,
488
- include_expected_responses=feedback_include_expected_responses,
489
- include_actual_responses=feedback_include_actual_responses,
490
- feedback_filter_keywords=feedback_filter_keywords or [],
491
- feedback_exclude_keywords=feedback_exclude_keywords or [],
492
- sqlite_db_path=feedback_sqlite_db_path,
493
- azure_connection_string=feedback_azure_connection_string,
494
- azure_table_name=feedback_azure_table_name,
495
- )
496
-
497
- # Configure examples if enabled
498
- example_config = None
499
- if enable_examples:
500
- from flock.components.utility.example_utility_component import ExampleUtilityConfig
501
- example_config = ExampleUtilityConfig(
502
- storage_type=example_storage_type,
503
- max_examples=example_max_examples,
504
- example_timeframe_days=example_timeframe_days,
505
- example_input_key=example_input_key,
506
- example_filter_keywords=example_filter_keywords or [],
507
- example_exclude_keywords=example_exclude_keywords or [],
508
- sqlite_db_path=example_sqlite_db_path,
509
- azure_connection_string=example_azure_connection_string,
510
- azure_table_name=example_azure_table_name,
511
- )
512
-
513
- return DefaultAgent(
514
- name=name,
515
- description=description,
516
- model=model,
517
- input=input,
518
- output=output,
519
- tools=tools,
520
- servers=servers,
521
- use_cache=use_cache,
522
- temperature=temperature,
523
- max_tokens=max_tokens,
524
- max_tool_calls=max_tool_calls,
525
- max_retries=max_retries,
526
- stream=stream,
527
- include_thought_process=include_thought_process,
528
- include_reasoning=include_reasoning,
529
- enable_rich_tables=enable_rich_tables,
530
- output_theme=output_theme,
531
- no_output=no_output,
532
- print_context=print_context,
533
- write_to_file=write_to_file,
534
- wait_for_input=wait_for_input,
535
- alert_latency_threshold_ms=alert_latency_threshold_ms,
536
- next_agent=next_agent,
537
- temporal_activity_config=temporal_activity_config,
538
- enable_feedback=enable_feedback,
539
- feedback_config=feedback_config,
540
- enable_examples=enable_examples,
541
- example_config=example_config,
542
- )
543
-
544
- @staticmethod
545
- def create_scheduled_agent(
546
- name: str,
547
- schedule_expression: str, # e.g., "every 1h", "0 0 * * *"
548
- description: DynamicStr | None = None,
549
- model: str | None = None,
550
- output: DynamicStr | None = None, # Input might be implicit or none
551
- tools: list[Callable[..., Any] | Any] | None = None,
552
- servers: list[str | FlockMCPServer] | None = None,
553
- use_cache: bool = False, # Whether to cache results
554
- temperature: float = 0.7, # Temperature for model responses
555
- # ... other common agent params from create_default_agent ...
556
- next_agent: DynamicStr | None = None,
557
- temporal_activity_config: TemporalActivityConfig
558
- | None = None, # If you want scheduled tasks to be Temporal activities
559
- **kwargs, # Forward other standard agent params
560
- ) -> FlockAgent:
561
- """Creates a FlockAgent configured to run on a schedule."""
562
- agent_config = ScheduledAgentConfig( # Use the new config type
563
- schedule_expression=schedule_expression,
564
- enabled=True,
565
- initial_run=True,
566
- max_runs=0,
567
- **kwargs,
568
- )
569
-
570
- agent = DefaultAgent(
571
- name=name,
572
- description=description,
573
- model=model,
574
- input="trigger_time: str | Time of scheduled execution",
575
- output=output,
576
- tools=tools,
577
- servers=servers,
578
- temporal_activity_config=temporal_activity_config,
579
- use_cache=use_cache,
580
- temperature=temperature,
581
- next_agent=next_agent,
582
- **kwargs,
583
- )
584
- agent.config = agent_config # Assign the scheduled agent config
585
-
586
- return agent
587
-
588
-
589
- # ---- one-time deprecation warning helper ----
590
- _FACTORY_DEPRECATION_WARNED = False
591
- _factory_logger = get_logger("core.factory")
592
-
593
-
594
- def _maybe_warn_factory_deprecation() -> None: # pragma: no cover - side-effect
595
- global _FACTORY_DEPRECATION_WARNED
596
- if _FACTORY_DEPRECATION_WARNED:
597
- return
598
- flag = os.getenv("FLOCK_WARN_FACTORY_DEPRECATION", "1").strip()
599
- enabled = flag not in {"0", "false", "False", "off", "OFF"}
600
- if not enabled:
601
- _FACTORY_DEPRECATION_WARNED = True
602
- return
603
- msg = (
604
- "FlockFactory.create_default_agent is deprecated and will be removed in a future release. "
605
- "Please use DefaultAgent(...) instead. Set FLOCK_WARN_FACTORY_DEPRECATION=0 to disable this notice."
606
- )
607
- # Log and emit a warnings.warn once
608
- try:
609
- _factory_logger.warning(msg)
610
- except Exception:
611
- pass
612
- warnings.warn(msg, DeprecationWarning, stacklevel=2)
613
- _FACTORY_DEPRECATION_WARNED = True