flock-core 0.4.0b50__tar.gz → 0.4.1__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.1/.github/ISSUE_TEMPLATE/bug_report.yaml +27 -0
- flock_core-0.4.1/.github/ISSUE_TEMPLATE/documentation_improvement.yaml +17 -0
- flock_core-0.4.1/.github/ISSUE_TEMPLATE/feature_request.yaml +29 -0
- flock_core-0.4.1/.github/ISSUE_TEMPLATE/question_support_request.yaml +17 -0
- flock_core-0.4.1/.github/ISSUE_TEMPLATE/vulnerability_report.md +35 -0
- flock_core-0.4.1/.github/PULL_REQUEST_TEMPLATE.md +30 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.vscode/launch.json +2 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/PKG-INFO +6 -4
- {flock_core-0.4.0b50 → flock_core-0.4.1}/README.md +2 -2
- flock_core-0.4.1/docs/core-concepts/di.md +153 -0
- flock_core-0.4.1/docs/wd-di.md +108 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/pyproject.toml +4 -2
- flock_core-0.4.1/src/flock/adapter/__init__.py +14 -0
- flock_core-0.4.1/src/flock/adapter/azure_adapter.py +68 -0
- flock_core-0.4.1/src/flock/adapter/chroma_adapter.py +73 -0
- flock_core-0.4.1/src/flock/adapter/faiss_adapter.py +97 -0
- flock_core-0.4.1/src/flock/adapter/pinecone_adapter.py +51 -0
- flock_core-0.4.1/src/flock/adapter/vector_base.py +47 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/config.py +1 -1
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/context/context.py +20 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/flock.py +71 -91
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/flock_agent.py +58 -3
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/flock_module.py +5 -0
- flock_core-0.4.1/src/flock/di.py +41 -0
- flock_core-0.4.1/src/flock/modules/enterprise_memory/README.md +99 -0
- flock_core-0.4.1/src/flock/modules/enterprise_memory/enterprise_memory_module.py +526 -0
- flock_core-0.4.1/src/flock/modules/mem0/mem0_module.py +126 -0
- flock_core-0.4.1/src/flock/modules/mem0_async/async_mem0_module.py +126 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/memory/memory_module.py +28 -8
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/performance/metrics_module.py +24 -1
- flock_core-0.4.1/src/flock/modules/zep/__init__.py +1 -0
- flock_core-0.4.1/src/flock/modules/zep/zep_module.py +192 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/api/execution.py +79 -2
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/chat.py +83 -3
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/services/sharing_models.py +38 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/services/sharing_store.py +60 -1
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/static/css/chat.css +2 -0
- flock_core-0.4.1/src/flock/webapp/templates/partials/_chat_messages.html +59 -0
- flock_core-0.4.1/src/flock/webapp/templates/partials/_results_display.html +78 -0
- flock_core-0.4.1/tests/modules/test_enterprise_memory_store.py +48 -0
- flock_core-0.4.1/tests/modules/test_vector_adapters.py +40 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/uv.lock +32 -5
- flock_core-0.4.0b50/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -27
- flock_core-0.4.0b50/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -29
- flock_core-0.4.0b50/.github/ISSUE_TEMPLATE/vulnerability_report.md +0 -85
- flock_core-0.4.0b50/.github/PULL_REQUEST_TEMPLATE.yaml +0 -45
- flock_core-0.4.0b50/main.md +0 -54
- flock_core-0.4.0b50/src/flock/modules/mem0/mem0_module.py +0 -63
- flock_core-0.4.0b50/src/flock/modules/mem0graph/mem0_graph_module.py +0 -63
- flock_core-0.4.0b50/src/flock/webapp/templates/partials/_chat_messages.html +0 -13
- flock_core-0.4.0b50/src/flock/webapp/templates/partials/_results_display.html +0 -39
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.env_template +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.gitignore +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.gitmodules +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.vscode/settings.json +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/.vscode/tasks.json +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/CODE_OF_CONDUCT.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/CONTRIBUTING.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/LICENSE +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/SECURITY.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/about/changelog.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/about/contributing.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/drawio/architecture.drawio +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/flock.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/getting-started/first_agent_00.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/hummingbird.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/icon.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/logo.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/memory_concepts.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/memory_flow.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/assets/images/memory_flow_chart.png +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/components/evaluators.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/components/index.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/components/modules.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/components/tools.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/core-concepts/agents.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/core-concepts/declarative.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/core-concepts/index.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/core-concepts/workflows.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/deployment/index.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/deployment/temporal.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/getting-started/concepts.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/getting-started/configuration.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/getting-started/index.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/getting-started/installation.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/getting-started/quickstart.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/guides/chaining-agents.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/guides/custom-endpoints.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/guides/index.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/guides/temporal-configuration.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/index.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/interacting-with-flock/cli-tool.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/interacting-with-flock/index.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/interacting-with-flock/interactive-cli.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/interacting-with-flock/programmatic.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/interacting-with-flock/rest-api.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/interacting-with-flock/web-ui.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/reference/flock_agent.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/reference/index.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/release-notes/magpie.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/mkdocs.yml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/requirements.txt +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/scripts/code_collector.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/scripts/create_docs.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/scripts/ensure_uv.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/assets/release_notes.md +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/config.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/constants.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/execute_flock.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/load_release_notes.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/loaded_flock_cli.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/manage_agents.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/registry_management.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/runner.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/settings.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/utils.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/view_results.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/cli/yaml_editor.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/custom_endpoint.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/endpoints.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/main.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/models.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/run_store.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/runner.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/service.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/ui/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/ui/routes.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/api/ui/utils.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/context/context_manager.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/context/context_vars.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/evaluation/utils.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/execution/batch_executor.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/execution/evaluation_executor.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/flock_evaluator.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/flock_factory.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/flock_registry.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/flock_router.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/interpreter/python_interpreter.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/formatters/themes.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/logging.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/telemetry.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/mixin/dspy_integration.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/serialization/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/serialization/callable_registry.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/serialization/flock_serializer.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/serialization/json_encoder.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/serialization/secure_serializer.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/serialization/serializable.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/serialization/serialization_utils.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/util/cli_helper.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/util/file_path_utils.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/util/loader.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/core/util/spliter.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/evaluators/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/evaluators/declarative/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/evaluators/test/test_case_evaluator.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/assertion/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/assertion/assertion_module.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/callback/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/callback/callback_module.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/mem0/__init__.py +0 -0
- {flock_core-0.4.0b50/src/flock/modules/mem0graph → flock_core-0.4.1/src/flock/modules/mem0_async}/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/memory/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/memory/memory_parser.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/memory/memory_storage.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/output/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/output/output_module.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/modules/performance/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/agent/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/agent/agent_router.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/agent/handoff_agent.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/conditional/conditional_router.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/default/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/default/default_router.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/feedback/feedback_router.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/list_generator/list_generator_router.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/llm/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/routers/llm/llm_router.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/django.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/github.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/material.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/square.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/azure_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/code_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/file_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/github_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/markdown_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/system_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/text_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/web_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/tools/zendesk_tools.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/api/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/api/agent_management.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/api/flock_management.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/api/registry_viewer.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/config.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/dependencies.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/main.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/models_ui.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/services/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/services/flock_service.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/templates/theme_mapper.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/theme_mapper.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/app/utils.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/run.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/static/css/components.css +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/static/css/header.css +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/static/css/layout.css +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/static/css/sidebar.css +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/base.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/chat.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/chat_settings.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/flock_editor.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/index.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_agent_detail_form.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_agent_list.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_agent_manager_view.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_agent_tools_checklist.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_chat_container.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_chat_settings_form.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_create_flock_form.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_env_vars_table.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_execution_form.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_execution_view_container.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_flock_file_list.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_flock_properties_form.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_flock_upload_form.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_header_flock_status.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_load_manager_view.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_registry_table.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_registry_viewer_content.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_settings_env_content.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_settings_theme_content.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_settings_view.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_share_link_snippet.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_sidebar.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_structured_data_view.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/partials/_theme_preview.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/registry_viewer.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/webapp/templates/shared_run_page.html +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/workflow/activities.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/workflow/agent_execution_activity.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/workflow/flock_workflow.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/workflow/temporal_config.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/api/test_custom_endpoints.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/core/test_flock_batch.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/core/test_flock_core.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/serialization/__init__.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/serialization/test_enhanced_serialization.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/serialization/test_file_path_serialization.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/serialization/test_flock_serializer.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/serialization/test_nested_serialization.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/serialization/test_yaml_serialization.py +0 -0
- {flock_core-0.4.0b50 → flock_core-0.4.1}/tests/tools/test_zendesk_tools.py +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: 🐞 Bug Report
|
|
2
|
+
description: File a Bug Report to help us improve
|
|
3
|
+
title: "🐞 [BUG] <title>"
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
attributes:
|
|
8
|
+
label: Describe the bug
|
|
9
|
+
description: A clear and concise description of what the bug is.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
attributes:
|
|
14
|
+
label: To Reproduce
|
|
15
|
+
description: Describe how to reproduce the bug.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
attributes:
|
|
20
|
+
label: Expected behavior
|
|
21
|
+
description: A clear and concise description of what you expected to happen.
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
- type: textarea
|
|
25
|
+
attributes:
|
|
26
|
+
label: Screenshots/Logs
|
|
27
|
+
description: If applicable, add screenshots and console output to help explain your problem. (You can drag and drop files here).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: 📚 Documentation Improvement
|
|
2
|
+
description: Suggest improvements or report issues in the documentation
|
|
3
|
+
title: "📚 [DOCS] <title>"
|
|
4
|
+
labels: ["documentation"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
attributes:
|
|
8
|
+
label: What is unclear or incorrect?
|
|
9
|
+
description: Describe the issue or suggestion for improvement.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
attributes:
|
|
14
|
+
label: Suggested improvement
|
|
15
|
+
description: How could the documentation be improved?
|
|
16
|
+
validations:
|
|
17
|
+
required: false
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: 🆕 Feature Request
|
|
2
|
+
description: Suggest an idea for this project
|
|
3
|
+
title: "🆕 [FEATURE] <title>"
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
attributes:
|
|
8
|
+
label: Is your feature request related to a problem?
|
|
9
|
+
description: Please describe. A clear and concise description of what the problem is.
|
|
10
|
+
validations:
|
|
11
|
+
required: false
|
|
12
|
+
- type: textarea
|
|
13
|
+
attributes:
|
|
14
|
+
label: Describe the solution you want to see
|
|
15
|
+
description: A clear and concise description of what you want to happen.
|
|
16
|
+
validations:
|
|
17
|
+
required: false
|
|
18
|
+
- type: textarea
|
|
19
|
+
attributes:
|
|
20
|
+
label: Describe alternatives you have considered
|
|
21
|
+
description: A clear and concise description of any alternative solutions or features you have considered.
|
|
22
|
+
validations:
|
|
23
|
+
required: false
|
|
24
|
+
- type: textarea
|
|
25
|
+
attributes:
|
|
26
|
+
label: Additional context
|
|
27
|
+
description: Add any other context or code snippets about the feature request here.
|
|
28
|
+
validations:
|
|
29
|
+
required: false
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: ❓ Question
|
|
2
|
+
description: Ask a question or request support
|
|
3
|
+
title: "❓ [QUESTION] <title>"
|
|
4
|
+
labels: ["question"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
attributes:
|
|
8
|
+
label: Your question
|
|
9
|
+
description: Please describe your question as clearly as possible.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
attributes:
|
|
14
|
+
label: Context
|
|
15
|
+
description: Add any relevant context, code examples, or screenshots.
|
|
16
|
+
validations:
|
|
17
|
+
required: false
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: 🚨 Security Vulnerability
|
|
2
|
+
description: Report a security vulnerability
|
|
3
|
+
title: "🚨 [SECURITY] <title>"
|
|
4
|
+
labels: ["security"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
attributes:
|
|
8
|
+
label: Vulnerability description
|
|
9
|
+
description: Please describe the vulnerability in detail.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
attributes:
|
|
14
|
+
label: Steps to reproduce
|
|
15
|
+
description: How can we reproduce the vulnerability?
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
attributes:
|
|
20
|
+
label: Impact
|
|
21
|
+
description: What is the potential impact of this vulnerability?
|
|
22
|
+
validations:
|
|
23
|
+
required: false
|
|
24
|
+
- type: textarea
|
|
25
|
+
attributes:
|
|
26
|
+
label: Suggested mitigation
|
|
27
|
+
description: Do you have any suggestions for how to fix this?
|
|
28
|
+
validations:
|
|
29
|
+
required: false
|
|
30
|
+
- type: textarea
|
|
31
|
+
attributes:
|
|
32
|
+
label: Additional context
|
|
33
|
+
description: Any other information you want to share?
|
|
34
|
+
validations:
|
|
35
|
+
required: false
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
## 🔄 Pull Request
|
|
2
|
+
|
|
3
|
+
### Describe your Pull Request
|
|
4
|
+
A clear and concise description of what the Pull Request is about.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
### Is there an existing issue for this?
|
|
9
|
+
- [ ] Existing Issue
|
|
10
|
+
|
|
11
|
+
If yes, please specify:
|
|
12
|
+
|
|
13
|
+
**Label/Name of the existing issue (if applicable):**
|
|
14
|
+
<!-- Write here -->
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
### Please select relevant options:
|
|
19
|
+
- [ ] Bug fix (non-breaking change which fixes an issue)
|
|
20
|
+
- [ ] New feature (non-breaking change which adds functionality)
|
|
21
|
+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
|
22
|
+
- [ ] Documentation Improvement
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
### Checklist
|
|
27
|
+
- [ ] My code follows the style guidelines of this project
|
|
28
|
+
- [ ] I have made corresponding changes to the documentation
|
|
29
|
+
- [ ] I have added tests that prove my fix is effective or that my feature works
|
|
30
|
+
- [ ] I have checked my code and corrected any misspellings
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
"type": "debugpy",
|
|
7
7
|
"request": "launch",
|
|
8
8
|
"justMyCode": false,
|
|
9
|
+
"subProcess": true,
|
|
9
10
|
"program": "${file}",
|
|
10
11
|
"console": "integratedTerminal"
|
|
11
12
|
},
|
|
12
13
|
{
|
|
13
14
|
"name": "Attach to debugpy",
|
|
14
15
|
"type": "python",
|
|
16
|
+
"subProcess": true,
|
|
15
17
|
"request": "attach",
|
|
16
18
|
"connect": {
|
|
17
19
|
"host": "localhost",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -21,7 +21,7 @@ Requires-Dist: litellm==1.69.3
|
|
|
21
21
|
Requires-Dist: loguru>=0.7.3
|
|
22
22
|
Requires-Dist: markdown2>=2.5.3
|
|
23
23
|
Requires-Dist: matplotlib>=3.10.0
|
|
24
|
-
Requires-Dist: mem0ai[graph]>=0.1.
|
|
24
|
+
Requires-Dist: mem0ai[graph]>=0.1.101
|
|
25
25
|
Requires-Dist: msgpack>=1.1.0
|
|
26
26
|
Requires-Dist: notion-client>=2.3.0
|
|
27
27
|
Requires-Dist: openai==1.75.0
|
|
@@ -50,6 +50,8 @@ Requires-Dist: tiktoken>=0.8.0
|
|
|
50
50
|
Requires-Dist: toml>=0.10.2
|
|
51
51
|
Requires-Dist: tqdm>=4.67.1
|
|
52
52
|
Requires-Dist: uvicorn>=0.34.0
|
|
53
|
+
Requires-Dist: wd-di>=0.2.14
|
|
54
|
+
Requires-Dist: zep-python>=2.0.2
|
|
53
55
|
Provides-Extra: all-tools
|
|
54
56
|
Requires-Dist: azure-identity>=1.23.0; extra == 'all-tools'
|
|
55
57
|
Requires-Dist: azure-search-documents>=11.5.2; extra == 'all-tools'
|
|
@@ -91,7 +93,7 @@ Description-Content-Type: text/markdown
|
|
|
91
93
|
|
|
92
94
|
🐤 `pip install flock-core` will install the latest non-beta version 🐤
|
|
93
95
|
|
|
94
|
-
🐤
|
|
96
|
+
🐤 The 0.4.0 Magpie release is in the works! 🐤
|
|
95
97
|
|
|
96
98
|
---
|
|
97
99
|
|
|
@@ -296,7 +298,7 @@ Flock makes this easy with:
|
|
|
296
298
|
* **Declarative Configuration:** Define Temporal timeouts, retry policies, and task queues directly within your `Flock` and `FlockAgent` configurations (YAML or Python).
|
|
297
299
|
* **Correct Patterns:** Uses Temporal's recommended granular activity execution for better control and visibility.
|
|
298
300
|
* **Clear Worker Separation:** Provides guidance and flags for running dedicated Temporal workers, separating development convenience from production best practices.
|
|
299
|
-
|
|
301
|
+
|
|
300
302
|
Visit the [Temporal Documentation](https://learn.temporal.io/python/workflows/) for more information on how to use Temporal.
|
|
301
303
|
|
|
302
304
|
Or check out the [Flock Showcase](https://github.com/whiteducksoftware/flock-showcase) for a complete example of a Flock that uses Temporal or our [docs](https://whiteducksoftware.github.io/flock/guides/temporal-configuration/) for more information.
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
🐤 `pip install flock-core` will install the latest non-beta version 🐤
|
|
19
19
|
|
|
20
|
-
🐤
|
|
20
|
+
🐤 The 0.4.0 Magpie release is in the works! 🐤
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -222,7 +222,7 @@ Flock makes this easy with:
|
|
|
222
222
|
* **Declarative Configuration:** Define Temporal timeouts, retry policies, and task queues directly within your `Flock` and `FlockAgent` configurations (YAML or Python).
|
|
223
223
|
* **Correct Patterns:** Uses Temporal's recommended granular activity execution for better control and visibility.
|
|
224
224
|
* **Clear Worker Separation:** Provides guidance and flags for running dedicated Temporal workers, separating development convenience from production best practices.
|
|
225
|
-
|
|
225
|
+
|
|
226
226
|
Visit the [Temporal Documentation](https://learn.temporal.io/python/workflows/) for more information on how to use Temporal.
|
|
227
227
|
|
|
228
228
|
Or check out the [Flock Showcase](https://github.com/whiteducksoftware/flock-showcase) for a complete example of a Flock that uses Temporal or our [docs](https://whiteducksoftware.github.io/flock/guides/temporal-configuration/) for more information.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Dependency Injection in Flock
|
|
2
|
+
|
|
3
|
+
> *New in 0.6* — Flock ships with a first-class integration for the [`wd.di`](https://pypi.org/project/wd.di/) service-container.
|
|
4
|
+
>
|
|
5
|
+
> The feature is **completely optional**: existing projects continue to run if you ignore it. But once you taste constructor injection, you will never want to go back to hand-rolled singletons.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1 Why DI?
|
|
10
|
+
|
|
11
|
+
1. **Reuse expensive resources**
|
|
12
|
+
Most agents and modules need an embedding model, a vector store, a logger, …
|
|
13
|
+
The container guarantees a *single* instance per run (or per request) without global variables.
|
|
14
|
+
2. **Constructor injection**
|
|
15
|
+
Dependencies are spelled out in the `__init__()` signature – no more `from … import SOME_GLOBAL`.
|
|
16
|
+
3. **Testability**
|
|
17
|
+
Replace real services with fakes in one line:
|
|
18
|
+
```python
|
|
19
|
+
sc.add_singleton(S3Client, FakeS3Client())
|
|
20
|
+
```
|
|
21
|
+
4. **Middleware**
|
|
22
|
+
Cross-cutting concerns such as tracing, error handling or retries are just pipeline components.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2 Bootstrapping a container
|
|
27
|
+
|
|
28
|
+
Create and fill a `ServiceCollection` *once* at the beginning of a run — usually in your CLI entry-point or notebook.
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
from wd.di import ServiceCollection
|
|
32
|
+
from flock.modules.performance.metrics_module import MetricsModule
|
|
33
|
+
from flock.core.logging.logging import get_logger
|
|
34
|
+
|
|
35
|
+
sc = ServiceCollection()
|
|
36
|
+
|
|
37
|
+
# 1. Register concrete instances
|
|
38
|
+
sc.add_singleton(MetricsModule())
|
|
39
|
+
sc.add_singleton(get_logger("run"))
|
|
40
|
+
|
|
41
|
+
# 2. Register types – the container will build them on demand
|
|
42
|
+
from sentence_transformers import SentenceTransformer
|
|
43
|
+
sc.add_singleton(SentenceTransformer) # 👈 singleton lifetime
|
|
44
|
+
|
|
45
|
+
# 3. Build the provider (immutable after this call)
|
|
46
|
+
container = sc.build()
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Attach the container to the **runtime context** so that every component can reach it:
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from flock.core.context.context import FlockContext
|
|
53
|
+
ctx = FlockContext()
|
|
54
|
+
ctx.set_variable("di.container", container)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
If you do not have the context at bootstrap time (e.g. inside `agent.run()`), store the container in a global and copy it into the context later. The key name `di.container` is conventional.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 3 Resolving services
|
|
62
|
+
|
|
63
|
+
### 3.1 Inside modules / agents
|
|
64
|
+
|
|
65
|
+
Call the convenience helper that was added to `FlockContext`:
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
logger = context.resolve(Logger)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
It returns `None` if no container is attached or the type is not registered, making the call safe in older projects.
|
|
72
|
+
|
|
73
|
+
### 3.2 Anywhere else
|
|
74
|
+
|
|
75
|
+
Import the tiny wrapper shipped in `flock.di`:
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
from flock.di import get_current_container
|
|
79
|
+
|
|
80
|
+
container = get_current_container(context)
|
|
81
|
+
embedding_model = container.get_service(SentenceTransformer)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 4 Using middleware
|
|
87
|
+
|
|
88
|
+
The `wd.di` package comes with a lightweight **`MiddlewarePipeline`**. When you register one as a singleton, Flock will automatically wrap evaluator execution:
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
from wd.di.middleware_di import create_application_builder
|
|
92
|
+
from wd.di.middleware import LoggingMiddleware, ExceptionHandlerMiddleware
|
|
93
|
+
|
|
94
|
+
builder = create_application_builder(sc) # sc is your ServiceCollection
|
|
95
|
+
builder.configure_middleware(
|
|
96
|
+
lambda m: (
|
|
97
|
+
m.use_middleware(ExceptionHandlerMiddleware)
|
|
98
|
+
.use_middleware(LoggingMiddleware) # <- your own too!
|
|
99
|
+
)
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
container = builder.build() # replaces sc.build()
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Each middleware receives `(context, next)` where *context* is the **current FlockContext**. You can therefore obtain scoped services, record traces, short-circuit execution, etc.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 5 Gradual refactoring pattern
|
|
110
|
+
|
|
111
|
+
1. **Accept an optional container** in your module constructor:
|
|
112
|
+
```python
|
|
113
|
+
def __init__(self, name: str, config: MyConfig, *, container=None):
|
|
114
|
+
super().__init__(name=name, config=config)
|
|
115
|
+
self._metrics = (container or Default()).get_service(MetricsModule)
|
|
116
|
+
```
|
|
117
|
+
2. **Resolve shared services** instead of calling module globals.
|
|
118
|
+
3. **Fallback** to the current "global" singletons to stay backward compatible.
|
|
119
|
+
4. Migrate call-sites one by one.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 6 Testing with DI
|
|
124
|
+
|
|
125
|
+
Creating an isolated container inside your pytest fixtures is easy:
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
import pytest
|
|
129
|
+
from wd.di import ServiceCollection
|
|
130
|
+
from flock.modules.performance.metrics_module import MetricsModule
|
|
131
|
+
|
|
132
|
+
@pytest.fixture()
|
|
133
|
+
def di_container():
|
|
134
|
+
sc = ServiceCollection()
|
|
135
|
+
sc.add_singleton(MetricsModule, FakeMetricsModule())
|
|
136
|
+
return sc.build()
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Pass the fixture to your SUT and you never have to monkey-patch again.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 7 FAQ
|
|
144
|
+
|
|
145
|
+
**Does it work without `wd.di` installed?** Yes. Flock guards every optional import so your code still runs.
|
|
146
|
+
|
|
147
|
+
**Can I have per-request lifetimes?** Absolutely. Just call `container.create_scope()` before the request, store the scoped provider under the `di.container` key for the duration and dispose it afterwards.
|
|
148
|
+
|
|
149
|
+
**Will the registry go away?** No. The registry continues to handle *serialization* and *lookup by name*. DI is about *instantiation* and *lifetimes*.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
Happy wiring! 🚀
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Proposal: Integrating `wd.di` Into Flock
|
|
2
|
+
|
|
3
|
+
## 1 Background
|
|
4
|
+
The current `FlockRegistry` solves *discovery* and *serialization*:
|
|
5
|
+
* maps names ↔️ Agent / Module / Router / Evaluator classes
|
|
6
|
+
* keeps a cache of callables & types for JSON / YAML (de)serialization
|
|
7
|
+
|
|
8
|
+
What it **does not** try to solve:
|
|
9
|
+
* lifetime-controlled instantiation of shared services (e.g. embedding model)
|
|
10
|
+
* constructor / property injection
|
|
11
|
+
* request-scoped objects
|
|
12
|
+
* middleware cross-cutting concerns.
|
|
13
|
+
|
|
14
|
+
The in-house package located at `.flock/wd-di/src/wd/di` already implements a
|
|
15
|
+
robust DI container inspired by ASP.NET:
|
|
16
|
+
* `ServiceCollection` ➜ registration DSL
|
|
17
|
+
* `Container` ➜ resolver with Singleton / Scoped / Transient lifetimes
|
|
18
|
+
* Middleware pipeline with scoped injection
|
|
19
|
+
* YAML-backed config binder (optional)
|
|
20
|
+
|
|
21
|
+
Pairing that with Flock yields cleaner construction and resource reuse while
|
|
22
|
+
leaving backward compatibility intact.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
## 2 Why keep the Registry?
|
|
26
|
+
`FlockRegistry` is tightly coupled to serialization. Replacing it would break
|
|
27
|
+
existing save-/load flows, YAML configs, and inter-component look-ups by name.
|
|
28
|
+
Therefore **both systems should coexist**:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
┌─────────────┐ ┌──────────────┐
|
|
32
|
+
Agent ⇆──▶│ Registry │ │ DI Container│
|
|
33
|
+
└─────────────┘◀────────┴──────────────┘
|
|
34
|
+
▲ names ▲ types
|
|
35
|
+
└───────────────────────────┘
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
## 3 Migration sketch
|
|
40
|
+
|
|
41
|
+
1. **Bootstrap a container per run**
|
|
42
|
+
In `flock.core.context.initialize_context` (or new helper):
|
|
43
|
+
|
|
44
|
+
```python
|
|
45
|
+
from wd.di import ServiceCollection
|
|
46
|
+
|
|
47
|
+
sc = ServiceCollection()
|
|
48
|
+
sc.add_singleton(MetricsModule()) # attach a metrics collector
|
|
49
|
+
sc.add_singleton(lambda: get_logger("run"))
|
|
50
|
+
sc.add_singleton(trace.get_tracer("flock"))
|
|
51
|
+
|
|
52
|
+
# Share embedding model across modules if desired
|
|
53
|
+
for module in agent.get_enabled_modules():
|
|
54
|
+
sc.add_singleton(type(module), module)
|
|
55
|
+
|
|
56
|
+
container = sc.build()
|
|
57
|
+
run_context.set_variable("di.container", container)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
2. **Helper for resolution**
|
|
61
|
+
Add to `FlockContext`:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
def resolve(self, svc_type):
|
|
65
|
+
container = self.get_variable("di.container")
|
|
66
|
+
return container.resolve(svc_type) if container else None
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
3. **Gradual module refactor**
|
|
70
|
+
*Example* (EnterpriseMemoryModule constructor):
|
|
71
|
+
```python
|
|
72
|
+
def __init__(self, name: str, config: Config, container=None):
|
|
73
|
+
super().__init__(name=name, config=config)
|
|
74
|
+
self.metrics = (container or Default()).resolve(MetricsModule) # fallback
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
4. **Middleware pipeline (optional)**
|
|
78
|
+
Build an onion around evaluator execution:
|
|
79
|
+
```python
|
|
80
|
+
async def evaluator_middleware(next, ctx):
|
|
81
|
+
tracer = ctx.resolve(Tracer)
|
|
82
|
+
with tracer.start_as_current_span("evaluator"):
|
|
83
|
+
return await next()
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
5. **Testing**
|
|
87
|
+
Tests create a lightweight `ServiceCollection` and inject fakes, reducing
|
|
88
|
+
patching/monkey-patching need.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
## 4 Immediate tasks
|
|
92
|
+
1. Add `wd.di` to `pyproject.toml` as optional extra.
|
|
93
|
+
2. Create `flock.di` thin wrapper exposing `get_current_container()` helper.
|
|
94
|
+
3. Update EnterpriseMemoryModule to accept an optional container and resolve
|
|
95
|
+
MetricsModule instead of static call (maintain the static fallback).
|
|
96
|
+
4. Document the pattern in `docs/components/di.md`.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
## 5 Long-term improvements
|
|
100
|
+
* Replace ad-hoc singletons (embedding cache, adapters) with DI singletons.
|
|
101
|
+
* Use scoped lifetimes for per-run data (OpenAI usage counters, run metadata).
|
|
102
|
+
* Enable declarative middleware in YAML/JSON Flock configs.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
## 6 Verdict
|
|
106
|
+
Integrating `wd.di` **adds value** without disrupting existing workflows. It
|
|
107
|
+
should be adopted as an *internal service container* while the Registry
|
|
108
|
+
continues to serve serialization/discovery needs.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "flock-core"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.1"
|
|
4
4
|
description = "Declarative LLM Orchestration at Scale"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -52,9 +52,11 @@ dependencies = [
|
|
|
52
52
|
"toml>=0.10.2",
|
|
53
53
|
"tqdm>=4.67.1",
|
|
54
54
|
"uvicorn>=0.34.0",
|
|
55
|
-
"mem0ai[graph]>=0.1.
|
|
55
|
+
"mem0ai[graph]>=0.1.101",
|
|
56
56
|
"aiosqlite>=0.21.0",
|
|
57
57
|
"markdown2>=2.5.3",
|
|
58
|
+
"wd-di>=0.2.14",
|
|
59
|
+
"zep-python>=2.0.2",
|
|
58
60
|
]
|
|
59
61
|
|
|
60
62
|
[project.optional-dependencies]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
"""Adapter package for pluggable vector-store back-ends.
|
|
4
|
+
|
|
5
|
+
Importing the package will NOT import heavy third-party clients by default –
|
|
6
|
+
individual adapters are only loaded when referenced explicitly.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from .vector_base import VectorAdapter, VectorHit
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"VectorAdapter",
|
|
13
|
+
"VectorHit",
|
|
14
|
+
]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from .vector_base import VectorAdapter, VectorHit
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class AzureSearchAdapter(VectorAdapter):
|
|
9
|
+
"""Adapter for Azure Cognitive Search vector capabilities."""
|
|
10
|
+
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
*,
|
|
14
|
+
endpoint: str,
|
|
15
|
+
key: str,
|
|
16
|
+
index_name: str,
|
|
17
|
+
embedding_field: str = "embedding",
|
|
18
|
+
) -> None:
|
|
19
|
+
super().__init__()
|
|
20
|
+
try:
|
|
21
|
+
from azure.core.credentials import AzureKeyCredential
|
|
22
|
+
from azure.search.documents import SearchClient
|
|
23
|
+
except ImportError as e:
|
|
24
|
+
raise RuntimeError("azure-search-documents package is required for AzureSearchAdapter") from e
|
|
25
|
+
|
|
26
|
+
self._client = SearchClient(
|
|
27
|
+
endpoint=endpoint,
|
|
28
|
+
index_name=index_name,
|
|
29
|
+
credential=AzureKeyCredential(key),
|
|
30
|
+
)
|
|
31
|
+
self._embedding_field = embedding_field
|
|
32
|
+
|
|
33
|
+
# -----------------------------
|
|
34
|
+
def add(
|
|
35
|
+
self,
|
|
36
|
+
*,
|
|
37
|
+
id: str,
|
|
38
|
+
content: str,
|
|
39
|
+
embedding: list[float],
|
|
40
|
+
metadata: dict[str, Any] | None = None,
|
|
41
|
+
) -> None:
|
|
42
|
+
document = {
|
|
43
|
+
"id": id,
|
|
44
|
+
"content": content,
|
|
45
|
+
self._embedding_field: embedding,
|
|
46
|
+
**(metadata or {}),
|
|
47
|
+
}
|
|
48
|
+
# Upload is sync but returns iterator; consume to check errors
|
|
49
|
+
list(self._client.upload_documents(documents=[document]))
|
|
50
|
+
|
|
51
|
+
def query(self, *, embedding: list[float], k: int) -> list[VectorHit]:
|
|
52
|
+
results = self._client.search(
|
|
53
|
+
search_text=None,
|
|
54
|
+
vector=embedding,
|
|
55
|
+
k=k,
|
|
56
|
+
vector_fields=self._embedding_field,
|
|
57
|
+
)
|
|
58
|
+
hits: list[VectorHit] = []
|
|
59
|
+
for doc in results:
|
|
60
|
+
hits.append(
|
|
61
|
+
VectorHit(
|
|
62
|
+
id=doc["id"],
|
|
63
|
+
content=doc.get("content"),
|
|
64
|
+
metadata={k: v for k, v in doc.items() if k not in ("id", "content", self._embedding_field, "@search.score")},
|
|
65
|
+
score=doc["@search.score"],
|
|
66
|
+
)
|
|
67
|
+
)
|
|
68
|
+
return hits
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from .vector_base import VectorAdapter, VectorHit
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ChromaAdapter(VectorAdapter):
|
|
10
|
+
"""Adapter for Chroma vector DB (local or HTTP)."""
|
|
11
|
+
|
|
12
|
+
def __init__(
|
|
13
|
+
self,
|
|
14
|
+
*,
|
|
15
|
+
collection: str = "flock_memories",
|
|
16
|
+
host: str | None = None,
|
|
17
|
+
port: int = 8000,
|
|
18
|
+
path: str | None = "./vector_store",
|
|
19
|
+
) -> None:
|
|
20
|
+
super().__init__()
|
|
21
|
+
try:
|
|
22
|
+
import chromadb
|
|
23
|
+
from chromadb.config import Settings
|
|
24
|
+
except ImportError as e:
|
|
25
|
+
raise RuntimeError("chromadb is required for ChromaAdapter") from e
|
|
26
|
+
|
|
27
|
+
if host:
|
|
28
|
+
client = chromadb.HttpClient(host=host, port=port)
|
|
29
|
+
else:
|
|
30
|
+
p = Path(path or "./vector_store")
|
|
31
|
+
p.mkdir(parents=True, exist_ok=True)
|
|
32
|
+
client = chromadb.PersistentClient(settings=Settings(path=str(p)))
|
|
33
|
+
|
|
34
|
+
self._collection = client.get_or_create_collection(collection)
|
|
35
|
+
|
|
36
|
+
# -------------------------------
|
|
37
|
+
# VectorAdapter implementation
|
|
38
|
+
# -------------------------------
|
|
39
|
+
def add(
|
|
40
|
+
self,
|
|
41
|
+
*,
|
|
42
|
+
id: str,
|
|
43
|
+
content: str,
|
|
44
|
+
embedding: list[float],
|
|
45
|
+
metadata: dict[str, Any] | None = None,
|
|
46
|
+
) -> None:
|
|
47
|
+
self._collection.add(
|
|
48
|
+
ids=[id],
|
|
49
|
+
documents=[content],
|
|
50
|
+
embeddings=[embedding],
|
|
51
|
+
metadatas=[metadata or {}],
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
def query(self, *, embedding: list[float], k: int) -> list[VectorHit]:
|
|
55
|
+
res = self._collection.query(
|
|
56
|
+
query_embeddings=[embedding],
|
|
57
|
+
n_results=k,
|
|
58
|
+
include=["documents", "metadatas", "distances", "ids"],
|
|
59
|
+
)
|
|
60
|
+
hits: list[VectorHit] = []
|
|
61
|
+
if res and res["ids"]:
|
|
62
|
+
for idx in range(len(res["ids"][0])):
|
|
63
|
+
dist = res["distances"][0][idx]
|
|
64
|
+
score = 1 - dist # Convert L2 → similarity
|
|
65
|
+
hits.append(
|
|
66
|
+
VectorHit(
|
|
67
|
+
id=res["ids"][0][idx],
|
|
68
|
+
content=res["documents"][0][idx],
|
|
69
|
+
metadata=res["metadatas"][0][idx],
|
|
70
|
+
score=score,
|
|
71
|
+
)
|
|
72
|
+
)
|
|
73
|
+
return hits
|