flock-core 0.4.0b19__tar.gz → 0.4.0b20__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.0b19 → flock_core-0.4.0b20}/.gitignore +1 -2
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/PKG-INFO +32 -20
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/README.md +31 -19
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/pyproject.toml +1 -1
- flock_core-0.4.0b20/src/flock/cli/utils.py +135 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock.py +2 -3
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_factory.py +2 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/mixin/dspy_integration.py +16 -7
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/cli_helper.py +4 -2
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/declarative/declarative_evaluator.py +40 -6
- flock_core-0.4.0b20/src/flock/modules/output/output_module.py +194 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/uv.lock +1 -1
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.env_template +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.sesskey +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.vscode/launch.json +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.vscode/settings.json +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.vscode/tasks.json +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/LICENSE +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/about/changelog.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/about/contributing.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/drawio/architecture.drawio +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/flock.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/getting-started/first_agent_00.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/hummingbird.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/icon.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/logo.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/memory_concepts.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/memory_flow.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/memory_flow_chart.png +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/components/evaluators.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/components/index.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/components/modules.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/components/tools.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/core-concepts/agents.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/core-concepts/declarative.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/core-concepts/index.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/core-concepts/workflows.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/deployment/index.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/deployment/temporal.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/getting-started/configuration.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/getting-started/index.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/getting-started/installation.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/getting-started/quickstart.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/guides/chaining-agents.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/guides/index.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/index.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/cli-tool.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/index.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/interactive-cli.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/programmatic.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/rest-api.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/web-ui.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/reference/flock_agent.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/reference/index.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/release-notes/magpie.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/mkdocs.yml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/requirements.txt +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/scripts/code_collector.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/scripts/create_docs.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/assets/release_notes.md +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/config.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/constants.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/execute_flock.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/load_release_notes.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/loaded_flock_cli.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/manage_agents.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/registry_management.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/runner.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/settings.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/view_results.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/yaml_editor.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/config.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/endpoints.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/main.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/models.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/run_store.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/runner.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/ui/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/ui/routes.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/ui/utils.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/context/context.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/context/context_manager.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/context/context_vars.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/evaluation/utils.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/execution/batch_executor.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/execution/evaluation_executor.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_agent.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_evaluator.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_module.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_registry.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_router.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/interpreter/python_interpreter.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/formatters/themes.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/logging.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/telemetry.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/callable_registry.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/flock_serializer.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/json_encoder.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/secure_serializer.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/serializable.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/serialization_utils.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/azure_tools.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/basic_tools.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/dev_tools/github.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/llm_tools.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/markdown_tools.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/zendesk_tools.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/file_path_utils.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/loader.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/memory/azure_search_evaluator.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/natural_language/natural_language_evaluator.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/test/test_case_evaluator.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/azure-search/azure_search_module.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/callback/callback_module.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/memory/memory_module.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/memory/memory_parser.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/memory/memory_storage.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/performance/metrics_module.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/zep/zep_module.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/agent/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/agent/agent_router.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/agent/handoff_agent.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/default/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/default/default_router.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/llm/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/llm/llm_router.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/django.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/github.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/material.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/square.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/activities.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/workflow.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/core/test_flock_batch.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/core/test_flock_core.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/__init__.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_enhanced_serialization.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_file_path_serialization.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_flock_serializer.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_nested_serialization.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_yaml_serialization.py +0 -0
- {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/tools/test_zendesk_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.0b20
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -58,8 +58,6 @@ Requires-Dist: markdownify>=0.14.1; extra == 'tools'
|
|
|
58
58
|
Requires-Dist: tavily-python>=0.5.0; extra == 'tools'
|
|
59
59
|
Description-Content-Type: text/markdown
|
|
60
60
|
|
|
61
|
-
# 🚀 Flock: The Declarative AI Agent Framework 🚀
|
|
62
|
-
|
|
63
61
|
<p align="center">
|
|
64
62
|
<!-- Placeholder for your Flock Logo/Banner - Replace URL -->
|
|
65
63
|
<img alt="Flock Banner" src="https://raw.githubusercontent.com/whiteducksoftware/flock/master/docs/assets/images/flock.png" width="600">
|
|
@@ -95,20 +93,25 @@ Built with real-world deployment in mind, Flock integrates seamlessly with tools
|
|
|
95
93
|
|
|
96
94
|
Flock offers a different way to build agentic systems:
|
|
97
95
|
|
|
98
|
-
| Traditional Agent Frameworks 😟 | Flock Framework 🐤🐧🐓🦆
|
|
99
|
-
|
|
|
100
|
-
| 🤯 **Prompt Nightmare** | ✅ **Declarative Simplicity**
|
|
101
|
-
| *Long, brittle, hard-to-tune prompts*
|
|
102
|
-
| 💥 **Fragile & Unpredictable** | ⚡ **Robust & Production-Ready**
|
|
103
|
-
| *Single errors can halt everything*
|
|
104
|
-
| 🧩 **Monolithic & Rigid**
|
|
105
|
-
| *Hard to extend or modify logic*
|
|
106
|
-
| ⛓️ **Basic Chaining**
|
|
107
|
-
| *Often just linear workflows*
|
|
108
|
-
| 🧪 **Difficult Testing** | ✅ **Testable Components**
|
|
109
|
-
| *Hard to unit test prompt logic*
|
|
110
|
-
| 📄 **Unstructured Output** | ✨ **Structured Data Handling**
|
|
111
|
-
| *Parsing unreliable LLM text output*
|
|
96
|
+
| Traditional Agent Frameworks 😟 | Flock Framework 🐤🐧🐓🦆 |
|
|
97
|
+
| :------------------------------------ | :------------------------------------- |
|
|
98
|
+
| 🤯 **Prompt Nightmare** | ✅ **Declarative Simplicity** |
|
|
99
|
+
| *Long, brittle, hard-to-tune prompts* | *Clear input/output specs (typed!)* |
|
|
100
|
+
| 💥 **Fragile & Unpredictable** | ⚡ **Robust & Production-Ready** |
|
|
101
|
+
| *Single errors can halt everything* | *Fault-tolerant via Temporal option* |
|
|
102
|
+
| 🧩 **Monolithic & Rigid** | 🔧 **Modular & Flexible** |
|
|
103
|
+
| *Hard to extend or modify logic* | *Pluggable Evaluators, Modules, Tools* |
|
|
104
|
+
| ⛓️ **Basic Chaining** | 🚀 **Advanced Orchestration** |
|
|
105
|
+
| *Often just linear workflows* | *Dynamic Routing, Batch Processing* |
|
|
106
|
+
| 🧪 **Difficult Testing** | ✅ **Testable Components** |
|
|
107
|
+
| *Hard to unit test prompt logic* | *Clear I/O contracts aid testing* |
|
|
108
|
+
| 📄 **Unstructured Output** | ✨ **Structured Data Handling** |
|
|
109
|
+
| *Parsing unreliable LLM text output* | *Native Pydantic/Typed Dict support* |
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
## 📹 Video Demo
|
|
113
|
+
|
|
114
|
+
https://github.com/user-attachments/assets/bdab4786-d532-459f-806a-024727164dcc
|
|
112
115
|
|
|
113
116
|
## 💡 Core Concepts
|
|
114
117
|
|
|
@@ -210,7 +213,17 @@ if __name__ == "__main__":
|
|
|
210
213
|
print("Ensure your LLM API key (e.g., OPENAI_API_KEY) is set in your .env file!")
|
|
211
214
|
```
|
|
212
215
|
|
|
213
|
-
##
|
|
216
|
+
## 🐤 New in Flock 0.4.0 `Magpie` 🐤
|
|
217
|
+
|
|
218
|
+
### REST API - Deploy Flock Agents as REST API Endpoints
|
|
219
|
+
|
|
220
|
+
### Web UI - Test Flock Agents in the Browser
|
|
221
|
+
|
|
222
|
+
### CLI Tool - Manage Flock Agents via the Command Line
|
|
223
|
+
|
|
224
|
+
### Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
|
|
225
|
+
|
|
226
|
+
### ✨ Utility: @flockclass Hydrator
|
|
214
227
|
|
|
215
228
|
Flock also provides conveniences. The @flockclass decorator allows you to easily populate Pydantic models using an LLM:
|
|
216
229
|
|
|
@@ -269,11 +282,10 @@ Ways to contribute:
|
|
|
269
282
|
- Improve documentation.
|
|
270
283
|
- Contribute new Modules, Evaluators, or Routers.
|
|
271
284
|
- Add examples to the flock-showcase repository.
|
|
272
|
-
- Join our Discord Community to discuss development! <!-- Add Discord link -->
|
|
273
285
|
|
|
274
286
|
## 📜 License
|
|
275
287
|
|
|
276
|
-
Flock is licensed under the
|
|
288
|
+
Flock is licensed under the MIT License. See the LICENSE file for details.
|
|
277
289
|
|
|
278
290
|
## 🏢 About
|
|
279
291
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# 🚀 Flock: The Declarative AI Agent Framework 🚀
|
|
2
|
-
|
|
3
1
|
<p align="center">
|
|
4
2
|
<!-- Placeholder for your Flock Logo/Banner - Replace URL -->
|
|
5
3
|
<img alt="Flock Banner" src="https://raw.githubusercontent.com/whiteducksoftware/flock/master/docs/assets/images/flock.png" width="600">
|
|
@@ -35,20 +33,25 @@ Built with real-world deployment in mind, Flock integrates seamlessly with tools
|
|
|
35
33
|
|
|
36
34
|
Flock offers a different way to build agentic systems:
|
|
37
35
|
|
|
38
|
-
| Traditional Agent Frameworks 😟 | Flock Framework 🐤🐧🐓🦆
|
|
39
|
-
|
|
|
40
|
-
| 🤯 **Prompt Nightmare** | ✅ **Declarative Simplicity**
|
|
41
|
-
| *Long, brittle, hard-to-tune prompts*
|
|
42
|
-
| 💥 **Fragile & Unpredictable** | ⚡ **Robust & Production-Ready**
|
|
43
|
-
| *Single errors can halt everything*
|
|
44
|
-
| 🧩 **Monolithic & Rigid**
|
|
45
|
-
| *Hard to extend or modify logic*
|
|
46
|
-
| ⛓️ **Basic Chaining**
|
|
47
|
-
| *Often just linear workflows*
|
|
48
|
-
| 🧪 **Difficult Testing** | ✅ **Testable Components**
|
|
49
|
-
| *Hard to unit test prompt logic*
|
|
50
|
-
| 📄 **Unstructured Output** | ✨ **Structured Data Handling**
|
|
51
|
-
| *Parsing unreliable LLM text output*
|
|
36
|
+
| Traditional Agent Frameworks 😟 | Flock Framework 🐤🐧🐓🦆 |
|
|
37
|
+
| :------------------------------------ | :------------------------------------- |
|
|
38
|
+
| 🤯 **Prompt Nightmare** | ✅ **Declarative Simplicity** |
|
|
39
|
+
| *Long, brittle, hard-to-tune prompts* | *Clear input/output specs (typed!)* |
|
|
40
|
+
| 💥 **Fragile & Unpredictable** | ⚡ **Robust & Production-Ready** |
|
|
41
|
+
| *Single errors can halt everything* | *Fault-tolerant via Temporal option* |
|
|
42
|
+
| 🧩 **Monolithic & Rigid** | 🔧 **Modular & Flexible** |
|
|
43
|
+
| *Hard to extend or modify logic* | *Pluggable Evaluators, Modules, Tools* |
|
|
44
|
+
| ⛓️ **Basic Chaining** | 🚀 **Advanced Orchestration** |
|
|
45
|
+
| *Often just linear workflows* | *Dynamic Routing, Batch Processing* |
|
|
46
|
+
| 🧪 **Difficult Testing** | ✅ **Testable Components** |
|
|
47
|
+
| *Hard to unit test prompt logic* | *Clear I/O contracts aid testing* |
|
|
48
|
+
| 📄 **Unstructured Output** | ✨ **Structured Data Handling** |
|
|
49
|
+
| *Parsing unreliable LLM text output* | *Native Pydantic/Typed Dict support* |
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## 📹 Video Demo
|
|
53
|
+
|
|
54
|
+
https://github.com/user-attachments/assets/bdab4786-d532-459f-806a-024727164dcc
|
|
52
55
|
|
|
53
56
|
## 💡 Core Concepts
|
|
54
57
|
|
|
@@ -150,7 +153,17 @@ if __name__ == "__main__":
|
|
|
150
153
|
print("Ensure your LLM API key (e.g., OPENAI_API_KEY) is set in your .env file!")
|
|
151
154
|
```
|
|
152
155
|
|
|
153
|
-
##
|
|
156
|
+
## 🐤 New in Flock 0.4.0 `Magpie` 🐤
|
|
157
|
+
|
|
158
|
+
### REST API - Deploy Flock Agents as REST API Endpoints
|
|
159
|
+
|
|
160
|
+
### Web UI - Test Flock Agents in the Browser
|
|
161
|
+
|
|
162
|
+
### CLI Tool - Manage Flock Agents via the Command Line
|
|
163
|
+
|
|
164
|
+
### Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
|
|
165
|
+
|
|
166
|
+
### ✨ Utility: @flockclass Hydrator
|
|
154
167
|
|
|
155
168
|
Flock also provides conveniences. The @flockclass decorator allows you to easily populate Pydantic models using an LLM:
|
|
156
169
|
|
|
@@ -209,11 +222,10 @@ Ways to contribute:
|
|
|
209
222
|
- Improve documentation.
|
|
210
223
|
- Contribute new Modules, Evaluators, or Routers.
|
|
211
224
|
- Add examples to the flock-showcase repository.
|
|
212
|
-
- Join our Discord Community to discuss development! <!-- Add Discord link -->
|
|
213
225
|
|
|
214
226
|
## 📜 License
|
|
215
227
|
|
|
216
|
-
Flock is licensed under the
|
|
228
|
+
Flock is licensed under the MIT License. See the LICENSE file for details.
|
|
217
229
|
|
|
218
230
|
## 🏢 About
|
|
219
231
|
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# src/pilot_rules/collector/utils.py
|
|
2
|
+
import datetime
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from rich import box
|
|
7
|
+
from rich.console import Console
|
|
8
|
+
from rich.panel import Panel
|
|
9
|
+
from rich.progress import BarColumn, Progress, SpinnerColumn, TextColumn
|
|
10
|
+
from rich.table import Table
|
|
11
|
+
|
|
12
|
+
# Create a shared console instance for consistent styling
|
|
13
|
+
console = Console()
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def get_file_metadata(file_path: str) -> dict[str, Any]:
|
|
17
|
+
"""Extract metadata from a file."""
|
|
18
|
+
metadata = {
|
|
19
|
+
"path": file_path,
|
|
20
|
+
"size_bytes": 0,
|
|
21
|
+
"line_count": 0,
|
|
22
|
+
"last_modified": "Unknown",
|
|
23
|
+
"created": "Unknown",
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
try:
|
|
27
|
+
p = Path(file_path)
|
|
28
|
+
stats = p.stat()
|
|
29
|
+
metadata["size_bytes"] = stats.st_size
|
|
30
|
+
metadata["last_modified"] = datetime.datetime.fromtimestamp(
|
|
31
|
+
stats.st_mtime
|
|
32
|
+
).strftime("%Y-%m-%d %H:%M:%S")
|
|
33
|
+
# ctime is platform dependent (creation on Windows, metadata change on Unix)
|
|
34
|
+
# Use mtime as a reliable fallback for "created" if ctime is older than mtime
|
|
35
|
+
ctime = stats.st_ctime
|
|
36
|
+
mtime = stats.st_mtime
|
|
37
|
+
best_ctime = ctime if ctime <= mtime else mtime # Heuristic
|
|
38
|
+
metadata["created"] = datetime.datetime.fromtimestamp(
|
|
39
|
+
best_ctime
|
|
40
|
+
).strftime("%Y-%m-%d %H:%M:%S")
|
|
41
|
+
|
|
42
|
+
try:
|
|
43
|
+
# Attempt to read as text, fallback for binary or encoding issues
|
|
44
|
+
with p.open("r", encoding="utf-8", errors="ignore") as f:
|
|
45
|
+
content = f.read()
|
|
46
|
+
metadata["line_count"] = len(content.splitlines())
|
|
47
|
+
except (OSError, UnicodeDecodeError) as read_err:
|
|
48
|
+
# Handle cases where reading might fail (binary file, permissions etc.)
|
|
49
|
+
console.print(
|
|
50
|
+
f"[yellow]⚠ Warning:[/yellow] Could not read content/count lines for [cyan]{file_path}[/cyan]: [red]{read_err}[/red]"
|
|
51
|
+
)
|
|
52
|
+
metadata["line_count"] = 0 # Indicate unreadable or binary
|
|
53
|
+
|
|
54
|
+
except Exception as e:
|
|
55
|
+
console.print(
|
|
56
|
+
f"[yellow]⚠ Warning:[/yellow] Could not get complete metadata for [cyan]{file_path}[/cyan]: [red]{e}[/red]"
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
return metadata
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
# --- Rich Formatting Utilities ---
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def print_header(title: str, style: str = "blue") -> None:
|
|
66
|
+
"""Print a styled header with a panel."""
|
|
67
|
+
console.rule()
|
|
68
|
+
console.print(
|
|
69
|
+
Panel.fit(f"[bold {style}]{title}[/bold {style}]", border_style=style)
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def print_subheader(title: str, style: str = "cyan") -> None:
|
|
74
|
+
"""Print a styled subheader."""
|
|
75
|
+
console.print(f"[bold {style}]== {title} ==[/bold {style}]")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def print_success(message: str) -> None:
|
|
79
|
+
"""Print a success message."""
|
|
80
|
+
console.print(f"[bold green]✓[/bold green] {message}")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def print_error(message: str, exit_code: int | None = None) -> None:
|
|
84
|
+
"""Print an error message and optionally exit."""
|
|
85
|
+
console.print(f"[bold red]✗ ERROR:[/bold red] {message}")
|
|
86
|
+
if exit_code is not None:
|
|
87
|
+
exit(exit_code)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def print_warning(message: str) -> None:
|
|
91
|
+
"""Print a warning message."""
|
|
92
|
+
console.print(f"[yellow]⚠ Warning:[/yellow] {message}")
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def create_progress() -> Progress:
|
|
96
|
+
"""Create a standardized progress bar."""
|
|
97
|
+
return Progress(
|
|
98
|
+
SpinnerColumn(),
|
|
99
|
+
TextColumn("[bold blue]{task.description}"),
|
|
100
|
+
BarColumn(complete_style="green", finished_style="green"),
|
|
101
|
+
TextColumn("[bold]{task.completed}/{task.total}"),
|
|
102
|
+
console=console,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def create_task_table(title: str) -> Table:
|
|
107
|
+
"""Create a standardized table for displaying task information."""
|
|
108
|
+
table = Table(
|
|
109
|
+
title=title, show_header=True, header_style="bold cyan", box=box.ROUNDED
|
|
110
|
+
)
|
|
111
|
+
return table
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def print_file_stats(files: list[str], title: str = "File Statistics") -> None:
|
|
115
|
+
"""Print statistics about a list of files."""
|
|
116
|
+
if not files:
|
|
117
|
+
console.print("[yellow]No files found to display statistics.[/yellow]")
|
|
118
|
+
return
|
|
119
|
+
|
|
120
|
+
table = Table(title=title, show_header=True, header_style="bold magenta")
|
|
121
|
+
table.add_column("Statistic", style="cyan")
|
|
122
|
+
table.add_column("Value", style="green")
|
|
123
|
+
|
|
124
|
+
extensions = {Path(f).suffix.lower() for f in files if Path(f).suffix}
|
|
125
|
+
total_size = sum(get_file_metadata(f).get("size_bytes", 0) for f in files)
|
|
126
|
+
total_lines = sum(get_file_metadata(f).get("line_count", 0) for f in files)
|
|
127
|
+
|
|
128
|
+
table.add_row("Total Files", str(len(files)))
|
|
129
|
+
table.add_row("Total Size", f"{total_size / 1024:.2f} KB")
|
|
130
|
+
table.add_row("Total Lines", str(total_lines))
|
|
131
|
+
table.add_row(
|
|
132
|
+
"Extensions", ", ".join(sorted(extensions)) if extensions else "None"
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
console.print(table)
|
|
@@ -150,8 +150,7 @@ class Flock(BaseModel, Serializable):
|
|
|
150
150
|
)
|
|
151
151
|
|
|
152
152
|
# Initialize console if needed for banner
|
|
153
|
-
|
|
154
|
-
init_console()
|
|
153
|
+
init_console(clear_screen=True, show_banner=self.show_flock_banner)
|
|
155
154
|
|
|
156
155
|
# Set Temporal debug environment variable
|
|
157
156
|
self._set_temporal_debug_flag()
|
|
@@ -225,7 +224,7 @@ class Flock(BaseModel, Serializable):
|
|
|
225
224
|
raise ValueError("Agent must have a name.")
|
|
226
225
|
|
|
227
226
|
if agent.name in self._agents:
|
|
228
|
-
|
|
227
|
+
raise ValueError("Agent with this name already exists.")
|
|
229
228
|
self._agents[agent.name] = agent
|
|
230
229
|
FlockRegistry.register_agent(agent) # Register globally
|
|
231
230
|
|
|
@@ -38,6 +38,7 @@ class FlockFactory:
|
|
|
38
38
|
print_context: bool = False,
|
|
39
39
|
write_to_file: bool = False,
|
|
40
40
|
stream: bool = False,
|
|
41
|
+
include_thought_process: bool = False,
|
|
41
42
|
) -> FlockAgent:
|
|
42
43
|
"""Creates a default FlockAgent.
|
|
43
44
|
|
|
@@ -52,6 +53,7 @@ class FlockFactory:
|
|
|
52
53
|
max_tokens=max_tokens,
|
|
53
54
|
temperature=temperature,
|
|
54
55
|
stream=stream,
|
|
56
|
+
include_thought_process=include_thought_process,
|
|
55
57
|
)
|
|
56
58
|
|
|
57
59
|
evaluator = DeclarativeEvaluator(name="default", config=eval_config)
|
|
@@ -336,8 +336,9 @@ class DSPyIntegrationMixin:
|
|
|
336
336
|
def _select_task(
|
|
337
337
|
self,
|
|
338
338
|
signature: Any,
|
|
339
|
-
|
|
339
|
+
override_evaluator_type: AgentType,
|
|
340
340
|
tools: list[Any] | None = None,
|
|
341
|
+
kwargs: dict[str, Any] = {},
|
|
341
342
|
) -> Any:
|
|
342
343
|
"""Select and instantiate the appropriate DSPy Program/Module."""
|
|
343
344
|
try:
|
|
@@ -360,7 +361,7 @@ class DSPyIntegrationMixin:
|
|
|
360
361
|
)
|
|
361
362
|
|
|
362
363
|
dspy_program = None
|
|
363
|
-
selected_type =
|
|
364
|
+
selected_type = override_evaluator_type
|
|
364
365
|
|
|
365
366
|
# Determine type if not overridden
|
|
366
367
|
if not selected_type:
|
|
@@ -374,11 +375,12 @@ class DSPyIntegrationMixin:
|
|
|
374
375
|
|
|
375
376
|
try:
|
|
376
377
|
if selected_type == "ChainOfThought":
|
|
377
|
-
dspy_program = dspy.ChainOfThought(signature)
|
|
378
|
+
dspy_program = dspy.ChainOfThought(signature, **kwargs)
|
|
378
379
|
elif selected_type == "ReAct":
|
|
379
|
-
|
|
380
|
+
if not kwargs:
|
|
381
|
+
kwargs = {"max_iters": 10}
|
|
380
382
|
dspy_program = dspy.ReAct(
|
|
381
|
-
signature, tools=processed_tools or [],
|
|
383
|
+
signature, tools=processed_tools or [], **kwargs
|
|
382
384
|
)
|
|
383
385
|
elif selected_type == "Predict": # Default or explicitly Completion
|
|
384
386
|
dspy_program = dspy.Predict(signature)
|
|
@@ -401,8 +403,10 @@ class DSPyIntegrationMixin:
|
|
|
401
403
|
|
|
402
404
|
def _process_result(
|
|
403
405
|
self, result: Any, inputs: dict[str, Any]
|
|
404
|
-
) -> dict[str, Any]:
|
|
406
|
+
) -> tuple[dict[str, Any], float, list]:
|
|
405
407
|
"""Convert the DSPy result object to a dictionary."""
|
|
408
|
+
import dspy
|
|
409
|
+
|
|
406
410
|
if result is None:
|
|
407
411
|
logger.warning("DSPy program returned None result.")
|
|
408
412
|
return {}
|
|
@@ -429,7 +433,12 @@ class DSPyIntegrationMixin:
|
|
|
429
433
|
logger.debug(f"Processed DSPy result to dict: {output_dict}")
|
|
430
434
|
# Optionally merge inputs back if desired (can make result dict large)
|
|
431
435
|
final_result = {**inputs, **output_dict}
|
|
432
|
-
|
|
436
|
+
|
|
437
|
+
lm = dspy.settings.get("lm")
|
|
438
|
+
cost = sum([x["cost"] for x in lm.history if x["cost"] is not None])
|
|
439
|
+
lm_history = lm.inspect_history()
|
|
440
|
+
|
|
441
|
+
return final_result, cost, lm_history
|
|
433
442
|
|
|
434
443
|
except Exception as conv_error:
|
|
435
444
|
logger.error(
|
|
@@ -43,7 +43,7 @@ def display_hummingbird():
|
|
|
43
43
|
""")
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
def init_console(clear_screen: bool = True):
|
|
46
|
+
def init_console(clear_screen: bool = True, show_banner: bool = True):
|
|
47
47
|
"""Display the Flock banner."""
|
|
48
48
|
banner_text = Text(
|
|
49
49
|
f"""
|
|
@@ -60,7 +60,9 @@ def init_console(clear_screen: bool = True):
|
|
|
60
60
|
)
|
|
61
61
|
if clear_screen:
|
|
62
62
|
console.clear()
|
|
63
|
-
|
|
63
|
+
|
|
64
|
+
if show_banner:
|
|
65
|
+
console.print(banner_text)
|
|
64
66
|
console.print(
|
|
65
67
|
f"[italic]'Magpie'[/] milestone - [bold]white duck GmbH[/] - [cyan]https://whiteduck.de[/]\n"
|
|
66
68
|
)
|
|
@@ -19,7 +19,7 @@ logger = get_logger("evaluators.declarative")
|
|
|
19
19
|
class DeclarativeEvaluatorConfig(FlockEvaluatorConfig):
|
|
20
20
|
"""Configuration for the DeclarativeEvaluator."""
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
override_evaluator_type: str | None = None
|
|
23
23
|
model: str | None = "openai/gpt-4o"
|
|
24
24
|
use_cache: bool = True
|
|
25
25
|
temperature: float = 0.0
|
|
@@ -28,6 +28,11 @@ class DeclarativeEvaluatorConfig(FlockEvaluatorConfig):
|
|
|
28
28
|
default=False,
|
|
29
29
|
description="Enable streaming output from the underlying DSPy program.",
|
|
30
30
|
)
|
|
31
|
+
include_thought_process: bool = Field(
|
|
32
|
+
default=False,
|
|
33
|
+
description="Include the thought process in the output.",
|
|
34
|
+
)
|
|
35
|
+
kwargs: dict[str, Any] = Field(default_factory=dict)
|
|
31
36
|
|
|
32
37
|
|
|
33
38
|
class DeclarativeEvaluator(
|
|
@@ -40,6 +45,9 @@ class DeclarativeEvaluator(
|
|
|
40
45
|
description="Evaluator configuration",
|
|
41
46
|
)
|
|
42
47
|
|
|
48
|
+
cost: float = 0.0
|
|
49
|
+
lm_history: list = Field(default_factory=list)
|
|
50
|
+
|
|
43
51
|
async def evaluate(
|
|
44
52
|
self, agent: FlockAgent, inputs: dict[str, Any], tools: list[Any]
|
|
45
53
|
) -> dict[str, Any]:
|
|
@@ -68,8 +76,9 @@ class DeclarativeEvaluator(
|
|
|
68
76
|
)
|
|
69
77
|
agent_task = self._select_task(
|
|
70
78
|
_dspy_signature,
|
|
71
|
-
|
|
79
|
+
override_evaluator_type=self.config.override_evaluator_type,
|
|
72
80
|
tools=tools,
|
|
81
|
+
kwargs=self.config.kwargs,
|
|
73
82
|
)
|
|
74
83
|
except Exception as setup_error:
|
|
75
84
|
logger.error(
|
|
@@ -109,21 +118,46 @@ class DeclarativeEvaluator(
|
|
|
109
118
|
if delta_content:
|
|
110
119
|
console.print(delta_content, end="")
|
|
111
120
|
|
|
112
|
-
result_dict = self._process_result(
|
|
121
|
+
result_dict, cost, lm_history = self._process_result(
|
|
122
|
+
chunk, inputs
|
|
123
|
+
)
|
|
124
|
+
self.cost = cost
|
|
125
|
+
self.lm_history = lm_history
|
|
113
126
|
|
|
114
127
|
console.print("\n")
|
|
115
|
-
return
|
|
128
|
+
return self.filter_thought_process(
|
|
129
|
+
result_dict, self.config.include_thought_process
|
|
130
|
+
)
|
|
116
131
|
|
|
117
132
|
else: # Non-streaming path
|
|
118
133
|
logger.info(f"Evaluating agent '{agent.name}' without streaming.")
|
|
119
134
|
try:
|
|
120
135
|
# Ensure the call is awaited if the underlying task is async
|
|
121
136
|
result_obj = agent_task(**inputs)
|
|
122
|
-
result_dict = self._process_result(
|
|
123
|
-
|
|
137
|
+
result_dict, cost, lm_history = self._process_result(
|
|
138
|
+
result_obj, inputs
|
|
139
|
+
)
|
|
140
|
+
self.cost = cost
|
|
141
|
+
self.lm_history = lm_history
|
|
142
|
+
return self.filter_thought_process(
|
|
143
|
+
result_dict, self.config.include_thought_process
|
|
144
|
+
)
|
|
124
145
|
except Exception as e:
|
|
125
146
|
logger.error(
|
|
126
147
|
f"Error during non-streaming evaluation for agent '{agent.name}': {e}",
|
|
127
148
|
exc_info=True,
|
|
128
149
|
)
|
|
129
150
|
raise RuntimeError(f"Evaluation failed: {e}") from e
|
|
151
|
+
|
|
152
|
+
def filter_thought_process(
|
|
153
|
+
result_dict: dict[str, Any], include_thought_process: bool
|
|
154
|
+
) -> dict[str, Any]:
|
|
155
|
+
"""Filter out thought process from the result dictionary."""
|
|
156
|
+
if include_thought_process:
|
|
157
|
+
return result_dict
|
|
158
|
+
else:
|
|
159
|
+
return {
|
|
160
|
+
k: v
|
|
161
|
+
for k, v in result_dict.items()
|
|
162
|
+
if not (k.startswith("reasoning") or k.startswith("trajectory"))
|
|
163
|
+
}
|