flock-core 0.5.0b27__tar.gz → 0.5.0b28__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.5.0b27 → flock_core-0.5.0b28}/.gitignore +1 -1
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/PKG-INFO +1 -1
- flock_core-0.5.0b28/examples/09-n-shot-learning.py +90 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/pyproject.toml +1 -1
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/utility/__init__.py +7 -0
- flock_core-0.5.0b28/src/flock/components/utility/example_utility_component.py +250 -0
- flock_core-0.5.0b28/src/flock/components/utility/feedback_utility_component.py +206 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/agent/default_agent.py +37 -1
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/flock_factory.py +62 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/services/sharing_store.py +179 -15
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/uv.lock +1 -1
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.env_template +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/ISSUE_TEMPLATE/documentation_improvement.yaml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/ISSUE_TEMPLATE/question_support_request.yaml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/ISSUE_TEMPLATE/vulnerability_report.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/workflows/ci.yml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.python-version +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.vscode/launch.json +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.vscode/settings.json +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/.vscode/tasks.json +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/AGENTS.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/CODE_OF_CONDUCT.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/CONTRIBUTING.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/LICENSE +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/PR_BODY.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/README.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/SECURITY.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/about/changelog.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/about/contributing.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/architecture_report.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/class_diagram.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/drawio/architecture.drawio +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/flock.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/getting-started/first_agent_00.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/hummingbird.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/icon.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/logo.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/magpie.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/memory_concepts.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/memory_flow.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/memory_flow_chart.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/assets/images/readme_output.png +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/components/evaluators.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/components/index.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/components/tools.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/components/utility.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/core-concepts/agents.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/core-concepts/declarative.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/core-concepts/index.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/core-concepts/workflows.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/deployment/index.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/deployment/temporal.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/getting-started/configuration.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/getting-started/index.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/getting-started/installation.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/getting-started/quickstart.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/guides/chaining-agents.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/guides/custom-components.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/guides/custom-endpoints.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/guides/hydrator.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/guides/index.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/guides/mcp.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/guides/temporal-configuration.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/guides/tool-whitelist.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/index.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/interacting-with-flock/cli-tool.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/interacting-with-flock/index.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/interacting-with-flock/interactive-cli.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/interacting-with-flock/programmatic.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/interacting-with-flock/rest-api.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/interacting-with-flock/web-ui.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/codex_designs_an_amazing_agent_framework.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/di.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/dspy_flock_updates.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/engine_evaluation.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/flock_1.0_pitch.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/flock_1.0_review.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/flock_code_design_improvements.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/flock_vs_codex.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/getting-started-concepts.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/legacy-modules.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/must_have_for_0.5.0b.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/refactor_plan_flock.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/refactor_plan_flock_registry.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/restate_flock_improvements.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/temporal_vs_restate.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/testing_todo.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/internal/wd-di.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/reference/flock.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/reference/flock_agent.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/reference/index.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/reference/registry.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/release-notes/magpie.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/testing_guide.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/docs/testing_strategy.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/examples/01-hello-flock.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/examples/02a-inputs-and-outputs.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/examples/02b-inputs-and-outputs.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/examples/02c-inputs-and-outputs.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/examples/03-using-a-tool.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/examples/04-rest-api-ui.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/examples/dspy_engine/dspy_engine.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/evaluators/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/evaluators/declarative/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/evaluators/declarative/declarative_evaluator.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/evaluators/memory/memory_evaluator.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/evaluators/test/test_case_evaluator.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/evaluators/zep/zep_evaluator.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/flock_agent_original.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/flock_agent_refactored_backup.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/flock_agent_unified.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/flock_evaluator.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/flock_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/flock_registry.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/flock_router.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/assertion/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/assertion/assertion_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/callback/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/callback/callback_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/enterprise_memory/README.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/enterprise_memory/enterprise_memory_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/mem0/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/mem0/mem0_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/mem0_async/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/mem0_async/async_mem0_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/memory/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/memory/memory_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/memory/memory_parser.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/memory/memory_storage.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/output/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/output/output_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/performance/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/performance/metrics_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/zep/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/modules/zep/zep_module.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/agent/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/agent/agent_router.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/agent/handoff_agent.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/conditional/conditional_router.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/default/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/default/default_router.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/feedback/feedback_router.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/list_generator/list_generator_router.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/llm/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/legacy/routers/llm/llm_router.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/mkdocs.yml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/movie.json +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/requirements.txt +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/scripts/code_collector.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/scripts/create_docs.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/scripts/ensure_uv.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/adapter/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/adapter/azure_adapter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/adapter/chroma_adapter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/adapter/faiss_adapter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/adapter/pinecone_adapter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/adapter/vector_base.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/assets/release_notes.md +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/config.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/constants.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/execute_flock.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/load_release_notes.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/loaded_flock_cli.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/manage_agents.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/registry_management.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/runner.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/settings.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/utils.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/view_results.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/cli/yaml_editor.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/evaluation/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/evaluation/declarative_evaluation_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/routing/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/routing/conditional_routing_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/routing/default_routing_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/routing/llm_routing_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/utility/memory_utility_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/utility/metrics_utility_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/components/utility/output_utility_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/config.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/agent/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/agent/flock_agent_components.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/agent/flock_agent_execution.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/agent/flock_agent_integration.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/agent/flock_agent_lifecycle.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/agent/flock_agent_serialization.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/api/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/api/custom_endpoint.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/api/endpoints.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/api/main.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/api/models.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/api/run_store.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/api/runner.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/api/service.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/component/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/component/agent_component_base.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/component/evaluation_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/component/routing_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/component/utility_component.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/config/flock_agent_config.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/config/scheduled_agent_config.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/context/context.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/context/context_manager.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/context/context_vars.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/evaluation/utils.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/execution/batch_executor.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/execution/evaluation_executor.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/execution/opik_executor.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/flock.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/flock_agent.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/flock_scheduler.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/flock_server_manager.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/interpreter/python_interpreter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/formatters/themes.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/logging.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/telemetry.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/flock_mcp_server.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/flock_mcp_tool.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/mcp_client.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/mcp_client_manager.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/mcp_config.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/types/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/types/callbacks.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/types/factories.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/types/handlers.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/types/types.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/util/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mcp/util/helpers.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mixin/dspy_integration.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/orchestration/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/orchestration/flock_batch_processor.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/orchestration/flock_evaluator.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/orchestration/flock_execution.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/orchestration/flock_initialization.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/orchestration/flock_server_manager.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/orchestration/flock_web_server.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/agent_registry.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/callable_registry.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/component_discovery.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/component_registry.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/config_mapping.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/decorators.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/registry_hub.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/server_registry.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/registry/type_registry.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/serialization/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/serialization/callable_registry.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/serialization/flock_serializer.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/serialization/json_encoder.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/serialization/secure_serializer.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/serialization/serializable.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/serialization/serialization_utils.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/util/cli_helper.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/util/file_path_utils.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/util/loader.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/core/util/splitter.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/di.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/mcp/servers/sse/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/mcp/servers/sse/flock_sse_server.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/mcp/servers/stdio/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/mcp/servers/stdio/flock_stdio_server.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/mcp/servers/streamable_http/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/mcp/servers/streamable_http/flock_streamable_http_server.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/mcp/servers/websockets/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/mcp/servers/websockets/flock_websocket_server.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/django.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/github.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/material.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/square.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/api/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/api/agent_management.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/api/execution.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/api/flock_management.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/api/registry_viewer.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/chat.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/config.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/dependencies.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/main.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/middleware.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/models_ui.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/services/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/services/feedback_file_service.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/services/flock_service.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/services/sharing_models.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/templates/theme_mapper.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/theme_mapper.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/app/utils.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/run.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/static/css/chat.css +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/static/css/components.css +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/static/css/header.css +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/static/css/layout.css +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/static/css/sidebar.css +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/static/css/two-pane.css +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/base.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/chat.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/chat_settings.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/flock_editor.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/index.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_agent_detail_form.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_agent_list.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_agent_manager_view.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_agent_tools_checklist.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_chat_container.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_chat_messages.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_chat_settings_form.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_create_flock_form.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_env_vars_table.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_execution_form.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_execution_view_container.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_flock_file_list.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_flock_properties_form.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_flock_upload_form.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_header_flock_status.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_load_manager_view.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_registry_table.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_registry_viewer_content.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_results_display.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_settings_env_content.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_settings_theme_content.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_settings_view.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_share_chat_link_snippet.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_share_link_snippet.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_sidebar.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_streaming_results_container.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_structured_data_view.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/partials/_theme_preview.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/registry_viewer.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/webapp/templates/shared_run_page.html +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/workflow/activities.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/workflow/agent_execution_activity.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/workflow/flock_workflow.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/workflow/temporal_config.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/_helpers/fakes.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/conftest.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/integration/test_discovery_nested.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/integration/test_discovery_smoke.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/integration/test_local_context_and_history.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/integration/test_local_routing.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/integration/test_webapi_post.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/integration/test_webapi_smoke.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_agent_integration_adapt.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_agent_lifecycle.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_agent_model_propagation.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_agent_serialization_callables.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_agent_serialization_callables_roundtrip.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_callable_registry_dynamic.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_context_next_input_extended.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_context_serialization.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_contract_parsing.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_decorators_errors.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_errors_core.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_flock_execution_errors.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_flock_multi_agent_snapshot.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_flock_result_formatting.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_flock_run_variants.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_flock_serialization_snapshot.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_flock_smoke.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_pydantic_io_support.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_registry_core.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_registry_decorators.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_registry_extended.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_serialization_core.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_serialization_snapshots.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_serialization_utils.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_telemetry_core.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/p0/test_yaml_output.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/perf/test_perf_smoke.py +0 -0
- {flock_core-0.5.0b27 → flock_core-0.5.0b28}/tests/temporal/test_temporal_smoke.py +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Example demonstrating n-shot learning with the ExampleUtilityComponent.
|
|
3
|
+
|
|
4
|
+
This example shows how to:
|
|
5
|
+
1. Create example records
|
|
6
|
+
2. Seed them into storage using the static seed_examples method
|
|
7
|
+
3. Create an agent with example learning enabled
|
|
8
|
+
4. Run the agent to see examples being injected into the input
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
|
|
13
|
+
from flock.components.utility.example_utility_component import ExampleRecord, ExampleUtilityComponent, ExampleUtilityConfig
|
|
14
|
+
from flock.core import Flock, DefaultAgent
|
|
15
|
+
|
|
16
|
+
# Create some example records for a customer service agent
|
|
17
|
+
examples = [
|
|
18
|
+
ExampleRecord(
|
|
19
|
+
agent_name="customer_service",
|
|
20
|
+
example_id="example_1",
|
|
21
|
+
content="Q: How do I reset my password?\nA: To reset your password, click on the 'Forgot Password' link on the login page and follow the instructions sent to your email."
|
|
22
|
+
),
|
|
23
|
+
ExampleRecord(
|
|
24
|
+
agent_name="customer_service",
|
|
25
|
+
example_id="example_2",
|
|
26
|
+
content="Q: What is your return policy?\nA: We offer a 30-day return policy for all unused items in their original packaging. Simply contact our support team to initiate a return."
|
|
27
|
+
),
|
|
28
|
+
ExampleRecord(
|
|
29
|
+
agent_name="customer_service",
|
|
30
|
+
example_id="example_3",
|
|
31
|
+
content="Q: How long does shipping take?\nA: Standard shipping typically takes 5-7 business days. Express shipping options are available at checkout for 2-3 day delivery."
|
|
32
|
+
)
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
# Seed the examples into storage
|
|
36
|
+
print("Seeding examples into storage...")
|
|
37
|
+
ExampleUtilityComponent.seed_examples(examples)
|
|
38
|
+
print(f"Seeded {len(examples)} examples for customer service agent")
|
|
39
|
+
|
|
40
|
+
# Create a customer service agent with example learning enabled
|
|
41
|
+
agent = DefaultAgent(
|
|
42
|
+
name="customer_service",
|
|
43
|
+
description="Helps customers with their inquiries using examples",
|
|
44
|
+
input="customer_query: str | The customer's question or issue",
|
|
45
|
+
output="response: str | A helpful response to the customer",
|
|
46
|
+
enable_examples=True,
|
|
47
|
+
example_config=ExampleUtilityConfig(
|
|
48
|
+
max_examples=3,
|
|
49
|
+
example_timeframe_days=30,
|
|
50
|
+
example_input_key="examples_context"
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
# Create flock and add agent
|
|
55
|
+
flock = Flock(model="azure/gpt-4")
|
|
56
|
+
flock.add_agent(agent)
|
|
57
|
+
|
|
58
|
+
# Example interaction
|
|
59
|
+
query = "How do I track my order?"
|
|
60
|
+
print(f"\nCustomer query: {query}")
|
|
61
|
+
|
|
62
|
+
# Run the agent - examples will be automatically injected
|
|
63
|
+
result = flock.run(
|
|
64
|
+
agent="customer_service",
|
|
65
|
+
input={"customer_query": query}
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
print(f"\nAgent response: {result.response}")
|
|
69
|
+
|
|
70
|
+
# The agent will have received relevant examples in the 'examples_context' input key
|
|
71
|
+
# which can influence its response based on the provided examples
|
|
72
|
+
|
|
73
|
+
# You can also add more examples programmatically
|
|
74
|
+
new_example = ExampleRecord(
|
|
75
|
+
agent_name="customer_service",
|
|
76
|
+
example_id="example_4",
|
|
77
|
+
content="Q: How do I track my order?\nA: You can track your order by logging into your account and clicking on 'My Orders'. Enter your order number to see the current status and tracking information."
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
# Seed the new example
|
|
81
|
+
ExampleUtilityComponent.seed_examples([new_example])
|
|
82
|
+
print("\nAdded new example for order tracking")
|
|
83
|
+
|
|
84
|
+
# Run the agent again with the same query
|
|
85
|
+
result = flock.run(
|
|
86
|
+
agent="customer_service",
|
|
87
|
+
input={"customer_query": query}
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
print(f"\nAgent response with new example: {result.response}")
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
# src/flock/components/utility/__init__.py
|
|
2
2
|
"""Utility components for the Flock framework."""
|
|
3
3
|
|
|
4
|
+
from .example_utility_component import ExampleUtilityComponent, ExampleUtilityConfig, ExampleRecord
|
|
5
|
+
from .feedback_utility_component import FeedbackUtilityComponent, FeedbackUtilityConfig
|
|
4
6
|
from .memory_utility_component import MemoryUtilityComponent, MemoryUtilityConfig
|
|
5
7
|
from .metrics_utility_component import MetricsUtilityComponent, MetricsUtilityConfig
|
|
6
8
|
from .output_utility_component import OutputUtilityComponent, OutputUtilityConfig
|
|
7
9
|
|
|
8
10
|
__all__ = [
|
|
11
|
+
"ExampleUtilityComponent",
|
|
12
|
+
"ExampleUtilityConfig",
|
|
13
|
+
"ExampleRecord",
|
|
14
|
+
"FeedbackUtilityComponent",
|
|
15
|
+
"FeedbackUtilityConfig",
|
|
9
16
|
"MemoryUtilityComponent",
|
|
10
17
|
"MemoryUtilityConfig",
|
|
11
18
|
"MetricsUtilityComponent",
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"""Example utility component for n-shot learning."""
|
|
2
|
+
|
|
3
|
+
from datetime import datetime, timedelta
|
|
4
|
+
from typing import Any, Literal
|
|
5
|
+
|
|
6
|
+
from pydantic import Field
|
|
7
|
+
|
|
8
|
+
from flock.core.component.agent_component_base import AgentComponentConfig
|
|
9
|
+
from flock.core.component.utility_component import UtilityComponent
|
|
10
|
+
from flock.core.context.context import FlockContext
|
|
11
|
+
from flock.core.logging.logging import get_logger
|
|
12
|
+
from flock.core.registry import flock_component
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from flock.core.flock_agent import FlockAgent
|
|
16
|
+
from flock.webapp.app.services.sharing_store import SharedLinkStoreInterface
|
|
17
|
+
|
|
18
|
+
logger = get_logger("components.utility.example")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ExampleUtilityConfig(AgentComponentConfig):
|
|
22
|
+
"""Configuration for the ExampleUtilityComponent."""
|
|
23
|
+
|
|
24
|
+
# Storage configuration
|
|
25
|
+
storage_type: Literal["sqlite", "azure"] = Field(
|
|
26
|
+
default="sqlite",
|
|
27
|
+
description="Type of storage backend for example data"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
# SQLite configuration
|
|
31
|
+
sqlite_db_path: str = Field(
|
|
32
|
+
default="./flock_examples.db",
|
|
33
|
+
description="Path to SQLite database file"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
# Azure Table Storage configuration
|
|
37
|
+
azure_connection_string: str | None = Field(
|
|
38
|
+
default=None,
|
|
39
|
+
description="Azure Table Storage connection string"
|
|
40
|
+
)
|
|
41
|
+
azure_table_name: str = Field(
|
|
42
|
+
default="flockexamples",
|
|
43
|
+
description="Azure Table Storage table name"
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
# Example selection criteria
|
|
47
|
+
max_examples: int = Field(
|
|
48
|
+
default=5,
|
|
49
|
+
description="Maximum number of examples to include"
|
|
50
|
+
)
|
|
51
|
+
example_timeframe_days: int = Field(
|
|
52
|
+
default=30,
|
|
53
|
+
description="Only include examples from the last N days"
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
# Example injection settings
|
|
57
|
+
example_input_key: str = Field(
|
|
58
|
+
default="examples_context",
|
|
59
|
+
description="Input key to use for injected examples"
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
# Example filtering
|
|
63
|
+
example_filter_keywords: list[str] = Field(
|
|
64
|
+
default_factory=list,
|
|
65
|
+
description="Keywords to filter examples (only include examples containing these)"
|
|
66
|
+
)
|
|
67
|
+
example_exclude_keywords: list[str] = Field(
|
|
68
|
+
default_factory=list,
|
|
69
|
+
description="Keywords to exclude examples containing these"
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@flock_component(config_class=ExampleUtilityConfig)
|
|
74
|
+
class ExampleUtilityComponent(UtilityComponent):
|
|
75
|
+
"""Utility component that injects relevant examples into agent inputs for n-shot learning."""
|
|
76
|
+
|
|
77
|
+
config: ExampleUtilityConfig = Field(
|
|
78
|
+
default_factory=ExampleUtilityConfig,
|
|
79
|
+
description="Example component configuration"
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
def __init__(self, name: str = "examples", config: ExampleUtilityConfig | None = None, **data):
|
|
83
|
+
super().__init__(name=name, config=config or ExampleUtilityConfig(), **data)
|
|
84
|
+
self._store: SharedLinkStoreInterface | None = None
|
|
85
|
+
|
|
86
|
+
async def _get_store(self) -> SharedLinkStoreInterface:
|
|
87
|
+
"""Get the appropriate example store based on configuration."""
|
|
88
|
+
if self._store is None:
|
|
89
|
+
if self.config.storage_type == "sqlite":
|
|
90
|
+
from flock.webapp.app.services.sharing_store import SQLiteSharedLinkStore
|
|
91
|
+
self._store = SQLiteSharedLinkStore(self.config.sqlite_db_path)
|
|
92
|
+
elif self.config.storage_type == "azure":
|
|
93
|
+
if not self.config.azure_connection_string:
|
|
94
|
+
raise ValueError("Azure connection string is required for Azure storage")
|
|
95
|
+
from flock.webapp.app.services.sharing_store import AzureTableSharedLinkStore
|
|
96
|
+
self._store = AzureTableSharedLinkStore(
|
|
97
|
+
connection_string=self.config.azure_connection_string,
|
|
98
|
+
table_name=self.config.azure_table_name
|
|
99
|
+
)
|
|
100
|
+
else:
|
|
101
|
+
raise ValueError(f"Unsupported storage type: {self.config.storage_type}")
|
|
102
|
+
|
|
103
|
+
await self._store.initialize()
|
|
104
|
+
|
|
105
|
+
return self._store
|
|
106
|
+
|
|
107
|
+
@staticmethod
|
|
108
|
+
def seed_examples(examples: list["ExampleRecord"]) -> None:
|
|
109
|
+
"""Seed examples into the storage system.
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
examples: List of ExampleRecord objects to seed
|
|
113
|
+
"""
|
|
114
|
+
import asyncio
|
|
115
|
+
|
|
116
|
+
async def _seed_examples():
|
|
117
|
+
# Create a default component for seeding
|
|
118
|
+
component = ExampleUtilityComponent()
|
|
119
|
+
store = await component._get_store()
|
|
120
|
+
|
|
121
|
+
for example in examples:
|
|
122
|
+
await store.save_example(example)
|
|
123
|
+
|
|
124
|
+
logger.info(f"Seeded {len(examples)} examples into storage")
|
|
125
|
+
|
|
126
|
+
# Run the async function
|
|
127
|
+
asyncio.run(_seed_examples())
|
|
128
|
+
|
|
129
|
+
async def _get_relevant_examples(
|
|
130
|
+
self,
|
|
131
|
+
agent_name: str,
|
|
132
|
+
inputs: dict[str, Any]
|
|
133
|
+
) -> list["ExampleRecord"]:
|
|
134
|
+
"""Get relevant examples for the given agent and inputs."""
|
|
135
|
+
store = await self._get_store()
|
|
136
|
+
|
|
137
|
+
# Get all examples for this agent
|
|
138
|
+
all_examples = await store.get_all_examples_for_agent(agent_name)
|
|
139
|
+
|
|
140
|
+
# Filter by timeframe
|
|
141
|
+
cutoff_date = datetime.utcnow() - timedelta(days=self.config.example_timeframe_days)
|
|
142
|
+
filtered_examples = [
|
|
143
|
+
ex for ex in all_examples
|
|
144
|
+
if ex.created_at >= cutoff_date
|
|
145
|
+
]
|
|
146
|
+
|
|
147
|
+
# Filter by keywords if specified
|
|
148
|
+
if self.config.example_filter_keywords:
|
|
149
|
+
filtered_examples = [
|
|
150
|
+
ex for ex in filtered_examples
|
|
151
|
+
if any(keyword.lower() in ex.content.lower() for keyword in self.config.example_filter_keywords)
|
|
152
|
+
]
|
|
153
|
+
|
|
154
|
+
# Exclude by keywords if specified
|
|
155
|
+
if self.config.example_exclude_keywords:
|
|
156
|
+
filtered_examples = [
|
|
157
|
+
ex for ex in filtered_examples
|
|
158
|
+
if not any(keyword.lower() in ex.content.lower() for keyword in self.config.example_exclude_keywords)
|
|
159
|
+
]
|
|
160
|
+
|
|
161
|
+
# Sort by recency and limit
|
|
162
|
+
filtered_examples.sort(key=lambda ex: ex.created_at, reverse=True)
|
|
163
|
+
return filtered_examples[:self.config.max_examples]
|
|
164
|
+
|
|
165
|
+
def _format_examples_for_injection(
|
|
166
|
+
self,
|
|
167
|
+
example_records: list["ExampleRecord"]
|
|
168
|
+
) -> str:
|
|
169
|
+
"""Format example records for injection into agent input."""
|
|
170
|
+
if not example_records:
|
|
171
|
+
return "No relevant examples available."
|
|
172
|
+
|
|
173
|
+
formatted_parts = []
|
|
174
|
+
formatted_parts.append(f"Here are {len(example_records)} examples to guide your response:")
|
|
175
|
+
|
|
176
|
+
for i, ex in enumerate(example_records, 1):
|
|
177
|
+
ex_text = f"\nExample {i} (ID: {ex.example_id}):"
|
|
178
|
+
ex_text += f"\n{ex.content}"
|
|
179
|
+
ex_text += f"\nDate: {ex.created_at.strftime('%Y-%m-%d')}"
|
|
180
|
+
formatted_parts.append(ex_text)
|
|
181
|
+
|
|
182
|
+
return "\n".join(formatted_parts)
|
|
183
|
+
|
|
184
|
+
async def on_pre_evaluate(
|
|
185
|
+
self,
|
|
186
|
+
agent: "FlockAgent",
|
|
187
|
+
inputs: dict[str, Any],
|
|
188
|
+
context: FlockContext | None = None,
|
|
189
|
+
) -> dict[str, Any]:
|
|
190
|
+
"""Inject relevant examples into agent inputs before evaluation."""
|
|
191
|
+
logger.debug(f"Injecting examples for agent '{agent.name}'")
|
|
192
|
+
|
|
193
|
+
try:
|
|
194
|
+
# Get relevant examples for this agent
|
|
195
|
+
example_records = await self._get_relevant_examples(agent.name, inputs)
|
|
196
|
+
|
|
197
|
+
# Format examples for injection
|
|
198
|
+
formatted_examples = self._format_examples_for_injection(example_records)
|
|
199
|
+
|
|
200
|
+
# Create a copy of inputs to avoid modifying the original
|
|
201
|
+
enhanced_inputs = inputs.copy()
|
|
202
|
+
|
|
203
|
+
# Inject examples using the configured key
|
|
204
|
+
enhanced_inputs[self.config.example_input_key] = formatted_examples
|
|
205
|
+
|
|
206
|
+
logger.debug(f"Injected {len(example_records)} examples into '{self.config.example_input_key}'")
|
|
207
|
+
|
|
208
|
+
return enhanced_inputs
|
|
209
|
+
|
|
210
|
+
except Exception as e:
|
|
211
|
+
logger.error(f"Error injecting examples: {e}")
|
|
212
|
+
# Return original inputs if example injection fails
|
|
213
|
+
return inputs
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
# Example record model
|
|
217
|
+
class ExampleRecord:
|
|
218
|
+
"""Record for storing example data."""
|
|
219
|
+
|
|
220
|
+
def __init__(
|
|
221
|
+
self,
|
|
222
|
+
agent_name: str,
|
|
223
|
+
example_id: str,
|
|
224
|
+
content: str,
|
|
225
|
+
created_at: datetime | None = None
|
|
226
|
+
):
|
|
227
|
+
self.agent_name = agent_name
|
|
228
|
+
self.example_id = example_id
|
|
229
|
+
self.content = content
|
|
230
|
+
self.created_at = created_at or datetime.utcnow()
|
|
231
|
+
|
|
232
|
+
def to_dict(self) -> dict[str, Any]:
|
|
233
|
+
"""Convert to dictionary for storage."""
|
|
234
|
+
return {
|
|
235
|
+
"agent_name": self.agent_name,
|
|
236
|
+
"example_id": self.example_id,
|
|
237
|
+
"content": self.content,
|
|
238
|
+
"created_at": self.created_at.isoformat(),
|
|
239
|
+
"context_type": "example"
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
@classmethod
|
|
243
|
+
def from_dict(cls, data: dict[str, Any]) -> "ExampleRecord":
|
|
244
|
+
"""Create from dictionary from storage."""
|
|
245
|
+
return cls(
|
|
246
|
+
agent_name=data["agent_name"],
|
|
247
|
+
example_id=data["example_id"],
|
|
248
|
+
content=data["content"],
|
|
249
|
+
created_at=datetime.fromisoformat(data["created_at"])
|
|
250
|
+
)
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"""Feedback utility component for learning from user feedback."""
|
|
2
|
+
|
|
3
|
+
from datetime import datetime, timedelta
|
|
4
|
+
from typing import TYPE_CHECKING, Any, Literal
|
|
5
|
+
|
|
6
|
+
from pydantic import Field
|
|
7
|
+
|
|
8
|
+
from flock.core.component.agent_component_base import AgentComponentConfig
|
|
9
|
+
from flock.core.component.utility_component import UtilityComponent
|
|
10
|
+
from flock.core.context.context import FlockContext
|
|
11
|
+
from flock.core.logging.logging import get_logger
|
|
12
|
+
from flock.core.registry import flock_component
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from flock.core.flock_agent import FlockAgent
|
|
16
|
+
from flock.webapp.app.services.sharing_models import FeedbackRecord
|
|
17
|
+
from flock.webapp.app.services.sharing_store import SharedLinkStoreInterface
|
|
18
|
+
|
|
19
|
+
logger = get_logger("components.utility.feedback")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class FeedbackUtilityConfig(AgentComponentConfig):
|
|
23
|
+
"""Configuration for the FeedbackUtilityComponent."""
|
|
24
|
+
|
|
25
|
+
# Storage configuration
|
|
26
|
+
storage_type: Literal["sqlite", "azure"] = Field(
|
|
27
|
+
default="sqlite",
|
|
28
|
+
description="Type of storage backend for feedback data"
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
# SQLite configuration
|
|
32
|
+
sqlite_db_path: str = Field(
|
|
33
|
+
default="./flock_feedback.db",
|
|
34
|
+
description="Path to SQLite database file"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# Azure Table Storage configuration
|
|
38
|
+
azure_connection_string: str | None = Field(
|
|
39
|
+
default=None,
|
|
40
|
+
description="Azure Table Storage connection string"
|
|
41
|
+
)
|
|
42
|
+
azure_table_name: str = Field(
|
|
43
|
+
default="flockfeedback",
|
|
44
|
+
description="Azure Table Storage table name"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# Feedback selection criteria
|
|
48
|
+
max_feedback_items: int = Field(
|
|
49
|
+
default=5,
|
|
50
|
+
description="Maximum number of feedback items to include"
|
|
51
|
+
)
|
|
52
|
+
feedback_timeframe_days: int = Field(
|
|
53
|
+
default=30,
|
|
54
|
+
description="Only include feedback from the last N days"
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# Feedback injection settings
|
|
58
|
+
feedback_input_key: str = Field(
|
|
59
|
+
default="feedback_context",
|
|
60
|
+
description="Input key to use for injected feedback"
|
|
61
|
+
)
|
|
62
|
+
include_expected_responses: bool = Field(
|
|
63
|
+
default=True,
|
|
64
|
+
description="Whether to include expected responses from feedback"
|
|
65
|
+
)
|
|
66
|
+
include_actual_responses: bool = Field(
|
|
67
|
+
default=False,
|
|
68
|
+
description="Whether to include actual responses from feedback"
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# Feedback filtering
|
|
72
|
+
feedback_filter_keywords: list[str] = Field(
|
|
73
|
+
default_factory=list,
|
|
74
|
+
description="Keywords to filter feedback (only include feedback containing these)"
|
|
75
|
+
)
|
|
76
|
+
feedback_exclude_keywords: list[str] = Field(
|
|
77
|
+
default_factory=list,
|
|
78
|
+
description="Keywords to exclude feedback containing these"
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@flock_component(config_class=FeedbackUtilityConfig)
|
|
83
|
+
class FeedbackUtilityComponent(UtilityComponent):
|
|
84
|
+
"""Utility component that injects relevant feedback into agent inputs."""
|
|
85
|
+
|
|
86
|
+
config: FeedbackUtilityConfig = Field(
|
|
87
|
+
default_factory=FeedbackUtilityConfig,
|
|
88
|
+
description="Feedback component configuration"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
def __init__(self, name: str = "feedback", config: FeedbackUtilityConfig | None = None, **data):
|
|
92
|
+
super().__init__(name=name, config=config or FeedbackUtilityConfig(), **data)
|
|
93
|
+
self._store: SharedLinkStoreInterface | None = None
|
|
94
|
+
|
|
95
|
+
async def _get_store(self) -> SharedLinkStoreInterface:
|
|
96
|
+
"""Get the appropriate feedback store based on configuration."""
|
|
97
|
+
if self._store is None:
|
|
98
|
+
if self.config.storage_type == "sqlite":
|
|
99
|
+
from flock.webapp.app.services.sharing_store import SQLiteSharedLinkStore
|
|
100
|
+
self._store = SQLiteSharedLinkStore(self.config.sqlite_db_path)
|
|
101
|
+
elif self.config.storage_type == "azure":
|
|
102
|
+
if not self.config.azure_connection_string:
|
|
103
|
+
raise ValueError("Azure connection string is required for Azure storage")
|
|
104
|
+
from flock.webapp.app.services.sharing_store import AzureTableSharedLinkStore
|
|
105
|
+
self._store = AzureTableSharedLinkStore(
|
|
106
|
+
connection_string=self.config.azure_connection_string,
|
|
107
|
+
table_name=self.config.azure_table_name
|
|
108
|
+
)
|
|
109
|
+
else:
|
|
110
|
+
raise ValueError(f"Unsupported storage type: {self.config.storage_type}")
|
|
111
|
+
|
|
112
|
+
await self._store.initialize()
|
|
113
|
+
|
|
114
|
+
return self._store
|
|
115
|
+
|
|
116
|
+
async def _get_relevant_feedback(
|
|
117
|
+
self,
|
|
118
|
+
agent_name: str,
|
|
119
|
+
inputs: dict[str, Any]
|
|
120
|
+
) -> list["FeedbackRecord"]:
|
|
121
|
+
"""Get relevant feedback for the given agent and inputs."""
|
|
122
|
+
store = await self._get_store()
|
|
123
|
+
|
|
124
|
+
# Get all feedback for this agent
|
|
125
|
+
all_feedback = await store.get_all_feedback_records_for_agent(agent_name)
|
|
126
|
+
|
|
127
|
+
# Filter by timeframe
|
|
128
|
+
cutoff_date = datetime.utcnow() - timedelta(days=self.config.feedback_timeframe_days)
|
|
129
|
+
filtered_feedback = [
|
|
130
|
+
fb for fb in all_feedback
|
|
131
|
+
if fb.created_at >= cutoff_date
|
|
132
|
+
]
|
|
133
|
+
|
|
134
|
+
# Filter by keywords if specified
|
|
135
|
+
if self.config.feedback_filter_keywords:
|
|
136
|
+
filtered_feedback = [
|
|
137
|
+
fb for fb in filtered_feedback
|
|
138
|
+
if any(keyword.lower() in fb.reason.lower() for keyword in self.config.feedback_filter_keywords)
|
|
139
|
+
]
|
|
140
|
+
|
|
141
|
+
# Exclude by keywords if specified
|
|
142
|
+
if self.config.feedback_exclude_keywords:
|
|
143
|
+
filtered_feedback = [
|
|
144
|
+
fb for fb in filtered_feedback
|
|
145
|
+
if not any(keyword.lower() in fb.reason.lower() for keyword in self.config.feedback_exclude_keywords)
|
|
146
|
+
]
|
|
147
|
+
|
|
148
|
+
# Sort by recency and limit
|
|
149
|
+
filtered_feedback.sort(key=lambda fb: fb.created_at, reverse=True)
|
|
150
|
+
return filtered_feedback[:self.config.max_feedback_items]
|
|
151
|
+
|
|
152
|
+
def _format_feedback_for_injection(
|
|
153
|
+
self,
|
|
154
|
+
feedback_records: list["FeedbackRecord"]
|
|
155
|
+
) -> str:
|
|
156
|
+
"""Format feedback records for injection into agent input."""
|
|
157
|
+
if not feedback_records:
|
|
158
|
+
return "No relevant feedback available."
|
|
159
|
+
|
|
160
|
+
formatted_parts = []
|
|
161
|
+
formatted_parts.append(f"Here are {len(feedback_records)} pieces of relevant feedback from previous interactions:")
|
|
162
|
+
|
|
163
|
+
for i, fb in enumerate(feedback_records, 1):
|
|
164
|
+
fb_text = f"\n{i}. Feedback: {fb.reason}"
|
|
165
|
+
|
|
166
|
+
if self.config.include_expected_responses and fb.expected_response:
|
|
167
|
+
fb_text += f"\n Expected response: {fb.expected_response}"
|
|
168
|
+
|
|
169
|
+
if self.config.include_actual_responses and fb.actual_response:
|
|
170
|
+
fb_text += f"\n Actual response: {fb.actual_response}"
|
|
171
|
+
|
|
172
|
+
fb_text += f"\n Date: {fb.created_at.strftime('%Y-%m-%d')}"
|
|
173
|
+
formatted_parts.append(fb_text)
|
|
174
|
+
|
|
175
|
+
return "\n".join(formatted_parts)
|
|
176
|
+
|
|
177
|
+
async def on_pre_evaluate(
|
|
178
|
+
self,
|
|
179
|
+
agent: "FlockAgent",
|
|
180
|
+
inputs: dict[str, Any],
|
|
181
|
+
context: FlockContext | None = None,
|
|
182
|
+
) -> dict[str, Any]:
|
|
183
|
+
"""Inject relevant feedback into agent inputs before evaluation."""
|
|
184
|
+
logger.debug(f"Injecting feedback for agent '{agent.name}'")
|
|
185
|
+
|
|
186
|
+
try:
|
|
187
|
+
# Get relevant feedback for this agent
|
|
188
|
+
feedback_records = await self._get_relevant_feedback(agent.name, inputs)
|
|
189
|
+
|
|
190
|
+
# Format feedback for injection
|
|
191
|
+
formatted_feedback = self._format_feedback_for_injection(feedback_records)
|
|
192
|
+
|
|
193
|
+
# Create a copy of inputs to avoid modifying the original
|
|
194
|
+
enhanced_inputs = inputs.copy()
|
|
195
|
+
|
|
196
|
+
# Inject feedback using the configured key
|
|
197
|
+
enhanced_inputs[self.config.feedback_input_key] = formatted_feedback
|
|
198
|
+
|
|
199
|
+
logger.debug(f"Injected {len(feedback_records)} feedback items into '{self.config.feedback_input_key}'")
|
|
200
|
+
|
|
201
|
+
return enhanced_inputs
|
|
202
|
+
|
|
203
|
+
except Exception as e:
|
|
204
|
+
logger.error(f"Error injecting feedback: {e}")
|
|
205
|
+
# Return original inputs if feedback injection fails
|
|
206
|
+
return inputs
|
|
@@ -10,6 +10,14 @@ from __future__ import annotations
|
|
|
10
10
|
from collections.abc import Callable
|
|
11
11
|
from typing import Any, Literal
|
|
12
12
|
|
|
13
|
+
from flock.components.utility.example_utility_component import (
|
|
14
|
+
ExampleUtilityComponent,
|
|
15
|
+
ExampleUtilityConfig,
|
|
16
|
+
)
|
|
17
|
+
from flock.components.utility.feedback_utility_component import (
|
|
18
|
+
FeedbackUtilityComponent,
|
|
19
|
+
FeedbackUtilityConfig,
|
|
20
|
+
)
|
|
13
21
|
from flock.components.utility.metrics_utility_component import (
|
|
14
22
|
MetricsUtilityComponent,
|
|
15
23
|
MetricsUtilityConfig,
|
|
@@ -28,6 +36,7 @@ class DefaultAgent(FlockAgent):
|
|
|
28
36
|
- DeclarativeEvaluationComponent (LLM evaluation)
|
|
29
37
|
- OutputUtilityComponent (formatting/printing)
|
|
30
38
|
- MetricsUtilityComponent (latency tracking)
|
|
39
|
+
- FeedbackUtilityComponent (feedback learning) - optional
|
|
31
40
|
"""
|
|
32
41
|
|
|
33
42
|
def __init__(
|
|
@@ -62,6 +71,12 @@ class DefaultAgent(FlockAgent):
|
|
|
62
71
|
wait_for_input: bool = False,
|
|
63
72
|
# Metrics utility
|
|
64
73
|
alert_latency_threshold_ms: int = 30_000,
|
|
74
|
+
# Feedback utility
|
|
75
|
+
enable_feedback: bool = False,
|
|
76
|
+
feedback_config: FeedbackUtilityConfig | None = None,
|
|
77
|
+
# Example utility
|
|
78
|
+
enable_examples: bool = False,
|
|
79
|
+
example_config: ExampleUtilityConfig | None = None,
|
|
65
80
|
# Workflow
|
|
66
81
|
next_agent: DynamicStr | None = None,
|
|
67
82
|
temporal_activity_config: TemporalActivityConfig | None = None,
|
|
@@ -99,6 +114,10 @@ class DefaultAgent(FlockAgent):
|
|
|
99
114
|
write_to_file: Save outputs to file
|
|
100
115
|
wait_for_input: Wait for user input after execution
|
|
101
116
|
alert_latency_threshold_ms: Threshold for latency alerts
|
|
117
|
+
enable_feedback: Whether to enable feedback learning component
|
|
118
|
+
feedback_config: Configuration for feedback component
|
|
119
|
+
enable_examples: Whether to enable example learning component
|
|
120
|
+
example_config: Configuration for example component
|
|
102
121
|
next_agent: Next agent in workflow chain
|
|
103
122
|
temporal_activity_config: Configuration for Temporal workflow execution
|
|
104
123
|
"""
|
|
@@ -161,6 +180,23 @@ class DefaultAgent(FlockAgent):
|
|
|
161
180
|
name="metrics_tracker", config=metrics_config
|
|
162
181
|
)
|
|
163
182
|
|
|
183
|
+
# Feedback utility component (optional)
|
|
184
|
+
components = [evaluator, output_component, metrics_component]
|
|
185
|
+
if enable_feedback:
|
|
186
|
+
feedback_component = FeedbackUtilityComponent(
|
|
187
|
+
name="feedback",
|
|
188
|
+
config=feedback_config or FeedbackUtilityConfig()
|
|
189
|
+
)
|
|
190
|
+
components.append(feedback_component)
|
|
191
|
+
|
|
192
|
+
# Example utility component (optional)
|
|
193
|
+
if enable_examples:
|
|
194
|
+
example_component = ExampleUtilityComponent(
|
|
195
|
+
name="examples",
|
|
196
|
+
config=example_config or ExampleUtilityConfig()
|
|
197
|
+
)
|
|
198
|
+
components.append(example_component)
|
|
199
|
+
|
|
164
200
|
super().__init__(
|
|
165
201
|
name=name,
|
|
166
202
|
model=model,
|
|
@@ -170,7 +206,7 @@ class DefaultAgent(FlockAgent):
|
|
|
170
206
|
tools=tools,
|
|
171
207
|
servers=servers,
|
|
172
208
|
tool_whitelist=tool_whitelist,
|
|
173
|
-
components=
|
|
209
|
+
components=components,
|
|
174
210
|
config=FlockAgentConfig(
|
|
175
211
|
write_to_file=write_to_file,
|
|
176
212
|
wait_for_input=wait_for_input,
|