flock-core 0.3.17__tar.gz → 0.3.18__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.18/.cursor/specs/01_core_architecture.md +135 -0
- flock_core-0.3.18/.cursor/specs/02_agent_factory.md +78 -0
- flock_core-0.3.18/.cursor/specs/03_module_system.md +106 -0
- flock_core-0.3.18/.cursor/specs/04_evaluator_system.md +100 -0
- flock_core-0.3.18/.cursor/specs/05_router_system.md +104 -0
- flock_core-0.3.18/.cursor/specs/06_tool_system.md +88 -0
- flock_core-0.3.18/.cursor/specs/07_execution_system.md +110 -0
- flock_core-0.3.18/.cursor/specs/08_context_system.md +119 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/PKG-INFO +1 -1
- flock_core-0.3.18/SPECS.md +78 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/pyproject.toml +1 -1
- {flock_core-0.3.17 → flock_core-0.3.18}/uv.lock +1 -1
- {flock_core-0.3.17 → flock_core-0.3.18}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.env_template +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.gitignore +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.vscode/launch.json +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.vscode/settings.json +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/.vscode/tasks.json +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/LICENSE +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/README.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/advanced/complex-workflows.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/advanced/custom-agents.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/advanced/performance.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/advanced/testing.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/api/flock-core.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/api/flockagent.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/api/types.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/api/utilities.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/architecture/components.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/architecture/design-decisions.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/architecture/overview.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/drawio/architecture.drawio +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/flock.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/getting-started/first_agent_00.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/hummingbird.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/icon.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/logo.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/memory_concepts.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/memory_flow.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/assets/images/memory_flow_chart.png +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/contributing/code-style.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/contributing/development.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/contributing/documentation.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/contributing/testing.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/agents.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/declarative.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/error-handling.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/evaluators.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/memory.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/modules/memory.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/modules/metrics.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/modules/output.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/modules.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/routers/agent.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/routers/default.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/routers/llm.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/routers.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/tools/azure-tools.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/tools/overview.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/type-system.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/core-concepts/workflows.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/deployment/monitoring.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/deployment/production-setup.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/deployment/scalability.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/deployment/security.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/development/dev.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/development/replace-dspy/implementation_plan.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/development/topics.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/examples/chain-gang.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/examples/hello-flock.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/examples/pydantic.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/examples/type-system.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/features/agent-chaining.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/features/agent-definition.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/features/lifecycle-hooks.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/features/pydantic.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/features/type-safety.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/getting-started/concepts.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/getting-started/configuration.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/getting-started/installation.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/getting-started/quickstart.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/index.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/integrations/dspy.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/integrations/litellm.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/integrations/rest-api.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/integrations/tavily.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/integrations/temporal.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/release-notes/release_notes.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/tutorials/blog-generator.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/tutorials/custom-tools.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/tutorials/error-recovery.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/docs/tutorials/multi-agent.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/01_introduction/01_simple_example.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/01_introduction/02_typed_output.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/01_introduction/03_tool_and_code_agent.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/01_introduction/04_descriptions.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/01_introduction/05_typed_output2.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/01_introduction/06_simple_hand_off.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/02_concepts/api/api_client.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/02_concepts/api/api_server.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/02_concepts/context/context.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/02_concepts/evaluator/multi_hops_memory.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/02_concepts/evaluator/multi_hops_zep.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/02_concepts/modules/use_modules.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/02_concepts/router/router_example.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/02_concepts/tools/azure_tools_example.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/03_apps/roguelike/game.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/04_comparison/rag_comparison/rag.ipynb +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/05_documentation/getting-started/first_agent_01.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/05_documentation/getting-started/first_agent_02.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/05_documentation/getting-started/first_agent_03.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/README.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/2502.18600v1.pdf +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/README.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/examples/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/examples/arithmetic.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/examples/comparison.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/examples/symbolic.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/src/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/src/agents.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/src/chain_of_draft.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/src/evaluation.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/src/prompts.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/src/router.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/tests/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/tests/test_cod_basic.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/papers/chain-of-draft/tests/test_cod_vs_cot.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/flock_without_llms.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/long_research_no_handoff.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/painting_by_numbers.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/project_manager.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/repo_analyzer/repo_analyzer.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/repo_analyzer/repo_analyzer_llm.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/save_and_load/load_01.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/save_and_load/load_02.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/save_and_load/load_03.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/save_and_load/load_04.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/save_and_load/save_01.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/save_and_load/save_02.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/save_and_load/save_03.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/02_cook_book/self_improvement_with_memory.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/hier/her_vis.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/hier/hier_mem.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/misc/memory.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/misc/self_learner.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/misc/self_learner2.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/examples/playground/website/app.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/mkdocs.yml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/requirements.txt +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/assets/release_notes.md +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/constants.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/load_release_notes.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/cli/settings.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/config.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/context/context.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/context/context_manager.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/context/context_vars.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/flock.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/flock_agent.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/flock_api.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/flock_evaluator.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/flock_factory.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/flock_module.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/flock_router.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/interpreter/python_interpreter.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/formatters/themes.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/logging.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/telemetry.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/mixin/dspy_integration.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/registry/agent_registry.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/serialization/secure_serializer.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/serialization/serializable.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/tools/azure_tools.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/tools/basic_tools.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/tools/dev_tools/github.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/tools/llm_tools.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/tools/markdown_tools.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/util/cli_helper.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/evaluators/memory/azure_search_evaluator.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/evaluators/natural_language/natural_language_evaluator.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/modules/azure-search/azure_search_module.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/modules/callback/callback_module.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/modules/memory/memory_module.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/modules/memory/memory_parser.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/modules/memory/memory_storage.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/modules/output/output_module.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/modules/performance/metrics_module.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/modules/zep/zep_module.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/routers/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/routers/agent/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/routers/agent/agent_router.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/routers/agent/handoff_agent.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/routers/default/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/routers/default/default_router.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/routers/llm/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/routers/llm/llm_router.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/django.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/github.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/material.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/square.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/workflow/activities.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/src/flock/workflow/workflow.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/conftest.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/examples/azure_search_example.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/integration/test_agent_integration.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/integration/test_azure_tools_integration.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/unittests/test_agent_based_handoff.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/unittests/test_agent_router_property.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/unittests/test_azure_tools.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/unittests/test_flock.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/unittests/test_flock_agent.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/unittests/test_memory_operations.py +0 -0
- {flock_core-0.3.17 → flock_core-0.3.18}/tests/unittests/test_memory_store.py +0 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Flock Core Architecture Specification
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Flock is a framework for building, orchestrating, and running AI agent systems. It provides a declarative approach to agent design, focusing on inputs and outputs rather than prompts. This specification defines the core architecture components of the Flock framework.
|
|
5
|
+
|
|
6
|
+
## Components
|
|
7
|
+
|
|
8
|
+
### 1. Flock
|
|
9
|
+
|
|
10
|
+
The central orchestrator that manages agents, tools, and execution flow.
|
|
11
|
+
|
|
12
|
+
**Responsibilities:**
|
|
13
|
+
- Managing agent registration and retrieval
|
|
14
|
+
- Orchestrating workflow execution
|
|
15
|
+
- Providing execution context
|
|
16
|
+
- Supporting local and distributed execution modes (Temporal)
|
|
17
|
+
- Initializing and managing logging
|
|
18
|
+
|
|
19
|
+
**Key Attributes:**
|
|
20
|
+
- `agents`: Collection of registered agents
|
|
21
|
+
- `registry`: Central registry for agents and tools
|
|
22
|
+
- `context`: Global execution context
|
|
23
|
+
- `model`: Default LLM model identifier
|
|
24
|
+
- `enable_temporal`: Flag for distributed execution
|
|
25
|
+
|
|
26
|
+
### 2. FlockAgent
|
|
27
|
+
|
|
28
|
+
The core agent class that defines a single AI agent's capabilities.
|
|
29
|
+
|
|
30
|
+
**Responsibilities:**
|
|
31
|
+
- Defining agent inputs and outputs
|
|
32
|
+
- Managing agent lifecycle
|
|
33
|
+
- Providing access to tools
|
|
34
|
+
- Supporting serialization and deserialization
|
|
35
|
+
- Integrating with modules for extensibility
|
|
36
|
+
|
|
37
|
+
**Key Attributes:**
|
|
38
|
+
- `name`: Unique identifier
|
|
39
|
+
- `description`: Human-readable agent description
|
|
40
|
+
- `model`: LLM model identifier
|
|
41
|
+
- `input`: Input field definitions
|
|
42
|
+
- `output`: Output field definitions
|
|
43
|
+
- `tools`: Available tools for the agent
|
|
44
|
+
- `evaluator`: Strategy for evaluation
|
|
45
|
+
- `modules`: Attached modules for extensibility
|
|
46
|
+
- `handoff_router`: Optional router for multi-agent workflows
|
|
47
|
+
|
|
48
|
+
### 3. FlockModule
|
|
49
|
+
|
|
50
|
+
Extension system for agents to modify behavior through lifecycle hooks.
|
|
51
|
+
|
|
52
|
+
**Responsibilities:**
|
|
53
|
+
- Hooking into agent lifecycle events
|
|
54
|
+
- Modifying inputs or outputs
|
|
55
|
+
- Adding capabilities to agents
|
|
56
|
+
- Maintaining module-specific state
|
|
57
|
+
|
|
58
|
+
**Lifecycle Hooks:**
|
|
59
|
+
- `initialize`: Called when agent starts
|
|
60
|
+
- `pre_evaluate`: Called before evaluation
|
|
61
|
+
- `post_evaluate`: Called after evaluation
|
|
62
|
+
- `terminate`: Called when agent finishes
|
|
63
|
+
- `on_error`: Called when errors occur
|
|
64
|
+
|
|
65
|
+
### 4. FlockEvaluator
|
|
66
|
+
|
|
67
|
+
Strategy for evaluating agent requests and generating outputs.
|
|
68
|
+
|
|
69
|
+
**Responsibilities:**
|
|
70
|
+
- Processing agent inputs
|
|
71
|
+
- Formulating appropriate prompts
|
|
72
|
+
- Managing model interactions
|
|
73
|
+
- Processing model outputs
|
|
74
|
+
- Handling tool usage
|
|
75
|
+
|
|
76
|
+
### 5. FlockRouter
|
|
77
|
+
|
|
78
|
+
Mechanism for directing workflow between agents.
|
|
79
|
+
|
|
80
|
+
**Responsibilities:**
|
|
81
|
+
- Determining the next agent in a workflow
|
|
82
|
+
- Managing input/output mapping between agents
|
|
83
|
+
- Supporting workflow branching logic
|
|
84
|
+
|
|
85
|
+
**Key Concepts:**
|
|
86
|
+
- `HandOffRequest`: Definition of the next agent and input mapping
|
|
87
|
+
|
|
88
|
+
### 6. FlockContext
|
|
89
|
+
|
|
90
|
+
Shared execution context for agents and modules.
|
|
91
|
+
|
|
92
|
+
**Responsibilities:**
|
|
93
|
+
- Storing global state across agents
|
|
94
|
+
- Providing access to agent definitions
|
|
95
|
+
- Supporting serialization for distributed execution
|
|
96
|
+
|
|
97
|
+
## Design Principles
|
|
98
|
+
|
|
99
|
+
1. **Declarative over Imperative**:
|
|
100
|
+
- Focus on what agents do, not how they do it
|
|
101
|
+
- Define inputs and outputs clearly
|
|
102
|
+
- Minimize prompt engineering
|
|
103
|
+
|
|
104
|
+
2. **Modular Extension**:
|
|
105
|
+
- Module system for adding functionality
|
|
106
|
+
- Clear lifecycle hooks
|
|
107
|
+
- Separation of concerns
|
|
108
|
+
|
|
109
|
+
3. **Resilient Execution**:
|
|
110
|
+
- Support for local and distributed execution
|
|
111
|
+
- Error handling at each level
|
|
112
|
+
- Observability through logging and tracing
|
|
113
|
+
|
|
114
|
+
4. **Serialization Support**:
|
|
115
|
+
- All components can be serialized
|
|
116
|
+
- Support for saving and loading agent definitions
|
|
117
|
+
- State preservation across execution environments
|
|
118
|
+
|
|
119
|
+
5. **Tool Integration**:
|
|
120
|
+
- First-class support for tool usage
|
|
121
|
+
- Flexible tool registration
|
|
122
|
+
- Dynamic tool discovery
|
|
123
|
+
|
|
124
|
+
## Execution Flow
|
|
125
|
+
|
|
126
|
+
1. User creates a Flock instance
|
|
127
|
+
2. User adds agents to the Flock
|
|
128
|
+
3. User registers tools if needed
|
|
129
|
+
4. User calls `run()` with a starting agent and input
|
|
130
|
+
5. Flock initializes context and resolves the starting agent
|
|
131
|
+
6. Agent initializes and resolves modules
|
|
132
|
+
7. Agent evaluates input using its evaluator
|
|
133
|
+
8. If a router is defined, Flock determines the next agent
|
|
134
|
+
9. Process repeats until no next agent is specified
|
|
135
|
+
10. Final result is returned
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Flock Agent Factory Specification
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
The Factory design pattern is implemented in Flock to simplify agent creation with sensible defaults. This specification defines the requirements and behavior of the agent factory system.
|
|
5
|
+
|
|
6
|
+
## FlockFactory
|
|
7
|
+
|
|
8
|
+
### Purpose
|
|
9
|
+
Provide a simplified interface for creating pre-configured agents without requiring manual setup of all components.
|
|
10
|
+
|
|
11
|
+
### Responsibilities
|
|
12
|
+
- Create agents with sensible defaults
|
|
13
|
+
- Configure common modules automatically
|
|
14
|
+
- Set up evaluators with appropriate configuration
|
|
15
|
+
- Simplify the agent creation process
|
|
16
|
+
|
|
17
|
+
## Default Agent Creation
|
|
18
|
+
|
|
19
|
+
### Method: `create_default_agent`
|
|
20
|
+
|
|
21
|
+
**Parameters:**
|
|
22
|
+
- `name`: Required unique agent identifier
|
|
23
|
+
- `description`: Optional human-readable description
|
|
24
|
+
- `model`: Optional LLM model identifier (defaults to configured default)
|
|
25
|
+
- `input`: Required input field definitions
|
|
26
|
+
- `output`: Required output field definitions
|
|
27
|
+
- `tools`: Optional list of callable tools
|
|
28
|
+
- `use_cache`: Whether to cache evaluation results (default: True)
|
|
29
|
+
- `enable_rich_tables`: Whether to render rich tables in output (default: False)
|
|
30
|
+
- `output_theme`: Visual theme for rendered output
|
|
31
|
+
- `wait_for_input`: Whether to pause after execution (default: False)
|
|
32
|
+
- `temperature`: Model temperature setting (default: 0.0)
|
|
33
|
+
- `max_tokens`: Maximum generated tokens (default: 4096)
|
|
34
|
+
- `alert_latency_threshold_ms`: Threshold for latency alerts (default: 30000)
|
|
35
|
+
- `no_output`: Whether to suppress output (default: False)
|
|
36
|
+
- `print_context`: Whether to print context (default: False)
|
|
37
|
+
|
|
38
|
+
**Return Value:**
|
|
39
|
+
- A fully configured `FlockAgent` instance
|
|
40
|
+
|
|
41
|
+
**Default Configuration:**
|
|
42
|
+
1. Creates a `DeclarativeEvaluator` with:
|
|
43
|
+
- Specified model or default
|
|
44
|
+
- Configured cache settings
|
|
45
|
+
- Specified max tokens and temperature
|
|
46
|
+
|
|
47
|
+
2. Creates an `OutputModule` with:
|
|
48
|
+
- Table rendering settings
|
|
49
|
+
- Theme configuration
|
|
50
|
+
- Wait-for-input behavior
|
|
51
|
+
|
|
52
|
+
3. Creates a `MetricsModule` with:
|
|
53
|
+
- Latency threshold alerts
|
|
54
|
+
|
|
55
|
+
## Design Principles
|
|
56
|
+
|
|
57
|
+
1. **Convention over Configuration**:
|
|
58
|
+
- Reasonable defaults for most parameters
|
|
59
|
+
- Only essential parameters required
|
|
60
|
+
|
|
61
|
+
2. **Complete Configuration**:
|
|
62
|
+
- Agents created are fully functional
|
|
63
|
+
- All required components initialized
|
|
64
|
+
|
|
65
|
+
3. **Flexibility**:
|
|
66
|
+
- All defaults can be overridden
|
|
67
|
+
- Additional configuration possible after creation
|
|
68
|
+
|
|
69
|
+
4. **Extension**:
|
|
70
|
+
- Factory pattern allows future specialized factory methods
|
|
71
|
+
- Custom agent templates possible
|
|
72
|
+
|
|
73
|
+
## Implementation Notes
|
|
74
|
+
|
|
75
|
+
1. The factory uses the standard `FlockAgent` class
|
|
76
|
+
2. Modules are attached via the agent's `add_module` method
|
|
77
|
+
3. The agent is ready to use immediately after creation
|
|
78
|
+
4. The agent is not automatically added to a Flock instance
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Flock Module System Specification
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
The module system provides a way to extend agent functionality through lifecycle hooks. Modules can modify agent behavior, add new capabilities, or provide cross-cutting concerns like logging or metrics without changing the core agent implementation.
|
|
5
|
+
|
|
6
|
+
## Core Module Components
|
|
7
|
+
|
|
8
|
+
### 1. FlockModuleConfig
|
|
9
|
+
|
|
10
|
+
**Purpose:**
|
|
11
|
+
Base configuration class for all module configurations.
|
|
12
|
+
|
|
13
|
+
**Requirements:**
|
|
14
|
+
- Must extend Pydantic's BaseModel
|
|
15
|
+
- Must include an `enabled` flag to toggle module functionality
|
|
16
|
+
- Must support extension through subclassing or the `with_fields` factory method
|
|
17
|
+
|
|
18
|
+
**API:**
|
|
19
|
+
- `with_fields(**field_definitions)`: Factory method to create derived config classes with additional fields
|
|
20
|
+
|
|
21
|
+
### 2. FlockModule
|
|
22
|
+
|
|
23
|
+
**Purpose:**
|
|
24
|
+
Base abstract class for all modules that can be attached to agents.
|
|
25
|
+
|
|
26
|
+
**Requirements:**
|
|
27
|
+
- Must extend Pydantic's BaseModel and be abstract (ABC)
|
|
28
|
+
- Must include a unique name identifier
|
|
29
|
+
- Must include a configuration instance
|
|
30
|
+
- Must implement all lifecycle hook methods
|
|
31
|
+
|
|
32
|
+
**Lifecycle Hooks:**
|
|
33
|
+
- `initialize(agent, inputs, context)`: Called when agent starts execution
|
|
34
|
+
- `pre_evaluate(agent, inputs, context)`: Called before agent evaluation, can modify inputs
|
|
35
|
+
- `post_evaluate(agent, inputs, result, context)`: Called after agent evaluation, can modify results
|
|
36
|
+
- `terminate(agent, inputs, result, context)`: Called when agent completes execution
|
|
37
|
+
- `on_error(agent, error, inputs, context)`: Called when an error occurs during execution
|
|
38
|
+
|
|
39
|
+
## Module Integration
|
|
40
|
+
|
|
41
|
+
### Agent Module Management
|
|
42
|
+
The FlockAgent must provide methods to:
|
|
43
|
+
- Add modules via `add_module(module)`
|
|
44
|
+
- Remove modules via `remove_module(module_name)`
|
|
45
|
+
- Retrieve modules via `get_module(module_name)`
|
|
46
|
+
- Get all enabled modules via `get_enabled_modules()`
|
|
47
|
+
|
|
48
|
+
### Module Execution
|
|
49
|
+
During agent execution, the agent must:
|
|
50
|
+
1. Call `initialize()` on all enabled modules during agent initialization
|
|
51
|
+
2. Call `pre_evaluate()` on all enabled modules before evaluation
|
|
52
|
+
3. Call `post_evaluate()` on all enabled modules after evaluation
|
|
53
|
+
4. Call `terminate()` on all enabled modules during agent termination
|
|
54
|
+
5. Call `on_error()` on all enabled modules when errors occur
|
|
55
|
+
|
|
56
|
+
## Standard Modules
|
|
57
|
+
|
|
58
|
+
### 1. OutputModule
|
|
59
|
+
|
|
60
|
+
**Purpose:**
|
|
61
|
+
Handle formatting and displaying agent outputs.
|
|
62
|
+
|
|
63
|
+
**Configuration:**
|
|
64
|
+
- `render_table`: Whether to render outputs as rich tables
|
|
65
|
+
- `theme`: Visual theme for rendered outputs
|
|
66
|
+
- `wait_for_input`: Whether to pause for user input after output
|
|
67
|
+
- `no_output`: Whether to suppress output entirely
|
|
68
|
+
- `print_context`: Whether to print context along with output
|
|
69
|
+
|
|
70
|
+
### 2. MetricsModule
|
|
71
|
+
|
|
72
|
+
**Purpose:**
|
|
73
|
+
Track and report agent performance metrics.
|
|
74
|
+
|
|
75
|
+
**Configuration:**
|
|
76
|
+
- `latency_threshold_ms`: Threshold for latency alerts
|
|
77
|
+
|
|
78
|
+
## Design Principles
|
|
79
|
+
|
|
80
|
+
1. **Separation of Concerns**:
|
|
81
|
+
- Modules handle cross-cutting concerns
|
|
82
|
+
- Core agent logic remains focused
|
|
83
|
+
- Modules can be added/removed without modifying agent code
|
|
84
|
+
|
|
85
|
+
2. **Composability**:
|
|
86
|
+
- Multiple modules can be attached to an agent
|
|
87
|
+
- Modules can interact through shared context
|
|
88
|
+
- Order-independent execution where possible
|
|
89
|
+
|
|
90
|
+
3. **Configurability**:
|
|
91
|
+
- All modules have configuration classes
|
|
92
|
+
- Configuration can be modified at runtime
|
|
93
|
+
- Modules can be enabled/disabled through configuration
|
|
94
|
+
|
|
95
|
+
4. **Extension Points**:
|
|
96
|
+
- Clear lifecycle hooks for integration
|
|
97
|
+
- Standardized interfaces for all modules
|
|
98
|
+
- Predictable execution ordering
|
|
99
|
+
|
|
100
|
+
## Implementation Requirements
|
|
101
|
+
|
|
102
|
+
1. Modules must be serializable along with agents
|
|
103
|
+
2. Modules should have minimal dependencies on each other
|
|
104
|
+
3. Modules should gracefully handle missing context or configuration
|
|
105
|
+
4. Module hooks should be implemented as async methods
|
|
106
|
+
5. Module hooks should not raise exceptions (handle internally)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Flock Evaluator System Specification
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
The evaluator system provides the core evaluation mechanism for agents, defining how inputs are processed and outputs are generated. It abstracts the interaction with language models and provides a standardized interface for agent evaluation.
|
|
5
|
+
|
|
6
|
+
## Core Evaluator Components
|
|
7
|
+
|
|
8
|
+
### 1. FlockEvaluatorConfig
|
|
9
|
+
|
|
10
|
+
**Purpose:**
|
|
11
|
+
Base configuration class for all evaluator configurations.
|
|
12
|
+
|
|
13
|
+
**Requirements:**
|
|
14
|
+
- Must extend Pydantic's BaseModel
|
|
15
|
+
- Must include common configuration options for model interaction
|
|
16
|
+
|
|
17
|
+
**Standard Fields:**
|
|
18
|
+
- Model identifier
|
|
19
|
+
- Caching preferences
|
|
20
|
+
- Temperature settings
|
|
21
|
+
- Token limits
|
|
22
|
+
|
|
23
|
+
### 2. FlockEvaluator
|
|
24
|
+
|
|
25
|
+
**Purpose:**
|
|
26
|
+
Base abstract class for all evaluators.
|
|
27
|
+
|
|
28
|
+
**Requirements:**
|
|
29
|
+
- Must implement an `evaluate` method that processes agent inputs
|
|
30
|
+
- Must handle tool execution when applicable
|
|
31
|
+
- Must properly format inputs based on agent definitions
|
|
32
|
+
- Must process and structure outputs according to agent output definitions
|
|
33
|
+
|
|
34
|
+
**API:**
|
|
35
|
+
- `evaluate(agent, inputs, tools)`: Asynchronous method to evaluate inputs and produce structured outputs
|
|
36
|
+
|
|
37
|
+
## Standard Evaluators
|
|
38
|
+
|
|
39
|
+
### 1. DeclarativeEvaluator
|
|
40
|
+
|
|
41
|
+
**Purpose:**
|
|
42
|
+
Default evaluator that uses a declarative approach, focusing on input/output mapping.
|
|
43
|
+
|
|
44
|
+
**Functionality:**
|
|
45
|
+
- Creates DSPy signatures from agent definitions
|
|
46
|
+
- Configures language models appropriately
|
|
47
|
+
- Selects appropriate agent tasks based on tool requirements
|
|
48
|
+
- Processes model results into structured outputs
|
|
49
|
+
|
|
50
|
+
**Configuration:**
|
|
51
|
+
- `agent_type_override`: Optional override for agent type
|
|
52
|
+
- `model`: Model identifier (default: 'openai/gpt-4o')
|
|
53
|
+
- `use_cache`: Whether to cache results (default: True)
|
|
54
|
+
- `temperature`: Model temperature (default: 0.0)
|
|
55
|
+
- `max_tokens`: Maximum token generation (default: 4096)
|
|
56
|
+
|
|
57
|
+
## Integration Points
|
|
58
|
+
|
|
59
|
+
### DSPy Integration
|
|
60
|
+
|
|
61
|
+
**Requirements:**
|
|
62
|
+
- Must support DSPy for language model interactions
|
|
63
|
+
- Must properly convert agent definitions to DSPy signatures
|
|
64
|
+
- Must support DSPy caching when enabled
|
|
65
|
+
|
|
66
|
+
### Tool Execution
|
|
67
|
+
|
|
68
|
+
**Requirements:**
|
|
69
|
+
- Must properly format tools for model access
|
|
70
|
+
- Must handle tool execution when requested by the model
|
|
71
|
+
- Must support synchronous and asynchronous tools
|
|
72
|
+
- Must properly format tool results for the model
|
|
73
|
+
|
|
74
|
+
## Design Principles
|
|
75
|
+
|
|
76
|
+
1. **Modularity**:
|
|
77
|
+
- Evaluators should be interchangeable
|
|
78
|
+
- Different evaluation strategies possible with same agent definition
|
|
79
|
+
|
|
80
|
+
2. **Abstraction**:
|
|
81
|
+
- Hide complexity of model interactions
|
|
82
|
+
- Provide a consistent interface regardless of underlying model
|
|
83
|
+
|
|
84
|
+
3. **Flexibility**:
|
|
85
|
+
- Support different model providers
|
|
86
|
+
- Support different evaluation strategies
|
|
87
|
+
- Allow configuration of evaluation parameters
|
|
88
|
+
|
|
89
|
+
4. **Performance**:
|
|
90
|
+
- Support caching of results
|
|
91
|
+
- Optimize token usage
|
|
92
|
+
- Handle rate limiting appropriately
|
|
93
|
+
|
|
94
|
+
## Implementation Requirements
|
|
95
|
+
|
|
96
|
+
1. Evaluators must be serializable
|
|
97
|
+
2. Evaluators must handle exceptions gracefully
|
|
98
|
+
3. Evaluators should provide appropriate debugging information
|
|
99
|
+
4. Evaluators should support observability through tracing
|
|
100
|
+
5. Evaluators should maintain compatibility with multiple model providers
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Flock Router System Specification
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
The router system enables multi-agent workflows by determining which agent should execute next based on the current agent's outputs. It provides a mechanism for building complex agent pipelines and workflows.
|
|
5
|
+
|
|
6
|
+
## Core Router Components
|
|
7
|
+
|
|
8
|
+
### 1. HandOffRequest
|
|
9
|
+
|
|
10
|
+
**Purpose:**
|
|
11
|
+
Define the next agent to execute and how inputs should be handled.
|
|
12
|
+
|
|
13
|
+
**Requirements:**
|
|
14
|
+
- Must extend Pydantic's BaseModel
|
|
15
|
+
- Must identify the next agent to execute
|
|
16
|
+
- Must define how inputs are mapped between agents
|
|
17
|
+
|
|
18
|
+
**Fields:**
|
|
19
|
+
- `next_agent`: Name of the next agent to invoke
|
|
20
|
+
- `hand_off_mode`: Strategy for mapping outputs to inputs ('match' or 'add')
|
|
21
|
+
- `override_next_agent`: Optional direct reference to next agent
|
|
22
|
+
- `override_context`: Optional context override
|
|
23
|
+
|
|
24
|
+
### 2. FlockRouterConfig
|
|
25
|
+
|
|
26
|
+
**Purpose:**
|
|
27
|
+
Configuration for router behavior.
|
|
28
|
+
|
|
29
|
+
**Requirements:**
|
|
30
|
+
- Must extend Pydantic's BaseModel
|
|
31
|
+
- Must include an enabled flag
|
|
32
|
+
- Must support a list of possible agent destinations
|
|
33
|
+
|
|
34
|
+
**Fields:**
|
|
35
|
+
- `enabled`: Whether the router is active
|
|
36
|
+
- `agents`: Optional list of potential target agents
|
|
37
|
+
|
|
38
|
+
### 3. FlockRouter
|
|
39
|
+
|
|
40
|
+
**Purpose:**
|
|
41
|
+
Base abstract class for all routers.
|
|
42
|
+
|
|
43
|
+
**Requirements:**
|
|
44
|
+
- Must extend Pydantic's BaseModel and be abstract (ABC)
|
|
45
|
+
- Must include a unique name
|
|
46
|
+
- Must include a configuration
|
|
47
|
+
- Must implement a `route` method
|
|
48
|
+
|
|
49
|
+
**API:**
|
|
50
|
+
- `route(current_agent, result, context)`: Async method to determine the next agent
|
|
51
|
+
|
|
52
|
+
## Router Integration
|
|
53
|
+
|
|
54
|
+
### Agent Integration
|
|
55
|
+
FlockAgent includes an optional `handoff_router` field:
|
|
56
|
+
- When present, enables multi-agent workflows
|
|
57
|
+
- When absent, execution stops after the agent completes
|
|
58
|
+
|
|
59
|
+
### Workflow Execution
|
|
60
|
+
During Flock execution:
|
|
61
|
+
1. After agent evaluation, check if agent has a router
|
|
62
|
+
2. If router exists and is enabled, call its `route` method
|
|
63
|
+
3. Process the HandOffRequest to determine the next agent
|
|
64
|
+
4. Map outputs to inputs according to hand_off_mode
|
|
65
|
+
5. Execute the next agent
|
|
66
|
+
6. Repeat until no next agent is specified
|
|
67
|
+
|
|
68
|
+
## Standard Routers
|
|
69
|
+
|
|
70
|
+
### 1. SimpleFlockRouter
|
|
71
|
+
A basic router that selects from a fixed list of next agents.
|
|
72
|
+
|
|
73
|
+
### 2. LLMFlockRouter
|
|
74
|
+
A router that uses LLM to determine the next agent based on result content.
|
|
75
|
+
|
|
76
|
+
## Design Principles
|
|
77
|
+
|
|
78
|
+
1. **Flexibility**:
|
|
79
|
+
- Support different routing strategies
|
|
80
|
+
- Allow both static and dynamic routing
|
|
81
|
+
- Enable complex workflow patterns
|
|
82
|
+
|
|
83
|
+
2. **Clear Handoff Definition**:
|
|
84
|
+
- Explicit next agent specification
|
|
85
|
+
- Well-defined input mapping strategies
|
|
86
|
+
- Support for context modification
|
|
87
|
+
|
|
88
|
+
3. **Extensibility**:
|
|
89
|
+
- Easy to implement custom routers
|
|
90
|
+
- Support for different routing criteria
|
|
91
|
+
- Integration with external systems
|
|
92
|
+
|
|
93
|
+
4. **Predictability**:
|
|
94
|
+
- Clear execution paths
|
|
95
|
+
- Debuggable routing decisions
|
|
96
|
+
- Avoidance of circular references
|
|
97
|
+
|
|
98
|
+
## Implementation Requirements
|
|
99
|
+
|
|
100
|
+
1. Routers must be serializable
|
|
101
|
+
2. Routers must support both string-based and direct agent references
|
|
102
|
+
3. Routers must handle missing or invalid next agent gracefully
|
|
103
|
+
4. Router implementations should avoid side effects
|
|
104
|
+
5. Routers should support tracing of routing decisions
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Flock Tool System Specification
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
The tool system provides agents with capabilities to perform actions beyond generating text. Tools can retrieve information, perform calculations, interact with external systems, or execute code. This specification defines how tools are integrated and used within the Flock framework.
|
|
5
|
+
|
|
6
|
+
## Tool Definition
|
|
7
|
+
|
|
8
|
+
### Requirements
|
|
9
|
+
- Tools must be callable functions or methods
|
|
10
|
+
- Tools must accept standard Python types as inputs
|
|
11
|
+
- Tools must return JSON-serializable outputs
|
|
12
|
+
- Tools should include proper docstrings for agent instruction
|
|
13
|
+
- Tools should handle errors gracefully
|
|
14
|
+
|
|
15
|
+
### Tool Registration
|
|
16
|
+
Tools can be registered in two ways:
|
|
17
|
+
1. Through agent definition: `tools=[tool1, tool2]`
|
|
18
|
+
2. Through Flock registration: `flock.add_tool("tool_name", tool_function)`
|
|
19
|
+
|
|
20
|
+
## Tool Integration
|
|
21
|
+
|
|
22
|
+
### Agent Integration
|
|
23
|
+
Tools attached to an agent are:
|
|
24
|
+
1. Registered in the global registry
|
|
25
|
+
2. Made available to the agent during evaluation
|
|
26
|
+
3. Formatted appropriately for the model to understand their capabilities
|
|
27
|
+
|
|
28
|
+
### Evaluator Integration
|
|
29
|
+
The evaluator is responsible for:
|
|
30
|
+
1. Formatting tools for model consumption
|
|
31
|
+
2. Detecting tool invocation in model outputs
|
|
32
|
+
3. Executing tools with appropriate parameters
|
|
33
|
+
4. Formatting tool results for continued model interaction
|
|
34
|
+
|
|
35
|
+
## Standard Tool Categories
|
|
36
|
+
|
|
37
|
+
### 1. Basic Tools
|
|
38
|
+
- Web search tools
|
|
39
|
+
- Code evaluation tools
|
|
40
|
+
- System information tools
|
|
41
|
+
- File manipulation tools
|
|
42
|
+
|
|
43
|
+
### 2. Specialized Tools
|
|
44
|
+
- Data analysis tools
|
|
45
|
+
- API interaction tools
|
|
46
|
+
- Database tools
|
|
47
|
+
- Visualization tools
|
|
48
|
+
|
|
49
|
+
## Tool Execution Flow
|
|
50
|
+
|
|
51
|
+
1. Agent provides tools list during initialization
|
|
52
|
+
2. Evaluator formats tools as function descriptions for the model
|
|
53
|
+
3. Model generates output that may include tool invocation
|
|
54
|
+
4. Evaluator parses the tool invocation and parameters
|
|
55
|
+
5. Evaluator executes the tool with parsed parameters
|
|
56
|
+
6. Tool result is formatted and provided back to the model
|
|
57
|
+
7. Model continues generation with tool results available
|
|
58
|
+
8. Final model output is returned as agent result
|
|
59
|
+
|
|
60
|
+
## Design Principles
|
|
61
|
+
|
|
62
|
+
1. **Flexibility**:
|
|
63
|
+
- Support for any callable function
|
|
64
|
+
- No special base classes required
|
|
65
|
+
- Dynamic addition of tools possible
|
|
66
|
+
|
|
67
|
+
2. **Safety**:
|
|
68
|
+
- Tools should have clear boundaries
|
|
69
|
+
- Error handling to prevent failures
|
|
70
|
+
- Input validation for security
|
|
71
|
+
|
|
72
|
+
3. **Discoverability**:
|
|
73
|
+
- Clear documentation for agent understanding
|
|
74
|
+
- Consistent interface patterns
|
|
75
|
+
- Self-describing capabilities
|
|
76
|
+
|
|
77
|
+
4. **Performance**:
|
|
78
|
+
- Efficient execution
|
|
79
|
+
- Proper handling of async tools
|
|
80
|
+
- Support for caching tool results
|
|
81
|
+
|
|
82
|
+
## Implementation Requirements
|
|
83
|
+
|
|
84
|
+
1. Tools must work with different model providers
|
|
85
|
+
2. Tools must handle both synchronous and asynchronous execution
|
|
86
|
+
3. Tools should provide clear error messages
|
|
87
|
+
4. Tools should be testable in isolation
|
|
88
|
+
5. Complex tools should be composable from simpler tools
|