flock-core 0.4.532__tar.gz → 0.4.533__tar.gz
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_core-0.4.532 → flock_core-0.4.533}/PKG-INFO +1 -1
- flock_core-0.4.533/docs/.codex/tool_set.md +67 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/pyproject.toml +1 -1
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/api/endpoints.py +11 -3
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/api/models.py +4 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/context/context_manager.py +3 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/context/context_vars.py +1 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock.py +6 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock_agent.py +117 -17
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock_factory.py +2 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/serialization/flock_serializer.py +26 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/api/execution.py +7 -1
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/services/flock_service.py +10 -2
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_execution_form.html +10 -1
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/workflow/activities.py +18 -2
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/workflow/agent_execution_activity.py +14 -2
- {flock_core-0.4.532 → flock_core-0.4.533}/uv.lock +1 -1
- {flock_core-0.4.532 → flock_core-0.4.533}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.env_template +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/ISSUE_TEMPLATE/documentation_improvement.yaml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/ISSUE_TEMPLATE/question_support_request.yaml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/ISSUE_TEMPLATE/vulnerability_report.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.gitignore +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.gitmodules +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.vscode/launch.json +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.vscode/settings.json +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/.vscode/tasks.json +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/AGENTS.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/CODE_OF_CONDUCT.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/CONTRIBUTING.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/LICENSE +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/README.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/SECURITY.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/about/changelog.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/about/contributing.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/drawio/architecture.drawio +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/flock.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/getting-started/first_agent_00.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/hummingbird.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/icon.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/logo.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/magpie.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/memory_concepts.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/memory_flow.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/memory_flow_chart.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/assets/images/readme_output.png +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/components/evaluators.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/components/index.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/components/modules.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/components/tools.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/core-concepts/agents.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/core-concepts/declarative.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/core-concepts/di.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/core-concepts/index.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/core-concepts/workflows.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/deployment/index.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/deployment/temporal.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/getting-started/concepts.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/getting-started/configuration.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/getting-started/index.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/getting-started/installation.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/getting-started/quickstart.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/guides/chaining-agents.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/guides/custom-endpoints.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/guides/index.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/guides/temporal-configuration.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/index.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/interacting-with-flock/cli-tool.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/interacting-with-flock/index.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/interacting-with-flock/interactive-cli.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/interacting-with-flock/programmatic.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/interacting-with-flock/rest-api.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/interacting-with-flock/web-ui.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/reference/flock_agent.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/reference/index.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/release-notes/magpie.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/docs/wd-di.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/mkdocs.yml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/requirements.txt +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/scripts/code_collector.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/scripts/create_docs.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/scripts/ensure_uv.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/adapter/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/adapter/azure_adapter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/adapter/chroma_adapter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/adapter/faiss_adapter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/adapter/pinecone_adapter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/adapter/vector_base.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/assets/release_notes.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/config.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/constants.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/execute_flock.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/load_release_notes.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/loaded_flock_cli.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/manage_agents.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/registry_management.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/runner.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/settings.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/utils.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/view_results.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/cli/yaml_editor.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/config.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/api/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/api/custom_endpoint.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/api/main.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/api/run_store.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/api/runner.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/api/service.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/config/flock_agent_config.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/config/scheduled_agent_config.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/context/context.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/evaluation/utils.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/execution/batch_executor.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/execution/evaluation_executor.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/execution/opik_executor.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock_evaluator.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock_registry.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock_router.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock_scheduler.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/flock_server_manager.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/interpreter/python_interpreter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/formatters/themes.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/logging.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/telemetry.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/flock_mcp_server.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/flock_mcp_tool_base.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/mcp_client.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/mcp_client_manager.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/mcp_config.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/types/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/types/callbacks.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/types/factories.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/types/handlers.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/types/types.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/util/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mcp/util/helpers.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mixin/dspy_integration.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/serialization/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/serialization/callable_registry.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/serialization/json_encoder.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/serialization/secure_serializer.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/serialization/serializable.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/serialization/serialization_utils.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/util/cli_helper.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/util/file_path_utils.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/util/loader.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/core/util/splitter.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/di.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/evaluators/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/evaluators/declarative/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/evaluators/test/test_case_evaluator.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/mcp/servers/sse/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/mcp/servers/sse/flock_sse_server.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/mcp/servers/stdio/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/mcp/servers/stdio/flock_stdio_server.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/mcp/servers/streamable_http/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/mcp/servers/streamable_http/flock_streamable_http_server.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/mcp/servers/websockets/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/mcp/servers/websockets/flock_websocket_server.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/assertion/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/assertion/assertion_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/callback/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/callback/callback_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/enterprise_memory/README.md +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/enterprise_memory/enterprise_memory_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/mem0/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/mem0/mem0_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/mem0_async/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/mem0_async/async_mem0_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/memory/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/memory/memory_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/memory/memory_parser.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/memory/memory_storage.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/output/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/output/output_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/performance/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/performance/metrics_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/zep/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/modules/zep/zep_module.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/agent/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/agent/agent_router.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/agent/handoff_agent.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/conditional/conditional_router.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/default/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/default/default_router.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/feedback/feedback_router.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/list_generator/list_generator_router.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/llm/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/routers/llm/llm_router.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/django.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/github.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/material.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/square.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/azure_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/code_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/file_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/github_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/markdown_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/system_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/text_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/web_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/tools/zendesk_tools.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/api/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/api/agent_management.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/api/flock_management.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/api/registry_viewer.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/chat.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/config.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/dependencies.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/main.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/middleware.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/models_ui.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/services/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/services/feedback_file_service.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/services/sharing_models.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/services/sharing_store.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/templates/theme_mapper.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/theme_mapper.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/app/utils.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/run.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/static/css/chat.css +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/static/css/components.css +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/static/css/header.css +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/static/css/layout.css +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/static/css/sidebar.css +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/static/css/two-pane.css +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/base.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/chat.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/chat_settings.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/flock_editor.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/index.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_agent_detail_form.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_agent_list.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_agent_manager_view.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_agent_tools_checklist.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_chat_container.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_chat_messages.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_chat_settings_form.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_create_flock_form.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_env_vars_table.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_execution_view_container.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_flock_file_list.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_flock_properties_form.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_flock_upload_form.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_header_flock_status.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_load_manager_view.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_registry_table.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_registry_viewer_content.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_results_display.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_settings_env_content.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_settings_theme_content.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_settings_view.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_share_link_snippet.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_sidebar.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_structured_data_view.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_theme_preview.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/registry_viewer.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/shared_run_page.html +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/workflow/flock_workflow.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/workflow/temporal_config.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/test_store_integration.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/api/test_custom_endpoints.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/core/test_flock_batch.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/core/test_flock_core.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/integration/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/integration/test_shared_link_store.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/modules/test_enterprise_memory_store.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/modules/test_vector_adapters.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/serialization/__init__.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/serialization/test_enhanced_serialization.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/serialization/test_file_path_serialization.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/serialization/test_flock_serializer.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/serialization/test_nested_serialization.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/serialization/test_yaml_serialization.py +0 -0
- {flock_core-0.4.532 → flock_core-0.4.533}/tests/tools/test_zendesk_tools.py +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Production Tool Set Switch Plan
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
- `FlockAgent.evaluate` currently always forwards `self.tools` to the evaluator; there is no concept of alternate tool bundles.
|
|
5
|
+
- Orchestrated runs (`Flock.run_async` → `workflow.activities.run_agent`) do not pass per-run options beyond the initial inputs stored in `FlockContext`.
|
|
6
|
+
- Web execution (`htmx_run_flock` → `run_current_flock_service`) and REST (`POST /run/flock`) both end up calling `Flock.run_async` with hard-coded parameters; HTML form/templates have no affordance for toggling tool usage.
|
|
7
|
+
- Serialization (`FlockAgent.to_dict/from_dict` and `FlockSerializer`) only know about a single tool list, so persisted YAML/JSON would currently lose any secondary tool configuration.
|
|
8
|
+
|
|
9
|
+
## Proposed Changes
|
|
10
|
+
1. **Agent Model & Serialization**
|
|
11
|
+
- Introduce `production_tools: list[Callable] | None` on `FlockAgent` (excluded from serialization by default).
|
|
12
|
+
- Update `FlockAgent.to_dict/from_dict` plus `FlockSerializer` to persist and restore both tool collections.
|
|
13
|
+
- Add a helper such as `_resolve_tool_set(tool_set: Literal['dev','production'])` that returns the right list (dev list remains backward compatible default).
|
|
14
|
+
|
|
15
|
+
2. **Execution Flow**
|
|
16
|
+
- Extend `FlockAgent.run/run_async/evaluate` signatures with `use_production_tools: bool = False` (keyword-only for clarity).
|
|
17
|
+
- Store the chosen tool set on the stack (no shared mutation) and have `evaluate` call the helper to pick the correct tool bundle when invoking the evaluator.
|
|
18
|
+
- Allow orchestrated runs to surface the choice via a new context variable (e.g. `FLOCK_TOOL_SET`) so that `workflow.activities.run_agent` can pass the flag when iterating agents.
|
|
19
|
+
|
|
20
|
+
3. **Flock Orchestrator**
|
|
21
|
+
- Add the same boolean flag to `Flock.run/run_async` (and by extension `run_batch_async` if batch runs should support it), defaulting to dev tools.
|
|
22
|
+
- When initializing the context (`initialize_context`) persist the selection, and ensure both local (`run_local_workflow`) and Temporal execution paths propagate it down to each agent invocation.
|
|
23
|
+
|
|
24
|
+
4. **API & Services**
|
|
25
|
+
- Extend `FlockAPIRequest` with `use_production_tools: bool = False`, update the REST handler to forward the flag into `_execute_flock_run_task`.
|
|
26
|
+
- Update `run_current_flock_service` and any other server-side helper that triggers `Flock.run_async` so the flag is threaded through.
|
|
27
|
+
- Review/adjust other entry points (CLI helpers, schedulers, shared-run flows) for calls to `Flock.run_async` or `FlockAgent.run_async` to either expose the flag or explicitly opt into dev tools.
|
|
28
|
+
|
|
29
|
+
5. **Web UI**
|
|
30
|
+
- Modify `partials/_execution_form.html` to add a checkbox labelled for production tools.
|
|
31
|
+
- Add a confirmation modal/JS prompt before submitting when the checkbox is checked, ensuring HTMX submission includes the new form value.
|
|
32
|
+
- Adjust `htmx_run_flock` to parse the form flag and pass it to `run_current_flock_service`; update the rendered form state as needed.
|
|
33
|
+
|
|
34
|
+
6. **Tool Registration Utilities**
|
|
35
|
+
- Update helper factories (`FlockFactory.create_default_agent`, editor service for agent CRUD) to accept and wire `production_tools` if provided so UI/editor flows can manage both sets without manual patching.
|
|
36
|
+
|
|
37
|
+
## Validation Plan
|
|
38
|
+
- Unit-style exercise: new test or dummied script ensuring an agent with distinct dev/prod tool lists executes the correct callable based on the flag.
|
|
39
|
+
- Web layer smoke test: via HTMX form submission, confirm the checkbox toggles which tool is invoked (can be logged/printed during dev).
|
|
40
|
+
- REST test: `uv run flock --web` and POST to `/ui/api/run/flock` with `use_production_tools=true`, verify response indicates production tool path.
|
|
41
|
+
- Regression sweep: run `uv run pytest` (or a focused subset) to ensure serialization changes don’t break existing expectations.
|
|
42
|
+
|
|
43
|
+
## Open Considerations
|
|
44
|
+
- Confirm whether shared-run or batch workflows must surface the flag (requirement only mentions direct runs; plan assumes batch remains dev-only unless requested otherwise).
|
|
45
|
+
- Decide how to handle agents lacking a production tool list when the flag is enabled (proposed behaviour: fall back to dev tools, plus warning log).
|
|
46
|
+
- Ensure concurrency safety if multiple runs toggle tool sets concurrently—using per-call parameters instead of mutating agent state should avoid cross-talk.
|
|
47
|
+
|
|
48
|
+
## Implementation Summary
|
|
49
|
+
|
|
50
|
+
- **Agent Model Extensions**
|
|
51
|
+
- Added a `production_tools` field and runtime helper `_get_runtime_tools`, enabling evaluators to receive either the default or production list without mutating agent state (`src/flock/core/flock_agent.py#L100`, `src/flock/core/flock_agent.py#L334`).
|
|
52
|
+
- Serialization/deserialization updated to persist both tool collections, plus registration of production tools during flock export (`src/flock/core/flock_agent.py#L724`, `src/flock/core/flock_agent.py#L930`, `src/flock/core/serialization/flock_serializer.py#L262`).
|
|
53
|
+
- `FlockFactory.create_default_agent` accepts an optional production list for UI/editor flows (`src/flock/core/flock_factory.py#L398`).
|
|
54
|
+
|
|
55
|
+
- **Execution Propagation**
|
|
56
|
+
- `Flock.run/run_async` now accept `use_production_tools`; the flag is stored in context via `initialize_context` for downstream consumers (`src/flock/core/flock.py#L465`, `src/flock/core/context/context_manager.py#L14`).
|
|
57
|
+
- Local and Temporal workflows read the shared context value before invoking each agent, ensuring chained agents share the same selection (`src/flock/workflow/activities.py#L68`, `src/flock/workflow/agent_execution_activity.py#L81`).
|
|
58
|
+
|
|
59
|
+
- **API & UI Integration**
|
|
60
|
+
- REST model/endpoint extended with a `use_production_tools` boolean that is forwarded into flock execution (`src/flock/core/api/models.py#L17`, `src/flock/core/api/endpoints.py#L81`).
|
|
61
|
+
- Web execution form gains a confirmation-backed checkbox; HTMX handler and service propagate the flag to `Flock.run_async` (`src/flock/webapp/templates/partials/_execution_form.html#L37`, `src/flock/webapp/app/api/execution.py#L145`, `src/flock/webapp/app/services/flock_service.py#L249`).
|
|
62
|
+
|
|
63
|
+
- **Testing & Example**
|
|
64
|
+
- Added `examples/02-core-concepts/10-production-tools-toggle.py`, a compact integration script that drives the new flag through `Flock.run` and prints tool usage, validated via `uv run` with model `openai/gpt-4.1`.
|
|
65
|
+
|
|
66
|
+
- **Outcome**
|
|
67
|
+
- Agents default to development tools, but a run-wide toggle can switch all agents in the context to their production tool set, falling back gracefully when unspecified. The web UI and REST API surface the new control, while serialization keeps both tool bundles intact for config handoff.
|
|
@@ -78,7 +78,9 @@ def create_api_router() -> APIRouter:
|
|
|
78
78
|
# For this refactoring step, let's assume a helper `_execute_flock_run` exists
|
|
79
79
|
# that we can call.
|
|
80
80
|
|
|
81
|
-
async def _execute_flock_run_task(
|
|
81
|
+
async def _execute_flock_run_task(
|
|
82
|
+
run_id_task, agent_name_task, inputs_task, use_production_tools_task
|
|
83
|
+
):
|
|
82
84
|
# This is a simplified version of what was in FlockAPI._run_flock
|
|
83
85
|
try:
|
|
84
86
|
if agent_name_task not in flock_instance.agents:
|
|
@@ -89,7 +91,9 @@ def create_api_router() -> APIRouter:
|
|
|
89
91
|
typed_inputs = inputs_task # Simplified for now
|
|
90
92
|
|
|
91
93
|
result = await flock_instance.run_async(
|
|
92
|
-
start_agent=agent_name_task,
|
|
94
|
+
start_agent=agent_name_task,
|
|
95
|
+
input=typed_inputs,
|
|
96
|
+
use_production_tools=use_production_tools_task,
|
|
93
97
|
)
|
|
94
98
|
run_store.update_run_result(run_id_task, result)
|
|
95
99
|
except Exception as e_task:
|
|
@@ -106,6 +110,7 @@ def create_api_router() -> APIRouter:
|
|
|
106
110
|
run_id,
|
|
107
111
|
request_model.agent_name,
|
|
108
112
|
processed_inputs,
|
|
113
|
+
request_model.use_production_tools,
|
|
109
114
|
)
|
|
110
115
|
run_store.update_run_status(run_id, "running")
|
|
111
116
|
response_data.status = "running"
|
|
@@ -114,7 +119,10 @@ def create_api_router() -> APIRouter:
|
|
|
114
119
|
f"Running flock '{request_model.agent_name}' synchronously (run_id: {run_id})"
|
|
115
120
|
)
|
|
116
121
|
await _execute_flock_run_task(
|
|
117
|
-
|
|
122
|
+
run_id,
|
|
123
|
+
request_model.agent_name,
|
|
124
|
+
processed_inputs,
|
|
125
|
+
request_model.use_production_tools,
|
|
118
126
|
)
|
|
119
127
|
response_data = run_store.get_run(run_id)
|
|
120
128
|
|
|
@@ -17,6 +17,10 @@ class FlockAPIRequest(BaseModel):
|
|
|
17
17
|
async_run: bool = Field(
|
|
18
18
|
default=False, description="Whether to run asynchronously"
|
|
19
19
|
)
|
|
20
|
+
use_production_tools: bool = Field(
|
|
21
|
+
default=False,
|
|
22
|
+
description="If true, run agents with their production tool set where available",
|
|
23
|
+
)
|
|
20
24
|
|
|
21
25
|
|
|
22
26
|
class FlockAPIResponse(BaseModel):
|
|
@@ -7,6 +7,7 @@ from flock.core.context.context_vars import (
|
|
|
7
7
|
FLOCK_LOCAL_DEBUG,
|
|
8
8
|
FLOCK_MODEL,
|
|
9
9
|
FLOCK_RUN_ID,
|
|
10
|
+
FLOCK_USE_PRODUCTION_TOOLS,
|
|
10
11
|
)
|
|
11
12
|
|
|
12
13
|
|
|
@@ -17,6 +18,7 @@ def initialize_context(
|
|
|
17
18
|
run_id: str,
|
|
18
19
|
local_debug: bool,
|
|
19
20
|
model: str,
|
|
21
|
+
use_production_tools: bool,
|
|
20
22
|
) -> None:
|
|
21
23
|
"""Initialize the FlockContext with standard variables before running an agent.
|
|
22
24
|
|
|
@@ -35,3 +37,4 @@ def initialize_context(
|
|
|
35
37
|
context.run_id = run_id
|
|
36
38
|
context.set_variable(FLOCK_RUN_ID, run_id)
|
|
37
39
|
context.set_variable(FLOCK_MODEL, model)
|
|
40
|
+
context.set_variable(FLOCK_USE_PRODUCTION_TOOLS, use_production_tools)
|
|
@@ -472,6 +472,8 @@ class Flock(BaseModel, Serializable):
|
|
|
472
472
|
agents: list[FlockAgent] | None = None,
|
|
473
473
|
servers: list[FlockMCPServerBase] | None = None,
|
|
474
474
|
memo: dict[str, Any] | None = None,
|
|
475
|
+
*,
|
|
476
|
+
use_production_tools: bool = False,
|
|
475
477
|
) -> Box | dict:
|
|
476
478
|
return self._run_sync(
|
|
477
479
|
self.run_async(
|
|
@@ -483,6 +485,7 @@ class Flock(BaseModel, Serializable):
|
|
|
483
485
|
agents=agents,
|
|
484
486
|
servers=servers,
|
|
485
487
|
memo=memo,
|
|
488
|
+
use_production_tools=use_production_tools,
|
|
486
489
|
)
|
|
487
490
|
)
|
|
488
491
|
|
|
@@ -496,6 +499,8 @@ class Flock(BaseModel, Serializable):
|
|
|
496
499
|
agents: list[FlockAgent] | None = None,
|
|
497
500
|
servers: list[FlockMCPServerBase] | None = None,
|
|
498
501
|
memo: dict[str, Any] | None = None,
|
|
502
|
+
*,
|
|
503
|
+
use_production_tools: bool = False,
|
|
499
504
|
) -> Box | dict:
|
|
500
505
|
"""Entry point for running an agent system asynchronously."""
|
|
501
506
|
# Import here to allow forward reference resolution
|
|
@@ -588,6 +593,7 @@ class Flock(BaseModel, Serializable):
|
|
|
588
593
|
effective_run_id,
|
|
589
594
|
not self.enable_temporal, # local_debug is inverse of enable_temporal
|
|
590
595
|
self.model or resolved_start_agent.model or DEFAULT_MODEL,
|
|
596
|
+
use_production_tools,
|
|
591
597
|
)
|
|
592
598
|
# Add agent definitions to context for routing/serialization within workflow
|
|
593
599
|
for agent_name_iter, agent_instance_iter in self.agents.items():
|
|
@@ -94,9 +94,13 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
94
94
|
tools: list[Callable[..., Any]] | None = (
|
|
95
95
|
Field( # Assume tools are always callable for serialization simplicity
|
|
96
96
|
default=None,
|
|
97
|
-
description="List of callable tools the agent can use
|
|
97
|
+
description="List of callable tools the agent can use for development/default runs.",
|
|
98
98
|
)
|
|
99
99
|
)
|
|
100
|
+
production_tools: list[Callable[..., Any]] | None = Field(
|
|
101
|
+
default=None,
|
|
102
|
+
description="Optional list of callable tools to use when production tool set is enabled.",
|
|
103
|
+
)
|
|
100
104
|
servers: list[str | FlockMCPServerBase] | None = Field(
|
|
101
105
|
default=None,
|
|
102
106
|
description="List of MCP Servers the agent can use to enhance its capabilities. These must be registered.",
|
|
@@ -151,6 +155,7 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
151
155
|
input: SignatureType = None,
|
|
152
156
|
output: SignatureType = None,
|
|
153
157
|
tools: list[Callable[..., Any]] | None = None,
|
|
158
|
+
production_tools: list[Callable[..., Any]] | None = None,
|
|
154
159
|
servers: list[str | FlockMCPServerBase] | None = None,
|
|
155
160
|
evaluator: "FlockEvaluator | None" = None,
|
|
156
161
|
handoff_router: "FlockRouter | None" = None,
|
|
@@ -168,6 +173,7 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
168
173
|
input=input, # Store the raw input spec
|
|
169
174
|
output=output, # Store the raw output spec
|
|
170
175
|
tools=tools,
|
|
176
|
+
production_tools=production_tools,
|
|
171
177
|
servers=servers,
|
|
172
178
|
write_to_file=write_to_file,
|
|
173
179
|
wait_for_input=wait_for_input,
|
|
@@ -325,7 +331,27 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
325
331
|
)
|
|
326
332
|
span.record_exception(module_error)
|
|
327
333
|
|
|
328
|
-
|
|
334
|
+
def _get_runtime_tools(self, use_production_tools: bool | None = None) -> list[Callable[..., Any]]:
|
|
335
|
+
"""Select the tool list for the current run."""
|
|
336
|
+
if use_production_tools and self.production_tools:
|
|
337
|
+
logger.info(
|
|
338
|
+
"Using production tool set",
|
|
339
|
+
agent=self.name,
|
|
340
|
+
tool_count=len(self.production_tools),
|
|
341
|
+
)
|
|
342
|
+
return list(self.production_tools)
|
|
343
|
+
|
|
344
|
+
if use_production_tools and not self.production_tools:
|
|
345
|
+
logger.warning(
|
|
346
|
+
"Production tool set requested but not configured; falling back to default tools",
|
|
347
|
+
agent=self.name,
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
return list(self.tools or [])
|
|
351
|
+
|
|
352
|
+
async def evaluate(
|
|
353
|
+
self, inputs: dict[str, Any], *, use_production_tools: bool | None = None
|
|
354
|
+
) -> dict[str, Any]:
|
|
329
355
|
"""Core evaluation logic, calling the assigned evaluator and modules."""
|
|
330
356
|
if not self.evaluator:
|
|
331
357
|
raise RuntimeError(
|
|
@@ -351,11 +377,7 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
351
377
|
# Actual evaluation
|
|
352
378
|
try:
|
|
353
379
|
# Pass registered tools if the evaluator needs them
|
|
354
|
-
registered_tools =
|
|
355
|
-
if self.tools:
|
|
356
|
-
# Ensure tools are actually retrieved/validated if needed by evaluator type
|
|
357
|
-
# For now, assume evaluator handles tool resolution if necessary
|
|
358
|
-
registered_tools = self.tools
|
|
380
|
+
registered_tools = self._get_runtime_tools(use_production_tools)
|
|
359
381
|
|
|
360
382
|
# Retrieve available mcp_tools if the evaluator needs them
|
|
361
383
|
mcp_tools = []
|
|
@@ -415,7 +437,10 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
415
437
|
|
|
416
438
|
async def _final_handler():
|
|
417
439
|
return await self.evaluator.evaluate(
|
|
418
|
-
self,
|
|
440
|
+
self,
|
|
441
|
+
current_inputs,
|
|
442
|
+
registered_tools,
|
|
443
|
+
mcp_tools=mcp_tools,
|
|
419
444
|
)
|
|
420
445
|
|
|
421
446
|
idx = 0
|
|
@@ -434,20 +459,26 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
434
459
|
else:
|
|
435
460
|
# No pipeline registered, direct evaluation
|
|
436
461
|
result = await self.evaluator.evaluate(
|
|
437
|
-
self,
|
|
462
|
+
self,
|
|
463
|
+
current_inputs,
|
|
464
|
+
registered_tools,
|
|
465
|
+
mcp_tools=mcp_tools,
|
|
438
466
|
)
|
|
439
467
|
except ImportError:
|
|
440
468
|
# wd.di not installed – fall back
|
|
441
469
|
result = await self.evaluator.evaluate(
|
|
442
|
-
self,
|
|
470
|
+
self,
|
|
471
|
+
current_inputs,
|
|
472
|
+
registered_tools,
|
|
473
|
+
mcp_tools=mcp_tools,
|
|
443
474
|
)
|
|
444
475
|
else:
|
|
445
476
|
# No DI container – standard execution
|
|
446
477
|
result = await self.evaluator.evaluate(
|
|
447
478
|
self,
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
479
|
+
current_inputs,
|
|
480
|
+
registered_tools,
|
|
481
|
+
mcp_tools=mcp_tools,
|
|
451
482
|
)
|
|
452
483
|
except Exception as eval_error:
|
|
453
484
|
logger.error(
|
|
@@ -477,7 +508,9 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
477
508
|
logger.debug(f"Evaluation completed for agent '{self.name}'")
|
|
478
509
|
return current_result
|
|
479
510
|
|
|
480
|
-
def run(
|
|
511
|
+
def run(
|
|
512
|
+
self, inputs: dict[str, Any], *, use_production_tools: bool | None = None
|
|
513
|
+
) -> dict[str, Any]:
|
|
481
514
|
"""Synchronous wrapper for run_async."""
|
|
482
515
|
try:
|
|
483
516
|
loop = asyncio.get_running_loop()
|
|
@@ -486,7 +519,9 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
486
519
|
): # 'RuntimeError: There is no current event loop...'
|
|
487
520
|
loop = asyncio.new_event_loop()
|
|
488
521
|
asyncio.set_event_loop(loop)
|
|
489
|
-
return loop.run_until_complete(
|
|
522
|
+
return loop.run_until_complete(
|
|
523
|
+
self.run_async(inputs, use_production_tools=use_production_tools)
|
|
524
|
+
)
|
|
490
525
|
|
|
491
526
|
def set_model(self, model: str):
|
|
492
527
|
"""Set the model for the agent and its evaluator."""
|
|
@@ -505,14 +540,18 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
505
540
|
f"Agent '{self.name}' has no evaluator to set model for."
|
|
506
541
|
)
|
|
507
542
|
|
|
508
|
-
async def run_async(
|
|
543
|
+
async def run_async(
|
|
544
|
+
self, inputs: dict[str, Any], *, use_production_tools: bool | None = None
|
|
545
|
+
) -> dict[str, Any]:
|
|
509
546
|
"""Asynchronous execution logic with lifecycle hooks."""
|
|
510
547
|
with tracer.start_as_current_span("agent.run") as span:
|
|
511
548
|
span.set_attribute("agent.name", self.name)
|
|
512
549
|
span.set_attribute("inputs", str(inputs))
|
|
513
550
|
try:
|
|
514
551
|
await self.initialize(inputs)
|
|
515
|
-
result = await self.evaluate(
|
|
552
|
+
result = await self.evaluate(
|
|
553
|
+
inputs, use_production_tools=use_production_tools
|
|
554
|
+
)
|
|
516
555
|
await self.terminate(inputs, result)
|
|
517
556
|
span.set_attribute("result", str(result))
|
|
518
557
|
logger.info("Agent run completed", agent=self.name)
|
|
@@ -724,6 +763,7 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
724
763
|
"modules",
|
|
725
764
|
"handoff_router",
|
|
726
765
|
"tools",
|
|
766
|
+
"production_tools",
|
|
727
767
|
"servers",
|
|
728
768
|
]
|
|
729
769
|
|
|
@@ -869,6 +909,34 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
869
909
|
f"Added {len(serialized_tools)} tools to agent '{self.name}'"
|
|
870
910
|
)
|
|
871
911
|
|
|
912
|
+
if self.production_tools:
|
|
913
|
+
logger.debug(
|
|
914
|
+
f"Serializing {len(self.production_tools)} production tools for agent '{self.name}'"
|
|
915
|
+
)
|
|
916
|
+
serialized_prod_tools = []
|
|
917
|
+
for tool in self.production_tools:
|
|
918
|
+
if callable(tool) and not isinstance(tool, type):
|
|
919
|
+
path_str = FlockRegistry.get_callable_path_string(tool)
|
|
920
|
+
if path_str:
|
|
921
|
+
func_name = path_str.split(".")[-1]
|
|
922
|
+
serialized_prod_tools.append(func_name)
|
|
923
|
+
logger.debug(
|
|
924
|
+
f"Added production tool '{func_name}' (from path '{path_str}') to agent '{self.name}'"
|
|
925
|
+
)
|
|
926
|
+
else:
|
|
927
|
+
logger.warning(
|
|
928
|
+
f"Could not get path string for production tool {tool} in agent '{self.name}'. Skipping."
|
|
929
|
+
)
|
|
930
|
+
else:
|
|
931
|
+
logger.warning(
|
|
932
|
+
f"Non-callable item found in production tools list for agent '{self.name}': {tool}. Skipping."
|
|
933
|
+
)
|
|
934
|
+
if serialized_prod_tools:
|
|
935
|
+
data["production_tools"] = serialized_prod_tools
|
|
936
|
+
logger.debug(
|
|
937
|
+
f"Added {len(serialized_prod_tools)} production tools to agent '{self.name}'"
|
|
938
|
+
)
|
|
939
|
+
|
|
872
940
|
if is_descrition_callable:
|
|
873
941
|
path_str = FlockRegistry.get_callable_path_string(self.description)
|
|
874
942
|
if path_str:
|
|
@@ -930,6 +998,7 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
930
998
|
component_configs = {}
|
|
931
999
|
callable_configs = {}
|
|
932
1000
|
tool_config = []
|
|
1001
|
+
production_tool_config = []
|
|
933
1002
|
servers_config = []
|
|
934
1003
|
agent_data = {}
|
|
935
1004
|
|
|
@@ -945,6 +1014,7 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
945
1014
|
"output_callable",
|
|
946
1015
|
]
|
|
947
1016
|
tool_key = "tools"
|
|
1017
|
+
production_tool_key = "production_tools"
|
|
948
1018
|
|
|
949
1019
|
servers_key = "mcp_servers"
|
|
950
1020
|
|
|
@@ -955,10 +1025,13 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
955
1025
|
callable_configs[key] = value
|
|
956
1026
|
elif key == tool_key and value is not None:
|
|
957
1027
|
tool_config = value # Expecting a list of names
|
|
1028
|
+
elif key == production_tool_key and value is not None:
|
|
1029
|
+
production_tool_config = value
|
|
958
1030
|
elif key == servers_key and value is not None:
|
|
959
1031
|
servers_config = value # Expecting a list of names
|
|
960
1032
|
elif key not in component_keys + callable_keys + [
|
|
961
1033
|
tool_key,
|
|
1034
|
+
production_tool_key,
|
|
962
1035
|
servers_key,
|
|
963
1036
|
]: # Avoid double adding
|
|
964
1037
|
agent_data[key] = value
|
|
@@ -1075,6 +1148,33 @@ class FlockAgent(BaseModel, Serializable, DSPyIntegrationMixin, ABC):
|
|
|
1075
1148
|
exc_info=True,
|
|
1076
1149
|
)
|
|
1077
1150
|
|
|
1151
|
+
agent.production_tools = []
|
|
1152
|
+
if production_tool_config:
|
|
1153
|
+
logger.debug(
|
|
1154
|
+
f"Deserializing {len(production_tool_config)} production tools for '{agent.name}'"
|
|
1155
|
+
)
|
|
1156
|
+
for tool_name_or_path in production_tool_config:
|
|
1157
|
+
try:
|
|
1158
|
+
found_tool = registry.get_callable(tool_name_or_path)
|
|
1159
|
+
if found_tool and callable(found_tool):
|
|
1160
|
+
agent.production_tools.append(found_tool)
|
|
1161
|
+
logger.debug(
|
|
1162
|
+
f"Resolved and added production tool '{tool_name_or_path}' for agent '{agent.name}'"
|
|
1163
|
+
)
|
|
1164
|
+
else:
|
|
1165
|
+
logger.warning(
|
|
1166
|
+
f"Registry returned non-callable for production tool '{tool_name_or_path}' for agent '{agent.name}'. Skipping."
|
|
1167
|
+
)
|
|
1168
|
+
except (ValueError) as e:
|
|
1169
|
+
logger.warning(
|
|
1170
|
+
f"Could not resolve production tool '{tool_name_or_path}' for agent '{agent.name}': {e}. Skipping."
|
|
1171
|
+
)
|
|
1172
|
+
except Exception as e:
|
|
1173
|
+
logger.error(
|
|
1174
|
+
f"Unexpected error resolving production tool '{tool_name_or_path}' for agent '{agent.name}': {e}. Skipping.",
|
|
1175
|
+
exc_info=True,
|
|
1176
|
+
)
|
|
1177
|
+
|
|
1078
1178
|
# --- Deserialize Servers ---
|
|
1079
1179
|
agent.servers = [] # Initialize Servers list.
|
|
1080
1180
|
if servers_config:
|
|
@@ -398,6 +398,7 @@ class FlockFactory:
|
|
|
398
398
|
input: SignatureType = None,
|
|
399
399
|
output: SignatureType = None,
|
|
400
400
|
tools: list[Callable[..., Any] | Any] | None = None,
|
|
401
|
+
production_tools: list[Callable[..., Any] | Any] | None = None,
|
|
401
402
|
servers: list[str | FlockMCPServerBase] | None = None,
|
|
402
403
|
use_cache: bool = True,
|
|
403
404
|
enable_rich_tables: bool = False,
|
|
@@ -443,6 +444,7 @@ class FlockFactory:
|
|
|
443
444
|
input=input,
|
|
444
445
|
output=output,
|
|
445
446
|
tools=tools,
|
|
447
|
+
production_tools=production_tools,
|
|
446
448
|
servers=servers,
|
|
447
449
|
model=model,
|
|
448
450
|
description=description,
|
|
@@ -262,6 +262,32 @@ class FlockSerializer:
|
|
|
262
262
|
)
|
|
263
263
|
)
|
|
264
264
|
|
|
265
|
+
production_tool_names = agent_data.get("production_tools")
|
|
266
|
+
if production_tool_names:
|
|
267
|
+
logger.debug(
|
|
268
|
+
f"Extracting production tool information from agent '{name}': {production_tool_names}"
|
|
269
|
+
)
|
|
270
|
+
prod_tool_objs = (
|
|
271
|
+
agent_instance.production_tools
|
|
272
|
+
if agent_instance.production_tools
|
|
273
|
+
else []
|
|
274
|
+
)
|
|
275
|
+
for i, tool_name in enumerate(production_tool_names):
|
|
276
|
+
if tool_name not in components and i < len(prod_tool_objs):
|
|
277
|
+
tool = prod_tool_objs[i]
|
|
278
|
+
if callable(tool) and not isinstance(tool, type):
|
|
279
|
+
path_str = (
|
|
280
|
+
FlockRegistry.get_callable_path_string(tool)
|
|
281
|
+
)
|
|
282
|
+
if path_str:
|
|
283
|
+
logger.debug(
|
|
284
|
+
f"Adding production tool '{tool_name}' (from path '{path_str}') to components"
|
|
285
|
+
)
|
|
286
|
+
components[tool_name] = (
|
|
287
|
+
FlockSerializer._get_callable_definition(
|
|
288
|
+
path_str, tool_name, path_type
|
|
289
|
+
)
|
|
290
|
+
)
|
|
265
291
|
except Exception as e:
|
|
266
292
|
logger.error(
|
|
267
293
|
f"Failed to serialize agent '{name}' within Flock: {e}",
|
|
@@ -144,6 +144,9 @@ async def htmx_run_flock(
|
|
|
144
144
|
|
|
145
145
|
form_data = await request.form()
|
|
146
146
|
start_agent_name = form_data.get("start_agent_name")
|
|
147
|
+
use_production_flag = str(
|
|
148
|
+
form_data.get("use_production_tools", "")
|
|
149
|
+
).lower() in {"true", "on", "1"}
|
|
147
150
|
|
|
148
151
|
if not start_agent_name:
|
|
149
152
|
logger.warning("HTMX Run (Regular): Starting agent not selected.")
|
|
@@ -204,7 +207,10 @@ async def htmx_run_flock(
|
|
|
204
207
|
)
|
|
205
208
|
|
|
206
209
|
result_data = await run_current_flock_service(
|
|
207
|
-
start_agent_name,
|
|
210
|
+
start_agent_name,
|
|
211
|
+
inputs,
|
|
212
|
+
request.app.state,
|
|
213
|
+
use_production_tools=use_production_flag,
|
|
208
214
|
)
|
|
209
215
|
|
|
210
216
|
raw_json_for_template = json.dumps(
|
|
@@ -250,9 +250,14 @@ async def run_current_flock_service(
|
|
|
250
250
|
start_agent_name: str,
|
|
251
251
|
inputs: dict[str, Any],
|
|
252
252
|
app_state: Any,
|
|
253
|
+
*,
|
|
254
|
+
use_production_tools: bool = False,
|
|
253
255
|
) -> dict[str, Any]:
|
|
254
256
|
"""Runs the specified agent from the current flock instance in app_state."""
|
|
255
|
-
logger.info(
|
|
257
|
+
logger.info(
|
|
258
|
+
f"Attempting to run agent: {start_agent_name} using flock from app_state.",
|
|
259
|
+
use_production_tools=use_production_tools,
|
|
260
|
+
)
|
|
256
261
|
|
|
257
262
|
current_flock: Flock | None = getattr(app_state, "flock_instance", None)
|
|
258
263
|
run_store: RunStore | None = getattr(app_state, "run_store", None)
|
|
@@ -281,7 +286,10 @@ async def run_current_flock_service(
|
|
|
281
286
|
logger.info(f"Executing agent '{start_agent_name}' from flock '{current_flock.name}' using app_state.")
|
|
282
287
|
# Direct execution using the flock from app_state
|
|
283
288
|
result = await current_flock.run_async(
|
|
284
|
-
start_agent=start_agent_name,
|
|
289
|
+
start_agent=start_agent_name,
|
|
290
|
+
input=inputs,
|
|
291
|
+
box_result=False,
|
|
292
|
+
use_production_tools=use_production_tools,
|
|
285
293
|
)
|
|
286
294
|
# Store run details using the run_store from app_state
|
|
287
295
|
if hasattr(run_store, "add_run_details"): # Check if RunStore has this method
|
{flock_core-0.4.532 → flock_core-0.4.533}/src/flock/webapp/templates/partials/_execution_form.html
RENAMED
|
@@ -34,6 +34,15 @@
|
|
|
34
34
|
<progress indeterminate></progress> Loading input form...
|
|
35
35
|
</div>
|
|
36
36
|
|
|
37
|
+
<fieldset style="margin-top: 1rem;">
|
|
38
|
+
<label style="display: flex; gap: 0.5rem; align-items: center;">
|
|
39
|
+
<input type="checkbox" name="use_production_tools" value="true"
|
|
40
|
+
@change="if ($event.target.checked && !confirm('Use production tool set? These calls may access live systems.')) { $event.target.checked = false; }">
|
|
41
|
+
<span>Use production tool set</span>
|
|
42
|
+
</label>
|
|
43
|
+
<small>Production tools may connect to live services.</small>
|
|
44
|
+
</fieldset>
|
|
45
|
+
|
|
37
46
|
<button type="submit" {% if not flock.agents %}disabled{% endif %}>Run Flock</button>
|
|
38
47
|
<div id="share-agent-link-container" style="margin-top: 0.5rem;">
|
|
39
48
|
<a href="#" id="shareAgentHtmxLink" hx-post="{{ url_for('htmx_generate_share_link') }}"
|
|
@@ -115,4 +124,4 @@
|
|
|
115
124
|
// If there are other unrelated JavaScript functions in this script block,
|
|
116
125
|
// they would remain.
|
|
117
126
|
});
|
|
118
|
-
</script>
|
|
127
|
+
</script>
|
|
@@ -6,7 +6,11 @@ from opentelemetry import trace
|
|
|
6
6
|
from temporalio import activity
|
|
7
7
|
|
|
8
8
|
from flock.core.context.context import FlockContext
|
|
9
|
-
from flock.core.context.context_vars import
|
|
9
|
+
from flock.core.context.context_vars import (
|
|
10
|
+
FLOCK_CURRENT_AGENT,
|
|
11
|
+
FLOCK_MODEL,
|
|
12
|
+
FLOCK_USE_PRODUCTION_TOOLS,
|
|
13
|
+
)
|
|
10
14
|
from flock.core.flock_agent import FlockAgent
|
|
11
15
|
from flock.core.flock_registry import get_registry
|
|
12
16
|
from flock.core.flock_router import HandOffRequest
|
|
@@ -64,7 +68,19 @@ async def run_agent(context: FlockContext) -> dict:
|
|
|
64
68
|
with tracer.start_as_current_span("execute_agent") as exec_span:
|
|
65
69
|
logger.info("Executing agent", agent=agent.name)
|
|
66
70
|
try:
|
|
67
|
-
|
|
71
|
+
use_prod_tools = bool(
|
|
72
|
+
context.get_variable(
|
|
73
|
+
FLOCK_USE_PRODUCTION_TOOLS, False
|
|
74
|
+
)
|
|
75
|
+
)
|
|
76
|
+
exec_span.set_attribute(
|
|
77
|
+
"tools.selection",
|
|
78
|
+
"production" if use_prod_tools else "dev",
|
|
79
|
+
)
|
|
80
|
+
result = await agent.run_async(
|
|
81
|
+
agent_inputs,
|
|
82
|
+
use_production_tools=use_prod_tools,
|
|
83
|
+
)
|
|
68
84
|
exec_span.set_attribute("result", str(result))
|
|
69
85
|
logger.debug(
|
|
70
86
|
"Agent execution completed", agent=agent.name
|
|
@@ -10,7 +10,10 @@ from temporalio import activity
|
|
|
10
10
|
# Third-party imports only within activity functions if needed, or pass context
|
|
11
11
|
# For core flock types, import directly
|
|
12
12
|
from flock.core.context.context import FlockContext
|
|
13
|
-
from flock.core.context.context_vars import
|
|
13
|
+
from flock.core.context.context_vars import (
|
|
14
|
+
FLOCK_MODEL,
|
|
15
|
+
FLOCK_USE_PRODUCTION_TOOLS,
|
|
16
|
+
)
|
|
14
17
|
from flock.core.flock_agent import FlockAgent # Import concrete class if needed
|
|
15
18
|
from flock.core.flock_registry import get_registry
|
|
16
19
|
from flock.core.flock_router import HandOffRequest
|
|
@@ -78,8 +81,17 @@ async def execute_single_agent(agent_name: str, context: FlockContext) -> dict:
|
|
|
78
81
|
)
|
|
79
82
|
|
|
80
83
|
try:
|
|
84
|
+
use_prod_tools = bool(
|
|
85
|
+
context.get_variable(FLOCK_USE_PRODUCTION_TOOLS, False)
|
|
86
|
+
)
|
|
87
|
+
span.set_attribute(
|
|
88
|
+
"tools.selection",
|
|
89
|
+
"production" if use_prod_tools else "dev",
|
|
90
|
+
)
|
|
81
91
|
# Execute just this agent
|
|
82
|
-
result = await agent.run_async(
|
|
92
|
+
result = await agent.run_async(
|
|
93
|
+
agent_inputs, use_production_tools=use_prod_tools
|
|
94
|
+
)
|
|
83
95
|
# Avoid logging potentially large results directly to span attributes
|
|
84
96
|
result_str = str(result)
|
|
85
97
|
span.set_attribute("result.type", type(result).__name__)
|