flock-core 0.3.6__tar.gz → 0.3.8__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.6 → flock_core-0.3.8}/.gitignore +1 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/PKG-INFO +1 -1
- flock_core-0.3.8/docs/architecture/components.md +477 -0
- flock_core-0.3.8/docs/architecture/overview.md +216 -0
- flock_core-0.3.8/docs/core-concepts/agents.md +386 -0
- flock_core-0.3.8/docs/core-concepts/declarative.md +248 -0
- flock_core-0.3.8/docs/core-concepts/error-handling.md +351 -0
- flock_core-0.3.8/docs/core-concepts/evaluators.md +263 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/core-concepts/memory.md +1 -1
- flock_core-0.3.8/docs/core-concepts/modules/memory.md +331 -0
- flock_core-0.3.8/docs/core-concepts/modules/metrics.md +325 -0
- flock_core-0.3.8/docs/core-concepts/modules/output.md +331 -0
- flock_core-0.3.8/docs/core-concepts/modules.md +368 -0
- flock_core-0.3.8/docs/core-concepts/routers/agent.md +197 -0
- flock_core-0.3.8/docs/core-concepts/routers/default.md +200 -0
- flock_core-0.3.8/docs/core-concepts/routers/llm.md +169 -0
- flock_core-0.3.8/docs/core-concepts/routers.md +227 -0
- flock_core-0.3.8/docs/core-concepts/type-system.md +273 -0
- flock_core-0.3.8/docs/core-concepts/workflows.md +300 -0
- flock_core-0.3.8/docs/deployment/monitoring.md +452 -0
- flock_core-0.3.8/docs/deployment/production-setup.md +471 -0
- flock_core-0.3.8/docs/examples/chain-gang.md +379 -0
- flock_core-0.3.8/docs/examples/hello-flock.md +270 -0
- flock_core-0.3.8/docs/getting-started/configuration.md +371 -0
- flock_core-0.3.8/docs/getting-started/installation.md +129 -0
- flock_core-0.3.8/docs/integrations/rest-api.md +296 -0
- flock_core-0.3.8/docs/integrations/temporal.md +240 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/release-notes/release_notes.md +31 -10
- flock_core-0.3.8/examples/01_introduction/06_simple_hand_off.py +42 -0
- flock_core-0.3.8/examples/02_cook_book/repo_analyzer/repo_analyzer.py +721 -0
- flock_core-0.3.8/examples/02_cook_book/repo_analyzer/repo_analyzer_llm.py +285 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/self_improvement_with_memory.py +3 -2
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/03_misc/evaluator/multi_hops.py +1 -1
- flock_core-0.3.8/examples/03_misc/router/router_example.py +99 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/mkdocs.yml +18 -10
- {flock_core-0.3.6 → flock_core-0.3.8}/pyproject.toml +1 -1
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/assets/release_notes.md +37 -9
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/flock_agent.py +5 -23
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/flock_factory.py +8 -5
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/flock_module.py +3 -1
- flock_core-0.3.8/src/flock/core/flock_router.py +70 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/evaluators/zep/zep_evaluator.py +2 -0
- flock_core-0.3.8/src/flock/routers/__init__.py +1 -0
- flock_core-0.3.8/src/flock/routers/agent/__init__.py +1 -0
- flock_core-0.3.8/src/flock/routers/agent/agent_router.py +234 -0
- flock_core-0.3.8/src/flock/routers/agent/handoff_agent.py +58 -0
- flock_core-0.3.8/src/flock/routers/default/__init__.py +1 -0
- flock_core-0.3.8/src/flock/routers/default/default_router.py +76 -0
- flock_core-0.3.8/src/flock/routers/llm/__init__.py +1 -0
- flock_core-0.3.8/src/flock/routers/llm/llm_router.py +363 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/workflow/activities.py +74 -33
- flock_core-0.3.8/tests/unittests/test_agent_based_handoff.py +499 -0
- flock_core-0.3.8/tests/unittests/test_agent_router_property.py +125 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/uv.lock +1 -1
- flock_core-0.3.6/docs/architecture/components.md +0 -3
- flock_core-0.3.6/docs/architecture/overview.md +0 -3
- flock_core-0.3.6/docs/core-concepts/agents.md +0 -3
- flock_core-0.3.6/docs/core-concepts/declarative.md +0 -3
- flock_core-0.3.6/docs/core-concepts/error-handling.md +0 -3
- flock_core-0.3.6/docs/core-concepts/evaluators.md +0 -1
- flock_core-0.3.6/docs/core-concepts/modules.md +0 -1
- flock_core-0.3.6/docs/core-concepts/workflows.md +0 -3
- flock_core-0.3.6/docs/deployment/monitoring.md +0 -3
- flock_core-0.3.6/docs/deployment/production-setup.md +0 -3
- flock_core-0.3.6/docs/examples/chain-gang.md +0 -3
- flock_core-0.3.6/docs/examples/hello-flock.md +0 -3
- flock_core-0.3.6/docs/examples/type-system.md +0 -3
- flock_core-0.3.6/docs/getting-started/configuration.md +0 -3
- flock_core-0.3.6/docs/getting-started/installation.md +0 -3
- flock_core-0.3.6/docs/integrations/temporal.md +0 -3
- flock_core-0.3.6/examples/01_introduction/06_simple_hand_off.py +0 -31
- {flock_core-0.3.6 → flock_core-0.3.8}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.env_template +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.vscode/launch.json +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.vscode/settings.json +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/.vscode/tasks.json +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/LICENSE +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/README.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/advanced/complex-workflows.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/advanced/custom-agents.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/advanced/performance.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/advanced/testing.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/api/flock-core.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/api/flockagent.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/api/types.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/api/utilities.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/architecture/design-decisions.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/drawio/architecture.drawio +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/flock.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/getting-started/first_agent_00.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/hummingbird.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/icon.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/logo.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/memory_concepts.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/memory_flow.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/assets/images/memory_flow_chart.png +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/contributing/code-style.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/contributing/development.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/contributing/documentation.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/contributing/testing.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/deployment/scalability.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/deployment/security.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/development/dev.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/development/replace-dspy/implementation_plan.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/development/topics.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/examples/pydantic.md +0 -0
- {flock_core-0.3.6/docs/core-concepts → flock_core-0.3.8/docs/examples}/type-system.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/features/agent-chaining.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/features/agent-definition.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/features/lifecycle-hooks.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/features/pydantic.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/features/type-safety.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/getting-started/concepts.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/getting-started/quickstart.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/index.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/integrations/dspy.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/integrations/litellm.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/integrations/tavily.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/tutorials/blog-generator.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/tutorials/custom-tools.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/tutorials/error-recovery.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/docs/tutorials/multi-agent.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/01_introduction/01_simple_example.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/01_introduction/02_typed_output.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/01_introduction/03_tool_and_code_agent.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/01_introduction/04_descriptions.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/01_introduction/05_typed_output2.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/flock_without_llms.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/long_research_no_handoff.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/painting_by_numbers.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/project_manager.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/save_and_load/load_01.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/save_and_load/load_02.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/save_and_load/load_03.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/save_and_load/load_04.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/save_and_load/save_01.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/save_and_load/save_02.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/02_cook_book/save_and_load/save_03.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/03_misc/api/api_client.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/03_misc/api/api_server.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/03_misc/modules/use_modules.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/README.md +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/documentation/getting-started/first_agent_01.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/documentation/getting-started/first_agent_02.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/documentation/getting-started/first_agent_03.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/notebooks_wip/Untitled-1.ipynb +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/notebooks_wip/my_agent.json +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/playground/memory.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/playground/self_learner.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/examples/playground/self_learner2.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/requirements.txt +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/__init__.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/constants.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/load_release_notes.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/cli/settings.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/config.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/__init__.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/context/context.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/context/context_manager.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/context/context_vars.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/flock.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/flock_api.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/flock_evaluator.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/interpreter/python_interpreter.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/formatters/themes.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/logging.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/telemetry.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/mixin/dspy_integration.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/registry/agent_registry.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/serialization/secure_serializer.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/serialization/serializable.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/tools/basic_tools.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/tools/dev_tools/github.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/util/cli_helper.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/evaluators/natural_language/natural_language_evaluator.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/modules/callback/callback_module.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/modules/memory/memory_module.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/modules/memory/memory_parser.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/modules/memory/memory_storage.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/modules/output/output_module.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/modules/performance/metrics_module.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/modules/zep/zep_module.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/django.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/github.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/material.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/square.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/src/flock/workflow/workflow.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/tests/integration/test_agent_integration.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/tests/unittests/test_flock.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/tests/unittests/test_flock_agent.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/tests/unittests/test_memory_operations.py +0 -0
- {flock_core-0.3.6 → flock_core-0.3.8}/tests/unittests/test_memory_store.py +0 -0
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
# Architecture Components
|
|
2
|
+
|
|
3
|
+
This document provides detailed information about the specific components of the Flock framework and how they interact with each other.
|
|
4
|
+
|
|
5
|
+
## Flock
|
|
6
|
+
|
|
7
|
+
The `Flock` class is the main orchestrator for creating and executing agents. It manages the registration of agents and tools, sets up the global context, and runs the agent workflows.
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
classDiagram
|
|
11
|
+
class Flock {
|
|
12
|
+
+model: str
|
|
13
|
+
+local_debug: bool
|
|
14
|
+
+enable_logging: bool
|
|
15
|
+
+enable_telemetry: bool
|
|
16
|
+
+temporal_executor_config: TemporalExecutorConfig
|
|
17
|
+
+telemetry_config: TelemetryConfig
|
|
18
|
+
+logger: Logger
|
|
19
|
+
+add_agent(agent: FlockAgent)
|
|
20
|
+
+add_tool(tool_name: str, tool: Callable)
|
|
21
|
+
+run(start_agent: FlockAgent, input: dict)
|
|
22
|
+
+run_async(start_agent: FlockAgent, input: dict)
|
|
23
|
+
+save_to_file(file_path: str)
|
|
24
|
+
+load_from_file(file_path: str)
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Key Features
|
|
29
|
+
|
|
30
|
+
- **Agent Management**: Add and manage multiple agents in a single system.
|
|
31
|
+
- **Tool Registration**: Register tools that agents can use during execution.
|
|
32
|
+
- **Context Management**: Set up and maintain the global execution context.
|
|
33
|
+
- **Workflow Execution**: Run agent workflows either locally or via Temporal.
|
|
34
|
+
- **Serialization**: Save and load Flock instances to/from files.
|
|
35
|
+
|
|
36
|
+
### Important Methods
|
|
37
|
+
|
|
38
|
+
- `add_agent(agent)`: Add a new agent to the Flock system.
|
|
39
|
+
- `add_tool(tool_name, tool)`: Register a tool with the Flock system.
|
|
40
|
+
- `run(start_agent, input, ...)`: Run an agent workflow synchronously.
|
|
41
|
+
- `run_async(start_agent, input, ...)`: Run an agent workflow asynchronously.
|
|
42
|
+
- `save_to_file(file_path)`: Save the Flock instance to a file.
|
|
43
|
+
- `load_from_file(file_path)`: Load a Flock instance from a file.
|
|
44
|
+
|
|
45
|
+
## FlockAgent
|
|
46
|
+
|
|
47
|
+
The `FlockAgent` class is the core, declarative base class for all agents in the Flock framework. It defines the agent's inputs, outputs, tools, and lifecycle hooks.
|
|
48
|
+
|
|
49
|
+
```mermaid
|
|
50
|
+
classDiagram
|
|
51
|
+
class FlockAgent {
|
|
52
|
+
+name: str
|
|
53
|
+
+model: str
|
|
54
|
+
+description: str
|
|
55
|
+
+input: str
|
|
56
|
+
+output: str
|
|
57
|
+
+tools: list
|
|
58
|
+
+hand_off: HandOff
|
|
59
|
+
+evaluator: FlockEvaluator
|
|
60
|
+
+modules: list
|
|
61
|
+
+initialize(inputs: dict)
|
|
62
|
+
+evaluate(inputs: dict)
|
|
63
|
+
+terminate(inputs: dict, result: dict)
|
|
64
|
+
+on_error(error: Exception, inputs: dict)
|
|
65
|
+
+run(inputs: dict)
|
|
66
|
+
+run_async(inputs: dict)
|
|
67
|
+
+add_module(module: FlockModule)
|
|
68
|
+
+save_to_file(file_path: str)
|
|
69
|
+
+load_from_file(file_path: str)
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Key Features
|
|
74
|
+
|
|
75
|
+
- **Declarative Definition**: Define agents by their inputs and outputs.
|
|
76
|
+
- **Type Hints**: Support for type hints and descriptions in input/output definitions.
|
|
77
|
+
- **Tool Integration**: Use tools to extend agent capabilities.
|
|
78
|
+
- **Lifecycle Hooks**: Hooks for initialization, termination, evaluation, and error handling.
|
|
79
|
+
- **Module Support**: Attach modules to extend agent functionality.
|
|
80
|
+
- **Serialization**: Save and load agent instances to/from files.
|
|
81
|
+
|
|
82
|
+
### Important Properties
|
|
83
|
+
|
|
84
|
+
- `name`: Unique identifier for the agent.
|
|
85
|
+
- `model`: The model to use (e.g., 'openai/gpt-4o').
|
|
86
|
+
- `description`: A human-readable description of the agent.
|
|
87
|
+
- `input`: A comma-separated list of input keys with optional type hints and descriptions.
|
|
88
|
+
- `output`: A comma-separated list of output keys with optional type hints and descriptions.
|
|
89
|
+
- `tools`: An optional list of callable tools that the agent can leverage during execution.
|
|
90
|
+
- `hand_off`: Specifies the next agent in the workflow or a callable that determines the handoff.
|
|
91
|
+
- `evaluator`: The evaluator to use for agent evaluation.
|
|
92
|
+
- `modules`: FlockModules attached to this agent.
|
|
93
|
+
|
|
94
|
+
### Lifecycle Hooks
|
|
95
|
+
|
|
96
|
+
- `initialize(inputs)`: Called when the agent starts running.
|
|
97
|
+
- `evaluate(inputs)`: Called to evaluate inputs and produce outputs.
|
|
98
|
+
- `terminate(inputs, result)`: Called when the agent finishes running.
|
|
99
|
+
- `on_error(error, inputs)`: Called when an error occurs during agent execution.
|
|
100
|
+
|
|
101
|
+
## FlockEvaluator
|
|
102
|
+
|
|
103
|
+
The `FlockEvaluator` class is the base class for all evaluators in Flock. An evaluator is responsible for taking inputs and producing outputs using some evaluation strategy.
|
|
104
|
+
|
|
105
|
+
```mermaid
|
|
106
|
+
classDiagram
|
|
107
|
+
class FlockEvaluator {
|
|
108
|
+
+name: str
|
|
109
|
+
+config: FlockEvaluatorConfig
|
|
110
|
+
+evaluate(agent: FlockAgent, inputs: dict, tools: list)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
class DeclarativeEvaluator {
|
|
114
|
+
+evaluate(agent: FlockAgent, inputs: dict, tools: list)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
class NaturalLanguageEvaluator {
|
|
118
|
+
+evaluate(agent: FlockAgent, inputs: dict, tools: list)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
FlockEvaluator <|-- DeclarativeEvaluator
|
|
122
|
+
FlockEvaluator <|-- NaturalLanguageEvaluator
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Key Features
|
|
126
|
+
|
|
127
|
+
- **Evaluation Strategy**: Define how inputs are evaluated to produce outputs.
|
|
128
|
+
- **Configuration**: Configure the evaluator's behavior.
|
|
129
|
+
- **Abstract Interface**: Provide a common interface for different evaluation strategies.
|
|
130
|
+
|
|
131
|
+
### Important Methods
|
|
132
|
+
|
|
133
|
+
- `evaluate(agent, inputs, tools)`: Evaluate inputs to produce outputs.
|
|
134
|
+
|
|
135
|
+
### Built-in Evaluators
|
|
136
|
+
|
|
137
|
+
- **DeclarativeEvaluator**: The default evaluator that uses a declarative approach to evaluation.
|
|
138
|
+
- **NaturalLanguageEvaluator**: An evaluator that uses natural language for evaluation.
|
|
139
|
+
|
|
140
|
+
## FlockModule
|
|
141
|
+
|
|
142
|
+
The `FlockModule` class is the base class for all Flock modules. Modules can hook into agent lifecycle events and modify or enhance agent behavior.
|
|
143
|
+
|
|
144
|
+
```mermaid
|
|
145
|
+
classDiagram
|
|
146
|
+
class FlockModule {
|
|
147
|
+
+name: str
|
|
148
|
+
+config: FlockModuleConfig
|
|
149
|
+
+initialize(agent: FlockAgent, inputs: dict)
|
|
150
|
+
+pre_evaluate(agent: FlockAgent, inputs: dict)
|
|
151
|
+
+post_evaluate(agent: FlockAgent, inputs: dict, result: dict)
|
|
152
|
+
+terminate(agent: FlockAgent, inputs: dict, result: dict)
|
|
153
|
+
+on_error(agent: FlockAgent, error: Exception, inputs: dict)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
class MemoryModule {
|
|
157
|
+
+initialize(agent: FlockAgent, inputs: dict)
|
|
158
|
+
+pre_evaluate(agent: FlockAgent, inputs: dict)
|
|
159
|
+
+post_evaluate(agent: FlockAgent, inputs: dict, result: dict)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
class MetricsModule {
|
|
163
|
+
+initialize(agent: FlockAgent, inputs: dict)
|
|
164
|
+
+pre_evaluate(agent: FlockAgent, inputs: dict)
|
|
165
|
+
+post_evaluate(agent: FlockAgent, inputs: dict, result: dict)
|
|
166
|
+
+terminate(agent: FlockAgent, inputs: dict, result: dict)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
class OutputModule {
|
|
170
|
+
+post_evaluate(agent: FlockAgent, inputs: dict, result: dict)
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
FlockModule <|-- MemoryModule
|
|
174
|
+
FlockModule <|-- MetricsModule
|
|
175
|
+
FlockModule <|-- OutputModule
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Key Features
|
|
179
|
+
|
|
180
|
+
- **Lifecycle Hooks**: Hook into agent lifecycle events.
|
|
181
|
+
- **State Management**: Maintain state across agent executions.
|
|
182
|
+
- **Configuration**: Configure the module's behavior.
|
|
183
|
+
- **Pluggable**: Easily attach to and detach from agents.
|
|
184
|
+
|
|
185
|
+
### Lifecycle Hooks
|
|
186
|
+
|
|
187
|
+
- `initialize(agent, inputs)`: Called when the agent starts running.
|
|
188
|
+
- `pre_evaluate(agent, inputs)`: Called before agent evaluation, can modify inputs.
|
|
189
|
+
- `post_evaluate(agent, inputs, result)`: Called after agent evaluation, can modify results.
|
|
190
|
+
- `terminate(agent, inputs, result)`: Called when the agent finishes running.
|
|
191
|
+
- `on_error(agent, error, inputs)`: Called when an error occurs during agent execution.
|
|
192
|
+
|
|
193
|
+
### Built-in Modules
|
|
194
|
+
|
|
195
|
+
- **MemoryModule**: Provides persistent memory for agents.
|
|
196
|
+
- **MetricsModule**: Collects metrics about agent execution.
|
|
197
|
+
- **OutputModule**: Formats and stores agent outputs.
|
|
198
|
+
|
|
199
|
+
## HandOff
|
|
200
|
+
|
|
201
|
+
The `HandOff` class is used to specify the next agent in a workflow and the input data to pass to it.
|
|
202
|
+
|
|
203
|
+
```mermaid
|
|
204
|
+
classDiagram
|
|
205
|
+
class HandOff {
|
|
206
|
+
+next_agent: Union[str, FlockAgent, Callable]
|
|
207
|
+
+input: dict
|
|
208
|
+
+context: dict
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Key Properties
|
|
213
|
+
|
|
214
|
+
- `next_agent`: The next agent to invoke (either a string name, a FlockAgent instance, or a callable that returns an agent).
|
|
215
|
+
- `input`: Input data for the next agent.
|
|
216
|
+
- `context`: Override context parameters.
|
|
217
|
+
|
|
218
|
+
## Registry
|
|
219
|
+
|
|
220
|
+
The registry manages the registration of agents and tools.
|
|
221
|
+
|
|
222
|
+
```mermaid
|
|
223
|
+
classDiagram
|
|
224
|
+
class Registry {
|
|
225
|
+
+agents: dict
|
|
226
|
+
+tools: dict
|
|
227
|
+
+register_agent(agent: FlockAgent)
|
|
228
|
+
+register_tool(tool_name: str, tool: Callable)
|
|
229
|
+
+get_agent(agent_name: str)
|
|
230
|
+
+get_tool(tool_name: str)
|
|
231
|
+
+get_all_agents()
|
|
232
|
+
+get_all_tools()
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Key Features
|
|
237
|
+
|
|
238
|
+
- **Agent Registration**: Register agents with the registry.
|
|
239
|
+
- **Tool Registration**: Register tools with the registry.
|
|
240
|
+
- **Lookup**: Look up agents and tools by name.
|
|
241
|
+
|
|
242
|
+
### Important Methods
|
|
243
|
+
|
|
244
|
+
- `register_agent(agent)`: Register an agent with the registry.
|
|
245
|
+
- `register_tool(tool_name, tool)`: Register a tool with the registry.
|
|
246
|
+
- `get_agent(agent_name)`: Get an agent by name.
|
|
247
|
+
- `get_tool(tool_name)`: Get a tool by name.
|
|
248
|
+
- `get_all_agents()`: Get all registered agents.
|
|
249
|
+
- `get_all_tools()`: Get all registered tools.
|
|
250
|
+
|
|
251
|
+
## Context
|
|
252
|
+
|
|
253
|
+
The context maintains the global execution state.
|
|
254
|
+
|
|
255
|
+
```mermaid
|
|
256
|
+
classDiagram
|
|
257
|
+
class Context {
|
|
258
|
+
+variables: dict
|
|
259
|
+
+get(key: str, default=None)
|
|
260
|
+
+set(key: str, value)
|
|
261
|
+
+update(variables: dict)
|
|
262
|
+
+clear()
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Key Features
|
|
267
|
+
|
|
268
|
+
- **Variable Storage**: Store global variables that are accessible to all agents.
|
|
269
|
+
- **Variable Access**: Get and set context variables.
|
|
270
|
+
- **Variable Lifecycle**: Manage the lifecycle of context variables.
|
|
271
|
+
|
|
272
|
+
### Important Methods
|
|
273
|
+
|
|
274
|
+
- `get(key, default=None)`: Get a context variable.
|
|
275
|
+
- `set(key, value)`: Set a context variable.
|
|
276
|
+
- `update(variables)`: Update multiple context variables.
|
|
277
|
+
- `clear()`: Clear all context variables.
|
|
278
|
+
|
|
279
|
+
## Executor
|
|
280
|
+
|
|
281
|
+
The executor runs agent workflows. Flock supports two types of executors:
|
|
282
|
+
|
|
283
|
+
```mermaid
|
|
284
|
+
classDiagram
|
|
285
|
+
class Executor {
|
|
286
|
+
+execute(start_agent: FlockAgent, input: dict)
|
|
287
|
+
+execute_async(start_agent: FlockAgent, input: dict)
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
class LocalExecutor {
|
|
291
|
+
+execute(start_agent: FlockAgent, input: dict)
|
|
292
|
+
+execute_async(start_agent: FlockAgent, input: dict)
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
class TemporalExecutor {
|
|
296
|
+
+config: TemporalExecutorConfig
|
|
297
|
+
+execute(start_agent: FlockAgent, input: dict)
|
|
298
|
+
+execute_async(start_agent: FlockAgent, input: dict)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
Executor <|-- LocalExecutor
|
|
302
|
+
Executor <|-- TemporalExecutor
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Key Features
|
|
306
|
+
|
|
307
|
+
- **Workflow Execution**: Execute agent workflows.
|
|
308
|
+
- **Synchronous and Asynchronous Execution**: Support for both synchronous and asynchronous execution.
|
|
309
|
+
- **Error Handling**: Handle errors during workflow execution.
|
|
310
|
+
|
|
311
|
+
### Important Methods
|
|
312
|
+
|
|
313
|
+
- `execute(start_agent, input)`: Execute a workflow synchronously.
|
|
314
|
+
- `execute_async(start_agent, input)`: Execute a workflow asynchronously.
|
|
315
|
+
|
|
316
|
+
### Executor Types
|
|
317
|
+
|
|
318
|
+
- **LocalExecutor**: Runs workflows locally for development and testing.
|
|
319
|
+
- **TemporalExecutor**: Runs workflows via Temporal for production-grade execution.
|
|
320
|
+
|
|
321
|
+
## Router
|
|
322
|
+
|
|
323
|
+
The router determines the next agent in a workflow.
|
|
324
|
+
|
|
325
|
+
```mermaid
|
|
326
|
+
classDiagram
|
|
327
|
+
class FlockRouter {
|
|
328
|
+
+name: str
|
|
329
|
+
+config: FlockRouterConfig
|
|
330
|
+
+route(agent: FlockAgent, result: dict)
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
class DefaultRouter {
|
|
334
|
+
+route(agent: FlockAgent, result: dict)
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
class LLMRouter {
|
|
338
|
+
+route(agent: FlockAgent, result: dict)
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
class AgentRouter {
|
|
342
|
+
+route(agent: FlockAgent, result: dict)
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
FlockRouter <|-- DefaultRouter
|
|
346
|
+
FlockRouter <|-- LLMRouter
|
|
347
|
+
FlockRouter <|-- AgentRouter
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Key Features
|
|
351
|
+
|
|
352
|
+
- **Routing Strategy**: Define how to determine the next agent in a workflow.
|
|
353
|
+
- **Configuration**: Configure the router's behavior.
|
|
354
|
+
- **Abstract Interface**: Provide a common interface for different routing strategies.
|
|
355
|
+
|
|
356
|
+
### Important Methods
|
|
357
|
+
|
|
358
|
+
- `route(agent, result)`: Determine the next agent in the workflow.
|
|
359
|
+
|
|
360
|
+
### Router Types
|
|
361
|
+
|
|
362
|
+
- **DefaultRouter**: Uses the agent's `hand_off` property to determine the next agent.
|
|
363
|
+
- **LLMRouter**: Uses an LLM to determine the next agent.
|
|
364
|
+
- **AgentRouter**: Uses a dedicated agent to make routing decisions.
|
|
365
|
+
|
|
366
|
+
## Tools
|
|
367
|
+
|
|
368
|
+
Tools are functions that agents can use to perform specific tasks.
|
|
369
|
+
|
|
370
|
+
```mermaid
|
|
371
|
+
classDiagram
|
|
372
|
+
class Tool {
|
|
373
|
+
+name: str
|
|
374
|
+
+description: str
|
|
375
|
+
+function: Callable
|
|
376
|
+
+parameters: dict
|
|
377
|
+
+returns: dict
|
|
378
|
+
}
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### Key Features
|
|
382
|
+
|
|
383
|
+
- **Function Wrapping**: Wrap Python functions as tools.
|
|
384
|
+
- **Documentation**: Provide documentation for tools.
|
|
385
|
+
- **Parameter Validation**: Validate tool parameters.
|
|
386
|
+
- **Result Formatting**: Format tool results.
|
|
387
|
+
|
|
388
|
+
### Built-in Tools
|
|
389
|
+
|
|
390
|
+
- **Web Search**: Search the web for information.
|
|
391
|
+
- **Code Evaluation**: Evaluate Python code.
|
|
392
|
+
- **Web Content Retrieval**: Get content from web pages.
|
|
393
|
+
- **Math Evaluation**: Evaluate mathematical expressions.
|
|
394
|
+
- **Utility Functions**: Various utility functions like getting the current time.
|
|
395
|
+
|
|
396
|
+
## API Server
|
|
397
|
+
|
|
398
|
+
The API server allows you to expose your agents via HTTP endpoints.
|
|
399
|
+
|
|
400
|
+
```mermaid
|
|
401
|
+
classDiagram
|
|
402
|
+
class FlockAPI {
|
|
403
|
+
+flock: Flock
|
|
404
|
+
+app: FastAPI
|
|
405
|
+
+start(host: str, port: int)
|
|
406
|
+
+run_agent(agent_name: str, inputs: dict, async_run: bool)
|
|
407
|
+
+run_flock(agent_name: str, inputs: dict, async_run: bool)
|
|
408
|
+
+get_run_status(run_id: str)
|
|
409
|
+
+list_agents()
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### Key Features
|
|
414
|
+
|
|
415
|
+
- **HTTP Endpoints**: Expose agents via HTTP endpoints.
|
|
416
|
+
- **Synchronous and Asynchronous Execution**: Support for both synchronous and asynchronous execution.
|
|
417
|
+
- **Run Status Tracking**: Track the status of runs.
|
|
418
|
+
- **Agent Discovery**: List available agents.
|
|
419
|
+
|
|
420
|
+
### Important Methods
|
|
421
|
+
|
|
422
|
+
- `start(host, port)`: Start the API server.
|
|
423
|
+
- `run_agent(agent_name, inputs, async_run)`: Run an agent.
|
|
424
|
+
- `run_flock(agent_name, inputs, async_run)`: Run a Flock workflow.
|
|
425
|
+
- `get_run_status(run_id)`: Get the status of a run.
|
|
426
|
+
- `list_agents()`: List available agents.
|
|
427
|
+
|
|
428
|
+
## Component Interactions
|
|
429
|
+
|
|
430
|
+
The following diagram shows how the components interact with each other during a typical workflow execution:
|
|
431
|
+
|
|
432
|
+
```mermaid
|
|
433
|
+
sequenceDiagram
|
|
434
|
+
participant User
|
|
435
|
+
participant Flock
|
|
436
|
+
participant Registry
|
|
437
|
+
participant Context
|
|
438
|
+
participant Executor
|
|
439
|
+
participant Router
|
|
440
|
+
participant Agent1
|
|
441
|
+
participant Evaluator1
|
|
442
|
+
participant Module1
|
|
443
|
+
participant Agent2
|
|
444
|
+
participant Evaluator2
|
|
445
|
+
participant Module2
|
|
446
|
+
|
|
447
|
+
User->>Flock: Create Flock instance
|
|
448
|
+
User->>Flock: Add agents
|
|
449
|
+
Flock->>Registry: Register agents
|
|
450
|
+
User->>Flock: Run workflow
|
|
451
|
+
Flock->>Context: Initialize context
|
|
452
|
+
Flock->>Executor: Execute workflow
|
|
453
|
+
Executor->>Agent1: Execute agent
|
|
454
|
+
Agent1->>Module1: Initialize
|
|
455
|
+
Agent1->>Evaluator1: Evaluate
|
|
456
|
+
Evaluator1->>Agent1: Return result
|
|
457
|
+
Agent1->>Module1: Post-evaluate
|
|
458
|
+
Agent1->>Router: Determine next agent
|
|
459
|
+
Router->>Agent1: Return next agent
|
|
460
|
+
Agent1->>Agent2: Hand off
|
|
461
|
+
Agent2->>Module2: Initialize
|
|
462
|
+
Agent2->>Evaluator2: Evaluate
|
|
463
|
+
Evaluator2->>Agent2: Return result
|
|
464
|
+
Agent2->>Module2: Post-evaluate
|
|
465
|
+
Agent2->>Executor: Return result
|
|
466
|
+
Executor->>Flock: Return result
|
|
467
|
+
Flock->>User: Return result
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
## Next Steps
|
|
471
|
+
|
|
472
|
+
Now that you understand the specific components of Flock, you might want to explore:
|
|
473
|
+
|
|
474
|
+
- [Overview](overview.md) - Get a high-level overview of the Flock architecture
|
|
475
|
+
- [Design Decisions](design-decisions.md) - Understand the design decisions behind Flock
|
|
476
|
+
- [Core Concepts](../core-concepts/agents.md) - Learn about the core concepts of Flock
|
|
477
|
+
- [Examples](../examples/hello-flock.md) - See examples of Flock in action
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Architecture Overview
|
|
2
|
+
|
|
3
|
+
This document provides a high-level overview of the Flock framework's architecture, explaining the key components and how they interact with each other.
|
|
4
|
+
|
|
5
|
+
```mermaid
|
|
6
|
+
flowchart TD
|
|
7
|
+
A[Flock] --> B[FlockAgent]
|
|
8
|
+
A --> C[Registry]
|
|
9
|
+
A --> D[Context]
|
|
10
|
+
A --> E[Executor]
|
|
11
|
+
|
|
12
|
+
B --> F[Evaluator]
|
|
13
|
+
B --> G[Modules]
|
|
14
|
+
B --> H[Tools]
|
|
15
|
+
B --> I[HandOff]
|
|
16
|
+
|
|
17
|
+
E --> J[Local Executor]
|
|
18
|
+
E --> K[Temporal Executor]
|
|
19
|
+
|
|
20
|
+
F --> L[Declarative Evaluator]
|
|
21
|
+
F --> M[Natural Language Evaluator]
|
|
22
|
+
F --> N[Custom Evaluators]
|
|
23
|
+
|
|
24
|
+
G --> O[Memory Module]
|
|
25
|
+
G --> P[Metrics Module]
|
|
26
|
+
G --> Q[Output Module]
|
|
27
|
+
G --> R[Custom Modules]
|
|
28
|
+
|
|
29
|
+
C --> S[Agent Registry]
|
|
30
|
+
C --> T[Tool Registry]
|
|
31
|
+
|
|
32
|
+
style A fill:#f9d77e,stroke:#333,stroke-width:2px
|
|
33
|
+
style B,C,D,E fill:#7ecef9,stroke:#333,stroke-width:2px
|
|
34
|
+
style F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T fill:#7ef9a2,stroke:#333,stroke-width:2px
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Core Architecture
|
|
38
|
+
|
|
39
|
+
Flock is designed with a modular architecture that separates concerns and allows for flexibility and extensibility. The main components are:
|
|
40
|
+
|
|
41
|
+
1. **Flock**: The main orchestrator that manages agents, tools, and workflows.
|
|
42
|
+
2. **FlockAgent**: The base class for all agents, defining their inputs, outputs, and behavior.
|
|
43
|
+
3. **Registry**: Manages the registration of agents and tools.
|
|
44
|
+
4. **Context**: Maintains the global execution context.
|
|
45
|
+
5. **Executor**: Runs agent workflows either locally or via Temporal.
|
|
46
|
+
|
|
47
|
+
## Component Relationships
|
|
48
|
+
|
|
49
|
+
### Flock
|
|
50
|
+
|
|
51
|
+
The `Flock` class is the main entry point for the framework. It:
|
|
52
|
+
|
|
53
|
+
- Manages a collection of agents
|
|
54
|
+
- Registers tools that agents can use
|
|
55
|
+
- Maintains the global context
|
|
56
|
+
- Orchestrates the execution of workflows
|
|
57
|
+
|
|
58
|
+
### FlockAgent
|
|
59
|
+
|
|
60
|
+
The `FlockAgent` class is the core, declarative base class for all agents. It:
|
|
61
|
+
|
|
62
|
+
- Defines the agent's inputs and outputs
|
|
63
|
+
- Specifies the tools the agent can use
|
|
64
|
+
- Defines the agent's behavior through lifecycle hooks
|
|
65
|
+
- Manages the agent's modules
|
|
66
|
+
- Specifies the next agent in the workflow (handoff)
|
|
67
|
+
|
|
68
|
+
### Registry
|
|
69
|
+
|
|
70
|
+
The registry manages the registration of agents and tools. It:
|
|
71
|
+
|
|
72
|
+
- Maintains a mapping of agent names to agent instances
|
|
73
|
+
- Maintains a mapping of tool names to tool functions
|
|
74
|
+
- Provides methods for registering and retrieving agents and tools
|
|
75
|
+
|
|
76
|
+
### Context
|
|
77
|
+
|
|
78
|
+
The context maintains the global execution state. It:
|
|
79
|
+
|
|
80
|
+
- Stores global variables that are accessible to all agents
|
|
81
|
+
- Provides methods for getting and setting context variables
|
|
82
|
+
- Manages the lifecycle of context variables
|
|
83
|
+
|
|
84
|
+
### Executor
|
|
85
|
+
|
|
86
|
+
The executor runs agent workflows. Flock supports two types of executors:
|
|
87
|
+
|
|
88
|
+
- **Local Executor**: Runs workflows locally for development and testing
|
|
89
|
+
- **Temporal Executor**: Runs workflows via Temporal for production-grade execution
|
|
90
|
+
|
|
91
|
+
## Execution Flow
|
|
92
|
+
|
|
93
|
+
The execution flow in Flock follows these steps:
|
|
94
|
+
|
|
95
|
+
1. **Initialization**: The Flock instance is created and agents are added.
|
|
96
|
+
2. **Registration**: Agents and tools are registered with the registry.
|
|
97
|
+
3. **Context Setup**: The global context is initialized with standardized variables.
|
|
98
|
+
4. **Workflow Execution**: The agent workflow is executed either locally or via Temporal.
|
|
99
|
+
5. **Agent Execution**: Each agent in the workflow is executed in sequence.
|
|
100
|
+
6. **Handoff**: Agents can hand off to other agents to continue the workflow.
|
|
101
|
+
7. **Termination**: The workflow terminates when the last agent completes or an error occurs.
|
|
102
|
+
|
|
103
|
+
```mermaid
|
|
104
|
+
sequenceDiagram
|
|
105
|
+
participant User
|
|
106
|
+
participant Flock
|
|
107
|
+
participant Registry
|
|
108
|
+
participant Context
|
|
109
|
+
participant Executor
|
|
110
|
+
participant Agent1
|
|
111
|
+
participant Agent2
|
|
112
|
+
|
|
113
|
+
User->>Flock: Create Flock instance
|
|
114
|
+
User->>Flock: Add agents
|
|
115
|
+
Flock->>Registry: Register agents
|
|
116
|
+
User->>Flock: Run workflow
|
|
117
|
+
Flock->>Context: Initialize context
|
|
118
|
+
Flock->>Executor: Execute workflow
|
|
119
|
+
Executor->>Agent1: Execute agent
|
|
120
|
+
Agent1->>Agent1: Initialize
|
|
121
|
+
Agent1->>Agent1: Evaluate
|
|
122
|
+
Agent1->>Agent1: Terminate
|
|
123
|
+
Agent1->>Agent2: Hand off
|
|
124
|
+
Agent2->>Agent2: Initialize
|
|
125
|
+
Agent2->>Agent2: Evaluate
|
|
126
|
+
Agent2->>Agent2: Terminate
|
|
127
|
+
Agent2->>Executor: Return result
|
|
128
|
+
Executor->>Flock: Return result
|
|
129
|
+
Flock->>User: Return result
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Evaluators
|
|
133
|
+
|
|
134
|
+
Evaluators are responsible for evaluating agent inputs to produce outputs. Flock supports different types of evaluators:
|
|
135
|
+
|
|
136
|
+
- **Declarative Evaluator**: The default evaluator that uses a declarative approach to evaluation.
|
|
137
|
+
- **Natural Language Evaluator**: An evaluator that uses natural language for evaluation.
|
|
138
|
+
- **Custom Evaluators**: You can create custom evaluators by subclassing `FlockEvaluator`.
|
|
139
|
+
|
|
140
|
+
## Modules
|
|
141
|
+
|
|
142
|
+
Modules are pluggable components that can hook into agent lifecycle events. Flock includes several built-in modules:
|
|
143
|
+
|
|
144
|
+
- **Memory Module**: Provides persistent memory for agents.
|
|
145
|
+
- **Metrics Module**: Collects metrics about agent execution.
|
|
146
|
+
- **Output Module**: Formats and stores agent outputs.
|
|
147
|
+
- **Custom Modules**: You can create custom modules by subclassing `FlockModule`.
|
|
148
|
+
|
|
149
|
+
## Tools
|
|
150
|
+
|
|
151
|
+
Tools are functions that agents can use to perform specific tasks. Flock includes several built-in tools:
|
|
152
|
+
|
|
153
|
+
- **Web Search**: Search the web for information.
|
|
154
|
+
- **Code Evaluation**: Evaluate Python code.
|
|
155
|
+
- **Web Content Retrieval**: Get content from web pages.
|
|
156
|
+
- **Math Evaluation**: Evaluate mathematical expressions.
|
|
157
|
+
- **Utility Functions**: Various utility functions like getting the current time.
|
|
158
|
+
- **Custom Tools**: You can create custom tools by defining Python functions.
|
|
159
|
+
|
|
160
|
+
## Routers
|
|
161
|
+
|
|
162
|
+
Routers determine the next agent in a workflow. Flock supports different types of routers:
|
|
163
|
+
|
|
164
|
+
- **Default Router**: Uses the agent's `hand_off` property to determine the next agent.
|
|
165
|
+
- **LLM Router**: Uses an LLM to determine the next agent.
|
|
166
|
+
- **Agent Router**: Uses a dedicated agent to make routing decisions.
|
|
167
|
+
- **Custom Routers**: You can create custom routers by subclassing `FlockRouter`.
|
|
168
|
+
|
|
169
|
+
## Temporal Integration
|
|
170
|
+
|
|
171
|
+
Flock integrates with Temporal for production-grade workflow execution. This provides:
|
|
172
|
+
|
|
173
|
+
- **Durability**: Persistent state management even in the case of failures.
|
|
174
|
+
- **Retries & Error Handling**: Automatic recovery via Temporal's built-in mechanisms.
|
|
175
|
+
- **Scalability**: Seamless orchestration of distributed agent workflows.
|
|
176
|
+
|
|
177
|
+
## API Server
|
|
178
|
+
|
|
179
|
+
Flock includes a REST API server that allows you to expose your agents via HTTP endpoints. This makes it easy to integrate Flock agents into web applications, microservices, or any system that can make HTTP requests.
|
|
180
|
+
|
|
181
|
+
## Design Principles
|
|
182
|
+
|
|
183
|
+
Flock is designed with the following principles in mind:
|
|
184
|
+
|
|
185
|
+
### Declarative Approach
|
|
186
|
+
|
|
187
|
+
Flock takes a declarative approach to agent definition, focusing on what agents need as input and what they produce as output, rather than requiring complex prompt engineering.
|
|
188
|
+
|
|
189
|
+
### Type Safety
|
|
190
|
+
|
|
191
|
+
Flock uses Pydantic models for type safety and clear contracts for inputs and outputs. This provides automatic JSON serialization/deserialization, strong typing, and an explicit contract for inputs and outputs.
|
|
192
|
+
|
|
193
|
+
### Lifecycle Hooks
|
|
194
|
+
|
|
195
|
+
Flock agents support lifecycle hooks such as `initialize()`, `terminate()`, `evaluate()`, and `on_error()`. This ensures that agents can perform setup, cleanup, and robust error handling—all without cluttering the main business logic.
|
|
196
|
+
|
|
197
|
+
### Fault Tolerance
|
|
198
|
+
|
|
199
|
+
Flock integrates with Temporal for fault tolerance and production readiness. This provides automatic retries, durable state management, and resilience against failures.
|
|
200
|
+
|
|
201
|
+
### Modularity
|
|
202
|
+
|
|
203
|
+
Flock is designed to be modular, with clear separation of concerns. This makes it easy to extend and customize the framework for specific use cases.
|
|
204
|
+
|
|
205
|
+
### Flexibility
|
|
206
|
+
|
|
207
|
+
Flock is designed to be flexible, allowing for a wide range of agent types and workflows. Agents can be chained together, run in parallel, or run in a batch mode.
|
|
208
|
+
|
|
209
|
+
## Next Steps
|
|
210
|
+
|
|
211
|
+
Now that you understand the high-level architecture of Flock, you might want to explore:
|
|
212
|
+
|
|
213
|
+
- [Components](components.md) - Learn more about the specific components of Flock
|
|
214
|
+
- [Design Decisions](design-decisions.md) - Understand the design decisions behind Flock
|
|
215
|
+
- [Core Concepts](../core-concepts/agents.md) - Learn about the core concepts of Flock
|
|
216
|
+
- [Examples](../examples/hello-flock.md) - See examples of Flock in action
|