flock-core 0.4.0b37__tar.gz → 0.4.0b39__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flock-core might be problematic. Click here for more details.
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/PKG-INFO +1 -1
- flock_core-0.4.0b39/docs/about/changelog.md +37 -0
- flock_core-0.4.0b39/docs/about/contributing.md +65 -0
- flock_core-0.4.0b39/docs/components/evaluators.md +82 -0
- flock_core-0.4.0b39/docs/components/index.md +43 -0
- flock_core-0.4.0b39/docs/components/modules.md +76 -0
- flock_core-0.4.0b39/docs/components/tools.md +66 -0
- flock_core-0.4.0b39/docs/core-concepts/agents.md +118 -0
- flock_core-0.4.0b39/docs/core-concepts/declarative.md +121 -0
- flock_core-0.4.0b39/docs/core-concepts/index.md +105 -0
- flock_core-0.4.0b39/docs/core-concepts/workflows.md +127 -0
- flock_core-0.4.0b39/docs/deployment/index.md +60 -0
- flock_core-0.4.0b39/docs/deployment/temporal.md +107 -0
- flock_core-0.4.0b39/docs/getting-started/concepts.md +28 -0
- flock_core-0.4.0b39/docs/guides/custom-endpoints.md +123 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/guides/index.md +1 -0
- flock_core-0.4.0b39/docs/reference/flock_agent.md +93 -0
- flock_core-0.4.0b39/docs/reference/index.md +14 -0
- flock_core-0.4.0b39/docs/release-notes/magpie.md +48 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/pyproject.toml +1 -1
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/config.py +6 -1
- flock_core-0.4.0b39/src/flock/core/api/custom_endpoint.py +40 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/main.py +120 -6
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/runner.py +9 -3
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/flock.py +4 -1
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/telemetry.py +32 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/main.py +1 -1
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_sidebar.html +9 -9
- flock_core-0.4.0b39/tests/api/test_custom_endpoints.py +50 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/uv.lock +1 -1
- flock_core-0.4.0b37/docs/about/changelog.md +0 -8
- flock_core-0.4.0b37/docs/about/contributing.md +0 -8
- flock_core-0.4.0b37/docs/components/evaluators.md +0 -8
- flock_core-0.4.0b37/docs/components/index.md +0 -8
- flock_core-0.4.0b37/docs/components/modules.md +0 -8
- flock_core-0.4.0b37/docs/components/tools.md +0 -8
- flock_core-0.4.0b37/docs/core-concepts/agents.md +0 -8
- flock_core-0.4.0b37/docs/core-concepts/declarative.md +0 -8
- flock_core-0.4.0b37/docs/core-concepts/index.md +0 -8
- flock_core-0.4.0b37/docs/core-concepts/workflows.md +0 -8
- flock_core-0.4.0b37/docs/deployment/index.md +0 -8
- flock_core-0.4.0b37/docs/deployment/temporal.md +0 -8
- flock_core-0.4.0b37/docs/reference/flock_agent.md +0 -8
- flock_core-0.4.0b37/docs/reference/index.md +0 -8
- flock_core-0.4.0b37/docs/release-notes/magpie.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.devcontainer/devcontainer.json +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.env_template +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.github/workflows/.gitkeep +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.github/workflows/deploy-documentation.yml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.gitignore +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.gitmodules +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.vscode/launch.json +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.vscode/settings.json +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/.vscode/tasks.json +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/LICENSE +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/README.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/drawio/architecture.drawio +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/cli_outputs/out.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/components_chart.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/examples/01_01.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/examples/01_02.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/examples/01_03.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/examples/01_04.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/examples/01_05.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/examples/01_06.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/flock.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/flock_cli.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/flow_chart.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/getting-started/first_agent_00.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/hummingbird.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/icon.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/icon.png~ +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/logo.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/memory_concepts.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/memory_flow.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/assets/images/memory_flow_chart.png +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/create_doc_boilerplate.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/getting-started/configuration.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/getting-started/index.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/getting-started/installation.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/getting-started/quickstart.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/guides/chaining-agents.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/guides/temporal-configuration.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/index.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/interacting-with-flock/cli-tool.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/interacting-with-flock/index.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/interacting-with-flock/interactive-cli.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/interacting-with-flock/programmatic.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/interacting-with-flock/rest-api.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/interacting-with-flock/web-ui.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/docs/stylesheets/extra.css +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/mkdocs.yml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/requirements.txt +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/scripts/code_collector.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/scripts/create_docs.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/scripts/ensure_uv.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/assets/release_notes.md +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/config.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/constants.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/create_agent.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/create_flock.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/execute_flock.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/load_agent.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/load_examples.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/load_flock.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/load_release_notes.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/loaded_flock_cli.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/manage_agents.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/registry_management.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/runner.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/settings.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/utils.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/view_results.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/cli/yaml_editor.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/endpoints.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/models.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/run_store.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/ui/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/ui/routes.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/api/ui/utils.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/context/context.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/context/context_manager.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/context/context_vars.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/evaluation/utils.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/execution/batch_executor.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/execution/evaluation_executor.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/execution/local_executor.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/execution/temporal_executor.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/flock_agent.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/flock_evaluator.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/flock_factory.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/flock_module.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/flock_registry.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/flock_router.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/interpreter/python_interpreter.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/formatters/enum_builder.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/formatters/theme_builder.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/formatters/themes.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/logging.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/logging/trace_and_logged.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/mixin/dspy_integration.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/mixin/prompt_parser.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/serialization/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/serialization/callable_registry.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/serialization/flock_serializer.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/serialization/json_encoder.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/serialization/secure_serializer.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/serialization/serializable.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/serialization/serialization_utils.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/tools/azure_tools.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/tools/basic_tools.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/tools/dev_tools/github.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/tools/llm_tools.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/tools/markdown_tools.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/tools/zendesk_tools.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/util/cli_helper.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/util/file_path_utils.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/util/hydrator.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/util/input_resolver.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/util/loader.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/core/util/spliter.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/evaluators/test/test_case_evaluator.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/modules/assertion/assertion_module.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/modules/callback/callback_module.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/modules/memory/memory_module.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/modules/memory/memory_parser.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/modules/memory/memory_storage.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/modules/output/output_module.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/modules/performance/metrics_module.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/modules/zep/zep_module.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/platform/docker_tools.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/platform/jaeger_install.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/agent/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/agent/agent_router.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/agent/handoff_agent.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/conditional/conditional_router.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/default/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/default/default_router.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/feedback/feedback_router.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/list_generator/list_generator_router.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/llm/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/routers/llm/llm_router.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/3024-day.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/3024-night.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/aardvark-blue.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/abernathy.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/adventure.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/adventuretime.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/afterglow.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/alabaster.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/alienblood.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/andromeda.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/apple-classic.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/apple-system-colors.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/arcoiris.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/argonaut copy.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/argonaut.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/arthur.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ateliersulphurpool.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/atom.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/atom_test.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/atomonelight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/aurora.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ayu copy.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ayu-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ayu-mirage.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ayu.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/banana-blueberry.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/batman.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/belafonte-day.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/belafonte-night.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/birdsofparadise.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/blazer.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/blue-matrix.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/blueberrypie.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/bluedolphin.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/blulocodark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/blulocolight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/borland.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/breeze.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/bright-lights.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/broadcast.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/brogrammer.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/builtin-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/builtin-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/builtin-pastel-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/builtin-solarized-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/builtin-solarized-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/builtin-tango-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/builtin-tango-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/c64.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/calamity.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/catppuccin-frappe.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/catppuccin-latte.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/catppuccin-macchiato.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/catppuccin-mocha.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/cga.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/chalk.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/chalkboard.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/challengerdeep.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/chester.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ciapre.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/clrs.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/cobalt-neon.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/cobalt2.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/coffee-theme.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/crayonponyfish.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/cutiepro.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/cyberdyne.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/cyberpunk.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/dark+.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/dark-pastel.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/darkermatrix.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/darkmatrix.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/darkside.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/dayfox.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/deep.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/desert.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/dimidium.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/dimmedmonokai.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/django.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/djangorebornagain.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/djangosmooth.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/doom-peacock.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/doomone.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/dotgov.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/dracula+.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/dracula.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/duckbones.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/duotone-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/earthsong.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/elemental.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/elementary.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/encom.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/espresso-libre.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/espresso.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/everblush.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/fahrenheit.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/fairyfloss.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/farmhouse-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/farmhouse-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/fideloper.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/firefly-traditional.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/firefoxdev.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/firewatch.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/fishtank.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/flat.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/flatland.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/flexoki-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/flexoki-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/floraverse.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/forestblue.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/framer.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/frontenddelight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/funforrest.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/galaxy.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/galizur.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/github-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/github.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/glacier.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/grape.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/grass.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/grey-green.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/gruber-darker.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/gruvboxdark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/gruvboxdarkhard.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/gruvboxlight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/guezwhoz.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hacktober.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hardcore.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/harper.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hax0r-blue.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hax0r-gr33n.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hax0r-r3d.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/highway.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hipster-green.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hivacruz.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/homebrew.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hopscotch.256.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hopscotch.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hurtado.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/hybrid.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ic-green-ppl.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ic-orange-ppl.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iceberg-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iceberg-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/idea.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/idletoes.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ir-black.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-dark-background.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-default.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-light-background.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-smoooooth.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-solarized-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-tango-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/iterm2-tango-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/jackie-brown.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/japanesque.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/jellybeans.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/jetbrains-darcula.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/jubi.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/kanagawabones.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/kibble.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/kolorit.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/konsolas.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/kurokula.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/lab-fox.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/laser.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/later-this-evening.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/lavandula.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/liquidcarbon.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/liquidcarbontransparent.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/lovelace.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/man-page.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/mariana.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/material.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/materialdark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/materialdarker.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/materialdesigncolors.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/materialocean.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/mathias.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/matrix.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/medallion.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/mellifluous.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/midnight-in-mojave.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/mirage.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/misterioso.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/molokai.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/monalisa.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/monokai-remastered.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/monokai-soda.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/monokai-vivid.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/n0tch2k.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/neobones-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/neobones-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/neon.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/neopolitan.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/neutron.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/night-owlish-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/nightfox.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/nightlion-v1.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/nightlion-v2.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/niji.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/nocturnal-winter.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/nord-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/nord.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/novel.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/nvimdark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/nvimlight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/obsidian.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ocean.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/oceanic-next.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/oceanicmaterial.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ollie.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/onehalfdark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/onehalflight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/operator-mono-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/overnight-slumber.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/oxocarbon.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/palenighthc.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/pandora.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/paraiso-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/paulmillr.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/pencildark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/pencillight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/peppermint.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/piatto-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/pnevma.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/popping-and-locking.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/primary.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/pro-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/pro.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/purple-rain.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/purplepeter.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/rapture.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/raycast-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/raycast-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/rebecca.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/red-alert.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/red-planet.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/red-sands.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/relaxed.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/retro.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/rippedcasts.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/rose-pine-dawn.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/rose-pine-moon.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/rose-pine.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/rouge-2.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/royal.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ryuuko.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/sakura.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/scarlet-protocol.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/seafoam-pastel.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/seashells.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/seoulbones-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/seoulbones-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/seti.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/shades-of-purple.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/shaman.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/slate.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/sleepyhollow.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/smyck.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/snazzy.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/softserver.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/solarized-darcula.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/solarized-dark---patched.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/spacedust.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/spacegray-eighties.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/spacegray.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/spiderman.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/spring.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/square.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/sublette.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/subliminal.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/sugarplum.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/sundried.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/symfonic.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/synthwave-everything.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/synthwave.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/synthwavealpha.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tango-adapted.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tango-half-adapted.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/teerb.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/terafox.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/terminal-basic.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/thayer-bright.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/the-hulk.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tinacious-design-(dark).toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tinacious-design-(light).toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tokyonight-day.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tokyonight-storm.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tokyonight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tomorrow-night-blue.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tomorrow-night-bright.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tomorrow-night-burns.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tomorrow-night.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/tomorrow.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/toychest.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/treehouse.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/twilight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ubuntu.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ultradark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/ultraviolent.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/underthesea.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/unikitty.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/urple.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/vaughn.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/vesper.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/vibrantink.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/vimbones.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/violet-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/violet-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/warmneon.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/wez.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/whimsy.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/wildcherry.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/wilmersdorf.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/wombat.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/wryan.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/xcodedark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/xcodedarkhc.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/xcodelight.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/xcodelighthc.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/xcodewwdc.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/zenbones-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/zenbones-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/zenbones.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/zenburn.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/zenburned.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/zenwritten-dark.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/themes/zenwritten-light.toml +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/api/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/api/agent_management.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/api/execution.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/api/flock_management.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/api/registry_viewer.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/config.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/models_ui.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/services/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/services/flock_service.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/templates/theme_mapper.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/theme_mapper.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/app/utils.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/run.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/static/css/custom.css +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/base.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/flock_editor.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/index.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_agent_detail_form.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_agent_list.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_agent_manager_view.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_agent_manager_view_old.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_agent_tools_checklist.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_create_flock_form.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_dashboard_flock_detail.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_dashboard_flock_file_list.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_dashboard_upload_flock_form.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_dynamic_input_form_content.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_env_vars_table.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_execution_form.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_execution_view_container.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_flock_file_list.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_flock_properties_form.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_flock_upload_form.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_header_flock_status.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_load_manager_view.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_registry_table.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_registry_viewer_content.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_results_display.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_settings_env_content.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_settings_theme_content.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_settings_view.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_structured_data_view.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/partials/_theme_preview.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/webapp/templates/registry_viewer.html +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/workflow/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/workflow/activities.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/workflow/agent_activities.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/workflow/agent_execution_activity.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/workflow/flock_workflow.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/workflow/temporal_config.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/src/flock/workflow/temporal_setup.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/core/test_flock_batch.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/core/test_flock_core.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/serialization/__init__.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/serialization/test_enhanced_serialization.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/serialization/test_file_path_serialization.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/serialization/test_flock_serializer.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/serialization/test_nested_serialization.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/serialization/test_yaml_serialization.py +0 -0
- {flock_core-0.4.0b37 → flock_core-0.4.0b39}/tests/tools/test_zendesk_tools.py +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide: # Optional: Hide table of contents on simple pages
|
|
3
|
+
- toc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Changelog 📝
|
|
7
|
+
|
|
8
|
+
All notable changes to **Flock** will be documented in this file.
|
|
9
|
+
|
|
10
|
+
The format loosely follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and adheres to [Semantic Versioning](https://semver.org/).
|
|
11
|
+
|
|
12
|
+
## [Unreleased]
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- Core concepts & component documentation (this PR).
|
|
16
|
+
- Placeholder replacement across docs.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## [0.1.0] – 2025-05-07 "Magpie"
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- Initial public release to PyPI.
|
|
24
|
+
- Declarative agent framework with evaluators, modules, routers.
|
|
25
|
+
- Temporal execution path.
|
|
26
|
+
- CLI & REST API wrappers.
|
|
27
|
+
- Built-in tools: `get_web_content_as_markdown`, Azure Blob helper, markdown utils.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
- N/A
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
- N/A
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
*Older history prior to open-source release is maintained internally.*
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide: # Optional: Hide table of contents on simple pages
|
|
3
|
+
- toc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Contributing Guide 🙌
|
|
7
|
+
|
|
8
|
+
First off, thanks for taking the time to contribute! Flock is still early but we value outside input. We follow the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Getting Started
|
|
13
|
+
|
|
14
|
+
1. **Fork** the repo & create your feature branch (`git checkout -b feat/my-awesome-thing`).
|
|
15
|
+
2. **Install** dev dependencies: `uv pip install -r requirements.txt && uv pip install -r requirements-dev.txt`.
|
|
16
|
+
3. **Run tests**: `pytest -q` (they should pass before and after your change).
|
|
17
|
+
4. **Make changes** – keep them atomic and well-documented.
|
|
18
|
+
5. **Lint & type-check**: `ruff .` and `mypy src/`.
|
|
19
|
+
6. **Commit** following *Conventional Commits* (`feat:`, `fix:`, `docs:` etc.).
|
|
20
|
+
7. **Open a PR** against `main`. Include a description, screenshots, and linked issues.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. Docs Contributions
|
|
25
|
+
|
|
26
|
+
Docs live under `docs/` and are built with **MkDocs Material**.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
mkdocs serve # live-reload at http://localhost:8000
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
* Use American English.
|
|
33
|
+
* Keep sentences short; favour lists & tables.
|
|
34
|
+
* Add code blocks with triple-backticks and language.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 3. Coding Standards
|
|
39
|
+
|
|
40
|
+
* Python `3.10+`. Use type hints everywhere.
|
|
41
|
+
* Follow `ruff` default rules + `black` formatting.
|
|
42
|
+
* Keep imports sorted (`ruff format`).
|
|
43
|
+
* Write **async-friendly** code (non-blocking I/O).
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 4. Tests
|
|
48
|
+
|
|
49
|
+
* Place new tests in `tests/` mirroring the package path.
|
|
50
|
+
* Use `pytest` fixtures instead of duplicating setup code.
|
|
51
|
+
* For Temporal code, rely on the *Temporal Test Server* fixture.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 5. Release Process
|
|
56
|
+
|
|
57
|
+
1. Maintainer bumps version in `pyproject.toml` following *SemVer*.
|
|
58
|
+
2. Changelog entry added in `docs/about/changelog.md`.
|
|
59
|
+
3. `uv pip install -e .[all] && pytest`.
|
|
60
|
+
4. `git tag vX.Y.Z && git push --tags`.
|
|
61
|
+
5. GitHub Action publishes to PyPI.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
Happy hacking! 🐦
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide: # Optional: Hide table of contents on simple pages
|
|
3
|
+
- toc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Evaluators 🧑⚖️
|
|
7
|
+
|
|
8
|
+
Evaluators are responsible for **turning an agent's declarative specification into actual work**. They live inside the agent instance (`agent.evaluator`) and must implement the async method:
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
async def evaluate(self, agent: FlockAgent, inputs: dict, tools: list[Callable]) -> dict: ...
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The returned dict is validated against the agent's `output` signature.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Built-in Evaluators
|
|
19
|
+
|
|
20
|
+
| Class | Location | Description |
|
|
21
|
+
| ----- | -------- | ----------- |
|
|
22
|
+
| `DeclarativeEvaluator` | `flock.evaluators.declarative` | Default. Generates a prompt from the agent's signatures and calls `litellm`.
|
|
23
|
+
| `DSPyEvaluator` | `flock.evaluators.dspy` | Integrates with [DSPy](https://github.com/stanfordnlp/dspy) for structured prompting & optimisation.
|
|
24
|
+
| `RuleEvaluator` | `flock.evaluators.rule` | Pure-Python rules engine (no LLM). Useful for testing. |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. Configuring Evaluators
|
|
29
|
+
|
|
30
|
+
All evaluators accept a `*Config` dataclass (Pydantic model) with relevant fields. Example for Declarative:
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
from flock.evaluators.declarative import DeclarativeEvaluator, DeclarativeEvaluatorConfig
|
|
34
|
+
|
|
35
|
+
config = DeclarativeEvaluatorConfig(
|
|
36
|
+
model="anthropic/claude-3-opus",
|
|
37
|
+
temperature=0.2,
|
|
38
|
+
max_tokens=2048,
|
|
39
|
+
stream=True,
|
|
40
|
+
include_thought_process=False,
|
|
41
|
+
use_cache=True,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
evaluator = DeclarativeEvaluator(name="default", config=config)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
You can then inject the evaluator when you instantiate the agent or replace it later:
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
agent.evaluator = evaluator # hot-swap!
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 3. Writing a Custom Evaluator
|
|
56
|
+
|
|
57
|
+
1. Subclass `FlockEvaluator` and optionally declare a `FlockEvaluatorConfig`.
|
|
58
|
+
2. Implement `async evaluate(self, agent, inputs, tools)`.
|
|
59
|
+
3. Register with the registry (optional) for serialization:
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
from flock.core import flock_component
|
|
63
|
+
|
|
64
|
+
@flock_component
|
|
65
|
+
class MyCoolEvaluator(FlockEvaluator):
|
|
66
|
+
async def evaluate(self, agent, inputs, tools):
|
|
67
|
+
# do stuff…
|
|
68
|
+
return {"answer": "42"}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 4. Best Practices
|
|
74
|
+
|
|
75
|
+
* Respect the `model` selected on the agent unless your evaluator has a reason to override.
|
|
76
|
+
* Validate inputs early; raise `ValueError` to trigger `on_error` hooks.
|
|
77
|
+
* Make expensive network calls **async** to keep the event loop responsive.
|
|
78
|
+
* Return only the fields declared in the output signature (extra fields are dropped).
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
➡️ Continue to [Modules](modules.md) to see how to augment agent behaviour.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide: # Optional: Hide table of contents on simple pages
|
|
3
|
+
- toc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Components Overview 🧩
|
|
7
|
+
|
|
8
|
+
Components are the **plug-in** architecture that powers extensibility in Flock. They allow you to add behaviour without rewriting agent code.
|
|
9
|
+
|
|
10
|
+
| Component Type | Purpose | Base Class |
|
|
11
|
+
| -------------- | ------- | ---------- |
|
|
12
|
+
| **Evaluator** | Implements an agent's core logic. Often calls an LLM but could be pure Python. | `FlockEvaluator` |
|
|
13
|
+
| **Module** | Hooks into the agent lifecycle for cross-cutting concerns (metrics, output formatting, memory, etc.). | `FlockModule` |
|
|
14
|
+
| **Tool** | A single callable that an evaluator may invoke to access external functionality (web search, DB query, script execution…). | Registered via `@flock_tool` |
|
|
15
|
+
|
|
16
|
+
Each component type is described in its own page:
|
|
17
|
+
|
|
18
|
+
* [Evaluators](evaluators.md)
|
|
19
|
+
* [Modules](modules.md)
|
|
20
|
+
* [Tools](tools.md)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Version Compatibility
|
|
25
|
+
|
|
26
|
+
All core component base classes follow **Semantic Versioning**. Adding new optional hook methods counts as a *minor* version bump, so custom components will keep working.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Lifecycle Hook Matrix
|
|
31
|
+
|
|
32
|
+
| Stage | Evaluator | Module |
|
|
33
|
+
| ----- | --------- | ------ |
|
|
34
|
+
| `initialize` | ❌ (Evaluator created beforehand) | ✅ |
|
|
35
|
+
| `evaluate` | ✅ | ✅ (wrap/observe) |
|
|
36
|
+
| `terminate` | ❌ | ✅ |
|
|
37
|
+
| `on_error` | ❌ | ✅ |
|
|
38
|
+
|
|
39
|
+
Tools do not participate in hooks; they are invoked directly by the evaluator.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
Continue reading the dedicated pages for implementation details.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide: # Optional: Hide table of contents on simple pages
|
|
3
|
+
- toc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Modules 🧩
|
|
7
|
+
|
|
8
|
+
Modules let you **augment** agents with additional behaviour without touching their core logic. They follow the classic *aspect-oriented* approach: hook into lifecycle stages and run code *around* the evaluator.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Anatomy
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
class MyModule(FlockModule):
|
|
16
|
+
async def initialize(self, agent, inputs, context):
|
|
17
|
+
... # called before evaluate
|
|
18
|
+
|
|
19
|
+
async def after_evaluate(self, agent, result, context):
|
|
20
|
+
... # inspect/transform result
|
|
21
|
+
|
|
22
|
+
async def terminate(self, agent, context):
|
|
23
|
+
... # cleanup
|
|
24
|
+
|
|
25
|
+
async def on_error(self, agent, error, context):
|
|
26
|
+
... # exception handling
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The base class also exposes a `.config` dataclass so users can set parameters declaratively.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 2. Built-in Modules
|
|
34
|
+
|
|
35
|
+
| Module | Purpose |
|
|
36
|
+
| ------ | ------- |
|
|
37
|
+
| `OutputModule` | Pretty-prints results to the console via *Rich*. |
|
|
38
|
+
| `MetricsModule` | Records latency & token metrics, raises alerts. |
|
|
39
|
+
| `MemoryModule` *(WIP)* | Persistent, vectorised memory per agent. |
|
|
40
|
+
| `TracingModule` | Adds extra OpenTelemetry spans/tags. |
|
|
41
|
+
|
|
42
|
+
You attach modules either during construction:
|
|
43
|
+
|
|
44
|
+
```python
|
|
45
|
+
agent = FlockFactory.create_default_agent(...)
|
|
46
|
+
agent.add_module(OutputModule("output", OutputModuleConfig(render_table=True)))
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Or pass them into `FlockAgent(modules={...})` directly.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 3. Ordering
|
|
54
|
+
|
|
55
|
+
Modules run in the order they were added. Use this to your advantage (e.g. log metrics *after* output is printed).
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 4. Writing Your Own
|
|
60
|
+
|
|
61
|
+
1. Subclass `FlockModule`.
|
|
62
|
+
2. Implement any subset of the lifecycle hooks.
|
|
63
|
+
3. Optionally create a `FlockModuleConfig` Pydantic model.
|
|
64
|
+
4. Register via `@flock_component` so it serialises nicely.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 5. Best Practices
|
|
69
|
+
|
|
70
|
+
* Keep modules **stateless** or store state in the provided `context`.
|
|
71
|
+
* Perform long-running or blocking work in the async hooks.
|
|
72
|
+
* Use configurability (`*Config`) to avoid hard-coding behaviour.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
Next up: [Tools](tools.md).
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide: # Optional: Hide table of contents on simple pages
|
|
3
|
+
- toc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tools 🔧
|
|
7
|
+
|
|
8
|
+
Tools are **single functions** that an evaluator can call to perform tasks the LLM cannot (or should not) handle by itself – e.g. web scraping, database queries, or calling another API.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Defining a Tool
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
from flock.core import flock_tool
|
|
16
|
+
|
|
17
|
+
@flock_tool
|
|
18
|
+
def get_web_content_as_markdown(url: str) -> str:
|
|
19
|
+
"""Fetch a web page and convert it to Markdown."""
|
|
20
|
+
import requests, markdownify # lightweight example
|
|
21
|
+
html = requests.get(url, timeout=10).text
|
|
22
|
+
return markdownify.markdownify(html)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Decorating with `@flock_tool` registers the function in the **global registry** so any agent can reference it by symbol.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 2. Using Tools in Agents
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
agent = FlockFactory.create_default_agent(
|
|
33
|
+
name="page_analyser",
|
|
34
|
+
input="url: str",
|
|
35
|
+
output="title: str, headings: list[str]",
|
|
36
|
+
tools=[get_web_content_as_markdown],
|
|
37
|
+
)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Inside your evaluator you simply call the function:
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
content = await tools.get_web_content_as_markdown(inputs["url"])
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The DeclarativeEvaluator automatically injects **function docs** into the prompt so the LLM knows when/how to call them.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 3. Tool Signature Rules
|
|
51
|
+
|
|
52
|
+
* Use **type hints** – they become part of the prompt + allow runtime validation.
|
|
53
|
+
* Keep I/O **JSON-serialisable**; complex objects should be reduced to primitives.
|
|
54
|
+
* Raise normal Python exceptions; they propagate to `on_error`.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 4. Security Considerations
|
|
59
|
+
|
|
60
|
+
* Be cautious when exposing file-system or shell operations.
|
|
61
|
+
* Prefer *allow-lists* over *deny-lists* when building wrappers.
|
|
62
|
+
* Use the `enable_temporal` sandbox if you need strict isolation.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
That wraps up the components trilogy! Head over to [Deployment](../deployment/index.md) to see how to ship your flock.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide: # Optional: Hide table of contents on simple pages
|
|
3
|
+
- toc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Flock Agents 🐦
|
|
7
|
+
|
|
8
|
+
A **FlockAgent** is the fundamental unit of work in the framework. Each agent is *declarative* – you specify **what** goes in, **what** should come out, and (optionally) some high-level behavioural hints. Flock takes care of turning that declaration into concrete logic at runtime.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Anatomy of an Agent
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
from flock.core import FlockAgent, FlockFactory
|
|
16
|
+
|
|
17
|
+
agent = FlockFactory.create_default_agent(
|
|
18
|
+
name="movie_pitcher",
|
|
19
|
+
description="Creates a fun movie idea for a given topic",
|
|
20
|
+
input="topic: str | The central subject of the movie",
|
|
21
|
+
output=(
|
|
22
|
+
"title: str | CAPSLOCK title, "
|
|
23
|
+
"runtime: int | Minutes, "
|
|
24
|
+
"synopsis: str | Over-the-top summary"
|
|
25
|
+
),
|
|
26
|
+
)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Key Fields
|
|
30
|
+
|
|
31
|
+
| Field | Type | Intent |
|
|
32
|
+
| ----- | ---- | ------ |
|
|
33
|
+
| `name` | `str` | Unique identifier; becomes the registry key. |
|
|
34
|
+
| `model` | `str | None` | Override the default model for this agent. |
|
|
35
|
+
| `description` | `str \| Callable` | High-level instructions; merged into the system prompt. |
|
|
36
|
+
| `input` | `SignatureType` | Contract for accepted data. |
|
|
37
|
+
| `output` | `SignatureType` | Contract for produced data. |
|
|
38
|
+
| `tools` | `list[Callable]` | Extra callables the evaluator may invoke. |
|
|
39
|
+
| `evaluator` | `FlockEvaluator` | Implementation of the agent's logic (defaults to DeclarativeEvaluator in `FlockFactory`). |
|
|
40
|
+
| `handoff_router` | `FlockRouter` | Optional router that chooses the next agent. |
|
|
41
|
+
| `modules` | `dict[str, FlockModule]` | Plug-in behaviours (metrics, memory, etc.). |
|
|
42
|
+
|
|
43
|
+
All these fields are **Pydantic-validated** and fully serialisable via `Serializable`.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 2. Signatures: Input & Output
|
|
48
|
+
|
|
49
|
+
Signatures are written in a compact mini-DSL:
|
|
50
|
+
|
|
51
|
+
* `field` – just a name (type & description inferred by the LLM).
|
|
52
|
+
* `field: type` – adds a type hint.
|
|
53
|
+
* `field: type | description` – adds a natural-language description.
|
|
54
|
+
* Multiple fields are comma-separated.
|
|
55
|
+
* Lists/dicts follow normal Python typing: `list[dict[str, str]]`.
|
|
56
|
+
|
|
57
|
+
Alternatively, pass a **Pydantic model** for static typing:
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from pydantic import BaseModel
|
|
61
|
+
|
|
62
|
+
class SearchIn(BaseModel):
|
|
63
|
+
query: str
|
|
64
|
+
top_k: int = 5
|
|
65
|
+
|
|
66
|
+
class SearchOut(BaseModel):
|
|
67
|
+
documents: list[str]
|
|
68
|
+
|
|
69
|
+
search_agent = FlockAgent(
|
|
70
|
+
name="searcher",
|
|
71
|
+
input=SearchIn,
|
|
72
|
+
output=SearchOut,
|
|
73
|
+
evaluator=CustomSearchEvaluator(...),
|
|
74
|
+
)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 3. Lifecycle
|
|
80
|
+
|
|
81
|
+
```mermaid
|
|
82
|
+
flowchart LR
|
|
83
|
+
A[initialize] --> B[evaluate]
|
|
84
|
+
B --> C[terminate]
|
|
85
|
+
B -. error .-> D[on_error]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
1. **initialize** – prepare resources (DB connection, load embeddings, etc.).
|
|
89
|
+
2. **evaluate** – main logic executed by the evaluator.
|
|
90
|
+
3. **terminate** – clean-up, persist metrics.
|
|
91
|
+
4. **on_error** – triggered if any previous stage raises.
|
|
92
|
+
|
|
93
|
+
Modules can hook into each stage to extend behaviour.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 4. Attaching Modules & Routers
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
from flock.modules.output import OutputModule, OutputModuleConfig
|
|
101
|
+
from flock.routers.agent import AgentRouter, AgentRouterConfig
|
|
102
|
+
|
|
103
|
+
agent.add_module(OutputModule("output", OutputModuleConfig(render_table=True)))
|
|
104
|
+
agent.handoff_router = AgentRouter("router", AgentRouterConfig())
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 5. Best Practices
|
|
110
|
+
|
|
111
|
+
* Keep `description` concise; use the signature for fine-grained control.
|
|
112
|
+
* Prefer Pydantic models for complex schemas – you get validation for free.
|
|
113
|
+
* Separate concerns: evaluator handles *logic*, modules handle *cross-cutting* tasks.
|
|
114
|
+
* Register reusable tools with `@flock_tool` so any agent can adopt them.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
**Next:** Learn *why* this declarative approach works in [Declarative Programming](declarative.md).
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide: # Optional: Hide table of contents on simple pages
|
|
3
|
+
- toc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Declarative Programming in Flock ✨
|
|
7
|
+
|
|
8
|
+
Most frameworks ask you to write long, brittle *prompts* or imperative code that walks the model through every step. **Flock** flips this on its head: you describe the *contract*, not the procedure. The evaluator turns that contract into the right LLM calls at run-time.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Why Declarative?
|
|
13
|
+
|
|
14
|
+
1. **Clarity** – A two-line signature communicates intent faster than a 200-line prompt.
|
|
15
|
+
2. **Reusability** – When you change models (say GPT-4 → Claude) you rarely touch the agent spec.
|
|
16
|
+
3. **Validation** – Flock can automatically type-check inputs/outputs, catch errors early, and generate OpenAPI docs.
|
|
17
|
+
4. **Optimisation** – The framework can inject extra instructions (few-shot examples, chain-of-thought, etc.) without polluting user code.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 2. The Mini-DSL
|
|
22
|
+
|
|
23
|
+
Signatures are plain strings with optional type hints & descriptions:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
"query: str | The search query, top_k: int | # documents to retrieve"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Behind the scenes Flock parses this into a structured schema and merges it into a **system prompt** similar to:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
You are `search_agent`.
|
|
33
|
+
You must respond with a JSON object matching the following schema:
|
|
34
|
+
{
|
|
35
|
+
"documents": list[str]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Guidelines:
|
|
39
|
+
- The `documents` field must contain exactly `top_k` results.
|
|
40
|
+
- ...additional instructions from modules/evaluator...
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The spec is also turned into **Pydantic** models at runtime so the response is validated before it reaches your code.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 3. Dynamic Signatures
|
|
48
|
+
|
|
49
|
+
Sometimes the shape depends on runtime settings. Provide a **callable** that returns a signature string or model:
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from datetime import date
|
|
53
|
+
|
|
54
|
+
def invoice_out():
|
|
55
|
+
year = date.today().year
|
|
56
|
+
return (
|
|
57
|
+
f"number: str | Invoice number {year}-****, "
|
|
58
|
+
"amount: float, "
|
|
59
|
+
"currency: str, "
|
|
60
|
+
"items: list[str]"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
agent = FlockAgent(
|
|
64
|
+
name="invoicer",
|
|
65
|
+
input="order_id: str",
|
|
66
|
+
output=invoice_out,
|
|
67
|
+
evaluator=InvoiceEvaluator(...),
|
|
68
|
+
)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 4. Going Fully-Typed with Pydantic
|
|
74
|
+
|
|
75
|
+
If you prefer proper Python types (IDE autocompletion, mypy, etc.), define models:
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
class OrderIn(BaseModel):
|
|
79
|
+
order_id: str
|
|
80
|
+
include_discount: bool = False
|
|
81
|
+
|
|
82
|
+
class InvoiceOut(BaseModel):
|
|
83
|
+
number: str
|
|
84
|
+
amount: float
|
|
85
|
+
currency: str
|
|
86
|
+
items: list[str]
|
|
87
|
+
|
|
88
|
+
agent = FlockAgent(
|
|
89
|
+
name="invoicer",
|
|
90
|
+
input=OrderIn,
|
|
91
|
+
output=InvoiceOut,
|
|
92
|
+
evaluator=InvoiceEvaluator(...),
|
|
93
|
+
)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Flock will **not** expose these classes to the LLM (that would leak Python internals). Instead it converts them to an equivalent JSON schema.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 5. Prompt Composition Pipeline
|
|
101
|
+
|
|
102
|
+
1. **Base system prompt** – set by evaluator (`DeclarativeEvaluator` by default).
|
|
103
|
+
2. **Agent description** – `agent.description` text.
|
|
104
|
+
3. **Input / output schema** – rendered as JSON spec + additional guidance.
|
|
105
|
+
4. **Module injections** – e.g. `OutputModule` may request thought-process streaming.
|
|
106
|
+
5. **Tool docs** – For each tool, a short description and parameter list is appended.
|
|
107
|
+
|
|
108
|
+
The final prompt is cached (unless `use_cache=False`) for efficiency.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 6. Limits & Tips
|
|
113
|
+
|
|
114
|
+
* Keep field names **snake_case** – easier to parse.
|
|
115
|
+
* Large nested objects are fine but remember token costs.
|
|
116
|
+
* Use `include_thought_process=True` in `DeclarativeEvaluatorConfig` if you need chain-of-thought output.
|
|
117
|
+
* The more explicit the types/descriptions, the more reliable the model's output.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
**Next:** See how agents chain together in [Workflows](workflows.md).
|