flock-core 0.4.543__py3-none-any.whl → 0.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of flock-core might be problematic. Click here for more details.

Files changed (501) hide show
  1. flock/__init__.py +12 -217
  2. flock/agent.py +1079 -0
  3. flock/api/themes.py +71 -0
  4. flock/artifacts.py +86 -0
  5. flock/cli.py +147 -0
  6. flock/components.py +189 -0
  7. flock/dashboard/__init__.py +30 -0
  8. flock/dashboard/collector.py +559 -0
  9. flock/dashboard/events.py +188 -0
  10. flock/dashboard/graph_builder.py +563 -0
  11. flock/dashboard/launcher.py +235 -0
  12. flock/dashboard/models/graph.py +156 -0
  13. flock/dashboard/service.py +991 -0
  14. flock/dashboard/static_v2/assets/index-DFRnI_mt.js +111 -0
  15. flock/dashboard/static_v2/assets/index-fPLNdmp1.css +1 -0
  16. flock/dashboard/static_v2/index.html +13 -0
  17. flock/dashboard/websocket.py +246 -0
  18. flock/engines/__init__.py +6 -0
  19. flock/engines/dspy_engine.py +932 -0
  20. flock/examples.py +131 -0
  21. flock/frontend/README.md +778 -0
  22. flock/frontend/docs/DESIGN_SYSTEM.md +1980 -0
  23. flock/frontend/index.html +12 -0
  24. flock/frontend/package-lock.json +4337 -0
  25. flock/frontend/package.json +48 -0
  26. flock/frontend/src/App.tsx +139 -0
  27. flock/frontend/src/__tests__/integration/graph-snapshot.test.tsx +647 -0
  28. flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx +699 -0
  29. flock/frontend/src/components/common/BuildInfo.tsx +39 -0
  30. flock/frontend/src/components/common/EmptyState.module.css +115 -0
  31. flock/frontend/src/components/common/EmptyState.tsx +128 -0
  32. flock/frontend/src/components/common/ErrorBoundary.module.css +169 -0
  33. flock/frontend/src/components/common/ErrorBoundary.tsx +118 -0
  34. flock/frontend/src/components/common/KeyboardShortcutsDialog.css +251 -0
  35. flock/frontend/src/components/common/KeyboardShortcutsDialog.tsx +151 -0
  36. flock/frontend/src/components/common/LoadingSpinner.module.css +97 -0
  37. flock/frontend/src/components/common/LoadingSpinner.tsx +29 -0
  38. flock/frontend/src/components/controls/PublishControl.css +547 -0
  39. flock/frontend/src/components/controls/PublishControl.test.tsx +543 -0
  40. flock/frontend/src/components/controls/PublishControl.tsx +432 -0
  41. flock/frontend/src/components/details/DetailWindowContainer.tsx +58 -0
  42. flock/frontend/src/components/details/LiveOutputTab.test.tsx +792 -0
  43. flock/frontend/src/components/details/LiveOutputTab.tsx +220 -0
  44. flock/frontend/src/components/details/MessageDetailWindow.tsx +439 -0
  45. flock/frontend/src/components/details/MessageHistoryTab.tsx +374 -0
  46. flock/frontend/src/components/details/NodeDetailWindow.test.tsx +501 -0
  47. flock/frontend/src/components/details/NodeDetailWindow.tsx +218 -0
  48. flock/frontend/src/components/details/RunStatusTab.tsx +348 -0
  49. flock/frontend/src/components/details/tabs.test.tsx +1015 -0
  50. flock/frontend/src/components/filters/ArtifactTypeFilter.tsx +21 -0
  51. flock/frontend/src/components/filters/CorrelationIDFilter.module.css +102 -0
  52. flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx +197 -0
  53. flock/frontend/src/components/filters/CorrelationIDFilter.tsx +121 -0
  54. flock/frontend/src/components/filters/FilterFlyout.module.css +104 -0
  55. flock/frontend/src/components/filters/FilterFlyout.tsx +80 -0
  56. flock/frontend/src/components/filters/FilterPills.module.css +220 -0
  57. flock/frontend/src/components/filters/FilterPills.test.tsx +189 -0
  58. flock/frontend/src/components/filters/FilterPills.tsx +143 -0
  59. flock/frontend/src/components/filters/ProducerFilter.tsx +21 -0
  60. flock/frontend/src/components/filters/SavedFiltersControl.module.css +60 -0
  61. flock/frontend/src/components/filters/SavedFiltersControl.test.tsx +158 -0
  62. flock/frontend/src/components/filters/SavedFiltersControl.tsx +159 -0
  63. flock/frontend/src/components/filters/TagFilter.tsx +21 -0
  64. flock/frontend/src/components/filters/TimeRangeFilter.module.css +115 -0
  65. flock/frontend/src/components/filters/TimeRangeFilter.test.tsx +154 -0
  66. flock/frontend/src/components/filters/TimeRangeFilter.tsx +110 -0
  67. flock/frontend/src/components/filters/VisibilityFilter.tsx +21 -0
  68. flock/frontend/src/components/graph/AgentNode.test.tsx +77 -0
  69. flock/frontend/src/components/graph/AgentNode.tsx +324 -0
  70. flock/frontend/src/components/graph/GraphCanvas.tsx +613 -0
  71. flock/frontend/src/components/graph/MessageFlowEdge.tsx +128 -0
  72. flock/frontend/src/components/graph/MessageNode.test.tsx +64 -0
  73. flock/frontend/src/components/graph/MessageNode.tsx +129 -0
  74. flock/frontend/src/components/graph/MiniMap.tsx +47 -0
  75. flock/frontend/src/components/graph/TransformEdge.tsx +123 -0
  76. flock/frontend/src/components/layout/DashboardLayout.css +420 -0
  77. flock/frontend/src/components/layout/DashboardLayout.tsx +287 -0
  78. flock/frontend/src/components/layout/Header.module.css +88 -0
  79. flock/frontend/src/components/layout/Header.tsx +52 -0
  80. flock/frontend/src/components/modules/HistoricalArtifactsModule.module.css +288 -0
  81. flock/frontend/src/components/modules/HistoricalArtifactsModule.tsx +450 -0
  82. flock/frontend/src/components/modules/HistoricalArtifactsModuleWrapper.tsx +13 -0
  83. flock/frontend/src/components/modules/JsonAttributeRenderer.tsx +140 -0
  84. flock/frontend/src/components/modules/ModuleRegistry.test.ts +333 -0
  85. flock/frontend/src/components/modules/ModuleRegistry.ts +93 -0
  86. flock/frontend/src/components/modules/ModuleWindow.tsx +223 -0
  87. flock/frontend/src/components/modules/TraceModuleJaeger.tsx +1971 -0
  88. flock/frontend/src/components/modules/TraceModuleJaegerWrapper.tsx +13 -0
  89. flock/frontend/src/components/modules/registerModules.ts +29 -0
  90. flock/frontend/src/components/settings/AdvancedSettings.tsx +175 -0
  91. flock/frontend/src/components/settings/AppearanceSettings.tsx +185 -0
  92. flock/frontend/src/components/settings/GraphSettings.tsx +110 -0
  93. flock/frontend/src/components/settings/MultiSelect.tsx +235 -0
  94. flock/frontend/src/components/settings/SettingsPanel.css +327 -0
  95. flock/frontend/src/components/settings/SettingsPanel.tsx +131 -0
  96. flock/frontend/src/components/settings/ThemeSelector.tsx +298 -0
  97. flock/frontend/src/components/settings/TracingSettings.tsx +404 -0
  98. flock/frontend/src/hooks/useKeyboardShortcuts.ts +148 -0
  99. flock/frontend/src/hooks/useModulePersistence.test.ts +442 -0
  100. flock/frontend/src/hooks/useModulePersistence.ts +154 -0
  101. flock/frontend/src/hooks/useModules.ts +157 -0
  102. flock/frontend/src/hooks/usePersistence.ts +141 -0
  103. flock/frontend/src/main.tsx +13 -0
  104. flock/frontend/src/services/api.ts +337 -0
  105. flock/frontend/src/services/graphService.test.ts +330 -0
  106. flock/frontend/src/services/graphService.ts +75 -0
  107. flock/frontend/src/services/indexeddb.test.ts +793 -0
  108. flock/frontend/src/services/indexeddb.ts +848 -0
  109. flock/frontend/src/services/layout.test.ts +437 -0
  110. flock/frontend/src/services/layout.ts +357 -0
  111. flock/frontend/src/services/themeApplicator.ts +140 -0
  112. flock/frontend/src/services/themeService.ts +77 -0
  113. flock/frontend/src/services/websocket.ts +650 -0
  114. flock/frontend/src/store/filterStore.test.ts +250 -0
  115. flock/frontend/src/store/filterStore.ts +272 -0
  116. flock/frontend/src/store/graphStore.test.ts +570 -0
  117. flock/frontend/src/store/graphStore.ts +462 -0
  118. flock/frontend/src/store/moduleStore.test.ts +253 -0
  119. flock/frontend/src/store/moduleStore.ts +75 -0
  120. flock/frontend/src/store/settingsStore.ts +188 -0
  121. flock/frontend/src/store/streamStore.ts +68 -0
  122. flock/frontend/src/store/uiStore.test.ts +54 -0
  123. flock/frontend/src/store/uiStore.ts +122 -0
  124. flock/frontend/src/store/wsStore.ts +34 -0
  125. flock/frontend/src/styles/index.css +15 -0
  126. flock/frontend/src/styles/scrollbar.css +47 -0
  127. flock/frontend/src/styles/variables.css +488 -0
  128. flock/frontend/src/test/setup.ts +1 -0
  129. flock/frontend/src/types/filters.ts +47 -0
  130. flock/frontend/src/types/graph.ts +95 -0
  131. flock/frontend/src/types/modules.ts +10 -0
  132. flock/frontend/src/types/theme.ts +55 -0
  133. flock/frontend/src/utils/artifacts.ts +24 -0
  134. flock/frontend/src/utils/mockData.ts +98 -0
  135. flock/frontend/src/utils/performance.ts +16 -0
  136. flock/frontend/src/vite-env.d.ts +17 -0
  137. flock/frontend/tsconfig.json +27 -0
  138. flock/frontend/tsconfig.node.json +11 -0
  139. flock/frontend/vite.config.ts +25 -0
  140. flock/frontend/vitest.config.ts +11 -0
  141. flock/{core/util → helper}/cli_helper.py +9 -5
  142. flock/{core/logging → logging}/__init__.py +2 -3
  143. flock/logging/auto_trace.py +159 -0
  144. flock/{core/logging → logging}/formatters/enum_builder.py +3 -4
  145. flock/{core/logging → logging}/formatters/theme_builder.py +19 -44
  146. flock/{core/logging → logging}/formatters/themed_formatter.py +69 -107
  147. flock/{core/logging → logging}/logging.py +78 -61
  148. flock/{core/logging → logging}/telemetry.py +66 -26
  149. flock/{core/logging → logging}/telemetry_exporter/base_exporter.py +2 -2
  150. flock/logging/telemetry_exporter/duckdb_exporter.py +216 -0
  151. flock/{core/logging → logging}/telemetry_exporter/file_exporter.py +13 -10
  152. flock/{core/logging → logging}/telemetry_exporter/sqlite_exporter.py +2 -3
  153. flock/logging/trace_and_logged.py +304 -0
  154. flock/mcp/__init__.py +91 -0
  155. flock/{core/mcp/mcp_client.py → mcp/client.py} +131 -158
  156. flock/{core/mcp/mcp_config.py → mcp/config.py} +86 -132
  157. flock/mcp/manager.py +286 -0
  158. flock/mcp/servers/sse/__init__.py +1 -1
  159. flock/mcp/servers/sse/flock_sse_server.py +16 -58
  160. flock/mcp/servers/stdio/__init__.py +1 -1
  161. flock/mcp/servers/stdio/flock_stdio_server.py +13 -53
  162. flock/mcp/servers/streamable_http/flock_streamable_http_server.py +22 -67
  163. flock/mcp/servers/websockets/flock_websocket_server.py +12 -45
  164. flock/{core/mcp/flock_mcp_tool_base.py → mcp/tool.py} +24 -78
  165. flock/mcp/types/__init__.py +42 -0
  166. flock/{core/mcp → mcp}/types/callbacks.py +12 -15
  167. flock/{core/mcp → mcp}/types/factories.py +7 -6
  168. flock/{core/mcp → mcp}/types/handlers.py +13 -18
  169. flock/{core/mcp → mcp}/types/types.py +70 -74
  170. flock/{core/mcp → mcp}/util/helpers.py +3 -3
  171. flock/orchestrator.py +970 -0
  172. flock/registry.py +148 -0
  173. flock/runtime.py +262 -0
  174. flock/service.py +277 -0
  175. flock/store.py +1214 -0
  176. flock/subscription.py +111 -0
  177. flock/themes/andromeda.toml +1 -1
  178. flock/themes/apple-system-colors.toml +1 -1
  179. flock/themes/arcoiris.toml +1 -1
  180. flock/themes/atomonelight.toml +1 -1
  181. flock/themes/ayu copy.toml +1 -1
  182. flock/themes/ayu-light.toml +1 -1
  183. flock/themes/belafonte-day.toml +1 -1
  184. flock/themes/belafonte-night.toml +1 -1
  185. flock/themes/blulocodark.toml +1 -1
  186. flock/themes/breeze.toml +1 -1
  187. flock/themes/broadcast.toml +1 -1
  188. flock/themes/brogrammer.toml +1 -1
  189. flock/themes/builtin-dark.toml +1 -1
  190. flock/themes/builtin-pastel-dark.toml +1 -1
  191. flock/themes/catppuccin-latte.toml +1 -1
  192. flock/themes/catppuccin-macchiato.toml +1 -1
  193. flock/themes/catppuccin-mocha.toml +1 -1
  194. flock/themes/cga.toml +1 -1
  195. flock/themes/chalk.toml +1 -1
  196. flock/themes/ciapre.toml +1 -1
  197. flock/themes/coffee-theme.toml +1 -1
  198. flock/themes/cyberpunkscarletprotocol.toml +1 -1
  199. flock/themes/dark+.toml +1 -1
  200. flock/themes/darkermatrix.toml +1 -1
  201. flock/themes/darkmatrix.toml +2 -2
  202. flock/themes/darkside.toml +1 -1
  203. flock/themes/deep.toml +2 -2
  204. flock/themes/desert.toml +1 -1
  205. flock/themes/django.toml +1 -1
  206. flock/themes/djangosmooth.toml +1 -1
  207. flock/themes/doomone.toml +1 -1
  208. flock/themes/dotgov.toml +1 -1
  209. flock/themes/dracula+.toml +1 -1
  210. flock/themes/duckbones.toml +1 -1
  211. flock/themes/encom.toml +1 -1
  212. flock/themes/espresso.toml +1 -1
  213. flock/themes/everblush.toml +1 -1
  214. flock/themes/fairyfloss.toml +1 -1
  215. flock/themes/fideloper.toml +1 -1
  216. flock/themes/fishtank.toml +1 -1
  217. flock/themes/flexoki-light.toml +1 -1
  218. flock/themes/floraverse.toml +1 -1
  219. flock/themes/framer.toml +1 -1
  220. flock/themes/galizur.toml +1 -1
  221. flock/themes/github.toml +1 -1
  222. flock/themes/grass.toml +1 -1
  223. flock/themes/grey-green.toml +1 -1
  224. flock/themes/gruvboxlight.toml +1 -1
  225. flock/themes/guezwhoz.toml +1 -1
  226. flock/themes/harper.toml +1 -1
  227. flock/themes/hax0r-blue.toml +1 -1
  228. flock/themes/hopscotch.256.toml +1 -1
  229. flock/themes/ic-green-ppl.toml +1 -1
  230. flock/themes/iceberg-dark.toml +1 -1
  231. flock/themes/japanesque.toml +1 -1
  232. flock/themes/jubi.toml +1 -1
  233. flock/themes/kibble.toml +1 -1
  234. flock/themes/kolorit.toml +1 -1
  235. flock/themes/kurokula.toml +1 -1
  236. flock/themes/materialdesigncolors.toml +1 -1
  237. flock/themes/matrix.toml +1 -1
  238. flock/themes/mellifluous.toml +1 -1
  239. flock/themes/midnight-in-mojave.toml +1 -1
  240. flock/themes/monokai-remastered.toml +1 -1
  241. flock/themes/monokai-soda.toml +1 -1
  242. flock/themes/neon.toml +1 -1
  243. flock/themes/neopolitan.toml +5 -5
  244. flock/themes/nord-light.toml +1 -1
  245. flock/themes/ocean.toml +1 -1
  246. flock/themes/onehalfdark.toml +1 -1
  247. flock/themes/onehalflight.toml +1 -1
  248. flock/themes/palenighthc.toml +1 -1
  249. flock/themes/paulmillr.toml +1 -1
  250. flock/themes/pencildark.toml +1 -1
  251. flock/themes/pnevma.toml +1 -1
  252. flock/themes/purple-rain.toml +1 -1
  253. flock/themes/purplepeter.toml +1 -1
  254. flock/themes/raycast-dark.toml +1 -1
  255. flock/themes/red-sands.toml +1 -1
  256. flock/themes/relaxed.toml +1 -1
  257. flock/themes/retro.toml +1 -1
  258. flock/themes/rose-pine.toml +1 -1
  259. flock/themes/royal.toml +1 -1
  260. flock/themes/ryuuko.toml +1 -1
  261. flock/themes/sakura.toml +1 -1
  262. flock/themes/scarlet-protocol.toml +1 -1
  263. flock/themes/seoulbones-dark.toml +1 -1
  264. flock/themes/shades-of-purple.toml +1 -1
  265. flock/themes/smyck.toml +1 -1
  266. flock/themes/softserver.toml +1 -1
  267. flock/themes/solarized-darcula.toml +1 -1
  268. flock/themes/square.toml +1 -1
  269. flock/themes/sugarplum.toml +1 -1
  270. flock/themes/thayer-bright.toml +1 -1
  271. flock/themes/tokyonight.toml +1 -1
  272. flock/themes/tomorrow.toml +1 -1
  273. flock/themes/ubuntu.toml +1 -1
  274. flock/themes/ultradark.toml +1 -1
  275. flock/themes/ultraviolent.toml +1 -1
  276. flock/themes/unikitty.toml +1 -1
  277. flock/themes/urple.toml +1 -1
  278. flock/themes/vesper.toml +1 -1
  279. flock/themes/vimbones.toml +1 -1
  280. flock/themes/wildcherry.toml +1 -1
  281. flock/themes/wilmersdorf.toml +1 -1
  282. flock/themes/wryan.toml +1 -1
  283. flock/themes/xcodedarkhc.toml +1 -1
  284. flock/themes/xcodelight.toml +1 -1
  285. flock/themes/zenbones-light.toml +1 -1
  286. flock/themes/zenwritten-dark.toml +1 -1
  287. flock/utilities.py +301 -0
  288. flock/utility/output_utility_component.py +226 -0
  289. flock/visibility.py +107 -0
  290. flock_core-0.5.0.dist-info/METADATA +964 -0
  291. flock_core-0.5.0.dist-info/RECORD +525 -0
  292. flock_core-0.5.0.dist-info/entry_points.txt +2 -0
  293. {flock_core-0.4.543.dist-info → flock_core-0.5.0.dist-info}/licenses/LICENSE +1 -1
  294. flock/adapter/__init__.py +0 -14
  295. flock/adapter/azure_adapter.py +0 -68
  296. flock/adapter/chroma_adapter.py +0 -73
  297. flock/adapter/faiss_adapter.py +0 -97
  298. flock/adapter/pinecone_adapter.py +0 -51
  299. flock/adapter/vector_base.py +0 -47
  300. flock/cli/assets/release_notes.md +0 -140
  301. flock/cli/config.py +0 -8
  302. flock/cli/constants.py +0 -36
  303. flock/cli/create_agent.py +0 -1
  304. flock/cli/create_flock.py +0 -280
  305. flock/cli/execute_flock.py +0 -620
  306. flock/cli/load_agent.py +0 -1
  307. flock/cli/load_examples.py +0 -1
  308. flock/cli/load_flock.py +0 -192
  309. flock/cli/load_release_notes.py +0 -20
  310. flock/cli/loaded_flock_cli.py +0 -254
  311. flock/cli/manage_agents.py +0 -459
  312. flock/cli/registry_management.py +0 -889
  313. flock/cli/runner.py +0 -41
  314. flock/cli/settings.py +0 -857
  315. flock/cli/utils.py +0 -135
  316. flock/cli/view_results.py +0 -29
  317. flock/cli/yaml_editor.py +0 -396
  318. flock/config.py +0 -56
  319. flock/core/__init__.py +0 -44
  320. flock/core/api/__init__.py +0 -10
  321. flock/core/api/custom_endpoint.py +0 -45
  322. flock/core/api/endpoints.py +0 -262
  323. flock/core/api/main.py +0 -162
  324. flock/core/api/models.py +0 -101
  325. flock/core/api/run_store.py +0 -224
  326. flock/core/api/runner.py +0 -44
  327. flock/core/api/service.py +0 -214
  328. flock/core/config/flock_agent_config.py +0 -11
  329. flock/core/config/scheduled_agent_config.py +0 -40
  330. flock/core/context/context.py +0 -214
  331. flock/core/context/context_manager.py +0 -40
  332. flock/core/context/context_vars.py +0 -11
  333. flock/core/evaluation/utils.py +0 -395
  334. flock/core/execution/batch_executor.py +0 -369
  335. flock/core/execution/evaluation_executor.py +0 -438
  336. flock/core/execution/local_executor.py +0 -31
  337. flock/core/execution/opik_executor.py +0 -103
  338. flock/core/execution/temporal_executor.py +0 -166
  339. flock/core/flock.py +0 -1003
  340. flock/core/flock_agent.py +0 -1258
  341. flock/core/flock_evaluator.py +0 -60
  342. flock/core/flock_factory.py +0 -513
  343. flock/core/flock_module.py +0 -207
  344. flock/core/flock_registry.py +0 -702
  345. flock/core/flock_router.py +0 -83
  346. flock/core/flock_scheduler.py +0 -166
  347. flock/core/flock_server_manager.py +0 -136
  348. flock/core/interpreter/python_interpreter.py +0 -689
  349. flock/core/logging/live_capture.py +0 -137
  350. flock/core/logging/trace_and_logged.py +0 -59
  351. flock/core/mcp/__init__.py +0 -1
  352. flock/core/mcp/flock_mcp_server.py +0 -640
  353. flock/core/mcp/mcp_client_manager.py +0 -201
  354. flock/core/mcp/types/__init__.py +0 -1
  355. flock/core/mixin/dspy_integration.py +0 -445
  356. flock/core/mixin/prompt_parser.py +0 -125
  357. flock/core/serialization/__init__.py +0 -13
  358. flock/core/serialization/callable_registry.py +0 -52
  359. flock/core/serialization/flock_serializer.py +0 -854
  360. flock/core/serialization/json_encoder.py +0 -41
  361. flock/core/serialization/secure_serializer.py +0 -175
  362. flock/core/serialization/serializable.py +0 -342
  363. flock/core/serialization/serialization_utils.py +0 -409
  364. flock/core/util/file_path_utils.py +0 -223
  365. flock/core/util/hydrator.py +0 -309
  366. flock/core/util/input_resolver.py +0 -141
  367. flock/core/util/loader.py +0 -59
  368. flock/core/util/splitter.py +0 -219
  369. flock/di.py +0 -41
  370. flock/evaluators/__init__.py +0 -1
  371. flock/evaluators/declarative/__init__.py +0 -1
  372. flock/evaluators/declarative/declarative_evaluator.py +0 -217
  373. flock/evaluators/memory/memory_evaluator.py +0 -90
  374. flock/evaluators/test/test_case_evaluator.py +0 -38
  375. flock/evaluators/zep/zep_evaluator.py +0 -59
  376. flock/modules/__init__.py +0 -1
  377. flock/modules/assertion/__init__.py +0 -1
  378. flock/modules/assertion/assertion_module.py +0 -286
  379. flock/modules/callback/__init__.py +0 -1
  380. flock/modules/callback/callback_module.py +0 -91
  381. flock/modules/enterprise_memory/README.md +0 -99
  382. flock/modules/enterprise_memory/enterprise_memory_module.py +0 -526
  383. flock/modules/mem0/__init__.py +0 -1
  384. flock/modules/mem0/mem0_module.py +0 -126
  385. flock/modules/mem0_async/__init__.py +0 -1
  386. flock/modules/mem0_async/async_mem0_module.py +0 -126
  387. flock/modules/memory/__init__.py +0 -1
  388. flock/modules/memory/memory_module.py +0 -429
  389. flock/modules/memory/memory_parser.py +0 -125
  390. flock/modules/memory/memory_storage.py +0 -736
  391. flock/modules/output/__init__.py +0 -1
  392. flock/modules/output/output_module.py +0 -196
  393. flock/modules/performance/__init__.py +0 -1
  394. flock/modules/performance/metrics_module.py +0 -678
  395. flock/modules/zep/__init__.py +0 -1
  396. flock/modules/zep/zep_module.py +0 -192
  397. flock/platform/docker_tools.py +0 -49
  398. flock/platform/jaeger_install.py +0 -86
  399. flock/routers/__init__.py +0 -1
  400. flock/routers/agent/__init__.py +0 -1
  401. flock/routers/agent/agent_router.py +0 -236
  402. flock/routers/agent/handoff_agent.py +0 -58
  403. flock/routers/conditional/conditional_router.py +0 -486
  404. flock/routers/default/__init__.py +0 -1
  405. flock/routers/default/default_router.py +0 -80
  406. flock/routers/feedback/feedback_router.py +0 -114
  407. flock/routers/list_generator/list_generator_router.py +0 -166
  408. flock/routers/llm/__init__.py +0 -1
  409. flock/routers/llm/llm_router.py +0 -365
  410. flock/tools/__init__.py +0 -0
  411. flock/tools/azure_tools.py +0 -781
  412. flock/tools/code_tools.py +0 -167
  413. flock/tools/file_tools.py +0 -149
  414. flock/tools/github_tools.py +0 -157
  415. flock/tools/markdown_tools.py +0 -205
  416. flock/tools/system_tools.py +0 -9
  417. flock/tools/text_tools.py +0 -810
  418. flock/tools/web_tools.py +0 -92
  419. flock/tools/zendesk_tools.py +0 -501
  420. flock/webapp/__init__.py +0 -1
  421. flock/webapp/app/__init__.py +0 -0
  422. flock/webapp/app/api/__init__.py +0 -0
  423. flock/webapp/app/api/agent_management.py +0 -237
  424. flock/webapp/app/api/execution.py +0 -503
  425. flock/webapp/app/api/flock_management.py +0 -125
  426. flock/webapp/app/api/registry_viewer.py +0 -29
  427. flock/webapp/app/chat.py +0 -662
  428. flock/webapp/app/config.py +0 -104
  429. flock/webapp/app/dependencies.py +0 -117
  430. flock/webapp/app/main.py +0 -1086
  431. flock/webapp/app/middleware.py +0 -113
  432. flock/webapp/app/models_ui.py +0 -7
  433. flock/webapp/app/services/__init__.py +0 -0
  434. flock/webapp/app/services/feedback_file_service.py +0 -363
  435. flock/webapp/app/services/flock_service.py +0 -345
  436. flock/webapp/app/services/sharing_models.py +0 -81
  437. flock/webapp/app/services/sharing_store.py +0 -597
  438. flock/webapp/app/templates/theme_mapper.html +0 -326
  439. flock/webapp/app/theme_mapper.py +0 -811
  440. flock/webapp/app/utils.py +0 -85
  441. flock/webapp/run.py +0 -219
  442. flock/webapp/static/css/chat.css +0 -301
  443. flock/webapp/static/css/components.css +0 -167
  444. flock/webapp/static/css/header.css +0 -39
  445. flock/webapp/static/css/layout.css +0 -281
  446. flock/webapp/static/css/sidebar.css +0 -127
  447. flock/webapp/static/css/two-pane.css +0 -48
  448. flock/webapp/templates/base.html +0 -389
  449. flock/webapp/templates/chat.html +0 -152
  450. flock/webapp/templates/chat_settings.html +0 -19
  451. flock/webapp/templates/flock_editor.html +0 -16
  452. flock/webapp/templates/index.html +0 -12
  453. flock/webapp/templates/partials/_agent_detail_form.html +0 -93
  454. flock/webapp/templates/partials/_agent_list.html +0 -18
  455. flock/webapp/templates/partials/_agent_manager_view.html +0 -51
  456. flock/webapp/templates/partials/_agent_tools_checklist.html +0 -14
  457. flock/webapp/templates/partials/_chat_container.html +0 -15
  458. flock/webapp/templates/partials/_chat_messages.html +0 -57
  459. flock/webapp/templates/partials/_chat_settings_form.html +0 -85
  460. flock/webapp/templates/partials/_create_flock_form.html +0 -50
  461. flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -17
  462. flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -16
  463. flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -28
  464. flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -16
  465. flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -22
  466. flock/webapp/templates/partials/_env_vars_table.html +0 -23
  467. flock/webapp/templates/partials/_execution_form.html +0 -127
  468. flock/webapp/templates/partials/_execution_view_container.html +0 -28
  469. flock/webapp/templates/partials/_flock_file_list.html +0 -23
  470. flock/webapp/templates/partials/_flock_properties_form.html +0 -52
  471. flock/webapp/templates/partials/_flock_upload_form.html +0 -16
  472. flock/webapp/templates/partials/_header_flock_status.html +0 -5
  473. flock/webapp/templates/partials/_live_logs.html +0 -13
  474. flock/webapp/templates/partials/_load_manager_view.html +0 -49
  475. flock/webapp/templates/partials/_registry_table.html +0 -25
  476. flock/webapp/templates/partials/_registry_viewer_content.html +0 -70
  477. flock/webapp/templates/partials/_results_display.html +0 -78
  478. flock/webapp/templates/partials/_settings_env_content.html +0 -9
  479. flock/webapp/templates/partials/_settings_theme_content.html +0 -14
  480. flock/webapp/templates/partials/_settings_view.html +0 -36
  481. flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -11
  482. flock/webapp/templates/partials/_share_link_snippet.html +0 -35
  483. flock/webapp/templates/partials/_sidebar.html +0 -74
  484. flock/webapp/templates/partials/_structured_data_view.html +0 -40
  485. flock/webapp/templates/partials/_theme_preview.html +0 -36
  486. flock/webapp/templates/registry_viewer.html +0 -84
  487. flock/webapp/templates/shared_run_page.html +0 -140
  488. flock/workflow/__init__.py +0 -0
  489. flock/workflow/activities.py +0 -237
  490. flock/workflow/agent_activities.py +0 -24
  491. flock/workflow/agent_execution_activity.py +0 -240
  492. flock/workflow/flock_workflow.py +0 -225
  493. flock/workflow/temporal_config.py +0 -96
  494. flock/workflow/temporal_setup.py +0 -60
  495. flock_core-0.4.543.dist-info/METADATA +0 -676
  496. flock_core-0.4.543.dist-info/RECORD +0 -572
  497. flock_core-0.4.543.dist-info/entry_points.txt +0 -2
  498. /flock/{core/logging → logging}/formatters/themes.py +0 -0
  499. /flock/{core/logging → logging}/span_middleware/baggage_span_processor.py +0 -0
  500. /flock/{core/mcp → mcp}/util/__init__.py +0 -0
  501. {flock_core-0.4.543.dist-info → flock_core-0.5.0.dist-info}/WHEEL +0 -0
@@ -1,12 +1,12 @@
1
1
  """Base Config for MCP Clients."""
2
2
 
3
3
  import importlib
4
- from typing import Any, Literal, TypeVar
4
+ from typing import TYPE_CHECKING, Any, Literal, TypeVar
5
5
 
6
- import httpx
7
6
  from pydantic import BaseModel, ConfigDict, Field, create_model
7
+ from typing_extensions import Self
8
8
 
9
- from flock.core.mcp.types.types import (
9
+ from flock.mcp.types import (
10
10
  FlockListRootsMCPCallback,
11
11
  FlockLoggingMCPCallback,
12
12
  FlockMessageHandlerMCPCallback,
@@ -18,11 +18,11 @@ from flock.core.mcp.types.types import (
18
18
  StreamableHttpServerParameters,
19
19
  WebsocketServerParameters,
20
20
  )
21
- from flock.core.serialization.serializable import Serializable
22
- from flock.core.serialization.serialization_utils import (
23
- deserialize_item,
24
- serialize_item,
25
- )
21
+
22
+
23
+ if TYPE_CHECKING:
24
+ import httpx
25
+
26
26
 
27
27
  LoggingLevel = Literal[
28
28
  "debug",
@@ -36,14 +36,14 @@ LoggingLevel = Literal[
36
36
  ]
37
37
 
38
38
 
39
- A = TypeVar("A", bound="FlockMCPCallbackConfigurationBase")
40
- B = TypeVar("B", bound="FlockMCPConnectionConfigurationBase")
41
- C = TypeVar("C", bound="FlockMCPConfigurationBase")
42
- D = TypeVar("D", bound="FlockMCPCachingConfigurationBase")
43
- E = TypeVar("E", bound="FlockMCPFeatureConfigurationBase")
39
+ A = TypeVar("A", bound="FlockMCPCallbackConfiguration")
40
+ B = TypeVar("B", bound="FlockMCPConnectionConfiguration")
41
+ C = TypeVar("C", bound="FlockMCPConfiguration")
42
+ D = TypeVar("D", bound="FlockMCPCachingConfiguration")
43
+ E = TypeVar("E", bound="FlockMCPFeatureConfiguration")
44
44
 
45
45
 
46
- class FlockMCPCachingConfigurationBase(BaseModel, Serializable):
46
+ class FlockMCPCachingConfiguration(BaseModel):
47
47
  """Configuration for Caching in Clients."""
48
48
 
49
49
  tool_cache_max_size: float = Field(
@@ -98,19 +98,17 @@ class FlockMCPCachingConfigurationBase(BaseModel, Serializable):
98
98
  )
99
99
 
100
100
  @classmethod
101
- def from_dict(cls: type[D], data: dict[str, Any]) -> D:
101
+ def from_dict(cls, data: dict[str, Any]) -> Self:
102
102
  """Deserialize from a dict."""
103
- return cls(**{k: v for k, v in data.items()})
103
+ return cls(**dict(data.items()))
104
104
 
105
105
  @classmethod
106
- def with_fields(cls: type[D], **field_definitions) -> type[D]:
106
+ def with_fields(cls, **field_definitions) -> type[Self]:
107
107
  """Create a new config class with additional fields."""
108
- return create_model(
109
- f"Dynamic{cls.__name__}", __base__=cls, **field_definitions
110
- )
108
+ return create_model(f"Dynamic{cls.__name__}", __base__=cls, **field_definitions)
111
109
 
112
110
 
113
- class FlockMCPCallbackConfigurationBase(BaseModel, Serializable):
111
+ class FlockMCPCallbackConfiguration(BaseModel):
114
112
  """Base Configuration Class for Callbacks for Clients."""
115
113
 
116
114
  sampling_callback: FlockSamplingMCPCallback | None = Field(
@@ -136,59 +134,21 @@ class FlockMCPCallbackConfigurationBase(BaseModel, Serializable):
136
134
 
137
135
  def to_dict(self, path_type: str = "relative"):
138
136
  """Serialize the object."""
139
- # we need to register callables.
140
- data: dict[str, Any] = {}
141
- if self.sampling_callback:
142
- sampling_callback_data = serialize_item(self.sampling_callback)
143
- data["sampling_callback"] = sampling_callback_data
144
-
145
- if self.list_roots_callback:
146
- list_roots_callback_data = serialize_item(self.list_roots_callback)
147
- data["list_roots_callback"] = list_roots_callback_data
148
-
149
- if self.logging_callback:
150
- logging_callback_data = serialize_item(self.logging_callback)
151
- data["logging_callback"] = logging_callback_data
152
-
153
- if self.message_handler:
154
- message_handler_data = serialize_item(self.message_handler)
155
- data["message_handler"] = message_handler_data
156
-
157
- return data
137
+ # Callbacks are set programmatically and cannot be serialized
138
+ return {}
158
139
 
159
140
  @classmethod
160
- def from_dict(cls: type[A], data: dict[str, Any]) -> A:
141
+ def from_dict(cls, data: dict[str, Any]) -> Self:
161
142
  """Deserialize from a dict."""
162
- instance = cls()
163
- if data:
164
- if "sampling_callback" in data:
165
- instance.sampling_callback = deserialize_item(
166
- data["sampling_callback"]
167
- )
168
- if "list_roots_callback" in data:
169
- instance.list_roots_callback = deserialize_item(
170
- data["list_roots_callback"]
171
- )
172
- if "logging_callback" in data:
173
- instance.logging_callback = deserialize_item(
174
- data["logging_callback"]
175
- )
176
- if "message_handler" in data:
177
- instance.message_handler = deserialize_item(
178
- data["message_handler"]
179
- )
180
-
181
- return instance
143
+ return cls()
182
144
 
183
145
  @classmethod
184
- def with_fields(cls: type[A], **field_definitions) -> type[A]:
146
+ def with_fields(cls, **field_definitions) -> type[Self]:
185
147
  """Create a new config class with additional fields."""
186
- return create_model(
187
- f"Dynamic{cls.__name__}", __base__=cls, **field_definitions
188
- )
148
+ return create_model(f"Dynamic{cls.__name__}", __base__=cls, **field_definitions)
189
149
 
190
150
 
191
- class FlockMCPConnectionConfigurationBase(BaseModel, Serializable):
151
+ class FlockMCPConnectionConfiguration(BaseModel):
192
152
  """Base Configuration Class for Connection Parameters for a client."""
193
153
 
194
154
  max_retries: int = Field(
@@ -200,17 +160,15 @@ class FlockMCPConnectionConfigurationBase(BaseModel, Serializable):
200
160
  ..., description="Connection parameters for the server."
201
161
  )
202
162
 
203
- transport_type: Literal[
204
- "stdio", "websockets", "sse", "streamable_http", "custom"
205
- ] = Field(..., description="Type of transport to use.")
163
+ transport_type: Literal["stdio", "websockets", "sse", "streamable_http", "custom"] = Field(
164
+ ..., description="Type of transport to use."
165
+ )
206
166
 
207
167
  mount_points: list[MCPRoot] | None = Field(
208
168
  default=None, description="Initial Mountpoints to operate under."
209
169
  )
210
170
 
211
- read_timeout_seconds: float | int = Field(
212
- default=60 * 5, description="Read Timeout."
213
- )
171
+ read_timeout_seconds: float | int = Field(default=60 * 5, description="Read Timeout.")
214
172
 
215
173
  server_logging_level: LoggingLevel = Field(
216
174
  default="error",
@@ -230,14 +188,12 @@ class FlockMCPConnectionConfigurationBase(BaseModel, Serializable):
230
188
  mode="json",
231
189
  )
232
190
 
233
- data["connection_parameters"] = self.connection_parameters.to_dict(
234
- path_type=path_type
235
- )
191
+ data["connection_parameters"] = self.connection_parameters.to_dict(path_type=path_type)
236
192
 
237
193
  return data
238
194
 
239
195
  @classmethod
240
- def from_dict(cls: type[B], data: dict[str, Any]) -> B:
196
+ def from_dict(cls, data: dict[str, Any]) -> Self:
241
197
  """Deserialize from dict."""
242
198
  connection_params = data.get("connection_parameters")
243
199
  connection_params_obj = None
@@ -248,13 +204,13 @@ class FlockMCPConnectionConfigurationBase(BaseModel, Serializable):
248
204
  if auth_spec:
249
205
  # find the concrete implementation and
250
206
  # instantiate it.
251
- # find the concrete implementation for auth and instatiate it.
207
+ # find the concrete implementation for auth and instatiate it.
252
208
  impl = auth_spec.get("implementation", None)
253
209
  params = auth_spec.get("params", None)
254
210
  if impl and params:
255
- mod = importlib.import_module(impl["module_path"])
256
- real_cls = getattr(mod, impl["class_name"])
257
- auth_obj = real_cls(**{k: v for k, v in params.items()})
211
+ mod = importlib.import_module(impl["module_path"])
212
+ real_cls = getattr(mod, impl["class_name"])
213
+ auth_obj = real_cls(**dict(params.items()))
258
214
 
259
215
  if auth_obj:
260
216
  connection_params["auth"] = auth_obj
@@ -264,60 +220,64 @@ class FlockMCPConnectionConfigurationBase(BaseModel, Serializable):
264
220
  match kind:
265
221
  case "stdio":
266
222
  connection_params_obj = StdioServerParameters(
267
- **{k: v for k, v in connection_params.items()}
223
+ **dict(connection_params.items())
268
224
  )
269
225
  case "websockets":
270
226
  connection_params_obj = WebsocketServerParameters(
271
- **{k: v for k, v in connection_params.items()}
227
+ **dict(connection_params.items())
272
228
  )
273
229
  case "streamable_http":
274
230
  connection_params_obj = StreamableHttpServerParameters(
275
- **{k: v for k, v in connection_params.items()}
231
+ **dict(connection_params.items())
276
232
  )
277
233
  case "sse":
278
234
  connection_params_obj = SseServerParameters(
279
- **{k: v for k, v in connection_params.items()}
235
+ **dict(connection_params.items())
280
236
  )
281
237
  case _:
282
238
  # handle custom server params
283
- connection_params_obj = ServerParameters(
284
- **{k: v for k, v in connection_params.items()}
285
- )
239
+ connection_params_obj = ServerParameters(**dict(connection_params.items()))
286
240
 
287
241
  if connection_params_obj:
288
242
  data["connection_parameters"] = connection_params_obj
289
- return cls(**{k: v for k, v in data.items()})
290
- else:
291
- raise ValueError("No connection parameters provided.")
243
+ return cls(**dict(data.items()))
244
+ raise ValueError("No connection parameters provided.")
292
245
 
293
246
  @classmethod
294
- def with_fields(cls: type[B], **field_definitions) -> type[B]:
247
+ def with_fields(cls, **field_definitions) -> type[Self]:
295
248
  """Create a new config class with additional fields."""
296
- return create_model(
297
- f"Dynamic{cls.__name__}", __base__=cls, **field_definitions
298
- )
249
+ return create_model(f"Dynamic{cls.__name__}", __base__=cls, **field_definitions)
299
250
 
300
251
 
301
- class FlockMCPFeatureConfigurationBase(BaseModel, Serializable):
252
+ class FlockMCPFeatureConfiguration(BaseModel):
302
253
  """Base Configuration Class for switching MCP Features on and off."""
303
254
 
304
255
  roots_enabled: bool = Field(
305
- default=False,
256
+ default=True,
306
257
  description="Whether or not the Roots feature is enabled for this client.",
307
258
  )
308
259
 
309
260
  sampling_enabled: bool = Field(
310
- default=False,
261
+ default=True,
311
262
  description="Whether or not the Sampling feature is enabled for this client.",
312
263
  )
313
264
 
314
265
  tools_enabled: bool = Field(
315
- default=False,
266
+ default=True,
316
267
  description="Whether or not the Tools feature is enabled for this client.",
317
268
  )
318
269
 
270
+ tool_whitelist: list[str] | None = Field(
271
+ default=None,
272
+ description="Whitelist of tool names that are enabled for this MCP server. "
273
+ "If provided, only tools with names in this list will be available "
274
+ "from this server."
275
+ "Note: Agent-level tool filtering is generally preferred over "
276
+ "server-level filtering for better granular control.",
277
+ )
278
+
319
279
  prompts_enabled: bool = Field(
320
- default=False,
280
+ default=True,
321
281
  description="Whether or not the Prompts feature is enabled for this client.",
322
282
  )
323
283
 
@@ -336,43 +296,39 @@ class FlockMCPFeatureConfigurationBase(BaseModel, Serializable):
336
296
  @classmethod
337
297
  def from_dict(cls, data: dict[str, Any]):
338
298
  """Deserialize from a dict."""
339
- return cls(**{k: v for k, v in data.items()})
299
+ return cls(**dict(data.items()))
340
300
 
341
301
  @classmethod
342
- def with_fields(cls: type[E], **field_definitions) -> type[E]:
302
+ def with_fields(cls, **field_definitions) -> type[Self]:
343
303
  """Create a new config class with additional fields."""
344
- return create_model(
345
- f"Dynamic{cls.__name__}", __base__=cls, **field_definitions
346
- )
304
+ return create_model(f"Dynamic{cls.__name__}", __base__=cls, **field_definitions)
347
305
 
348
306
 
349
- class FlockMCPConfigurationBase(BaseModel, Serializable):
307
+ class FlockMCPConfiguration(BaseModel):
350
308
  """Base Configuration Class for MCP Clients.
351
309
 
352
310
  Each Client should implement their own config
353
311
  model by inheriting from this class.
354
312
  """
355
313
 
356
- name: str = Field(
357
- ..., description="Name of the server the client connects to."
358
- )
314
+ name: str = Field(..., description="Name of the server the client connects to.")
359
315
 
360
- connection_config: FlockMCPConnectionConfigurationBase = Field(
316
+ connection_config: FlockMCPConnectionConfiguration = Field(
361
317
  ..., description="MCP Connection Configuration for a client."
362
318
  )
363
319
 
364
- caching_config: FlockMCPCachingConfigurationBase = Field(
365
- default_factory=FlockMCPCachingConfigurationBase,
320
+ caching_config: FlockMCPCachingConfiguration = Field(
321
+ default_factory=FlockMCPCachingConfiguration,
366
322
  description="Configuration for the internal caches of the client.",
367
323
  )
368
324
 
369
- callback_config: FlockMCPCallbackConfigurationBase = Field(
370
- default_factory=FlockMCPCallbackConfigurationBase,
325
+ callback_config: FlockMCPCallbackConfiguration = Field(
326
+ default_factory=FlockMCPCallbackConfiguration,
371
327
  description="Callback configuration for the client.",
372
328
  )
373
329
 
374
- feature_config: FlockMCPFeatureConfigurationBase = Field(
375
- default_factory=FlockMCPFeatureConfigurationBase,
330
+ feature_config: FlockMCPFeatureConfiguration = Field(
331
+ default_factory=FlockMCPFeatureConfiguration,
376
332
  description="Feature configuration for the client.",
377
333
  )
378
334
 
@@ -407,16 +363,14 @@ class FlockMCPConfigurationBase(BaseModel, Serializable):
407
363
  return data
408
364
 
409
365
  @classmethod
410
- def from_dict(cls: type[C], data: dict[str, Any]) -> C:
366
+ def from_dict(cls, data: dict[str, Any]) -> Self:
411
367
  """Deserialize the class."""
412
368
  connection_config = data.pop("connection_config", None)
413
369
  caching_config = data.pop("caching_config", None)
414
370
  feature_config = data.pop("feature_config", None)
415
371
  callback_config = data.pop("callback_config", None)
416
372
 
417
- instance_data: dict[str, Any] = {
418
- "name": data["name"]
419
- }
373
+ instance_data: dict[str, Any] = {"name": data["name"]}
420
374
 
421
375
  if connection_config:
422
376
  # Forcing a square into a round hole
@@ -425,10 +379,12 @@ class FlockMCPConfigurationBase(BaseModel, Serializable):
425
379
  config_cls = config_field.annotation
426
380
  except (AttributeError, KeyError):
427
381
  # fallback
428
- config_cls = FlockMCPConnectionConfigurationBase
382
+ config_cls = FlockMCPConnectionConfiguration
429
383
  instance_data["connection_config"] = config_cls.from_dict(connection_config)
430
384
  else:
431
- raise ValueError(f"connection_config MUST be specified for '{data.get('name', 'unknown_server')}")
385
+ raise ValueError(
386
+ f"connection_config MUST be specified for '{data.get('name', 'unknown_server')}"
387
+ )
432
388
 
433
389
  if caching_config:
434
390
  try:
@@ -436,10 +392,10 @@ class FlockMCPConfigurationBase(BaseModel, Serializable):
436
392
  config_cls = config_field.annotation
437
393
  except (AttributeError, KeyError):
438
394
  # fallback
439
- config_cls = FlockMCPCachingConfigurationBase
395
+ config_cls = FlockMCPCachingConfiguration
440
396
  instance_data["caching_config"] = config_cls.from_dict(caching_config)
441
397
  else:
442
- instance_data["caching_config"] = FlockMCPCachingConfigurationBase()
398
+ instance_data["caching_config"] = FlockMCPCachingConfiguration()
443
399
 
444
400
  if feature_config:
445
401
  try:
@@ -447,10 +403,10 @@ class FlockMCPConfigurationBase(BaseModel, Serializable):
447
403
  config_cls = config_field.annotation
448
404
  except (AttributeError, KeyError):
449
405
  # fallback
450
- config_cls = FlockMCPFeatureConfigurationBase
406
+ config_cls = FlockMCPFeatureConfiguration
451
407
  instance_data["feature_config"] = config_cls.from_dict(feature_config)
452
408
  else:
453
- instance_data["feature_config"] = FlockMCPFeatureConfigurationBase()
409
+ instance_data["feature_config"] = FlockMCPFeatureConfiguration()
454
410
 
455
411
  if callback_config:
456
412
  try:
@@ -458,16 +414,14 @@ class FlockMCPConfigurationBase(BaseModel, Serializable):
458
414
  config_cls = config_field.annotation
459
415
  except (AttributeError, KeyError):
460
416
  # fallback
461
- config_cls = FlockMCPCallbackConfigurationBase
417
+ config_cls = FlockMCPCallbackConfiguration
462
418
  instance_data["callback_config"] = config_cls.from_dict(callback_config)
463
419
  else:
464
- instance_data["callback_config"] = FlockMCPCallbackConfigurationBase()
420
+ instance_data["callback_config"] = FlockMCPCallbackConfiguration()
465
421
 
466
- return cls(**{k: v for k, v in instance_data.items()})
422
+ return cls(**dict(instance_data.items()))
467
423
 
468
424
  @classmethod
469
- def with_fields(cls: type[C], **field_definitions) -> type[C]:
425
+ def with_fields(cls, **field_definitions) -> type[Self]:
470
426
  """Create a new config class with additional fields."""
471
- return create_model(
472
- f"Dynamic{cls.__name__}", __base__=cls, **field_definitions
473
- )
427
+ return create_model(f"Dynamic{cls.__name__}", __base__=cls, **field_definitions)