flock-core 0.4.0b27__tar.gz → 0.4.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.

Files changed (534) hide show
  1. flock_core-0.4.0b28/.gitmodules +4 -0
  2. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.vscode/settings.json +41 -3
  3. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/PKG-INFO +85 -4
  4. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/README.md +84 -3
  5. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/drawio/architecture.drawio +4 -4
  6. flock_core-0.4.0b28/docs/guides/chaining-agents.md +232 -0
  7. flock_core-0.4.0b28/docs/guides/index.md +17 -0
  8. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/pyproject.toml +16 -4
  9. flock_core-0.4.0b28/scripts/ensure_uv.py +20 -0
  10. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/flock_agent.py +6 -4
  11. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/flock_module.py +7 -7
  12. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/modules/assertion/assertion_module.py +1 -1
  13. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/modules/callback/callback_module.py +1 -1
  14. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/modules/memory/memory_module.py +4 -4
  15. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/modules/output/output_module.py +1 -1
  16. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/modules/performance/metrics_module.py +4 -4
  17. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/modules/zep/zep_module.py +2 -2
  18. flock_core-0.4.0b28/tests/__init__.py +1 -0
  19. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/tests/serialization/test_yaml_serialization.py +1 -1
  20. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/uv.lock +3032 -3370
  21. flock_core-0.4.0b27/docs/guides/chaining-agents.md +0 -8
  22. flock_core-0.4.0b27/docs/reference/index.md +0 -8
  23. flock_core-0.4.0b27/flock_test.yaml +0 -159
  24. flock_core-0.4.0b27/tests/serialization/__init__.py +0 -1
  25. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.devcontainer/devcontainer.json +0 -0
  26. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.env_template +0 -0
  27. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  28. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  29. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  30. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.github/workflows/.gitkeep +0 -0
  31. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.github/workflows/deploy-documentation.yml +0 -0
  32. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
  33. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.gitignore +0 -0
  34. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.vscode/launch.json +0 -0
  35. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/.vscode/tasks.json +0 -0
  36. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/LICENSE +0 -0
  37. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/about/changelog.md +0 -0
  38. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/about/contributing.md +0 -0
  39. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/cli_outputs/out.png +0 -0
  40. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/components_chart.png +0 -0
  41. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/examples/01_01.png +0 -0
  42. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/examples/01_02.png +0 -0
  43. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/examples/01_03.png +0 -0
  44. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/examples/01_04.png +0 -0
  45. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/examples/01_05.png +0 -0
  46. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/examples/01_06.png +0 -0
  47. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/flock.png +0 -0
  48. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/flock_cli.png +0 -0
  49. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/flow_chart.png +0 -0
  50. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/getting-started/first_agent_00.png +0 -0
  51. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/hummingbird.png +0 -0
  52. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/icon.png +0 -0
  53. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/icon.png~ +0 -0
  54. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/logo.png +0 -0
  55. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/memory_concepts.png +0 -0
  56. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/memory_flow.png +0 -0
  57. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/assets/images/memory_flow_chart.png +0 -0
  58. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/components/evaluators.md +0 -0
  59. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/components/index.md +0 -0
  60. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/components/modules.md +0 -0
  61. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/components/tools.md +0 -0
  62. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/core-concepts/agents.md +0 -0
  63. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/core-concepts/declarative.md +0 -0
  64. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/core-concepts/index.md +0 -0
  65. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/core-concepts/workflows.md +0 -0
  66. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/create_doc_boilerplate.py +0 -0
  67. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/deployment/index.md +0 -0
  68. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/deployment/temporal.md +0 -0
  69. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/getting-started/configuration.md +0 -0
  70. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/getting-started/index.md +0 -0
  71. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/getting-started/installation.md +0 -0
  72. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/getting-started/quickstart.md +0 -0
  73. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/guides/temporal-configuration.md +0 -0
  74. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/index.md +0 -0
  75. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/interacting-with-flock/cli-tool.md +0 -0
  76. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/interacting-with-flock/index.md +0 -0
  77. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/interacting-with-flock/interactive-cli.md +0 -0
  78. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/interacting-with-flock/programmatic.md +0 -0
  79. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/interacting-with-flock/rest-api.md +0 -0
  80. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/interacting-with-flock/web-ui.md +0 -0
  81. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/reference/flock_agent.md +0 -0
  82. {flock_core-0.4.0b27/docs/guides → flock_core-0.4.0b28/docs/reference}/index.md +0 -0
  83. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/release-notes/magpie.md +0 -0
  84. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/docs/stylesheets/extra.css +0 -0
  85. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/mkdocs.yml +0 -0
  86. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/requirements.txt +0 -0
  87. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/scripts/code_collector.py +0 -0
  88. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/scripts/create_docs.py +0 -0
  89. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/__init__.py +0 -0
  90. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/assets/release_notes.md +0 -0
  91. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/config.py +0 -0
  92. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/constants.py +0 -0
  93. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/create_agent.py +0 -0
  94. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/create_flock.py +0 -0
  95. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/execute_flock.py +0 -0
  96. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/load_agent.py +0 -0
  97. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/load_examples.py +0 -0
  98. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/load_flock.py +0 -0
  99. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/load_release_notes.py +0 -0
  100. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/loaded_flock_cli.py +0 -0
  101. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/manage_agents.py +0 -0
  102. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/registry_management.py +0 -0
  103. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/runner.py +0 -0
  104. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/settings.py +0 -0
  105. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/utils.py +0 -0
  106. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/view_results.py +0 -0
  107. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/cli/yaml_editor.py +0 -0
  108. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/config.py +0 -0
  109. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/__init__.py +0 -0
  110. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/__init__.py +0 -0
  111. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/endpoints.py +0 -0
  112. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/main.py +0 -0
  113. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/models.py +0 -0
  114. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/run_store.py +0 -0
  115. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/runner.py +0 -0
  116. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/ui/__init__.py +0 -0
  117. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/ui/routes.py +0 -0
  118. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/api/ui/utils.py +0 -0
  119. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/context/context.py +0 -0
  120. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/context/context_manager.py +0 -0
  121. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/context/context_vars.py +0 -0
  122. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/evaluation/utils.py +0 -0
  123. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/execution/batch_executor.py +0 -0
  124. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/execution/evaluation_executor.py +0 -0
  125. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/execution/local_executor.py +0 -0
  126. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/execution/temporal_executor.py +0 -0
  127. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/flock.py +0 -0
  128. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/flock_evaluator.py +0 -0
  129. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/flock_factory.py +0 -0
  130. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/flock_registry.py +0 -0
  131. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/flock_router.py +0 -0
  132. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/interpreter/python_interpreter.py +0 -0
  133. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/__init__.py +0 -0
  134. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/formatters/enum_builder.py +0 -0
  135. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/formatters/theme_builder.py +0 -0
  136. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
  137. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/formatters/themes.py +0 -0
  138. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/logging.py +0 -0
  139. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
  140. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/telemetry.py +0 -0
  141. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
  142. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
  143. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
  144. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/logging/trace_and_logged.py +0 -0
  145. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/mixin/dspy_integration.py +0 -0
  146. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/mixin/prompt_parser.py +0 -0
  147. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/serialization/__init__.py +0 -0
  148. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/serialization/callable_registry.py +0 -0
  149. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/serialization/flock_serializer.py +0 -0
  150. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/serialization/json_encoder.py +0 -0
  151. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/serialization/secure_serializer.py +0 -0
  152. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/serialization/serializable.py +0 -0
  153. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/serialization/serialization_utils.py +0 -0
  154. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/tools/azure_tools.py +0 -0
  155. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/tools/basic_tools.py +0 -0
  156. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/tools/dev_tools/github.py +0 -0
  157. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/tools/llm_tools.py +0 -0
  158. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/tools/markdown_tools.py +0 -0
  159. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/tools/zendesk_tools.py +0 -0
  160. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/util/cli_helper.py +0 -0
  161. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/util/file_path_utils.py +0 -0
  162. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/util/hydrator.py +0 -0
  163. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/util/input_resolver.py +0 -0
  164. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/core/util/loader.py +0 -0
  165. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/evaluators/declarative/declarative_evaluator.py +0 -0
  166. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
  167. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/evaluators/test/test_case_evaluator.py +0 -0
  168. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
  169. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/modules/memory/memory_parser.py +0 -0
  170. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/modules/memory/memory_storage.py +0 -0
  171. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/platform/docker_tools.py +0 -0
  172. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/platform/jaeger_install.py +0 -0
  173. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/__init__.py +0 -0
  174. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/agent/__init__.py +0 -0
  175. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/agent/agent_router.py +0 -0
  176. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/agent/handoff_agent.py +0 -0
  177. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/conditional/conditional_router.py +0 -0
  178. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/default/__init__.py +0 -0
  179. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/default/default_router.py +0 -0
  180. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/feedback/feedback_router.py +0 -0
  181. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/list_generator/list_generator_router.py +0 -0
  182. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/llm/__init__.py +0 -0
  183. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/routers/llm/llm_router.py +0 -0
  184. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/3024-day.toml +0 -0
  185. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/3024-night.toml +0 -0
  186. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/aardvark-blue.toml +0 -0
  187. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/abernathy.toml +0 -0
  188. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/adventure.toml +0 -0
  189. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/adventuretime.toml +0 -0
  190. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/afterglow.toml +0 -0
  191. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/alabaster.toml +0 -0
  192. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/alienblood.toml +0 -0
  193. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/andromeda.toml +0 -0
  194. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/apple-classic.toml +0 -0
  195. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/apple-system-colors.toml +0 -0
  196. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/arcoiris.toml +0 -0
  197. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/argonaut copy.toml +0 -0
  198. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/argonaut.toml +0 -0
  199. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/arthur.toml +0 -0
  200. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ateliersulphurpool.toml +0 -0
  201. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/atom.toml +0 -0
  202. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/atom_test.toml +0 -0
  203. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/atomonelight.toml +0 -0
  204. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/aurora.toml +0 -0
  205. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ayu copy.toml +0 -0
  206. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ayu-light.toml +0 -0
  207. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ayu-mirage.toml +0 -0
  208. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ayu.toml +0 -0
  209. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/banana-blueberry.toml +0 -0
  210. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/batman.toml +0 -0
  211. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/belafonte-day.toml +0 -0
  212. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/belafonte-night.toml +0 -0
  213. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/birdsofparadise.toml +0 -0
  214. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/blazer.toml +0 -0
  215. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/blue-matrix.toml +0 -0
  216. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/blueberrypie.toml +0 -0
  217. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/bluedolphin.toml +0 -0
  218. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/blulocodark.toml +0 -0
  219. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/blulocolight.toml +0 -0
  220. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/borland.toml +0 -0
  221. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/breeze.toml +0 -0
  222. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/bright-lights.toml +0 -0
  223. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/broadcast.toml +0 -0
  224. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/brogrammer.toml +0 -0
  225. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/builtin-dark.toml +0 -0
  226. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/builtin-light.toml +0 -0
  227. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/builtin-pastel-dark.toml +0 -0
  228. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/builtin-solarized-dark.toml +0 -0
  229. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/builtin-solarized-light.toml +0 -0
  230. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/builtin-tango-dark.toml +0 -0
  231. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/builtin-tango-light.toml +0 -0
  232. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/c64.toml +0 -0
  233. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/calamity.toml +0 -0
  234. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/catppuccin-frappe.toml +0 -0
  235. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/catppuccin-latte.toml +0 -0
  236. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/catppuccin-macchiato.toml +0 -0
  237. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/catppuccin-mocha.toml +0 -0
  238. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/cga.toml +0 -0
  239. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/chalk.toml +0 -0
  240. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/chalkboard.toml +0 -0
  241. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/challengerdeep.toml +0 -0
  242. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/chester.toml +0 -0
  243. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ciapre.toml +0 -0
  244. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/clrs.toml +0 -0
  245. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/cobalt-neon.toml +0 -0
  246. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/cobalt2.toml +0 -0
  247. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/coffee-theme.toml +0 -0
  248. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/crayonponyfish.toml +0 -0
  249. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/cutiepro.toml +0 -0
  250. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/cyberdyne.toml +0 -0
  251. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/cyberpunk.toml +0 -0
  252. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
  253. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/dark+.toml +0 -0
  254. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/dark-pastel.toml +0 -0
  255. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/darkermatrix.toml +0 -0
  256. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/darkmatrix.toml +0 -0
  257. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/darkside.toml +0 -0
  258. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/dayfox.toml +0 -0
  259. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/deep.toml +0 -0
  260. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/desert.toml +0 -0
  261. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/dimidium.toml +0 -0
  262. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/dimmedmonokai.toml +0 -0
  263. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/django.toml +0 -0
  264. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/djangorebornagain.toml +0 -0
  265. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/djangosmooth.toml +0 -0
  266. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/doom-peacock.toml +0 -0
  267. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/doomone.toml +0 -0
  268. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/dotgov.toml +0 -0
  269. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/dracula+.toml +0 -0
  270. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/dracula.toml +0 -0
  271. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/duckbones.toml +0 -0
  272. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/duotone-dark.toml +0 -0
  273. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/earthsong.toml +0 -0
  274. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/elemental.toml +0 -0
  275. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/elementary.toml +0 -0
  276. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/encom.toml +0 -0
  277. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/espresso-libre.toml +0 -0
  278. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/espresso.toml +0 -0
  279. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/everblush.toml +0 -0
  280. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/fahrenheit.toml +0 -0
  281. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/fairyfloss.toml +0 -0
  282. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/farmhouse-dark.toml +0 -0
  283. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/farmhouse-light.toml +0 -0
  284. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/fideloper.toml +0 -0
  285. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/firefly-traditional.toml +0 -0
  286. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/firefoxdev.toml +0 -0
  287. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/firewatch.toml +0 -0
  288. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/fishtank.toml +0 -0
  289. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/flat.toml +0 -0
  290. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/flatland.toml +0 -0
  291. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/flexoki-dark.toml +0 -0
  292. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/flexoki-light.toml +0 -0
  293. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/floraverse.toml +0 -0
  294. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/forestblue.toml +0 -0
  295. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/framer.toml +0 -0
  296. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/frontenddelight.toml +0 -0
  297. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/funforrest.toml +0 -0
  298. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/galaxy.toml +0 -0
  299. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/galizur.toml +0 -0
  300. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/github-dark.toml +0 -0
  301. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/github.toml +0 -0
  302. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/glacier.toml +0 -0
  303. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/grape.toml +0 -0
  304. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/grass.toml +0 -0
  305. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/grey-green.toml +0 -0
  306. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/gruber-darker.toml +0 -0
  307. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/gruvboxdark.toml +0 -0
  308. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/gruvboxdarkhard.toml +0 -0
  309. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/gruvboxlight.toml +0 -0
  310. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/guezwhoz.toml +0 -0
  311. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hacktober.toml +0 -0
  312. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hardcore.toml +0 -0
  313. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/harper.toml +0 -0
  314. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hax0r-blue.toml +0 -0
  315. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hax0r-gr33n.toml +0 -0
  316. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hax0r-r3d.toml +0 -0
  317. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/highway.toml +0 -0
  318. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hipster-green.toml +0 -0
  319. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hivacruz.toml +0 -0
  320. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/homebrew.toml +0 -0
  321. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hopscotch.256.toml +0 -0
  322. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hopscotch.toml +0 -0
  323. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hurtado.toml +0 -0
  324. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/hybrid.toml +0 -0
  325. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ic-green-ppl.toml +0 -0
  326. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ic-orange-ppl.toml +0 -0
  327. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iceberg-dark.toml +0 -0
  328. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iceberg-light.toml +0 -0
  329. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/idea.toml +0 -0
  330. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/idletoes.toml +0 -0
  331. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ir-black.toml +0 -0
  332. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-dark-background.toml +0 -0
  333. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-default.toml +0 -0
  334. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-light-background.toml +0 -0
  335. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
  336. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-smoooooth.toml +0 -0
  337. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
  338. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-solarized-light.toml +0 -0
  339. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-tango-dark.toml +0 -0
  340. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/iterm2-tango-light.toml +0 -0
  341. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/jackie-brown.toml +0 -0
  342. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/japanesque.toml +0 -0
  343. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/jellybeans.toml +0 -0
  344. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/jetbrains-darcula.toml +0 -0
  345. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/jubi.toml +0 -0
  346. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/kanagawabones.toml +0 -0
  347. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/kibble.toml +0 -0
  348. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/kolorit.toml +0 -0
  349. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/konsolas.toml +0 -0
  350. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/kurokula.toml +0 -0
  351. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/lab-fox.toml +0 -0
  352. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/laser.toml +0 -0
  353. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/later-this-evening.toml +0 -0
  354. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/lavandula.toml +0 -0
  355. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/liquidcarbon.toml +0 -0
  356. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/liquidcarbontransparent.toml +0 -0
  357. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
  358. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/lovelace.toml +0 -0
  359. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/man-page.toml +0 -0
  360. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/mariana.toml +0 -0
  361. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/material.toml +0 -0
  362. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/materialdark.toml +0 -0
  363. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/materialdarker.toml +0 -0
  364. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/materialdesigncolors.toml +0 -0
  365. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/materialocean.toml +0 -0
  366. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/mathias.toml +0 -0
  367. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/matrix.toml +0 -0
  368. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/medallion.toml +0 -0
  369. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/mellifluous.toml +0 -0
  370. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/midnight-in-mojave.toml +0 -0
  371. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/mirage.toml +0 -0
  372. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/misterioso.toml +0 -0
  373. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/molokai.toml +0 -0
  374. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/monalisa.toml +0 -0
  375. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/monokai-remastered.toml +0 -0
  376. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/monokai-soda.toml +0 -0
  377. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/monokai-vivid.toml +0 -0
  378. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/n0tch2k.toml +0 -0
  379. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/neobones-dark.toml +0 -0
  380. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/neobones-light.toml +0 -0
  381. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/neon.toml +0 -0
  382. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/neopolitan.toml +0 -0
  383. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/neutron.toml +0 -0
  384. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/night-owlish-light.toml +0 -0
  385. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/nightfox.toml +0 -0
  386. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/nightlion-v1.toml +0 -0
  387. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/nightlion-v2.toml +0 -0
  388. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/niji.toml +0 -0
  389. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/nocturnal-winter.toml +0 -0
  390. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/nord-light.toml +0 -0
  391. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/nord.toml +0 -0
  392. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/novel.toml +0 -0
  393. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/nvimdark.toml +0 -0
  394. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/nvimlight.toml +0 -0
  395. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/obsidian.toml +0 -0
  396. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ocean.toml +0 -0
  397. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/oceanic-next.toml +0 -0
  398. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/oceanicmaterial.toml +0 -0
  399. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ollie.toml +0 -0
  400. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/onehalfdark.toml +0 -0
  401. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/onehalflight.toml +0 -0
  402. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/operator-mono-dark.toml +0 -0
  403. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/overnight-slumber.toml +0 -0
  404. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/oxocarbon.toml +0 -0
  405. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/palenighthc.toml +0 -0
  406. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/pandora.toml +0 -0
  407. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/paraiso-dark.toml +0 -0
  408. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/paulmillr.toml +0 -0
  409. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/pencildark.toml +0 -0
  410. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/pencillight.toml +0 -0
  411. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/peppermint.toml +0 -0
  412. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/piatto-light.toml +0 -0
  413. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/pnevma.toml +0 -0
  414. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/popping-and-locking.toml +0 -0
  415. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/primary.toml +0 -0
  416. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/pro-light.toml +0 -0
  417. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/pro.toml +0 -0
  418. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/purple-rain.toml +0 -0
  419. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/purplepeter.toml +0 -0
  420. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/rapture.toml +0 -0
  421. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/raycast-dark.toml +0 -0
  422. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/raycast-light.toml +0 -0
  423. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/rebecca.toml +0 -0
  424. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/red-alert.toml +0 -0
  425. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/red-planet.toml +0 -0
  426. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/red-sands.toml +0 -0
  427. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/relaxed.toml +0 -0
  428. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/retro.toml +0 -0
  429. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/rippedcasts.toml +0 -0
  430. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/rose-pine-dawn.toml +0 -0
  431. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/rose-pine-moon.toml +0 -0
  432. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/rose-pine.toml +0 -0
  433. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/rouge-2.toml +0 -0
  434. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/royal.toml +0 -0
  435. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ryuuko.toml +0 -0
  436. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/sakura.toml +0 -0
  437. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/scarlet-protocol.toml +0 -0
  438. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/seafoam-pastel.toml +0 -0
  439. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/seashells.toml +0 -0
  440. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/seoulbones-dark.toml +0 -0
  441. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/seoulbones-light.toml +0 -0
  442. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/seti.toml +0 -0
  443. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/shades-of-purple.toml +0 -0
  444. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/shaman.toml +0 -0
  445. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/slate.toml +0 -0
  446. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/sleepyhollow.toml +0 -0
  447. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/smyck.toml +0 -0
  448. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/snazzy.toml +0 -0
  449. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/softserver.toml +0 -0
  450. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/solarized-darcula.toml +0 -0
  451. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/solarized-dark---patched.toml +0 -0
  452. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
  453. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/spacedust.toml +0 -0
  454. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
  455. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/spacegray-eighties.toml +0 -0
  456. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/spacegray.toml +0 -0
  457. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/spiderman.toml +0 -0
  458. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/spring.toml +0 -0
  459. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/square.toml +0 -0
  460. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/sublette.toml +0 -0
  461. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/subliminal.toml +0 -0
  462. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/sugarplum.toml +0 -0
  463. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/sundried.toml +0 -0
  464. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/symfonic.toml +0 -0
  465. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/synthwave-everything.toml +0 -0
  466. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/synthwave.toml +0 -0
  467. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/synthwavealpha.toml +0 -0
  468. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tango-adapted.toml +0 -0
  469. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tango-half-adapted.toml +0 -0
  470. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/teerb.toml +0 -0
  471. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/terafox.toml +0 -0
  472. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/terminal-basic.toml +0 -0
  473. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/thayer-bright.toml +0 -0
  474. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/the-hulk.toml +0 -0
  475. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tinacious-design-(dark).toml +0 -0
  476. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tinacious-design-(light).toml +0 -0
  477. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tokyonight-day.toml +0 -0
  478. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tokyonight-storm.toml +0 -0
  479. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tokyonight.toml +0 -0
  480. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tomorrow-night-blue.toml +0 -0
  481. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tomorrow-night-bright.toml +0 -0
  482. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tomorrow-night-burns.toml +0 -0
  483. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
  484. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tomorrow-night.toml +0 -0
  485. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/tomorrow.toml +0 -0
  486. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/toychest.toml +0 -0
  487. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/treehouse.toml +0 -0
  488. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/twilight.toml +0 -0
  489. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ubuntu.toml +0 -0
  490. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ultradark.toml +0 -0
  491. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/ultraviolent.toml +0 -0
  492. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/underthesea.toml +0 -0
  493. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/unikitty.toml +0 -0
  494. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/urple.toml +0 -0
  495. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/vaughn.toml +0 -0
  496. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/vesper.toml +0 -0
  497. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/vibrantink.toml +0 -0
  498. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/vimbones.toml +0 -0
  499. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/violet-dark.toml +0 -0
  500. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/violet-light.toml +0 -0
  501. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/warmneon.toml +0 -0
  502. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/wez.toml +0 -0
  503. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/whimsy.toml +0 -0
  504. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/wildcherry.toml +0 -0
  505. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/wilmersdorf.toml +0 -0
  506. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/wombat.toml +0 -0
  507. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/wryan.toml +0 -0
  508. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/xcodedark.toml +0 -0
  509. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/xcodedarkhc.toml +0 -0
  510. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/xcodelight.toml +0 -0
  511. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/xcodelighthc.toml +0 -0
  512. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/xcodewwdc.toml +0 -0
  513. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/zenbones-dark.toml +0 -0
  514. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/zenbones-light.toml +0 -0
  515. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/zenbones.toml +0 -0
  516. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/zenburn.toml +0 -0
  517. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/zenburned.toml +0 -0
  518. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/zenwritten-dark.toml +0 -0
  519. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/themes/zenwritten-light.toml +0 -0
  520. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/workflow/__init__.py +0 -0
  521. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/workflow/activities.py +0 -0
  522. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/workflow/agent_activities.py +0 -0
  523. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/workflow/agent_execution_activity.py +0 -0
  524. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/workflow/flock_workflow.py +0 -0
  525. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/workflow/temporal_config.py +0 -0
  526. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/src/flock/workflow/temporal_setup.py +0 -0
  527. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/tests/core/test_flock_batch.py +0 -0
  528. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/tests/core/test_flock_core.py +0 -0
  529. {flock_core-0.4.0b27/tests → flock_core-0.4.0b28/tests/serialization}/__init__.py +0 -0
  530. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/tests/serialization/test_enhanced_serialization.py +0 -0
  531. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/tests/serialization/test_file_path_serialization.py +0 -0
  532. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/tests/serialization/test_flock_serializer.py +0 -0
  533. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/tests/serialization/test_nested_serialization.py +0 -0
  534. {flock_core-0.4.0b27 → flock_core-0.4.0b28}/tests/tools/test_zendesk_tools.py +0 -0
@@ -0,0 +1,4 @@
1
+ [submodule "examples"]
2
+ path = examples
3
+ url = https://github.com/whiteducksoftware/flock-showcase.git
4
+ branch = master
@@ -15,10 +15,10 @@
15
15
  "editor.smoothScrolling": true,
16
16
  "terminal.integrated.fontFamily": "'Jetbrains Mono', 'FiraCode Nerd Font', 'Hack Nerd Font', 'monospace'",
17
17
  "editor.renderWhitespace": "none",
18
- //"terminal.integrated.lineHeight": 1.5,
18
+ "terminal.integrated.lineHeight": 1.5,
19
19
  "editor.fontSize": 15.5,
20
20
  "editor.fontLigatures": true,
21
- //"editor.lineHeight": 1.5,
21
+ "editor.lineHeight": 1.5,
22
22
  "editor.minimap.enabled": true,
23
23
  "editor.tabSize": 2,
24
24
  "editor.semanticTokenColorCustomizations": {
@@ -29,15 +29,53 @@
29
29
  // prevent VSCode from modifying the terminal colors
30
30
  "terminal.integrated.minimumContrastRatio": 1,
31
31
  "cSpell.words": [
32
+ "asyncio",
33
+ "chromadb",
34
+ "cloudpickle",
32
35
  "deptry",
36
+ "docling",
37
+ "dotenv",
38
+ "dspy",
39
+ "duckduckgo",
40
+ "fastapi",
41
+ "fasthtml",
33
42
  "gradio",
43
+ "htmlcov",
44
+ "httpx",
45
+ "ipywidgets",
46
+ "isort",
47
+ "litellm",
48
+ "loguru",
49
+ "markdownify",
50
+ "matplotlib",
51
+ "minversion",
34
52
  "mkdocs",
53
+ "mkdocstrings",
54
+ "msgpack",
35
55
  "msgspec",
36
56
  "mypy",
57
+ "nltk",
37
58
  "packb",
59
+ "poethepoet",
60
+ "psutil",
61
+ "pycache",
62
+ "pycodestyle",
63
+ "pydantic",
64
+ "pydocstyle",
65
+ "pyflakes",
38
66
  "pyinstrument",
39
67
  "pytest",
40
- "unpackb"
68
+ "pyupgrade",
69
+ "pyyaml",
70
+ "Ratzenberger",
71
+ "respx",
72
+ "tavily",
73
+ "temporalio",
74
+ "testpaths",
75
+ "tiktoken",
76
+ "tqdm",
77
+ "unpackb",
78
+ "uvicorn"
41
79
  ],
42
80
  "yaml.schemas": {
43
81
  "https://squidfunk.github.io/mkdocs-material/schema.json": "mkdocs.yml"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.4.0b27
3
+ Version: 0.4.0b28
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -126,7 +126,7 @@ Flock's power comes from a few key ideas (Learn more in the [Full Documentation]
126
126
  6. **Tool Integration:** Equip agents with standard or custom Python functions (`@flock_tool`) registered via the `FlockRegistry`.
127
127
  7. **Registry:** A central place (`@flock_component`, `@flock_type`, `@flock_tool`) to register your custom classes, types, and functions, enabling robust serialization and dynamic loading.
128
128
 
129
- ## 💾 Installation
129
+ ## 💾 Installation - Use Flock in your project
130
130
 
131
131
  Get started with the core Flock library:
132
132
 
@@ -148,7 +148,27 @@ uv pip install flock-core[tools]
148
148
  uv pip install flock-core[all]
149
149
  ```
150
150
 
151
- Environment Setup:
151
+ ## 🔑 Installation - Develop Flock
152
+
153
+ ```bash
154
+ git clone https://github.com/whiteducksoftware/flock.git
155
+ cd flock
156
+
157
+ # One-liner dev setup after cloning
158
+ pip install poethepoet && poe install
159
+ ```
160
+
161
+ Additional provided `poe` tasks and commands:
162
+
163
+ ```bash
164
+ poe install # Install the project
165
+ poe build # Build the project
166
+ poe docs # Serve the docs
167
+ poe format # Format the code
168
+ poe lint # Lint the code
169
+ ```
170
+
171
+ ## 🔑 Environment Setup
152
172
 
153
173
  Flock uses environment variables (typically in a .env file) for configuration, especially API keys. Create a .env file in your project root:
154
174
 
@@ -173,7 +193,7 @@ DEFAULT_MODEL="openai/gpt-4o" # Default LLM if agent doesn't specify
173
193
  # VARS_PER_PAGE="20"
174
194
  ```
175
195
 
176
- Remember to add .env to your .gitignore!
196
+ Be sure that the .env file is added to your .gitignore!
177
197
 
178
198
  ## ⚡ Quick Start Syntax
179
199
 
@@ -223,18 +243,32 @@ Version 0.4.0 brings significant enhancements focused on usability, deployment,
223
243
 
224
244
  Easily deploy your Flock agents as scalable REST API endpoints. Interact with your agent workflows via standard HTTP requests.
225
245
 
246
+ --------------------------------
247
+
226
248
  ### 🖥️ Web UI - Test Flock Agents in the Browser
227
249
 
228
250
  Test and interact with your Flock agents directly in your browser through an integrated web interface.
229
251
 
252
+ --------------------------------
253
+
230
254
  ### ⌨️ CLI Tool - Manage Flock Agents via the Command Line
231
255
 
232
256
  Manage Flock configurations, run agents, and inspect results directly from your command line.
233
257
 
258
+ --------------------------------
259
+
234
260
  ### 💾 Enhanced Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
235
261
 
236
262
  Define and share entire Flock configurations, including agents and components, using human-readable YAML files. Load flocks directly from these files for easy deployment and versioning.
237
263
 
264
+ --------------------------------
265
+
266
+ ### 💾 New execution flows
267
+
268
+ Run Flock in batch mode to process multiple inputs at once or in evaluation mode to test agents with different inputs.
269
+
270
+ --------------------------------
271
+
238
272
  ### ⏱️ Robust Temporal Integration
239
273
 
240
274
  Flock 0.4.0 introduces first-class support for Temporal.io, enabling you to build truly production-grade, reliable, and scalable agent workflows. Move beyond simple local execution and leverage Temporal's power for:
@@ -249,6 +283,51 @@ Flock makes this easy with:
249
283
  * **Declarative Configuration:** Define Temporal timeouts, retry policies, and task queues directly within your `Flock` and `FlockAgent` configurations (YAML or Python).
250
284
  * **Correct Patterns:** Uses Temporal's recommended granular activity execution for better control and visibility.
251
285
  * **Clear Worker Separation:** Provides guidance and flags for running dedicated Temporal workers, separating development convenience from production best practices.
286
+
287
+ Visit the [Temporal Documentation](https://learn.temporal.io/python/workflows/) for more information on how to use Temporal.
288
+
289
+ Or check out the [Flock Showcase](https://github.com/whiteducksoftware/flock-showcase) for a complete example of a Flock that uses Temporal or our [docs](https://whiteducksoftware.github.io/flock/guides/temporal-configuration/) for more information.
290
+
291
+ Here's an example of how to configure a Flock to use Temporal:
292
+
293
+ ```python
294
+ from flock.core import Flock, FlockFactory
295
+
296
+ from flock.workflow.temporal_config import (
297
+ TemporalActivityConfig,
298
+ TemporalRetryPolicyConfig,
299
+ TemporalWorkflowConfig,
300
+ )
301
+
302
+ # Flock-scoped temporal config
303
+ flock = Flock(
304
+ enable_temporal=True,
305
+ temporal_config=TemporalWorkflowConfig(
306
+ task_queue="flock-test-queue",
307
+ workflow_execution_timeout=timedelta(minutes=10),
308
+ default_activity_retry_policy=TemporalRetryPolicyConfig(
309
+ maximum_attempts=2
310
+ ),
311
+ ),
312
+ )
313
+
314
+ # Agent-scoped temporal config
315
+ content_agent = FlockFactory.create_default_agent(
316
+ name="content_agent",
317
+ input="funny_title, funny_slide_headers",
318
+ output="funny_slide_content",
319
+ temporal_activity_config=TemporalActivityConfig(
320
+ start_to_close_timeout=timedelta(minutes=1),
321
+ retry_policy=TemporalRetryPolicyConfig(
322
+ maximum_attempts=4,
323
+ initial_interval=timedelta(seconds=2),
324
+ non_retryable_error_types=["ValueError"],
325
+ ),
326
+ ),
327
+ )
328
+ ```
329
+
330
+ --------------------------------
252
331
 
253
332
  ### ✨ Utility: @flockclass Hydrator
254
333
 
@@ -281,6 +360,8 @@ async def create_character():
281
360
  # asyncio.run(create_character())
282
361
  ```
283
362
 
363
+ --------------------------------
364
+
284
365
  ## 📚 Examples & Tutorials
285
366
 
286
367
  For a comprehensive set of examples, ranging from basic usage to complex projects and advanced features, please visit our dedicated showcase repository:
@@ -65,7 +65,7 @@ Flock's power comes from a few key ideas (Learn more in the [Full Documentation]
65
65
  6. **Tool Integration:** Equip agents with standard or custom Python functions (`@flock_tool`) registered via the `FlockRegistry`.
66
66
  7. **Registry:** A central place (`@flock_component`, `@flock_type`, `@flock_tool`) to register your custom classes, types, and functions, enabling robust serialization and dynamic loading.
67
67
 
68
- ## 💾 Installation
68
+ ## 💾 Installation - Use Flock in your project
69
69
 
70
70
  Get started with the core Flock library:
71
71
 
@@ -87,7 +87,27 @@ uv pip install flock-core[tools]
87
87
  uv pip install flock-core[all]
88
88
  ```
89
89
 
90
- Environment Setup:
90
+ ## 🔑 Installation - Develop Flock
91
+
92
+ ```bash
93
+ git clone https://github.com/whiteducksoftware/flock.git
94
+ cd flock
95
+
96
+ # One-liner dev setup after cloning
97
+ pip install poethepoet && poe install
98
+ ```
99
+
100
+ Additional provided `poe` tasks and commands:
101
+
102
+ ```bash
103
+ poe install # Install the project
104
+ poe build # Build the project
105
+ poe docs # Serve the docs
106
+ poe format # Format the code
107
+ poe lint # Lint the code
108
+ ```
109
+
110
+ ## 🔑 Environment Setup
91
111
 
92
112
  Flock uses environment variables (typically in a .env file) for configuration, especially API keys. Create a .env file in your project root:
93
113
 
@@ -112,7 +132,7 @@ DEFAULT_MODEL="openai/gpt-4o" # Default LLM if agent doesn't specify
112
132
  # VARS_PER_PAGE="20"
113
133
  ```
114
134
 
115
- Remember to add .env to your .gitignore!
135
+ Be sure that the .env file is added to your .gitignore!
116
136
 
117
137
  ## ⚡ Quick Start Syntax
118
138
 
@@ -162,18 +182,32 @@ Version 0.4.0 brings significant enhancements focused on usability, deployment,
162
182
 
163
183
  Easily deploy your Flock agents as scalable REST API endpoints. Interact with your agent workflows via standard HTTP requests.
164
184
 
185
+ --------------------------------
186
+
165
187
  ### 🖥️ Web UI - Test Flock Agents in the Browser
166
188
 
167
189
  Test and interact with your Flock agents directly in your browser through an integrated web interface.
168
190
 
191
+ --------------------------------
192
+
169
193
  ### ⌨️ CLI Tool - Manage Flock Agents via the Command Line
170
194
 
171
195
  Manage Flock configurations, run agents, and inspect results directly from your command line.
172
196
 
197
+ --------------------------------
198
+
173
199
  ### 💾 Enhanced Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
174
200
 
175
201
  Define and share entire Flock configurations, including agents and components, using human-readable YAML files. Load flocks directly from these files for easy deployment and versioning.
176
202
 
203
+ --------------------------------
204
+
205
+ ### 💾 New execution flows
206
+
207
+ Run Flock in batch mode to process multiple inputs at once or in evaluation mode to test agents with different inputs.
208
+
209
+ --------------------------------
210
+
177
211
  ### ⏱️ Robust Temporal Integration
178
212
 
179
213
  Flock 0.4.0 introduces first-class support for Temporal.io, enabling you to build truly production-grade, reliable, and scalable agent workflows. Move beyond simple local execution and leverage Temporal's power for:
@@ -188,6 +222,51 @@ Flock makes this easy with:
188
222
  * **Declarative Configuration:** Define Temporal timeouts, retry policies, and task queues directly within your `Flock` and `FlockAgent` configurations (YAML or Python).
189
223
  * **Correct Patterns:** Uses Temporal's recommended granular activity execution for better control and visibility.
190
224
  * **Clear Worker Separation:** Provides guidance and flags for running dedicated Temporal workers, separating development convenience from production best practices.
225
+
226
+ Visit the [Temporal Documentation](https://learn.temporal.io/python/workflows/) for more information on how to use Temporal.
227
+
228
+ Or check out the [Flock Showcase](https://github.com/whiteducksoftware/flock-showcase) for a complete example of a Flock that uses Temporal or our [docs](https://whiteducksoftware.github.io/flock/guides/temporal-configuration/) for more information.
229
+
230
+ Here's an example of how to configure a Flock to use Temporal:
231
+
232
+ ```python
233
+ from flock.core import Flock, FlockFactory
234
+
235
+ from flock.workflow.temporal_config import (
236
+ TemporalActivityConfig,
237
+ TemporalRetryPolicyConfig,
238
+ TemporalWorkflowConfig,
239
+ )
240
+
241
+ # Flock-scoped temporal config
242
+ flock = Flock(
243
+ enable_temporal=True,
244
+ temporal_config=TemporalWorkflowConfig(
245
+ task_queue="flock-test-queue",
246
+ workflow_execution_timeout=timedelta(minutes=10),
247
+ default_activity_retry_policy=TemporalRetryPolicyConfig(
248
+ maximum_attempts=2
249
+ ),
250
+ ),
251
+ )
252
+
253
+ # Agent-scoped temporal config
254
+ content_agent = FlockFactory.create_default_agent(
255
+ name="content_agent",
256
+ input="funny_title, funny_slide_headers",
257
+ output="funny_slide_content",
258
+ temporal_activity_config=TemporalActivityConfig(
259
+ start_to_close_timeout=timedelta(minutes=1),
260
+ retry_policy=TemporalRetryPolicyConfig(
261
+ maximum_attempts=4,
262
+ initial_interval=timedelta(seconds=2),
263
+ non_retryable_error_types=["ValueError"],
264
+ ),
265
+ ),
266
+ )
267
+ ```
268
+
269
+ --------------------------------
191
270
 
192
271
  ### ✨ Utility: @flockclass Hydrator
193
272
 
@@ -220,6 +299,8 @@ async def create_character():
220
299
  # asyncio.run(create_character())
221
300
  ```
222
301
 
302
+ --------------------------------
303
+
223
304
  ## 📚 Examples & Tutorials
224
305
 
225
306
  For a comprehensive set of examples, ranging from basic usage to complex projects and advanced features, please visit our dedicated showcase repository:
@@ -1,6 +1,6 @@
1
1
  <mxfile host="65bd71144e">
2
2
  <diagram id="iQ7YuHOuaVDECIdskFDT" name="Page-1">
3
- <mxGraphModel dx="88" dy="620" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF, #d8cfb1)" math="0" shadow="1">
3
+ <mxGraphModel dx="1089" dy="498" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF, #d8cfb1)" math="0" shadow="1">
4
4
  <root>
5
5
  <mxCell id="0"/>
6
6
  <mxCell id="1" parent="0"/>
@@ -11,18 +11,18 @@
11
11
  </mxGraphModel>
12
12
  </diagram>
13
13
  <diagram id="mQwFuZfSuTjpqv4SXbYC" name="Page-2">
14
- <mxGraphModel dx="354" dy="259" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF, #ffffde)" math="0" shadow="1">
14
+ <mxGraphModel dx="1089" dy="498" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF, #ffffde)" math="0" shadow="1">
15
15
  <root>
16
16
  <mxCell id="0"/>
17
17
  <mxCell id="1" parent="0"/>
18
- <mxCell id="gh-ZxXSGDDD0mwRwWCxR-1" value="graph TD&#xa; subgraph Client Application&#xa; client[Client Code]&#xa; end&#xa;&#xa; subgraph Flock Framework&#xa; orchestrator[Flock Orchestrator]&#xa; registry[Agent Registry]&#xa; context[Context Manager]&#xa; &#xa; subgraph Agents&#xa; base[FlockAgent Base]&#xa;&#xa; end&#xa; &#xa; subgraph Execution&#xa; local[Local Executor]&#xa; temporal[Temporal Executor]&#xa; end&#xa; &#xa; subgraph Core Services&#xa; logging[Logging System]&#xa; tools[Tool Registry]&#xa; formatter[Output Formatters]&#xa; end&#xa; end&#xa;&#xa; subgraph External Services&#xa; llm[Language Models]&#xa; temporal_server[Temporal Server]&#xa; end&#xa;&#xa; %% Client interactions&#xa; client --&gt; orchestrator&#xa; &#xa; %% Orchestrator relations&#xa; orchestrator --&gt; registry&#xa; orchestrator --&gt; context&#xa; orchestrator --&gt; local&#xa; orchestrator --&gt; temporal&#xa; &#xa; %% Agent relations&#xa; base --&gt; tools&#xa; base --&gt; logging&#xa; base --&gt; formatter&#xa;&#xa; &#xa; %% Execution relations&#xa; local --&gt; llm&#xa; temporal --&gt; temporal_server&#xa; temporal_server --&gt; llm&#xa; &#xa; %% Registry relations&#xa; registry --&gt; base&#xa; registry --&gt; tools&#xa;&#xa; %% Style&#xa; classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px;&#xa; classDef external fill:#e1f5fe,stroke:#0288d1,stroke-width:2px;&#xa; classDef core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px;&#xa; &#xa; class llm,temporal_server external;&#xa; class orchestrator,registry,context,base,local,temporal core;" style="shadow=0;dashed=0;align=left;strokeWidth=1;shape=mxgraph.mermaid.abstract.mermaid;labelBackgroundColor=#ffffff;noLabel=1;theme=default;" vertex="1" parent="1">
18
+ <mxCell id="gh-ZxXSGDDD0mwRwWCxR-1" value="graph TD&#xa; subgraph Client Application&#xa; client[Client Code]&#xa; end&#xa;&#xa; subgraph Flock Framework&#xa; orchestrator[Flock Orchestrator]&#xa; registry[Agent Registry]&#xa; context[Context Manager]&#xa; &#xa; subgraph Agents&#xa; base[FlockAgent Base]&#xa;&#xa; end&#xa; &#xa; subgraph Execution&#xa; local[Local Executor]&#xa; temporal[Temporal Executor]&#xa; end&#xa; &#xa; subgraph Core Services&#xa; logging[Logging System]&#xa; tools[Tool Registry]&#xa; formatter[Output Formatters]&#xa; end&#xa; end&#xa;&#xa; subgraph External Services&#xa; llm[Language Models]&#xa; temporal_server[Temporal Server]&#xa; end&#xa;&#xa; %% Client interactions&#xa; client --&gt; orchestrator&#xa; &#xa; %% Orchestrator relations&#xa; orchestrator --&gt; registry&#xa; orchestrator --&gt; context&#xa; orchestrator --&gt; local&#xa; orchestrator --&gt; temporal&#xa; &#xa; %% Agent relations&#xa; base --&gt; tools&#xa; base --&gt; logging&#xa; base --&gt; formatter&#xa;&#xa; &#xa; %% Execution relations&#xa; local --&gt; llm&#xa; temporal --&gt; temporal_server&#xa; temporal_server --&gt; llm&#xa; &#xa; %% Registry relations&#xa; registry --&gt; base&#xa; registry --&gt; tools&#xa;&#xa; %% Style&#xa; classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px;&#xa; classDef external fill:#e1f5fe,stroke:#0288d1,stroke-width:2px;&#xa; classDef core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px;&#xa; &#xa; class llm,temporal_server external;&#xa; class orchestrator,registry,context,base,local,temporal core;" style="shadow=0;dashed=0;align=left;strokeWidth=1;shape=mxgraph.mermaid.abstract.mermaid;labelBackgroundColor=#ffffff;noLabel=1;theme=default;" parent="1" vertex="1">
19
19
  <mxGeometry x="274" y="325" width="300" height="300" as="geometry"/>
20
20
  </mxCell>
21
21
  </root>
22
22
  </mxGraphModel>
23
23
  </diagram>
24
24
  <diagram id="sh9ImpPZNdK_Mo0HMCRx" name="Page-3">
25
- <mxGraphModel dx="1237" dy="800" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF,#E8E8E8)" math="0" shadow="0">
25
+ <mxGraphModel dx="1489" dy="898" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="light-dark(#FFFFFF,#E8E8E8)" math="0" shadow="0">
26
26
  <root>
27
27
  <mxCell id="0"/>
28
28
  <mxCell id="1" parent="0"/>
@@ -0,0 +1,232 @@
1
+ ---
2
+ hide: # Optional: Hide table of contents on simple pages
3
+ - toc
4
+ ---
5
+
6
+ # ⛓️ Chaining Agents: Building Workflows with Routers
7
+
8
+ In Flock, individual agents are powerful, but the real magic happens when you connect them to form sophisticated workflows. Chaining allows the output of one agent to become the input for another, enabling complex tasks to be broken down into manageable, specialized steps.
9
+
10
+ The key to chaining lies in **Routers**. Every `FlockAgent` can have a `handoff_router` attached. After an agent successfully completes its `evaluate` step, its router is called to decide what happens next.
11
+
12
+ ## How Routers Work: The `HandOffRequest`
13
+
14
+ A `FlockRouter`'s primary job is to execute its `route` method. This method receives:
15
+
16
+ 1. `current_agent`: The agent instance that just finished.
17
+ 2. `result`: The dictionary output produced by the `current_agent`.
18
+ 3. `context`: The shared `FlockContext` object containing the overall workflow state and history.
19
+
20
+ Based on these inputs, the router returns a `HandOffRequest` object. This object tells the Flock workflow engine:
21
+
22
+ * `next_agent` (str): The `name` of the agent to execute next. If empty or `None`, the workflow typically terminates.
23
+ * `output_to_input_merge_strategy` (Literal["match", "add"]): How the `result` from the current agent should be incorporated into the context for the next agent.
24
+ * `"match"` (Default): Fields in the `result` update corresponding fields in the context.
25
+ * `"add"`: The entire `result` dictionary is added to the context, often under a specific key (useful for feedback or passing complex objects).
26
+ * Optional Overrides: The `HandOffRequest` can also potentially carry information to override aspects of the next agent's execution or update the context directly (though specific router implementations vary in how they use this).
27
+
28
+ Flock provides several built-in router types to handle different chaining scenarios:
29
+
30
+ ## 1. Static Chaining: `DefaultRouter`
31
+
32
+ The simplest way to chain agents. The `DefaultRouter` routes to a predetermined next agent specified in its configuration.
33
+
34
+ ```python
35
+ # --- In your agent definition ---
36
+ from flock.core import FlockFactory
37
+ from flock.routers.default import DefaultRouter, DefaultRouterConfig
38
+
39
+ # Agent A always hands off to Agent B
40
+ agent_a = FlockFactory.create_default_agent(
41
+ name="agent_a",
42
+ input="topic",
43
+ output="summary",
44
+ router=DefaultRouter(
45
+ config=DefaultRouterConfig(hand_off="agent_b") # Always go to agent_b
46
+ )
47
+ )
48
+
49
+ agent_b = FlockFactory.create_default_agent(
50
+ name="agent_b",
51
+ input="summary", # Expects output from agent_a
52
+ output="final_report"
53
+ )
54
+
55
+ flock.add_agent(agent_a)
56
+ flock.add_agent(agent_b)
57
+
58
+ # Run starting with agent_a
59
+ flock.run(start_agent=agent_a, input={"topic": "AI Agents"})
60
+ ```
61
+
62
+ The `hand_off` value in `DefaultRouterConfig` can also be a callable function that dynamically returns a `HandOffRequest` based on the context or result.
63
+
64
+ ## 2. Dynamic Chaining: Making Decisions
65
+
66
+ For more complex workflows, you need routers that can make decisions based on the current state.
67
+
68
+ ### LLM-Powered Routing: `LLMRouter` 🧠
69
+
70
+ This router leverages a Large Language Model (LLM) to decide the next best agent.
71
+
72
+ * **How it works:** It constructs a prompt containing the current agent's details, its output, and information about all other available agents (their names, descriptions, inputs/outputs). It asks the LLM to choose the most suitable next agent, provide a confidence score, and explain its reasoning.
73
+ * **Configuration:** You can set the LLM `model`, `temperature`, `max_tokens`, a `confidence_threshold` (to only proceed if the LLM is confident enough), and even provide a custom prompt template.
74
+ * **Use Case:** Ideal for workflows where the next step depends on nuanced understanding of the previous agent's output and the capabilities of potential next agents.
75
+
76
+ ```python
77
+ # --- Conceptual Example ---
78
+ from flock.routers.llm import LLMRouter, LLMRouterConfig
79
+
80
+ smart_router = LLMRouter(
81
+ config=LLMRouterConfig(
82
+ confidence_threshold=0.7, # Only route if LLM score is >= 0.7
83
+ temperature=0.1
84
+ )
85
+ )
86
+
87
+ agent_with_llm_routing = FlockFactory.create_default_agent(
88
+ name="decision_point_agent",
89
+ # ... inputs/outputs ...
90
+ router=smart_router
91
+ )
92
+ ```
93
+
94
+ ### Agent-Powered Routing: `AgentRouter` 🤖
95
+
96
+ This router delegates the routing decision to *another* specialized `FlockAgent` called the `HandoffAgent`.
97
+
98
+ * **How it works:** The `AgentRouter` gathers information about the current agent, its result, and the available next agents. It packages this information and feeds it to the internal `HandoffAgent`. The `HandoffAgent` (which typically uses a `DeclarativeEvaluator`) analyzes the situation and outputs its decision (next agent name, confidence, reasoning). The `AgentRouter` then uses this decision.
99
+ * **Configuration:** Includes a `confidence_threshold`.
100
+ * **Use Case:** Useful when the routing logic itself is complex enough to warrant its own dedicated agent. It allows the routing logic to be developed and potentially improved independently.
101
+
102
+ ```python
103
+ # --- Conceptual Example ---
104
+ from flock.routers.agent import AgentRouter, AgentRouterConfig
105
+
106
+ agent_powered_router = AgentRouter(
107
+ config=AgentRouterConfig(
108
+ confidence_threshold=0.6
109
+ )
110
+ )
111
+
112
+ agent_with_agent_routing = FlockFactory.create_default_agent(
113
+ name="complex_routing_agent",
114
+ # ... inputs/outputs ...
115
+ router=agent_powered_router
116
+ )
117
+ ```
118
+
119
+ ## 3. Conditional Routing & Retries
120
+
121
+ Sometimes, the workflow needs to branch or repeat based on specific conditions or feedback.
122
+
123
+ ### Condition-Based Branching: `ConditionalRouter` 🤔
124
+
125
+ This router evaluates a condition based on a value stored in the `FlockContext` and routes accordingly.
126
+
127
+ * **How it works:** You configure it to check a specific `condition_context_key`. It supports various checks:
128
+ * String comparison (equals, contains, regex, etc.)
129
+ * Number comparison (<, ==, >, etc.)
130
+ * List size checks (min/max items)
131
+ * Type checking (`isinstance`)
132
+ * Boolean checks
133
+ * Existence checks (does the key exist?)
134
+ * Custom logic via a registered callable function.
135
+ * **Routing Paths:** It routes to `success_agent` if the condition passes, or `failure_agent` if it fails.
136
+ * **Retry Logic:** Optionally, if the condition fails, it can route back to a `retry_agent` (often the *same* agent) up to `max_retries` times before finally giving up and going to the `failure_agent`. This is useful for self-correction loops.
137
+ * **Use Case:** Implementing if/else logic, validation checks, or simple retry loops within your workflow.
138
+
139
+ ```python
140
+ # --- Conceptual Example ---
141
+ from flock.routers.conditional import ConditionalRouter, ConditionalRouterConfig
142
+
143
+ # Assume an agent 'validator_agent' puts its result in context.state['validation_status']
144
+ conditional_router = ConditionalRouter(
145
+ config=ConditionalRouterConfig(
146
+ condition_context_key="validation_status", # Check this context variable
147
+ expected_string="PASS", # Condition: Does it equal "PASS"?
148
+ string_mode="equals",
149
+ ignore_case=True,
150
+ success_agent="publish_agent", # If "PASS", go to publish
151
+ failure_agent="human_review_agent" # If not "PASS", go to review
152
+ )
153
+ )
154
+
155
+ validator_agent = FlockFactory.create_default_agent(
156
+ name="validator_agent",
157
+ # ... inputs/outputs ...
158
+ # Assume it sets context.state['validation_status'] = "PASS" or "FAIL"
159
+ router=conditional_router
160
+ )
161
+ ```
162
+
163
+ ### Feedback-Driven Retries: `FeedbackRetryRouter` 🔁
164
+
165
+ This router is specifically designed to handle retries based on feedback, often generated by assertion modules.
166
+
167
+ * **How it works:** It checks a configured `feedback_context_key`. If feedback is present (indicating a failure or issue detected, perhaps by an `AssertionCheckerModule`), and `max_retries` hasn't been exceeded, it routes back to the *current agent*. Crucially, it uses `output_to_input_merge_strategy="add"` and `add_input_fields` to inject the feedback message (and potentially the previous result) into the context, making it available for the agent's next attempt. If retries are exhausted, it routes to a `fallback_agent` or stops.
168
+ * **Use Case:** Implementing self-correction loops where an agent attempts a task, an assertion module checks the result, and if issues are found, the agent retries with specific feedback on what went wrong.
169
+
170
+ ```python
171
+ # --- Conceptual Example ---
172
+ from flock.routers.feedback import FeedbackRetryRouter, FeedbackRetryRouterConfig
173
+ # Assume AssertionCheckerModule puts feedback in context.state['flock.assertion_feedback']
174
+
175
+ retry_router = FeedbackRetryRouter(
176
+ config=FeedbackRetryRouterConfig(
177
+ max_retries=2, # Allow 2 retries
178
+ feedback_context_key="flock.assertion_feedback", # Check this key
179
+ fallback_agent="error_handler_agent" # Go here if retries fail
180
+ )
181
+ )
182
+
183
+ # Agent that might fail assertions
184
+ correctable_agent = FlockFactory.create_default_agent(
185
+ name="correctable_agent",
186
+ input="task_description, flock.assertion_feedback | Optional feedback", # Agent needs to accept feedback
187
+ output="result_data",
188
+ # Assume AssertionCheckerModule runs after evaluate
189
+ router=retry_router
190
+ )
191
+ ```
192
+
193
+ ## 4. Iterative Generation: `IterativeListGeneratorRouter` 🔄
194
+
195
+ This router facilitates scenarios where an agent needs to be called repeatedly to build up a list of items.
196
+
197
+ * **How it works:** It routes back to the *same agent* multiple times. It manages the growing list of generated items and the current iteration count within the `FlockContext`. On each subsequent run, it provides the list of previously generated items back to the agent (via a configured `context_input_field`). It stops once `max_iterations` is reached.
198
+ * **Complexity:** This pattern can be complex because the agent ideally needs slightly different inputs (the growing list) and might only need to produce *one* new item per iteration, rather than the full final list. The router attempts to manage this state, but careful agent and signature design is required.
199
+ * **Use Case:** Generating list items one by one, like chapters for a book outline, steps in a plan, or ideas in a brainstorm, where each new item might depend on the previous ones.
200
+
201
+ ```python
202
+ # --- Conceptual Example ---
203
+ from flock.routers.list_generator import IterativeListGeneratorRouter, IterativeListGeneratorRouterConfig
204
+
205
+ list_router = IterativeListGeneratorRouter(
206
+ config=IterativeListGeneratorRouterConfig(
207
+ target_list_field="chapters", # The final list output name
208
+ item_output_field="chapter", # The output field for a single item
209
+ context_input_field="previous_chapters", # How the list is passed back
210
+ max_iterations=5 # Generate up to 5 chapters
211
+ )
212
+ )
213
+
214
+ chapter_agent = FlockFactory.create_default_agent(
215
+ name="chapter_agent",
216
+ input="book_topic, previous_chapters | List of previously generated chapters",
217
+ output="chapter | The next chapter details", # Agent generates one item
218
+ router=list_router
219
+ )
220
+ # Note: The final result containing the full 'chapters' list is typically
221
+ # assembled from the context after the iterations complete.
222
+ ```
223
+
224
+ ## Combining Routers
225
+
226
+ For truly advanced workflows, you might even chain routers themselves (though this requires careful design). For example, a `FeedbackRetryRouter` could handle immediate retries, and if no feedback is present (success), it could hand off to an `LLMRouter` to decide the *next different* agent.
227
+
228
+ Just create a new router which is calling both routers in sequence! And even more wild shenanigans are possible!
229
+
230
+ ---
231
+
232
+ By understanding and utilizing these different router types, you can move beyond simple linear sequences and build dynamic, intelligent, and robust agent workflows with Flock! 🚀
@@ -0,0 +1,17 @@
1
+ ---
2
+ hide: # Optional: Hide table of contents on simple pages
3
+ - toc
4
+ ---
5
+
6
+ # 📚 Guides: Practical Recipes for Flock
7
+
8
+ Welcome to the Flock Guides! This section provides practical, step-by-step walkthroughs for accomplishing specific tasks and implementing common patterns with Flock.
9
+
10
+ Whether you're looking to build complex workflows, integrate specific tools, or optimize your agents, these guides offer focused instructions and examples.
11
+
12
+ ## Available Guides
13
+
14
+ * **[Chaining Agents: Building Workflows with Routers](chaining-agents.md):** Learn how to connect multiple agents together using different routing strategies, from simple static handoffs to dynamic, LLM-powered decisions.
15
+ * **[Configuring Temporal Execution](temporal-configuration.md):** Learn how to configure Temporal settings like task queues, timeouts, and retries for your workflows and agents.
16
+
17
+ *(More guides coming soon!)*