flock-core 0.5.0b28__py3-none-any.whl → 0.5.56b0__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 (359) 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/{core/util → helper}/cli_helper.py +4 -3
  17. flock/{core/logging → logging}/__init__.py +2 -3
  18. flock/{core/logging → logging}/formatters/enum_builder.py +3 -4
  19. flock/{core/logging → logging}/formatters/theme_builder.py +19 -44
  20. flock/{core/logging → logging}/formatters/themed_formatter.py +69 -115
  21. flock/{core/logging → logging}/logging.py +77 -61
  22. flock/{core/logging → logging}/telemetry.py +20 -26
  23. flock/{core/logging → logging}/telemetry_exporter/base_exporter.py +2 -2
  24. flock/{core/logging → logging}/telemetry_exporter/file_exporter.py +6 -9
  25. flock/{core/logging → logging}/telemetry_exporter/sqlite_exporter.py +2 -3
  26. flock/{core/logging → logging}/trace_and_logged.py +20 -24
  27. flock/mcp/__init__.py +91 -0
  28. flock/{core/mcp/mcp_client.py → mcp/client.py} +103 -154
  29. flock/{core/mcp/mcp_config.py → mcp/config.py} +62 -117
  30. flock/mcp/manager.py +255 -0
  31. flock/mcp/servers/sse/__init__.py +1 -1
  32. flock/mcp/servers/sse/flock_sse_server.py +11 -53
  33. flock/mcp/servers/stdio/__init__.py +1 -1
  34. flock/mcp/servers/stdio/flock_stdio_server.py +8 -48
  35. flock/mcp/servers/streamable_http/flock_streamable_http_server.py +17 -62
  36. flock/mcp/servers/websockets/flock_websocket_server.py +7 -40
  37. flock/{core/mcp/flock_mcp_tool.py → mcp/tool.py} +16 -26
  38. flock/mcp/types/__init__.py +42 -0
  39. flock/{core/mcp → mcp}/types/callbacks.py +9 -15
  40. flock/{core/mcp → mcp}/types/factories.py +7 -6
  41. flock/{core/mcp → mcp}/types/handlers.py +13 -18
  42. flock/{core/mcp → mcp}/types/types.py +70 -74
  43. flock/{core/mcp → mcp}/util/helpers.py +1 -1
  44. flock/orchestrator.py +645 -0
  45. flock/registry.py +148 -0
  46. flock/runtime.py +262 -0
  47. flock/service.py +140 -0
  48. flock/store.py +69 -0
  49. flock/subscription.py +111 -0
  50. flock/themes/andromeda.toml +1 -1
  51. flock/themes/apple-system-colors.toml +1 -1
  52. flock/themes/arcoiris.toml +1 -1
  53. flock/themes/atomonelight.toml +1 -1
  54. flock/themes/ayu copy.toml +1 -1
  55. flock/themes/ayu-light.toml +1 -1
  56. flock/themes/belafonte-day.toml +1 -1
  57. flock/themes/belafonte-night.toml +1 -1
  58. flock/themes/blulocodark.toml +1 -1
  59. flock/themes/breeze.toml +1 -1
  60. flock/themes/broadcast.toml +1 -1
  61. flock/themes/brogrammer.toml +1 -1
  62. flock/themes/builtin-dark.toml +1 -1
  63. flock/themes/builtin-pastel-dark.toml +1 -1
  64. flock/themes/catppuccin-latte.toml +1 -1
  65. flock/themes/catppuccin-macchiato.toml +1 -1
  66. flock/themes/catppuccin-mocha.toml +1 -1
  67. flock/themes/cga.toml +1 -1
  68. flock/themes/chalk.toml +1 -1
  69. flock/themes/ciapre.toml +1 -1
  70. flock/themes/coffee-theme.toml +1 -1
  71. flock/themes/cyberpunkscarletprotocol.toml +1 -1
  72. flock/themes/dark+.toml +1 -1
  73. flock/themes/darkermatrix.toml +1 -1
  74. flock/themes/darkside.toml +1 -1
  75. flock/themes/desert.toml +1 -1
  76. flock/themes/django.toml +1 -1
  77. flock/themes/djangosmooth.toml +1 -1
  78. flock/themes/doomone.toml +1 -1
  79. flock/themes/dotgov.toml +1 -1
  80. flock/themes/dracula+.toml +1 -1
  81. flock/themes/duckbones.toml +1 -1
  82. flock/themes/encom.toml +1 -1
  83. flock/themes/espresso.toml +1 -1
  84. flock/themes/everblush.toml +1 -1
  85. flock/themes/fairyfloss.toml +1 -1
  86. flock/themes/fideloper.toml +1 -1
  87. flock/themes/fishtank.toml +1 -1
  88. flock/themes/flexoki-light.toml +1 -1
  89. flock/themes/floraverse.toml +1 -1
  90. flock/themes/framer.toml +1 -1
  91. flock/themes/galizur.toml +1 -1
  92. flock/themes/github.toml +1 -1
  93. flock/themes/grass.toml +1 -1
  94. flock/themes/grey-green.toml +1 -1
  95. flock/themes/gruvboxlight.toml +1 -1
  96. flock/themes/guezwhoz.toml +1 -1
  97. flock/themes/harper.toml +1 -1
  98. flock/themes/hax0r-blue.toml +1 -1
  99. flock/themes/hopscotch.256.toml +1 -1
  100. flock/themes/ic-green-ppl.toml +1 -1
  101. flock/themes/iceberg-dark.toml +1 -1
  102. flock/themes/japanesque.toml +1 -1
  103. flock/themes/jubi.toml +1 -1
  104. flock/themes/kibble.toml +1 -1
  105. flock/themes/kolorit.toml +1 -1
  106. flock/themes/kurokula.toml +1 -1
  107. flock/themes/materialdesigncolors.toml +1 -1
  108. flock/themes/matrix.toml +1 -1
  109. flock/themes/mellifluous.toml +1 -1
  110. flock/themes/midnight-in-mojave.toml +1 -1
  111. flock/themes/monokai-remastered.toml +1 -1
  112. flock/themes/monokai-soda.toml +1 -1
  113. flock/themes/neon.toml +1 -1
  114. flock/themes/neopolitan.toml +1 -1
  115. flock/themes/nord-light.toml +1 -1
  116. flock/themes/ocean.toml +1 -1
  117. flock/themes/onehalfdark.toml +1 -1
  118. flock/themes/onehalflight.toml +1 -1
  119. flock/themes/palenighthc.toml +1 -1
  120. flock/themes/paulmillr.toml +1 -1
  121. flock/themes/pencildark.toml +1 -1
  122. flock/themes/pnevma.toml +1 -1
  123. flock/themes/purple-rain.toml +1 -1
  124. flock/themes/purplepeter.toml +1 -1
  125. flock/themes/raycast-dark.toml +1 -1
  126. flock/themes/red-sands.toml +1 -1
  127. flock/themes/relaxed.toml +1 -1
  128. flock/themes/retro.toml +1 -1
  129. flock/themes/rose-pine.toml +1 -1
  130. flock/themes/royal.toml +1 -1
  131. flock/themes/ryuuko.toml +1 -1
  132. flock/themes/sakura.toml +1 -1
  133. flock/themes/scarlet-protocol.toml +1 -1
  134. flock/themes/seoulbones-dark.toml +1 -1
  135. flock/themes/shades-of-purple.toml +1 -1
  136. flock/themes/smyck.toml +1 -1
  137. flock/themes/softserver.toml +1 -1
  138. flock/themes/solarized-darcula.toml +1 -1
  139. flock/themes/square.toml +1 -1
  140. flock/themes/sugarplum.toml +1 -1
  141. flock/themes/thayer-bright.toml +1 -1
  142. flock/themes/tokyonight.toml +1 -1
  143. flock/themes/tomorrow.toml +1 -1
  144. flock/themes/ubuntu.toml +1 -1
  145. flock/themes/ultradark.toml +1 -1
  146. flock/themes/ultraviolent.toml +1 -1
  147. flock/themes/unikitty.toml +1 -1
  148. flock/themes/urple.toml +1 -1
  149. flock/themes/vesper.toml +1 -1
  150. flock/themes/vimbones.toml +1 -1
  151. flock/themes/wildcherry.toml +1 -1
  152. flock/themes/wilmersdorf.toml +1 -1
  153. flock/themes/wryan.toml +1 -1
  154. flock/themes/xcodedarkhc.toml +1 -1
  155. flock/themes/xcodelight.toml +1 -1
  156. flock/themes/zenbones-light.toml +1 -1
  157. flock/themes/zenwritten-dark.toml +1 -1
  158. flock/utilities.py +301 -0
  159. flock/{components/utility → utility}/output_utility_component.py +68 -53
  160. flock/visibility.py +107 -0
  161. flock_core-0.5.56b0.dist-info/METADATA +747 -0
  162. flock_core-0.5.56b0.dist-info/RECORD +398 -0
  163. flock_core-0.5.56b0.dist-info/entry_points.txt +2 -0
  164. {flock_core-0.5.0b28.dist-info → flock_core-0.5.56b0.dist-info}/licenses/LICENSE +1 -1
  165. flock/adapter/__init__.py +0 -14
  166. flock/adapter/azure_adapter.py +0 -68
  167. flock/adapter/chroma_adapter.py +0 -73
  168. flock/adapter/faiss_adapter.py +0 -97
  169. flock/adapter/pinecone_adapter.py +0 -51
  170. flock/adapter/vector_base.py +0 -47
  171. flock/cli/assets/release_notes.md +0 -140
  172. flock/cli/config.py +0 -8
  173. flock/cli/constants.py +0 -36
  174. flock/cli/create_agent.py +0 -1
  175. flock/cli/create_flock.py +0 -280
  176. flock/cli/execute_flock.py +0 -620
  177. flock/cli/load_agent.py +0 -1
  178. flock/cli/load_examples.py +0 -1
  179. flock/cli/load_flock.py +0 -192
  180. flock/cli/load_release_notes.py +0 -20
  181. flock/cli/loaded_flock_cli.py +0 -254
  182. flock/cli/manage_agents.py +0 -459
  183. flock/cli/registry_management.py +0 -889
  184. flock/cli/runner.py +0 -41
  185. flock/cli/settings.py +0 -857
  186. flock/cli/utils.py +0 -135
  187. flock/cli/view_results.py +0 -29
  188. flock/cli/yaml_editor.py +0 -396
  189. flock/components/__init__.py +0 -30
  190. flock/components/evaluation/__init__.py +0 -9
  191. flock/components/evaluation/declarative_evaluation_component.py +0 -606
  192. flock/components/routing/__init__.py +0 -15
  193. flock/components/routing/conditional_routing_component.py +0 -494
  194. flock/components/routing/default_routing_component.py +0 -103
  195. flock/components/routing/llm_routing_component.py +0 -206
  196. flock/components/utility/__init__.py +0 -22
  197. flock/components/utility/example_utility_component.py +0 -250
  198. flock/components/utility/feedback_utility_component.py +0 -206
  199. flock/components/utility/memory_utility_component.py +0 -550
  200. flock/components/utility/metrics_utility_component.py +0 -700
  201. flock/config.py +0 -61
  202. flock/core/__init__.py +0 -110
  203. flock/core/agent/__init__.py +0 -16
  204. flock/core/agent/default_agent.py +0 -216
  205. flock/core/agent/flock_agent_components.py +0 -104
  206. flock/core/agent/flock_agent_execution.py +0 -101
  207. flock/core/agent/flock_agent_integration.py +0 -260
  208. flock/core/agent/flock_agent_lifecycle.py +0 -186
  209. flock/core/agent/flock_agent_serialization.py +0 -381
  210. flock/core/api/__init__.py +0 -10
  211. flock/core/api/custom_endpoint.py +0 -45
  212. flock/core/api/endpoints.py +0 -254
  213. flock/core/api/main.py +0 -162
  214. flock/core/api/models.py +0 -97
  215. flock/core/api/run_store.py +0 -224
  216. flock/core/api/runner.py +0 -44
  217. flock/core/api/service.py +0 -214
  218. flock/core/component/__init__.py +0 -15
  219. flock/core/component/agent_component_base.py +0 -309
  220. flock/core/component/evaluation_component.py +0 -62
  221. flock/core/component/routing_component.py +0 -74
  222. flock/core/component/utility_component.py +0 -69
  223. flock/core/config/flock_agent_config.py +0 -58
  224. flock/core/config/scheduled_agent_config.py +0 -40
  225. flock/core/context/context.py +0 -213
  226. flock/core/context/context_manager.py +0 -37
  227. flock/core/context/context_vars.py +0 -10
  228. flock/core/evaluation/utils.py +0 -396
  229. flock/core/execution/batch_executor.py +0 -369
  230. flock/core/execution/evaluation_executor.py +0 -438
  231. flock/core/execution/local_executor.py +0 -31
  232. flock/core/execution/opik_executor.py +0 -103
  233. flock/core/execution/temporal_executor.py +0 -164
  234. flock/core/flock.py +0 -634
  235. flock/core/flock_agent.py +0 -336
  236. flock/core/flock_factory.py +0 -613
  237. flock/core/flock_scheduler.py +0 -166
  238. flock/core/flock_server_manager.py +0 -136
  239. flock/core/interpreter/python_interpreter.py +0 -689
  240. flock/core/mcp/__init__.py +0 -1
  241. flock/core/mcp/flock_mcp_server.py +0 -680
  242. flock/core/mcp/mcp_client_manager.py +0 -201
  243. flock/core/mcp/types/__init__.py +0 -1
  244. flock/core/mixin/dspy_integration.py +0 -403
  245. flock/core/mixin/prompt_parser.py +0 -125
  246. flock/core/orchestration/__init__.py +0 -15
  247. flock/core/orchestration/flock_batch_processor.py +0 -94
  248. flock/core/orchestration/flock_evaluator.py +0 -113
  249. flock/core/orchestration/flock_execution.py +0 -295
  250. flock/core/orchestration/flock_initialization.py +0 -149
  251. flock/core/orchestration/flock_server_manager.py +0 -67
  252. flock/core/orchestration/flock_web_server.py +0 -117
  253. flock/core/registry/__init__.py +0 -45
  254. flock/core/registry/agent_registry.py +0 -69
  255. flock/core/registry/callable_registry.py +0 -139
  256. flock/core/registry/component_discovery.py +0 -142
  257. flock/core/registry/component_registry.py +0 -64
  258. flock/core/registry/config_mapping.py +0 -64
  259. flock/core/registry/decorators.py +0 -137
  260. flock/core/registry/registry_hub.py +0 -205
  261. flock/core/registry/server_registry.py +0 -57
  262. flock/core/registry/type_registry.py +0 -86
  263. flock/core/serialization/__init__.py +0 -13
  264. flock/core/serialization/callable_registry.py +0 -52
  265. flock/core/serialization/flock_serializer.py +0 -832
  266. flock/core/serialization/json_encoder.py +0 -41
  267. flock/core/serialization/secure_serializer.py +0 -175
  268. flock/core/serialization/serializable.py +0 -342
  269. flock/core/serialization/serialization_utils.py +0 -412
  270. flock/core/util/file_path_utils.py +0 -223
  271. flock/core/util/hydrator.py +0 -309
  272. flock/core/util/input_resolver.py +0 -164
  273. flock/core/util/loader.py +0 -59
  274. flock/core/util/splitter.py +0 -219
  275. flock/di.py +0 -27
  276. flock/platform/docker_tools.py +0 -49
  277. flock/platform/jaeger_install.py +0 -86
  278. flock/webapp/__init__.py +0 -1
  279. flock/webapp/app/__init__.py +0 -0
  280. flock/webapp/app/api/__init__.py +0 -0
  281. flock/webapp/app/api/agent_management.py +0 -241
  282. flock/webapp/app/api/execution.py +0 -709
  283. flock/webapp/app/api/flock_management.py +0 -129
  284. flock/webapp/app/api/registry_viewer.py +0 -30
  285. flock/webapp/app/chat.py +0 -665
  286. flock/webapp/app/config.py +0 -104
  287. flock/webapp/app/dependencies.py +0 -117
  288. flock/webapp/app/main.py +0 -1070
  289. flock/webapp/app/middleware.py +0 -113
  290. flock/webapp/app/models_ui.py +0 -7
  291. flock/webapp/app/services/__init__.py +0 -0
  292. flock/webapp/app/services/feedback_file_service.py +0 -363
  293. flock/webapp/app/services/flock_service.py +0 -337
  294. flock/webapp/app/services/sharing_models.py +0 -81
  295. flock/webapp/app/services/sharing_store.py +0 -762
  296. flock/webapp/app/templates/theme_mapper.html +0 -326
  297. flock/webapp/app/theme_mapper.py +0 -812
  298. flock/webapp/app/utils.py +0 -85
  299. flock/webapp/run.py +0 -215
  300. flock/webapp/static/css/chat.css +0 -301
  301. flock/webapp/static/css/components.css +0 -167
  302. flock/webapp/static/css/header.css +0 -39
  303. flock/webapp/static/css/layout.css +0 -46
  304. flock/webapp/static/css/sidebar.css +0 -127
  305. flock/webapp/static/css/two-pane.css +0 -48
  306. flock/webapp/templates/base.html +0 -200
  307. flock/webapp/templates/chat.html +0 -152
  308. flock/webapp/templates/chat_settings.html +0 -19
  309. flock/webapp/templates/flock_editor.html +0 -16
  310. flock/webapp/templates/index.html +0 -12
  311. flock/webapp/templates/partials/_agent_detail_form.html +0 -93
  312. flock/webapp/templates/partials/_agent_list.html +0 -18
  313. flock/webapp/templates/partials/_agent_manager_view.html +0 -51
  314. flock/webapp/templates/partials/_agent_tools_checklist.html +0 -14
  315. flock/webapp/templates/partials/_chat_container.html +0 -15
  316. flock/webapp/templates/partials/_chat_messages.html +0 -57
  317. flock/webapp/templates/partials/_chat_settings_form.html +0 -85
  318. flock/webapp/templates/partials/_create_flock_form.html +0 -50
  319. flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -17
  320. flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -16
  321. flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -28
  322. flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -16
  323. flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -22
  324. flock/webapp/templates/partials/_env_vars_table.html +0 -23
  325. flock/webapp/templates/partials/_execution_form.html +0 -118
  326. flock/webapp/templates/partials/_execution_view_container.html +0 -28
  327. flock/webapp/templates/partials/_flock_file_list.html +0 -23
  328. flock/webapp/templates/partials/_flock_properties_form.html +0 -52
  329. flock/webapp/templates/partials/_flock_upload_form.html +0 -16
  330. flock/webapp/templates/partials/_header_flock_status.html +0 -5
  331. flock/webapp/templates/partials/_load_manager_view.html +0 -49
  332. flock/webapp/templates/partials/_registry_table.html +0 -25
  333. flock/webapp/templates/partials/_registry_viewer_content.html +0 -70
  334. flock/webapp/templates/partials/_results_display.html +0 -78
  335. flock/webapp/templates/partials/_settings_env_content.html +0 -9
  336. flock/webapp/templates/partials/_settings_theme_content.html +0 -14
  337. flock/webapp/templates/partials/_settings_view.html +0 -36
  338. flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -11
  339. flock/webapp/templates/partials/_share_link_snippet.html +0 -35
  340. flock/webapp/templates/partials/_sidebar.html +0 -74
  341. flock/webapp/templates/partials/_streaming_results_container.html +0 -195
  342. flock/webapp/templates/partials/_structured_data_view.html +0 -40
  343. flock/webapp/templates/partials/_theme_preview.html +0 -36
  344. flock/webapp/templates/registry_viewer.html +0 -84
  345. flock/webapp/templates/shared_run_page.html +0 -140
  346. flock/workflow/__init__.py +0 -0
  347. flock/workflow/activities.py +0 -196
  348. flock/workflow/agent_activities.py +0 -24
  349. flock/workflow/agent_execution_activity.py +0 -202
  350. flock/workflow/flock_workflow.py +0 -214
  351. flock/workflow/temporal_config.py +0 -96
  352. flock/workflow/temporal_setup.py +0 -68
  353. flock_core-0.5.0b28.dist-info/METADATA +0 -274
  354. flock_core-0.5.0b28.dist-info/RECORD +0 -561
  355. flock_core-0.5.0b28.dist-info/entry_points.txt +0 -2
  356. /flock/{core/logging → logging}/formatters/themes.py +0 -0
  357. /flock/{core/logging → logging}/span_middleware/baggage_span_processor.py +0 -0
  358. /flock/{core/mcp → mcp}/util/__init__.py +0 -0
  359. {flock_core-0.5.0b28.dist-info → flock_core-0.5.56b0.dist-info}/WHEEL +0 -0
flock/cli/load_flock.py DELETED
@@ -1,192 +0,0 @@
1
- """Load a Flock from a file."""
2
-
3
- from pathlib import Path
4
-
5
- import questionary
6
- from rich.console import Console
7
- from rich.markdown import Markdown
8
-
9
- from flock.cli.loaded_flock_cli import start_loaded_flock_cli
10
- from flock.core.flock import Flock
11
- from flock.core.logging.logging import get_logger
12
-
13
- logger = get_logger("cli.load_flock")
14
-
15
-
16
- def filter(file_path) -> bool:
17
- """Filter function for file selection."""
18
- path = Path(file_path)
19
- if path.is_dir():
20
- return True
21
- return path.is_file() and (
22
- path.suffix == ".flock"
23
- or path.suffix == ".yaml"
24
- or path.suffix == ".yml"
25
- )
26
-
27
-
28
- def load_flock():
29
- """Load a Flock from a file."""
30
- console = Console()
31
-
32
- console.print(
33
- "\nPlease select a *.flock, *.yaml, or *.yml file\n", style="bold green"
34
- )
35
-
36
- result = questionary.path("", file_filter=filter).ask()
37
-
38
- if not result:
39
- return
40
-
41
- selected_file = Path(result)
42
- if selected_file.is_file():
43
- console.print(f"Selected file: {selected_file}", style="bold green")
44
-
45
- try:
46
- # Try loading with detailed error handling
47
- try:
48
- logger.info(f"Attempting to load Flock from: {result}")
49
- flock = Flock.load_from_file(result)
50
- except ImportError as e:
51
- # Handle missing module path errors
52
- if "No module named" in str(e):
53
- console.print(
54
- f"[yellow]Warning: Module import failed: {e}[/]"
55
- )
56
- console.print(
57
- "[yellow]Trying file path fallback mechanism...[/]"
58
- )
59
- # Re-try loading with fallback
60
- flock = Flock.load_from_file(result)
61
- else:
62
- raise # Re-raise if it's not a missing module error
63
- except KeyError as e:
64
- # This could be caused by missing tool references
65
- if "__callable_ref__" in str(e):
66
- console.print(
67
- f"[yellow]Warning: Tool reference error: {e}[/]"
68
- )
69
- console.print(
70
- "[yellow]This may be due to missing tool registrations. Attempting to scan for tools...[/]"
71
- )
72
- # Scan for tools and retry
73
- from flock.cli.registry_management import (
74
- auto_registration_scanner,
75
- )
76
-
77
- auto_registration_scanner()
78
- # Try loading again
79
- flock = Flock.load_from_file(result)
80
- else:
81
- raise # Re-raise if it's not a tool reference error
82
-
83
- console.line()
84
- console.print(
85
- Markdown("# Flock loaded successfully"), style="bold green"
86
- )
87
- console.line()
88
-
89
- # Instead of just running the Flock, start our enhanced CLI
90
- start_loaded_flock_cli(
91
- flock, server_name=f"Flock - {selected_file.name}"
92
- )
93
-
94
- except Exception as e:
95
- console.print(f"Error loading Flock: {e!s}", style="bold red")
96
- logger.error(f"Failed to load Flock: {e}", exc_info=True)
97
-
98
- # Add more detailed error information for specific errors
99
- if "No module named" in str(e):
100
- console.print(
101
- "\n[yellow]This error might be due to missing module paths.[/]"
102
- )
103
- console.print(
104
- "[yellow]Component references may need to be updated with file paths.[/]"
105
- )
106
-
107
- # Show the option to scan the directory for components
108
- fix_paths = questionary.confirm(
109
- "Would you like to scan directories for components to fix missing imports?",
110
- default=True,
111
- ).ask()
112
-
113
- if fix_paths:
114
- from flock.cli.registry_management import (
115
- auto_registration_scanner,
116
- )
117
-
118
- auto_registration_scanner()
119
-
120
- # Try loading again
121
- console.print(
122
- "\n[yellow]Attempting to load Flock again...[/]"
123
- )
124
- try:
125
- flock = Flock.load_from_file(result)
126
- console.line()
127
- console.print(
128
- Markdown(
129
- "# Flock loaded successfully after component scan"
130
- ),
131
- style="bold green",
132
- )
133
- console.line()
134
-
135
- start_loaded_flock_cli(
136
- flock, server_name=f"Flock - {selected_file.name}"
137
- )
138
- return
139
- except Exception as e2:
140
- console.print(
141
- f"Error loading Flock after scan: {e2!s}",
142
- style="bold red",
143
- )
144
-
145
- # Handle tool reference issues
146
- elif "__callable_ref__" in str(e) or "callable" in str(e).lower():
147
- console.print(
148
- "\n[yellow]This error might be due to missing tool registrations.[/]"
149
- )
150
-
151
- # Show the option to scan the directory for tools
152
- fix_tools = questionary.confirm(
153
- "Would you like to scan directories for tools to fix missing references?",
154
- default=True,
155
- ).ask()
156
-
157
- if fix_tools:
158
- from flock.cli.registry_management import (
159
- auto_registration_scanner,
160
- )
161
-
162
- console.print(
163
- "\n[yellow]Scanning for tools and callables...[/]"
164
- )
165
- auto_registration_scanner()
166
-
167
- # Try loading again
168
- console.print(
169
- "\n[yellow]Attempting to load Flock again...[/]"
170
- )
171
- try:
172
- flock = Flock.load_from_file(result)
173
- console.line()
174
- console.print(
175
- Markdown(
176
- "# Flock loaded successfully after tool scan"
177
- ),
178
- style="bold green",
179
- )
180
- console.line()
181
-
182
- start_loaded_flock_cli(
183
- flock, server_name=f"Flock - {selected_file.name}"
184
- )
185
- return
186
- except Exception as e2:
187
- console.print(
188
- f"Error loading Flock after tool scan: {e2!s}",
189
- style="bold red",
190
- )
191
-
192
- input("\nPress Enter to continue...")
@@ -1,20 +0,0 @@
1
- from pathlib import Path
2
-
3
-
4
- def load_release_notes():
5
- """Load release notes."""
6
- from rich.console import Console
7
- from rich.markdown import Markdown
8
-
9
- from flock.core.util.cli_helper import display_hummingbird, init_console
10
-
11
- console = Console()
12
- file_path = Path(__file__).parent / "assets" / "release_notes.md"
13
-
14
- init_console()
15
- console.print(Markdown("# *'Hummingbird'* Release Notes"))
16
- display_hummingbird()
17
- with open(file_path) as file:
18
- release_notes = file.read()
19
-
20
- console.print(Markdown(release_notes))
@@ -1,254 +0,0 @@
1
- """CLI interface for working with a loaded Flock instance.
2
-
3
- This module provides a CLI interface for a Flock instance that has already been loaded,
4
- allowing users to execute, edit, or manage agents from the existing configuration.
5
- """
6
-
7
- import questionary
8
- from rich.console import Console
9
- from rich.panel import Panel
10
-
11
- from flock.cli.constants import (
12
- CLI_REGISTRY_MANAGEMENT,
13
- CLI_SETTINGS,
14
- )
15
- from flock.core.flock import Flock
16
- from flock.core.logging.logging import get_logger
17
- from flock.core.util.cli_helper import init_console
18
-
19
- # Import future modules we'll create
20
- # These will be implemented later
21
- try:
22
- from flock.cli.yaml_editor import yaml_editor
23
-
24
- yaml_editor_available = True
25
- except ImportError:
26
- yaml_editor_available = False
27
-
28
- try:
29
- from flock.cli.manage_agents import manage_agents
30
-
31
- manage_agents_available = True
32
- except ImportError:
33
- manage_agents_available = False
34
-
35
- try:
36
- from flock.cli.execute_flock import execute_flock, execute_flock_batch
37
-
38
- execute_flock_available = True
39
- except ImportError:
40
- execute_flock_available = False
41
-
42
- try:
43
- from flock.cli.view_results import view_results
44
-
45
- view_results_available = True
46
- except ImportError:
47
- view_results_available = False
48
-
49
- # Create console instance
50
- console = Console()
51
- logger = get_logger("cli.loaded_flock")
52
-
53
-
54
- def start_loaded_flock_cli(
55
- flock: Flock,
56
- server_name: str = "Flock CLI",
57
- show_results: bool = False,
58
- edit_mode: bool = False,
59
- ) -> None:
60
- """Start a CLI interface with a loaded Flock instance.
61
-
62
- Args:
63
- flock: The loaded Flock instance
64
- server_name: Optional name for the CLI interface
65
- show_results: Whether to initially show results of previous runs
66
- edit_mode: Whether to open directly in edit mode
67
- """
68
- if not flock:
69
- console.print("[bold red]Error: No Flock instance provided.[/]")
70
- return
71
-
72
- agent_names = list(flock._agents.keys())
73
-
74
- # Directly go to specific modes if requested
75
- if edit_mode and yaml_editor_available:
76
- yaml_editor(flock)
77
- return
78
-
79
- if show_results and view_results_available:
80
- view_results(flock)
81
- return
82
-
83
- # Main CLI loop
84
- while True:
85
- # Initialize console for each loop iteration
86
- init_console()
87
-
88
- # Display header with Flock information
89
- console.print(Panel(f"[bold green]{server_name}[/]"), justify="center")
90
- console.print(
91
- f"Flock loaded with [bold cyan]{len(agent_names)}[/] agents: {', '.join(agent_names)}"
92
- )
93
- console.line()
94
-
95
- # Main menu choices
96
- choices = [
97
- questionary.Separator(line=" "),
98
- "Execute Flock",
99
- "Execute Flock - Batch Mode",
100
- "Start Web Server",
101
- "Start Web Server with UI",
102
- "Manage Agents",
103
- "View Results of Past Runs",
104
- ]
105
-
106
- # Add YAML Editor option if available
107
- if yaml_editor_available:
108
- choices.append("Edit YAML Configurations")
109
-
110
- # Add remaining options
111
- choices.extend([questionary.Separator(), CLI_REGISTRY_MANAGEMENT])
112
- choices.extend(
113
- [
114
- questionary.Separator(),
115
- CLI_SETTINGS,
116
- questionary.Separator(),
117
- "Exit",
118
- ]
119
- )
120
-
121
- # Display menu and get choice
122
- choice = questionary.select(
123
- "What would you like to do?",
124
- choices=choices,
125
- ).ask()
126
-
127
- # Handle menu selection
128
- if choice == "Execute Flock":
129
- if execute_flock_available:
130
- execute_flock(flock)
131
- else:
132
- console.print(
133
- "[yellow]Execute Flock functionality not yet implemented.[/]"
134
- )
135
- input("\nPress Enter to continue...")
136
-
137
- elif choice == "Execute Flock - Batch Mode":
138
- if execute_flock_available:
139
- execute_flock_batch(flock)
140
- else:
141
- console.print(
142
- "[yellow]Batch execution functionality not yet implemented.[/]"
143
- )
144
- input("\nPress Enter to continue...")
145
-
146
- elif choice == "Start Web Server":
147
- _start_web_server(flock, create_ui=False)
148
-
149
- elif choice == "Start Web Server with UI":
150
- _start_web_server(flock, create_ui=True)
151
-
152
- elif choice == "Manage Agents":
153
- if manage_agents_available:
154
- manage_agents(flock)
155
- else:
156
- console.print(
157
- "[yellow]Manage Agents functionality not yet implemented.[/]"
158
- )
159
- input("\nPress Enter to continue...")
160
-
161
- elif choice == "View Results of Past Runs":
162
- if view_results_available:
163
- view_results(flock)
164
- else:
165
- console.print(
166
- "[yellow]View Results functionality not yet implemented.[/]"
167
- )
168
- input("\nPress Enter to continue...")
169
-
170
- elif choice == CLI_REGISTRY_MANAGEMENT:
171
- from flock.cli.registry_management import manage_registry
172
-
173
- manage_registry()
174
-
175
- elif choice == "Edit YAML Configurations" and yaml_editor_available:
176
- yaml_editor(flock)
177
-
178
- elif choice == CLI_SETTINGS:
179
- from flock.cli.settings import settings_editor
180
-
181
- settings_editor()
182
-
183
- elif choice == "Exit":
184
- break
185
-
186
- # Pause after each action unless we're exiting
187
- if choice != "Exit" and not choice.startswith("Start Web Server"):
188
- input("\nPress Enter to continue...")
189
-
190
-
191
- def _start_web_server(flock: Flock, create_ui: bool = False) -> None:
192
- """Start a web server with the loaded Flock instance."""
193
- host = "127.0.0.1"
194
- port = 8344
195
- # server_name = flock.name + " API" # Use flock name by default for server_name
196
-
197
- console.print("\n[bold]Web Server Configuration[/]")
198
-
199
- host_input = questionary.text(
200
- "Host (default: 127.0.0.1):", default=host
201
- ).ask()
202
- if host_input:
203
- host = host_input
204
-
205
- port_input = questionary.text(
206
- "Port (default: 8344):", default=str(port)
207
- ).ask()
208
- if port_input and port_input.isdigit():
209
- port = int(port_input)
210
-
211
- server_name_input = questionary.text(
212
- "Server name (default: FlockName API):", default=f"{flock.name or 'Flock'} API"
213
- ).ask()
214
- # if server_name_input: # server_name will be set by flock.start_api if not passed, or use its default
215
- # server_name = server_name_input
216
-
217
- ui_theme_to_pass = None
218
- if create_ui:
219
- try:
220
- from flock.webapp.app.config import (
221
- DEFAULT_THEME_NAME,
222
- list_available_themes,
223
- )
224
- available_themes = list_available_themes()
225
- theme_choices = ["default (current environment setting)", "random"] + sorted(available_themes)
226
-
227
- selected_theme_choice = questionary.select(
228
- "Select UI theme:",
229
- choices=theme_choices,
230
- default="default (current environment setting)"
231
- ).ask()
232
-
233
- if selected_theme_choice == "random":
234
- ui_theme_to_pass = "random"
235
- elif selected_theme_choice and selected_theme_choice != "default (current environment setting)":
236
- ui_theme_to_pass = selected_theme_choice
237
- # If "default" or None, ui_theme_to_pass remains None, Flock.start_api will use its logic
238
-
239
- except ImportError:
240
- logger.warning("Could not import webapp theme configuration for CLI selection. Theme will use default.")
241
- ui_theme_to_pass = None # Fallback if webapp components not there
242
-
243
- console.print(
244
- f"\nStarting web server on {host}:{port} {'with UI' if create_ui else 'without UI'}{' (Theme: ' + (ui_theme_to_pass if ui_theme_to_pass else 'default') + ')' if create_ui else ''}..."
245
- )
246
-
247
- # Call the Flock instance's own start_api method directly
248
- flock.start_api(
249
- host=host,
250
- port=port,
251
- server_name=server_name_input, # Pass the chosen server name
252
- create_ui=create_ui,
253
- ui_theme=ui_theme_to_pass,
254
- )