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
@@ -14,15 +14,14 @@ from mcp.shared.message import SessionMessage
14
14
  from opentelemetry import trace
15
15
  from pydantic import Field
16
16
 
17
- from flock.core.logging.logging import get_logger
18
- from flock.core.mcp.flock_mcp_server import FlockMCPServer
19
- from flock.core.mcp.mcp_client import FlockMCPClient
20
- from flock.core.mcp.mcp_client_manager import FlockMCPClientManager
21
- from flock.core.mcp.mcp_config import (
17
+ from flock.logging.logging import get_logger
18
+ from flock.mcp.client import FlockMCPClient
19
+ from flock.mcp.config import (
22
20
  FlockMCPConfiguration,
23
21
  FlockMCPConnectionConfiguration,
24
22
  )
25
- from flock.core.mcp.types.types import SseServerParameters
23
+ from flock.mcp.types import SseServerParameters
24
+
26
25
 
27
26
  logger = get_logger("mcp.sse.server")
28
27
  tracer = trace.get_tracer(__name__)
@@ -33,9 +32,7 @@ class FlockSSEConnectionConfig(FlockMCPConnectionConfiguration):
33
32
 
34
33
  # Only thing we need to override here is the concrete transport_type
35
34
  # and connection_parameters fields.
36
- transport_type: Literal["sse"] = Field(
37
- default="sse", description="Use the sse transport type."
38
- )
35
+ transport_type: Literal["sse"] = Field(default="sse", description="Use the sse transport type.")
39
36
 
40
37
  connection_parameters: SseServerParameters = Field(
41
38
  ..., description="SSE Server Connection Parameters."
@@ -56,7 +53,7 @@ class FlockSSEConfig(FlockMCPConfiguration):
56
53
  class FlockSSEClient(FlockMCPClient):
57
54
  """Client for SSE Servers."""
58
55
 
59
- config: FlockSSEConfig = Field(..., description="Client configuration.")
56
+ config: FlockMCPConfiguration = Field(..., description="Client configuration.")
60
57
 
61
58
  async def create_transport(
62
59
  self,
@@ -73,22 +70,14 @@ class FlockSSEClient(FlockMCPClient):
73
70
  param_copy = copy.deepcopy(params)
74
71
 
75
72
  if additional_params:
76
- override_headers = bool(
77
- additional_params.get("override_headers", False)
78
- )
73
+ override_headers = bool(additional_params.get("override_headers", False))
79
74
  if "headers" in additional_params:
80
75
  if override_headers:
81
- param_copy.headers = additional_params.get(
82
- "headers", params.headers
83
- )
76
+ param_copy.headers = additional_params.get("headers", params.headers)
84
77
  else:
85
- param_copy.headers.update(
86
- additional_params.get("headers", {})
87
- )
78
+ param_copy.headers.update(additional_params.get("headers", {}))
88
79
  if "read_timeout_seconds" in additional_params:
89
- param_copy.timeout = additional_params.get(
90
- "read_timeout_seconds", params.timeout
91
- )
80
+ param_copy.timeout = additional_params.get("read_timeout_seconds", params.timeout)
92
81
 
93
82
  if "sse_read_timeout" in additional_params:
94
83
  param_copy.sse_read_timeout = additional_params.get(
@@ -113,34 +102,3 @@ class FlockSSEClient(FlockMCPClient):
113
102
  timeout=float(param_copy.timeout),
114
103
  sse_read_timeout=float(param_copy.sse_read_timeout),
115
104
  )
116
-
117
-
118
- class FlockSSEClientManager(FlockMCPClientManager):
119
- """Manager for handling SSE Clients."""
120
-
121
- client_config: FlockSSEConfig = Field(
122
- ..., description="Configuration for clients."
123
- )
124
-
125
- async def make_client(
126
- self, additional_params: dict[str, Any]
127
- ) -> FlockSSEClient:
128
- """Create a new client instance."""
129
- new_client = FlockSSEClient(
130
- config=self.client_config, additional_params=additional_params
131
- )
132
- return new_client
133
-
134
-
135
- class FlockSSEServer(FlockMCPServer):
136
- """Class which represents a MCP Server using the SSE Transport type."""
137
-
138
- config: FlockSSEConfig = Field(..., description="Config for the server.")
139
-
140
- async def initialize(self) -> FlockSSEClientManager:
141
- """Called when initializing the server."""
142
- client_manager = FlockSSEClientManager(
143
- client_config=self.config,
144
- )
145
-
146
- return client_manager
@@ -1 +1 @@
1
- """Default Stdio Server Implementation for Flock."""
1
+ """Default Stdio Server Implementation for flock."""
@@ -13,15 +13,14 @@ from mcp.types import JSONRPCMessage
13
13
  from opentelemetry import trace
14
14
  from pydantic import Field
15
15
 
16
- from flock.core.logging.logging import get_logger
17
- from flock.core.mcp.flock_mcp_server import FlockMCPServer
18
- from flock.core.mcp.mcp_client import FlockMCPClient
19
- from flock.core.mcp.mcp_client_manager import FlockMCPClientManager
20
- from flock.core.mcp.mcp_config import (
16
+ from flock.logging.logging import get_logger
17
+ from flock.mcp.client import FlockMCPClient
18
+ from flock.mcp.config import (
21
19
  FlockMCPConfiguration,
22
20
  FlockMCPConnectionConfiguration,
23
21
  )
24
- from flock.core.mcp.types.types import StdioServerParameters
22
+ from flock.mcp.types import StdioServerParameters
23
+
25
24
 
26
25
  logger = get_logger("mcp.stdio.server")
27
26
  tracer = trace.get_tracer(__name__)
@@ -56,7 +55,7 @@ class FlockStdioConfig(FlockMCPConfiguration):
56
55
  class FlockStdioClient(FlockMCPClient):
57
56
  """Client for Stdio Servers."""
58
57
 
59
- config: FlockStdioConfig = Field(..., description="Client Configuration.")
58
+ config: FlockMCPConfiguration = Field(..., description="Client Configuration.")
60
59
 
61
60
  async def create_transport(
62
61
  self,
@@ -78,9 +77,7 @@ class FlockStdioClient(FlockMCPClient):
78
77
  if additional_params:
79
78
  # If it is present, then modify server parameters based on certain keys.
80
79
  if "command" in additional_params:
81
- param_copy.command = additional_params.get(
82
- "command", params.command
83
- )
80
+ param_copy.command = additional_params.get("command", params.command)
84
81
  if "args" in additional_params:
85
82
  param_copy.args = additional_params.get("args", params.command)
86
83
  if "env" in additional_params:
@@ -90,9 +87,7 @@ class FlockStdioClient(FlockMCPClient):
90
87
  param_copy.cwd = additional_params.get("cwd", params.env)
91
88
 
92
89
  if "encoding" in additional_params:
93
- param_copy.encoding = additional_params.get(
94
- "encoding", params.encoding
95
- )
90
+ param_copy.encoding = additional_params.get("encoding", params.encoding)
96
91
 
97
92
  if "encoding_error_handler" in additional_params:
98
93
  param_copy.encoding_error_handler = additional_params.get(
@@ -101,38 +96,3 @@ class FlockStdioClient(FlockMCPClient):
101
96
 
102
97
  # stdio_client already is an AsyncContextManager
103
98
  return stdio_client(server=param_copy)
104
-
105
-
106
- # Not really needed but kept here as an example.
107
- class FlockStdioClientManager(FlockMCPClientManager):
108
- """Manager for handling Stdio Clients."""
109
-
110
- client_config: FlockStdioConfig = Field(
111
- ..., description="Configuration for clients."
112
- )
113
-
114
- async def make_client(
115
- self, additional_params: dict[str, Any] | None = None
116
- ):
117
- """Create a new client instance with any additional parameters."""
118
- new_client = FlockStdioClient(
119
- config=self.client_config,
120
- additional_params=additional_params,
121
- )
122
- return new_client
123
-
124
-
125
- class FlockMCPStdioServer(FlockMCPServer):
126
- """Class which represents a MCP Server using the Stdio Transport type.
127
-
128
- This means (most likely) that the server is a locally
129
- executed script.
130
- """
131
-
132
- config: FlockStdioConfig = Field(..., description="Config for the server.")
133
-
134
- async def initialize(self) -> FlockStdioClientManager:
135
- """Called when initializing the server."""
136
- client_manager = FlockStdioClientManager(client_config=self.config)
137
-
138
- return client_manager
@@ -16,18 +16,17 @@ from mcp.shared.message import SessionMessage
16
16
  from opentelemetry import trace
17
17
  from pydantic import Field
18
18
 
19
- from flock.core.logging.logging import get_logger
20
- from flock.core.mcp.flock_mcp_server import FlockMCPServer
21
- from flock.core.mcp.mcp_client import FlockMCPClient
22
- from flock.core.mcp.mcp_client_manager import FlockMCPClientManager
23
- from flock.core.mcp.mcp_config import (
19
+ from flock.logging.logging import get_logger
20
+ from flock.mcp.client import FlockMCPClient
21
+ from flock.mcp.config import (
24
22
  FlockMCPConfiguration,
25
23
  FlockMCPConnectionConfiguration,
26
24
  )
27
- from flock.core.mcp.types.types import (
25
+ from flock.mcp.types import (
28
26
  StreamableHttpServerParameters,
29
27
  )
30
28
 
29
+
31
30
  logger = get_logger("mcp.streamable_http.server")
32
31
  tracer = trace.get_tracer(__name__)
33
32
 
@@ -63,48 +62,38 @@ class FlockStreamableHttpConfig(FlockMCPConfiguration):
63
62
  class FlockStreamableHttpClient(FlockMCPClient):
64
63
  """Client for StreamableHttpServers."""
65
64
 
66
- config: FlockStreamableHttpConfig = Field(
67
- ..., description="Client configuration."
68
- )
65
+ config: FlockMCPConfiguration = Field(..., description="Client configuration.")
69
66
 
70
67
  async def create_transport(
71
68
  self,
72
69
  params: StreamableHttpServerParameters,
73
70
  additional_params: dict[str, Any] | None = None,
74
71
  ) -> AbstractAsyncContextManager[
75
- tuple[
76
- MemoryObjectReceiveStream[SessionMessage | Exception],
77
- MemoryObjectSendStream[SessionMessage],
78
- GetSessionIdCallback,
79
- ],
80
- None,
81
- ]:
72
+ tuple[
73
+ MemoryObjectReceiveStream[SessionMessage | Exception],
74
+ MemoryObjectSendStream[SessionMessage],
75
+ GetSessionIdCallback,
76
+ ],
77
+ None,
78
+ ]:
82
79
  """Return an async context manager whose __aenter__ method yields (read_stream, send_stream)."""
83
80
  param_copy = copy.deepcopy(params)
84
81
 
85
82
  if additional_params:
86
- override_headers = bool(
87
- additional_params.get("override_headers", False)
88
- )
83
+ override_headers = bool(additional_params.get("override_headers", False))
89
84
 
90
85
  if "headers" in additional_params:
91
86
  if override_headers:
92
- param_copy.headers = additional_params.get(
93
- "headers", params.headers
94
- )
87
+ param_copy.headers = additional_params.get("headers", params.headers)
95
88
  else:
96
- param_copy.headers.update(
97
- additional_params.get("headers", {})
98
- )
89
+ param_copy.headers.update(additional_params.get("headers", {}))
99
90
  if "auth" in additional_params and isinstance(
100
91
  additional_params.get("auth"), httpx.Auth
101
92
  ):
102
93
  param_copy.auth = additional_params.get("auth", param_copy.auth)
103
94
 
104
95
  if "read_timeout_seconds" in additional_params:
105
- param_copy.timeout = additional_params.get(
106
- "read_timeout_seconds", params.timeout
107
- )
96
+ param_copy.timeout = additional_params.get("read_timeout_seconds", params.timeout)
108
97
 
109
98
  if "sse_read_timeout" in additional_params:
110
99
  param_copy.sse_read_timeout = additional_params.get(
@@ -133,37 +122,3 @@ class FlockStreamableHttpClient(FlockMCPClient):
133
122
  terminate_on_close=param_copy.terminate_on_close,
134
123
  auth=param_copy.auth,
135
124
  )
136
-
137
-
138
- class FlockStreamableHttpClientManager(FlockMCPClientManager):
139
- """Manager for handling StreamableHttpClients."""
140
-
141
- client_config: FlockStreamableHttpConfig = Field(
142
- ..., description="Configuration for clients."
143
- )
144
-
145
- async def make_client(
146
- self, additional_params: dict[str, Any] | None = None
147
- ) -> FlockStreamableHttpClient:
148
- """Create a new client instance."""
149
- new_client = FlockStreamableHttpClient(
150
- config=self.client_config,
151
- additional_params=additional_params,
152
- )
153
- return new_client
154
-
155
-
156
- class FlockStreamableHttpServer(FlockMCPServer):
157
- """Class which represents a MCP Server using the streamable Http Transport type."""
158
-
159
- config: FlockStreamableHttpConfig = Field(
160
- ..., description="Config for the server."
161
- )
162
-
163
- async def initialize(self) -> FlockStreamableHttpClientManager:
164
- """Called when initializing the server."""
165
- client_manager = FlockStreamableHttpClientManager(
166
- client_config=self.config
167
- )
168
-
169
- return client_manager
@@ -13,15 +13,14 @@ from mcp.shared.message import SessionMessage
13
13
  from opentelemetry import trace
14
14
  from pydantic import Field
15
15
 
16
- from flock.core.logging.logging import get_logger
17
- from flock.core.mcp.flock_mcp_server import FlockMCPServer
18
- from flock.core.mcp.mcp_client import FlockMCPClient
19
- from flock.core.mcp.mcp_client_manager import FlockMCPClientManager
20
- from flock.core.mcp.mcp_config import (
16
+ from flock.logging.logging import get_logger
17
+ from flock.mcp.client import FlockMCPClient
18
+ from flock.mcp.config import (
21
19
  FlockMCPConfiguration,
22
20
  FlockMCPConnectionConfiguration,
23
21
  )
24
- from flock.core.mcp.types.types import WebsocketServerParameters
22
+ from flock.mcp.types import WebsocketServerParameters
23
+
25
24
 
26
25
  logger = get_logger("mcp.ws.server")
27
26
  tracer = trace.get_tracer(__name__)
@@ -59,7 +58,7 @@ class FlockWSConfig(FlockMCPConfiguration):
59
58
  class FlockWSClient(FlockMCPClient):
60
59
  """Client for Websocket servers."""
61
60
 
62
- config: FlockWSConfig = Field(..., description="Client Configuration")
61
+ config: FlockMCPConfiguration = Field(..., description="Client Configuration")
63
62
 
64
63
  # This one we HAVE to specify. This tells Flock
65
64
  # how to create the underlying connection.
@@ -84,36 +83,4 @@ class FlockWSClient(FlockMCPClient):
84
83
  # If present, then apply the changes in "url" to the create_transport logic.
85
84
  param_copy.url = additional_params.get("url", params.url)
86
85
 
87
- return websocket_client(
88
- url=param_copy.url
89
- ) # return the async context manager
90
-
91
-
92
- # not really needed, but kept for type hints and as an example.
93
- class FlockWSClientManager(FlockMCPClientManager):
94
- """Manager for handling websocket clients."""
95
-
96
- client_config: FlockWSConfig = Field(
97
- ..., description="Configuration for clients."
98
- )
99
-
100
- async def make_client(self, additional_params=None):
101
- """Create a new client instance."""
102
- new_client = FlockWSClient(
103
- config=self.client_config,
104
- additional_params=additional_params,
105
- )
106
- return new_client
107
-
108
-
109
- class FlockWSServer(FlockMCPServer):
110
- """Class which represents an MCP Server using the websocket transport type."""
111
-
112
- config: FlockWSConfig = Field(..., description="Config for the server.")
113
-
114
- # Specify the concrete type for the server.
115
- async def initialize(self) -> FlockWSClientManager:
116
- """Called when initializing the server."""
117
- client_manager = FlockWSClientManager(client_config=self.config)
118
-
119
- return client_manager
86
+ return websocket_client(url=param_copy.url) # return the async context manager
@@ -8,8 +8,10 @@ from mcp import Tool
8
8
  from mcp.types import CallToolResult, TextContent, ToolAnnotations
9
9
  from opentelemetry import trace
10
10
  from pydantic import BaseModel, Field
11
+ from typing_extensions import Self
12
+
13
+ from flock.logging.logging import get_logger
11
14
 
12
- from flock.core.logging.logging import get_logger
13
15
 
14
16
  logger = get_logger("mcp.tool")
15
17
  tracer = trace.get_tracer(__name__)
@@ -31,17 +33,11 @@ class FlockMCPTool(BaseModel):
31
33
 
32
34
  name: str = Field(..., description="Name of the tool")
33
35
 
34
- agent_id: str = Field(
35
- ..., description="Associated agent_id. Used for internal tracking."
36
- )
36
+ agent_id: str = Field(..., description="Associated agent_id. Used for internal tracking.")
37
37
 
38
- run_id: str = Field(
39
- ..., description="Associated run_id. Used for internal tracking."
40
- )
38
+ run_id: str = Field(..., description="Associated run_id. Used for internal tracking.")
41
39
 
42
- description: str | None = Field(
43
- ..., description="A human-readable description of the tool"
44
- )
40
+ description: str | None = Field(..., description="A human-readable description of the tool")
45
41
 
46
42
  input_schema: dict[str, Any] = Field(
47
43
  ...,
@@ -53,9 +49,7 @@ class FlockMCPTool(BaseModel):
53
49
  )
54
50
 
55
51
  @classmethod
56
- def from_mcp_tool(
57
- cls: type[T], tool: Tool, agent_id: str, run_id: str
58
- ) -> T:
52
+ def from_mcp_tool(cls, tool: Tool, agent_id: str, run_id: str) -> Self:
59
53
  """Convert MCP Tool to Flock Tool."""
60
54
  return cls(
61
55
  name=tool.name,
@@ -67,7 +61,7 @@ class FlockMCPTool(BaseModel):
67
61
  )
68
62
 
69
63
  @classmethod
70
- def to_mcp_tool(cls: type[T], instance: T) -> Tool | None:
64
+ def to_mcp_tool(cls, instance: Self) -> Tool | None:
71
65
  """Convert a flock mcp tool into a mcp tool."""
72
66
  return Tool(
73
67
  name=instance.name,
@@ -77,17 +71,17 @@ class FlockMCPTool(BaseModel):
77
71
  )
78
72
 
79
73
  # Use DSPy's converter for JSON Schema → Tool args to stay aligned with DSPy.
80
- def _convert_input_schema_to_tool_args(self, input_schema: dict[str, Any]) -> tuple[dict[str, Any], dict[str, Any], dict[str, str]]:
74
+ def _convert_input_schema_to_tool_args(
75
+ self, input_schema: dict[str, Any]
76
+ ) -> tuple[dict[str, Any], dict[str, Any], dict[str, str]]:
81
77
  try:
82
78
  return convert_input_schema_to_tool_args(input_schema)
83
79
  except Exception as e: # pragma: no cover - defensive
84
- logger.error("Failed to convert MCP tool schema to DSPy tool args: %s", e)
80
+ logger.exception("Failed to convert MCP tool schema to DSPy tool args: %s", e)
85
81
  # Fallback to empty definitions to avoid breaking execution
86
82
  return {}, {}, {}
87
83
 
88
- def _convert_mcp_tool_result(
89
- self, call_tool_result: CallToolResult
90
- ) -> str | list[Any]:
84
+ def _convert_mcp_tool_result(self, call_tool_result: CallToolResult) -> str | list[Any]:
91
85
  text_contents: list[TextContent] = []
92
86
  non_text_contents = []
93
87
 
@@ -114,9 +108,7 @@ class FlockMCPTool(BaseModel):
114
108
 
115
109
  def as_dspy_tool(self, server: Any) -> DSPyTool:
116
110
  """Wrap this tool as a DSPyTool for downstream."""
117
- args, arg_type, args_desc = self._convert_input_schema_to_tool_args(
118
- self.input_schema
119
- )
111
+ args, arg_type, args_desc = self._convert_input_schema_to_tool_args(self.input_schema)
120
112
 
121
113
  async def func(*args, **kwargs):
122
114
  with tracer.start_as_current_span(f"tool.{self.name}.call") as span:
@@ -128,9 +120,7 @@ class FlockMCPTool(BaseModel):
128
120
  logger.debug(
129
121
  f"Tool: {self.name}: got client for server '{server_name}' for agent {self.agent_id} on run {self.run_id}"
130
122
  )
131
- logger.debug(
132
- f"Tool: {self.name}: calling server '{server_name}'"
133
- )
123
+ logger.debug(f"Tool: {self.name}: calling server '{server_name}'")
134
124
  result = await server.call_tool(
135
125
  agent_id=self.agent_id,
136
126
  run_id=self.run_id,
@@ -142,7 +132,7 @@ class FlockMCPTool(BaseModel):
142
132
  )
143
133
  return self._convert_mcp_tool_result(result)
144
134
  except Exception as e:
145
- logger.error(
135
+ logger.exception(
146
136
  f"Tool: Exception ocurred when calling tool '{self.name}': {e}"
147
137
  )
148
138
  span.record_exception(e)
@@ -0,0 +1,42 @@
1
+ """MCP Type Definitions for Flock-Flow."""
2
+
3
+ from flock.mcp.types.factories import (
4
+ default_flock_mcp_list_roots_callback_factory,
5
+ default_flock_mcp_logging_callback_factory,
6
+ default_flock_mcp_message_handler_callback_factory,
7
+ default_flock_mcp_sampling_callback_factory,
8
+ )
9
+ from flock.mcp.types.types import (
10
+ FlockListRootsMCPCallback,
11
+ FlockLoggingMCPCallback,
12
+ FlockLoggingMessageNotificationParams,
13
+ FlockMessageHandlerMCPCallback,
14
+ FlockSamplingMCPCallback,
15
+ MCPRoot,
16
+ ServerNotification,
17
+ ServerParameters,
18
+ SseServerParameters,
19
+ StdioServerParameters,
20
+ StreamableHttpServerParameters,
21
+ WebsocketServerParameters,
22
+ )
23
+
24
+
25
+ __all__ = [
26
+ "FlockListRootsMCPCallback",
27
+ "FlockLoggingMCPCallback",
28
+ "FlockLoggingMessageNotificationParams",
29
+ "FlockMessageHandlerMCPCallback",
30
+ "FlockSamplingMCPCallback",
31
+ "MCPRoot",
32
+ "ServerNotification",
33
+ "ServerParameters",
34
+ "SseServerParameters",
35
+ "StdioServerParameters",
36
+ "StreamableHttpServerParameters",
37
+ "WebsocketServerParameters",
38
+ "default_flock_mcp_list_roots_callback_factory",
39
+ "default_flock_mcp_logging_callback_factory",
40
+ "default_flock_mcp_message_handler_callback_factory",
41
+ "default_flock_mcp_sampling_callback_factory",
42
+ ]
@@ -1,5 +1,7 @@
1
1
  """MCP Callbacks."""
2
2
 
3
+ from typing import Any
4
+
3
5
  from mcp.shared.context import RequestContext
4
6
  from mcp.shared.session import RequestResponder
5
7
  from mcp.types import (
@@ -13,9 +15,8 @@ from mcp.types import (
13
15
  ServerRequest,
14
16
  )
15
17
 
16
- from flock.core.logging.logging import FlockLogger
17
- from flock.core.mcp.mcp_client import Any
18
- from flock.core.mcp.types.handlers import (
18
+ from flock.logging.logging import FlockLogger
19
+ from flock.mcp.types.handlers import (
19
20
  handle_incoming_exception,
20
21
  handle_incoming_request,
21
22
  handle_incoming_server_notification,
@@ -27,14 +28,12 @@ async def default_sampling_callback(
27
28
  ctx: RequestContext, params: CreateMessageRequestParams, logger: FlockLogger
28
29
  ) -> ErrorData:
29
30
  """Default Callback for Sampling."""
30
- logger.info(f"Rejecting Sampling Request.")
31
+ logger.info("Rejecting Sampling Request.")
31
32
  return ErrorData(code=INVALID_REQUEST, message="Sampling not supported.")
32
33
 
33
34
 
34
35
  async def default_message_handler(
35
- req: RequestResponder[ServerRequest, ClientResult]
36
- | ServerNotification
37
- | Exception,
36
+ req: RequestResponder[ServerRequest, ClientResult] | ServerNotification | Exception,
38
37
  logger: FlockLogger,
39
38
  associated_client: Any,
40
39
  ) -> None:
@@ -65,12 +64,9 @@ async def default_list_roots_callback(
65
64
  ) -> ListRootsResult | ErrorData:
66
65
  """Default List Roots Callback."""
67
66
  if associated_client.config.feature_config.roots_enabled:
68
- current_roots = await associated_client.get_current_roots()
67
+ current_roots = await associated_client.get_roots()
69
68
  return ListRootsResult(roots=current_roots)
70
- else:
71
- return ErrorData(
72
- code=INVALID_REQUEST, message="List roots not supported."
73
- )
69
+ return ErrorData(code=INVALID_REQUEST, message="List roots not supported.")
74
70
 
75
71
 
76
72
  async def default_logging_callback(
@@ -79,6 +75,4 @@ async def default_logging_callback(
79
75
  server_name: str,
80
76
  ) -> None:
81
77
  """Default Logging Handling Callback."""
82
- await handle_logging_message(
83
- params=params, logger=logger, server_name=server_name
84
- )
78
+ await handle_logging_message(params=params, logger=logger, server_name=server_name)
@@ -7,14 +7,14 @@ from mcp.types import (
7
7
  CreateMessageRequestParams,
8
8
  )
9
9
 
10
- from flock.core.logging.logging import FlockLogger, get_logger
11
- from flock.core.mcp.types.callbacks import (
10
+ from flock.logging.logging import FlockLogger, get_logger
11
+ from flock.mcp.types.callbacks import (
12
12
  default_list_roots_callback,
13
13
  default_logging_callback,
14
14
  default_message_handler,
15
15
  default_sampling_callback,
16
16
  )
17
- from flock.core.mcp.types.types import (
17
+ from flock.mcp.types.types import (
18
18
  FlockListRootsMCPCallback,
19
19
  FlockLoggingMCPCallback,
20
20
  FlockLoggingMessageNotificationParams,
@@ -23,6 +23,7 @@ from flock.core.mcp.types.types import (
23
23
  ServerNotification,
24
24
  )
25
25
 
26
+
26
27
  default_logging_callback_logger = get_logger("mcp.callback.logging")
27
28
  default_sampling_callback_logger = get_logger("mcp.callback.sampling")
28
29
  default_list_roots_callback_logger = get_logger("mcp.callback.roots")
@@ -45,6 +46,8 @@ def default_flock_mcp_logging_callback_factory(
45
46
  server_name=associated_client.config.name,
46
47
  )
47
48
 
49
+ return _method
50
+
48
51
 
49
52
  def default_flock_mcp_sampling_callback_factory(
50
53
  associated_client: Any,
@@ -60,9 +63,7 @@ def default_flock_mcp_sampling_callback_factory(
60
63
  logger_to_use.info(
61
64
  f"SAMPLING_REQUEST: server '{associated_client.config.name}' sent a sampling request: {params}"
62
65
  )
63
- await default_sampling_callback(
64
- ctx=ctx, params=params, logger=logger_to_use
65
- )
66
+ await default_sampling_callback(ctx=ctx, params=params, logger=logger_to_use)
66
67
 
67
68
  return _method
68
69