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.
- flock/__init__.py +12 -217
- flock/agent.py +678 -0
- flock/api/themes.py +71 -0
- flock/artifacts.py +79 -0
- flock/cli.py +75 -0
- flock/components.py +173 -0
- flock/dashboard/__init__.py +28 -0
- flock/dashboard/collector.py +283 -0
- flock/dashboard/events.py +182 -0
- flock/dashboard/launcher.py +230 -0
- flock/dashboard/service.py +537 -0
- flock/dashboard/websocket.py +235 -0
- flock/engines/__init__.py +6 -0
- flock/engines/dspy_engine.py +856 -0
- flock/examples.py +128 -0
- flock/{core/util → helper}/cli_helper.py +4 -3
- flock/{core/logging → logging}/__init__.py +2 -3
- flock/{core/logging → logging}/formatters/enum_builder.py +3 -4
- flock/{core/logging → logging}/formatters/theme_builder.py +19 -44
- flock/{core/logging → logging}/formatters/themed_formatter.py +69 -115
- flock/{core/logging → logging}/logging.py +77 -61
- flock/{core/logging → logging}/telemetry.py +20 -26
- flock/{core/logging → logging}/telemetry_exporter/base_exporter.py +2 -2
- flock/{core/logging → logging}/telemetry_exporter/file_exporter.py +6 -9
- flock/{core/logging → logging}/telemetry_exporter/sqlite_exporter.py +2 -3
- flock/{core/logging → logging}/trace_and_logged.py +20 -24
- flock/mcp/__init__.py +91 -0
- flock/{core/mcp/mcp_client.py → mcp/client.py} +103 -154
- flock/{core/mcp/mcp_config.py → mcp/config.py} +62 -117
- flock/mcp/manager.py +255 -0
- flock/mcp/servers/sse/__init__.py +1 -1
- flock/mcp/servers/sse/flock_sse_server.py +11 -53
- flock/mcp/servers/stdio/__init__.py +1 -1
- flock/mcp/servers/stdio/flock_stdio_server.py +8 -48
- flock/mcp/servers/streamable_http/flock_streamable_http_server.py +17 -62
- flock/mcp/servers/websockets/flock_websocket_server.py +7 -40
- flock/{core/mcp/flock_mcp_tool.py → mcp/tool.py} +16 -26
- flock/mcp/types/__init__.py +42 -0
- flock/{core/mcp → mcp}/types/callbacks.py +9 -15
- flock/{core/mcp → mcp}/types/factories.py +7 -6
- flock/{core/mcp → mcp}/types/handlers.py +13 -18
- flock/{core/mcp → mcp}/types/types.py +70 -74
- flock/{core/mcp → mcp}/util/helpers.py +1 -1
- flock/orchestrator.py +645 -0
- flock/registry.py +148 -0
- flock/runtime.py +262 -0
- flock/service.py +140 -0
- flock/store.py +69 -0
- flock/subscription.py +111 -0
- flock/themes/andromeda.toml +1 -1
- flock/themes/apple-system-colors.toml +1 -1
- flock/themes/arcoiris.toml +1 -1
- flock/themes/atomonelight.toml +1 -1
- flock/themes/ayu copy.toml +1 -1
- flock/themes/ayu-light.toml +1 -1
- flock/themes/belafonte-day.toml +1 -1
- flock/themes/belafonte-night.toml +1 -1
- flock/themes/blulocodark.toml +1 -1
- flock/themes/breeze.toml +1 -1
- flock/themes/broadcast.toml +1 -1
- flock/themes/brogrammer.toml +1 -1
- flock/themes/builtin-dark.toml +1 -1
- flock/themes/builtin-pastel-dark.toml +1 -1
- flock/themes/catppuccin-latte.toml +1 -1
- flock/themes/catppuccin-macchiato.toml +1 -1
- flock/themes/catppuccin-mocha.toml +1 -1
- flock/themes/cga.toml +1 -1
- flock/themes/chalk.toml +1 -1
- flock/themes/ciapre.toml +1 -1
- flock/themes/coffee-theme.toml +1 -1
- flock/themes/cyberpunkscarletprotocol.toml +1 -1
- flock/themes/dark+.toml +1 -1
- flock/themes/darkermatrix.toml +1 -1
- flock/themes/darkside.toml +1 -1
- flock/themes/desert.toml +1 -1
- flock/themes/django.toml +1 -1
- flock/themes/djangosmooth.toml +1 -1
- flock/themes/doomone.toml +1 -1
- flock/themes/dotgov.toml +1 -1
- flock/themes/dracula+.toml +1 -1
- flock/themes/duckbones.toml +1 -1
- flock/themes/encom.toml +1 -1
- flock/themes/espresso.toml +1 -1
- flock/themes/everblush.toml +1 -1
- flock/themes/fairyfloss.toml +1 -1
- flock/themes/fideloper.toml +1 -1
- flock/themes/fishtank.toml +1 -1
- flock/themes/flexoki-light.toml +1 -1
- flock/themes/floraverse.toml +1 -1
- flock/themes/framer.toml +1 -1
- flock/themes/galizur.toml +1 -1
- flock/themes/github.toml +1 -1
- flock/themes/grass.toml +1 -1
- flock/themes/grey-green.toml +1 -1
- flock/themes/gruvboxlight.toml +1 -1
- flock/themes/guezwhoz.toml +1 -1
- flock/themes/harper.toml +1 -1
- flock/themes/hax0r-blue.toml +1 -1
- flock/themes/hopscotch.256.toml +1 -1
- flock/themes/ic-green-ppl.toml +1 -1
- flock/themes/iceberg-dark.toml +1 -1
- flock/themes/japanesque.toml +1 -1
- flock/themes/jubi.toml +1 -1
- flock/themes/kibble.toml +1 -1
- flock/themes/kolorit.toml +1 -1
- flock/themes/kurokula.toml +1 -1
- flock/themes/materialdesigncolors.toml +1 -1
- flock/themes/matrix.toml +1 -1
- flock/themes/mellifluous.toml +1 -1
- flock/themes/midnight-in-mojave.toml +1 -1
- flock/themes/monokai-remastered.toml +1 -1
- flock/themes/monokai-soda.toml +1 -1
- flock/themes/neon.toml +1 -1
- flock/themes/neopolitan.toml +1 -1
- flock/themes/nord-light.toml +1 -1
- flock/themes/ocean.toml +1 -1
- flock/themes/onehalfdark.toml +1 -1
- flock/themes/onehalflight.toml +1 -1
- flock/themes/palenighthc.toml +1 -1
- flock/themes/paulmillr.toml +1 -1
- flock/themes/pencildark.toml +1 -1
- flock/themes/pnevma.toml +1 -1
- flock/themes/purple-rain.toml +1 -1
- flock/themes/purplepeter.toml +1 -1
- flock/themes/raycast-dark.toml +1 -1
- flock/themes/red-sands.toml +1 -1
- flock/themes/relaxed.toml +1 -1
- flock/themes/retro.toml +1 -1
- flock/themes/rose-pine.toml +1 -1
- flock/themes/royal.toml +1 -1
- flock/themes/ryuuko.toml +1 -1
- flock/themes/sakura.toml +1 -1
- flock/themes/scarlet-protocol.toml +1 -1
- flock/themes/seoulbones-dark.toml +1 -1
- flock/themes/shades-of-purple.toml +1 -1
- flock/themes/smyck.toml +1 -1
- flock/themes/softserver.toml +1 -1
- flock/themes/solarized-darcula.toml +1 -1
- flock/themes/square.toml +1 -1
- flock/themes/sugarplum.toml +1 -1
- flock/themes/thayer-bright.toml +1 -1
- flock/themes/tokyonight.toml +1 -1
- flock/themes/tomorrow.toml +1 -1
- flock/themes/ubuntu.toml +1 -1
- flock/themes/ultradark.toml +1 -1
- flock/themes/ultraviolent.toml +1 -1
- flock/themes/unikitty.toml +1 -1
- flock/themes/urple.toml +1 -1
- flock/themes/vesper.toml +1 -1
- flock/themes/vimbones.toml +1 -1
- flock/themes/wildcherry.toml +1 -1
- flock/themes/wilmersdorf.toml +1 -1
- flock/themes/wryan.toml +1 -1
- flock/themes/xcodedarkhc.toml +1 -1
- flock/themes/xcodelight.toml +1 -1
- flock/themes/zenbones-light.toml +1 -1
- flock/themes/zenwritten-dark.toml +1 -1
- flock/utilities.py +301 -0
- flock/{components/utility → utility}/output_utility_component.py +68 -53
- flock/visibility.py +107 -0
- flock_core-0.5.56b0.dist-info/METADATA +747 -0
- flock_core-0.5.56b0.dist-info/RECORD +398 -0
- flock_core-0.5.56b0.dist-info/entry_points.txt +2 -0
- {flock_core-0.5.0b28.dist-info → flock_core-0.5.56b0.dist-info}/licenses/LICENSE +1 -1
- flock/adapter/__init__.py +0 -14
- flock/adapter/azure_adapter.py +0 -68
- flock/adapter/chroma_adapter.py +0 -73
- flock/adapter/faiss_adapter.py +0 -97
- flock/adapter/pinecone_adapter.py +0 -51
- flock/adapter/vector_base.py +0 -47
- flock/cli/assets/release_notes.md +0 -140
- flock/cli/config.py +0 -8
- flock/cli/constants.py +0 -36
- flock/cli/create_agent.py +0 -1
- flock/cli/create_flock.py +0 -280
- flock/cli/execute_flock.py +0 -620
- flock/cli/load_agent.py +0 -1
- flock/cli/load_examples.py +0 -1
- flock/cli/load_flock.py +0 -192
- flock/cli/load_release_notes.py +0 -20
- flock/cli/loaded_flock_cli.py +0 -254
- flock/cli/manage_agents.py +0 -459
- flock/cli/registry_management.py +0 -889
- flock/cli/runner.py +0 -41
- flock/cli/settings.py +0 -857
- flock/cli/utils.py +0 -135
- flock/cli/view_results.py +0 -29
- flock/cli/yaml_editor.py +0 -396
- flock/components/__init__.py +0 -30
- flock/components/evaluation/__init__.py +0 -9
- flock/components/evaluation/declarative_evaluation_component.py +0 -606
- flock/components/routing/__init__.py +0 -15
- flock/components/routing/conditional_routing_component.py +0 -494
- flock/components/routing/default_routing_component.py +0 -103
- flock/components/routing/llm_routing_component.py +0 -206
- flock/components/utility/__init__.py +0 -22
- flock/components/utility/example_utility_component.py +0 -250
- flock/components/utility/feedback_utility_component.py +0 -206
- flock/components/utility/memory_utility_component.py +0 -550
- flock/components/utility/metrics_utility_component.py +0 -700
- flock/config.py +0 -61
- flock/core/__init__.py +0 -110
- flock/core/agent/__init__.py +0 -16
- flock/core/agent/default_agent.py +0 -216
- flock/core/agent/flock_agent_components.py +0 -104
- flock/core/agent/flock_agent_execution.py +0 -101
- flock/core/agent/flock_agent_integration.py +0 -260
- flock/core/agent/flock_agent_lifecycle.py +0 -186
- flock/core/agent/flock_agent_serialization.py +0 -381
- flock/core/api/__init__.py +0 -10
- flock/core/api/custom_endpoint.py +0 -45
- flock/core/api/endpoints.py +0 -254
- flock/core/api/main.py +0 -162
- flock/core/api/models.py +0 -97
- flock/core/api/run_store.py +0 -224
- flock/core/api/runner.py +0 -44
- flock/core/api/service.py +0 -214
- flock/core/component/__init__.py +0 -15
- flock/core/component/agent_component_base.py +0 -309
- flock/core/component/evaluation_component.py +0 -62
- flock/core/component/routing_component.py +0 -74
- flock/core/component/utility_component.py +0 -69
- flock/core/config/flock_agent_config.py +0 -58
- flock/core/config/scheduled_agent_config.py +0 -40
- flock/core/context/context.py +0 -213
- flock/core/context/context_manager.py +0 -37
- flock/core/context/context_vars.py +0 -10
- flock/core/evaluation/utils.py +0 -396
- flock/core/execution/batch_executor.py +0 -369
- flock/core/execution/evaluation_executor.py +0 -438
- flock/core/execution/local_executor.py +0 -31
- flock/core/execution/opik_executor.py +0 -103
- flock/core/execution/temporal_executor.py +0 -164
- flock/core/flock.py +0 -634
- flock/core/flock_agent.py +0 -336
- flock/core/flock_factory.py +0 -613
- flock/core/flock_scheduler.py +0 -166
- flock/core/flock_server_manager.py +0 -136
- flock/core/interpreter/python_interpreter.py +0 -689
- flock/core/mcp/__init__.py +0 -1
- flock/core/mcp/flock_mcp_server.py +0 -680
- flock/core/mcp/mcp_client_manager.py +0 -201
- flock/core/mcp/types/__init__.py +0 -1
- flock/core/mixin/dspy_integration.py +0 -403
- flock/core/mixin/prompt_parser.py +0 -125
- flock/core/orchestration/__init__.py +0 -15
- flock/core/orchestration/flock_batch_processor.py +0 -94
- flock/core/orchestration/flock_evaluator.py +0 -113
- flock/core/orchestration/flock_execution.py +0 -295
- flock/core/orchestration/flock_initialization.py +0 -149
- flock/core/orchestration/flock_server_manager.py +0 -67
- flock/core/orchestration/flock_web_server.py +0 -117
- flock/core/registry/__init__.py +0 -45
- flock/core/registry/agent_registry.py +0 -69
- flock/core/registry/callable_registry.py +0 -139
- flock/core/registry/component_discovery.py +0 -142
- flock/core/registry/component_registry.py +0 -64
- flock/core/registry/config_mapping.py +0 -64
- flock/core/registry/decorators.py +0 -137
- flock/core/registry/registry_hub.py +0 -205
- flock/core/registry/server_registry.py +0 -57
- flock/core/registry/type_registry.py +0 -86
- flock/core/serialization/__init__.py +0 -13
- flock/core/serialization/callable_registry.py +0 -52
- flock/core/serialization/flock_serializer.py +0 -832
- flock/core/serialization/json_encoder.py +0 -41
- flock/core/serialization/secure_serializer.py +0 -175
- flock/core/serialization/serializable.py +0 -342
- flock/core/serialization/serialization_utils.py +0 -412
- flock/core/util/file_path_utils.py +0 -223
- flock/core/util/hydrator.py +0 -309
- flock/core/util/input_resolver.py +0 -164
- flock/core/util/loader.py +0 -59
- flock/core/util/splitter.py +0 -219
- flock/di.py +0 -27
- flock/platform/docker_tools.py +0 -49
- flock/platform/jaeger_install.py +0 -86
- flock/webapp/__init__.py +0 -1
- flock/webapp/app/__init__.py +0 -0
- flock/webapp/app/api/__init__.py +0 -0
- flock/webapp/app/api/agent_management.py +0 -241
- flock/webapp/app/api/execution.py +0 -709
- flock/webapp/app/api/flock_management.py +0 -129
- flock/webapp/app/api/registry_viewer.py +0 -30
- flock/webapp/app/chat.py +0 -665
- flock/webapp/app/config.py +0 -104
- flock/webapp/app/dependencies.py +0 -117
- flock/webapp/app/main.py +0 -1070
- flock/webapp/app/middleware.py +0 -113
- flock/webapp/app/models_ui.py +0 -7
- flock/webapp/app/services/__init__.py +0 -0
- flock/webapp/app/services/feedback_file_service.py +0 -363
- flock/webapp/app/services/flock_service.py +0 -337
- flock/webapp/app/services/sharing_models.py +0 -81
- flock/webapp/app/services/sharing_store.py +0 -762
- flock/webapp/app/templates/theme_mapper.html +0 -326
- flock/webapp/app/theme_mapper.py +0 -812
- flock/webapp/app/utils.py +0 -85
- flock/webapp/run.py +0 -215
- flock/webapp/static/css/chat.css +0 -301
- flock/webapp/static/css/components.css +0 -167
- flock/webapp/static/css/header.css +0 -39
- flock/webapp/static/css/layout.css +0 -46
- flock/webapp/static/css/sidebar.css +0 -127
- flock/webapp/static/css/two-pane.css +0 -48
- flock/webapp/templates/base.html +0 -200
- flock/webapp/templates/chat.html +0 -152
- flock/webapp/templates/chat_settings.html +0 -19
- flock/webapp/templates/flock_editor.html +0 -16
- flock/webapp/templates/index.html +0 -12
- flock/webapp/templates/partials/_agent_detail_form.html +0 -93
- flock/webapp/templates/partials/_agent_list.html +0 -18
- flock/webapp/templates/partials/_agent_manager_view.html +0 -51
- flock/webapp/templates/partials/_agent_tools_checklist.html +0 -14
- flock/webapp/templates/partials/_chat_container.html +0 -15
- flock/webapp/templates/partials/_chat_messages.html +0 -57
- flock/webapp/templates/partials/_chat_settings_form.html +0 -85
- flock/webapp/templates/partials/_create_flock_form.html +0 -50
- flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -17
- flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -16
- flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -28
- flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -16
- flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -22
- flock/webapp/templates/partials/_env_vars_table.html +0 -23
- flock/webapp/templates/partials/_execution_form.html +0 -118
- flock/webapp/templates/partials/_execution_view_container.html +0 -28
- flock/webapp/templates/partials/_flock_file_list.html +0 -23
- flock/webapp/templates/partials/_flock_properties_form.html +0 -52
- flock/webapp/templates/partials/_flock_upload_form.html +0 -16
- flock/webapp/templates/partials/_header_flock_status.html +0 -5
- flock/webapp/templates/partials/_load_manager_view.html +0 -49
- flock/webapp/templates/partials/_registry_table.html +0 -25
- flock/webapp/templates/partials/_registry_viewer_content.html +0 -70
- flock/webapp/templates/partials/_results_display.html +0 -78
- flock/webapp/templates/partials/_settings_env_content.html +0 -9
- flock/webapp/templates/partials/_settings_theme_content.html +0 -14
- flock/webapp/templates/partials/_settings_view.html +0 -36
- flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -11
- flock/webapp/templates/partials/_share_link_snippet.html +0 -35
- flock/webapp/templates/partials/_sidebar.html +0 -74
- flock/webapp/templates/partials/_streaming_results_container.html +0 -195
- flock/webapp/templates/partials/_structured_data_view.html +0 -40
- flock/webapp/templates/partials/_theme_preview.html +0 -36
- flock/webapp/templates/registry_viewer.html +0 -84
- flock/webapp/templates/shared_run_page.html +0 -140
- flock/workflow/__init__.py +0 -0
- flock/workflow/activities.py +0 -196
- flock/workflow/agent_activities.py +0 -24
- flock/workflow/agent_execution_activity.py +0 -202
- flock/workflow/flock_workflow.py +0 -214
- flock/workflow/temporal_config.py +0 -96
- flock/workflow/temporal_setup.py +0 -68
- flock_core-0.5.0b28.dist-info/METADATA +0 -274
- flock_core-0.5.0b28.dist-info/RECORD +0 -561
- flock_core-0.5.0b28.dist-info/entry_points.txt +0 -2
- /flock/{core/logging → logging}/formatters/themes.py +0 -0
- /flock/{core/logging → logging}/span_middleware/baggage_span_processor.py +0 -0
- /flock/{core/mcp → mcp}/util/__init__.py +0 -0
- {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...")
|
flock/cli/load_release_notes.py
DELETED
|
@@ -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))
|
flock/cli/loaded_flock_cli.py
DELETED
|
@@ -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
|
-
)
|