flock-core 0.3.3__tar.gz → 0.3.5__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.3.3 → flock_core-0.3.5}/.vscode/settings.json +2 -4
- {flock_core-0.3.3 → flock_core-0.3.5}/PKG-INFO +3 -1
- flock_core-0.3.5/docs/core-concepts/evaluators.md +1 -0
- flock_core-0.3.5/docs/core-concepts/modules.md +1 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/getting-started/quickstart.md +4 -3
- flock_core-0.3.5/examples/01_introduction/01_simple_example.py +43 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/01_introduction/02_typed_output.py +0 -22
- flock_core-0.3.5/examples/01_introduction/03_tool_and_code_agent.py +40 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/01_introduction/04_descriptions.py +0 -11
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/01_introduction/05_typed_output2.py +0 -18
- flock_core-0.3.5/examples/01_introduction/06_simple_hand_off.py +31 -0
- flock_core-0.3.5/examples/03_misc/api/api_client.py +19 -0
- flock_core-0.3.5/examples/03_misc/api/api_server.py +20 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/pyproject.toml +3 -1
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/__init__.py +2 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/flock.py +2 -0
- flock_core-0.3.5/src/flock/core/flock_api.py +215 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/uv.lock +19 -1
- flock_core-0.3.3/examples/01_introduction/01_simple_example.py +0 -63
- flock_core-0.3.3/examples/01_introduction/03_tool_and_code_agent.py +0 -60
- flock_core-0.3.3/examples/01_introduction/06_simple_hand_off.py +0 -60
- {flock_core-0.3.3 → flock_core-0.3.5}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.env_template +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.gitignore +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.vscode/launch.json +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/.vscode/tasks.json +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/LICENSE +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/README.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/advanced/complex-workflows.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/advanced/custom-agents.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/advanced/performance.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/advanced/testing.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/api/flock-core.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/api/flockagent.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/api/types.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/api/utilities.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/architecture/components.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/architecture/design-decisions.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/architecture/overview.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/drawio/architecture.drawio +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/flock.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/getting-started/first_agent_00.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/hummingbird.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/icon.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/logo.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/memory_concepts.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/memory_flow.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/assets/images/memory_flow_chart.png +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/contributing/code-style.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/contributing/development.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/contributing/documentation.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/contributing/testing.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/core-concepts/agents.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/core-concepts/declarative.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/core-concepts/error-handling.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/core-concepts/memory.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/core-concepts/type-system.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/core-concepts/workflows.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/deployment/monitoring.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/deployment/production-setup.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/deployment/scalability.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/deployment/security.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/examples/chain-gang.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/examples/hello-flock.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/examples/pydantic.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/examples/type-system.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/features/agent-chaining.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/features/agent-definition.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/features/lifecycle-hooks.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/features/pydantic.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/features/type-safety.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/getting-started/concepts.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/getting-started/configuration.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/getting-started/installation.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/index.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/integrations/dspy.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/integrations/litellm.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/integrations/tavily.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/integrations/temporal.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/release-notes/release_notes.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/tutorials/blog-generator.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/tutorials/custom-tools.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/tutorials/error-recovery.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/docs/tutorials/multi-agent.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/flock_without_llms.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/long_research_no_handoff.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/painting_by_numbers.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/project_manager.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/save_and_load/load_01.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/save_and_load/load_02.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/save_and_load/load_03.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/save_and_load/load_04.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/save_and_load/save_01.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/save_and_load/save_02.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/save_and_load/save_03.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/02_cook_book/self_improvement_with_memory.py +0 -0
- {flock_core-0.3.3/examples/03_misc → flock_core-0.3.5/examples/03_misc/evaluator}/multi_hops.py +0 -0
- {flock_core-0.3.3/examples/03_misc → flock_core-0.3.5/examples/03_misc/modules}/use_modules.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/README.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/documentation/getting-started/first_agent_01.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/documentation/getting-started/first_agent_02.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/documentation/getting-started/first_agent_03.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/notebooks_wip/Untitled-1.ipynb +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/notebooks_wip/my_agent.json +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/playground/memory.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/playground/self_learner.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/examples/playground/self_learner2.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/mkdocs.yml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/requirements.txt +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/__init__.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/assets/release_notes.md +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/constants.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/load_release_notes.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/cli/settings.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/config.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/context/context.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/context/context_manager.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/context/context_vars.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/flock_agent.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/flock_evaluator.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/flock_factory.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/flock_module.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/interpreter/python_interpreter.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/formatters/themes.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/logging.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/telemetry.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/mixin/dspy_integration.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/registry/agent_registry.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/tools/basic_tools.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/tools/dev_tools/github.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/util/cli_helper.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/core/util/serializable.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/evaluators/natural_language/natural_language_evaluator.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/modules/callback/callback_module.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/modules/memory/memory_module.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/modules/memory/memory_parser.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/modules/memory/memory_storage.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/modules/output/output_module.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/modules/performance/metrics_module.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/modules/zep/zep_module.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/django.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/github.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/material.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/square.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/workflow/activities.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/src/flock/workflow/workflow.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/tests/integration/test_agent_integration.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/tests/unittests/test_flock.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/tests/unittests/test_flock_agent.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/tests/unittests/test_memory_operations.py +0 -0
- {flock_core-0.3.3 → flock_core-0.3.5}/tests/unittests/test_memory_store.py +0 -0
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
"tests"
|
|
4
4
|
],
|
|
5
5
|
"python.envFile": "${workspaceFolder}/.env",
|
|
6
|
-
"python.terminal.run_asyncEnvInCurrentTerminal": true,
|
|
7
6
|
"python.testing.unittestEnabled": false,
|
|
8
7
|
"python.testing.pytestEnabled": true,
|
|
9
8
|
"python.testing.autoTestDiscoverOnSaveEnabled": true,
|
|
10
|
-
"shiny.python.debugJustMyCode": false,
|
|
11
9
|
"editor.formatOnSave": true,
|
|
12
10
|
"editor.codeActionsOnSave": {
|
|
13
11
|
"source.organizeImports.ruff": "always",
|
|
@@ -22,7 +20,7 @@
|
|
|
22
20
|
"editor.fontSize": 15.5,
|
|
23
21
|
"editor.fontLigatures": true,
|
|
24
22
|
//"editor.lineHeight": 1.5,
|
|
25
|
-
"editor.minimap.enabled":
|
|
23
|
+
"editor.minimap.enabled": true,
|
|
26
24
|
"editor.tabSize": 2,
|
|
27
25
|
"editor.semanticTokenColorCustomizations": {
|
|
28
26
|
"enabled": true
|
|
@@ -30,7 +28,7 @@
|
|
|
30
28
|
"editor.semanticHighlighting.enabled": true,
|
|
31
29
|
// we try to make semantic highlighting look good
|
|
32
30
|
// prevent VSCode from modifying the terminal colors
|
|
33
|
-
"terminal.integrated.minimumContrastRatio":
|
|
31
|
+
"terminal.integrated.minimumContrastRatio": 1,
|
|
34
32
|
"cSpell.words": [
|
|
35
33
|
"deptry",
|
|
36
34
|
"gradio",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
4
4
|
Summary: Declarative LLM Orchestration at Scale
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -12,6 +12,7 @@ Requires-Dist: cloudpickle>=3.1.1
|
|
|
12
12
|
Requires-Dist: devtools>=0.12.2
|
|
13
13
|
Requires-Dist: dspy==2.5.42
|
|
14
14
|
Requires-Dist: duckduckgo-search>=7.3.2
|
|
15
|
+
Requires-Dist: fastapi>=0.115.8
|
|
15
16
|
Requires-Dist: httpx>=0.28.1
|
|
16
17
|
Requires-Dist: loguru>=0.7.3
|
|
17
18
|
Requires-Dist: matplotlib>=3.10.0
|
|
@@ -34,6 +35,7 @@ Requires-Dist: temporalio>=1.9.0
|
|
|
34
35
|
Requires-Dist: tiktoken>=0.8.0
|
|
35
36
|
Requires-Dist: toml>=0.10.2
|
|
36
37
|
Requires-Dist: tqdm>=4.67.1
|
|
38
|
+
Requires-Dist: uvicorn>=0.34.0
|
|
37
39
|
Requires-Dist: zep-python>=2.0.2
|
|
38
40
|
Provides-Extra: all-tools
|
|
39
41
|
Requires-Dist: docling>=2.18.0; extra == 'all-tools'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Evaluators
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Modules
|
|
@@ -68,7 +68,7 @@ flock = Flock(
|
|
|
68
68
|
)
|
|
69
69
|
|
|
70
70
|
# Meet your new AI friend
|
|
71
|
-
bloggy =
|
|
71
|
+
bloggy = FlockFactory.create_default_agent(
|
|
72
72
|
name="bloggy",
|
|
73
73
|
input="topic",
|
|
74
74
|
output="catchy_title, blog_headers"
|
|
@@ -106,12 +106,13 @@ Let's break down the magic:
|
|
|
106
106
|
|
|
107
107
|
2. **Creating Your First Agent**:
|
|
108
108
|
```python
|
|
109
|
-
bloggy =
|
|
109
|
+
bloggy = FlockFactory.create_default_agent(
|
|
110
110
|
name="bloggy",
|
|
111
111
|
input="topic",
|
|
112
112
|
output="catchy_title, blog_headers"
|
|
113
113
|
)
|
|
114
114
|
```
|
|
115
|
+
The FlockFactory is churning out your agents.
|
|
115
116
|
Think of this as defining your agent's job description - what they need and what they'll create.
|
|
116
117
|
|
|
117
118
|
3. **Action Time!**:
|
|
@@ -149,7 +150,7 @@ Also the agent itself offers a description field.
|
|
|
149
150
|
|
|
150
151
|
```python
|
|
151
152
|
# Your agent just got an upgrade!
|
|
152
|
-
bloggy =
|
|
153
|
+
bloggy = FlockFactory.create_default_agent(
|
|
153
154
|
name="bloggy",
|
|
154
155
|
input="topic",
|
|
155
156
|
description="Bloggy creates fun blog outlines for any given topic",
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from flock.core import Flock, FlockFactory
|
|
2
|
+
from flock.core.flock_api import FlockAPI
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# --------------------------------
|
|
6
|
+
# Define the model
|
|
7
|
+
# --------------------------------
|
|
8
|
+
# Flock uses litellm to talk to LLMs
|
|
9
|
+
# Please consult the litellm documentation for valid IDs:
|
|
10
|
+
# https://docs.litellm.ai/docs/providers
|
|
11
|
+
MODEL = "openai/gpt-4o"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# --------------------------------
|
|
15
|
+
# Create the flock and context
|
|
16
|
+
# --------------------------------
|
|
17
|
+
# The flock is the place where all the agents are at home
|
|
18
|
+
flock = Flock(model=MODEL)
|
|
19
|
+
|
|
20
|
+
# --------------------------------
|
|
21
|
+
# Create an agent
|
|
22
|
+
# --------------------------------
|
|
23
|
+
# The Flock doesn't believe in prompts (see the docs for more info)
|
|
24
|
+
# The Flock just declares what agents get in and what agents produce
|
|
25
|
+
# bloggy takes in a blog_idea and outputs a funny_blog_title
|
|
26
|
+
# and blog_headers
|
|
27
|
+
bloggy = FlockFactory.create_default_agent(
|
|
28
|
+
name="bloggy",
|
|
29
|
+
input="blog_idea",
|
|
30
|
+
output="funny_blog_title, blog_headers",
|
|
31
|
+
)
|
|
32
|
+
flock.add_agent(bloggy)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# --------------------------------
|
|
36
|
+
# Run the flock
|
|
37
|
+
# --------------------------------
|
|
38
|
+
# Tell the flock who is the starting and what input to give it
|
|
39
|
+
flock.run(
|
|
40
|
+
start_agent=bloggy,
|
|
41
|
+
input={"blog_idea": "A blog about cats"}
|
|
42
|
+
)
|
|
43
|
+
|
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Title: Advanced Flock Agent with Caching, Type Hints, and Tool Integration
|
|
3
|
-
|
|
4
|
-
In this example, we'll show you how to build a more advanced Flock system that:
|
|
5
|
-
- Uses a custom output formatter (RichTables) for a polished, swaggy display.
|
|
6
|
-
- Defines output types using standard Python type hints (including lists and Literals) for structured results.
|
|
7
|
-
- Integrates external tools (like a web content scraper) so that agents can perform more complex operations.
|
|
8
|
-
- Leverages caching so that if an agent is called with the same input, the cached result is returned—this is particularly
|
|
9
|
-
useful for expensive operations such as web scraping or during debugging.
|
|
10
|
-
|
|
11
|
-
The agent in this example takes a URL as input and outputs:
|
|
12
|
-
- A title,
|
|
13
|
-
- A list of headings,
|
|
14
|
-
- A list of dictionaries mapping entities to metadata, and
|
|
15
|
-
- A type (limited to one of 'news', 'blog', 'opinion piece', or 'tweet').
|
|
16
|
-
|
|
17
|
-
After executing the agent, you can work with the result as a real Python object that respects the defined types.
|
|
18
|
-
|
|
19
|
-
Let's dive in!
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
|
|
23
1
|
from pprint import pprint
|
|
24
2
|
|
|
25
3
|
from flock.core import Flock, FlockFactory
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from flock.core import Flock, FlockFactory
|
|
2
|
+
|
|
3
|
+
from flock.core.logging.formatters.themes import OutputTheme
|
|
4
|
+
from flock.core.tools import basic_tools
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# --------------------------------
|
|
8
|
+
# Create the flock
|
|
9
|
+
# --------------------------------
|
|
10
|
+
flock = Flock()
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# --------------------------------
|
|
14
|
+
# Tools
|
|
15
|
+
# --------------------------------
|
|
16
|
+
# Let's talk about tools
|
|
17
|
+
# A FlockAgent has a tools argument that takes in ANY callable
|
|
18
|
+
# like the ones in flock.core.tools.basic_tools
|
|
19
|
+
# or your own custom tools
|
|
20
|
+
agent = FlockFactory.create_default_agent(
|
|
21
|
+
name="my_celebrity_age_agent",
|
|
22
|
+
input="a_person",
|
|
23
|
+
output="persons_age_in_days",
|
|
24
|
+
tools=[basic_tools.web_search_duckduckgo, basic_tools.code_eval],
|
|
25
|
+
enable_rich_tables=True,
|
|
26
|
+
output_theme=OutputTheme.adventuretime,
|
|
27
|
+
use_cache=True,
|
|
28
|
+
)
|
|
29
|
+
flock.add_agent(agent)
|
|
30
|
+
|
|
31
|
+
# --------------------------------
|
|
32
|
+
# Run the agent
|
|
33
|
+
# --------------------------------
|
|
34
|
+
# Let's calculate Johnny Depp's age in days
|
|
35
|
+
flock.run(
|
|
36
|
+
start_agent=agent,
|
|
37
|
+
input={"a_person": "Johnny Depp"},
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Title: Getting into the details with descriptions
|
|
3
|
-
|
|
4
|
-
Perhaps your co-worker who loves writing blog post long prompts for his agents thought he has found an out:
|
|
5
|
-
"Due to my long prompts I can make my agents do anything I want, which is not possible with your little declarative flocky!" he proclaimed.
|
|
6
|
-
"What do you do when you need your agents to handle edge cases?" he asked.
|
|
7
|
-
|
|
8
|
-
You, being the flocky expert, decided to show him how to use 'descriptions' to make your agents do anything his agents can do and more.
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
|
|
12
1
|
from flock.core import Flock, FlockFactory
|
|
13
2
|
|
|
14
3
|
flock = Flock()
|
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Title: Random User List Generator with Data Class Integration and Caching
|
|
3
|
-
|
|
4
|
-
In this example, you'll see a simple Flock agent in action that generates a list of random users.
|
|
5
|
-
This example demonstrates several cool features:
|
|
6
|
-
- **Data Class Integration:** We define a `RandomPerson` dataclass to structure the random user data.
|
|
7
|
-
- **Caching:** Enabled caching ensures that if you run the agent with the same input,
|
|
8
|
-
it will return a cached result—ideal for speeding up repeated requests.
|
|
9
|
-
- **Simple Agent Declaration:** Like all Flock agents, this one declares what it needs
|
|
10
|
-
("amount_of_people") and what it produces ("random_user_list: list[RandomPerson]")
|
|
11
|
-
without the hassle of prompt engineering.
|
|
12
|
-
|
|
13
|
-
In this scenario, our agent ("people_agent") takes the number of people to generate as input,
|
|
14
|
-
and returns a list of randomly generated users. We then print the number of generated users.
|
|
15
|
-
Let's see how it's done!
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
|
|
19
1
|
from dataclasses import dataclass
|
|
20
2
|
from pprint import pprint
|
|
21
3
|
from typing import Literal
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from flock.core import Flock, FlockFactory
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
flock = Flock()
|
|
6
|
+
|
|
7
|
+
idea_agent = FlockFactory.create_default_agent(
|
|
8
|
+
name="idea_agent",
|
|
9
|
+
input="query",
|
|
10
|
+
output="a_fun_software_project_idea",
|
|
11
|
+
enable_rich_tables=True,
|
|
12
|
+
wait_for_input=True,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
project_plan_agent = FlockFactory.create_default_agent(
|
|
16
|
+
name="project_plan_agent",
|
|
17
|
+
input="a_fun_software_project_idea",
|
|
18
|
+
output="catchy_project_name, project_pitch, techstack, project_implementation_plan",
|
|
19
|
+
enable_rich_tables=True,
|
|
20
|
+
wait_for_input=True,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
idea_agent.hand_off = project_plan_agent
|
|
24
|
+
|
|
25
|
+
flock.run(
|
|
26
|
+
input={"query": "fun software project idea about ducks"},
|
|
27
|
+
start_agent=idea_agent,
|
|
28
|
+
agents=[idea_agent,project_plan_agent]
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import httpx
|
|
2
|
+
|
|
3
|
+
from flock.core.flock_api import FlockAPIRequest
|
|
4
|
+
from rich.console import Console
|
|
5
|
+
from rich.pretty import Pretty
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
console = Console()
|
|
9
|
+
|
|
10
|
+
payload = FlockAPIRequest(agent_name="bloggy", inputs={"blog_idea": "A blog about cats"})
|
|
11
|
+
|
|
12
|
+
response = httpx.post("http://127.0.0.1:8344/run/flock",content=payload.model_dump_json())
|
|
13
|
+
response.raise_for_status()
|
|
14
|
+
|
|
15
|
+
pretty = Pretty(response.json())
|
|
16
|
+
console.print(pretty)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from flock.core import Flock,FlockFactory,FlockAPI
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
MODEL = "openai/gpt-4o"
|
|
6
|
+
|
|
7
|
+
flock = Flock(model=MODEL,enable_logging=True)
|
|
8
|
+
|
|
9
|
+
bloggy = FlockFactory.create_default_agent(
|
|
10
|
+
name="bloggy",
|
|
11
|
+
input="blog_idea",
|
|
12
|
+
output="funny_blog_title, blog_headers",
|
|
13
|
+
)
|
|
14
|
+
flock.add_agent(bloggy)
|
|
15
|
+
|
|
16
|
+
# Swagger: http://127.0.0.1:8344/docs
|
|
17
|
+
# Redoc: http://127.0.0.1:8344/redoc
|
|
18
|
+
# POST: http://127.0.0.1:8344/run
|
|
19
|
+
api = FlockAPI(flock)
|
|
20
|
+
api.start()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "flock-core"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.5"
|
|
4
4
|
description = "Declarative LLM Orchestration at Scale"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -17,6 +17,7 @@ dependencies = [
|
|
|
17
17
|
"devtools>=0.12.2",
|
|
18
18
|
"dspy==2.5.42",
|
|
19
19
|
"duckduckgo-search>=7.3.2",
|
|
20
|
+
"fastapi>=0.115.8",
|
|
20
21
|
"httpx>=0.28.1",
|
|
21
22
|
"loguru>=0.7.3",
|
|
22
23
|
"matplotlib>=3.10.0",
|
|
@@ -39,6 +40,7 @@ dependencies = [
|
|
|
39
40
|
"tiktoken>=0.8.0",
|
|
40
41
|
"toml>=0.10.2",
|
|
41
42
|
"tqdm>=4.67.1",
|
|
43
|
+
"uvicorn>=0.34.0",
|
|
42
44
|
"zep-python>=2.0.2",
|
|
43
45
|
]
|
|
44
46
|
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
from flock.core.flock import Flock
|
|
4
4
|
from flock.core.flock_agent import FlockAgent
|
|
5
|
+
from flock.core.flock_api import FlockAPI
|
|
5
6
|
from flock.core.flock_evaluator import FlockEvaluator, FlockEvaluatorConfig
|
|
6
7
|
from flock.core.flock_factory import FlockFactory
|
|
7
8
|
from flock.core.flock_module import FlockModule, FlockModuleConfig
|
|
8
9
|
|
|
9
10
|
__all__ = [
|
|
10
11
|
"Flock",
|
|
12
|
+
"FlockAPI",
|
|
11
13
|
"FlockAgent",
|
|
12
14
|
"FlockEvaluator",
|
|
13
15
|
"FlockEvaluatorConfig",
|
|
@@ -379,6 +379,8 @@ class Flock:
|
|
|
379
379
|
Exception: For any other errors encountered during execution.
|
|
380
380
|
"""
|
|
381
381
|
with tracer.start_as_current_span("run_async") as span:
|
|
382
|
+
if isinstance(start_agent, str):
|
|
383
|
+
start_agent = self.registry.get_agent(start_agent)
|
|
382
384
|
span.set_attribute(
|
|
383
385
|
"start_agent",
|
|
384
386
|
start_agent.name
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"""REST API server for Flock."""
|
|
2
|
+
|
|
3
|
+
import uuid
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
import uvicorn
|
|
8
|
+
from fastapi import BackgroundTasks, FastAPI, HTTPException
|
|
9
|
+
from pydantic import BaseModel, Field
|
|
10
|
+
|
|
11
|
+
from flock.core.flock import Flock
|
|
12
|
+
from flock.core.logging.logging import get_logger
|
|
13
|
+
|
|
14
|
+
logger = get_logger("api")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class FlockAPIRequest(BaseModel):
|
|
18
|
+
"""Request model for running an agent."""
|
|
19
|
+
|
|
20
|
+
agent_name: str = Field(..., description="Name of the agent to run")
|
|
21
|
+
inputs: dict[str, Any] = Field(
|
|
22
|
+
default_factory=dict, description="Input data for the agent"
|
|
23
|
+
)
|
|
24
|
+
async_run: bool = Field(
|
|
25
|
+
default=False, description="Whether to run asynchronously"
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class FlockAPIResponse(BaseModel):
|
|
30
|
+
"""Response model for run requests."""
|
|
31
|
+
|
|
32
|
+
run_id: str = Field(..., description="Unique ID for this run")
|
|
33
|
+
status: str = Field(..., description="Status of the run")
|
|
34
|
+
result: dict[str, Any] | None = Field(
|
|
35
|
+
None, description="Run result if completed"
|
|
36
|
+
)
|
|
37
|
+
started_at: datetime = Field(..., description="When the run started")
|
|
38
|
+
completed_at: datetime | None = Field(
|
|
39
|
+
None, description="When the run completed"
|
|
40
|
+
)
|
|
41
|
+
error: str | None = Field(None, description="Error message if failed")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class FlockAPI:
|
|
45
|
+
"""REST API server for Flock.
|
|
46
|
+
|
|
47
|
+
Provides HTTP endpoints for:
|
|
48
|
+
- Running agents
|
|
49
|
+
- Checking run status
|
|
50
|
+
- Getting run results
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
def __init__(self, flock: Flock):
|
|
54
|
+
self.flock = flock
|
|
55
|
+
self.app = FastAPI(title="Flock API")
|
|
56
|
+
self.runs: dict[str, FlockAPIResponse] = {}
|
|
57
|
+
|
|
58
|
+
# Register routes
|
|
59
|
+
self._setup_routes()
|
|
60
|
+
|
|
61
|
+
def _setup_routes(self):
|
|
62
|
+
"""Set up API routes."""
|
|
63
|
+
|
|
64
|
+
@self.app.post("/run/flock", response_model=FlockAPIResponse)
|
|
65
|
+
async def run_flock(
|
|
66
|
+
request: FlockAPIRequest, background_tasks: BackgroundTasks
|
|
67
|
+
):
|
|
68
|
+
"""Run an agent with the provided inputs."""
|
|
69
|
+
try:
|
|
70
|
+
# Generate run ID
|
|
71
|
+
run_id = str(uuid.uuid4())
|
|
72
|
+
|
|
73
|
+
# Create initial response
|
|
74
|
+
response = FlockAPIResponse(
|
|
75
|
+
run_id=run_id, status="starting", started_at=datetime.now()
|
|
76
|
+
)
|
|
77
|
+
self.runs[run_id] = response
|
|
78
|
+
|
|
79
|
+
if request.async_run:
|
|
80
|
+
# Start run in background
|
|
81
|
+
background_tasks.add_task(
|
|
82
|
+
self._run_flock,
|
|
83
|
+
run_id,
|
|
84
|
+
request.agent_name,
|
|
85
|
+
request.inputs,
|
|
86
|
+
)
|
|
87
|
+
response.status = "running"
|
|
88
|
+
else:
|
|
89
|
+
# Run synchronously
|
|
90
|
+
await self._run_flock(
|
|
91
|
+
run_id, request.agent_name, request.inputs
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
return self.runs[run_id]
|
|
95
|
+
|
|
96
|
+
except Exception as e:
|
|
97
|
+
logger.error(f"Error starting run: {e!s}")
|
|
98
|
+
raise HTTPException(status_code=500, detail=str(e))
|
|
99
|
+
|
|
100
|
+
@self.app.post("/run/agent", response_model=FlockAPIResponse)
|
|
101
|
+
async def run_agent(
|
|
102
|
+
request: FlockAPIRequest, background_tasks: BackgroundTasks
|
|
103
|
+
):
|
|
104
|
+
"""Run an agent with the provided inputs."""
|
|
105
|
+
try:
|
|
106
|
+
# Generate run ID
|
|
107
|
+
run_id = str(uuid.uuid4())
|
|
108
|
+
|
|
109
|
+
# Create initial response
|
|
110
|
+
response = FlockAPIResponse(
|
|
111
|
+
run_id=run_id, status="starting", started_at=datetime.now()
|
|
112
|
+
)
|
|
113
|
+
self.runs[run_id] = response
|
|
114
|
+
|
|
115
|
+
if request.async_run:
|
|
116
|
+
# Start run in background
|
|
117
|
+
background_tasks.add_task(
|
|
118
|
+
self._run_agent,
|
|
119
|
+
run_id,
|
|
120
|
+
request.agent_name,
|
|
121
|
+
request.inputs,
|
|
122
|
+
)
|
|
123
|
+
response.status = "running"
|
|
124
|
+
else:
|
|
125
|
+
# Run synchronously
|
|
126
|
+
await self._run_agent(
|
|
127
|
+
run_id, request.agent_name, request.inputs
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
return self.runs[run_id]
|
|
131
|
+
|
|
132
|
+
except Exception as e:
|
|
133
|
+
logger.error(f"Error starting run: {e!s}")
|
|
134
|
+
raise HTTPException(status_code=500, detail=str(e))
|
|
135
|
+
|
|
136
|
+
@self.app.get("/run/{run_id}", response_model=FlockAPIResponse)
|
|
137
|
+
async def get_run_status(run_id: str):
|
|
138
|
+
"""Get the status of a run."""
|
|
139
|
+
if run_id not in self.runs:
|
|
140
|
+
raise HTTPException(status_code=404, detail="Run not found")
|
|
141
|
+
return self.runs[run_id]
|
|
142
|
+
|
|
143
|
+
@self.app.get("/agents")
|
|
144
|
+
async def list_agents():
|
|
145
|
+
"""List all available agents."""
|
|
146
|
+
return {
|
|
147
|
+
"agents": [
|
|
148
|
+
{
|
|
149
|
+
"name": agent.name,
|
|
150
|
+
"description": agent.description,
|
|
151
|
+
"input_schema": agent.input,
|
|
152
|
+
"output_schema": agent.output,
|
|
153
|
+
"hand_off": agent.hand_off,
|
|
154
|
+
}
|
|
155
|
+
for agent in self.flock.agents.values()
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async def _run_agent(
|
|
160
|
+
self, run_id: str, agent_name: str, inputs: dict[str, Any]
|
|
161
|
+
):
|
|
162
|
+
"""Execute an agent run."""
|
|
163
|
+
try:
|
|
164
|
+
# Get the agent
|
|
165
|
+
if agent_name not in self.flock.agents:
|
|
166
|
+
raise ValueError(f"Agent '{agent_name}' not found")
|
|
167
|
+
|
|
168
|
+
agent = self.flock.agents[agent_name]
|
|
169
|
+
|
|
170
|
+
# Run the agent
|
|
171
|
+
result = await agent.run_async(inputs)
|
|
172
|
+
|
|
173
|
+
# Update run status
|
|
174
|
+
self.runs[run_id].status = "completed"
|
|
175
|
+
self.runs[run_id].result = result
|
|
176
|
+
self.runs[run_id].completed_at = datetime.now()
|
|
177
|
+
|
|
178
|
+
except Exception as e:
|
|
179
|
+
logger.error(f"Error in run {run_id}: {e!s}")
|
|
180
|
+
self.runs[run_id].status = "failed"
|
|
181
|
+
self.runs[run_id].error = str(e)
|
|
182
|
+
self.runs[run_id].completed_at = datetime.now()
|
|
183
|
+
|
|
184
|
+
async def _run_flock(
|
|
185
|
+
self, run_id: str, agent_name: str, inputs: dict[str, Any]
|
|
186
|
+
):
|
|
187
|
+
"""Execute an agent run."""
|
|
188
|
+
try:
|
|
189
|
+
# Get the agent
|
|
190
|
+
if agent_name not in self.flock.agents:
|
|
191
|
+
raise ValueError(f"Agent '{agent_name}' not found")
|
|
192
|
+
|
|
193
|
+
result = await self.flock.run_async(
|
|
194
|
+
start_agent=agent_name, input=inputs
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
# Update run status
|
|
198
|
+
self.runs[run_id].status = "completed"
|
|
199
|
+
self.runs[run_id].result = result
|
|
200
|
+
self.runs[run_id].completed_at = datetime.now()
|
|
201
|
+
|
|
202
|
+
except Exception as e:
|
|
203
|
+
logger.error(f"Error in run {run_id}: {e!s}")
|
|
204
|
+
self.runs[run_id].status = "failed"
|
|
205
|
+
self.runs[run_id].error = str(e)
|
|
206
|
+
self.runs[run_id].completed_at = datetime.now()
|
|
207
|
+
|
|
208
|
+
def start(self, host: str = "0.0.0.0", port: int = 8344):
|
|
209
|
+
"""Start the API server."""
|
|
210
|
+
uvicorn.run(self.app, host=host, port=port)
|
|
211
|
+
|
|
212
|
+
async def stop(self):
|
|
213
|
+
"""Stop the API server."""
|
|
214
|
+
# Cleanup if needed
|
|
215
|
+
pass
|
|
@@ -987,6 +987,20 @@ wheels = [
|
|
|
987
987
|
{ url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 },
|
|
988
988
|
]
|
|
989
989
|
|
|
990
|
+
[[package]]
|
|
991
|
+
name = "fastapi"
|
|
992
|
+
version = "0.115.8"
|
|
993
|
+
source = { registry = "https://pypi.org/simple" }
|
|
994
|
+
dependencies = [
|
|
995
|
+
{ name = "pydantic" },
|
|
996
|
+
{ name = "starlette" },
|
|
997
|
+
{ name = "typing-extensions" },
|
|
998
|
+
]
|
|
999
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a2/b2/5a5dc4affdb6661dea100324e19a7721d5dc524b464fe8e366c093fd7d87/fastapi-0.115.8.tar.gz", hash = "sha256:0ce9111231720190473e222cdf0f07f7206ad7e53ea02beb1d2dc36e2f0741e9", size = 295403 }
|
|
1000
|
+
wheels = [
|
|
1001
|
+
{ url = "https://files.pythonhosted.org/packages/8f/7d/2d6ce181d7a5f51dedb8c06206cbf0ec026a99bf145edd309f9e17c3282f/fastapi-0.115.8-py3-none-any.whl", hash = "sha256:753a96dd7e036b34eeef8babdfcfe3f28ff79648f86551eb36bfc1b0bf4a8cbf", size = 94814 },
|
|
1002
|
+
]
|
|
1003
|
+
|
|
990
1004
|
[[package]]
|
|
991
1005
|
name = "fastcore"
|
|
992
1006
|
version = "1.7.29"
|
|
@@ -1032,13 +1046,14 @@ wheels = [
|
|
|
1032
1046
|
|
|
1033
1047
|
[[package]]
|
|
1034
1048
|
name = "flock-core"
|
|
1035
|
-
version = "0.3.
|
|
1049
|
+
version = "0.3.5"
|
|
1036
1050
|
source = { editable = "." }
|
|
1037
1051
|
dependencies = [
|
|
1038
1052
|
{ name = "cloudpickle" },
|
|
1039
1053
|
{ name = "devtools" },
|
|
1040
1054
|
{ name = "dspy" },
|
|
1041
1055
|
{ name = "duckduckgo-search" },
|
|
1056
|
+
{ name = "fastapi" },
|
|
1042
1057
|
{ name = "httpx" },
|
|
1043
1058
|
{ name = "loguru" },
|
|
1044
1059
|
{ name = "matplotlib" },
|
|
@@ -1061,6 +1076,7 @@ dependencies = [
|
|
|
1061
1076
|
{ name = "tiktoken" },
|
|
1062
1077
|
{ name = "toml" },
|
|
1063
1078
|
{ name = "tqdm" },
|
|
1079
|
+
{ name = "uvicorn" },
|
|
1064
1080
|
{ name = "zep-python" },
|
|
1065
1081
|
]
|
|
1066
1082
|
|
|
@@ -1108,6 +1124,7 @@ requires-dist = [
|
|
|
1108
1124
|
{ name = "docling", marker = "extra == 'all-tools'", specifier = ">=2.18.0" },
|
|
1109
1125
|
{ name = "dspy", specifier = "==2.5.42" },
|
|
1110
1126
|
{ name = "duckduckgo-search", specifier = ">=7.3.2" },
|
|
1127
|
+
{ name = "fastapi", specifier = ">=0.115.8" },
|
|
1111
1128
|
{ name = "httpx", specifier = ">=0.28.1" },
|
|
1112
1129
|
{ name = "loguru", specifier = ">=0.7.3" },
|
|
1113
1130
|
{ name = "markdownify", marker = "extra == 'all-tools'", specifier = ">=0.14.1" },
|
|
@@ -1134,6 +1151,7 @@ requires-dist = [
|
|
|
1134
1151
|
{ name = "tiktoken", specifier = ">=0.8.0" },
|
|
1135
1152
|
{ name = "toml", specifier = ">=0.10.2" },
|
|
1136
1153
|
{ name = "tqdm", specifier = ">=4.67.1" },
|
|
1154
|
+
{ name = "uvicorn", specifier = ">=0.34.0" },
|
|
1137
1155
|
{ name = "zep-python", specifier = ">=2.0.2" },
|
|
1138
1156
|
]
|
|
1139
1157
|
provides-extras = ["all-tools", "tools"]
|