flock-core 0.4.0b19__tar.gz → 0.4.0b20__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 (525) hide show
  1. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.gitignore +1 -2
  2. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/PKG-INFO +32 -20
  3. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/README.md +31 -19
  4. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/pyproject.toml +1 -1
  5. flock_core-0.4.0b20/src/flock/cli/utils.py +135 -0
  6. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock.py +2 -3
  7. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_factory.py +2 -0
  8. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/mixin/dspy_integration.py +16 -7
  9. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/cli_helper.py +4 -2
  10. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/declarative/declarative_evaluator.py +40 -6
  11. flock_core-0.4.0b20/src/flock/modules/output/output_module.py +194 -0
  12. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/uv.lock +1 -1
  13. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.devcontainer/devcontainer.json +0 -0
  14. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.env_template +0 -0
  15. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  16. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  17. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  18. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/workflows/.gitkeep +0 -0
  19. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/workflows/deploy-documentation.yml +0 -0
  20. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.github/workflows/deploy-whiteduck-pypi.yml +0 -0
  21. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.sesskey +0 -0
  22. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.vscode/launch.json +0 -0
  23. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.vscode/settings.json +0 -0
  24. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/.vscode/tasks.json +0 -0
  25. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/LICENSE +0 -0
  26. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/about/changelog.md +0 -0
  27. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/about/contributing.md +0 -0
  28. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/drawio/architecture.drawio +0 -0
  29. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/cli_outputs/out.png +0 -0
  30. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/components_chart.png +0 -0
  31. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_01.png +0 -0
  32. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_02.png +0 -0
  33. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_03.png +0 -0
  34. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_04.png +0 -0
  35. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_05.png +0 -0
  36. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/examples/01_06.png +0 -0
  37. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/flock.png +0 -0
  38. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/flock_cli.png +0 -0
  39. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/flow_chart.png +0 -0
  40. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/getting-started/first_agent_00.png +0 -0
  41. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/hummingbird.png +0 -0
  42. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/icon.png +0 -0
  43. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/icon.png~ +0 -0
  44. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/logo.png +0 -0
  45. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/memory_concepts.png +0 -0
  46. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/memory_flow.png +0 -0
  47. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/assets/images/memory_flow_chart.png +0 -0
  48. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/components/evaluators.md +0 -0
  49. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/components/index.md +0 -0
  50. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/components/modules.md +0 -0
  51. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/components/tools.md +0 -0
  52. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/core-concepts/agents.md +0 -0
  53. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/core-concepts/declarative.md +0 -0
  54. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/core-concepts/index.md +0 -0
  55. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/core-concepts/workflows.md +0 -0
  56. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/create_doc_boilerplate.py +0 -0
  57. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/deployment/index.md +0 -0
  58. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/deployment/temporal.md +0 -0
  59. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/getting-started/configuration.md +0 -0
  60. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/getting-started/index.md +0 -0
  61. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/getting-started/installation.md +0 -0
  62. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/getting-started/quickstart.md +0 -0
  63. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/guides/chaining-agents.md +0 -0
  64. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/guides/index.md +0 -0
  65. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/index.md +0 -0
  66. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/cli-tool.md +0 -0
  67. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/index.md +0 -0
  68. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/interactive-cli.md +0 -0
  69. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/programmatic.md +0 -0
  70. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/rest-api.md +0 -0
  71. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/interacting-with-flock/web-ui.md +0 -0
  72. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/reference/flock_agent.md +0 -0
  73. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/reference/index.md +0 -0
  74. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/release-notes/magpie.md +0 -0
  75. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/docs/stylesheets/extra.css +0 -0
  76. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/mkdocs.yml +0 -0
  77. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/requirements.txt +0 -0
  78. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/scripts/code_collector.py +0 -0
  79. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/scripts/create_docs.py +0 -0
  80. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/__init__.py +0 -0
  81. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/assets/release_notes.md +0 -0
  82. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/config.py +0 -0
  83. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/constants.py +0 -0
  84. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/create_agent.py +0 -0
  85. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/create_flock.py +0 -0
  86. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/execute_flock.py +0 -0
  87. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/load_agent.py +0 -0
  88. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/load_examples.py +0 -0
  89. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/load_flock.py +0 -0
  90. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/load_release_notes.py +0 -0
  91. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/loaded_flock_cli.py +0 -0
  92. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/manage_agents.py +0 -0
  93. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/registry_management.py +0 -0
  94. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/runner.py +0 -0
  95. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/settings.py +0 -0
  96. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/view_results.py +0 -0
  97. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/cli/yaml_editor.py +0 -0
  98. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/config.py +0 -0
  99. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/__init__.py +0 -0
  100. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/__init__.py +0 -0
  101. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/endpoints.py +0 -0
  102. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/main.py +0 -0
  103. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/models.py +0 -0
  104. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/run_store.py +0 -0
  105. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/runner.py +0 -0
  106. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/ui/__init__.py +0 -0
  107. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/ui/routes.py +0 -0
  108. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/api/ui/utils.py +0 -0
  109. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/context/context.py +0 -0
  110. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/context/context_manager.py +0 -0
  111. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/context/context_vars.py +0 -0
  112. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/evaluation/utils.py +0 -0
  113. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/execution/batch_executor.py +0 -0
  114. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/execution/evaluation_executor.py +0 -0
  115. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/execution/local_executor.py +0 -0
  116. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/execution/temporal_executor.py +0 -0
  117. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_agent.py +0 -0
  118. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_evaluator.py +0 -0
  119. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_module.py +0 -0
  120. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_registry.py +0 -0
  121. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/flock_router.py +0 -0
  122. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/interpreter/python_interpreter.py +0 -0
  123. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/__init__.py +0 -0
  124. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/formatters/enum_builder.py +0 -0
  125. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/formatters/theme_builder.py +0 -0
  126. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/formatters/themed_formatter.py +0 -0
  127. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/formatters/themes.py +0 -0
  128. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/logging.py +0 -0
  129. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/span_middleware/baggage_span_processor.py +0 -0
  130. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/telemetry.py +0 -0
  131. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/telemetry_exporter/base_exporter.py +0 -0
  132. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/telemetry_exporter/file_exporter.py +0 -0
  133. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/telemetry_exporter/sqlite_exporter.py +0 -0
  134. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/logging/trace_and_logged.py +0 -0
  135. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/mixin/prompt_parser.py +0 -0
  136. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/__init__.py +0 -0
  137. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/callable_registry.py +0 -0
  138. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/flock_serializer.py +0 -0
  139. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/json_encoder.py +0 -0
  140. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/secure_serializer.py +0 -0
  141. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/serializable.py +0 -0
  142. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/serialization/serialization_utils.py +0 -0
  143. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/azure_tools.py +0 -0
  144. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/basic_tools.py +0 -0
  145. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/dev_tools/github.py +0 -0
  146. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/llm_tools.py +0 -0
  147. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/markdown_tools.py +0 -0
  148. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/tools/zendesk_tools.py +0 -0
  149. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/file_path_utils.py +0 -0
  150. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/hydrator.py +0 -0
  151. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/input_resolver.py +0 -0
  152. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/core/util/loader.py +0 -0
  153. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/memory/azure_search_evaluator.py +0 -0
  154. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/memory/memory_evaluator.py +0 -0
  155. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/natural_language/natural_language_evaluator.py +0 -0
  156. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/test/test_case_evaluator.py +0 -0
  157. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/evaluators/zep/zep_evaluator.py +0 -0
  158. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/azure-search/azure_search_module.py +0 -0
  159. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/callback/callback_module.py +0 -0
  160. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/memory/memory_module.py +0 -0
  161. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/memory/memory_parser.py +0 -0
  162. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/memory/memory_storage.py +0 -0
  163. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/performance/metrics_module.py +0 -0
  164. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/modules/zep/zep_module.py +0 -0
  165. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/platform/docker_tools.py +0 -0
  166. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/platform/jaeger_install.py +0 -0
  167. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/__init__.py +0 -0
  168. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/agent/__init__.py +0 -0
  169. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/agent/agent_router.py +0 -0
  170. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/agent/handoff_agent.py +0 -0
  171. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/default/__init__.py +0 -0
  172. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/default/default_router.py +0 -0
  173. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/llm/__init__.py +0 -0
  174. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/routers/llm/llm_router.py +0 -0
  175. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/3024-day.toml +0 -0
  176. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/3024-night.toml +0 -0
  177. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/aardvark-blue.toml +0 -0
  178. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/abernathy.toml +0 -0
  179. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/adventure.toml +0 -0
  180. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/adventuretime.toml +0 -0
  181. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/afterglow.toml +0 -0
  182. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/alabaster.toml +0 -0
  183. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/alienblood.toml +0 -0
  184. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/andromeda.toml +0 -0
  185. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/apple-classic.toml +0 -0
  186. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/apple-system-colors.toml +0 -0
  187. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/arcoiris.toml +0 -0
  188. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/argonaut copy.toml +0 -0
  189. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/argonaut.toml +0 -0
  190. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/arthur.toml +0 -0
  191. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ateliersulphurpool.toml +0 -0
  192. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/atom.toml +0 -0
  193. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/atom_test.toml +0 -0
  194. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/atomonelight.toml +0 -0
  195. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/aurora.toml +0 -0
  196. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ayu copy.toml +0 -0
  197. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ayu-light.toml +0 -0
  198. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ayu-mirage.toml +0 -0
  199. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ayu.toml +0 -0
  200. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/banana-blueberry.toml +0 -0
  201. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/batman.toml +0 -0
  202. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/belafonte-day.toml +0 -0
  203. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/belafonte-night.toml +0 -0
  204. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/birdsofparadise.toml +0 -0
  205. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blazer.toml +0 -0
  206. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blue-matrix.toml +0 -0
  207. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blueberrypie.toml +0 -0
  208. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/bluedolphin.toml +0 -0
  209. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blulocodark.toml +0 -0
  210. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/blulocolight.toml +0 -0
  211. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/borland.toml +0 -0
  212. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/breeze.toml +0 -0
  213. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/bright-lights.toml +0 -0
  214. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/broadcast.toml +0 -0
  215. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/brogrammer.toml +0 -0
  216. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-dark.toml +0 -0
  217. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-light.toml +0 -0
  218. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-pastel-dark.toml +0 -0
  219. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-solarized-dark.toml +0 -0
  220. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-solarized-light.toml +0 -0
  221. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-tango-dark.toml +0 -0
  222. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/builtin-tango-light.toml +0 -0
  223. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/c64.toml +0 -0
  224. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/calamity.toml +0 -0
  225. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/catppuccin-frappe.toml +0 -0
  226. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/catppuccin-latte.toml +0 -0
  227. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/catppuccin-macchiato.toml +0 -0
  228. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/catppuccin-mocha.toml +0 -0
  229. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cga.toml +0 -0
  230. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/chalk.toml +0 -0
  231. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/chalkboard.toml +0 -0
  232. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/challengerdeep.toml +0 -0
  233. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/chester.toml +0 -0
  234. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ciapre.toml +0 -0
  235. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/clrs.toml +0 -0
  236. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cobalt-neon.toml +0 -0
  237. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cobalt2.toml +0 -0
  238. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/coffee-theme.toml +0 -0
  239. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/crayonponyfish.toml +0 -0
  240. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cutiepro.toml +0 -0
  241. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cyberdyne.toml +0 -0
  242. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cyberpunk.toml +0 -0
  243. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/cyberpunkscarletprotocol.toml +0 -0
  244. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dark+.toml +0 -0
  245. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dark-pastel.toml +0 -0
  246. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/darkermatrix.toml +0 -0
  247. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/darkmatrix.toml +0 -0
  248. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/darkside.toml +0 -0
  249. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dayfox.toml +0 -0
  250. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/deep.toml +0 -0
  251. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/desert.toml +0 -0
  252. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dimidium.toml +0 -0
  253. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dimmedmonokai.toml +0 -0
  254. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/django.toml +0 -0
  255. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/djangorebornagain.toml +0 -0
  256. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/djangosmooth.toml +0 -0
  257. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/doom-peacock.toml +0 -0
  258. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/doomone.toml +0 -0
  259. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dotgov.toml +0 -0
  260. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dracula+.toml +0 -0
  261. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/dracula.toml +0 -0
  262. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/duckbones.toml +0 -0
  263. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/duotone-dark.toml +0 -0
  264. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/earthsong.toml +0 -0
  265. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/elemental.toml +0 -0
  266. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/elementary.toml +0 -0
  267. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/encom.toml +0 -0
  268. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/espresso-libre.toml +0 -0
  269. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/espresso.toml +0 -0
  270. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/everblush.toml +0 -0
  271. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/fahrenheit.toml +0 -0
  272. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/fairyfloss.toml +0 -0
  273. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/farmhouse-dark.toml +0 -0
  274. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/farmhouse-light.toml +0 -0
  275. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/fideloper.toml +0 -0
  276. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/firefly-traditional.toml +0 -0
  277. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/firefoxdev.toml +0 -0
  278. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/firewatch.toml +0 -0
  279. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/fishtank.toml +0 -0
  280. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/flat.toml +0 -0
  281. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/flatland.toml +0 -0
  282. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/flexoki-dark.toml +0 -0
  283. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/flexoki-light.toml +0 -0
  284. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/floraverse.toml +0 -0
  285. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/forestblue.toml +0 -0
  286. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/framer.toml +0 -0
  287. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/frontenddelight.toml +0 -0
  288. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/funforrest.toml +0 -0
  289. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/galaxy.toml +0 -0
  290. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/galizur.toml +0 -0
  291. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/github-dark.toml +0 -0
  292. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/github.toml +0 -0
  293. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/glacier.toml +0 -0
  294. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/grape.toml +0 -0
  295. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/grass.toml +0 -0
  296. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/grey-green.toml +0 -0
  297. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/gruber-darker.toml +0 -0
  298. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/gruvboxdark.toml +0 -0
  299. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/gruvboxdarkhard.toml +0 -0
  300. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/gruvboxlight.toml +0 -0
  301. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/guezwhoz.toml +0 -0
  302. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hacktober.toml +0 -0
  303. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hardcore.toml +0 -0
  304. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/harper.toml +0 -0
  305. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hax0r-blue.toml +0 -0
  306. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hax0r-gr33n.toml +0 -0
  307. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hax0r-r3d.toml +0 -0
  308. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/highway.toml +0 -0
  309. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hipster-green.toml +0 -0
  310. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hivacruz.toml +0 -0
  311. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/homebrew.toml +0 -0
  312. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hopscotch.256.toml +0 -0
  313. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hopscotch.toml +0 -0
  314. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hurtado.toml +0 -0
  315. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/hybrid.toml +0 -0
  316. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ic-green-ppl.toml +0 -0
  317. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ic-orange-ppl.toml +0 -0
  318. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iceberg-dark.toml +0 -0
  319. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iceberg-light.toml +0 -0
  320. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/idea.toml +0 -0
  321. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/idletoes.toml +0 -0
  322. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ir-black.toml +0 -0
  323. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-dark-background.toml +0 -0
  324. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-default.toml +0 -0
  325. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-light-background.toml +0 -0
  326. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-pastel-dark-background.toml +0 -0
  327. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-smoooooth.toml +0 -0
  328. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-solarized-dark.toml +0 -0
  329. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-solarized-light.toml +0 -0
  330. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-tango-dark.toml +0 -0
  331. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/iterm2-tango-light.toml +0 -0
  332. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/jackie-brown.toml +0 -0
  333. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/japanesque.toml +0 -0
  334. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/jellybeans.toml +0 -0
  335. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/jetbrains-darcula.toml +0 -0
  336. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/jubi.toml +0 -0
  337. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/kanagawabones.toml +0 -0
  338. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/kibble.toml +0 -0
  339. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/kolorit.toml +0 -0
  340. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/konsolas.toml +0 -0
  341. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/kurokula.toml +0 -0
  342. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/lab-fox.toml +0 -0
  343. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/laser.toml +0 -0
  344. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/later-this-evening.toml +0 -0
  345. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/lavandula.toml +0 -0
  346. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/liquidcarbon.toml +0 -0
  347. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/liquidcarbontransparent.toml +0 -0
  348. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/liquidcarbontransparentinverse.toml +0 -0
  349. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/lovelace.toml +0 -0
  350. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/man-page.toml +0 -0
  351. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/mariana.toml +0 -0
  352. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/material.toml +0 -0
  353. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/materialdark.toml +0 -0
  354. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/materialdarker.toml +0 -0
  355. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/materialdesigncolors.toml +0 -0
  356. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/materialocean.toml +0 -0
  357. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/mathias.toml +0 -0
  358. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/matrix.toml +0 -0
  359. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/medallion.toml +0 -0
  360. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/mellifluous.toml +0 -0
  361. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/midnight-in-mojave.toml +0 -0
  362. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/mirage.toml +0 -0
  363. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/misterioso.toml +0 -0
  364. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/molokai.toml +0 -0
  365. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/monalisa.toml +0 -0
  366. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/monokai-remastered.toml +0 -0
  367. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/monokai-soda.toml +0 -0
  368. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/monokai-vivid.toml +0 -0
  369. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/n0tch2k.toml +0 -0
  370. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neobones-dark.toml +0 -0
  371. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neobones-light.toml +0 -0
  372. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neon.toml +0 -0
  373. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neopolitan.toml +0 -0
  374. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/neutron.toml +0 -0
  375. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/night-owlish-light.toml +0 -0
  376. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nightfox.toml +0 -0
  377. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nightlion-v1.toml +0 -0
  378. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nightlion-v2.toml +0 -0
  379. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/niji.toml +0 -0
  380. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nocturnal-winter.toml +0 -0
  381. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nord-light.toml +0 -0
  382. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nord.toml +0 -0
  383. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/novel.toml +0 -0
  384. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nvimdark.toml +0 -0
  385. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/nvimlight.toml +0 -0
  386. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/obsidian.toml +0 -0
  387. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ocean.toml +0 -0
  388. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/oceanic-next.toml +0 -0
  389. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/oceanicmaterial.toml +0 -0
  390. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ollie.toml +0 -0
  391. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/onehalfdark.toml +0 -0
  392. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/onehalflight.toml +0 -0
  393. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/operator-mono-dark.toml +0 -0
  394. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/overnight-slumber.toml +0 -0
  395. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/oxocarbon.toml +0 -0
  396. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/palenighthc.toml +0 -0
  397. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pandora.toml +0 -0
  398. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/paraiso-dark.toml +0 -0
  399. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/paulmillr.toml +0 -0
  400. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pencildark.toml +0 -0
  401. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pencillight.toml +0 -0
  402. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/peppermint.toml +0 -0
  403. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/piatto-light.toml +0 -0
  404. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pnevma.toml +0 -0
  405. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/popping-and-locking.toml +0 -0
  406. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/primary.toml +0 -0
  407. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pro-light.toml +0 -0
  408. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/pro.toml +0 -0
  409. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/purple-rain.toml +0 -0
  410. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/purplepeter.toml +0 -0
  411. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rapture.toml +0 -0
  412. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/raycast-dark.toml +0 -0
  413. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/raycast-light.toml +0 -0
  414. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rebecca.toml +0 -0
  415. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/red-alert.toml +0 -0
  416. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/red-planet.toml +0 -0
  417. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/red-sands.toml +0 -0
  418. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/relaxed.toml +0 -0
  419. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/retro.toml +0 -0
  420. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rippedcasts.toml +0 -0
  421. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rose-pine-dawn.toml +0 -0
  422. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rose-pine-moon.toml +0 -0
  423. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rose-pine.toml +0 -0
  424. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/rouge-2.toml +0 -0
  425. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/royal.toml +0 -0
  426. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ryuuko.toml +0 -0
  427. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sakura.toml +0 -0
  428. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/scarlet-protocol.toml +0 -0
  429. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seafoam-pastel.toml +0 -0
  430. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seashells.toml +0 -0
  431. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seoulbones-dark.toml +0 -0
  432. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seoulbones-light.toml +0 -0
  433. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/seti.toml +0 -0
  434. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/shades-of-purple.toml +0 -0
  435. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/shaman.toml +0 -0
  436. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/slate.toml +0 -0
  437. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sleepyhollow.toml +0 -0
  438. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/smyck.toml +0 -0
  439. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/snazzy.toml +0 -0
  440. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/softserver.toml +0 -0
  441. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/solarized-darcula.toml +0 -0
  442. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/solarized-dark---patched.toml +0 -0
  443. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/solarized-dark-higher-contrast.toml +0 -0
  444. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spacedust.toml +0 -0
  445. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spacegray-eighties-dull.toml +0 -0
  446. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spacegray-eighties.toml +0 -0
  447. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spacegray.toml +0 -0
  448. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spiderman.toml +0 -0
  449. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/spring.toml +0 -0
  450. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/square.toml +0 -0
  451. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sublette.toml +0 -0
  452. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/subliminal.toml +0 -0
  453. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sugarplum.toml +0 -0
  454. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/sundried.toml +0 -0
  455. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/symfonic.toml +0 -0
  456. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/synthwave-everything.toml +0 -0
  457. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/synthwave.toml +0 -0
  458. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/synthwavealpha.toml +0 -0
  459. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tango-adapted.toml +0 -0
  460. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tango-half-adapted.toml +0 -0
  461. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/teerb.toml +0 -0
  462. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/terafox.toml +0 -0
  463. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/terminal-basic.toml +0 -0
  464. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/thayer-bright.toml +0 -0
  465. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/the-hulk.toml +0 -0
  466. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tinacious-design-(dark).toml +0 -0
  467. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tinacious-design-(light).toml +0 -0
  468. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tokyonight-day.toml +0 -0
  469. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tokyonight-storm.toml +0 -0
  470. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tokyonight.toml +0 -0
  471. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night-blue.toml +0 -0
  472. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night-bright.toml +0 -0
  473. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night-burns.toml +0 -0
  474. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night-eighties.toml +0 -0
  475. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow-night.toml +0 -0
  476. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/tomorrow.toml +0 -0
  477. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/toychest.toml +0 -0
  478. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/treehouse.toml +0 -0
  479. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/twilight.toml +0 -0
  480. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ubuntu.toml +0 -0
  481. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ultradark.toml +0 -0
  482. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/ultraviolent.toml +0 -0
  483. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/underthesea.toml +0 -0
  484. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/unikitty.toml +0 -0
  485. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/urple.toml +0 -0
  486. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/vaughn.toml +0 -0
  487. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/vesper.toml +0 -0
  488. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/vibrantink.toml +0 -0
  489. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/vimbones.toml +0 -0
  490. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/violet-dark.toml +0 -0
  491. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/violet-light.toml +0 -0
  492. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/warmneon.toml +0 -0
  493. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wez.toml +0 -0
  494. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/whimsy.toml +0 -0
  495. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wildcherry.toml +0 -0
  496. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wilmersdorf.toml +0 -0
  497. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wombat.toml +0 -0
  498. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/wryan.toml +0 -0
  499. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodedark.toml +0 -0
  500. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodedarkhc.toml +0 -0
  501. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodelight.toml +0 -0
  502. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodelighthc.toml +0 -0
  503. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/xcodewwdc.toml +0 -0
  504. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenbones-dark.toml +0 -0
  505. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenbones-light.toml +0 -0
  506. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenbones.toml +0 -0
  507. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenburn.toml +0 -0
  508. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenburned.toml +0 -0
  509. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenwritten-dark.toml +0 -0
  510. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/themes/zenwritten-light.toml +0 -0
  511. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/__init__.py +0 -0
  512. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/activities.py +0 -0
  513. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/agent_activities.py +0 -0
  514. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/temporal_setup.py +0 -0
  515. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/src/flock/workflow/workflow.py +0 -0
  516. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/__init__.py +0 -0
  517. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/core/test_flock_batch.py +0 -0
  518. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/core/test_flock_core.py +0 -0
  519. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/__init__.py +0 -0
  520. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_enhanced_serialization.py +0 -0
  521. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_file_path_serialization.py +0 -0
  522. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_flock_serializer.py +0 -0
  523. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_nested_serialization.py +0 -0
  524. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/serialization/test_yaml_serialization.py +0 -0
  525. {flock_core-0.4.0b19 → flock_core-0.4.0b20}/tests/tools/test_zendesk_tools.py +0 -0
@@ -38,8 +38,7 @@ news/
38
38
  .chroma/
39
39
  hierarchical_memory/
40
40
  .repomix-output.txt
41
- output/
42
- !src/flock/modules/output/output_module.py
41
+
43
42
  .env.*
44
43
  .flock/
45
44
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.4.0b19
3
+ Version: 0.4.0b20
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -58,8 +58,6 @@ Requires-Dist: markdownify>=0.14.1; extra == 'tools'
58
58
  Requires-Dist: tavily-python>=0.5.0; extra == 'tools'
59
59
  Description-Content-Type: text/markdown
60
60
 
61
- # 🚀 Flock: The Declarative AI Agent Framework 🚀
62
-
63
61
  <p align="center">
64
62
  <!-- Placeholder for your Flock Logo/Banner - Replace URL -->
65
63
  <img alt="Flock Banner" src="https://raw.githubusercontent.com/whiteducksoftware/flock/master/docs/assets/images/flock.png" width="600">
@@ -95,20 +93,25 @@ Built with real-world deployment in mind, Flock integrates seamlessly with tools
95
93
 
96
94
  Flock offers a different way to build agentic systems:
97
95
 
98
- | Traditional Agent Frameworks 😟 | Flock Framework 🐤🐧🐓🦆 |
99
- | :------------------------------------- | :------------------------------------ |
100
- | 🤯 **Prompt Nightmare** | ✅ **Declarative Simplicity** |
101
- | *Long, brittle, hard-to-tune prompts* | *Clear input/output specs (typed!)* |
102
- | 💥 **Fragile & Unpredictable** | ⚡ **Robust & Production-Ready** |
103
- | *Single errors can halt everything* | *Fault-tolerant via Temporal option* |
104
- | 🧩 **Monolithic & Rigid** | 🔧 **Modular & Flexible** |
105
- | *Hard to extend or modify logic* | *Pluggable Evaluators, Modules, Tools*|
106
- | ⛓️ **Basic Chaining** | 🚀 **Advanced Orchestration** |
107
- | *Often just linear workflows* | *Dynamic Routing, Batch Processing* |
108
- | 🧪 **Difficult Testing** | ✅ **Testable Components** |
109
- | *Hard to unit test prompt logic* | *Clear I/O contracts aid testing* |
110
- | 📄 **Unstructured Output** | ✨ **Structured Data Handling** |
111
- | *Parsing unreliable LLM text output* | *Native Pydantic/Typed Dict support* |
96
+ | Traditional Agent Frameworks 😟 | Flock Framework 🐤🐧🐓🦆 |
97
+ | :------------------------------------ | :------------------------------------- |
98
+ | 🤯 **Prompt Nightmare** | ✅ **Declarative Simplicity** |
99
+ | *Long, brittle, hard-to-tune prompts* | *Clear input/output specs (typed!)* |
100
+ | 💥 **Fragile & Unpredictable** | ⚡ **Robust & Production-Ready** |
101
+ | *Single errors can halt everything* | *Fault-tolerant via Temporal option* |
102
+ | 🧩 **Monolithic & Rigid** | 🔧 **Modular & Flexible** |
103
+ | *Hard to extend or modify logic* | *Pluggable Evaluators, Modules, Tools* |
104
+ | ⛓️ **Basic Chaining** | 🚀 **Advanced Orchestration** |
105
+ | *Often just linear workflows* | *Dynamic Routing, Batch Processing* |
106
+ | 🧪 **Difficult Testing** | ✅ **Testable Components** |
107
+ | *Hard to unit test prompt logic* | *Clear I/O contracts aid testing* |
108
+ | 📄 **Unstructured Output** | ✨ **Structured Data Handling** |
109
+ | *Parsing unreliable LLM text output* | *Native Pydantic/Typed Dict support* |
110
+
111
+
112
+ ## 📹 Video Demo
113
+
114
+ https://github.com/user-attachments/assets/bdab4786-d532-459f-806a-024727164dcc
112
115
 
113
116
  ## 💡 Core Concepts
114
117
 
@@ -210,7 +213,17 @@ if __name__ == "__main__":
210
213
  print("Ensure your LLM API key (e.g., OPENAI_API_KEY) is set in your .env file!")
211
214
  ```
212
215
 
213
- ## Utility: @flockclass Hydrator
216
+ ## 🐤 New in Flock 0.4.0 `Magpie` 🐤
217
+
218
+ ### REST API - Deploy Flock Agents as REST API Endpoints
219
+
220
+ ### Web UI - Test Flock Agents in the Browser
221
+
222
+ ### CLI Tool - Manage Flock Agents via the Command Line
223
+
224
+ ### Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
225
+
226
+ ### ✨ Utility: @flockclass Hydrator
214
227
 
215
228
  Flock also provides conveniences. The @flockclass decorator allows you to easily populate Pydantic models using an LLM:
216
229
 
@@ -269,11 +282,10 @@ Ways to contribute:
269
282
  - Improve documentation.
270
283
  - Contribute new Modules, Evaluators, or Routers.
271
284
  - Add examples to the flock-showcase repository.
272
- - Join our Discord Community to discuss development! <!-- Add Discord link -->
273
285
 
274
286
  ## 📜 License
275
287
 
276
- Flock is licensed under the Apache License 2.0. See the LICENSE file for details.
288
+ Flock is licensed under the MIT License. See the LICENSE file for details.
277
289
 
278
290
  ## 🏢 About
279
291
 
@@ -1,5 +1,3 @@
1
- # 🚀 Flock: The Declarative AI Agent Framework 🚀
2
-
3
1
  <p align="center">
4
2
  <!-- Placeholder for your Flock Logo/Banner - Replace URL -->
5
3
  <img alt="Flock Banner" src="https://raw.githubusercontent.com/whiteducksoftware/flock/master/docs/assets/images/flock.png" width="600">
@@ -35,20 +33,25 @@ Built with real-world deployment in mind, Flock integrates seamlessly with tools
35
33
 
36
34
  Flock offers a different way to build agentic systems:
37
35
 
38
- | Traditional Agent Frameworks 😟 | Flock Framework 🐤🐧🐓🦆 |
39
- | :------------------------------------- | :------------------------------------ |
40
- | 🤯 **Prompt Nightmare** | ✅ **Declarative Simplicity** |
41
- | *Long, brittle, hard-to-tune prompts* | *Clear input/output specs (typed!)* |
42
- | 💥 **Fragile & Unpredictable** | ⚡ **Robust & Production-Ready** |
43
- | *Single errors can halt everything* | *Fault-tolerant via Temporal option* |
44
- | 🧩 **Monolithic & Rigid** | 🔧 **Modular & Flexible** |
45
- | *Hard to extend or modify logic* | *Pluggable Evaluators, Modules, Tools*|
46
- | ⛓️ **Basic Chaining** | 🚀 **Advanced Orchestration** |
47
- | *Often just linear workflows* | *Dynamic Routing, Batch Processing* |
48
- | 🧪 **Difficult Testing** | ✅ **Testable Components** |
49
- | *Hard to unit test prompt logic* | *Clear I/O contracts aid testing* |
50
- | 📄 **Unstructured Output** | ✨ **Structured Data Handling** |
51
- | *Parsing unreliable LLM text output* | *Native Pydantic/Typed Dict support* |
36
+ | Traditional Agent Frameworks 😟 | Flock Framework 🐤🐧🐓🦆 |
37
+ | :------------------------------------ | :------------------------------------- |
38
+ | 🤯 **Prompt Nightmare** | ✅ **Declarative Simplicity** |
39
+ | *Long, brittle, hard-to-tune prompts* | *Clear input/output specs (typed!)* |
40
+ | 💥 **Fragile & Unpredictable** | ⚡ **Robust & Production-Ready** |
41
+ | *Single errors can halt everything* | *Fault-tolerant via Temporal option* |
42
+ | 🧩 **Monolithic & Rigid** | 🔧 **Modular & Flexible** |
43
+ | *Hard to extend or modify logic* | *Pluggable Evaluators, Modules, Tools* |
44
+ | ⛓️ **Basic Chaining** | 🚀 **Advanced Orchestration** |
45
+ | *Often just linear workflows* | *Dynamic Routing, Batch Processing* |
46
+ | 🧪 **Difficult Testing** | ✅ **Testable Components** |
47
+ | *Hard to unit test prompt logic* | *Clear I/O contracts aid testing* |
48
+ | 📄 **Unstructured Output** | ✨ **Structured Data Handling** |
49
+ | *Parsing unreliable LLM text output* | *Native Pydantic/Typed Dict support* |
50
+
51
+
52
+ ## 📹 Video Demo
53
+
54
+ https://github.com/user-attachments/assets/bdab4786-d532-459f-806a-024727164dcc
52
55
 
53
56
  ## 💡 Core Concepts
54
57
 
@@ -150,7 +153,17 @@ if __name__ == "__main__":
150
153
  print("Ensure your LLM API key (e.g., OPENAI_API_KEY) is set in your .env file!")
151
154
  ```
152
155
 
153
- ## Utility: @flockclass Hydrator
156
+ ## 🐤 New in Flock 0.4.0 `Magpie` 🐤
157
+
158
+ ### REST API - Deploy Flock Agents as REST API Endpoints
159
+
160
+ ### Web UI - Test Flock Agents in the Browser
161
+
162
+ ### CLI Tool - Manage Flock Agents via the Command Line
163
+
164
+ ### Serialization - Share, Deploy, and Run Flock Agents by human readable yaml files
165
+
166
+ ### ✨ Utility: @flockclass Hydrator
154
167
 
155
168
  Flock also provides conveniences. The @flockclass decorator allows you to easily populate Pydantic models using an LLM:
156
169
 
@@ -209,11 +222,10 @@ Ways to contribute:
209
222
  - Improve documentation.
210
223
  - Contribute new Modules, Evaluators, or Routers.
211
224
  - Add examples to the flock-showcase repository.
212
- - Join our Discord Community to discuss development! <!-- Add Discord link -->
213
225
 
214
226
  ## 📜 License
215
227
 
216
- Flock is licensed under the Apache License 2.0. See the LICENSE file for details.
228
+ Flock is licensed under the MIT License. See the LICENSE file for details.
217
229
 
218
230
  ## 🏢 About
219
231
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "flock-core"
3
- version = "0.4.0b-19"
3
+ version = "0.4.0b-20"
4
4
  description = "Declarative LLM Orchestration at Scale"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -0,0 +1,135 @@
1
+ # src/pilot_rules/collector/utils.py
2
+ import datetime
3
+ from pathlib import Path
4
+ from typing import Any
5
+
6
+ from rich import box
7
+ from rich.console import Console
8
+ from rich.panel import Panel
9
+ from rich.progress import BarColumn, Progress, SpinnerColumn, TextColumn
10
+ from rich.table import Table
11
+
12
+ # Create a shared console instance for consistent styling
13
+ console = Console()
14
+
15
+
16
+ def get_file_metadata(file_path: str) -> dict[str, Any]:
17
+ """Extract metadata from a file."""
18
+ metadata = {
19
+ "path": file_path,
20
+ "size_bytes": 0,
21
+ "line_count": 0,
22
+ "last_modified": "Unknown",
23
+ "created": "Unknown",
24
+ }
25
+
26
+ try:
27
+ p = Path(file_path)
28
+ stats = p.stat()
29
+ metadata["size_bytes"] = stats.st_size
30
+ metadata["last_modified"] = datetime.datetime.fromtimestamp(
31
+ stats.st_mtime
32
+ ).strftime("%Y-%m-%d %H:%M:%S")
33
+ # ctime is platform dependent (creation on Windows, metadata change on Unix)
34
+ # Use mtime as a reliable fallback for "created" if ctime is older than mtime
35
+ ctime = stats.st_ctime
36
+ mtime = stats.st_mtime
37
+ best_ctime = ctime if ctime <= mtime else mtime # Heuristic
38
+ metadata["created"] = datetime.datetime.fromtimestamp(
39
+ best_ctime
40
+ ).strftime("%Y-%m-%d %H:%M:%S")
41
+
42
+ try:
43
+ # Attempt to read as text, fallback for binary or encoding issues
44
+ with p.open("r", encoding="utf-8", errors="ignore") as f:
45
+ content = f.read()
46
+ metadata["line_count"] = len(content.splitlines())
47
+ except (OSError, UnicodeDecodeError) as read_err:
48
+ # Handle cases where reading might fail (binary file, permissions etc.)
49
+ console.print(
50
+ f"[yellow]⚠ Warning:[/yellow] Could not read content/count lines for [cyan]{file_path}[/cyan]: [red]{read_err}[/red]"
51
+ )
52
+ metadata["line_count"] = 0 # Indicate unreadable or binary
53
+
54
+ except Exception as e:
55
+ console.print(
56
+ f"[yellow]⚠ Warning:[/yellow] Could not get complete metadata for [cyan]{file_path}[/cyan]: [red]{e}[/red]"
57
+ )
58
+
59
+ return metadata
60
+
61
+
62
+ # --- Rich Formatting Utilities ---
63
+
64
+
65
+ def print_header(title: str, style: str = "blue") -> None:
66
+ """Print a styled header with a panel."""
67
+ console.rule()
68
+ console.print(
69
+ Panel.fit(f"[bold {style}]{title}[/bold {style}]", border_style=style)
70
+ )
71
+
72
+
73
+ def print_subheader(title: str, style: str = "cyan") -> None:
74
+ """Print a styled subheader."""
75
+ console.print(f"[bold {style}]== {title} ==[/bold {style}]")
76
+
77
+
78
+ def print_success(message: str) -> None:
79
+ """Print a success message."""
80
+ console.print(f"[bold green]✓[/bold green] {message}")
81
+
82
+
83
+ def print_error(message: str, exit_code: int | None = None) -> None:
84
+ """Print an error message and optionally exit."""
85
+ console.print(f"[bold red]✗ ERROR:[/bold red] {message}")
86
+ if exit_code is not None:
87
+ exit(exit_code)
88
+
89
+
90
+ def print_warning(message: str) -> None:
91
+ """Print a warning message."""
92
+ console.print(f"[yellow]⚠ Warning:[/yellow] {message}")
93
+
94
+
95
+ def create_progress() -> Progress:
96
+ """Create a standardized progress bar."""
97
+ return Progress(
98
+ SpinnerColumn(),
99
+ TextColumn("[bold blue]{task.description}"),
100
+ BarColumn(complete_style="green", finished_style="green"),
101
+ TextColumn("[bold]{task.completed}/{task.total}"),
102
+ console=console,
103
+ )
104
+
105
+
106
+ def create_task_table(title: str) -> Table:
107
+ """Create a standardized table for displaying task information."""
108
+ table = Table(
109
+ title=title, show_header=True, header_style="bold cyan", box=box.ROUNDED
110
+ )
111
+ return table
112
+
113
+
114
+ def print_file_stats(files: list[str], title: str = "File Statistics") -> None:
115
+ """Print statistics about a list of files."""
116
+ if not files:
117
+ console.print("[yellow]No files found to display statistics.[/yellow]")
118
+ return
119
+
120
+ table = Table(title=title, show_header=True, header_style="bold magenta")
121
+ table.add_column("Statistic", style="cyan")
122
+ table.add_column("Value", style="green")
123
+
124
+ extensions = {Path(f).suffix.lower() for f in files if Path(f).suffix}
125
+ total_size = sum(get_file_metadata(f).get("size_bytes", 0) for f in files)
126
+ total_lines = sum(get_file_metadata(f).get("line_count", 0) for f in files)
127
+
128
+ table.add_row("Total Files", str(len(files)))
129
+ table.add_row("Total Size", f"{total_size / 1024:.2f} KB")
130
+ table.add_row("Total Lines", str(total_lines))
131
+ table.add_row(
132
+ "Extensions", ", ".join(sorted(extensions)) if extensions else "None"
133
+ )
134
+
135
+ console.print(table)
@@ -150,8 +150,7 @@ class Flock(BaseModel, Serializable):
150
150
  )
151
151
 
152
152
  # Initialize console if needed for banner
153
- if self.show_flock_banner: # Use instance attribute
154
- init_console()
153
+ init_console(clear_screen=True, show_banner=self.show_flock_banner)
155
154
 
156
155
  # Set Temporal debug environment variable
157
156
  self._set_temporal_debug_flag()
@@ -225,7 +224,7 @@ class Flock(BaseModel, Serializable):
225
224
  raise ValueError("Agent must have a name.")
226
225
 
227
226
  if agent.name in self._agents:
228
- logger.warning(f"Agent '{agent.name}' already exists. Overwriting.")
227
+ raise ValueError("Agent with this name already exists.")
229
228
  self._agents[agent.name] = agent
230
229
  FlockRegistry.register_agent(agent) # Register globally
231
230
 
@@ -38,6 +38,7 @@ class FlockFactory:
38
38
  print_context: bool = False,
39
39
  write_to_file: bool = False,
40
40
  stream: bool = False,
41
+ include_thought_process: bool = False,
41
42
  ) -> FlockAgent:
42
43
  """Creates a default FlockAgent.
43
44
 
@@ -52,6 +53,7 @@ class FlockFactory:
52
53
  max_tokens=max_tokens,
53
54
  temperature=temperature,
54
55
  stream=stream,
56
+ include_thought_process=include_thought_process,
55
57
  )
56
58
 
57
59
  evaluator = DeclarativeEvaluator(name="default", config=eval_config)
@@ -336,8 +336,9 @@ class DSPyIntegrationMixin:
336
336
  def _select_task(
337
337
  self,
338
338
  signature: Any,
339
- agent_type_override: AgentType,
339
+ override_evaluator_type: AgentType,
340
340
  tools: list[Any] | None = None,
341
+ kwargs: dict[str, Any] = {},
341
342
  ) -> Any:
342
343
  """Select and instantiate the appropriate DSPy Program/Module."""
343
344
  try:
@@ -360,7 +361,7 @@ class DSPyIntegrationMixin:
360
361
  )
361
362
 
362
363
  dspy_program = None
363
- selected_type = agent_type_override
364
+ selected_type = override_evaluator_type
364
365
 
365
366
  # Determine type if not overridden
366
367
  if not selected_type:
@@ -374,11 +375,12 @@ class DSPyIntegrationMixin:
374
375
 
375
376
  try:
376
377
  if selected_type == "ChainOfThought":
377
- dspy_program = dspy.ChainOfThought(signature)
378
+ dspy_program = dspy.ChainOfThought(signature, **kwargs)
378
379
  elif selected_type == "ReAct":
379
- # ReAct requires tools, even if empty list
380
+ if not kwargs:
381
+ kwargs = {"max_iters": 10}
380
382
  dspy_program = dspy.ReAct(
381
- signature, tools=processed_tools or [], max_iters=10
383
+ signature, tools=processed_tools or [], **kwargs
382
384
  )
383
385
  elif selected_type == "Predict": # Default or explicitly Completion
384
386
  dspy_program = dspy.Predict(signature)
@@ -401,8 +403,10 @@ class DSPyIntegrationMixin:
401
403
 
402
404
  def _process_result(
403
405
  self, result: Any, inputs: dict[str, Any]
404
- ) -> dict[str, Any]:
406
+ ) -> tuple[dict[str, Any], float, list]:
405
407
  """Convert the DSPy result object to a dictionary."""
408
+ import dspy
409
+
406
410
  if result is None:
407
411
  logger.warning("DSPy program returned None result.")
408
412
  return {}
@@ -429,7 +433,12 @@ class DSPyIntegrationMixin:
429
433
  logger.debug(f"Processed DSPy result to dict: {output_dict}")
430
434
  # Optionally merge inputs back if desired (can make result dict large)
431
435
  final_result = {**inputs, **output_dict}
432
- return final_result
436
+
437
+ lm = dspy.settings.get("lm")
438
+ cost = sum([x["cost"] for x in lm.history if x["cost"] is not None])
439
+ lm_history = lm.inspect_history()
440
+
441
+ return final_result, cost, lm_history
433
442
 
434
443
  except Exception as conv_error:
435
444
  logger.error(
@@ -43,7 +43,7 @@ def display_hummingbird():
43
43
  """)
44
44
 
45
45
 
46
- def init_console(clear_screen: bool = True):
46
+ def init_console(clear_screen: bool = True, show_banner: bool = True):
47
47
  """Display the Flock banner."""
48
48
  banner_text = Text(
49
49
  f"""
@@ -60,7 +60,9 @@ def init_console(clear_screen: bool = True):
60
60
  )
61
61
  if clear_screen:
62
62
  console.clear()
63
- console.print(banner_text)
63
+
64
+ if show_banner:
65
+ console.print(banner_text)
64
66
  console.print(
65
67
  f"[italic]'Magpie'[/] milestone - [bold]white duck GmbH[/] - [cyan]https://whiteduck.de[/]\n"
66
68
  )
@@ -19,7 +19,7 @@ logger = get_logger("evaluators.declarative")
19
19
  class DeclarativeEvaluatorConfig(FlockEvaluatorConfig):
20
20
  """Configuration for the DeclarativeEvaluator."""
21
21
 
22
- agent_type_override: str | None = None
22
+ override_evaluator_type: str | None = None
23
23
  model: str | None = "openai/gpt-4o"
24
24
  use_cache: bool = True
25
25
  temperature: float = 0.0
@@ -28,6 +28,11 @@ class DeclarativeEvaluatorConfig(FlockEvaluatorConfig):
28
28
  default=False,
29
29
  description="Enable streaming output from the underlying DSPy program.",
30
30
  )
31
+ include_thought_process: bool = Field(
32
+ default=False,
33
+ description="Include the thought process in the output.",
34
+ )
35
+ kwargs: dict[str, Any] = Field(default_factory=dict)
31
36
 
32
37
 
33
38
  class DeclarativeEvaluator(
@@ -40,6 +45,9 @@ class DeclarativeEvaluator(
40
45
  description="Evaluator configuration",
41
46
  )
42
47
 
48
+ cost: float = 0.0
49
+ lm_history: list = Field(default_factory=list)
50
+
43
51
  async def evaluate(
44
52
  self, agent: FlockAgent, inputs: dict[str, Any], tools: list[Any]
45
53
  ) -> dict[str, Any]:
@@ -68,8 +76,9 @@ class DeclarativeEvaluator(
68
76
  )
69
77
  agent_task = self._select_task(
70
78
  _dspy_signature,
71
- agent_type_override=self.config.agent_type_override,
79
+ override_evaluator_type=self.config.override_evaluator_type,
72
80
  tools=tools,
81
+ kwargs=self.config.kwargs,
73
82
  )
74
83
  except Exception as setup_error:
75
84
  logger.error(
@@ -109,21 +118,46 @@ class DeclarativeEvaluator(
109
118
  if delta_content:
110
119
  console.print(delta_content, end="")
111
120
 
112
- result_dict = self._process_result(chunk, inputs)
121
+ result_dict, cost, lm_history = self._process_result(
122
+ chunk, inputs
123
+ )
124
+ self.cost = cost
125
+ self.lm_history = lm_history
113
126
 
114
127
  console.print("\n")
115
- return result_dict
128
+ return self.filter_thought_process(
129
+ result_dict, self.config.include_thought_process
130
+ )
116
131
 
117
132
  else: # Non-streaming path
118
133
  logger.info(f"Evaluating agent '{agent.name}' without streaming.")
119
134
  try:
120
135
  # Ensure the call is awaited if the underlying task is async
121
136
  result_obj = agent_task(**inputs)
122
- result_dict = self._process_result(result_obj, inputs)
123
- return result_dict
137
+ result_dict, cost, lm_history = self._process_result(
138
+ result_obj, inputs
139
+ )
140
+ self.cost = cost
141
+ self.lm_history = lm_history
142
+ return self.filter_thought_process(
143
+ result_dict, self.config.include_thought_process
144
+ )
124
145
  except Exception as e:
125
146
  logger.error(
126
147
  f"Error during non-streaming evaluation for agent '{agent.name}': {e}",
127
148
  exc_info=True,
128
149
  )
129
150
  raise RuntimeError(f"Evaluation failed: {e}") from e
151
+
152
+ def filter_thought_process(
153
+ result_dict: dict[str, Any], include_thought_process: bool
154
+ ) -> dict[str, Any]:
155
+ """Filter out thought process from the result dictionary."""
156
+ if include_thought_process:
157
+ return result_dict
158
+ else:
159
+ return {
160
+ k: v
161
+ for k, v in result_dict.items()
162
+ if not (k.startswith("reasoning") or k.startswith("trajectory"))
163
+ }